diff options
author | Kenneth Graunke <[email protected]> | 2014-12-22 18:43:08 -0800 |
---|---|---|
committer | Kenneth Graunke <[email protected]> | 2014-12-24 00:15:40 -0800 |
commit | 4616b2ef850cb2b3e33005809ed77a697afc4186 (patch) | |
tree | 9f1d6adfb7d9a603cfc849542c0177df863eab22 | |
parent | b7f14e03e3de218aedf4ba9439384c7bcbc091eb (diff) |
i965: Add missing BRW_NEW_*_PROG_DATA to texture/renderbuffer atoms.
This was probably missed when moving from a fixed binding table layout
to a dynamic one that changes based on the shader.
Fixes newly proposed Piglit test fbo-mrt-new-bind.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=87619
Signed-off-by: Kenneth Graunke <[email protected]>
Reviewed-by: Chris Forbes <[email protected]>
Reviewed-by: Mike Stroyan <[email protected]>
Cc: "10.4 10.3" <[email protected]>
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_wm_surface_state.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c index 7361c2f4ab4..85a08d55232 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c +++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c @@ -536,6 +536,7 @@ brw_update_null_renderbuffer_surface(struct brw_context *brw, unsigned int unit) drm_intel_bo *bo = NULL; unsigned pitch_minus_1 = 0; uint32_t multisampling_state = 0; + /* BRW_NEW_FS_PROG_DATA */ uint32_t surf_index = brw->wm.prog_data->binding_table.render_target_start + unit; @@ -621,6 +622,7 @@ brw_update_renderbuffer_surface(struct brw_context *brw, uint32_t format = 0; /* _NEW_BUFFERS */ mesa_format rb_format = _mesa_get_render_format(ctx, intel_rb_format(irb)); + /* BRW_NEW_FS_PROG_DATA */ uint32_t surf_index = brw->wm.prog_data->binding_table.render_target_start + unit; @@ -737,7 +739,8 @@ const struct brw_tracked_state brw_renderbuffer_surfaces = { .dirty = { .mesa = _NEW_BUFFERS | _NEW_COLOR, - .brw = BRW_NEW_BATCH, + .brw = BRW_NEW_BATCH | + BRW_NEW_FS_PROG_DATA, }, .emit = brw_update_renderbuffer_surfaces, }; @@ -763,6 +766,8 @@ update_stage_texture_surfaces(struct brw_context *brw, struct gl_context *ctx = &brw->ctx; uint32_t *surf_offset = stage_state->surf_offset; + + /* BRW_NEW_*_PROG_DATA */ if (for_gather) surf_offset += stage_state->prog_data->binding_table.gather_texture_start; else @@ -824,9 +829,12 @@ const struct brw_tracked_state brw_texture_surfaces = { .mesa = _NEW_TEXTURE, .brw = BRW_NEW_BATCH | BRW_NEW_FRAGMENT_PROGRAM | + BRW_NEW_FS_PROG_DATA | BRW_NEW_GEOMETRY_PROGRAM | + BRW_NEW_GS_PROG_DATA | BRW_NEW_TEXTURE_BUFFER | - BRW_NEW_VERTEX_PROGRAM, + BRW_NEW_VERTEX_PROGRAM | + BRW_NEW_VS_PROG_DATA, }, .emit = brw_update_texture_surfaces, }; |