From: Alyssa Rosenzweig Date: Wed, 21 Aug 2019 21:04:05 +0000 (-0700) Subject: pan/decode: Validate blend shaders don't access I/O X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=139708bbabdc1897579b40a83d559cea28946290;p=mesa.git pan/decode: Validate blend shaders don't access I/O We could do better by forcing the checks to *equal* zero (right now, an indeterminate answer will pass the checks), but this is a start to guard against some egregious cases. Signed-off-by: Alyssa Rosenzweig --- diff --git a/src/panfrost/pandecode/decode.c b/src/panfrost/pandecode/decode.c index 7c8c5ca95c0..1b88bbb12e8 100644 --- a/src/panfrost/pandecode/decode.c +++ b/src/panfrost/pandecode/decode.c @@ -2114,8 +2114,27 @@ pandecode_vertex_tiler_postfix_pre( else shader = pandecode_midgard_blend_mrt(blend_base, job_no, i); - if (shader & ~0xF) - pandecode_shader_disassemble(shader, job_no, job_type, false, 0); + if (shader & ~0xF) { + struct midgard_disasm_stats stats = + pandecode_shader_disassemble(shader, job_no, job_type, false, 0); + + bool has_texture = (stats.texture_count > 0); + bool has_sampler = (stats.sampler_count > 0); + bool has_attribute = (stats.attribute_count > 0); + bool has_varying = (stats.varying_count > 0); + bool has_uniform = (stats.uniform_count > 0); + bool has_ubo = (stats.uniform_buffer_count > 0); + + if (has_texture || has_sampler) + pandecode_msg("XXX: blend shader accessing textures\n"); + + if (has_attribute || has_varying) + pandecode_msg("XXX: blend shader accessing interstage\n"); + + if (has_uniform || has_ubo) + pandecode_msg("XXX: blend shader accessing uniforms\n"); + } + } }