mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 21:50:12 +01:00
tu: Implement buffer_write_cp
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28447>
This commit is contained in:
parent
7073a8d458
commit
24a1d54502
3 changed files with 34 additions and 0 deletions
|
|
@ -7260,3 +7260,29 @@ tu_CmdWriteBufferMarker2AMD(VkCommandBuffer commandBuffer,
|
|||
tu_flush_for_access(cache, TU_ACCESS_CP_WRITE, TU_ACCESS_NONE);
|
||||
}
|
||||
TU_GENX(tu_CmdWriteBufferMarker2AMD);
|
||||
|
||||
void
|
||||
tu_write_buffer_cp(VkCommandBuffer commandBuffer,
|
||||
VkDeviceAddress addr,
|
||||
void *data, uint32_t size)
|
||||
{
|
||||
VK_FROM_HANDLE(tu_cmd_buffer, cmd, commandBuffer);
|
||||
|
||||
TU_CALLX(cmd->device, tu_emit_cache_flush)(cmd);
|
||||
|
||||
struct tu_cs *cs = &cmd->cs;
|
||||
|
||||
tu_cs_emit_pkt7(cs, CP_MEM_WRITE, 2 + size / 4);
|
||||
tu_cs_emit_qw(cs, addr);
|
||||
tu_cs_emit_array(cs, (uint32_t *)data, size / 4);
|
||||
}
|
||||
|
||||
void
|
||||
tu_flush_buffer_write_cp(VkCommandBuffer commandBuffer)
|
||||
{
|
||||
VK_FROM_HANDLE(tu_cmd_buffer, cmd, commandBuffer);
|
||||
|
||||
struct tu_cache_state *cache = &cmd->state.cache;
|
||||
tu_flush_for_access(cache, TU_ACCESS_CP_WRITE, (enum tu_cmd_access_mask)0);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -683,6 +683,12 @@ tu_restore_suspended_pass(struct tu_cmd_buffer *cmd,
|
|||
template <chip CHIP>
|
||||
void tu_cmd_render(struct tu_cmd_buffer *cmd);
|
||||
|
||||
void tu_write_buffer_cp(VkCommandBuffer commandBuffer,
|
||||
VkDeviceAddress addr,
|
||||
void *data, uint32_t size);
|
||||
|
||||
void tu_flush_buffer_write_cp(VkCommandBuffer commandBuffer);
|
||||
|
||||
enum fd_gpu_event : uint32_t;
|
||||
|
||||
template <chip CHIP>
|
||||
|
|
|
|||
|
|
@ -2707,6 +2707,8 @@ tu_CreateDevice(VkPhysicalDevice physicalDevice,
|
|||
fd_rd_output_init(&device->rd_output, output_name);
|
||||
}
|
||||
|
||||
device->vk.write_buffer_cp = tu_write_buffer_cp;
|
||||
device->vk.flush_buffer_write_cp = tu_flush_buffer_write_cp;
|
||||
device->vk.cmd_fill_buffer_addr = tu_cmd_fill_buffer_addr;
|
||||
|
||||
*pDevice = tu_device_to_handle(device);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue