[Mesa-dev] [PATCH v3 1/6] gallium: add pipe_screen::resource_changed
Roland Scheidegger
sroland at vmware.com
Tue Dec 6 15:51:58 UTC 2016
Thanks for fixing docs.
Reviewed-by: Roland Scheidegger <sroland at vmware.com>
Am 06.12.2016 um 14:57 schrieb Philipp Zabel:
> 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 at pengutronix.de>
> ---
> Changes since v2:
> - Added resource_changed paragraph to screen.rst
> ---
> src/gallium/docs/source/screen.rst | 14 ++++++++++++++
> src/gallium/include/pipe/p_screen.h | 8 ++++++++
> 2 files changed, 22 insertions(+)
>
> diff --git a/src/gallium/docs/source/screen.rst b/src/gallium/docs/source/screen.rst
> index 33f233a..209b97c 100644
> --- a/src/gallium/docs/source/screen.rst
> +++ b/src/gallium/docs/source/screen.rst
> @@ -700,6 +700,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 255647e..0d3e4b6 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);
>
More information about the mesa-dev
mailing list