panfrost: Filter compressed texture formats
[mesa.git] / src / gallium / drivers / swr / swr_loader.cpp
index 01b98046462e0959653b10fcbafb152d7145921e..97db7ca3e8b8cf36bfdc21e39b390dfdd6c25a06 100644 (file)
@@ -21,6 +21,7 @@
  * IN THE SOFTWARE.
  ***************************************************************************/
 
+#include "memory/InitMemory.h"
 #include "util/u_cpu_detect.h"
 #include "util/u_dl.h"
 #include "swr_public.h"
@@ -35,7 +36,9 @@ swr_initialize_screen_interface(struct swr_screen *screen, const char arch[])
 #ifdef HAVE_SWR_BUILTIN
    screen->pLibrary = NULL;
    screen->pfnSwrGetInterface = SwrGetInterface;
-   fprintf(stderr, "(using: builtin).\n");
+   screen->pfnSwrGetTileInterface = SwrGetTileIterface;
+   InitTilesTable();
+   swr_print_info("(using: builtin).\n");
 #else
    char filename[256] = { 0 };
    sprintf(filename, "%sswr%s%s", UTIL_DL_PREFIX, arch, UTIL_DL_EXT);
@@ -48,7 +51,11 @@ swr_initialize_screen_interface(struct swr_screen *screen, const char arch[])
 
    util_dl_proc pApiProc = util_dl_get_proc_address(screen->pLibrary,
       "SwrGetInterface");
-   if (!pApiProc) {
+   util_dl_proc pTileApiProc = util_dl_get_proc_address(screen->pLibrary,
+      "SwrGetTileIterface");
+   util_dl_proc pInitFunc = util_dl_get_proc_address(screen->pLibrary,
+      "InitTilesTable");
+   if (!pApiProc || !pInitFunc || !pTileApiProc) {
       fprintf(stderr, "(skipping: %s).\n", util_dl_error());
       util_dl_close(screen->pLibrary);
       screen->pLibrary = NULL;
@@ -56,8 +63,17 @@ swr_initialize_screen_interface(struct swr_screen *screen, const char arch[])
    }
 
    screen->pfnSwrGetInterface = (PFNSwrGetInterface)pApiProc;
-   fprintf(stderr, "(using: %s).\n", filename);
+   screen->pfnSwrGetTileInterface = (PFNSwrGetTileInterface)pTileApiProc;
+
+   SWR_ASSERT(screen->pfnSwrGetInterface != nullptr);
+   SWR_ASSERT(screen->pfnSwrGetTileInterface != nullptr);
+   SWR_ASSERT(pInitFunc != nullptr);
+
+   pInitFunc();
+
+   swr_print_info("(using: %s).\n", filename);
 #endif
+
    return true;
 }
 
@@ -76,9 +92,9 @@ swr_create_screen(struct sw_winsys *winsys)
    util_cpu_detect();
 
    if (util_cpu_caps.has_avx512f && util_cpu_caps.has_avx512er) {
-      fprintf(stderr, "SWR detected KNL instruction support ");
+      swr_print_info("SWR detected KNL instruction support ");
 #ifndef HAVE_SWR_KNL
-      fprintf(stderr, "(skipping: not built).\n");
+      swr_print_info("(skipping: not built).\n");
 #else
       if (swr_initialize_screen_interface(screen, "KNL")) {
          screen->is_knl = true;
@@ -88,9 +104,9 @@ swr_create_screen(struct sw_winsys *winsys)
    }
 
    if (util_cpu_caps.has_avx512f && util_cpu_caps.has_avx512bw) {
-      fprintf(stderr, "SWR detected SKX instruction support ");
+      swr_print_info("SWR detected SKX instruction support ");
 #ifndef HAVE_SWR_SKX
-      fprintf(stderr, "(skipping not built).\n");
+      swr_print_info("(skipping not built).\n");
 #else
       if (swr_initialize_screen_interface(screen, "SKX"))
          return p_screen;
@@ -98,9 +114,9 @@ swr_create_screen(struct sw_winsys *winsys)
    }
 
    if (util_cpu_caps.has_avx2) {
-      fprintf(stderr, "SWR detected AVX2 instruction support ");
+      swr_print_info("SWR detected AVX2 instruction support ");
 #ifndef HAVE_SWR_AVX2
-      fprintf(stderr, "(skipping not built).\n");
+      swr_print_info("(skipping not built).\n");
 #else
       if (swr_initialize_screen_interface(screen, "AVX2"))
          return p_screen;
@@ -108,9 +124,9 @@ swr_create_screen(struct sw_winsys *winsys)
    }
 
    if (util_cpu_caps.has_avx) {
-      fprintf(stderr, "SWR detected AVX instruction support ");
+      swr_print_info("SWR detected AVX instruction support ");
 #ifndef HAVE_SWR_AVX
-      fprintf(stderr, "(skipping not built).\n");
+      swr_print_info("(skipping not built).\n");
 #else
       if (swr_initialize_screen_interface(screen, "AVX"))
          return p_screen;