st/mesa: use the new subroutine index upload API.
authorDave Airlie <airlied@redhat.com>
Tue, 7 Jun 2016 05:25:58 +0000 (15:25 +1000)
committerDave Airlie <airlied@redhat.com>
Tue, 23 Aug 2016 01:03:45 +0000 (11:03 +1000)
This plugs the new API into the gallium state tracker.

Signed-off-by: Dave Airlie <airlied@redhat.com>
Acked-by: Andres Gomez <agomez@igalia.com>
src/mesa/state_tracker/st_atom_constbuf.c
src/mesa/state_tracker/st_atom_constbuf.h
src/mesa/state_tracker/st_cb_bitmap.c
src/mesa/state_tracker/st_cb_drawpixels.c

index 8ffb6c3db4ffb09fde37ab56362aa5efd3b8e8b3..a5d60257d0d00b1c8a9cdd4655e47cc8cf89582f 100644 (file)
@@ -34,7 +34,7 @@
 #include "main/imports.h"
 #include "program/prog_parameter.h"
 #include "program/prog_print.h"
-
+#include "main/shaderapi.h"
 #include "pipe/p_context.h"
 #include "pipe/p_defines.h"
 #include "util/u_inlines.h"
  */
 void st_upload_constants( struct st_context *st,
                           struct gl_program_parameter_list *params,
-                          unsigned shader_type)
+                          gl_shader_stage stage)
 {
+   unsigned shader_type = st_shader_stage_to_ptarget(stage);
+
    assert(shader_type == PIPE_SHADER_VERTEX ||
           shader_type == PIPE_SHADER_FRAGMENT ||
           shader_type == PIPE_SHADER_GEOMETRY ||
@@ -92,6 +94,8 @@ void st_upload_constants( struct st_context *st,
       if (params->StateFlags)
          _mesa_load_state_parameters(st->ctx, params);
 
+      _mesa_shader_write_subroutine_indices(st->ctx, stage);
+
       /* We always need to get a new buffer, to keep the drivers simple and
        * avoid gratuitous rendering synchronization.
        * Let's use a user buffer to avoid an unnecessary copy.
@@ -140,7 +144,7 @@ static void update_vs_constants(struct st_context *st )
    struct st_vertex_program *vp = st->vp;
    struct gl_program_parameter_list *params = vp->Base.Base.Parameters;
 
-   st_upload_constants( st, params, PIPE_SHADER_VERTEX );
+   st_upload_constants( st, params, MESA_SHADER_VERTEX );
 }
 
 
@@ -158,7 +162,7 @@ static void update_fs_constants(struct st_context *st )
    struct st_fragment_program *fp = st->fp;
    struct gl_program_parameter_list *params = fp->Base.Base.Parameters;
 
-   st_upload_constants( st, params, PIPE_SHADER_FRAGMENT );
+   st_upload_constants( st, params, MESA_SHADER_FRAGMENT );
 }
 
 
@@ -175,7 +179,7 @@ static void update_gs_constants(struct st_context *st )
 
    if (gp) {
       params = gp->Base.Base.Parameters;
-      st_upload_constants( st, params, PIPE_SHADER_GEOMETRY );
+      st_upload_constants( st, params, MESA_SHADER_GEOMETRY );
    }
 }
 
@@ -192,7 +196,7 @@ static void update_tcs_constants(struct st_context *st )
 
    if (tcp) {
       params = tcp->Base.Base.Parameters;
-      st_upload_constants( st, params, PIPE_SHADER_TESS_CTRL );
+      st_upload_constants( st, params, MESA_SHADER_TESS_CTRL );
    }
 }
 
@@ -209,7 +213,7 @@ static void update_tes_constants(struct st_context *st )
 
    if (tep) {
       params = tep->Base.Base.Parameters;
-      st_upload_constants( st, params, PIPE_SHADER_TESS_EVAL );
+      st_upload_constants( st, params, MESA_SHADER_TESS_EVAL );
    }
 }
 
@@ -226,7 +230,7 @@ static void update_cs_constants(struct st_context *st )
 
    if (cp) {
       params = cp->Base.Base.Parameters;
-      st_upload_constants( st, params, PIPE_SHADER_COMPUTE );
+      st_upload_constants( st, params, MESA_SHADER_COMPUTE );
    }
 }
 
index 9b3f84455eef72e06ec0be623105ca6df8ce74ab..df60a627624a89601bbb962d38df354de1fe8f49 100644 (file)
 #ifndef ST_ATOM_CONSTBUF_H
 #define ST_ATOM_CONSTBUF_H
 
+#include "compiler/shader_enums.h"
+
 struct gl_program_parameter_list;
 struct st_context;
 
 
 void st_upload_constants( struct st_context *st,
                           struct gl_program_parameter_list *params,
-                          unsigned id);
+                          gl_shader_stage stage);
 
 
 #endif /* ST_ATOM_CONSTBUF_H */
index 0ee19fd2c62d0e059a5e514031163c5894da7ced..a7d269b82e6aa55df367fdb37a65a35d289b724a 100644 (file)
@@ -212,7 +212,7 @@ setup_render_state(struct gl_context *ctx,
       COPY_4V(colorSave, ctx->Current.Attrib[VERT_ATTRIB_COLOR0]);
       COPY_4V(ctx->Current.Attrib[VERT_ATTRIB_COLOR0], color);
       st_upload_constants(st, st->fp->Base.Base.Parameters,
-                          PIPE_SHADER_FRAGMENT);
+                          MESA_SHADER_FRAGMENT);
       COPY_4V(ctx->Current.Attrib[VERT_ATTRIB_COLOR0], colorSave);
    }
 
index d2b964e66144ffd67cadaf3bac8e949e368f308a..b5f4227f6ddde9c098d15ab275cd9c7009873988 100644 (file)
@@ -1123,7 +1123,7 @@ st_DrawPixels(struct gl_context *ctx, GLint x, GLint y,
        * into the constant buffer, we need to update them
        */
       st_upload_constants(st, st->fp->Base.Base.Parameters,
-                          PIPE_SHADER_FRAGMENT);
+                          MESA_SHADER_FRAGMENT);
    }
 
    /* Put glDrawPixels image into a texture */
@@ -1487,7 +1487,7 @@ st_CopyPixels(struct gl_context *ctx, GLint srcx, GLint srcy,
        * into the constant buffer, we need to update them
        */
       st_upload_constants(st, st->fp->Base.Base.Parameters,
-                          PIPE_SHADER_FRAGMENT);
+                          MESA_SHADER_FRAGMENT);
    }
    else {
       assert(type == GL_DEPTH);