Mesa (7.9): r300g: fix texture border for 16-bits-per-channel formats

Marek Olšák mareko at kemper.freedesktop.org
Thu Dec 2 00:58:19 UTC 2010


Module: Mesa
Branch: 7.9
Commit: 1c746ba9d42f492f1804c5b97ee470a5c2bd050e
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=1c746ba9d42f492f1804c5b97ee470a5c2bd050e

Author: Marek Olšák <maraeo at gmail.com>
Date:   Tue Oct  5 02:52:03 2010 +0200

r300g: fix texture border for 16-bits-per-channel formats

This is kinda hacky, but it's hard to come up with a generic solution for
all formats when only a few are used in practice (I mostly get B8G8R8*8).
(cherry picked from commit 8449a4772a73f613d9425b691cffba6a261df813)

---

 src/gallium/drivers/r300/r300_state_derived.c |   13 +++++++++----
 1 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/src/gallium/drivers/r300/r300_state_derived.c b/src/gallium/drivers/r300/r300_state_derived.c
index 2613e70..04e0456 100644
--- a/src/gallium/drivers/r300/r300_state_derived.c
+++ b/src/gallium/drivers/r300/r300_state_derived.c
@@ -606,14 +606,19 @@ static uint32_t r300_get_border_color(enum pipe_format format,
             }
             break;
 
-        default:
-            /* I think the fat formats (16, 32) are specified
-             * as the 8-bit ones. I am not sure how compressed formats
-             * work here. */
+        case 8:
             r = ((float_to_ubyte(border_swizzled[0]) & 0xff) << 0) |
                 ((float_to_ubyte(border_swizzled[1]) & 0xff) << 8) |
                 ((float_to_ubyte(border_swizzled[2]) & 0xff) << 16) |
                 ((float_to_ubyte(border_swizzled[3]) & 0xff) << 24);
+            break;
+
+        case 16:
+            r = ((float_to_ubyte(border_swizzled[2]) & 0xff) << 0) |
+                ((float_to_ubyte(border_swizzled[1]) & 0xff) << 8) |
+                ((float_to_ubyte(border_swizzled[0]) & 0xff) << 16) |
+                ((float_to_ubyte(border_swizzled[3]) & 0xff) << 24);
+            break;
     }
 
     return r;




More information about the mesa-commit mailing list