Skip to content

Commit

Permalink
Merge branch 'main' into hlsl_shaders_offline_compilation
Browse files Browse the repository at this point in the history
  • Loading branch information
Seweryn-Zielas-Mobica committed Mar 20, 2024
2 parents 1705a81 + 0d0cf9b commit e26e5ca
Show file tree
Hide file tree
Showing 72 changed files with 2,394 additions and 329 deletions.
1 change: 1 addition & 0 deletions antora/modules/ROOT/nav.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@
** xref:samples/performance/command_buffer_usage/README.adoc[Command buffer usage]
** xref:samples/performance/constant_data/README.adoc[Constant data]
** xref:samples/performance/descriptor_management/README.adoc[Descriptor management]
** xref:samples/performance/image_compression_control/README.adoc[Image compression control]
** xref:samples/performance/layout_transitions/README.adoc[Layout transitions]
** xref:samples/performance/msaa/README.adoc[MSAA]
** xref:samples/performance/multithreading_render_passes/README.adoc[Multithreading render passes]
Expand Down
33 changes: 24 additions & 9 deletions framework/api_vulkan_sample.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1041,12 +1041,17 @@ Texture ApiVulkanSample::load_texture(const std::string &file, vkb::sg::Image::C

get_device().flush_command_buffer(command_buffer, queue.get_handle());

// Calculate valid filter and mipmap modes
VkFilter filter = VK_FILTER_LINEAR;
VkSamplerMipmapMode mipmap_mode = VK_SAMPLER_MIPMAP_MODE_LINEAR;
vkb::make_filters_valid(get_device().get_gpu().get_handle(), texture.image->get_format(), &filter, &mipmap_mode);

// Create a defaultsampler
VkSamplerCreateInfo sampler_create_info = {};
sampler_create_info.sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO;
sampler_create_info.magFilter = VK_FILTER_LINEAR;
sampler_create_info.minFilter = VK_FILTER_LINEAR;
sampler_create_info.mipmapMode = VK_SAMPLER_MIPMAP_MODE_LINEAR;
sampler_create_info.magFilter = filter;
sampler_create_info.minFilter = filter;
sampler_create_info.mipmapMode = mipmap_mode;
sampler_create_info.addressModeU = VK_SAMPLER_ADDRESS_MODE_REPEAT;
sampler_create_info.addressModeV = VK_SAMPLER_ADDRESS_MODE_REPEAT;
sampler_create_info.addressModeW = VK_SAMPLER_ADDRESS_MODE_REPEAT;
Expand Down Expand Up @@ -1138,12 +1143,17 @@ Texture ApiVulkanSample::load_texture_array(const std::string &file, vkb::sg::Im

get_device().flush_command_buffer(command_buffer, queue.get_handle());

// Calculate valid filter and mipmap modes
VkFilter filter = VK_FILTER_LINEAR;
VkSamplerMipmapMode mipmap_mode = VK_SAMPLER_MIPMAP_MODE_LINEAR;
vkb::make_filters_valid(get_device().get_gpu().get_handle(), texture.image->get_format(), &filter, &mipmap_mode);

// Create a defaultsampler
VkSamplerCreateInfo sampler_create_info = {};
sampler_create_info.sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO;
sampler_create_info.magFilter = VK_FILTER_LINEAR;
sampler_create_info.minFilter = VK_FILTER_LINEAR;
sampler_create_info.mipmapMode = VK_SAMPLER_MIPMAP_MODE_LINEAR;
sampler_create_info.magFilter = filter;
sampler_create_info.minFilter = filter;
sampler_create_info.mipmapMode = mipmap_mode;
sampler_create_info.addressModeU = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE;
sampler_create_info.addressModeV = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE;
sampler_create_info.addressModeW = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE;
Expand Down Expand Up @@ -1232,12 +1242,17 @@ Texture ApiVulkanSample::load_texture_cubemap(const std::string &file, vkb::sg::

get_device().flush_command_buffer(command_buffer, queue.get_handle());

// Calculate valid filter and mipmap modes
VkFilter filter = VK_FILTER_LINEAR;
VkSamplerMipmapMode mipmap_mode = VK_SAMPLER_MIPMAP_MODE_LINEAR;
vkb::make_filters_valid(get_device().get_gpu().get_handle(), texture.image->get_format(), &filter, &mipmap_mode);

// Create a defaultsampler
VkSamplerCreateInfo sampler_create_info = {};
sampler_create_info.sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO;
sampler_create_info.magFilter = VK_FILTER_LINEAR;
sampler_create_info.minFilter = VK_FILTER_LINEAR;
sampler_create_info.mipmapMode = VK_SAMPLER_MIPMAP_MODE_LINEAR;
sampler_create_info.magFilter = filter;
sampler_create_info.minFilter = filter;
sampler_create_info.mipmapMode = mipmap_mode;
sampler_create_info.addressModeU = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE;
sampler_create_info.addressModeV = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE;
sampler_create_info.addressModeW = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE;
Expand Down
13 changes: 9 additions & 4 deletions framework/common/hpp_vk_common.h
Original file line number Diff line number Diff line change
Expand Up @@ -297,12 +297,17 @@ inline vk::QueryPool create_query_pool(vk::Device device, vk::QueryType query_ty
return device.createQueryPool(query_pool_create_info);
}

inline vk::Sampler create_sampler(vk::Device device, vk::Filter filter, vk::SamplerAddressMode sampler_address_mode, float max_anisotropy, float max_LOD)
inline vk::Sampler create_sampler(vk::PhysicalDevice gpu, vk::Device device, vk::Format format, vk::Filter filter,
vk::SamplerAddressMode sampler_address_mode, float max_anisotropy, float max_LOD)
{
const vk::FormatProperties fmt_props = gpu.getFormatProperties(format);

bool has_linear_filter = !!(fmt_props.optimalTilingFeatures & vk::FormatFeatureFlagBits::eSampledImageFilterLinear);

vk::SamplerCreateInfo sampler_create_info;
sampler_create_info.magFilter = filter;
sampler_create_info.minFilter = filter;
sampler_create_info.mipmapMode = vk::SamplerMipmapMode::eLinear;
sampler_create_info.magFilter = has_linear_filter ? filter : vk::Filter::eNearest;
sampler_create_info.minFilter = has_linear_filter ? filter : vk::Filter::eNearest;
sampler_create_info.mipmapMode = has_linear_filter ? vk::SamplerMipmapMode::eLinear : vk::SamplerMipmapMode::eNearest;
sampler_create_info.addressModeU = sampler_address_mode;
sampler_create_info.addressModeV = sampler_address_mode;
sampler_create_info.addressModeW = sampler_address_mode;
Expand Down
Loading

0 comments on commit e26e5ca

Please sign in to comment.