GLbitfield brw_new_binding_table,
struct brw_stage_state *stage_state)
{
- /* CACHE_NEW_*_PROG */
+ /* BRW_NEW_*_PROG_DATA */
struct brw_stage_prog_data *prog_data = stage_state->prog_data;
if (prog_data->binding_table.size_bytes == 0) {
/* There are no surfaces; skip making the binding table altogether. */
- if (stage_state->bind_bo_offset == 0)
+ if (stage_state->bind_bo_offset == 0 && brw->gen < 9)
return;
stage_state->bind_bo_offset = 0;
} else {
/* Upload a new binding table. */
if (INTEL_DEBUG & DEBUG_SHADER_TIME) {
- brw->vtbl.create_raw_surface(
- brw, brw->shader_time.bo, 0, brw->shader_time.bo->size,
- &stage_state->surf_offset[prog_data->binding_table.shader_time_start], true);
+ brw->vtbl.emit_buffer_surface_state(
+ brw, &stage_state->surf_offset[
+ prog_data->binding_table.shader_time_start],
+ brw->shader_time.bo, 0, BRW_SURFACEFORMAT_RAW,
+ brw->shader_time.bo->size, 1, true);
}
uint32_t *bind = brw_state_batch(brw, AUB_TRACE_BINDING_TABLE,
.mesa = 0,
.brw = BRW_NEW_BATCH |
BRW_NEW_VS_CONSTBUF |
+ BRW_NEW_VS_PROG_DATA |
BRW_NEW_SURFACES,
- .cache = CACHE_NEW_VS_PROG
},
.emit = brw_vs_upload_binding_table,
};
const struct brw_tracked_state brw_wm_binding_table = {
.dirty = {
.mesa = 0,
- .brw = BRW_NEW_BATCH | BRW_NEW_SURFACES,
- .cache = CACHE_NEW_WM_PROG
+ .brw = BRW_NEW_BATCH |
+ BRW_NEW_FS_PROG_DATA |
+ BRW_NEW_SURFACES,
},
.emit = brw_upload_wm_binding_table,
};
.mesa = 0,
.brw = BRW_NEW_BATCH |
BRW_NEW_GS_CONSTBUF |
+ BRW_NEW_GS_PROG_DATA |
BRW_NEW_SURFACES,
- .cache = CACHE_NEW_GS_PROG
},
.emit = brw_gs_upload_binding_table,
};
const struct brw_tracked_state brw_binding_table_pointers = {
.dirty = {
.mesa = 0,
- .brw = (BRW_NEW_BATCH |
- BRW_NEW_STATE_BASE_ADDRESS |
- BRW_NEW_VS_BINDING_TABLE |
- BRW_NEW_GS_BINDING_TABLE |
- BRW_NEW_PS_BINDING_TABLE),
- .cache = 0,
+ .brw = BRW_NEW_BATCH |
+ BRW_NEW_GS_BINDING_TABLE |
+ BRW_NEW_PS_BINDING_TABLE |
+ BRW_NEW_STATE_BASE_ADDRESS |
+ BRW_NEW_VS_BINDING_TABLE,
},
.emit = gen4_upload_binding_table_pointers,
};
const struct brw_tracked_state gen6_binding_table_pointers = {
.dirty = {
.mesa = 0,
- .brw = (BRW_NEW_BATCH |
- BRW_NEW_STATE_BASE_ADDRESS |
- BRW_NEW_VS_BINDING_TABLE |
- BRW_NEW_GS_BINDING_TABLE |
- BRW_NEW_PS_BINDING_TABLE),
- .cache = 0,
+ .brw = BRW_NEW_BATCH |
+ BRW_NEW_GS_BINDING_TABLE |
+ BRW_NEW_PS_BINDING_TABLE |
+ BRW_NEW_STATE_BASE_ADDRESS |
+ BRW_NEW_VS_BINDING_TABLE,
},
.emit = gen6_upload_binding_table_pointers,
};