radv: save the vertex prolog to the trace BO for debugging
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Rhys Perry <pendingchaos02@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13376>
This commit is contained in:

committed by
Marge Bot

parent
2bf25e6f6e
commit
d659c2ef9c
@@ -758,6 +758,23 @@ radv_save_vertex_descriptors(struct radv_cmd_buffer *cmd_buffer, uint64_t vb_ptr
|
||||
radv_emit_write_data_packet(cmd_buffer, V_370_ME, va, 2, data);
|
||||
}
|
||||
|
||||
static void
|
||||
radv_save_vs_prolog(struct radv_cmd_buffer *cmd_buffer, const struct radv_shader_prolog *prolog)
|
||||
{
|
||||
struct radv_device *device = cmd_buffer->device;
|
||||
uint32_t data[2];
|
||||
uint64_t va;
|
||||
|
||||
va = radv_buffer_get_va(device->trace_bo);
|
||||
va += 32;
|
||||
|
||||
uint64_t prolog_address = (uintptr_t)prolog;
|
||||
data[0] = prolog_address;
|
||||
data[1] = prolog_address >> 32;
|
||||
|
||||
radv_emit_write_data_packet(cmd_buffer, V_370_ME, va, 2, data);
|
||||
}
|
||||
|
||||
void
|
||||
radv_set_descriptor_set(struct radv_cmd_buffer *cmd_buffer, VkPipelineBindPoint bind_point,
|
||||
struct radv_descriptor_set *set, unsigned idx)
|
||||
@@ -779,7 +796,7 @@ radv_save_descriptors(struct radv_cmd_buffer *cmd_buffer, VkPipelineBindPoint bi
|
||||
struct radv_device *device = cmd_buffer->device;
|
||||
uint32_t data[MAX_SETS * 2] = {0};
|
||||
uint64_t va;
|
||||
va = radv_buffer_get_va(device->trace_bo) + 32;
|
||||
va = radv_buffer_get_va(device->trace_bo) + 40;
|
||||
|
||||
u_foreach_bit(i, descriptors_state->valid)
|
||||
{
|
||||
@@ -3006,6 +3023,9 @@ radv_emit_vertex_input(struct radv_cmd_buffer *cmd_buffer, bool pipeline_is_dirt
|
||||
emit_prolog_inputs(cmd_buffer, vs_shader, nontrivial_divisors, pipeline_is_dirty);
|
||||
|
||||
cmd_buffer->state.emitted_vs_prolog = prolog;
|
||||
|
||||
if (unlikely(cmd_buffer->device->trace_bo))
|
||||
radv_save_vs_prolog(cmd_buffer, prolog);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@@ -56,9 +56,10 @@
|
||||
* [2-3]: 64-bit GFX ring pipeline pointer
|
||||
* [4-5]: 64-bit COMPUTE ring pipeline pointer
|
||||
* [6-7]: Vertex descriptors pointer
|
||||
* [8-9]: 64-bit descriptor set #0 pointer
|
||||
* [8-9]: 64-bit Vertex prolog pointer
|
||||
* [10-11]: 64-bit descriptor set #0 pointer
|
||||
* ...
|
||||
* [68-69]: 64-bit descriptor set #31 pointer
|
||||
* [72-73]: 64-bit descriptor set #31 pointer
|
||||
*/
|
||||
|
||||
bool
|
||||
@@ -245,7 +246,7 @@ radv_dump_descriptors(struct radv_device *device, FILE *f)
|
||||
|
||||
fprintf(f, "Descriptors:\n");
|
||||
for (i = 0; i < MAX_SETS; i++) {
|
||||
struct radv_descriptor_set *set = *(struct radv_descriptor_set **)(ptr + i + 4);
|
||||
struct radv_descriptor_set *set = *(struct radv_descriptor_set **)(ptr + i + 5);
|
||||
|
||||
radv_dump_descriptor_set(device, set, i, f);
|
||||
}
|
||||
|
Reference in New Issue
Block a user