[Mesa-dev] [PATCH 2/4 v2] mesa/image: assert on bad format

Ian Romanick idr at freedesktop.org
Fri Oct 28 10:12:27 PDT 2011


On 10/19/2011 05:10 PM, nobled wrote:
> NULL as an error indicator is meaningless, since it will return NULL
> on success anyway if the caller passes in zero as the image's address
> and asks to calculate the offset of the first pixel. For example,
> _mesa_validate_pbo_access() does this.
>
> This also matches the code in the non-GL_BITMAP codepath, which
> already has an assert like this.
>
> v2: Per Brian Paul's review, remove the function call entirely
> and tighten the assert to only accept the two formats compatible with
> GL_BITMAP. They always have one component per pixel.

Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

> ---
>   src/mesa/main/image.c |   20 +++++++++-----------
>   1 files changed, 9 insertions(+), 11 deletions(-)
>
> diff --git a/src/mesa/main/image.c b/src/mesa/main/image.c
> index ca5771c..af96107 100644
> --- a/src/mesa/main/image.c
> +++ b/src/mesa/main/image.c
> @@ -1093,17 +1093,17 @@ _mesa_is_compressed_format(struct gl_context
> *ctx, GLenum format)
>    * Pixel unpacking/packing parameters are observed according to \p packing.
>    *
>    * \param dimensions either 1, 2 or 3 to indicate dimensionality of image
> + * \param packing  the pixelstore attributes
>    * \param image  starting address of image data
>    * \param width  the image width
> - * \param height  theimage height
> - * \param format  the pixel format
> - * \param type  the pixel data type
> - * \param packing  the pixelstore attributes
> + * \param height  the image height
> + * \param format  the pixel format (must be validated beforehand)
> + * \param type  the pixel data type (must be validated beforehand)
>    * \param img  which image in the volume (0 for 1D or 2D images)
>    * \param row  row of pixel in the image (0 for 1D images)
>    * \param column column of pixel in the image
>    *
> - * \return address of pixel on success, or NULL on error.
> + * \return address of pixel.
>    *
>    * \sa gl_pixelstore_attrib.
>    */
> @@ -1147,15 +1147,13 @@ _mesa_image_address( GLuint dimensions,
>
>      if (type == GL_BITMAP) {
>         /* BITMAP data */
> -      GLint comp_per_pixel;   /* components per pixel */
>         GLint bytes_per_row;
>         GLint bytes_per_image;
> +      /* components per pixel for color or stencil index: */
> +      const GLint comp_per_pixel = 1;
>
> -      /* Compute number of components per pixel */
> -      comp_per_pixel = _mesa_components_in_format( format );
> -      if (comp_per_pixel<  0) {
> -         return NULL;
> -      }
> +      /* The pixel type and format should have been error checked earlier */
> +      assert(format == GL_COLOR_INDEX || format == GL_STENCIL_INDEX);
>
>         bytes_per_row = alignment
>                       * CEILING( comp_per_pixel*pixels_per_row, 8*alignment );
>
>
>
> _______________________________________________
> 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