panfrost: Store internal format
authorTomeu Vizoso <tomeu.vizoso@collabora.com>
Thu, 2 Jan 2020 15:44:18 +0000 (16:44 +0100)
committerAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Thu, 2 Jan 2020 17:41:17 +0000 (12:41 -0500)
It's needed by u_transfer_helper to know when the depth+stencil buffer
has been split.

Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
src/gallium/drivers/panfrost/pan_resource.c
src/gallium/drivers/panfrost/pan_resource.h

index 1de9d5acf2d0690f30c4997b8a0ccd2707d46576..0d49d2bb4f76fb6e9e1e97bc90ace656a4499d40 100644 (file)
@@ -83,6 +83,7 @@ panfrost_resource_from_handle(struct pipe_screen *pscreen,
         prsc->screen = pscreen;
 
         rsc->bo = panfrost_bo_import(screen, whandle->handle);
+        rsc->internal_format = templat->format;
         rsc->slices[0].stride = whandle->stride;
         rsc->slices[0].offset = whandle->offset;
         rsc->slices[0].initialized = true;
@@ -515,6 +516,7 @@ panfrost_resource_create(struct pipe_screen *screen,
 
         so->base = *template;
         so->base.screen = screen;
+        so->internal_format = template->format;
 
         pipe_reference_init(&so->base.reference, 1);
 
@@ -755,8 +757,9 @@ panfrost_invalidate_resource(struct pipe_context *pctx, struct pipe_resource *pr
 }
 
 static enum pipe_format
-panfrost_resource_get_internal_format(struct pipe_resource *prsrc) {
-        return prsrc->format;
+panfrost_resource_get_internal_format(struct pipe_resource *rsrc) {
+        struct panfrost_resource *prsrc = (struct panfrost_resource *) rsrc;
+        return prsrc->internal_format;
 }
 
 static bool
index 0dcfbbd3a18ad3179d62e30322b70b5663285709..107c08dc628339f497bbb8b93b3c098e24284393 100644 (file)
@@ -83,6 +83,8 @@ struct panfrost_resource {
 
         /* Is transaciton elimination enabled? */
         bool checksummed;
+
+        enum pipe_format internal_format;
 };
 
 static inline struct panfrost_resource *