tgsi/ureg: don't emit in/out arrays if drivers don't support ranged declarations

Softpipe, llvmpipe, r300g, and radeonsi pass tests. Other drivers need testing.

Freedreno and nv30 are definitely broken. Other drivers seem to be alright.
This commit is contained in:
Marek Olšák
2015-05-25 19:30:44 +02:00
parent a015b3952f
commit b6ebe7eabf
17 changed files with 162 additions and 40 deletions

View File

@@ -321,7 +321,7 @@ st_translate_vertex_program(struct st_context *st,
_mesa_remove_output_reads(&stvp->Base.Base, PROGRAM_OUTPUT);
}
ureg = ureg_create( TGSI_PROCESSOR_VERTEX );
ureg = ureg_create_with_screen(TGSI_PROCESSOR_VERTEX, st->pipe->screen);
if (ureg == NULL) {
free(vpv);
return NULL;
@@ -732,7 +732,7 @@ st_translate_fragment_program(struct st_context *st,
}
}
ureg = ureg_create( TGSI_PROCESSOR_FRAGMENT );
ureg = ureg_create_with_screen(TGSI_PROCESSOR_FRAGMENT, st->pipe->screen);
if (ureg == NULL) {
free(variant);
return NULL;
@@ -890,7 +890,7 @@ st_translate_geometry_program(struct st_context *st,
if (!gpv)
return NULL;
ureg = ureg_create(TGSI_PROCESSOR_GEOMETRY);
ureg = ureg_create_with_screen(TGSI_PROCESSOR_GEOMETRY, st->pipe->screen);
if (ureg == NULL) {
free(gpv);
return NULL;