i965: Setup pull constant state for compute programs
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com> Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
This commit is contained in:
@@ -1172,7 +1172,7 @@ struct brw_context
|
||||
|
||||
int num_atoms[BRW_NUM_PIPELINES];
|
||||
const struct brw_tracked_state render_atoms[60];
|
||||
const struct brw_tracked_state compute_atoms[8];
|
||||
const struct brw_tracked_state compute_atoms[9];
|
||||
|
||||
/* If (INTEL_DEBUG & DEBUG_BATCH) */
|
||||
struct {
|
||||
|
||||
@@ -49,6 +49,7 @@ extern const struct brw_tracked_state brw_clip_unit;
|
||||
extern const struct brw_tracked_state brw_vs_pull_constants;
|
||||
extern const struct brw_tracked_state brw_gs_pull_constants;
|
||||
extern const struct brw_tracked_state brw_wm_pull_constants;
|
||||
extern const struct brw_tracked_state brw_cs_pull_constants;
|
||||
extern const struct brw_tracked_state brw_constant_buffer;
|
||||
extern const struct brw_tracked_state brw_curbe_offsets;
|
||||
extern const struct brw_tracked_state brw_invariant_state;
|
||||
|
||||
@@ -259,6 +259,7 @@ static const struct brw_tracked_state *gen7_compute_atoms[] =
|
||||
&brw_state_base_address,
|
||||
&brw_cs_image_surfaces,
|
||||
&gen7_cs_push_constants,
|
||||
&brw_cs_pull_constants,
|
||||
&brw_cs_ubo_surfaces,
|
||||
&brw_cs_abo_surfaces,
|
||||
&brw_texture_surfaces,
|
||||
@@ -353,6 +354,7 @@ static const struct brw_tracked_state *gen8_compute_atoms[] =
|
||||
&gen8_state_base_address,
|
||||
&brw_cs_image_surfaces,
|
||||
&gen7_cs_push_constants,
|
||||
&brw_cs_pull_constants,
|
||||
&brw_cs_ubo_surfaces,
|
||||
&brw_cs_abo_surfaces,
|
||||
&brw_texture_surfaces,
|
||||
|
||||
@@ -285,3 +285,34 @@ const struct brw_tracked_state gen7_cs_push_constants = {
|
||||
},
|
||||
.emit = gen7_upload_cs_push_constants,
|
||||
};
|
||||
|
||||
/**
|
||||
* Creates a new CS constant buffer reflecting the current CS program's
|
||||
* constants, if needed by the CS program.
|
||||
*/
|
||||
static void
|
||||
brw_upload_cs_pull_constants(struct brw_context *brw)
|
||||
{
|
||||
struct brw_stage_state *stage_state = &brw->cs.base;
|
||||
|
||||
/* BRW_NEW_COMPUTE_PROGRAM */
|
||||
struct brw_compute_program *cp =
|
||||
(struct brw_compute_program *) brw->compute_program;
|
||||
|
||||
/* BRW_NEW_CS_PROG_DATA */
|
||||
const struct brw_stage_prog_data *prog_data = &brw->cs.prog_data->base;
|
||||
|
||||
/* _NEW_PROGRAM_CONSTANTS */
|
||||
brw_upload_pull_constants(brw, BRW_NEW_SURFACES, &cp->program.Base,
|
||||
stage_state, prog_data, true);
|
||||
}
|
||||
|
||||
const struct brw_tracked_state brw_cs_pull_constants = {
|
||||
.dirty = {
|
||||
.mesa = _NEW_PROGRAM_CONSTANTS,
|
||||
.brw = BRW_NEW_BATCH |
|
||||
BRW_NEW_COMPUTE_PROGRAM |
|
||||
BRW_NEW_CS_PROG_DATA,
|
||||
},
|
||||
.emit = brw_upload_cs_pull_constants,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user