mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-28 12:30:09 +01:00
anv: Implement write_buffer_cp callback
Rework: (Kevin) - Fix pointer arithmatic calculation. - Add assertion for a 4B alignment Co-authored-by: Kevin Chuang <kaiwenjon23@gmail.com> Co-authored-by: Sagar Ghuge <sagar.ghuge@intel.com> Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31588>
This commit is contained in:
parent
8817ff26fc
commit
b2cffdb1ed
4 changed files with 44 additions and 0 deletions
|
|
@ -1544,3 +1544,14 @@ anv_cmd_buffer_restore_state(struct anv_cmd_buffer *cmd_buffer,
|
|||
anv_CmdPushConstants2KHR(cmd_buffer_, &push_info);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
anv_cmd_write_buffer_cp(VkCommandBuffer commandBuffer,
|
||||
VkDeviceAddress dstAddr,
|
||||
void *data,
|
||||
uint32_t size)
|
||||
{
|
||||
ANV_FROM_HANDLE(anv_cmd_buffer, cmd_buffer, commandBuffer);
|
||||
anv_genX(cmd_buffer->device->info, cmd_write_buffer_cp)(cmd_buffer, dstAddr,
|
||||
data, size);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -345,6 +345,10 @@ genX(cmd_buffer_begin_companion_rcs_syncpoint)(struct anv_cmd_buffer *cmd_buffer
|
|||
void
|
||||
genX(cmd_buffer_end_companion_rcs_syncpoint)(struct anv_cmd_buffer *cmd_buffer,
|
||||
struct anv_state syncpoint);
|
||||
void
|
||||
genX(cmd_write_buffer_cp)(struct anv_cmd_buffer *cmd_buffer,
|
||||
VkDeviceAddress dstAddr,
|
||||
void *data, uint32_t size);
|
||||
|
||||
void
|
||||
genX(emit_simple_shader_init)(struct anv_simple_shader *state);
|
||||
|
|
|
|||
|
|
@ -5905,6 +5905,11 @@ anv_cmd_buffer_update_addr(struct anv_cmd_buffer *cmd_buffer,
|
|||
VkDeviceSize dataSize,
|
||||
const void* pData,
|
||||
bool is_protected);
|
||||
void
|
||||
anv_cmd_write_buffer_cp(VkCommandBuffer cmd_buffer,
|
||||
VkDeviceAddress dstAddr,
|
||||
void *data,
|
||||
uint32_t size);
|
||||
|
||||
VkResult
|
||||
anv_cmd_buffer_ensure_rcs_companion(struct anv_cmd_buffer *cmd_buffer);
|
||||
|
|
|
|||
|
|
@ -6692,3 +6692,27 @@ genX(CmdWriteBufferMarker2AMD)(VkCommandBuffer commandBuffer,
|
|||
|
||||
trace_intel_end_write_buffer_marker(&cmd_buffer->trace);
|
||||
}
|
||||
|
||||
void
|
||||
genX(cmd_write_buffer_cp)(struct anv_cmd_buffer *cmd_buffer,
|
||||
VkDeviceAddress dstAddr,
|
||||
void *data,
|
||||
uint32_t size)
|
||||
{
|
||||
assert(size % 4 == 0);
|
||||
struct anv_address addr = anv_address_from_u64(dstAddr);
|
||||
|
||||
struct mi_builder b;
|
||||
mi_builder_init(&b, cmd_buffer->device->info, &cmd_buffer->batch);
|
||||
|
||||
for (uint32_t i = 0; i < size; i += 8) {
|
||||
mi_builder_set_write_check(&b, i >= size - 8);
|
||||
if (size - i < 8) {
|
||||
mi_store(&b, mi_mem32(anv_address_add(addr, i)),
|
||||
mi_imm(*((uint32_t *)((char*)data + i))));
|
||||
} else {
|
||||
mi_store(&b, mi_mem64(anv_address_add(addr, i)),
|
||||
mi_imm(*((uint64_t *)((char*)data + i))));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue