[Mesa-dev] [PATCH] st/mesa: choose a matching depth internal format for DrawPixels

Brian Paul brianp at vmware.com
Mon Jul 11 16:23:30 PDT 2011


On 07/11/2011 03:54 PM, Marek Olšák wrote:
> This makes it easier to hit the fast path and get a float format
> when we ask for it.
> ---
>   src/mesa/state_tracker/st_cb_drawpixels.c |   29 +++++++++++++++++++++++++++--
>   1 files changed, 27 insertions(+), 2 deletions(-)
>
> diff --git a/src/mesa/state_tracker/st_cb_drawpixels.c b/src/mesa/state_tracker/st_cb_drawpixels.c
> index d3e6aef..1d908c0 100644
> --- a/src/mesa/state_tracker/st_cb_drawpixels.c
> +++ b/src/mesa/state_tracker/st_cb_drawpixels.c
> @@ -281,11 +281,36 @@ internal_format(struct gl_context *ctx, GLenum format, GLenum type)
>   {
>      switch (format) {
>      case GL_DEPTH_COMPONENT:
> -      return GL_DEPTH_COMPONENT;
> +      switch (type) {
> +      case GL_UNSIGNED_SHORT:
> +         return GL_DEPTH_COMPONENT16;
> +
> +      case GL_UNSIGNED_INT:
> +         return GL_DEPTH_COMPONENT32;
> +
> +      case GL_FLOAT:
> +         if (ctx->Extensions.ARB_depth_buffer_float)
> +            return GL_DEPTH_COMPONENT32F;
> +         else
> +            return GL_DEPTH_COMPONENT;
> +
> +      default:
> +         return GL_DEPTH_COMPONENT;
> +      }
> +
>      case GL_DEPTH_STENCIL:
> -      return GL_DEPTH_STENCIL;
> +      switch (type) {
> +      case GL_FLOAT_32_UNSIGNED_INT_24_8_REV:
> +         return GL_DEPTH32F_STENCIL8;
> +
> +      case GL_UNSIGNED_INT_24_8:
> +      default:
> +         return GL_DEPTH24_STENCIL8;
> +      }
> +
>      case GL_STENCIL_INDEX:
>         return GL_STENCIL_INDEX;
> +
>      default:
>         if (_mesa_is_integer_format(format)) {
>            switch (type) {


Reviewed-by: Brian Paul <brianp at vmware.com>


More information about the mesa-dev mailing list