From: Edward O'Callaghan <eocallag...@alterapraxis.com>

tgsi_shader_scan() has already happened so just use the results.

Signed-off-by: Edward O'Callaghan <eocallag...@alterapraxis.com>
Signed-off-by: Dave Airlie <airlied at redhat.com>
---
 src/gallium/drivers/r600/r600_shader.c | 35 ++++++++++------------------------
 1 file changed, 10 insertions(+), 25 deletions(-)

diff --git a/src/gallium/drivers/r600/r600_shader.c 
b/src/gallium/drivers/r600/r600_shader.c
index b830479..009a8f2 100644
--- a/src/gallium/drivers/r600/r600_shader.c
+++ b/src/gallium/drivers/r600/r600_shader.c
@@ -1809,7 +1809,6 @@ static int r600_shader_from_tgsi(struct r600_context 
*rctx,
        struct tgsi_token *tokens = pipeshader->selector->tokens;
        struct pipe_stream_output_info so = pipeshader->selector->so;
        struct tgsi_full_immediate *immediate;
-       struct tgsi_full_property *property;
        struct r600_shader_ctx ctx;
        struct r600_bytecode_output output[32];
        unsigned output_done, noutput;
@@ -1968,6 +1967,16 @@ static int r600_shader_from_tgsi(struct r600_context 
*rctx,
        ctx.nliterals = 0;
        ctx.literals = NULL;
        shader->fs_write_all = FALSE;
+       if (ctx.info.properties[TGSI_PROPERTY_FS_COLOR0_WRITES_ALL_CBUFS])
+               shader->fs_write_all = TRUE;
+
+       shader->vs_position_window_space = FALSE;
+       if (ctx.info.properties[TGSI_PROPERTY_VS_WINDOW_SPACE_POSITION])
+               shader->vs_position_window_space = TRUE;
+
+       pipeshader->selector->gs_output_prim = 
ctx.info.properties[TGSI_PROPERTY_GS_OUTPUT_PRIM];
+       pipeshader->selector->gs_max_out_vertices = 
ctx.info.properties[TGSI_PROPERTY_GS_MAX_OUTPUT_VERTICES];
+       pipeshader->selector->gs_num_invocations = 
ctx.info.properties[TGSI_PROPERTY_GS_INVOCATIONS];
 
        if (shader->vs_as_gs_a)
                vs_add_primid_output(&ctx, key.vs.prim_id_out);
@@ -1994,31 +2003,7 @@ static int r600_shader_from_tgsi(struct r600_context 
*rctx,
                                goto out_err;
                        break;
                case TGSI_TOKEN_TYPE_INSTRUCTION:
-                       break;
                case TGSI_TOKEN_TYPE_PROPERTY:
-                       property = &ctx.parse.FullToken.FullProperty;
-                       switch (property->Property.PropertyName) {
-                       case TGSI_PROPERTY_FS_COLOR0_WRITES_ALL_CBUFS:
-                               if (property->u[0].Data == 1)
-                                       shader->fs_write_all = TRUE;
-                               break;
-                       case TGSI_PROPERTY_VS_WINDOW_SPACE_POSITION:
-                               if (property->u[0].Data == 1)
-                                       shader->vs_position_window_space = TRUE;
-                               break;
-                       case TGSI_PROPERTY_VS_PROHIBIT_UCPS:
-                               /* we don't need this one */
-                               break;
-                       case TGSI_PROPERTY_GS_OUTPUT_PRIM:
-                               pipeshader->selector->gs_output_prim = 
property->u[0].Data;
-                               break;
-                       case TGSI_PROPERTY_GS_MAX_OUTPUT_VERTICES:
-                               pipeshader->selector->gs_max_out_vertices = 
property->u[0].Data;
-                               break;
-                       case TGSI_PROPERTY_GS_INVOCATIONS:
-                               pipeshader->selector->gs_num_invocations = 
property->u[0].Data;
-                               break;
-                       }
                        break;
                default:
                        R600_ERR("unsupported token type %d\n", 
ctx.parse.FullToken.Token.Type);
-- 
2.4.3

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to