--- mesa-17.2.0-rc4/src/gallium/drivers/swr/Makefile.am.0205~ 2017-08-16 05:00:36.323889115 +0200 +++ mesa-17.2.0-rc4/src/gallium/drivers/swr/Makefile.am 2017-08-16 05:03:00.696968723 +0200 @@ -26,14 +26,7 @@ AM_CXXFLAGS = $(GALLIUM_DRIVER_CFLAGS) $ noinst_LTLIBRARIES = libmesaswr.la -# gen_knobs.* included here to provide driver access to swr configuration -libmesaswr_la_SOURCES = \ - $(CXX_SOURCES) \ - $(COMMON_CXX_SOURCES) \ - $(JITTER_CXX_SOURCES) \ - rasterizer/codegen/gen_knobs.cpp \ - rasterizer/codegen/gen_knobs.h \ - $(LOADER_SOURCES) +libmesaswr_la_SOURCES = $(LOADER_SOURCES) COMMON_CXXFLAGS = \ -fno-strict-aliasing \ @@ -50,10 +43,7 @@ COMMON_CXXFLAGS = \ -I$(srcdir)/rasterizer/jitter \ -I$(srcdir)/rasterizer/archrast -# SWR_AVX_CXXFLAGS needed for intrinsic usage in swr api headers -libmesaswr_la_CXXFLAGS = \ - $(SWR_AVX_CXXFLAGS) \ - $(COMMON_CXXFLAGS) +libmesaswr_la_CXXFLAGS = $(COMMON_CXXFLAGS) if HAVE_SWR_AVX libmesaswr_la_CXXFLAGS += -DHAVE_SWR_AVX @@ -72,9 +62,11 @@ libmesaswr_la_CXXFLAGS += -DHAVE_SWR_SKX endif COMMON_SOURCES = \ + $(CXX_SOURCES) \ $(ARCHRAST_CXX_SOURCES) \ $(COMMON_CXX_SOURCES) \ $(CORE_CXX_SOURCES) \ + $(JITTER_CXX_SOURCES) \ $(MEMORY_CXX_SOURCES) \ $(BUILT_SOURCES) @@ -238,10 +230,16 @@ COMMON_LDFLAGS = \ -module \ -no-undefined \ $(GC_SECTIONS) \ - $(LD_NO_UNDEFINED) + $(LD_NO_UNDEFINED) \ + $(LLVM_LDFLAGS) lib_LTLIBRARIES = +COMMON_LIBADD = \ + $(top_builddir)/src/gallium/auxiliary/libgallium.la \ + $(top_builddir)/src/mesa/libmesagallium.la \ + $(LLVM_LIBS) + if HAVE_SWR_AVX lib_LTLIBRARIES += libswrAVX.la @@ -257,6 +255,9 @@ libswrAVX_la_SOURCES = \ libswrAVX_la_LIBADD = \ $(PTHREAD_LIBS) +libswrAVX_la_LIBADD = \ + $(COMMON_LIBADD) + libswrAVX_la_LDFLAGS = \ $(COMMON_LDFLAGS) endif @@ -275,6 +276,9 @@ libswrAVX2_la_SOURCES = \ libswrAVX2_la_LIBADD = \ $(PTHREAD_LIBS) +libswrAVX2_la_LIBADD = \ + $(COMMON_LIBADD) + libswrAVX2_la_LDFLAGS = \ $(COMMON_LDFLAGS) endif --- mesa-17.2.0-rc4/src/gallium/drivers/swr/SConscript.0205~ 2017-08-12 18:09:52.000000000 +0200 +++ mesa-17.2.0-rc4/src/gallium/drivers/swr/SConscript 2017-08-16 05:00:29.273274710 +0200 @@ -30,6 +30,12 @@ else: llvm_includedir = env.backtick('%s --includedir' % llvm_config).rstrip() print "llvm include dir %s" % llvm_includedir +# the loader is included in the mesa lib itself +# All the remaining files are in loadable modules +loadersource = env.ParseSourceList('Makefile.sources', [ + 'LOADER_SOURCES' +]) + if not env['msvc'] : env.Append(CCFLAGS = [ '-std=c++11', @@ -185,12 +191,16 @@ built_sources += [backendPixelRateFiles, source = built_sources source += env.ParseSourceList(swrroot + 'Makefile.sources', [ + 'CXX_SOURCES', 'ARCHRAST_CXX_SOURCES', 'COMMON_CXX_SOURCES', 'CORE_CXX_SOURCES', + 'JITTER_CXX_SOURCES', 'MEMORY_CXX_SOURCES' ]) +env.Prepend(LIBS = [ mesautil, mesa, gallium ]) + env.Prepend(CPPPATH = [ '.', 'rasterizer', --- mesa-17.2.0-rc4/src/gallium/drivers/swr/swr_context.cpp.0205~ 2017-08-12 18:09:52.000000000 +0200 +++ mesa-17.2.0-rc4/src/gallium/drivers/swr/swr_context.cpp 2017-08-16 05:00:29.274274655 +0200 @@ -467,7 +467,7 @@ swr_create_context(struct pipe_screen *p AlignedMalloc(sizeof(struct swr_context), KNOB_SIMD_BYTES); memset(ctx, 0, sizeof(struct swr_context)); - swr_screen(p_screen)->pfnSwrGetInterface(ctx->api); + SwrGetInterface(ctx->api); ctx->swrDC.pAPI = &ctx->api; ctx->blendJIT = --- mesa-17.2.0-rc4/src/gallium/drivers/swr/swr_loader.cpp.0205~ 2017-08-12 18:09:52.000000000 +0200 +++ mesa-17.2.0-rc4/src/gallium/drivers/swr/swr_loader.cpp 2017-08-16 05:00:29.274274655 +0200 @@ -24,10 +24,13 @@ #include "util/u_cpu_detect.h" #include "util/u_dl.h" #include "swr_public.h" -#include "swr_screen.h" + +#include "pipe/p_screen.h" #include +typedef pipe_screen *(*screen_create_proc)(struct sw_winsys *winsys); + struct pipe_screen * swr_create_screen(struct sw_winsys *winsys) { @@ -90,17 +93,16 @@ swr_create_screen(struct sw_winsys *wins exit(-1); } - util_dl_proc pApiProc = util_dl_get_proc_address(pLibrary, "SwrGetInterface"); + util_dl_proc pScreenProc = util_dl_get_proc_address(pLibrary, "swr_create_screen_internal"); - if (!pApiProc) { + if (!pScreenProc) { fprintf(stderr, "SWR library search failure: %s\n", util_dl_error()); exit(-1); } - struct pipe_screen *screen = swr_create_screen_internal(winsys); - swr_screen(screen)->pfnSwrGetInterface = (PFNSwrGetInterface)pApiProc; + screen_create_proc pScreenCreate = (screen_create_proc)pScreenProc; - return screen; + return pScreenCreate(winsys); } --- mesa-17.2.0-rc4/src/gallium/drivers/swr/swr_screen.h.0205~ 2017-08-12 18:09:52.000000000 +0200 +++ mesa-17.2.0-rc4/src/gallium/drivers/swr/swr_screen.h 2017-08-16 05:00:29.274274655 +0200 @@ -49,8 +49,6 @@ struct swr_screen { uint32_t client_copy_limit; HANDLE hJitMgr; - - PFNSwrGetInterface pfnSwrGetInterface; }; static INLINE struct swr_screen *