diff options
author | Chris Forbes <[email protected]> | 2014-03-29 12:02:54 +1300 |
---|---|---|
committer | Chris Forbes <[email protected]> | 2014-04-01 11:56:18 +1300 |
commit | e3cdbdb14b54b8417088520dc3187477a4dd04ad (patch) | |
tree | 3a97e50b5023d2ca4ff21cc4084fd239331023c7 /src | |
parent | 3196c53c5d9bc25dae8c220c3dc38eb510612f76 (diff) |
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 <[email protected]>
Reviewed-by: Brian Paul <[email protected]>
Reviewed-by: Marek Olšák <[email protected]>
Diffstat (limited to 'src')
-rw-r--r-- | src/mesa/state_tracker/st_format.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/mesa/state_tracker/st_format.c b/src/mesa/state_tracker/st_format.c index cd6b466815c..38d4ccfea07 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)) { |