[Mesa-dev] [PATCH v2 5/8] gallium scons: Added swr driver to scons

George Kyriazis george.kyriazis at intel.com
Wed Nov 9 23:18:43 UTC 2016


Enable swr builds by "scons swr=1 libgl-gdi" (windows only)
---
 src/gallium/SConscript             |   1 +
 src/gallium/drivers/swr/SConscript | 199 +++++++++++++++++++++++++++++++++++++
 2 files changed, 200 insertions(+)
 create mode 100644 src/gallium/drivers/swr/SConscript

diff --git a/src/gallium/SConscript b/src/gallium/SConscript
index f98268f..9273db7 100644
--- a/src/gallium/SConscript
+++ b/src/gallium/SConscript
@@ -18,6 +18,7 @@ SConscript([
     'drivers/softpipe/SConscript',
     'drivers/svga/SConscript',
     'drivers/trace/SConscript',
+    'drivers/swr/SConscript',
 ])
 
 #
diff --git a/src/gallium/drivers/swr/SConscript b/src/gallium/drivers/swr/SConscript
new file mode 100644
index 0000000..afd3d12
--- /dev/null
+++ b/src/gallium/drivers/swr/SConscript
@@ -0,0 +1,199 @@
+Import('*')
+
+from sys import executable as python_cmd
+import os.path
+import SCons.Script.SConscript
+
+if 'swr' in SCons.Script.ARGUMENTS and not SCons.Script.ARGUMENTS['swr']:
+    Return()
+
+if not env['llvm']:
+    print 'warning: LLVM disabled: not building swr'
+    Return()
+
+
+env.MSVC2013Compat()
+
+env = env.Clone()
+
+# construct llvm include dir
+llvm_includedir = os.path.join(os.environ['LLVM'], 'include')
+
+# the loader is included in the mesa lib itself
+# All the remaining files are in loadable modules
+loadersource = env.ParseSourceList('Makefile.sources', [
+    'LOADER_SOURCES'
+])
+
+env.Append(CPPDEFINES = [
+    '__STDC_CONSTANT_MACROS',
+    '__STDC_LIMIT_MACROS'
+    ])
+
+if not env['msvc'] :
+    env.Append(CCFLAGS = [
+        '-std=c++11',
+    ])
+
+swrroot = '#src/gallium/drivers/swr/'
+
+env.CodeGenerate(
+    target = 'rasterizer/scripts/gen_knobs.cpp',
+    script = swrroot + 'rasterizer/scripts/gen_knobs.py',
+    source = [],
+    command = python_cmd + ' $SCRIPT ' + Dir('rasterizer/scripts').abspath
+)
+
+env.CodeGenerate(
+    target = 'rasterizer/scripts/gen_knobs.h',
+    script = swrroot + 'rasterizer/scripts/gen_knobs.py',
+    source = [],
+    command = python_cmd + ' $SCRIPT ' + Dir('rasterizer/scripts').abspath
+)
+
+env.CodeGenerate(
+    target = 'rasterizer/jitter/state_llvm.h',
+    script = swrroot + 'rasterizer/jitter/scripts/gen_llvm_types.py',
+    source = 'rasterizer/core/state.h',
+    command = python_cmd + ' $SCRIPT --input $SOURCE --output $TARGET'
+)
+
+env.CodeGenerate(
+    target = 'rasterizer/jitter/builder_gen.h',
+    script = swrroot + 'rasterizer/jitter/scripts/gen_llvm_ir_macros.py',
+    source = os.path.join(llvm_includedir, 'llvm/IR/IRBuilder.h'),
+    command = python_cmd + ' $SCRIPT --input $SOURCE --output $TARGET --gen_h'
+)
+
+env.CodeGenerate(
+    target = 'rasterizer/jitter/builder_gen.cpp',
+    script = swrroot + 'rasterizer/jitter/scripts/gen_llvm_ir_macros.py',
+    source = os.path.join(llvm_includedir, 'llvm/IR/IRBuilder.h'),
+    command = python_cmd + ' $SCRIPT --input $SOURCE --output $TARGET --gen_cpp'
+)
+
+env.CodeGenerate(
+    target = 'rasterizer/jitter/builder_x86.h',
+    script = swrroot + 'rasterizer/jitter/scripts/gen_llvm_ir_macros.py',
+    source = '',
+    command = python_cmd + ' $SCRIPT --output $TARGET --gen_x86_h'
+)
+
+env.CodeGenerate(
+    target = 'rasterizer/jitter/builder_x86.cpp',
+    script = swrroot + 'rasterizer/jitter/scripts/gen_llvm_ir_macros.py',
+    source = '',
+    command = python_cmd + ' $SCRIPT --output $TARGET --gen_x86_cpp'
+)
+
+env.CodeGenerate(
+    target = 'swr_context_llvm.h',
+    script = swrroot + 'rasterizer/jitter/scripts/gen_llvm_types.py',
+    source = 'swr_context.h',
+    command = python_cmd + ' $SCRIPT --input $SOURCE --output $TARGET'
+)
+
+env.CodeGenerate(
+    target = 'rasterizer/archrast/gen_ar_event.h',
+    script = swrroot + 'rasterizer/scripts/gen_archrast.py',
+    source = 'rasterizer/archrast/events.proto',
+    command = python_cmd + ' $SCRIPT --proto $SOURCE --output $TARGET --gen_event_h'
+)
+
+env.CodeGenerate(
+    target = 'rasterizer/archrast/gen_ar.event.cpp',
+    script = swrroot + 'rasterizer/scripts/gen_archrast.py',
+    source = 'rasterizer/archrast/events.proto',
+    command = python_cmd + ' $SCRIPT --proto $SOURCE --output $TARGET --gen-event_cpp'
+)
+
+env.CodeGenerate(
+    target = 'rasterizer/archrast/gen_ar_eventhandler.h',
+    script = swrroot + 'rasterizer/scripts/gen_archrast.py',
+    source = 'rasterizer/archrast/events.proto',
+    command = python_cmd + ' $SCRIPT --proto $SOURCE --output $TARGET --gen_eventhandler_h'
+)
+
+env.CodeGenerate(
+    target = 'rasterizer/archrast/gen_ar_eventhandlerfile.h',
+    script = swrroot + 'rasterizer/scripts/gen_archrast.py',
+    source = 'rasterizer/archrast/events.proto',
+    command = python_cmd + ' $SCRIPT --proto $SOURCE --output $TARGET --gen_eventhandlerfile_h'
+)
+
+source = [
+    'rasterizer/scripts/gen_knobs.cpp',
+    'rasterizer/jitter/builder_gen.cpp',
+    'rasterizer/jitter/builder_x86.cpp',
+    ]
+
+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',
+    'rasterizer/scripts',
+    'rasterizer/core',
+    'rasterizer/jitter',
+    'rasterizer/archrast',
+    ])
+
+# AVX lib
+envavx = env.Clone()
+
+envavx.Append(CPPDEFINES = ['KNOB_ARCH=KNOB_ARCH_AVX'])
+if env['platform'] == 'windows':
+    envavx.Append(CCFLAGS = ['/arch:AVX'])
+else:
+    envavx.Append(CCFLAGS = ['-mavx'])
+
+swrAVX = envavx.SharedLibrary(
+    target = 'swrAVX',
+    source = source,
+    OBJPREFIX = 'avx_'
+    )
+env.Alias('swrAVX', swrAVX)
+
+# AVX2 lib
+envavx2 = env.Clone()
+
+envavx2.Append(CPPDEFINES = ['KNOB_ARCH=KNOB_ARCH_AVX2'])
+if env['platform'] == 'windows':
+    envavx2.Append(CCFLAGS = ['/arch:AVX2'])
+else:
+    envavx2.Append(CCFLAGS = ['-mavx2'])
+
+swrAVX2 = envavx2.SharedLibrary(
+    target = 'swrAVX2',
+    source = source,
+    OBJPREFIX = 'avx2_'
+    )
+env.Alias('swrAVX2', swrAVX2)
+
+
+# main SWR lib
+swr = env.ConvenienceLibrary(
+    target = 'swr',
+    source = loadersource,
+    )
+
+
+# treat arch libs as dependencies, even though they are not linked
+# into swr, so we don't have to build them separately
+Depends(swr, ['swrAVX', 'swrAVX2'])
+
+env.Alias('swr', swr)
+
+env.Prepend(LIBS = [swr])
+
+Export('swr')
-- 
2.10.0.windows.1



More information about the mesa-dev mailing list