* IN THE SOFTWARE.
***************************************************************************/
+#include "memory/InitMemory.h"
#include "util/u_cpu_detect.h"
#include "util/u_dl.h"
#include "swr_public.h"
#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);
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;
}
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;
}
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;
}
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;
}
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;
}
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;