summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends/Vulkan/ObjectCache.cpp
diff options
context:
space:
mode:
authorPokechu22 <Pokechu022@gmail.com>2021-08-08 21:11:50 -0700
committerPokechu22 <Pokechu022@gmail.com>2021-11-17 20:04:34 -0800
commit4a9b26de86aa7e99af51016e07a755968b8777e0 (patch)
treec8b81ec25625e1d33d3b5a89e76329cf02d25e12 /Source/Core/VideoBackends/Vulkan/ObjectCache.cpp
parent9ef228503abe24820985e431ef942c6ebb312442 (diff)
VideoCommon: Expose SamplerState to shaders
The benefit to exposing this over the raw BP state is that adjustments Dolphin makes, such as LOD biases from arbitrary mipmap detection, will work properly.
Diffstat (limited to 'Source/Core/VideoBackends/Vulkan/ObjectCache.cpp')
-rw-r--r--Source/Core/VideoBackends/Vulkan/ObjectCache.cpp26
1 files changed, 13 insertions, 13 deletions
diff --git a/Source/Core/VideoBackends/Vulkan/ObjectCache.cpp b/Source/Core/VideoBackends/Vulkan/ObjectCache.cpp
index a1ccdd6f30..fd296457e4 100644
--- a/Source/Core/VideoBackends/Vulkan/ObjectCache.cpp
+++ b/Source/Core/VideoBackends/Vulkan/ObjectCache.cpp
@@ -315,28 +315,28 @@ VkSampler ObjectCache::GetSampler(const SamplerState& info)
VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT}};
VkSamplerCreateInfo create_info = {
- VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO, // VkStructureType sType
- nullptr, // const void* pNext
- 0, // VkSamplerCreateFlags flags
- filters[static_cast<u32>(info.mag_filter.Value())], // VkFilter magFilter
- filters[static_cast<u32>(info.min_filter.Value())], // VkFilter minFilter
- mipmap_modes[static_cast<u32>(info.mipmap_filter.Value())], // VkSamplerMipmapMode mipmapMode
- address_modes[static_cast<u32>(info.wrap_u.Value())], // VkSamplerAddressMode addressModeU
- address_modes[static_cast<u32>(info.wrap_v.Value())], // VkSamplerAddressMode addressModeV
- VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, // VkSamplerAddressMode addressModeW
- info.lod_bias / 256.0f, // float mipLodBias
+ VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO, // VkStructureType sType
+ nullptr, // const void* pNext
+ 0, // VkSamplerCreateFlags flags
+ filters[u32(info.tm0.mag_filter.Value())], // VkFilter magFilter
+ filters[u32(info.tm0.min_filter.Value())], // VkFilter minFilter
+ mipmap_modes[u32(info.tm0.mipmap_filter.Value())], // VkSamplerMipmapMode mipmapMode
+ address_modes[u32(info.tm0.wrap_u.Value())], // VkSamplerAddressMode addressModeU
+ address_modes[u32(info.tm0.wrap_v.Value())], // VkSamplerAddressMode addressModeV
+ VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, // VkSamplerAddressMode addressModeW
+ info.tm0.lod_bias / 256.0f, // float mipLodBias
VK_FALSE, // VkBool32 anisotropyEnable
0.0f, // float maxAnisotropy
VK_FALSE, // VkBool32 compareEnable
VK_COMPARE_OP_ALWAYS, // VkCompareOp compareOp
- info.min_lod / 16.0f, // float minLod
- info.max_lod / 16.0f, // float maxLod
+ info.tm1.min_lod / 16.0f, // float minLod
+ info.tm1.max_lod / 16.0f, // float maxLod
VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK, // VkBorderColor borderColor
VK_FALSE // VkBool32 unnormalizedCoordinates
};
// Can we use anisotropic filtering with this sampler?
- if (info.anisotropic_filtering && g_vulkan_context->SupportsAnisotropicFiltering())
+ if (info.tm0.anisotropic_filtering && g_vulkan_context->SupportsAnisotropicFiltering())
{
// Cap anisotropy to device limits.
create_info.anisotropyEnable = VK_TRUE;