[Mesa-dev] [PATCH 1/4] gallium: add new pipe_screen::legal_resource_size() function

Jose Fonseca jfonseca at vmware.com
Mon Sep 17 03:16:06 PDT 2012



----- Original Message -----
> From: Brian Paul <brianp at vmware.com>
> 
> To implement proxy textures.  If a gallium driver doesn't implement
> this function we'll just continue to use the core Mesa fallback code.
> 
> Without this hook we really have no good way to implement OpenGL
> proxy
> textures with gallium drivers.

Brian,

This interface seems a good thing to add. A just have a few suggestion/remarks below.

> ---
>  src/gallium/include/pipe/p_screen.h |    8 ++++++++
>  1 files changed, 8 insertions(+), 0 deletions(-)
> 
> diff --git a/src/gallium/include/pipe/p_screen.h
> b/src/gallium/include/pipe/p_screen.h
> index fdf6fa2..718a72b 100644
> --- a/src/gallium/include/pipe/p_screen.h
> +++ b/src/gallium/include/pipe/p_screen.h
> @@ -138,6 +138,14 @@ struct pipe_screen {
>                                           enum pipe_video_profile
>                                           profile );
>  
>     /**
> +    * Check the size of the resource/texture given by 'res'.
> +    * Used to implement proxy textures.
> +    * \return TRUE if size is OK, FALSE if too large.
> +    */
> +   boolean (*legal_resource_size)(struct pipe_screen *screen,

I think the name would benefit from a verb somewhere in it, e.g., is_resource_size_legal. 

I suspect this function will check more than size (e.g., number of samples, format). If so, then I'd suggest a more generic name, such as, "can_create_resource".

Also, shouldn't this interface return an enum (e.g., pipe_error), so that one can distinguish between "can't create a texture because not enough memory now", vs "can't create this texture ever because of HW limitations", or is such distinction useless for GL proxy textures?

> +                                  const struct pipe_resource *res);

IIUC "res" is not a real resource but rather a template for a resource. If so, then it should be named "templat" for consistency.

Jose


> +
> +   /**
>      * Create a new texture object, using the given template info.
>      */
>     struct pipe_resource * (*resource_create)(struct pipe_screen *,
> --
> 1.7.4.1
> 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
> 


More information about the mesa-dev mailing list