diff options
author | Philipp Zabel <[email protected]> | 2017-01-19 15:05:36 +0100 |
---|---|---|
committer | Lucas Stach <[email protected]> | 2017-01-20 15:30:29 +0100 |
commit | 30853f55a3b4c409802ac470ae0530311c36e0c7 (patch) | |
tree | c16a4c1d50f70f4f5a883a5c9ad6225ce43ea897 /src/gallium | |
parent | 5872850b8868f00c031d21387b0516d844d070be (diff) |
gallium: add pipe_screen::resource_changed
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 <[email protected]>
Reviewed-by: Roland Scheidegger <[email protected]>
Reviewed-by: Marek Olšák <[email protected]>
Signed-off-by: Lucas Stach <[email protected]>
Diffstat (limited to 'src/gallium')
-rw-r--r-- | src/gallium/docs/source/screen.rst | 14 | ||||
-rw-r--r-- | src/gallium/include/pipe/p_screen.h | 8 |
2 files changed, 22 insertions, 0 deletions
diff --git a/src/gallium/docs/source/screen.rst b/src/gallium/docs/source/screen.rst index 64cb0bf0b4f..5ae2596dad0 100644 --- a/src/gallium/docs/source/screen.rst +++ b/src/gallium/docs/source/screen.rst @@ -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 ^^^^^^^^^^^^^^^^ diff --git a/src/gallium/include/pipe/p_screen.h b/src/gallium/include/pipe/p_screen.h index f04c2ed83ab..b6203f1da0c 100644 --- a/src/gallium/include/pipe/p_screen.h +++ b/src/gallium/include/pipe/p_screen.h @@ -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); |