radv: use radv_buffer::addr more

And remove radv_buffer:offset.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33475>
This commit is contained in:
Samuel Pitoiset 2025-02-10 10:34:10 +01:00 committed by Marge Bot
parent d92153e998
commit 8df1ffaa78
13 changed files with 39 additions and 53 deletions

View file

@ -301,8 +301,7 @@ radv_CmdFillBuffer(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSi
fillSize = vk_buffer_range(&dst_buffer->vk, dstOffset, fillSize) & ~3ull;
radv_fill_buffer(cmd_buffer, NULL, dst_buffer->bo,
radv_buffer_get_va(dst_buffer->bo) + dst_buffer->offset + dstOffset, fillSize, data);
radv_fill_buffer(cmd_buffer, NULL, dst_buffer->bo, dst_buffer->addr + dstOffset, fillSize, data);
}
static void
@ -317,8 +316,8 @@ copy_buffer(struct radv_cmd_buffer *cmd_buffer, struct radv_buffer *src_buffer,
old_predicating = cmd_buffer->state.predicating;
cmd_buffer->state.predicating = false;
const uint64_t src_va = radv_buffer_get_va(src_buffer->bo) + src_buffer->offset + region->srcOffset;
const uint64_t dst_va = radv_buffer_get_va(dst_buffer->bo) + dst_buffer->offset + region->dstOffset;
const uint64_t src_va = src_buffer->addr + region->srcOffset;
const uint64_t dst_va = dst_buffer->addr + region->dstOffset;
radv_copy_buffer(cmd_buffer, src_buffer->bo, dst_buffer->bo, src_va, dst_va, region->size);
@ -368,24 +367,23 @@ radv_CmdUpdateBuffer(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDevice
VK_FROM_HANDLE(radv_cmd_buffer, cmd_buffer, commandBuffer);
VK_FROM_HANDLE(radv_buffer, dst_buffer, dstBuffer);
struct radv_device *device = radv_cmd_buffer_device(cmd_buffer);
uint64_t va = radv_buffer_get_va(dst_buffer->bo);
va += dstOffset + dst_buffer->offset;
const uint64_t dst_va = dst_buffer->addr + dstOffset;
assert(!(dataSize & 3));
assert(!(va & 3));
assert(!(dst_va & 3));
if (!dataSize)
return;
if (dataSize < RADV_BUFFER_UPDATE_THRESHOLD && cmd_buffer->qf != RADV_QUEUE_TRANSFER) {
radv_cs_add_buffer(device->ws, cmd_buffer->cs, dst_buffer->bo);
radv_update_buffer_cp(cmd_buffer, va, pData, dataSize);
radv_update_buffer_cp(cmd_buffer, dst_va, pData, dataSize);
} else {
uint32_t buf_offset;
radv_cmd_buffer_upload_data(cmd_buffer, dataSize, pData, &buf_offset);
const uint64_t src_va = radv_buffer_get_va(cmd_buffer->upload.upload_bo) + buf_offset;
radv_copy_buffer(cmd_buffer, cmd_buffer->upload.upload_bo, dst_buffer->bo, src_va, va, dataSize);
radv_copy_buffer(cmd_buffer, cmd_buffer->upload.upload_bo, dst_buffer->bo, src_va, dst_va, dataSize);
}
}

View file

@ -1003,8 +1003,8 @@ fixup_gfx9_cs_copy(struct radv_cmd_buffer *cmd_buffer, const struct radv_meta_bl
struct radeon_winsys_bo *mem_bo = buf_bsurf->buffer->bo;
const uint64_t img_va = radv_buffer_get_va(img_bo) + image->bindings[0].offset + addr;
/* buf_bsurf->offset already includes the layer offset */
const uint64_t mem_va = radv_buffer_get_va(mem_bo) + buf_bsurf->buffer->offset + buf_bsurf->offset +
y * buf_bsurf->pitch * surf->bpe + x * surf->bpe;
const uint64_t mem_va =
buf_bsurf->buffer->addr + buf_bsurf->offset + y * buf_bsurf->pitch * surf->bpe + x * surf->bpe;
if (to_image) {
radv_copy_buffer(cmd_buffer, mem_bo, img_bo, mem_va, img_va, surf->bpe);
} else {

View file

@ -588,8 +588,8 @@ radv_update_as(VkCommandBuffer commandBuffer, const VkAccelerationStructureBuild
radv_get_acceleration_structure_layout(device, leaf_count, build_info, &layout);
/* Copy header/metadata */
const uint64_t src_va = radv_buffer_get_va(src_as_buffer->bo) + src_as_buffer->offset + src->offset;
const uint64_t dst_va = radv_buffer_get_va(dst_as_buffer->bo) + dst_as_buffer->offset + dst->offset;
const uint64_t src_va = src_as_buffer->addr + src->offset;
const uint64_t dst_va = dst_as_buffer->addr + dst->offset;
radv_copy_buffer(cmd_buffer, src_as_buffer->bo, dst_as_buffer->bo, src_va, dst_va, layout.bvh_offset);
}

View file

@ -33,7 +33,6 @@ radv_buffer_init(struct radv_buffer *buffer, struct radv_device *device, struct
vk_buffer_init(&device->vk, &buffer->vk, &createInfo);
buffer->bo = bo;
buffer->offset = offset;
buffer->addr = radv_buffer_get_va(bo) + offset;
}
@ -83,7 +82,6 @@ radv_create_buffer(struct radv_device *device, const VkBufferCreateInfo *pCreate
vk_buffer_init(&device->vk, &buffer->vk, pCreateInfo);
buffer->bo = NULL;
buffer->offset = 0;
buffer->addr = 0;
buffer->range = 0;
@ -175,7 +173,6 @@ radv_BindBufferMemory2(VkDevice _device, uint32_t bindInfoCount, const VkBindBuf
}
buffer->bo = mem->bo;
buffer->offset = pBindInfos[i].memoryOffset;
buffer->addr = radv_buffer_get_va(mem->bo) + pBindInfos[i].memoryOffset;
buffer->range = reqs.memoryRequirements.size;

View file

@ -23,7 +23,6 @@ struct radv_buffer {
/* Set when bound */
struct radeon_winsys_bo *bo;
VkDeviceSize offset;
uint64_t addr;
uint64_t range;
};

View file

@ -62,13 +62,13 @@ radv_buffer_view_init(struct radv_buffer_view *view, struct radv_device *device,
const VkBufferViewCreateInfo *pCreateInfo)
{
VK_FROM_HANDLE(radv_buffer, buffer, pCreateInfo->buffer);
uint64_t va = radv_buffer_get_va(buffer->bo) + buffer->offset;
vk_buffer_view_init(&device->vk, &view->vk, pCreateInfo);
view->bo = buffer->bo;
radv_make_texel_buffer_descriptor(device, va, view->vk.format, view->vk.offset, view->vk.range, view->state);
radv_make_texel_buffer_descriptor(device, buffer->addr, view->vk.format, view->vk.offset, view->vk.range,
view->state);
}
void

View file

@ -5832,7 +5832,7 @@ radv_get_vbo_info(const struct radv_cmd_buffer *cmd_buffer, uint32_t idx, struct
const uint32_t offset = cmd_buffer->vertex_bindings[binding].offset;
vbo_info->va = radv_buffer_get_va(buffer->bo) + buffer->offset + offset;
vbo_info->va = buffer->addr + offset;
if (cmd_buffer->vertex_bindings[binding].size) {
vbo_info->size = cmd_buffer->vertex_bindings[binding].size;
@ -7067,8 +7067,7 @@ radv_CmdBindIndexBuffer2(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDevic
cmd_buffer->state.index_type = vk_to_index_type(indexType);
if (index_buffer) {
cmd_buffer->state.index_va = radv_buffer_get_va(index_buffer->bo);
cmd_buffer->state.index_va += index_buffer->offset + offset;
cmd_buffer->state.index_va = index_buffer->addr + offset;
int index_size = radv_get_vgt_index_size(vk_to_index_type(indexType));
cmd_buffer->state.max_index_count = (vk_buffer_range(&index_buffer->vk, offset, size)) / index_size;
@ -11308,7 +11307,7 @@ radv_CmdDrawIndirect(VkCommandBuffer commandBuffer, VkBuffer _buffer, VkDeviceSi
struct radv_draw_info info;
info.count = drawCount;
info.indirect_va = radv_buffer_get_va(buffer->bo) + buffer->offset + offset;
info.indirect_va = buffer->addr + offset;
info.stride = stride;
info.strmout_va = 0;
info.count_va = 0;
@ -11334,7 +11333,7 @@ radv_CmdDrawIndexedIndirect(VkCommandBuffer commandBuffer, VkBuffer _buffer, VkD
info.indexed = true;
info.count = drawCount;
info.indirect_va = radv_buffer_get_va(buffer->bo) + buffer->offset + offset;
info.indirect_va = buffer->addr + offset;
info.stride = stride;
info.count_va = 0;
info.strmout_va = 0;
@ -11359,8 +11358,8 @@ radv_CmdDrawIndirectCount(VkCommandBuffer commandBuffer, VkBuffer _buffer, VkDev
struct radv_draw_info info;
info.count = maxDrawCount;
info.indirect_va = radv_buffer_get_va(buffer->bo) + buffer->offset + offset;
info.count_va = radv_buffer_get_va(count_buffer->bo) + count_buffer->offset + countBufferOffset;
info.indirect_va = buffer->addr + offset;
info.count_va = count_buffer->addr + countBufferOffset;
info.stride = stride;
info.strmout_va = 0;
info.indexed = false;
@ -11388,8 +11387,8 @@ radv_CmdDrawIndexedIndirectCount(VkCommandBuffer commandBuffer, VkBuffer _buffer
info.indexed = true;
info.count = maxDrawCount;
info.indirect_va = radv_buffer_get_va(buffer->bo) + buffer->offset + offset;
info.count_va = radv_buffer_get_va(count_buffer->bo) + count_buffer->offset + countBufferOffset;
info.indirect_va = buffer->addr + offset;
info.count_va = count_buffer->addr + countBufferOffset;
info.stride = stride;
info.strmout_va = 0;
info.instance_count = 0;
@ -11440,7 +11439,7 @@ radv_CmdDrawMeshTasksIndirectEXT(VkCommandBuffer commandBuffer, VkBuffer _buffer
struct radv_device *device = radv_cmd_buffer_device(cmd_buffer);
struct radv_draw_info info;
info.indirect_va = radv_buffer_get_va(buffer->bo) + buffer->offset + offset;
info.indirect_va = buffer->addr + offset;
info.stride = stride;
info.count = drawCount;
info.strmout_va = 0;
@ -11476,11 +11475,11 @@ radv_CmdDrawMeshTasksIndirectCountEXT(VkCommandBuffer commandBuffer, VkBuffer _b
const struct radv_physical_device *pdev = radv_device_physical(device);
struct radv_draw_info info;
info.indirect_va = radv_buffer_get_va(buffer->bo) + buffer->offset + offset;
info.indirect_va = buffer->addr + offset;
info.stride = stride;
info.count = maxDrawCount;
info.strmout_va = 0;
info.count_va = radv_buffer_get_va(count_buffer->bo) + count_buffer->offset + countBufferOffset;
info.count_va = count_buffer->addr + countBufferOffset;
info.indexed = false;
info.instance_count = 0;
@ -12137,7 +12136,7 @@ radv_CmdDispatchIndirect(VkCommandBuffer commandBuffer, VkBuffer _buffer, VkDevi
{
VK_FROM_HANDLE(radv_cmd_buffer, cmd_buffer, commandBuffer);
VK_FROM_HANDLE(radv_buffer, buffer, _buffer);
const uint64_t va = radv_buffer_get_va(buffer->bo) + buffer->offset + offset;
const uint64_t va = buffer->addr + offset;
radv_indirect_dispatch(cmd_buffer, buffer->bo, va);
}
@ -13218,7 +13217,7 @@ radv_CmdBeginConditionalRenderingEXT(VkCommandBuffer commandBuffer,
bool draw_visible = true;
uint64_t va;
va = radv_buffer_get_va(buffer->bo) + buffer->offset + pConditionalRenderingBegin->offset;
va = buffer->addr + pConditionalRenderingBegin->offset;
radv_cs_add_buffer(device->ws, cmd_buffer->cs, buffer->bo);
@ -13258,7 +13257,7 @@ radv_CmdBindTransformFeedbackBuffersEXT(VkCommandBuffer commandBuffer, uint32_t
VK_FROM_HANDLE(radv_buffer, buffer, pBuffers[i]);
uint32_t idx = firstBinding + i;
sb[idx].va = radv_buffer_get_va(buffer->bo) + buffer->offset + pOffsets[i];
sb[idx].va = buffer->addr + pOffsets[i];
if (!pSizes || pSizes[i] == VK_WHOLE_SIZE) {
sb[idx].size = buffer->vk.size - pOffsets[i];
@ -13418,8 +13417,7 @@ radv_CmdBeginTransformFeedbackEXT(VkCommandBuffer commandBuffer, uint32_t firstC
if (pCounterBufferOffsets)
counter_buffer_offset = pCounterBufferOffsets[counter_buffer_idx];
va += radv_buffer_get_va(buffer->bo);
va += buffer->offset + counter_buffer_offset;
va += buffer->addr + counter_buffer_offset;
radv_cs_add_buffer(device->ws, cs, buffer->bo);
}
@ -13528,8 +13526,7 @@ radv_CmdEndTransformFeedbackEXT(VkCommandBuffer commandBuffer, uint32_t firstCou
if (pCounterBufferOffsets)
counter_buffer_offset = pCounterBufferOffsets[counter_buffer_idx];
va += radv_buffer_get_va(buffer->bo);
va += buffer->offset + counter_buffer_offset;
va += buffer->addr + counter_buffer_offset;
radv_cs_add_buffer(device->ws, cs, buffer->bo);
}
@ -13631,7 +13628,7 @@ radv_CmdDrawIndirectByteCountEXT(VkCommandBuffer commandBuffer, uint32_t instanc
info.count = 0;
info.instance_count = instanceCount;
info.first_instance = firstInstance;
info.strmout_va = radv_buffer_get_va(counterBuffer->bo) + counterBuffer->offset + counterBufferOffset;
info.strmout_va = counterBuffer->addr + counterBufferOffset;
info.stride = vertexStride;
info.indexed = false;
info.indirect_va = 0;
@ -13665,7 +13662,7 @@ radv_CmdWriteBufferMarker2AMD(VkCommandBuffer commandBuffer, VkPipelineStageFlag
struct radv_device *device = radv_cmd_buffer_device(cmd_buffer);
const struct radv_physical_device *pdev = radv_device_physical(device);
struct radeon_cmdbuf *cs = cmd_buffer->cs;
const uint64_t va = radv_buffer_get_va(buffer->bo) + buffer->offset + dstOffset;
const uint64_t va = buffer->addr + dstOffset;
radv_cs_add_buffer(device->ws, cs, buffer->bo);

View file

@ -1090,7 +1090,7 @@ write_buffer_descriptor_impl(struct radv_device *device, struct radv_cmd_buffer
uint64_t va = 0, range = 0;
if (buffer) {
va = radv_buffer_get_va(buffer->bo) + buffer_info->offset + buffer->offset;
va = buffer->addr + buffer_info->offset;
range = vk_buffer_range(&buffer->vk, buffer_info->offset, buffer_info->range);
assert(buffer->vk.size > 0 && range > 0);
@ -1128,7 +1128,6 @@ write_dynamic_buffer_descriptor(struct radv_device *device, struct radv_descript
struct radeon_winsys_bo **buffer_list, const VkDescriptorBufferInfo *buffer_info)
{
VK_FROM_HANDLE(radv_buffer, buffer, buffer_info->buffer);
uint64_t va;
unsigned size;
if (!buffer) {
@ -1137,8 +1136,6 @@ write_dynamic_buffer_descriptor(struct radv_device *device, struct radv_descript
return;
}
va = radv_buffer_get_va(buffer->bo);
size = vk_buffer_range(&buffer->vk, buffer_info->offset, buffer_info->range);
assert(buffer->vk.size > 0 && size > 0);
@ -1148,8 +1145,7 @@ write_dynamic_buffer_descriptor(struct radv_device *device, struct radv_descript
* buffer accesses. */
size = align(size, 4);
va += buffer_info->offset + buffer->offset;
range->va = va;
range->va = buffer->addr + buffer_info->offset;
range->size = size;
*buffer_list = buffer->bo;

View file

@ -2453,7 +2453,7 @@ radv_CmdCopyQueryPoolResults(VkCommandBuffer commandBuffer, VkQueryPool queryPoo
struct radv_device *device = radv_cmd_buffer_device(cmd_buffer);
const struct radv_physical_device *pdev = radv_device_physical(device);
const struct radv_instance *instance = radv_physical_device_instance(pdev);
const uint64_t dst_va = radv_buffer_get_va(dst_buffer->bo) + dst_buffer->offset + dstOffset;
const uint64_t dst_va = dst_buffer->addr + dstOffset;
if (!queryCount)
return;

View file

@ -554,8 +554,7 @@ radv_rmv_log_buffer_bind(struct radv_device *device, VkBuffer _buffer)
VK_FROM_HANDLE(radv_buffer, buffer, _buffer);
simple_mtx_lock(&device->vk.memory_trace_data.token_mtx);
log_resource_bind_locked(device, (uint64_t)_buffer, buffer->bo->initial_domain,
radv_buffer_get_va(buffer->bo) + buffer->offset, buffer->vk.size);
log_resource_bind_locked(device, (uint64_t)_buffer, buffer->bo->initial_domain, buffer->addr, buffer->vk.size);
simple_mtx_unlock(&device->vk.memory_trace_data.token_mtx);
}

View file

@ -179,7 +179,7 @@ radv_sdma_get_buf_surf(const struct radv_buffer *const buffer, const struct radv
const uint32_t bpe = radv_sdma_get_bpe(image, region->imageSubresource.aspectMask);
const struct radv_sdma_surf info = {
.va = radv_buffer_get_va(buffer->bo) + buffer->offset + region->bufferOffset,
.va = buffer->addr + region->bufferOffset,
.pitch = pitch,
.slice_pitch = slice_pitch,
.bpp = bpe,

View file

@ -2682,7 +2682,7 @@ radv_uvd_decode_video(struct radv_cmd_buffer *cmd_buffer, const VkVideoDecodeInf
radv_buffer_get_va(vid->ctx.mem->bo) + vid->ctx.offset);
send_cmd(cmd_buffer, RDECODE_CMD_BITSTREAM_BUFFER, src_buffer->bo,
radv_buffer_get_va(src_buffer->bo) + src_buffer->offset + frame_info->srcBufferOffset + slice_offset);
src_buffer->addr + frame_info->srcBufferOffset + slice_offset);
struct radv_image_view *dst_iv = radv_image_view_from_handle(frame_info->dstPictureResource.imageViewBinding);
struct radv_image *img = dst_iv->image;
@ -2767,7 +2767,7 @@ radv_vcn_decode_video(struct radv_cmd_buffer *cmd_buffer, const VkVideoDecodeInf
radv_buffer_get_va(vid->ctx.mem->bo) + vid->ctx.offset);
send_cmd(cmd_buffer, RDECODE_CMD_BITSTREAM_BUFFER, src_buffer->bo,
radv_buffer_get_va(src_buffer->bo) + src_buffer->offset + frame_info->srcBufferOffset + slice_offset);
src_buffer->addr + frame_info->srcBufferOffset + slice_offset);
struct radv_image_view *dst_iv = radv_image_view_from_handle(frame_info->dstPictureResource.imageViewBinding);
struct radv_image *img = dst_iv->image;

View file

@ -1327,7 +1327,7 @@ radv_enc_bitstream(struct radv_cmd_buffer *cmd_buffer, struct radv_buffer *buffe
struct radv_device *device = radv_cmd_buffer_device(cmd_buffer);
const struct radv_physical_device *pdev = radv_device_physical(device);
struct radeon_cmdbuf *cs = cmd_buffer->cs;
uint64_t va = radv_buffer_get_va(buffer->bo) + buffer->offset + offset;
uint64_t va = buffer->addr + offset;
radv_cs_add_buffer(device->ws, cs, buffer->bo);
ENC_BEGIN;