Re: [Mesa-dev] [PATCH 1/2] st/mesa: use the first non-VOID channel in st_format_datatype

2011-07-06 Thread Brian Paul

On 06/30/2011 04:10 PM, Marek Olšák wrote:

Otherwise PIPE_FORMAT_X8B8G8R8_UNORM and friends would fail.

NOTE: This is a candidate for the 7.10 and 7.11 branches.



Reviewed-by: Brian Paul bri...@vmware.com
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [PATCH 1/2] st/mesa: use the first non-VOID channel in st_format_datatype

2011-06-30 Thread Marek Olšák
Otherwise PIPE_FORMAT_X8B8G8R8_UNORM and friends would fail.

NOTE: This is a candidate for the 7.10 and 7.11 branches.
---
 src/mesa/state_tracker/st_format.c |   19 ---
 1 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/src/mesa/state_tracker/st_format.c 
b/src/mesa/state_tracker/st_format.c
index fa5d8f5..3260297 100644
--- a/src/mesa/state_tracker/st_format.c
+++ b/src/mesa/state_tracker/st_format.c
@@ -68,10 +68,18 @@ GLenum
 st_format_datatype(enum pipe_format format)
 {
const struct util_format_description *desc;
+   int i;
 
desc = util_format_description(format);
assert(desc);
 
+   /* Find the first non-VOID channel. */
+   for (i = 0; i  4; i++) {
+   if (desc-channel[i].type != UTIL_FORMAT_TYPE_VOID) {
+   break;
+   }
+   }
+
if (desc-layout == UTIL_FORMAT_LAYOUT_PLAIN) {
   if (format == PIPE_FORMAT_B5G5R5A1_UNORM ||
   format == PIPE_FORMAT_B5G6R5_UNORM) {
@@ -85,21 +93,26 @@ st_format_datatype(enum pipe_format format)
   }
   else {
  const GLuint size = format_max_bits(format);
+
+ assert(i  4);
+ if (i == 4)
+return GL_NONE;
+
  if (size == 8) {
-if (desc-channel[0].type == UTIL_FORMAT_TYPE_UNSIGNED)
+if (desc-channel[i].type == UTIL_FORMAT_TYPE_UNSIGNED)
return GL_UNSIGNED_BYTE;
 else
return GL_BYTE;
  }
  else if (size == 16) {
-if (desc-channel[0].type == UTIL_FORMAT_TYPE_UNSIGNED)
+if (desc-channel[i].type == UTIL_FORMAT_TYPE_UNSIGNED)
return GL_UNSIGNED_SHORT;
 else
return GL_SHORT;
  }
  else {
 assert( size = 32 );
-if (desc-channel[0].type == UTIL_FORMAT_TYPE_UNSIGNED)
+if (desc-channel[i].type == UTIL_FORMAT_TYPE_UNSIGNED)
return GL_UNSIGNED_INT;
 else
return GL_INT;
-- 
1.7.4.1

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev