mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 04:48:08 +02:00
vc4: Emit a warning and proceed for handling loops in NIR.
We don't really suppor control flow yet, but it's a lot nicer to render something and warn on stderr than to crash. Fixes the following piglit tests: - shaders/complex-loop-analysis-bug - shaders/glsl-fs-discard-04 Converts the following piglit tests from crash to fail: - shaders/glsl-fs-continue-inside-do-while - shaders/glsl-fs-loop - shaders/glsl-fs-loop-continue - shaders/glsl-fs-loop-nested - shaders/glsl-texcoord-array - shaders/glsl-vs-continue-inside-do-while - shaders/glsl-vs-loop - shaders/glsl-vs-loop-continue - shaders/glsl-vs-loop-nested No piglit regressions. v2 (Eric): Add stronger stderr warning. Signed-off-by: Rhys Kidd <rhyskidd@gmail.com> Reviewed-by: Eric Anholt <eric@anholt.net>
This commit is contained in:
parent
2450b219e5
commit
40e77741cf
1 changed files with 13 additions and 1 deletions
|
|
@ -1693,6 +1693,15 @@ ntq_emit_block(struct vc4_compile *c, nir_block *block)
|
|||
}
|
||||
}
|
||||
|
||||
static void ntq_emit_cf_list(struct vc4_compile *c, struct exec_list *list);
|
||||
|
||||
static void
|
||||
ntq_emit_loop(struct vc4_compile *c, nir_loop *nloop)
|
||||
{
|
||||
fprintf(stderr, "LOOPS not fully handled. Rendering errors likely.\n");
|
||||
ntq_emit_cf_list(c, &nloop->body);
|
||||
}
|
||||
|
||||
static void
|
||||
ntq_emit_function(struct vc4_compile *c, nir_function_impl *func)
|
||||
{
|
||||
|
|
@ -1705,7 +1714,6 @@ ntq_emit_cf_list(struct vc4_compile *c, struct exec_list *list)
|
|||
{
|
||||
foreach_list_typed(nir_cf_node, node, node, list) {
|
||||
switch (node->type) {
|
||||
/* case nir_cf_node_loop: */
|
||||
case nir_cf_node_block:
|
||||
ntq_emit_block(c, nir_cf_node_as_block(node));
|
||||
break;
|
||||
|
|
@ -1714,6 +1722,10 @@ ntq_emit_cf_list(struct vc4_compile *c, struct exec_list *list)
|
|||
ntq_emit_if(c, nir_cf_node_as_if(node));
|
||||
break;
|
||||
|
||||
case nir_cf_node_loop:
|
||||
ntq_emit_loop(c, nir_cf_node_as_loop(node));
|
||||
break;
|
||||
|
||||
case nir_cf_node_function:
|
||||
ntq_emit_function(c, nir_cf_node_as_function(node));
|
||||
break;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue