i965: Add brw_prog_key_set_id helper to set the program id on any stage
For saving programs (shader cache; get program binary) it is useful to set the id to 0, with the stage being a parameter. For restoring programs it is useful to set the id to the id allocated to the program at creation time. Signed-off-by: Jordan Justen <jordan.l.justen@intel.com> Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
This commit is contained in:
parent
1c1a7d11c8
commit
170d76de9f
|
@ -838,3 +838,19 @@ brw_assign_common_binding_table_offsets(const struct gen_device_info *devinfo,
|
|||
assert(next_binding_table_offset <= BRW_MAX_SURFACES);
|
||||
return next_binding_table_offset;
|
||||
}
|
||||
|
||||
void
|
||||
brw_prog_key_set_id(union brw_any_prog_key *key, gl_shader_stage stage,
|
||||
unsigned id)
|
||||
{
|
||||
static const unsigned stage_offsets[] = {
|
||||
offsetof(struct brw_vs_prog_key, program_string_id),
|
||||
offsetof(struct brw_tcs_prog_key, program_string_id),
|
||||
offsetof(struct brw_tes_prog_key, program_string_id),
|
||||
offsetof(struct brw_gs_prog_key, program_string_id),
|
||||
offsetof(struct brw_wm_prog_key, program_string_id),
|
||||
offsetof(struct brw_cs_prog_key, program_string_id),
|
||||
};
|
||||
assert((int)stage >= 0 && stage < ARRAY_SIZE(stage_offsets));
|
||||
*(unsigned*)((uint8_t*)key + stage_offsets[stage]) = id;
|
||||
}
|
||||
|
|
|
@ -82,6 +82,9 @@ brw_assign_common_binding_table_offsets(const struct gen_device_info *devinfo,
|
|||
const struct gl_program *prog,
|
||||
struct brw_stage_prog_data *stage_prog_data,
|
||||
uint32_t next_binding_table_offset);
|
||||
void
|
||||
brw_prog_key_set_id(union brw_any_prog_key *key, gl_shader_stage stage,
|
||||
unsigned id);
|
||||
|
||||
void
|
||||
brw_stage_prog_data_free(const void *prog_data);
|
||||
|
|
Loading…
Reference in New Issue