From 2bf7c3a6658ceafe9d2893a0de29160e636bee86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Wed, 5 May 2021 14:07:18 -0400 Subject: [PATCH] i915g: stop using u_resource_vtbl::resource_destroy Acked-By: Mike Blumenkrantz Acked-by: Pierre-Eric Pelloux-Prayer Part-of: --- src/gallium/drivers/i915/i915_resource.c | 2 +- src/gallium/drivers/i915/i915_resource.h | 4 +++ .../drivers/i915/i915_resource_buffer.c | 31 ++++++++++++++----- .../drivers/i915/i915_resource_texture.c | 20 +----------- 4 files changed, 29 insertions(+), 28 deletions(-) diff --git a/src/gallium/drivers/i915/i915_resource.c b/src/gallium/drivers/i915/i915_resource.c index 21746dcf9de..4897b4d117b 100644 --- a/src/gallium/drivers/i915/i915_resource.c +++ b/src/gallium/drivers/i915/i915_resource.c @@ -49,5 +49,5 @@ i915_init_screen_resource_functions(struct i915_screen *is) is->base.resource_create = i915_resource_create; is->base.resource_from_handle = i915_resource_from_handle; is->base.resource_get_handle = i915_resource_get_handle; - is->base.resource_destroy = u_resource_destroy_vtbl; + is->base.resource_destroy = i915_resource_destroy; } diff --git a/src/gallium/drivers/i915/i915_resource.h b/src/gallium/drivers/i915/i915_resource.h index e45095d40ee..42511b6e07c 100644 --- a/src/gallium/drivers/i915/i915_resource.h +++ b/src/gallium/drivers/i915/i915_resource.h @@ -136,6 +136,10 @@ struct pipe_resource * i915_buffer_create(struct pipe_screen *screen, const struct pipe_resource *template); +void +i915_resource_destroy(struct pipe_screen *screen, + struct pipe_resource *resource); + void i915_buffer_subdata(struct pipe_context *rm_ctx, struct pipe_resource *resource, diff --git a/src/gallium/drivers/i915/i915_resource_buffer.c b/src/gallium/drivers/i915/i915_resource_buffer.c index 69d2f8c826a..1999b615d54 100644 --- a/src/gallium/drivers/i915/i915_resource_buffer.c +++ b/src/gallium/drivers/i915/i915_resource_buffer.c @@ -38,16 +38,31 @@ #include "i915_context.h" #include "i915_resource.h" +#include "i915_screen.h" -static void -i915_buffer_destroy(struct pipe_screen *screen, - struct pipe_resource *resource) +void +i915_resource_destroy(struct pipe_screen *screen, + struct pipe_resource *resource) { - struct i915_buffer *buffer = i915_buffer(resource); - if (buffer->free_on_destroy) - align_free(buffer->data); - FREE(buffer); + if (resource->target == PIPE_BUFFER) { + struct i915_buffer *buffer = i915_buffer(resource); + if (buffer->free_on_destroy) + align_free(buffer->data); + FREE(buffer); + } else { + struct i915_texture *tex = i915_texture(resource); + struct i915_winsys *iws = i915_screen(screen)->iws; + uint i; + + if (tex->buffer) + iws->buffer_destroy(iws, tex->buffer); + + for (i = 0; i < ARRAY_SIZE(tex->image_offset); i++) + FREE(tex->image_offset[i]); + + FREE(tex); + } } @@ -97,7 +112,7 @@ i915_buffer_subdata(struct pipe_context *rm_ctx, struct u_resource_vtbl i915_buffer_vtbl = { - i915_buffer_destroy, /* resource_destroy */ + NULL, i915_buffer_transfer_map, /* transfer_map */ i915_buffer_transfer_unmap, /* transfer_unmap */ }; diff --git a/src/gallium/drivers/i915/i915_resource_texture.c b/src/gallium/drivers/i915/i915_resource_texture.c index 5bcd2cc1362..c4f5ea6c1fd 100644 --- a/src/gallium/drivers/i915/i915_resource_texture.c +++ b/src/gallium/drivers/i915/i915_resource_texture.c @@ -698,24 +698,6 @@ i915_resource_get_handle(struct pipe_screen *screen, return iws->buffer_get_handle(iws, tex->buffer, whandle, tex->stride); } - -static void -i915_texture_destroy(struct pipe_screen *screen, - struct pipe_resource *pt) -{ - struct i915_texture *tex = i915_texture(pt); - struct i915_winsys *iws = i915_screen(screen)->iws; - uint i; - - if (tex->buffer) - iws->buffer_destroy(iws, tex->buffer); - - for (i = 0; i < ARRAY_SIZE(tex->image_offset); i++) - FREE(tex->image_offset[i]); - - FREE(tex); -} - static void * i915_texture_transfer_map(struct pipe_context *pipe, struct pipe_resource *resource, @@ -913,7 +895,7 @@ out: struct u_resource_vtbl i915_texture_vtbl = { - i915_texture_destroy, /* resource_destroy */ + NULL, /* resource_destroy */ i915_texture_transfer_map, /* transfer_map */ i915_texture_transfer_unmap, /* transfer_unmap */ };