Mesa (master): st/mesa: fix DrawPixels(GL_STENCIL_INDEX)

Marek Olšák mareko at kemper.freedesktop.org
Sat Aug 9 21:42:17 UTC 2014


Module: Mesa
Branch: master
Commit: 56286834b88f0dbcc4f95dc0edfb7618d30365cc
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=56286834b88f0dbcc4f95dc0edfb7618d30365cc

Author: Marek Olšák <marek.olsak at amd.com>
Date:   Thu Aug  7 20:58:53 2014 +0200

st/mesa: fix DrawPixels(GL_STENCIL_INDEX)

This is a bug which was probably uncovered recently by Jason's commits
and broke this.

The problem is _mesa_base_tex_format(GL_STENCIL_INDEX) returns -1.

Tested-by: Michel Dänzer <michel.daenzer at amd.com>

---

 src/mesa/state_tracker/st_cb_drawpixels.c |   11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)

diff --git a/src/mesa/state_tracker/st_cb_drawpixels.c b/src/mesa/state_tracker/st_cb_drawpixels.c
index 6119cc2..d13a17f 100644
--- a/src/mesa/state_tracker/st_cb_drawpixels.c
+++ b/src/mesa/state_tracker/st_cb_drawpixels.c
@@ -494,22 +494,19 @@ make_texture(struct st_context *st,
    pipeFormat = st_choose_matching_format(pipe->screen, PIPE_BIND_SAMPLER_VIEW,
                                           format, type, unpack->SwapBytes);
 
-   if (pipeFormat != PIPE_FORMAT_NONE) {
-      mformat = st_pipe_format_to_mesa_format(pipeFormat);
-      baseInternalFormat = _mesa_get_format_base_format(mformat);
-   }
-   else {
+   if (pipeFormat == PIPE_FORMAT_NONE) {
       /* Use the generic approach. */
       GLenum intFormat = internal_format(ctx, format, type);
 
-      baseInternalFormat = _mesa_base_tex_format(ctx, intFormat);
       pipeFormat = st_choose_format(st, intFormat, format, type,
                                     PIPE_TEXTURE_2D, 0, PIPE_BIND_SAMPLER_VIEW,
                                     FALSE);
       assert(pipeFormat != PIPE_FORMAT_NONE);
-      mformat = st_pipe_format_to_mesa_format(pipeFormat);
    }
 
+   mformat = st_pipe_format_to_mesa_format(pipeFormat);
+   baseInternalFormat = _mesa_get_format_base_format(mformat);
+
    pixels = _mesa_map_pbo_source(ctx, unpack, pixels);
    if (!pixels)
       return NULL;




More information about the mesa-commit mailing list