gallium: add pipe_screen::resource_changed
authorPhilipp Zabel <p.zabel@pengutronix.de>
Thu, 19 Jan 2017 14:05:36 +0000 (15:05 +0100)
committerLucas Stach <l.stach@pengutronix.de>
Fri, 20 Jan 2017 14:30:29 +0000 (15:30 +0100)
Add a hook to tell drivers that an imported resource may have changed
and they need to update their internal derived resources.

Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
src/gallium/docs/source/screen.rst
src/gallium/include/pipe/p_screen.h

index 64cb0bf0b4fd19f49c36ca55053e698803b71155..5ae2596dad0b7f9285ccf7c4335c20470e2f980c 100644 (file)
@@ -707,6 +707,20 @@ which isn't multisampled.
 
 
 
+resource_changed
+^^^^^^^^^^^^^^^^
+
+Mark a resource as changed so derived internal resources will be recreated
+on next use.
+
+When importing external images that can't be directly used as texture sampler
+source, internal copies may have to be created that the hardware can sample
+from. When those resources are reimported, the image data may have changed, and
+the previously derived internal resources must be invalidated to avoid sampling
+from old copies.
+
+
+
 resource_destroy
 ^^^^^^^^^^^^^^^^
 
index f04c2ed83ab7b279325e60879e48caf514753101..b6203f1da0c2eac5ed61b1d3d47f71696bac889e 100644 (file)
@@ -224,6 +224,14 @@ struct pipe_screen {
                                  struct winsys_handle *handle,
                                  unsigned usage);
 
+   /**
+    * Mark the resource as changed so derived internal resources will be
+    * recreated on next use.
+    *
+    * This is necessary when reimporting external images that can't be directly
+    * used as texture sampler source, to avoid sampling from old copies.
+    */
+   void (*resource_changed)(struct pipe_screen *, struct pipe_resource *pt);
 
    void (*resource_destroy)(struct pipe_screen *,
                            struct pipe_resource *pt);