swr: properly expose compressed format support
authorTim Rowley <timothy.o.rowley@intel.com>
Thu, 12 May 2016 16:27:57 +0000 (11:27 -0500)
committerTim Rowley <timothy.o.rowley@intel.com>
Thu, 12 May 2016 19:12:18 +0000 (14:12 -0500)
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
src/gallium/auxiliary/util/u_format_s3tc.h
src/gallium/drivers/swr/swr_screen.cpp

index 97770abd4224033429cfc7378b2c632fdfeda587..ae20010cdf8a5cf678fbb8cd120677a3faf660c6 100644 (file)
@@ -32,6 +32,9 @@
 
 #include "pipe/p_compiler.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
 
 enum util_format_dxtn {
   UTIL_FORMAT_DXT1_RGB = 0x83F0,
@@ -214,5 +217,8 @@ util_format_dxt5_srgba_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, co
 void
 util_format_dxt5_srgba_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j);
 
+#ifdef __cplusplus
+}
+#endif
 
 #endif /* U_FORMAT_S3TC_H_ */
index daee05abce3acae53ac9c721eb4a04f090f062ba..3d280e34a637ba1a4496468aa866f804c2d817ed 100644 (file)
@@ -27,6 +27,7 @@
 #include "util/u_format.h"
 #include "util/u_inlines.h"
 #include "util/u_cpu_detect.h"
+#include "util/u_format_s3tc.h"
 
 #include "state_tracker/sw_winsys.h"
 
@@ -128,6 +129,20 @@ swr_is_format_supported(struct pipe_screen *screen,
          return FALSE;
    }
 
+   if (format_desc->layout == UTIL_FORMAT_LAYOUT_BPTC ||
+       format_desc->layout == UTIL_FORMAT_LAYOUT_ASTC) {
+      return FALSE;
+   }
+
+   if (format_desc->layout == UTIL_FORMAT_LAYOUT_ETC &&
+       format != PIPE_FORMAT_ETC1_RGB8) {
+      return FALSE;
+   }
+
+   if (format_desc->layout == UTIL_FORMAT_LAYOUT_S3TC) {
+      return util_format_s3tc_enabled;
+   }
+
    return TRUE;
 }
 
@@ -735,6 +750,8 @@ swr_create_screen(struct sw_winsys *winsys)
 
    swr_fence_init(&screen->base);
 
+   util_format_s3tc_init();
+
    return &screen->base;
 }