intel/compiler: Make a type for Thread Payload and FS variant

Acked-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Marcin Ślusarz <marcin.slusarz@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Acked-by: Ian Romanick <ian.d.romanick@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18176>
This commit is contained in:
Caio Oliveira
2022-08-19 12:18:21 -07:00
committed by Marge Bot
parent 582bad0256
commit dab66d20a7
2 changed files with 21 additions and 17 deletions

View File

@@ -85,6 +85,25 @@ struct shader_stats {
unsigned fill_count; unsigned fill_count;
}; };
/** Register numbers for thread payload fields. */
struct thread_payload {
/** The number of thread payload registers the hardware will supply. */
uint8_t num_regs;
};
struct fs_thread_payload : public thread_payload {
uint8_t subspan_coord_reg[2];
uint8_t source_depth_reg[2];
uint8_t source_w_reg[2];
uint8_t aa_dest_stencil_reg[2];
uint8_t dest_depth_reg[2];
uint8_t sample_pos_reg[2];
uint8_t sample_mask_in_reg[2];
uint8_t depth_w_coef_reg[2];
uint8_t barycentric_coord_reg[BRW_BARYCENTRIC_MODE_COUNT][2];
uint8_t local_invocation_id_reg[2];
};
/** /**
* The fragment shader front-end. * The fragment shader front-end.
* *
@@ -392,22 +411,7 @@ public:
bool failed; bool failed;
char *fail_msg; char *fail_msg;
/** Register numbers for thread payload fields. */ fs_thread_payload payload;
struct thread_payload {
uint8_t subspan_coord_reg[2];
uint8_t source_depth_reg[2];
uint8_t source_w_reg[2];
uint8_t aa_dest_stencil_reg[2];
uint8_t dest_depth_reg[2];
uint8_t sample_pos_reg[2];
uint8_t sample_mask_in_reg[2];
uint8_t depth_w_coef_reg[2];
uint8_t barycentric_coord_reg[BRW_BARYCENTRIC_MODE_COUNT][2];
uint8_t local_invocation_id_reg[2];
/** The number of thread payload registers the hardware will supply. */
uint8_t num_regs;
} payload;
bool source_depth_to_render_target; bool source_depth_to_render_target;
bool runtime_check_aads_emit; bool runtime_check_aads_emit;

View File

@@ -151,7 +151,7 @@ static void
lower_fb_write_logical_send(const fs_builder &bld, fs_inst *inst, lower_fb_write_logical_send(const fs_builder &bld, fs_inst *inst,
const struct brw_wm_prog_data *prog_data, const struct brw_wm_prog_data *prog_data,
const brw_wm_prog_key *key, const brw_wm_prog_key *key,
const fs_visitor::thread_payload &payload) const fs_thread_payload &payload)
{ {
assert(inst->src[FB_WRITE_LOGICAL_SRC_COMPONENTS].file == IMM); assert(inst->src[FB_WRITE_LOGICAL_SRC_COMPONENTS].file == IMM);
const intel_device_info *devinfo = bld.shader->devinfo; const intel_device_info *devinfo = bld.shader->devinfo;