Module: Mesa Branch: master Commit: 8911879dec564ab2ef343d58e6de4fd558e35c3d URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=8911879dec564ab2ef343d58e6de4fd558e35c3d
Author: Eric Anholt <e...@anholt.net> Date: Fri Oct 24 20:50:20 2014 +0100 vc4: Don't forget to validate code that's got PROG_END on it. This signal doesn't terminate the program now, it terminates the program soon. So you have to actually validate the code in the instruction. --- src/gallium/drivers/vc4/kernel/vc4_validate_shaders.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/gallium/drivers/vc4/kernel/vc4_validate_shaders.c b/src/gallium/drivers/vc4/kernel/vc4_validate_shaders.c index 56c4a17..fdce033 100644 --- a/src/gallium/drivers/vc4/kernel/vc4_validate_shaders.c +++ b/src/gallium/drivers/vc4/kernel/vc4_validate_shaders.c @@ -261,6 +261,7 @@ vc4_validate_shader(struct drm_gem_cma_object *shader_obj, case QPU_SIG_COLOR_LOAD: case QPU_SIG_LOAD_TMU0: case QPU_SIG_LOAD_TMU1: + case QPU_SIG_PROG_END: if (!check_instruction_writes(inst, validated_shader, &validation_state)) { DRM_ERROR("Bad write at ip %d\n", ip); @@ -270,6 +271,11 @@ vc4_validate_shader(struct drm_gem_cma_object *shader_obj, if (!check_instruction_reads(inst, validated_shader)) goto fail; + if (sig == QPU_SIG_PROG_END) { + found_shader_end = true; + shader_end_ip = ip; + } + break; case QPU_SIG_LOAD_IMM: @@ -280,11 +286,6 @@ vc4_validate_shader(struct drm_gem_cma_object *shader_obj, } break; - case QPU_SIG_PROG_END: - found_shader_end = true; - shader_end_ip = ip; - break; - default: DRM_ERROR("Unsupported QPU signal %d at " "instruction %d\n", sig, ip); _______________________________________________ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit