vk/surface_view: Add a destructor
This commit is contained in:
@@ -1080,10 +1080,7 @@ VkResult anv_DestroyObject(
|
|||||||
return VK_SUCCESS;
|
return VK_SUCCESS;
|
||||||
|
|
||||||
case VK_OBJECT_TYPE_BUFFER:
|
case VK_OBJECT_TYPE_BUFFER:
|
||||||
case VK_OBJECT_TYPE_BUFFER_VIEW:
|
|
||||||
case VK_OBJECT_TYPE_IMAGE:
|
case VK_OBJECT_TYPE_IMAGE:
|
||||||
case VK_OBJECT_TYPE_IMAGE_VIEW:
|
|
||||||
case VK_OBJECT_TYPE_COLOR_ATTACHMENT_VIEW:
|
|
||||||
case VK_OBJECT_TYPE_DEPTH_STENCIL_VIEW:
|
case VK_OBJECT_TYPE_DEPTH_STENCIL_VIEW:
|
||||||
case VK_OBJECT_TYPE_SHADER:
|
case VK_OBJECT_TYPE_SHADER:
|
||||||
case VK_OBJECT_TYPE_PIPELINE_LAYOUT:
|
case VK_OBJECT_TYPE_PIPELINE_LAYOUT:
|
||||||
@@ -1104,6 +1101,9 @@ VkResult anv_DestroyObject(
|
|||||||
case VK_OBJECT_TYPE_FENCE:
|
case VK_OBJECT_TYPE_FENCE:
|
||||||
case VK_OBJECT_TYPE_QUERY_POOL:
|
case VK_OBJECT_TYPE_QUERY_POOL:
|
||||||
case VK_OBJECT_TYPE_FRAMEBUFFER:
|
case VK_OBJECT_TYPE_FRAMEBUFFER:
|
||||||
|
case VK_OBJECT_TYPE_BUFFER_VIEW:
|
||||||
|
case VK_OBJECT_TYPE_IMAGE_VIEW:
|
||||||
|
case VK_OBJECT_TYPE_COLOR_ATTACHMENT_VIEW:
|
||||||
(object->destructor)(device, object, objType);
|
(object->destructor)(device, object, objType);
|
||||||
return VK_SUCCESS;
|
return VK_SUCCESS;
|
||||||
|
|
||||||
@@ -1542,6 +1542,8 @@ VkResult anv_CreateBufferView(
|
|||||||
if (view == NULL)
|
if (view == NULL)
|
||||||
return vk_error(VK_ERROR_OUT_OF_HOST_MEMORY);
|
return vk_error(VK_ERROR_OUT_OF_HOST_MEMORY);
|
||||||
|
|
||||||
|
view->base.destructor = anv_surface_view_destroy;
|
||||||
|
|
||||||
view->bo = buffer->bo;
|
view->bo = buffer->bo;
|
||||||
view->offset = buffer->offset + pCreateInfo->offset;
|
view->offset = buffer->offset + pCreateInfo->offset;
|
||||||
view->surface_state =
|
view->surface_state =
|
||||||
|
@@ -162,6 +162,21 @@ VkResult anv_GetImageSubresourceInfo(
|
|||||||
stub_return(VK_UNSUPPORTED);
|
stub_return(VK_UNSUPPORTED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
anv_surface_view_destroy(struct anv_device *device,
|
||||||
|
struct anv_object *obj, VkObjectType obj_type)
|
||||||
|
{
|
||||||
|
struct anv_surface_view *view = (struct anv_surface_view *)obj;
|
||||||
|
|
||||||
|
assert(obj_type == VK_OBJECT_TYPE_BUFFER_VIEW ||
|
||||||
|
obj_type == VK_OBJECT_TYPE_IMAGE_VIEW ||
|
||||||
|
obj_type == VK_OBJECT_TYPE_COLOR_ATTACHMENT_VIEW);
|
||||||
|
|
||||||
|
anv_state_pool_free(&device->surface_state_pool, view->surface_state);
|
||||||
|
|
||||||
|
anv_device_free(device, view);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
anv_image_view_init(struct anv_surface_view *view,
|
anv_image_view_init(struct anv_surface_view *view,
|
||||||
struct anv_device *device,
|
struct anv_device *device,
|
||||||
@@ -268,6 +283,8 @@ VkResult anv_CreateImageView(
|
|||||||
|
|
||||||
anv_image_view_init(view, device, pCreateInfo, NULL);
|
anv_image_view_init(view, device, pCreateInfo, NULL);
|
||||||
|
|
||||||
|
view->base.destructor = anv_surface_view_destroy;
|
||||||
|
|
||||||
*pView = (VkImageView) view;
|
*pView = (VkImageView) view;
|
||||||
|
|
||||||
return VK_SUCCESS;
|
return VK_SUCCESS;
|
||||||
@@ -352,6 +369,8 @@ VkResult anv_CreateColorAttachmentView(
|
|||||||
|
|
||||||
anv_color_attachment_view_init(view, device, pCreateInfo, NULL);
|
anv_color_attachment_view_init(view, device, pCreateInfo, NULL);
|
||||||
|
|
||||||
|
view->base.destructor = anv_surface_view_destroy;
|
||||||
|
|
||||||
*pView = (VkColorAttachmentView) view;
|
*pView = (VkColorAttachmentView) view;
|
||||||
|
|
||||||
return VK_SUCCESS;
|
return VK_SUCCESS;
|
||||||
|
@@ -756,6 +756,8 @@ struct anv_image {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct anv_surface_view {
|
struct anv_surface_view {
|
||||||
|
struct anv_object base;
|
||||||
|
|
||||||
struct anv_state surface_state;
|
struct anv_state surface_state;
|
||||||
struct anv_bo * bo;
|
struct anv_bo * bo;
|
||||||
uint32_t offset;
|
uint32_t offset;
|
||||||
@@ -783,6 +785,9 @@ void anv_color_attachment_view_init(struct anv_surface_view *view,
|
|||||||
const VkColorAttachmentViewCreateInfo* pCreateInfo,
|
const VkColorAttachmentViewCreateInfo* pCreateInfo,
|
||||||
struct anv_cmd_buffer *cmd_buffer);
|
struct anv_cmd_buffer *cmd_buffer);
|
||||||
|
|
||||||
|
void anv_surface_view_destroy(struct anv_device *device,
|
||||||
|
struct anv_object *obj, VkObjectType obj_type);
|
||||||
|
|
||||||
struct anv_sampler {
|
struct anv_sampler {
|
||||||
uint32_t state[4];
|
uint32_t state[4];
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user