util: Split the pack/unpack functions out of the format desc.
[mesa.git] / src / gallium / auxiliary / translate / translate_generic.c
index ac3310b4c5ebf5de75a99be6fe139ac743a15082..22d8d90b8a3d43b0f78d2024ab81f5b4b8bc7053 100644 (file)
@@ -799,6 +799,8 @@ translate_generic_create(const struct translate_key *key)
    for (i = 0; i < key->nr_elements; i++) {
       const struct util_format_description *format_desc =
             util_format_description(key->element[i].input_format);
+      const struct util_format_unpack_description *unpack =
+         util_format_unpack_description(key->element[i].input_format);
 
       assert(format_desc);
 
@@ -814,15 +816,15 @@ translate_generic_create(const struct translate_key *key)
          }
 
          if (format_desc->channel[0].type == UTIL_FORMAT_TYPE_SIGNED) {
-            assert(format_desc->fetch_rgba_sint);
-            tg->attrib[i].fetch = (fetch_func)format_desc->fetch_rgba_sint;
+            assert(unpack->fetch_rgba_sint);
+            tg->attrib[i].fetch = (fetch_func)unpack->fetch_rgba_sint;
          } else {
-            assert(format_desc->fetch_rgba_uint);
-            tg->attrib[i].fetch = (fetch_func)format_desc->fetch_rgba_uint;
+            assert(unpack->fetch_rgba_uint);
+            tg->attrib[i].fetch = (fetch_func)unpack->fetch_rgba_uint;
          }
       } else {
-         assert(format_desc->fetch_rgba_float);
-         tg->attrib[i].fetch = (fetch_func)format_desc->fetch_rgba_float;
+         assert(unpack->fetch_rgba_float);
+         tg->attrib[i].fetch = (fetch_func)unpack->fetch_rgba_float;
       }
 
       tg->attrib[i].buffer = key->element[i].input_buffer;