diff options
author | Tim Rowley <[email protected]> | 2016-02-24 20:56:38 -0600 |
---|---|---|
committer | Tim Rowley <[email protected]> | 2016-03-02 18:38:42 -0600 |
commit | 7bb193d28c4195b5c3dd7897e6c9f5b0df2749cb (patch) | |
tree | 46c518e2ab851ad3a18407c9ff881389177b51d7 /src/gallium/drivers/swr | |
parent | d003be2a303edfe93cde756e56ce31608d51fe7c (diff) |
mesa/build: add OpenSWR to build
Tested on Linux (centos, ubuntu, and suse variants)
Reviewed-by: Emil Velikov <[email protected]>
Acked-by: Jose Fonseca <[email protected]>
Diffstat (limited to 'src/gallium/drivers/swr')
-rw-r--r-- | src/gallium/drivers/swr/.clang-format | 64 | ||||
-rw-r--r-- | src/gallium/drivers/swr/Makefile.am | 31 | ||||
-rw-r--r-- | src/gallium/drivers/swr/Makefile.sources | 23 | ||||
-rw-r--r-- | src/gallium/drivers/swr/Makefile.sources-arch | 111 | ||||
-rw-r--r-- | src/gallium/drivers/swr/avx/Makefile.am | 99 | ||||
-rw-r--r-- | src/gallium/drivers/swr/avx2/Makefile.am | 99 |
6 files changed, 427 insertions, 0 deletions
diff --git a/src/gallium/drivers/swr/.clang-format b/src/gallium/drivers/swr/.clang-format new file mode 100644 index 00000000000..0ec65a5de88 --- /dev/null +++ b/src/gallium/drivers/swr/.clang-format @@ -0,0 +1,64 @@ +--- +Language: Cpp +AccessModifierOffset: -3 +AlignAfterOpenBracket: true +AlignEscapedNewlinesLeft: false +AlignOperands: false +AlignTrailingComments: false +AllowAllParametersOfDeclarationOnNextLine: true +AllowShortBlocksOnASingleLine: false +AllowShortCaseLabelsOnASingleLine: false +AllowShortIfStatementsOnASingleLine: false +AllowShortLoopsOnASingleLine: false +AllowShortFunctionsOnASingleLine: All +AlwaysBreakAfterDefinitionReturnType: true +AlwaysBreakTemplateDeclarations: false +AlwaysBreakBeforeMultilineStrings: false +BreakBeforeBinaryOperators: NonAssignment +BreakBeforeTernaryOperators: true +BreakConstructorInitializersBeforeComma: true +BinPackParameters: false +BinPackArguments: false +ColumnLimit: 78 +ConstructorInitializerAllOnOneLineOrOnePerLine: false +ConstructorInitializerIndentWidth: 3 +DerivePointerAlignment: false +ExperimentalAutoDetectBinPacking: false +IndentCaseLabels: false +IndentWrappedFunctionNames: false +IndentFunctionDeclarationAfterType: false +MaxEmptyLinesToKeep: 2 +KeepEmptyLinesAtTheStartOfBlocks: true +NamespaceIndentation: Inner +ObjCBlockIndentWidth: 3 +ObjCSpaceAfterProperty: true +ObjCSpaceBeforeProtocolList: true +PenaltyBreakBeforeFirstCallParameter: 19 +PenaltyBreakComment: 300 +PenaltyBreakString: 1000 +PenaltyBreakFirstLessLess: 120 +PenaltyExcessCharacter: 1000000 +PenaltyReturnTypeOnItsOwnLine: 0 +PointerAlignment: Right +SpacesBeforeTrailingComments: 1 +Cpp11BracedListStyle: true +Standard: Cpp11 +IndentWidth: 3 +TabWidth: 8 +UseTab: Never +BreakBeforeBraces: Linux +SpacesInParentheses: false +SpacesInSquareBrackets: false +SpacesInAngles: false +SpaceInEmptyParentheses: false +SpacesInCStyleCastParentheses: false +SpaceAfterCStyleCast: false +SpacesInContainerLiterals: true +SpaceBeforeAssignmentOperators: true +ContinuationIndentWidth: 3 +CommentPragmas: '^ IWYU pragma:' +ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ] +SpaceBeforeParens: ControlStatements +DisableFormat: false +... + diff --git a/src/gallium/drivers/swr/Makefile.am b/src/gallium/drivers/swr/Makefile.am new file mode 100644 index 00000000000..f08806aaf77 --- /dev/null +++ b/src/gallium/drivers/swr/Makefile.am @@ -0,0 +1,31 @@ +# Copyright (C) 2015 Intel Corporation. All Rights Reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice (including the next +# paragraph) shall be included in all copies or substantial portions of the +# Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +# IN THE SOFTWARE. + +include Makefile.sources +include $(top_srcdir)/src/gallium/Automake.inc + +AM_CXXFLAGS = $(GALLIUM_DRIVER_CFLAGS) + +noinst_LTLIBRARIES = libmesaswr.la + +libmesaswr_la_SOURCES = $(LOADER_SOURCES) + +EXTRA_DIST = Makefile.sources-arch diff --git a/src/gallium/drivers/swr/Makefile.sources b/src/gallium/drivers/swr/Makefile.sources new file mode 100644 index 00000000000..72247211184 --- /dev/null +++ b/src/gallium/drivers/swr/Makefile.sources @@ -0,0 +1,23 @@ +# Copyright (C) 2015 Intel Corporation. All Rights Reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice (including the next +# paragraph) shall be included in all copies or substantial portions of the +# Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +# IN THE SOFTWARE. + +LOADER_SOURCES := \ + swr_loader.cpp diff --git a/src/gallium/drivers/swr/Makefile.sources-arch b/src/gallium/drivers/swr/Makefile.sources-arch new file mode 100644 index 00000000000..6c105f46199 --- /dev/null +++ b/src/gallium/drivers/swr/Makefile.sources-arch @@ -0,0 +1,111 @@ +# Copyright (C) 2015 Intel Corporation. All Rights Reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice (including the next +# paragraph) shall be included in all copies or substantial portions of the +# Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +# IN THE SOFTWARE. + +CXX_SOURCES := \ + swr_clear.cpp \ + swr_context.cpp \ + swr_context.h \ + swr_context_llvm.h \ + swr_draw.cpp \ + swr_public.h \ + swr_resource.h \ + swr_screen.cpp \ + swr_screen.h \ + swr_state.cpp \ + swr_state.h \ + swr_tex_sample.cpp \ + swr_tex_sample.h \ + swr_scratch.h \ + swr_scratch.cpp \ + swr_shader.cpp \ + swr_memory.h \ + swr_fence.h \ + swr_fence.cpp \ + swr_query.h \ + swr_query.cpp + +COMMON_CXX_SOURCES := \ + rasterizer/common/containers.hpp \ + rasterizer/common/formats.cpp \ + rasterizer/common/formats.h \ + rasterizer/common/isa.hpp \ + rasterizer/common/os.h \ + rasterizer/common/rdtsc_buckets.cpp \ + rasterizer/common/rdtsc_buckets.h \ + rasterizer/common/rdtsc_buckets_shared.h \ + rasterizer/common/rdtsc_buckets_shared.h \ + rasterizer/common/simdintrin.h \ + rasterizer/common/swr_assert.cpp \ + rasterizer/common/swr_assert.h + +CORE_CXX_SOURCES := \ + rasterizer/core/api.cpp \ + rasterizer/core/api.h \ + rasterizer/core/arena.cpp \ + rasterizer/core/arena.h \ + rasterizer/core/backend.cpp \ + rasterizer/core/backend.h \ + rasterizer/core/blend.h \ + rasterizer/core/clip.cpp \ + rasterizer/core/clip.h \ + rasterizer/core/context.h \ + rasterizer/core/depthstencil.h \ + rasterizer/core/fifo.hpp \ + rasterizer/core/format_traits.h \ + rasterizer/core/format_types.h \ + rasterizer/core/frontend.cpp \ + rasterizer/core/frontend.h \ + rasterizer/core/knobs.h \ + rasterizer/core/knobs_init.h \ + rasterizer/core/multisample.cpp \ + rasterizer/core/multisample.h \ + rasterizer/core/pa_avx.cpp \ + rasterizer/core/pa.h \ + rasterizer/core/rasterizer.cpp \ + rasterizer/core/rasterizer.h \ + rasterizer/core/rdtsc_core.cpp \ + rasterizer/core/rdtsc_core.h \ + rasterizer/core/state.h \ + rasterizer/core/threads.cpp \ + rasterizer/core/threads.h \ + rasterizer/core/tilemgr.cpp \ + rasterizer/core/tilemgr.h \ + rasterizer/core/utils.cpp \ + rasterizer/core/utils.h + +JITTER_CXX_SOURCES := \ + rasterizer/jitter/blend_jit.cpp \ + rasterizer/jitter/blend_jit.h \ + rasterizer/jitter/builder.cpp \ + rasterizer/jitter/builder.h \ + rasterizer/jitter/builder_misc.cpp \ + rasterizer/jitter/builder_misc.h \ + rasterizer/jitter/fetch_jit.cpp \ + rasterizer/jitter/fetch_jit.h \ + rasterizer/jitter/JitManager.cpp \ + rasterizer/jitter/JitManager.h \ + rasterizer/jitter/streamout_jit.cpp \ + rasterizer/jitter/streamout_jit.h + +MEMORY_CXX_SOURCES := \ + rasterizer/memory/ClearTile.cpp \ + rasterizer/memory/LoadTile.cpp \ + rasterizer/memory/StoreTile.cpp diff --git a/src/gallium/drivers/swr/avx/Makefile.am b/src/gallium/drivers/swr/avx/Makefile.am new file mode 100644 index 00000000000..384f1a7eecf --- /dev/null +++ b/src/gallium/drivers/swr/avx/Makefile.am @@ -0,0 +1,99 @@ +# Copyright (C) 2015 Intel Corporation. All Rights Reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice (including the next +# paragraph) shall be included in all copies or substantial portions of the +# Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +# IN THE SOFTWARE. + +include ../Makefile.sources-arch +include $(top_srcdir)/src/gallium/Automake.inc + +VPATH = $(srcdir) $(srcdir)/.. + +AM_CXXFLAGS = \ + -march=core-avx-i \ + -DKNOB_ARCH=KNOB_ARCH_AVX \ + $(GALLIUM_DRIVER_CFLAGS) \ + $(LLVM_CFLAGS) \ + -I$(builddir)/rasterizer/scripts \ + -I$(builddir)/rasterizer/jitter \ + -I$(srcdir)/../rasterizer \ + -I$(srcdir)/../rasterizer/core \ + -I$(srcdir)/../rasterizer/jitter + +lib_LTLIBRARIES = libswrAVX.la + +BUILT_SOURCES = \ + rasterizer/scripts/gen_knobs.cpp \ + rasterizer/scripts/gen_knobs.h \ + rasterizer/jitter/state_llvm.h \ + rasterizer/jitter/builder_gen.h \ + rasterizer/jitter/builder_gen.cpp \ + rasterizer/jitter/builder_x86.h \ + rasterizer/jitter/builder_x86.cpp + +libswrAVX_la_SOURCES = \ + $(CXX_SOURCES) \ + $(COMMON_CXX_SOURCES) \ + $(CORE_CXX_SOURCES) \ + $(JITTER_CXX_SOURCES) \ + $(MEMORY_CXX_SOURCES) \ + $(BUILT_SOURCES) + +rasterizer/scripts/gen_knobs.cpp rasterizer/scripts/gen_knobs.h: rasterizer/scripts/gen_knobs.py rasterizer/scripts/knob_defs.py rasterizer/scripts/templates/knobs.template + $(PYTHON2) $(PYTHON_FLAGS) \ + $(srcdir)/../rasterizer/scripts/gen_knobs.py \ + rasterizer/scripts + +rasterizer/jitter/state_llvm.h: rasterizer/jitter/scripts/gen_llvm_types.py rasterizer/core/state.h + $(PYTHON2) $(PYTHON_FLAGS) \ + $(srcdir)/../rasterizer/jitter/scripts/gen_llvm_types.py \ + --input $(srcdir)/../rasterizer/core/state.h \ + --output rasterizer/jitter/state_llvm.h + +rasterizer/jitter/builder_gen.h: rasterizer/jitter/scripts/gen_llvm_ir_macros.py $(LLVM_INCLUDEDIR)/llvm/IR/IRBuilder.h + $(PYTHON2) $(PYTHON_FLAGS) \ + $(srcdir)/../rasterizer/jitter/scripts/gen_llvm_ir_macros.py \ + --input $(LLVM_INCLUDEDIR)/llvm/IR/IRBuilder.h \ + --output rasterizer/jitter/builder_gen.h \ + --gen_h + +rasterizer/jitter/builder_gen.cpp: rasterizer/jitter/scripts/gen_llvm_ir_macros.py $(LLVM_INCLUDEDIR)/llvm/IR/IRBuilder.h + $(PYTHON2) $(PYTHON_FLAGS) \ + $(srcdir)/../rasterizer/jitter/scripts/gen_llvm_ir_macros.py \ + --input $(LLVM_INCLUDEDIR)/llvm/IR/IRBuilder.h \ + --output rasterizer/jitter/builder_gen.cpp \ + --gen_cpp + +rasterizer/jitter/builder_x86.h: rasterizer/jitter/scripts/gen_llvm_ir_macros.py + $(PYTHON2) $(PYTHON_FLAGS) \ + $(srcdir)/../rasterizer/jitter/scripts/gen_llvm_ir_macros.py \ + --output rasterizer/jitter/builder_x86.h \ + --gen_x86_h + +rasterizer/jitter/builder_x86.cpp: rasterizer/jitter/scripts/gen_llvm_ir_macros.py + $(PYTHON2) $(PYTHON_FLAGS) \ + $(srcdir)/../rasterizer/jitter/scripts/gen_llvm_ir_macros.py \ + --output rasterizer/jitter/builder_x86.cpp \ + --gen_x86_cpp + + +libswrAVX_la_LIBADD = \ + $(top_builddir)/src/gallium/auxiliary/libgallium.la \ + $(top_builddir)/src/mesa/libmesagallium.la + +include $(top_srcdir)/install-gallium-links.mk diff --git a/src/gallium/drivers/swr/avx2/Makefile.am b/src/gallium/drivers/swr/avx2/Makefile.am new file mode 100644 index 00000000000..a3968ecd95e --- /dev/null +++ b/src/gallium/drivers/swr/avx2/Makefile.am @@ -0,0 +1,99 @@ +# Copyright (C) 2015 Intel Corporation. All Rights Reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice (including the next +# paragraph) shall be included in all copies or substantial portions of the +# Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +# IN THE SOFTWARE. + +include ../Makefile.sources-arch +include $(top_srcdir)/src/gallium/Automake.inc + +VPATH = $(srcdir) $(srcdir)/.. + +AM_CXXFLAGS = \ + -march=core-avx2 \ + -DKNOB_ARCH=KNOB_ARCH_AVX2 \ + $(GALLIUM_DRIVER_CFLAGS) \ + $(LLVM_CFLAGS) \ + -I$(builddir)/rasterizer/scripts \ + -I$(builddir)/rasterizer/jitter \ + -I$(srcdir)/../rasterizer \ + -I$(srcdir)/../rasterizer/core \ + -I$(srcdir)/../rasterizer/jitter + +lib_LTLIBRARIES = libswrAVX2.la + +BUILT_SOURCES = \ + rasterizer/scripts/gen_knobs.cpp \ + rasterizer/scripts/gen_knobs.h \ + rasterizer/jitter/state_llvm.h \ + rasterizer/jitter/builder_gen.h \ + rasterizer/jitter/builder_gen.cpp \ + rasterizer/jitter/builder_x86.h \ + rasterizer/jitter/builder_x86.cpp + +libswrAVX2_la_SOURCES = \ + $(CXX_SOURCES) \ + $(COMMON_CXX_SOURCES) \ + $(CORE_CXX_SOURCES) \ + $(JITTER_CXX_SOURCES) \ + $(MEMORY_CXX_SOURCES) \ + $(BUILT_SOURCES) + +rasterizer/scripts/gen_knobs.cpp rasterizer/scripts/gen_knobs.h: rasterizer/scripts/gen_knobs.py rasterizer/scripts/knob_defs.py rasterizer/scripts/templates/knobs.template + $(PYTHON2) $(PYTHON_FLAGS) \ + $(srcdir)/../rasterizer/scripts/gen_knobs.py \ + rasterizer/scripts + +rasterizer/jitter/state_llvm.h: rasterizer/jitter/scripts/gen_llvm_types.py rasterizer/core/state.h + $(PYTHON2) $(PYTHON_FLAGS) \ + $(srcdir)/../rasterizer/jitter/scripts/gen_llvm_types.py \ + --input $(srcdir)/../rasterizer/core/state.h \ + --output rasterizer/jitter/state_llvm.h + +rasterizer/jitter/builder_gen.h: rasterizer/jitter/scripts/gen_llvm_ir_macros.py $(LLVM_INCLUDEDIR)/llvm/IR/IRBuilder.h + $(PYTHON2) $(PYTHON_FLAGS) \ + $(srcdir)/../rasterizer/jitter/scripts/gen_llvm_ir_macros.py \ + --input $(LLVM_INCLUDEDIR)/llvm/IR/IRBuilder.h \ + --output rasterizer/jitter/builder_gen.h \ + --gen_h + +rasterizer/jitter/builder_gen.cpp: rasterizer/jitter/scripts/gen_llvm_ir_macros.py $(LLVM_INCLUDEDIR)/llvm/IR/IRBuilder.h + $(PYTHON2) $(PYTHON_FLAGS) \ + $(srcdir)/../rasterizer/jitter/scripts/gen_llvm_ir_macros.py \ + --input $(LLVM_INCLUDEDIR)/llvm/IR/IRBuilder.h \ + --output rasterizer/jitter/builder_gen.cpp \ + --gen_cpp + +rasterizer/jitter/builder_x86.h: rasterizer/jitter/scripts/gen_llvm_ir_macros.py + $(PYTHON2) $(PYTHON_FLAGS) \ + $(srcdir)/../rasterizer/jitter/scripts/gen_llvm_ir_macros.py \ + --output rasterizer/jitter/builder_x86.h \ + --gen_x86_h + +rasterizer/jitter/builder_x86.cpp: rasterizer/jitter/scripts/gen_llvm_ir_macros.py + $(PYTHON2) $(PYTHON_FLAGS) \ + $(srcdir)/../rasterizer/jitter/scripts/gen_llvm_ir_macros.py \ + --output rasterizer/jitter/builder_x86.cpp \ + --gen_x86_cpp + + +libswrAVX2_la_LIBADD = \ + $(top_builddir)/src/gallium/auxiliary/libgallium.la \ + $(top_builddir)/src/mesa/libmesagallium.la + +include $(top_srcdir)/install-gallium-links.mk |