dzn: Cache GPUVA for buffers

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20919>
This commit is contained in:
Jesse Natalie
2023-01-25 09:03:52 -08:00
committed by Marge Bot
parent 34f372c47c
commit f391c2db62
4 changed files with 6 additions and 3 deletions

View File

@@ -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:

View File

@@ -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);

View File

@@ -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;

View File

@@ -1031,6 +1031,7 @@ struct dzn_buffer {
VkBufferUsageFlags usage;
D3D12_BARRIER_ACCESS valid_access;
D3D12_GPU_VIRTUAL_ADDRESS gpuva;
};
DXGI_FORMAT