|
|
|
@@ -1,4 +1,6 @@ |
|
|
|
#include "tu_private.h" |
|
|
|
#include "tu_blit.h" |
|
|
|
#include "tu_cs.h" |
|
|
|
|
|
|
|
void |
|
|
|
tu_CmdFillBuffer(VkCommandBuffer commandBuffer, |
|
|
|
@@ -7,6 +9,27 @@ tu_CmdFillBuffer(VkCommandBuffer commandBuffer, |
|
|
|
VkDeviceSize fillSize, |
|
|
|
uint32_t data) |
|
|
|
{ |
|
|
|
TU_FROM_HANDLE(tu_cmd_buffer, cmd, commandBuffer); |
|
|
|
TU_FROM_HANDLE(tu_buffer, buffer, dstBuffer); |
|
|
|
|
|
|
|
if (fillSize == VK_WHOLE_SIZE) |
|
|
|
fillSize = buffer->size - dstOffset; |
|
|
|
|
|
|
|
tu_bo_list_add(&cmd->bo_list, buffer->bo, MSM_SUBMIT_BO_WRITE); |
|
|
|
|
|
|
|
tu_blit(cmd, &(struct tu_blit) { |
|
|
|
.dst = { |
|
|
|
.fmt = VK_FORMAT_R32_UINT, |
|
|
|
.va = tu_buffer_iova(buffer) + dstOffset, |
|
|
|
.width = fillSize / 4, |
|
|
|
.height = 1, |
|
|
|
.samples = 1, |
|
|
|
}, |
|
|
|
.layers = 1, |
|
|
|
.clear_value[0] = data, |
|
|
|
.type = TU_BLIT_CLEAR, |
|
|
|
.buffer = true, |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
void |
|
|
|
@@ -16,4 +39,37 @@ tu_CmdUpdateBuffer(VkCommandBuffer commandBuffer, |
|
|
|
VkDeviceSize dataSize, |
|
|
|
const void *pData) |
|
|
|
{ |
|
|
|
TU_FROM_HANDLE(tu_cmd_buffer, cmd, commandBuffer); |
|
|
|
TU_FROM_HANDLE(tu_buffer, buffer, dstBuffer); |
|
|
|
|
|
|
|
tu_bo_list_add(&cmd->bo_list, buffer->bo, MSM_SUBMIT_BO_WRITE); |
|
|
|
|
|
|
|
struct ts_cs_memory tmp; |
|
|
|
VkResult result = tu_cs_alloc(cmd->device, &cmd->sub_cs, DIV_ROUND_UP(dataSize, 64), 64, &tmp); |
|
|
|
if (result != VK_SUCCESS) { |
|
|
|
cmd->record_result = result; |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
memcpy(tmp.map, pData, dataSize); |
|
|
|
|
|
|
|
tu_blit(cmd, &(struct tu_blit) { |
|
|
|
.dst = { |
|
|
|
.fmt = VK_FORMAT_R32_UINT, |
|
|
|
.va = tu_buffer_iova(buffer) + dstOffset, |
|
|
|
.width = dataSize / 4, |
|
|
|
.height = 1, |
|
|
|
.samples = 1, |
|
|
|
}, |
|
|
|
.src = { |
|
|
|
.fmt = VK_FORMAT_R32_UINT, |
|
|
|
.va = tmp.iova, |
|
|
|
.width = dataSize / 4, |
|
|
|
.height = 1, |
|
|
|
.samples = 1, |
|
|
|
}, |
|
|
|
.layers = 1, |
|
|
|
.type = TU_BLIT_COPY, |
|
|
|
.buffer = true, |
|
|
|
}); |
|
|
|
} |