dzn: Cache GPUVA for buffers
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20919>
This commit is contained in:
@@ -4993,7 +4993,7 @@ dzn_CmdBindVertexBuffers(VkCommandBuffer commandBuffer,
|
||||
for (uint32_t i = 0; i < bindingCount; i++) {
|
||||
VK_FROM_HANDLE(dzn_buffer, buf, pBuffers[i]);
|
||||
|
||||
vbviews[firstBinding + i].BufferLocation = ID3D12Resource_GetGPUVirtualAddress(buf->res) + pOffsets[i];
|
||||
vbviews[firstBinding + i].BufferLocation = buf->gpuva + pOffsets[i];
|
||||
vbviews[firstBinding + i].SizeInBytes = buf->size - pOffsets[i];
|
||||
}
|
||||
|
||||
@@ -5010,7 +5010,7 @@ dzn_CmdBindIndexBuffer(VkCommandBuffer commandBuffer,
|
||||
VK_FROM_HANDLE(dzn_cmd_buffer, cmdbuf, commandBuffer);
|
||||
VK_FROM_HANDLE(dzn_buffer, buf, buffer);
|
||||
|
||||
cmdbuf->state.ib.view.BufferLocation = ID3D12Resource_GetGPUVirtualAddress(buf->res) + offset;
|
||||
cmdbuf->state.ib.view.BufferLocation = buf->gpuva + offset;
|
||||
cmdbuf->state.ib.view.SizeInBytes = buf->size - offset;
|
||||
switch (indexType) {
|
||||
case VK_INDEX_TYPE_UINT16:
|
||||
|
@@ -985,7 +985,7 @@ dzn_descriptor_heap_write_buffer_desc(struct dzn_descriptor_heap *heap,
|
||||
info->type == VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC) {
|
||||
assert(!writeable);
|
||||
D3D12_CONSTANT_BUFFER_VIEW_DESC cbv_desc = {
|
||||
.BufferLocation = ID3D12Resource_GetGPUVirtualAddress(info->buffer->res) + info->offset,
|
||||
.BufferLocation = info->buffer->gpuva + info->offset,
|
||||
.SizeInBytes = ALIGN_POT(size, 256),
|
||||
};
|
||||
ID3D12Device1_CreateConstantBufferView(heap->dev, &cbv_desc, view_handle);
|
||||
|
@@ -2923,6 +2923,8 @@ dzn_BindBufferMemory2(VkDevice _device,
|
||||
&IID_ID3D12Resource,
|
||||
(void **)&buffer->res)))
|
||||
return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY);
|
||||
|
||||
buffer->gpuva = ID3D12Resource_GetGPUVirtualAddress(buffer->res);
|
||||
}
|
||||
|
||||
return VK_SUCCESS;
|
||||
|
@@ -1031,6 +1031,7 @@ struct dzn_buffer {
|
||||
VkBufferUsageFlags usage;
|
||||
|
||||
D3D12_BARRIER_ACCESS valid_access;
|
||||
D3D12_GPU_VIRTUAL_ADDRESS gpuva;
|
||||
};
|
||||
|
||||
DXGI_FORMAT
|
||||
|
Reference in New Issue
Block a user