r300/vs: Fix flow control processing just after an endloop.
We tried to step over the instruction we just generated, except we didn't always just generate one. In the sequence_vertex tests, that meant we skipped processing the next BGNLOOP and then underflowed our stack. Cc: mesa-stable Reviewed-by: Marek Olšák <marek.olsak@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14271>
This commit is contained in:
parent
b48852436e
commit
658b2ca467
|
@ -64,15 +64,6 @@ dEQP-GLES2.functional.shaders.indexing.vector_subscript.vec4_dynamic_subscript_w
|
|||
dEQP-GLES2.functional.shaders.indexing.vector_subscript.vec4_dynamic_subscript_write_static_loop_subscript_read_fragment,Fail
|
||||
dEQP-GLES2.functional.shaders.indexing.vector_subscript.vec4_dynamic_subscript_write_static_subscript_read_fragment,Fail
|
||||
|
||||
# Bus error
|
||||
dEQP-GLES2.functional.shaders.loops.for_dynamic_iterations.sequence_vertex,Crash
|
||||
dEQP-GLES2.functional.shaders.loops.for_uniform_iterations.sequence_vertex,Crash
|
||||
dEQP-GLES2.functional.shaders.loops.do_while_dynamic_iterations.sequence_vertex,Crash
|
||||
dEQP-GLES2.functional.shaders.loops.do_while_uniform_iterations.sequence_vertex,Crash
|
||||
dEQP-GLES2.functional.shaders.loops.while_constant_iterations.sequence_vertex,Crash
|
||||
dEQP-GLES2.functional.shaders.loops.while_dynamic_iterations.sequence_vertex,Crash
|
||||
dEQP-GLES2.functional.shaders.loops.while_uniform_iterations.sequence_vertex,Crash
|
||||
|
||||
dEQP-GLES2.functional.shaders.loops.do_while_constant_iterations.mixed_break_continue_vertex,Fail
|
||||
dEQP-GLES2.functional.shaders.loops.do_while_dynamic_iterations.conditional_continue_vertex,Fail
|
||||
dEQP-GLES2.functional.shaders.loops.do_while_dynamic_iterations.double_continue_vertex,Fail
|
||||
|
|
|
@ -257,10 +257,10 @@ void rc_vert_fc(struct radeon_compiler *c, void *user)
|
|||
if (fc_state.BranchDepth != 0
|
||||
|| fc_state.LoopDepth != 1) {
|
||||
lower_endloop(inst, &fc_state);
|
||||
/* Skip the new PRED_RESTORE */
|
||||
inst = inst->Next;
|
||||
}
|
||||
fc_state.LoopDepth--;
|
||||
/* Skip PRED_RESTORE */
|
||||
inst = inst->Next;
|
||||
break;
|
||||
case RC_OPCODE_IF:
|
||||
lower_if(inst, &fc_state);
|
||||
|
|
Loading…
Reference in New Issue