From f957bf0d16de863f9355fb76fe6bdb5ca3ffde50 Mon Sep 17 00:00:00 2001 From: Themaister Date: Tue, 13 Aug 2019 13:55:10 +0200 Subject: [PATCH] Validate non-causal filter chain for texture inputs. We only validated for UBO inputs apparently. --- gfx/drivers_shader/slang_reflection.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/gfx/drivers_shader/slang_reflection.cpp b/gfx/drivers_shader/slang_reflection.cpp index e508db9e45..9dd4ff00db 100644 --- a/gfx/drivers_shader/slang_reflection.cpp +++ b/gfx/drivers_shader/slang_reflection.cpp @@ -349,7 +349,7 @@ static bool add_active_buffer_ranges( if (tex_sem == SLANG_TEXTURE_SEMANTIC_PASS_OUTPUT && tex_sem_index >= reflection->pass_number) { - RARCH_ERR("[slang]: Non causal filter chain detected." + RARCH_ERR("[slang]: Non causal filter chain detected. " "Shader is trying to use output from pass #%u," " but this shader is pass #%u.\n", tex_sem_index, reflection->pass_number); @@ -637,7 +637,15 @@ bool slang_reflect( *reflection->texture_semantic_map, fragment.sampled_images[i].name, &array_index); - if (index == SLANG_INVALID_TEXTURE_SEMANTIC) + if (index == SLANG_TEXTURE_SEMANTIC_PASS_OUTPUT && array_index >= reflection->pass_number) + { + RARCH_ERR("[slang]: Non causal filter chain detected. " + "Shader is trying to use output from pass #%u," + " but this shader is pass #%u.\n", + array_index, reflection->pass_number); + return false; + } + else if (index == SLANG_INVALID_TEXTURE_SEMANTIC) { RARCH_ERR("[slang]: Non-semantic textures not supported yet.\n"); return false;