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);
|
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
|
void
|
||||||
radv_set_descriptor_set(struct radv_cmd_buffer *cmd_buffer, VkPipelineBindPoint bind_point,
|
radv_set_descriptor_set(struct radv_cmd_buffer *cmd_buffer, VkPipelineBindPoint bind_point,
|
||||||
struct radv_descriptor_set *set, unsigned idx)
|
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;
|
struct radv_device *device = cmd_buffer->device;
|
||||||
uint32_t data[MAX_SETS * 2] = {0};
|
uint32_t data[MAX_SETS * 2] = {0};
|
||||||
uint64_t va;
|
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)
|
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);
|
emit_prolog_inputs(cmd_buffer, vs_shader, nontrivial_divisors, pipeline_is_dirty);
|
||||||
|
|
||||||
cmd_buffer->state.emitted_vs_prolog = prolog;
|
cmd_buffer->state.emitted_vs_prolog = prolog;
|
||||||
|
|
||||||
|
if (unlikely(cmd_buffer->device->trace_bo))
|
||||||
|
radv_save_vs_prolog(cmd_buffer, prolog);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@@ -56,9 +56,10 @@
|
|||||||
* [2-3]: 64-bit GFX ring pipeline pointer
|
* [2-3]: 64-bit GFX ring pipeline pointer
|
||||||
* [4-5]: 64-bit COMPUTE ring pipeline pointer
|
* [4-5]: 64-bit COMPUTE ring pipeline pointer
|
||||||
* [6-7]: Vertex descriptors 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
|
bool
|
||||||
@@ -245,7 +246,7 @@ radv_dump_descriptors(struct radv_device *device, FILE *f)
|
|||||||
|
|
||||||
fprintf(f, "Descriptors:\n");
|
fprintf(f, "Descriptors:\n");
|
||||||
for (i = 0; i < MAX_SETS; i++) {
|
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);
|
radv_dump_descriptor_set(device, set, i, f);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user