From 0f62b5dc1eabdb532e38e2893d5efd8f98f41d8c Mon Sep 17 00:00:00 2001 From: Sidney Just Date: Fri, 22 Jun 2018 01:40:01 -0700 Subject: [PATCH] Moved check for depth texture and shadowXY emission completely to legacy_tex_op() --- spirv_glsl.cpp | 43 ++++++++++++++++++------------------------- 1 file changed, 18 insertions(+), 25 deletions(-) diff --git a/spirv_glsl.cpp b/spirv_glsl.cpp index e56ed9d7..c8a42fc8 100644 --- a/spirv_glsl.cpp +++ b/spirv_glsl.cpp @@ -3542,47 +3542,43 @@ string CompilerGLSL::legacy_tex_op(const std::string &op, const SPIRType &imgtyp require_extension_internal("GL_ARB_shader_texture_lod"); } - // texture + std::string type_prefix = imgtype.image.depth ? "shadow" : "texture"; + if (op == "texture") - return join("texture", type); + return join(type_prefix, type); else if (op == "textureLod") { if (use_explicit_lod) - return join("texture", type, is_legacy_es() ? "LodEXT" : "Lod"); + return join(type_prefix, type, is_legacy_es() ? "LodEXT" : "Lod"); else - return join("texture", type); + return join(type_prefix, type); } else if (op == "textureProj") - return join("texture", type, "Proj"); + return join(type_prefix, type, "Proj"); else if (op == "textureGrad") - return join("texture", type, is_legacy_es() ? "GradEXT" : is_legacy_desktop() ? "GradARB" : "Grad"); + return join(type_prefix, type, is_legacy_es() ? "GradEXT" : is_legacy_desktop() ? "GradARB" : "Grad"); else if (op == "textureProjLod") { if (use_explicit_lod) - return join("texture", type, is_legacy_es() ? "ProjLodEXT" : "ProjLod"); + return join(type_prefix, type, is_legacy_es() ? "ProjLodEXT" : "ProjLod"); else - return join("texture", type); + return join(type_prefix, type); } - // shadow - else if (op == "shadow") - return join("shadow", type); - else if (op == "shadowLodOffset") + else if (op == "textureLodOffset") { if (use_explicit_lod) - return join("shadow", type, "LodOffset"); + return join(type_prefix, type, "LodOffset"); else - return join("shadow", type); + return join(type_prefix, type); } - else if (op == "shadowProjGrad") - return join("shadow", type, "ProjGrad"); - else if (op == "shadowGrad") - return join("shadow", type, "Grad"); - else if (op == "shadowProjLodOffset") + else if (op == "textureProjGrad") + return join(type_prefix, type, "ProjGrad"); + else if (op == "textureProjLodOffset") { if (use_explicit_lod) - return join("shadow", type, "ProjLodOffset"); + return join(type_prefix, type, "ProjLodOffset"); else - return join("shadow", type); + return join(type_prefix, type); } else { @@ -3994,10 +3990,7 @@ string CompilerGLSL::to_function_name(uint32_t, const SPIRType &imgtype, bool is fname += "texelFetch"; else { - if (is_legacy() && ((imgtype.basetype == SPIRType::SampledImage) || (imgtype.basetype == SPIRType::Sampler)) && imgtype.image.depth) - fname += "shadow"; - else - fname += "texture"; + fname += "texture"; if (is_gather) fname += "Gather";