summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJordan Justen <jordan.l.justen@intel.com>2015-05-25 12:23:05 -0700
committerJordan Justen <jordan.l.justen@intel.com>2015-05-25 12:23:05 -0700
commitcb3a16fb0afc9bdd05cf4ac3d3dd0ebb42769231 (patch)
treea43dd572ee3e642d82bd2d6db4522261553cf664
parent5cd409a76c1512b0f8f64b7fd606de022333774c (diff)
-rw-r--r--src/mesa/drivers/common/meta.c6
-rw-r--r--src/mesa/drivers/dri/i965/brw_cs.cpp7
2 files changed, 8 insertions, 5 deletions
diff --git a/src/mesa/drivers/common/meta.c b/src/mesa/drivers/common/meta.c
index d2ab7b8ded..7dd08bf62f 100644
--- a/src/mesa/drivers/common/meta.c
+++ b/src/mesa/drivers/common/meta.c
@@ -599,7 +599,7 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state)
/* Save the shader state from ctx->Shader (instead of ctx->_Shader) so
* that we don't have to worry about the current pipeline state.
*/
- for (i = 0; i <= MESA_SHADER_FRAGMENT; i++) {
+ for (i = 0; i < MESA_SHADER_STAGES; i++) {
_mesa_reference_shader_program(ctx, &save->Shader[i],
ctx->Shader.CurrentProgram[i]);
}
@@ -947,7 +947,9 @@ _mesa_meta_end(struct gl_context *ctx)
GL_VERTEX_SHADER,
GL_GEOMETRY_SHADER,
GL_FRAGMENT_SHADER,
+ GL_COMPUTE_SHADER,
};
+ STATIC_ASSERT(MESA_SHADER_STAGES == ARRAY_SIZE(targets));
bool any_shader;
@@ -973,7 +975,7 @@ _mesa_meta_end(struct gl_context *ctx)
}
any_shader = false;
- for (i = 0; i <= MESA_SHADER_FRAGMENT; i++) {
+ for (i = 0; i < MESA_SHADER_STAGES; i++) {
/* It is safe to call _mesa_use_shader_program even if the extension
* necessary for that program state is not supported. In that case,
* the saved program object must be NULL and the currently bound
diff --git a/src/mesa/drivers/dri/i965/brw_cs.cpp b/src/mesa/drivers/dri/i965/brw_cs.cpp
index 0b2eedc7ae..19e635bd92 100644
--- a/src/mesa/drivers/dri/i965/brw_cs.cpp
+++ b/src/mesa/drivers/dri/i965/brw_cs.cpp
@@ -173,7 +173,8 @@ brw_codegen_cs_prog(struct brw_context *brw,
* prog_data associated with the compiled program, and which will be freed
* by the state cache.
*/
- int param_count = cs->num_uniform_components;
+ int param_count = (cs->num_uniform_components +
+ cs->NumImages * BRW_IMAGE_PARAM_SIZE);
/* The backend also sometimes adds params for texture size. */
param_count += 2 * ctx->Const.Program[MESA_SHADER_COMPUTE].MaxTextureImageUnits;
@@ -566,7 +567,7 @@ const struct brw_tracked_state gen7_cs_push_constants = {
};
static void
-brw_upload_wm_image_surfaces(struct brw_context *brw)
+brw_upload_cs_image_surfaces(struct brw_context *brw)
{
struct gl_context *ctx = &brw->ctx;
/* BRW_NEW_COMPUTE_PROGRAM */
@@ -585,5 +586,5 @@ const struct brw_tracked_state brw_cs_image_surfaces = {
.mesa = 0,
.brw = BRW_NEW_BATCH | BRW_NEW_COMPUTE_PROGRAM | BRW_NEW_IMAGE_UNITS,
},
- .emit = brw_upload_wm_image_surfaces,
+ .emit = brw_upload_cs_image_surfaces,
};