Mesa (master): st: fix st_choose_matching_format to ignore intensity

Chris Forbes chrisf at kemper.freedesktop.org
Mon Mar 31 09:58:49 UTC 2014


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

Author: Chris Forbes <chrisf at ijw.co.nz>
Date:   Sat Mar 29 12:02:54 2014 +1300

st: fix st_choose_matching_format to ignore intensity

_mesa_format_matches_format_and_type() returns true for
GL_RED/GL_RED_INTEGER (with an appropriate type) into an intensity
mesa_format.

We want the `red`-based format instead, regardless of the order we find
them in our walk of the mesa formats list.

Signed-off-by: Chris Forbes <chrisf at ijw.co.nz>
Reviewed-by: Brian Paul <brianp at vmware.com>
Reviewed-by: Marek Olšák <marek.olsak at amd.com>

---

 src/mesa/state_tracker/st_format.c |    6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/src/mesa/state_tracker/st_format.c b/src/mesa/state_tracker/st_format.c
index cd6b466..38d4ccf 100644
--- a/src/mesa/state_tracker/st_format.c
+++ b/src/mesa/state_tracker/st_format.c
@@ -1750,6 +1750,12 @@ st_choose_matching_format(struct pipe_screen *screen, unsigned bind,
       if (_mesa_get_format_color_encoding(mesa_format) == GL_SRGB) {
          continue;
       }
+      if (_mesa_get_format_bits(mesa_format, GL_TEXTURE_INTENSITY_SIZE) > 0) {
+         /* If `format` is GL_RED/GL_RED_INTEGER, then we might match some
+          * intensity formats, which we don't want.
+          */
+         continue;
+      }
 
       if (_mesa_format_matches_format_and_type(mesa_format, format, type,
                                                swapBytes)) {




More information about the mesa-commit mailing list