[Code] Make union usage more consistent
This commit is contained in:
@@ -46,6 +46,7 @@ namespace reg {
|
||||
*******************************************************************************/
|
||||
|
||||
union alignas(uint32_t) COHER_STATUS_HOST {
|
||||
uint32_t value;
|
||||
struct {
|
||||
uint32_t matching_contexts : 8; // +0
|
||||
uint32_t rb_copy_dest_base_ena : 1; // +8
|
||||
@@ -64,12 +65,12 @@ union alignas(uint32_t) COHER_STATUS_HOST {
|
||||
uint32_t : 4; // +27
|
||||
uint32_t status : 1; // +31
|
||||
};
|
||||
uint32_t value;
|
||||
static constexpr Register register_index = XE_GPU_REG_COHER_STATUS_HOST;
|
||||
};
|
||||
static_assert_size(COHER_STATUS_HOST, sizeof(uint32_t));
|
||||
|
||||
union alignas(uint32_t) WAIT_UNTIL {
|
||||
uint32_t value;
|
||||
struct {
|
||||
uint32_t : 1; // +0
|
||||
uint32_t wait_re_vsync : 1; // +1
|
||||
@@ -88,7 +89,6 @@ union alignas(uint32_t) WAIT_UNTIL {
|
||||
uint32_t : 2; // +18
|
||||
uint32_t cmdfifo_entries : 4; // +20
|
||||
};
|
||||
uint32_t value;
|
||||
static constexpr Register register_index = XE_GPU_REG_WAIT_UNTIL;
|
||||
};
|
||||
static_assert_size(WAIT_UNTIL, sizeof(uint32_t));
|
||||
@@ -102,6 +102,7 @@ static_assert_size(WAIT_UNTIL, sizeof(uint32_t));
|
||||
*******************************************************************************/
|
||||
|
||||
union alignas(uint32_t) SQ_PROGRAM_CNTL {
|
||||
uint32_t value;
|
||||
struct {
|
||||
// Note from a2xx.xml:
|
||||
// Only 0x3F worth of valid register values for VS_NUM_REG and PS_NUM_REG,
|
||||
@@ -118,12 +119,12 @@ union alignas(uint32_t) SQ_PROGRAM_CNTL {
|
||||
uint32_t ps_export_mode : 4; // +27
|
||||
uint32_t gen_index_vtx : 1; // +31
|
||||
};
|
||||
uint32_t value;
|
||||
static constexpr Register register_index = XE_GPU_REG_SQ_PROGRAM_CNTL;
|
||||
};
|
||||
static_assert_size(SQ_PROGRAM_CNTL, sizeof(uint32_t));
|
||||
|
||||
union alignas(uint32_t) SQ_CONTEXT_MISC {
|
||||
uint32_t value;
|
||||
struct {
|
||||
uint32_t inst_pred_optimize : 1; // +0
|
||||
uint32_t sc_output_screen_xy : 1; // +1
|
||||
@@ -150,19 +151,18 @@ union alignas(uint32_t) SQ_CONTEXT_MISC {
|
||||
uint32_t yeild_optimize : 1; // +17 sic
|
||||
uint32_t tx_cache_sel : 1; // +18
|
||||
};
|
||||
uint32_t value;
|
||||
static constexpr Register register_index = XE_GPU_REG_SQ_CONTEXT_MISC;
|
||||
};
|
||||
static_assert_size(SQ_CONTEXT_MISC, sizeof(uint32_t));
|
||||
|
||||
union alignas(uint32_t) SQ_INTERPOLATOR_CNTL {
|
||||
uint32_t value;
|
||||
struct {
|
||||
uint32_t param_shade : 16; // +0
|
||||
// SampleLocation bits - 0 for centroid, 1 for center, if
|
||||
// SQ_CONTEXT_MISC::sc_sample_cntl is kCentroidsAndCenters.
|
||||
uint32_t sampling_pattern : 16; // +16
|
||||
};
|
||||
uint32_t value;
|
||||
static constexpr Register register_index = XE_GPU_REG_SQ_INTERPOLATOR_CNTL;
|
||||
};
|
||||
static_assert_size(SQ_INTERPOLATOR_CNTL, sizeof(uint32_t));
|
||||
@@ -186,16 +186,17 @@ static_assert_size(SQ_INTERPOLATOR_CNTL, sizeof(uint32_t));
|
||||
*******************************************************************************/
|
||||
|
||||
union alignas(uint32_t) VGT_DMA_SIZE {
|
||||
uint32_t value;
|
||||
struct {
|
||||
uint32_t num_words : 24; // +0
|
||||
uint32_t : 6; // +24
|
||||
xenos::Endian swap_mode : 2; // +30
|
||||
};
|
||||
uint32_t value;
|
||||
static constexpr Register register_index = XE_GPU_REG_VGT_DMA_SIZE;
|
||||
};
|
||||
|
||||
union alignas(uint32_t) VGT_DRAW_INITIATOR {
|
||||
uint32_t value;
|
||||
// Different than on A2xx and R6xx/R7xx.
|
||||
struct {
|
||||
xenos::PrimitiveType prim_type : 6; // +0
|
||||
@@ -207,7 +208,6 @@ union alignas(uint32_t) VGT_DRAW_INITIATOR {
|
||||
uint32_t : 3; // +13
|
||||
uint32_t num_indices : 16; // +16
|
||||
};
|
||||
uint32_t value;
|
||||
static constexpr Register register_index = XE_GPU_REG_VGT_DRAW_INITIATOR;
|
||||
};
|
||||
static_assert_size(VGT_DRAW_INITIATOR, sizeof(uint32_t));
|
||||
@@ -223,6 +223,7 @@ static_assert_size(VGT_DRAW_INITIATOR, sizeof(uint32_t));
|
||||
// clamping.
|
||||
|
||||
union alignas(uint32_t) VGT_MULTI_PRIM_IB_RESET_INDX {
|
||||
uint32_t value;
|
||||
struct {
|
||||
// The upper 8 bits of the value from the index buffer are confirmed to be
|
||||
// ignored. So, though this specifically is untested (because
|
||||
@@ -234,13 +235,13 @@ union alignas(uint32_t) VGT_MULTI_PRIM_IB_RESET_INDX {
|
||||
// 0x1FFFFFF, 0xFFFFFFFF all cause primitive reset.
|
||||
uint32_t reset_indx : 24;
|
||||
};
|
||||
uint32_t value;
|
||||
static constexpr Register register_index =
|
||||
XE_GPU_REG_VGT_MULTI_PRIM_IB_RESET_INDX;
|
||||
};
|
||||
static_assert_size(VGT_MULTI_PRIM_IB_RESET_INDX, sizeof(uint32_t));
|
||||
|
||||
union alignas(uint32_t) VGT_INDX_OFFSET {
|
||||
uint32_t value;
|
||||
struct {
|
||||
// Unlike R5xx's VAP_INDEX_OFFSET, which is signed 25-bit, this is 24-bit -
|
||||
// and signedness doesn't matter as index calculations are done in 24-bit
|
||||
@@ -251,44 +252,43 @@ union alignas(uint32_t) VGT_INDX_OFFSET {
|
||||
// anyway, and that has no effect on offsets that fit in 24 bits.
|
||||
uint32_t indx_offset : 24;
|
||||
};
|
||||
uint32_t value;
|
||||
static constexpr Register register_index = XE_GPU_REG_VGT_INDX_OFFSET;
|
||||
};
|
||||
static_assert_size(VGT_INDX_OFFSET, sizeof(uint32_t));
|
||||
|
||||
union alignas(uint32_t) VGT_MIN_VTX_INDX {
|
||||
uint32_t value;
|
||||
struct {
|
||||
uint32_t min_indx : 24;
|
||||
};
|
||||
uint32_t value;
|
||||
static constexpr Register register_index = XE_GPU_REG_VGT_MIN_VTX_INDX;
|
||||
};
|
||||
static_assert_size(VGT_MIN_VTX_INDX, sizeof(uint32_t));
|
||||
|
||||
union alignas(uint32_t) VGT_MAX_VTX_INDX {
|
||||
uint32_t value;
|
||||
struct {
|
||||
// Usually 0xFFFF or 0xFFFFFF.
|
||||
uint32_t max_indx : 24;
|
||||
};
|
||||
uint32_t value;
|
||||
static constexpr Register register_index = XE_GPU_REG_VGT_MAX_VTX_INDX;
|
||||
};
|
||||
static_assert_size(VGT_MAX_VTX_INDX, sizeof(uint32_t));
|
||||
|
||||
union alignas(uint32_t) VGT_OUTPUT_PATH_CNTL {
|
||||
uint32_t value;
|
||||
struct {
|
||||
xenos::VGTOutputPath path_select : 2; // +0
|
||||
};
|
||||
uint32_t value;
|
||||
static constexpr Register register_index = XE_GPU_REG_VGT_OUTPUT_PATH_CNTL;
|
||||
};
|
||||
static_assert_size(VGT_OUTPUT_PATH_CNTL, sizeof(uint32_t));
|
||||
|
||||
union alignas(uint32_t) VGT_HOS_CNTL {
|
||||
uint32_t value;
|
||||
struct {
|
||||
xenos::TessellationMode tess_mode : 2; // +0
|
||||
};
|
||||
uint32_t value;
|
||||
static constexpr Register register_index = XE_GPU_REG_VGT_HOS_CNTL;
|
||||
};
|
||||
static_assert_size(VGT_HOS_CNTL, sizeof(uint32_t));
|
||||
@@ -307,29 +307,30 @@ static_assert_size(VGT_HOS_CNTL, sizeof(uint32_t));
|
||||
*******************************************************************************/
|
||||
|
||||
union alignas(uint32_t) PA_SU_POINT_MINMAX {
|
||||
uint32_t value;
|
||||
struct {
|
||||
// Radius, 12.4 fixed point.
|
||||
uint32_t min_size : 16; // +0
|
||||
uint32_t max_size : 16; // +16
|
||||
};
|
||||
uint32_t value;
|
||||
static constexpr Register register_index = XE_GPU_REG_PA_SU_POINT_MINMAX;
|
||||
};
|
||||
static_assert_size(PA_SU_POINT_MINMAX, sizeof(uint32_t));
|
||||
|
||||
union alignas(uint32_t) PA_SU_POINT_SIZE {
|
||||
uint32_t value;
|
||||
struct {
|
||||
// 1/2 width or height, 12.4 fixed point.
|
||||
uint32_t height : 16; // +0
|
||||
uint32_t width : 16; // +16
|
||||
};
|
||||
uint32_t value;
|
||||
static constexpr Register register_index = XE_GPU_REG_PA_SU_POINT_SIZE;
|
||||
};
|
||||
static_assert_size(PA_SU_POINT_SIZE, sizeof(uint32_t));
|
||||
|
||||
// Setup Unit / Scanline Converter mode cntl
|
||||
union alignas(uint32_t) PA_SU_SC_MODE_CNTL {
|
||||
uint32_t value;
|
||||
struct {
|
||||
uint32_t cull_front : 1; // +0
|
||||
uint32_t cull_back : 1; // +1
|
||||
@@ -359,36 +360,36 @@ union alignas(uint32_t) PA_SU_SC_MODE_CNTL {
|
||||
// WAIT_RB_IDLE_ALL_TRI and WAIT_RB_IDLE_FIRST_TRI_NEW_STATE were added on
|
||||
// Adreno.
|
||||
};
|
||||
uint32_t value;
|
||||
static constexpr Register register_index = XE_GPU_REG_PA_SU_SC_MODE_CNTL;
|
||||
};
|
||||
static_assert_size(PA_SU_SC_MODE_CNTL, sizeof(uint32_t));
|
||||
|
||||
// Setup Unit Vertex Control
|
||||
union alignas(uint32_t) PA_SU_VTX_CNTL {
|
||||
uint32_t value;
|
||||
struct {
|
||||
uint32_t pix_center : 1; // +0 1 = half pixel offset (OpenGL).
|
||||
uint32_t round_mode : 2; // +1
|
||||
uint32_t quant_mode : 3; // +3
|
||||
};
|
||||
uint32_t value;
|
||||
static constexpr Register register_index = XE_GPU_REG_PA_SU_VTX_CNTL;
|
||||
};
|
||||
static_assert_size(PA_SU_VTX_CNTL, sizeof(uint32_t));
|
||||
|
||||
union alignas(uint32_t) PA_SC_MPASS_PS_CNTL {
|
||||
uint32_t value;
|
||||
struct {
|
||||
uint32_t mpass_pix_vec_per_pass : 20; // +0
|
||||
uint32_t : 11; // +20
|
||||
uint32_t mpass_ps_ena : 1; // +31
|
||||
};
|
||||
uint32_t value;
|
||||
static constexpr Register register_index = XE_GPU_REG_PA_SC_MPASS_PS_CNTL;
|
||||
};
|
||||
static_assert_size(PA_SC_MPASS_PS_CNTL, sizeof(uint32_t));
|
||||
|
||||
// Scanline converter viz query, used by D3D for gpu side conditional rendering
|
||||
union alignas(uint32_t) PA_SC_VIZ_QUERY {
|
||||
uint32_t value;
|
||||
struct {
|
||||
// the visibility of draws should be evaluated
|
||||
uint32_t viz_query_ena : 1; // +0
|
||||
@@ -398,13 +399,13 @@ union alignas(uint32_t) PA_SC_VIZ_QUERY {
|
||||
// not used with d3d
|
||||
uint32_t kill_pix_post_detail_mask : 1; // +8
|
||||
};
|
||||
uint32_t value;
|
||||
static constexpr Register register_index = XE_GPU_REG_PA_SC_VIZ_QUERY;
|
||||
};
|
||||
static_assert_size(PA_SC_VIZ_QUERY, sizeof(uint32_t));
|
||||
|
||||
// Clipper clip control
|
||||
union alignas(uint32_t) PA_CL_CLIP_CNTL {
|
||||
uint32_t value;
|
||||
struct {
|
||||
uint32_t ucp_ena_0 : 1; // +0
|
||||
uint32_t ucp_ena_1 : 1; // +1
|
||||
@@ -424,13 +425,13 @@ union alignas(uint32_t) PA_CL_CLIP_CNTL {
|
||||
uint32_t z_nan_retain : 1; // +23
|
||||
uint32_t w_nan_retain : 1; // +24
|
||||
};
|
||||
uint32_t value;
|
||||
static constexpr Register register_index = XE_GPU_REG_PA_CL_CLIP_CNTL;
|
||||
};
|
||||
static_assert_size(PA_CL_CLIP_CNTL, sizeof(uint32_t));
|
||||
|
||||
// Viewport transform engine control
|
||||
union alignas(uint32_t) PA_CL_VTE_CNTL {
|
||||
uint32_t value;
|
||||
struct {
|
||||
uint32_t vport_x_scale_ena : 1; // +0
|
||||
uint32_t vport_x_offset_ena : 1; // +1
|
||||
@@ -444,45 +445,45 @@ union alignas(uint32_t) PA_CL_VTE_CNTL {
|
||||
uint32_t vtx_w0_fmt : 1; // +10
|
||||
uint32_t perfcounter_ref : 1; // +11
|
||||
};
|
||||
uint32_t value;
|
||||
static constexpr Register register_index = XE_GPU_REG_PA_CL_VTE_CNTL;
|
||||
};
|
||||
static_assert_size(PA_CL_VTE_CNTL, sizeof(uint32_t));
|
||||
|
||||
union alignas(uint32_t) PA_SC_SCREEN_SCISSOR_TL {
|
||||
uint32_t value;
|
||||
struct {
|
||||
int32_t tl_x : 15; // +0
|
||||
uint32_t : 1; // +15
|
||||
int32_t tl_y : 15; // +16
|
||||
};
|
||||
uint32_t value;
|
||||
static constexpr Register register_index = XE_GPU_REG_PA_SC_SCREEN_SCISSOR_TL;
|
||||
};
|
||||
static_assert_size(PA_SC_SCREEN_SCISSOR_TL, sizeof(uint32_t));
|
||||
|
||||
union alignas(uint32_t) PA_SC_SCREEN_SCISSOR_BR {
|
||||
uint32_t value;
|
||||
struct {
|
||||
int32_t br_x : 15; // +0
|
||||
uint32_t : 1; // +15
|
||||
int32_t br_y : 15; // +16
|
||||
};
|
||||
uint32_t value;
|
||||
static constexpr Register register_index = XE_GPU_REG_PA_SC_SCREEN_SCISSOR_BR;
|
||||
};
|
||||
static_assert_size(PA_SC_SCREEN_SCISSOR_BR, sizeof(uint32_t));
|
||||
|
||||
union alignas(uint32_t) PA_SC_WINDOW_OFFSET {
|
||||
uint32_t value;
|
||||
struct {
|
||||
int32_t window_x_offset : 15; // +0
|
||||
uint32_t : 1; // +15
|
||||
int32_t window_y_offset : 15; // +16
|
||||
};
|
||||
uint32_t value;
|
||||
static constexpr Register register_index = XE_GPU_REG_PA_SC_WINDOW_OFFSET;
|
||||
};
|
||||
static_assert_size(PA_SC_WINDOW_OFFSET, sizeof(uint32_t));
|
||||
|
||||
union alignas(uint32_t) PA_SC_WINDOW_SCISSOR_TL {
|
||||
uint32_t value;
|
||||
struct {
|
||||
uint32_t tl_x : 14; // +0
|
||||
uint32_t : 2; // +14
|
||||
@@ -490,18 +491,17 @@ union alignas(uint32_t) PA_SC_WINDOW_SCISSOR_TL {
|
||||
uint32_t : 1; // +30
|
||||
uint32_t window_offset_disable : 1; // +31
|
||||
};
|
||||
uint32_t value;
|
||||
static constexpr Register register_index = XE_GPU_REG_PA_SC_WINDOW_SCISSOR_TL;
|
||||
};
|
||||
static_assert_size(PA_SC_WINDOW_SCISSOR_TL, sizeof(uint32_t));
|
||||
|
||||
union alignas(uint32_t) PA_SC_WINDOW_SCISSOR_BR {
|
||||
uint32_t value;
|
||||
struct {
|
||||
uint32_t br_x : 14; // +0
|
||||
uint32_t : 2; // +14
|
||||
uint32_t br_y : 14; // +16
|
||||
};
|
||||
uint32_t value;
|
||||
static constexpr Register register_index = XE_GPU_REG_PA_SC_WINDOW_SCISSOR_BR;
|
||||
};
|
||||
static_assert_size(PA_SC_WINDOW_SCISSOR_BR, sizeof(uint32_t));
|
||||
@@ -520,27 +520,28 @@ static_assert_size(PA_SC_WINDOW_SCISSOR_BR, sizeof(uint32_t));
|
||||
*******************************************************************************/
|
||||
|
||||
union alignas(uint32_t) RB_MODECONTROL {
|
||||
uint32_t value;
|
||||
struct {
|
||||
xenos::ModeControl edram_mode : 3; // +0
|
||||
};
|
||||
uint32_t value;
|
||||
static constexpr Register register_index = XE_GPU_REG_RB_MODECONTROL;
|
||||
};
|
||||
static_assert_size(RB_MODECONTROL, sizeof(uint32_t));
|
||||
|
||||
union alignas(uint32_t) RB_SURFACE_INFO {
|
||||
uint32_t value;
|
||||
struct {
|
||||
uint32_t surface_pitch : 14; // +0 in pixels.
|
||||
uint32_t : 2; // +14
|
||||
xenos::MsaaSamples msaa_samples : 2; // +16
|
||||
uint32_t hiz_pitch : 14; // +18
|
||||
};
|
||||
uint32_t value;
|
||||
static constexpr Register register_index = XE_GPU_REG_RB_SURFACE_INFO;
|
||||
};
|
||||
static_assert_size(RB_SURFACE_INFO, sizeof(uint32_t));
|
||||
|
||||
union alignas(uint32_t) RB_COLORCONTROL {
|
||||
uint32_t value;
|
||||
struct {
|
||||
xenos::CompareFunction alpha_func : 3; // +0
|
||||
uint32_t alpha_test_enable : 1; // +3
|
||||
@@ -585,19 +586,18 @@ union alignas(uint32_t) RB_COLORCONTROL {
|
||||
uint32_t alpha_to_mask_offset2 : 2; // +28
|
||||
uint32_t alpha_to_mask_offset3 : 2; // +30
|
||||
};
|
||||
uint32_t value;
|
||||
static constexpr Register register_index = XE_GPU_REG_RB_COLORCONTROL;
|
||||
};
|
||||
static_assert_size(RB_COLORCONTROL, sizeof(uint32_t));
|
||||
|
||||
union alignas(uint32_t) RB_COLOR_INFO {
|
||||
uint32_t value;
|
||||
struct {
|
||||
uint32_t color_base : 12; // +0 in tiles.
|
||||
uint32_t : 4; // +12
|
||||
xenos::ColorRenderTargetFormat color_format : 4; // +16
|
||||
int32_t color_exp_bias : 6; // +20
|
||||
};
|
||||
uint32_t value;
|
||||
static constexpr Register register_index = XE_GPU_REG_RB_COLOR_INFO;
|
||||
// RB_COLOR[1-3]_INFO also use this format.
|
||||
static const Register rt_register_indices[4];
|
||||
@@ -605,6 +605,7 @@ union alignas(uint32_t) RB_COLOR_INFO {
|
||||
static_assert_size(RB_COLOR_INFO, sizeof(uint32_t));
|
||||
|
||||
union alignas(uint32_t) RB_COLOR_MASK {
|
||||
uint32_t value;
|
||||
struct {
|
||||
uint32_t write_red0 : 1; // +0
|
||||
uint32_t write_green0 : 1; // +1
|
||||
@@ -623,12 +624,12 @@ union alignas(uint32_t) RB_COLOR_MASK {
|
||||
uint32_t write_blue3 : 1; // +14
|
||||
uint32_t write_alpha3 : 1; // +15
|
||||
};
|
||||
uint32_t value;
|
||||
static constexpr Register register_index = XE_GPU_REG_RB_COLOR_MASK;
|
||||
};
|
||||
static_assert_size(RB_COLOR_MASK, sizeof(uint32_t));
|
||||
|
||||
union alignas(uint32_t) RB_BLENDCONTROL {
|
||||
uint32_t value;
|
||||
struct {
|
||||
xenos::BlendFactor color_srcblend : 5; // +0
|
||||
xenos::BlendOp color_comb_fcn : 3; // +5
|
||||
@@ -639,7 +640,6 @@ union alignas(uint32_t) RB_BLENDCONTROL {
|
||||
xenos::BlendFactor alpha_destblend : 5; // +24
|
||||
// BLEND_FORCE_ENABLE and BLEND_FORCE were added on Adreno.
|
||||
};
|
||||
uint32_t value;
|
||||
// RB_BLENDCONTROL[0-3] use this format.
|
||||
static constexpr Register register_index = XE_GPU_REG_RB_BLENDCONTROL0;
|
||||
static const Register rt_register_indices[4];
|
||||
@@ -647,6 +647,7 @@ union alignas(uint32_t) RB_BLENDCONTROL {
|
||||
static_assert_size(RB_BLENDCONTROL, sizeof(uint32_t));
|
||||
|
||||
union alignas(uint32_t) RB_DEPTHCONTROL {
|
||||
uint32_t value;
|
||||
struct {
|
||||
uint32_t stencil_enable : 1; // +0
|
||||
uint32_t z_enable : 1; // +1
|
||||
@@ -664,30 +665,29 @@ union alignas(uint32_t) RB_DEPTHCONTROL {
|
||||
xenos::StencilOp stencilzpass_bf : 3; // +26
|
||||
xenos::StencilOp stencilzfail_bf : 3; // +29
|
||||
};
|
||||
uint32_t value;
|
||||
static constexpr Register register_index = XE_GPU_REG_RB_DEPTHCONTROL;
|
||||
};
|
||||
static_assert_size(RB_DEPTHCONTROL, sizeof(uint32_t));
|
||||
|
||||
union alignas(uint32_t) RB_STENCILREFMASK {
|
||||
uint32_t value;
|
||||
struct {
|
||||
uint32_t stencilref : 8; // +0
|
||||
uint32_t stencilmask : 8; // +8
|
||||
uint32_t stencilwritemask : 8; // +16
|
||||
};
|
||||
uint32_t value;
|
||||
static constexpr Register register_index = XE_GPU_REG_RB_STENCILREFMASK;
|
||||
// RB_STENCILREFMASK_BF also uses this format.
|
||||
};
|
||||
static_assert_size(RB_STENCILREFMASK, sizeof(uint32_t));
|
||||
|
||||
union alignas(uint32_t) RB_DEPTH_INFO {
|
||||
uint32_t value;
|
||||
struct {
|
||||
uint32_t depth_base : 12; // +0 in tiles.
|
||||
uint32_t : 4; // +12
|
||||
xenos::DepthRenderTargetFormat depth_format : 1; // +16
|
||||
};
|
||||
uint32_t value;
|
||||
static constexpr Register register_index = XE_GPU_REG_RB_DEPTH_INFO;
|
||||
};
|
||||
static_assert_size(RB_DEPTH_INFO, sizeof(uint32_t));
|
||||
@@ -695,6 +695,7 @@ static_assert_size(RB_DEPTH_INFO, sizeof(uint32_t));
|
||||
// Copy registers are very different than on Adreno.
|
||||
|
||||
union alignas(uint32_t) RB_COPY_CONTROL {
|
||||
uint32_t value;
|
||||
struct {
|
||||
uint32_t copy_src_select : 3; // +0 Depth is 4.
|
||||
uint32_t : 1; // +3
|
||||
@@ -705,12 +706,12 @@ union alignas(uint32_t) RB_COPY_CONTROL {
|
||||
uint32_t : 10; // +10
|
||||
xenos::CopyCommand copy_command : 2; // +20
|
||||
};
|
||||
uint32_t value;
|
||||
static constexpr Register register_index = XE_GPU_REG_RB_COPY_CONTROL;
|
||||
};
|
||||
static_assert_size(RB_COPY_CONTROL, sizeof(uint32_t));
|
||||
|
||||
union alignas(uint32_t) RB_COPY_DEST_INFO {
|
||||
uint32_t value;
|
||||
struct {
|
||||
xenos::Endian128 copy_dest_endian : 3; // +0
|
||||
uint32_t copy_dest_array : 1; // +3
|
||||
@@ -721,18 +722,17 @@ union alignas(uint32_t) RB_COPY_DEST_INFO {
|
||||
uint32_t : 2; // +22
|
||||
uint32_t copy_dest_swap : 1; // +24
|
||||
};
|
||||
uint32_t value;
|
||||
static constexpr Register register_index = XE_GPU_REG_RB_COPY_DEST_INFO;
|
||||
};
|
||||
static_assert_size(RB_COPY_DEST_INFO, sizeof(uint32_t));
|
||||
|
||||
union alignas(uint32_t) RB_COPY_DEST_PITCH {
|
||||
uint32_t value;
|
||||
struct {
|
||||
uint32_t copy_dest_pitch : 14; // +0
|
||||
uint32_t : 2; // +14
|
||||
uint32_t copy_dest_height : 14; // +16
|
||||
};
|
||||
uint32_t value;
|
||||
static constexpr Register register_index = XE_GPU_REG_RB_COPY_DEST_PITCH;
|
||||
};
|
||||
static_assert_size(RB_COPY_DEST_PITCH, sizeof(uint32_t));
|
||||
|
||||
Reference in New Issue
Block a user