Tidy around sampler handling Bug: b/134584057 Change-Id: I1574c9017a5d48f69d14732874a8c8b814056aec Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/34248 Tested-by: Chris Forbes <chrisforbes@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com> Reviewed-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/src/Pipeline/SpirvShaderSampling.cpp b/src/Pipeline/SpirvShaderSampling.cpp index 6a232fd..9013bf6 100644 --- a/src/Pipeline/SpirvShaderSampling.cpp +++ b/src/Pipeline/SpirvShaderSampling.cpp
@@ -57,7 +57,7 @@ auto type = imageDescriptor->type; Sampler samplerState = {}; - samplerState.textureType = convertTextureType(type); + samplerState.textureType = type; samplerState.textureFormat = imageDescriptor->format; samplerState.textureFilter = (instruction.samplerMethod == Gather) ? FILTER_GATHER : convertFilterMode(sampler); samplerState.border = sampler->borderColor; @@ -128,11 +128,11 @@ // TODO(b/134669567): Currently 1D textures are treated as 2D by setting the second coordinate to 0. // Implement optimized 1D sampling. - if(samplerState.textureType == TEXTURE_1D) + if(samplerState.textureType == VK_IMAGE_VIEW_TYPE_1D) { uvw[1] = SIMD::Float(0); } - else if(samplerState.textureType == TEXTURE_1D_ARRAY) + else if(samplerState.textureType == VK_IMAGE_VIEW_TYPE_1D_ARRAY) { uvw[1] = SIMD::Float(0); uvw[2] = in[1]; // Move 1D layer coordinate to 2D layer coordinate index. @@ -185,7 +185,7 @@ dPdy.z = Pointer<Float>(&dsy.z)[i]; // 1D textures are treated as 2D texture with second coordinate 0, so we also need to zero out the second grad component. TODO(b/134669567) - if(samplerState.textureType == TEXTURE_1D || samplerState.textureType == TEXTURE_1D_ARRAY) + if(samplerState.textureType == VK_IMAGE_VIEW_TYPE_1D || samplerState.textureType == VK_IMAGE_VIEW_TYPE_1D_ARRAY) { dPdx.y = Float(0.0f); dPdy.y = Float(0.0f); @@ -215,23 +215,6 @@ return function("sampler"); } -sw::TextureType SpirvShader::convertTextureType(VkImageViewType imageViewType) -{ - switch(imageViewType) - { - case VK_IMAGE_VIEW_TYPE_1D: return TEXTURE_1D; - case VK_IMAGE_VIEW_TYPE_2D: return TEXTURE_2D; - case VK_IMAGE_VIEW_TYPE_3D: return TEXTURE_3D; - case VK_IMAGE_VIEW_TYPE_CUBE: return TEXTURE_CUBE; - case VK_IMAGE_VIEW_TYPE_1D_ARRAY: return TEXTURE_1D_ARRAY; - case VK_IMAGE_VIEW_TYPE_2D_ARRAY: return TEXTURE_2D_ARRAY; -// case VK_IMAGE_VIEW_TYPE_CUBE_ARRAY: return TEXTURE_CUBE_ARRAY; - default: - UNIMPLEMENTED("imageViewType %d", imageViewType); - return TEXTURE_2D; - } -} - sw::FilterType SpirvShader::convertFilterMode(const vk::Sampler *sampler) { switch(sampler->magFilter)