[Mesa-dev] [PATCH 12/13] mesa: reduce the size of gl_texture_image

Brian Paul brian.e.paul at gmail.com
Fri Feb 9 01:56:02 UTC 2018


On Thu, Feb 8, 2018 at 6:18 PM, Marek Olšák <maraeo at gmail.com> wrote:

> From: Marek Olšák <marek.olsak at amd.com>
>
> 80 -> 40 bytes.
> ---
>  src/mesa/main/mtypes.h | 47 ++++++++++++++++++++++++------
> -----------------
>  1 file changed, 24 insertions(+), 23 deletions(-)
>
> diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
> index a589bd4..b619d5c 100644
> --- a/src/mesa/main/mtypes.h
> +++ b/src/mesa/main/mtypes.h
> @@ -958,49 +958,50 @@ typedef enum
>  #define TEXTURE_1D_BIT       (1 << TEXTURE_1D_INDEX)
>  /*@}*/
>
>
>  /**
>   * Texture image state.  Drivers will typically create a subclass of this
>   * with extra fields for memory buffers, etc.
>   */
>  struct gl_texture_image
>  {
> -   GLint InternalFormat;       /**< Internal format as given by the user
> */
> +   struct gl_texture_object *TexObject;  /**< Pointer back to parent
> object */
> +
> +   GLenum16 InternalFormat;    /**< Internal format as given by the user
> */
>     GLenum16 _BaseFormat;       /**< Either GL_RGB, GL_RGBA, GL_ALPHA,
> -                                 *   GL_LUMINANCE, GL_LUMINANCE_ALPHA,
> -                                 *   GL_INTENSITY, GL_DEPTH_COMPONENT or
> -                                 *   GL_DEPTH_STENCIL_EXT only. Used for
> -                                 *   choosing TexEnv arithmetic.
> -                                 */
> -   mesa_format TexFormat;         /**< The actual texture memory format */
> -
> -   GLuint Border;              /**< 0 or 1 */
> -   GLuint Width;               /**< = 2^WidthLog2 + 2*Border */
> -   GLuint Height;              /**< = 2^HeightLog2 + 2*Border */
> -   GLuint Depth;               /**< = 2^DepthLog2 + 2*Border */
> -   GLuint Width2;              /**< = Width - 2*Border */
> -   GLuint Height2;             /**< = Height - 2*Border */
> -   GLuint Depth2;              /**< = Depth - 2*Border */
> -   GLuint WidthLog2;           /**< = log2(Width2) */
> -   GLuint HeightLog2;          /**< = log2(Height2) */
> -   GLuint DepthLog2;           /**< = log2(Depth2) */
> -   GLuint MaxNumLevels;                /**< = maximum possible number of
> mipmap
> +                                *   GL_LUMINANCE, GL_LUMINANCE_ALPHA,
> +                                *   GL_INTENSITY, GL_DEPTH_COMPONENT or
> +                                *   GL_DEPTH_STENCIL_EXT only. Used for
> +                                *   choosing TexEnv arithmetic.
> +                                */
> +   mesa_format TexFormat:16;    /**< The actual texture memory format */
> +
> +   GLushort Width;             /**< = 2^WidthLog2 + 2*Border */
>

I don't have time to look right now, but as with pipe_resource::width0,
does this have to stay GLuint for buffer objects?

-Brian


> +   GLushort Height;            /**< = 2^HeightLog2 + 2*Border */
> +   GLushort Depth;             /**< = 2^DepthLog2 + 2*Border */
> +   GLushort Width2;            /**< = Width - 2*Border */
> +   GLushort Height2;           /**< = Height - 2*Border */
> +   GLushort Depth2;            /**< = Depth - 2*Border */
> +   GLubyte WidthLog2;          /**< = log2(Width2) */
> +   GLubyte HeightLog2;         /**< = log2(Height2) */
> +   GLubyte DepthLog2;          /**< = log2(Depth2) */
> +   GLubyte Border;             /**< 0 or 1 */
> +   GLubyte MaxNumLevels;       /**< = maximum possible number of mipmap
>                                         levels, computed from the
> dimensions */
>
> -   struct gl_texture_object *TexObject;  /**< Pointer back to parent
> object */
> -   GLuint Level;                /**< Which mipmap level am I? */
> +   GLubyte Level;                /**< Which mipmap level am I? */
>     /** Cube map face: index into gl_texture_object::Image[] array */
> -   GLuint Face;
> +   GLubyte Face;
>
>     /** GL_ARB_texture_multisample */
> -   GLuint NumSamples;            /**< Sample count, or 0 for
> non-multisample */
> +   GLubyte NumSamples;            /**< Sample count, or 0 for
> non-multisample */
>     GLboolean FixedSampleLocations; /**< Same sample locations for all
> pixels? */
>  };
>
>
>  /**
>   * Indexes for cube map faces.
>   */
>  typedef enum
>  {
>     FACE_POS_X = 0,
> --
> 2.7.4
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20180208/67b8d0fb/attachment.html>


More information about the mesa-dev mailing list