[Vulkan] Map FilterMode to Vulkan filter correctly for YCbCr info wgpu::FilterMode does not have the same values as the Vulkan filter enum, so it is necessary to map from one to the other. This CL reuses the mapping currently done in SamplerVk to also be done in UtilsVulkan. Change-Id: I6f62a20c79f4a857d566c7ee3d43d9bd8c4b93df Bug: 41488897 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/196336 Reviewed-by: Austin Eng <enga@chromium.org> Commit-Queue: Colin Blundell <blundell@chromium.org>
diff --git a/src/dawn/native/vulkan/SamplerVk.cpp b/src/dawn/native/vulkan/SamplerVk.cpp index d1629a6..94ed4de 100644 --- a/src/dawn/native/vulkan/SamplerVk.cpp +++ b/src/dawn/native/vulkan/SamplerVk.cpp
@@ -52,18 +52,6 @@ DAWN_UNREACHABLE(); } -VkFilter VulkanSamplerFilter(wgpu::FilterMode filter) { - switch (filter) { - case wgpu::FilterMode::Linear: - return VK_FILTER_LINEAR; - case wgpu::FilterMode::Nearest: - return VK_FILTER_NEAREST; - case wgpu::FilterMode::Undefined: - break; - } - DAWN_UNREACHABLE(); -} - VkSamplerMipmapMode VulkanMipMapMode(wgpu::MipmapFilterMode filter) { switch (filter) { case wgpu::MipmapFilterMode::Linear: @@ -89,8 +77,8 @@ createInfo.sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO; createInfo.pNext = nullptr; createInfo.flags = 0; - createInfo.magFilter = VulkanSamplerFilter(descriptor->magFilter); - createInfo.minFilter = VulkanSamplerFilter(descriptor->minFilter); + createInfo.magFilter = ToVulkanSamplerFilter(descriptor->magFilter); + createInfo.minFilter = ToVulkanSamplerFilter(descriptor->minFilter); createInfo.mipmapMode = VulkanMipMapMode(descriptor->mipmapFilter); createInfo.addressModeU = VulkanSamplerAddressMode(descriptor->addressModeU); createInfo.addressModeV = VulkanSamplerAddressMode(descriptor->addressModeV);
diff --git a/src/dawn/native/vulkan/UtilsVulkan.cpp b/src/dawn/native/vulkan/UtilsVulkan.cpp index bdebb03..95f6539 100644 --- a/src/dawn/native/vulkan/UtilsVulkan.cpp +++ b/src/dawn/native/vulkan/UtilsVulkan.cpp
@@ -87,6 +87,18 @@ DAWN_UNREACHABLE(); } +VkFilter ToVulkanSamplerFilter(wgpu::FilterMode filter) { + switch (filter) { + case wgpu::FilterMode::Linear: + return VK_FILTER_LINEAR; + case wgpu::FilterMode::Nearest: + return VK_FILTER_NEAREST; + case wgpu::FilterMode::Undefined: + break; + } + DAWN_UNREACHABLE(); +} + // Convert Dawn texture aspects to Vulkan texture aspect flags VkImageAspectFlags VulkanAspectMask(const Aspect& aspects) { VkImageAspectFlags flags = 0; @@ -354,7 +366,7 @@ static_cast<VkChromaLocation>(yCbCrDescriptor.vkXChromaOffset); vulkanYCbCrCreateInfo.yChromaOffset = static_cast<VkChromaLocation>(yCbCrDescriptor.vkYChromaOffset); - vulkanYCbCrCreateInfo.chromaFilter = static_cast<VkFilter>(yCbCrDescriptor.vkChromaFilter); + vulkanYCbCrCreateInfo.chromaFilter = ToVulkanSamplerFilter(yCbCrDescriptor.vkChromaFilter); vulkanYCbCrCreateInfo.forceExplicitReconstruction = static_cast<VkBool32>(yCbCrDescriptor.forceExplicitReconstruction);
diff --git a/src/dawn/native/vulkan/UtilsVulkan.h b/src/dawn/native/vulkan/UtilsVulkan.h index e850472..aeee0e3 100644 --- a/src/dawn/native/vulkan/UtilsVulkan.h +++ b/src/dawn/native/vulkan/UtilsVulkan.h
@@ -114,6 +114,8 @@ VkCompareOp ToVulkanCompareOp(wgpu::CompareFunction op); +VkFilter ToVulkanSamplerFilter(wgpu::FilterMode filter); + VkImageAspectFlags VulkanAspectMask(const Aspect& aspects); Extent3D ComputeTextureCopyExtent(const TextureCopy& textureCopy, const Extent3D& copySize);