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