radv: update buffer descriptor registers on GFX11
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Timur Kristóf <timur.kristof@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16419>
This commit is contained in:
parent
ebca4f2b3d
commit
ef59e5b193
|
@ -3506,7 +3506,7 @@ radv_flush_vertex_descriptors(struct radv_cmd_buffer *cmd_buffer, bool pipeline_
|
||||||
* - 3: offset >= NUM_RECORDS (Raw)
|
* - 3: offset >= NUM_RECORDS (Raw)
|
||||||
*/
|
*/
|
||||||
int oob_select = stride ? V_008F0C_OOB_SELECT_STRUCTURED : V_008F0C_OOB_SELECT_RAW;
|
int oob_select = stride ? V_008F0C_OOB_SELECT_STRUCTURED : V_008F0C_OOB_SELECT_RAW;
|
||||||
rsrc_word3 |= S_008F0C_OOB_SELECT(oob_select) | S_008F0C_RESOURCE_LEVEL(1);
|
rsrc_word3 |= S_008F0C_OOB_SELECT(oob_select) | S_008F0C_RESOURCE_LEVEL(chip < GFX11);
|
||||||
}
|
}
|
||||||
|
|
||||||
desc[0] = va;
|
desc[0] = va;
|
||||||
|
@ -3606,7 +3606,10 @@ radv_flush_streamout_descriptors(struct radv_cmd_buffer *cmd_buffer)
|
||||||
S_008F0C_DST_SEL_X(V_008F0C_SQ_SEL_X) | S_008F0C_DST_SEL_Y(V_008F0C_SQ_SEL_Y) |
|
S_008F0C_DST_SEL_X(V_008F0C_SQ_SEL_X) | S_008F0C_DST_SEL_Y(V_008F0C_SQ_SEL_Y) |
|
||||||
S_008F0C_DST_SEL_Z(V_008F0C_SQ_SEL_Z) | S_008F0C_DST_SEL_W(V_008F0C_SQ_SEL_W);
|
S_008F0C_DST_SEL_Z(V_008F0C_SQ_SEL_Z) | S_008F0C_DST_SEL_W(V_008F0C_SQ_SEL_W);
|
||||||
|
|
||||||
if (cmd_buffer->device->physical_device->rad_info.gfx_level >= GFX10) {
|
if (cmd_buffer->device->physical_device->rad_info.gfx_level >= GFX11) {
|
||||||
|
rsrc_word3 |= S_008F0C_FORMAT(V_008F0C_GFX11_FORMAT_32_FLOAT) |
|
||||||
|
S_008F0C_OOB_SELECT(V_008F0C_OOB_SELECT_RAW);
|
||||||
|
} else if (cmd_buffer->device->physical_device->rad_info.gfx_level >= GFX10) {
|
||||||
rsrc_word3 |= S_008F0C_FORMAT(V_008F0C_GFX10_FORMAT_32_FLOAT) |
|
rsrc_word3 |= S_008F0C_FORMAT(V_008F0C_GFX10_FORMAT_32_FLOAT) |
|
||||||
S_008F0C_OOB_SELECT(V_008F0C_OOB_SELECT_RAW) | S_008F0C_RESOURCE_LEVEL(1);
|
S_008F0C_OOB_SELECT(V_008F0C_OOB_SELECT_RAW) | S_008F0C_RESOURCE_LEVEL(1);
|
||||||
} else {
|
} else {
|
||||||
|
@ -4892,7 +4895,10 @@ radv_CmdBindDescriptorSets(VkCommandBuffer commandBuffer, VkPipelineBindPoint pi
|
||||||
dst[3] = S_008F0C_DST_SEL_X(V_008F0C_SQ_SEL_X) | S_008F0C_DST_SEL_Y(V_008F0C_SQ_SEL_Y) |
|
dst[3] = S_008F0C_DST_SEL_X(V_008F0C_SQ_SEL_X) | S_008F0C_DST_SEL_Y(V_008F0C_SQ_SEL_Y) |
|
||||||
S_008F0C_DST_SEL_Z(V_008F0C_SQ_SEL_Z) | S_008F0C_DST_SEL_W(V_008F0C_SQ_SEL_W);
|
S_008F0C_DST_SEL_Z(V_008F0C_SQ_SEL_Z) | S_008F0C_DST_SEL_W(V_008F0C_SQ_SEL_W);
|
||||||
|
|
||||||
if (cmd_buffer->device->physical_device->rad_info.gfx_level >= GFX10) {
|
if (cmd_buffer->device->physical_device->rad_info.gfx_level >= GFX11) {
|
||||||
|
dst[3] |= S_008F0C_FORMAT(V_008F0C_GFX11_FORMAT_32_FLOAT) |
|
||||||
|
S_008F0C_OOB_SELECT(V_008F0C_OOB_SELECT_RAW);
|
||||||
|
} else if (cmd_buffer->device->physical_device->rad_info.gfx_level >= GFX10) {
|
||||||
dst[3] |= S_008F0C_FORMAT(V_008F0C_GFX10_FORMAT_32_FLOAT) |
|
dst[3] |= S_008F0C_FORMAT(V_008F0C_GFX10_FORMAT_32_FLOAT) |
|
||||||
S_008F0C_OOB_SELECT(V_008F0C_OOB_SELECT_RAW) | S_008F0C_RESOURCE_LEVEL(1);
|
S_008F0C_OOB_SELECT(V_008F0C_OOB_SELECT_RAW) | S_008F0C_RESOURCE_LEVEL(1);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -1080,7 +1080,10 @@ write_buffer_descriptor(struct radv_device *device, struct radv_cmd_buffer *cmd_
|
||||||
S_008F0C_DST_SEL_X(V_008F0C_SQ_SEL_X) | S_008F0C_DST_SEL_Y(V_008F0C_SQ_SEL_Y) |
|
S_008F0C_DST_SEL_X(V_008F0C_SQ_SEL_X) | S_008F0C_DST_SEL_Y(V_008F0C_SQ_SEL_Y) |
|
||||||
S_008F0C_DST_SEL_Z(V_008F0C_SQ_SEL_Z) | S_008F0C_DST_SEL_W(V_008F0C_SQ_SEL_W);
|
S_008F0C_DST_SEL_Z(V_008F0C_SQ_SEL_Z) | S_008F0C_DST_SEL_W(V_008F0C_SQ_SEL_W);
|
||||||
|
|
||||||
if (device->physical_device->rad_info.gfx_level >= GFX10) {
|
if (device->physical_device->rad_info.gfx_level >= GFX11) {
|
||||||
|
rsrc_word3 |= S_008F0C_FORMAT(V_008F0C_GFX11_FORMAT_32_FLOAT) |
|
||||||
|
S_008F0C_OOB_SELECT(V_008F0C_OOB_SELECT_RAW);
|
||||||
|
} else if (device->physical_device->rad_info.gfx_level >= GFX10) {
|
||||||
rsrc_word3 |= S_008F0C_FORMAT(V_008F0C_GFX10_FORMAT_32_FLOAT) |
|
rsrc_word3 |= S_008F0C_FORMAT(V_008F0C_GFX10_FORMAT_32_FLOAT) |
|
||||||
S_008F0C_OOB_SELECT(V_008F0C_OOB_SELECT_RAW) | S_008F0C_RESOURCE_LEVEL(1);
|
S_008F0C_OOB_SELECT(V_008F0C_OOB_SELECT_RAW) | S_008F0C_RESOURCE_LEVEL(1);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -3642,7 +3642,10 @@ radv_fill_shader_rings(struct radv_queue *queue, uint32_t *map, bool add_sample_
|
||||||
else
|
else
|
||||||
desc[1] |= S_008F04_SWIZZLE_ENABLE_GFX6(1);
|
desc[1] |= S_008F04_SWIZZLE_ENABLE_GFX6(1);
|
||||||
|
|
||||||
if (queue->device->physical_device->rad_info.gfx_level >= GFX10) {
|
if (queue->device->physical_device->rad_info.gfx_level >= GFX11) {
|
||||||
|
desc[3] |= S_008F0C_FORMAT(V_008F0C_GFX11_FORMAT_32_FLOAT) |
|
||||||
|
S_008F0C_OOB_SELECT(V_008F0C_OOB_SELECT_DISABLED);
|
||||||
|
} else if (queue->device->physical_device->rad_info.gfx_level >= GFX10) {
|
||||||
desc[3] |= S_008F0C_FORMAT(V_008F0C_GFX10_FORMAT_32_FLOAT) |
|
desc[3] |= S_008F0C_FORMAT(V_008F0C_GFX10_FORMAT_32_FLOAT) |
|
||||||
S_008F0C_OOB_SELECT(V_008F0C_OOB_SELECT_DISABLED) | S_008F0C_RESOURCE_LEVEL(1);
|
S_008F0C_OOB_SELECT(V_008F0C_OOB_SELECT_DISABLED) | S_008F0C_RESOURCE_LEVEL(1);
|
||||||
} else {
|
} else {
|
||||||
|
@ -3659,7 +3662,10 @@ radv_fill_shader_rings(struct radv_queue *queue, uint32_t *map, bool add_sample_
|
||||||
desc[7] = S_008F0C_DST_SEL_X(V_008F0C_SQ_SEL_X) | S_008F0C_DST_SEL_Y(V_008F0C_SQ_SEL_Y) |
|
desc[7] = S_008F0C_DST_SEL_X(V_008F0C_SQ_SEL_X) | S_008F0C_DST_SEL_Y(V_008F0C_SQ_SEL_Y) |
|
||||||
S_008F0C_DST_SEL_Z(V_008F0C_SQ_SEL_Z) | S_008F0C_DST_SEL_W(V_008F0C_SQ_SEL_W);
|
S_008F0C_DST_SEL_Z(V_008F0C_SQ_SEL_Z) | S_008F0C_DST_SEL_W(V_008F0C_SQ_SEL_W);
|
||||||
|
|
||||||
if (queue->device->physical_device->rad_info.gfx_level >= GFX10) {
|
if (queue->device->physical_device->rad_info.gfx_level >= GFX11) {
|
||||||
|
desc[7] |= S_008F0C_FORMAT(V_008F0C_GFX11_FORMAT_32_FLOAT) |
|
||||||
|
S_008F0C_OOB_SELECT(V_008F0C_OOB_SELECT_DISABLED);
|
||||||
|
} else if (queue->device->physical_device->rad_info.gfx_level >= GFX10) {
|
||||||
desc[7] |= S_008F0C_FORMAT(V_008F0C_GFX10_FORMAT_32_FLOAT) |
|
desc[7] |= S_008F0C_FORMAT(V_008F0C_GFX10_FORMAT_32_FLOAT) |
|
||||||
S_008F0C_OOB_SELECT(V_008F0C_OOB_SELECT_DISABLED) | S_008F0C_RESOURCE_LEVEL(1);
|
S_008F0C_OOB_SELECT(V_008F0C_OOB_SELECT_DISABLED) | S_008F0C_RESOURCE_LEVEL(1);
|
||||||
} else {
|
} else {
|
||||||
|
@ -3682,7 +3688,10 @@ radv_fill_shader_rings(struct radv_queue *queue, uint32_t *map, bool add_sample_
|
||||||
desc[3] = S_008F0C_DST_SEL_X(V_008F0C_SQ_SEL_X) | S_008F0C_DST_SEL_Y(V_008F0C_SQ_SEL_Y) |
|
desc[3] = S_008F0C_DST_SEL_X(V_008F0C_SQ_SEL_X) | S_008F0C_DST_SEL_Y(V_008F0C_SQ_SEL_Y) |
|
||||||
S_008F0C_DST_SEL_Z(V_008F0C_SQ_SEL_Z) | S_008F0C_DST_SEL_W(V_008F0C_SQ_SEL_W);
|
S_008F0C_DST_SEL_Z(V_008F0C_SQ_SEL_Z) | S_008F0C_DST_SEL_W(V_008F0C_SQ_SEL_W);
|
||||||
|
|
||||||
if (queue->device->physical_device->rad_info.gfx_level >= GFX10) {
|
if (queue->device->physical_device->rad_info.gfx_level >= GFX11) {
|
||||||
|
desc[3] |= S_008F0C_FORMAT(V_008F0C_GFX11_FORMAT_32_FLOAT) |
|
||||||
|
S_008F0C_OOB_SELECT(V_008F0C_OOB_SELECT_DISABLED);
|
||||||
|
} else if (queue->device->physical_device->rad_info.gfx_level >= GFX10) {
|
||||||
desc[3] |= S_008F0C_FORMAT(V_008F0C_GFX10_FORMAT_32_FLOAT) |
|
desc[3] |= S_008F0C_FORMAT(V_008F0C_GFX10_FORMAT_32_FLOAT) |
|
||||||
S_008F0C_OOB_SELECT(V_008F0C_OOB_SELECT_DISABLED) | S_008F0C_RESOURCE_LEVEL(1);
|
S_008F0C_OOB_SELECT(V_008F0C_OOB_SELECT_DISABLED) | S_008F0C_RESOURCE_LEVEL(1);
|
||||||
} else {
|
} else {
|
||||||
|
@ -3705,7 +3714,10 @@ radv_fill_shader_rings(struct radv_queue *queue, uint32_t *map, bool add_sample_
|
||||||
else
|
else
|
||||||
desc[5] |= S_008F04_SWIZZLE_ENABLE_GFX6(1);
|
desc[5] |= S_008F04_SWIZZLE_ENABLE_GFX6(1);
|
||||||
|
|
||||||
if (queue->device->physical_device->rad_info.gfx_level >= GFX10) {
|
if (queue->device->physical_device->rad_info.gfx_level >= GFX11) {
|
||||||
|
desc[7] |= S_008F0C_FORMAT(V_008F0C_GFX11_FORMAT_32_FLOAT) |
|
||||||
|
S_008F0C_OOB_SELECT(V_008F0C_OOB_SELECT_DISABLED);
|
||||||
|
} else if (queue->device->physical_device->rad_info.gfx_level >= GFX10) {
|
||||||
desc[7] |= S_008F0C_FORMAT(V_008F0C_GFX10_FORMAT_32_FLOAT) |
|
desc[7] |= S_008F0C_FORMAT(V_008F0C_GFX10_FORMAT_32_FLOAT) |
|
||||||
S_008F0C_OOB_SELECT(V_008F0C_OOB_SELECT_DISABLED) | S_008F0C_RESOURCE_LEVEL(1);
|
S_008F0C_OOB_SELECT(V_008F0C_OOB_SELECT_DISABLED) | S_008F0C_RESOURCE_LEVEL(1);
|
||||||
} else {
|
} else {
|
||||||
|
@ -3726,7 +3738,10 @@ radv_fill_shader_rings(struct radv_queue *queue, uint32_t *map, bool add_sample_
|
||||||
desc[3] = S_008F0C_DST_SEL_X(V_008F0C_SQ_SEL_X) | S_008F0C_DST_SEL_Y(V_008F0C_SQ_SEL_Y) |
|
desc[3] = S_008F0C_DST_SEL_X(V_008F0C_SQ_SEL_X) | S_008F0C_DST_SEL_Y(V_008F0C_SQ_SEL_Y) |
|
||||||
S_008F0C_DST_SEL_Z(V_008F0C_SQ_SEL_Z) | S_008F0C_DST_SEL_W(V_008F0C_SQ_SEL_W);
|
S_008F0C_DST_SEL_Z(V_008F0C_SQ_SEL_Z) | S_008F0C_DST_SEL_W(V_008F0C_SQ_SEL_W);
|
||||||
|
|
||||||
if (queue->device->physical_device->rad_info.gfx_level >= GFX10) {
|
if (queue->device->physical_device->rad_info.gfx_level >= GFX11) {
|
||||||
|
desc[3] |= S_008F0C_FORMAT(V_008F0C_GFX11_FORMAT_32_FLOAT) |
|
||||||
|
S_008F0C_OOB_SELECT(V_008F0C_OOB_SELECT_RAW);
|
||||||
|
} else if (queue->device->physical_device->rad_info.gfx_level >= GFX10) {
|
||||||
desc[3] |= S_008F0C_FORMAT(V_008F0C_GFX10_FORMAT_32_FLOAT) |
|
desc[3] |= S_008F0C_FORMAT(V_008F0C_GFX10_FORMAT_32_FLOAT) |
|
||||||
S_008F0C_OOB_SELECT(V_008F0C_OOB_SELECT_RAW) | S_008F0C_RESOURCE_LEVEL(1);
|
S_008F0C_OOB_SELECT(V_008F0C_OOB_SELECT_RAW) | S_008F0C_RESOURCE_LEVEL(1);
|
||||||
} else {
|
} else {
|
||||||
|
@ -3740,7 +3755,10 @@ radv_fill_shader_rings(struct radv_queue *queue, uint32_t *map, bool add_sample_
|
||||||
desc[7] = S_008F0C_DST_SEL_X(V_008F0C_SQ_SEL_X) | S_008F0C_DST_SEL_Y(V_008F0C_SQ_SEL_Y) |
|
desc[7] = S_008F0C_DST_SEL_X(V_008F0C_SQ_SEL_X) | S_008F0C_DST_SEL_Y(V_008F0C_SQ_SEL_Y) |
|
||||||
S_008F0C_DST_SEL_Z(V_008F0C_SQ_SEL_Z) | S_008F0C_DST_SEL_W(V_008F0C_SQ_SEL_W);
|
S_008F0C_DST_SEL_Z(V_008F0C_SQ_SEL_Z) | S_008F0C_DST_SEL_W(V_008F0C_SQ_SEL_W);
|
||||||
|
|
||||||
if (queue->device->physical_device->rad_info.gfx_level >= GFX10) {
|
if (queue->device->physical_device->rad_info.gfx_level >= GFX11) {
|
||||||
|
desc[7] |= S_008F0C_FORMAT(V_008F0C_GFX11_FORMAT_32_FLOAT) |
|
||||||
|
S_008F0C_OOB_SELECT(V_008F0C_OOB_SELECT_RAW);
|
||||||
|
} else if (queue->device->physical_device->rad_info.gfx_level >= GFX10) {
|
||||||
desc[7] |= S_008F0C_FORMAT(V_008F0C_GFX10_FORMAT_32_FLOAT) |
|
desc[7] |= S_008F0C_FORMAT(V_008F0C_GFX10_FORMAT_32_FLOAT) |
|
||||||
S_008F0C_OOB_SELECT(V_008F0C_OOB_SELECT_RAW) | S_008F0C_RESOURCE_LEVEL(1);
|
S_008F0C_OOB_SELECT(V_008F0C_OOB_SELECT_RAW) | S_008F0C_RESOURCE_LEVEL(1);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -748,7 +748,7 @@ radv_make_buffer_descriptor(struct radv_device *device, struct radv_buffer *buff
|
||||||
*/
|
*/
|
||||||
state[3] |= S_008F0C_FORMAT(fmt->img_format) |
|
state[3] |= S_008F0C_FORMAT(fmt->img_format) |
|
||||||
S_008F0C_OOB_SELECT(V_008F0C_OOB_SELECT_STRUCTURED_WITH_OFFSET) |
|
S_008F0C_OOB_SELECT(V_008F0C_OOB_SELECT_STRUCTURED_WITH_OFFSET) |
|
||||||
S_008F0C_RESOURCE_LEVEL(1);
|
S_008F0C_RESOURCE_LEVEL(device->physical_device->rad_info.gfx_level < GFX11);
|
||||||
} else {
|
} else {
|
||||||
num_format = radv_translate_buffer_numformat(desc, first_non_void);
|
num_format = radv_translate_buffer_numformat(desc, first_non_void);
|
||||||
data_format = radv_translate_buffer_dataformat(desc, first_non_void);
|
data_format = radv_translate_buffer_dataformat(desc, first_non_void);
|
||||||
|
|
|
@ -161,7 +161,10 @@ load_inline_buffer_descriptor(nir_builder *b, apply_layout_state *state, nir_ssa
|
||||||
uint32_t desc_type =
|
uint32_t desc_type =
|
||||||
S_008F0C_DST_SEL_X(V_008F0C_SQ_SEL_X) | S_008F0C_DST_SEL_Y(V_008F0C_SQ_SEL_Y) |
|
S_008F0C_DST_SEL_X(V_008F0C_SQ_SEL_X) | S_008F0C_DST_SEL_Y(V_008F0C_SQ_SEL_Y) |
|
||||||
S_008F0C_DST_SEL_Z(V_008F0C_SQ_SEL_Z) | S_008F0C_DST_SEL_W(V_008F0C_SQ_SEL_W);
|
S_008F0C_DST_SEL_Z(V_008F0C_SQ_SEL_Z) | S_008F0C_DST_SEL_W(V_008F0C_SQ_SEL_W);
|
||||||
if (state->gfx_level >= GFX10) {
|
if (state->gfx_level >= GFX11) {
|
||||||
|
desc_type |= S_008F0C_FORMAT(V_008F0C_GFX11_FORMAT_32_FLOAT) |
|
||||||
|
S_008F0C_OOB_SELECT(V_008F0C_OOB_SELECT_RAW);
|
||||||
|
} else if (state->gfx_level >= GFX10) {
|
||||||
desc_type |= S_008F0C_FORMAT(V_008F0C_GFX10_FORMAT_32_FLOAT) |
|
desc_type |= S_008F0C_FORMAT(V_008F0C_GFX10_FORMAT_32_FLOAT) |
|
||||||
S_008F0C_OOB_SELECT(V_008F0C_OOB_SELECT_RAW) | S_008F0C_RESOURCE_LEVEL(1);
|
S_008F0C_OOB_SELECT(V_008F0C_OOB_SELECT_RAW) | S_008F0C_RESOURCE_LEVEL(1);
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in New Issue