panvk: Use the vk_buffer base struct
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16607>
This commit is contained in:
@@ -1304,7 +1304,7 @@ panvk_GetBufferMemoryRequirements2(VkDevice device,
|
||||
VK_FROM_HANDLE(panvk_buffer, buffer, pInfo->buffer);
|
||||
|
||||
const uint64_t align = 64;
|
||||
const uint64_t size = align64(buffer->size, align);
|
||||
const uint64_t size = align64(buffer->vk.size, align);
|
||||
|
||||
pMemoryRequirements->memoryRequirements.memoryTypeBits = 1;
|
||||
pMemoryRequirements->memoryRequirements.alignment = align;
|
||||
@@ -1524,15 +1524,11 @@ panvk_CreateBuffer(VkDevice _device,
|
||||
|
||||
assert(pCreateInfo->sType == VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO);
|
||||
|
||||
buffer = vk_object_alloc(&device->vk, pAllocator, sizeof(*buffer),
|
||||
VK_OBJECT_TYPE_BUFFER);
|
||||
buffer = vk_buffer_create(&device->vk, pCreateInfo,
|
||||
pAllocator, sizeof(*buffer));
|
||||
if (buffer == NULL)
|
||||
return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY);
|
||||
|
||||
buffer->size = pCreateInfo->size;
|
||||
buffer->usage = pCreateInfo->usage;
|
||||
buffer->flags = pCreateInfo->flags;
|
||||
|
||||
*pBuffer = panvk_buffer_to_handle(buffer);
|
||||
|
||||
return VK_SUCCESS;
|
||||
@@ -1549,7 +1545,7 @@ panvk_DestroyBuffer(VkDevice _device,
|
||||
if (!buffer)
|
||||
return;
|
||||
|
||||
vk_object_free(&device->vk, pAllocator, buffer);
|
||||
vk_buffer_destroy(&device->vk, pAllocator, &buffer->vk);
|
||||
}
|
||||
|
||||
VkResult
|
||||
|
||||
@@ -49,6 +49,7 @@
|
||||
#include "util/list.h"
|
||||
#include "util/macros.h"
|
||||
#include "vk_alloc.h"
|
||||
#include "vk_buffer.h"
|
||||
#include "vk_command_buffer.h"
|
||||
#include "vk_command_pool.h"
|
||||
#include "vk_device.h"
|
||||
@@ -525,11 +526,7 @@ struct panvk_descriptor_pool {
|
||||
};
|
||||
|
||||
struct panvk_buffer {
|
||||
struct vk_object_base base;
|
||||
VkDeviceSize size;
|
||||
|
||||
VkBufferUsageFlags usage;
|
||||
VkBufferCreateFlags flags;
|
||||
struct vk_buffer vk;
|
||||
|
||||
struct panfrost_bo *bo;
|
||||
VkDeviceSize bo_offset;
|
||||
@@ -551,14 +548,7 @@ panvk_buffer_range(const struct panvk_buffer *buffer,
|
||||
if (buffer->bo == NULL)
|
||||
return 0;
|
||||
|
||||
assert(offset <= buffer->size);
|
||||
if (range == VK_WHOLE_SIZE) {
|
||||
return buffer->size - offset;
|
||||
} else {
|
||||
assert(range + offset >= range);
|
||||
assert(range + offset <= buffer->size);
|
||||
return range;
|
||||
}
|
||||
return vk_buffer_range(&buffer->vk, offset, range);
|
||||
}
|
||||
|
||||
enum panvk_dynamic_state_bits {
|
||||
@@ -1110,7 +1100,7 @@ VK_DEFINE_HANDLE_CASTS(panvk_physical_device, vk.base, VkPhysicalDevice, VK_OBJE
|
||||
VK_DEFINE_HANDLE_CASTS(panvk_queue, vk.base, VkQueue, VK_OBJECT_TYPE_QUEUE)
|
||||
|
||||
VK_DEFINE_NONDISP_HANDLE_CASTS(panvk_cmd_pool, vk.base, VkCommandPool, VK_OBJECT_TYPE_COMMAND_POOL)
|
||||
VK_DEFINE_NONDISP_HANDLE_CASTS(panvk_buffer, base, VkBuffer, VK_OBJECT_TYPE_BUFFER)
|
||||
VK_DEFINE_NONDISP_HANDLE_CASTS(panvk_buffer, vk.base, VkBuffer, VK_OBJECT_TYPE_BUFFER)
|
||||
VK_DEFINE_NONDISP_HANDLE_CASTS(panvk_buffer_view, base, VkBufferView, VK_OBJECT_TYPE_BUFFER_VIEW)
|
||||
VK_DEFINE_NONDISP_HANDLE_CASTS(panvk_descriptor_pool, base, VkDescriptorPool, VK_OBJECT_TYPE_DESCRIPTOR_POOL)
|
||||
VK_DEFINE_NONDISP_HANDLE_CASTS(panvk_descriptor_set, base, VkDescriptorSet, VK_OBJECT_TYPE_DESCRIPTOR_SET)
|
||||
|
||||
@@ -205,7 +205,7 @@ panvk_per_arch(CreateBufferView)(VkDevice _device,
|
||||
|
||||
assert(!(address & 63));
|
||||
|
||||
if (buffer->usage & VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT) {
|
||||
if (buffer->vk.usage & VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT) {
|
||||
unsigned bo_size =
|
||||
PAN_ARCH <= 5 ? (pan_size(SURFACE) + pan_size(TEXTURE)) :
|
||||
pan_size(SURFACE_WITH_STRIDE);
|
||||
@@ -240,7 +240,7 @@ panvk_per_arch(CreateBufferView)(VkDevice _device,
|
||||
}
|
||||
}
|
||||
|
||||
if (buffer->usage & VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT) {
|
||||
if (buffer->vk.usage & VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT) {
|
||||
uint8_t *attrib_buf = (uint8_t *)view->descs.img_attrib_buf;
|
||||
|
||||
pan_pack(attrib_buf, ATTRIBUTE_BUFFER, cfg) {
|
||||
|
||||
Reference in New Issue
Block a user