1 # Copyright (C) 2015 Intel Corporation. All Rights Reserved.
3 # Permission is hereby granted, free of charge, to any person obtaining a
4 # copy of this software and associated documentation files (the "Software"),
5 # to deal in the Software without restriction, including without limitation
6 # the rights to use, copy, modify, merge, publish, distribute, sublicense,
7 # and/or sell copies of the Software, and to permit persons to whom the
8 # Software is furnished to do so, subject to the following conditions:
10 # The above copyright notice and this permission notice (including the next
11 # paragraph) shall be included in all copies or substantial portions of the
14 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17 # THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
19 # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
22 include Makefile.sources
23 include $(top_srcdir)/src/gallium/Automake.inc
25 AM_CXXFLAGS = $(GALLIUM_DRIVER_CFLAGS) $(CXX11_CXXFLAGS)
27 noinst_LTLIBRARIES = libmesaswr.la
29 libmesaswr_la_SOURCES = \
31 $(JITTER_CXX_SOURCES) \
35 -fno-strict-aliasing \
36 $(GALLIUM_DRIVER_CFLAGS) \
39 -I$(builddir)/rasterizer/codegen \
40 -I$(builddir)/rasterizer/core \
41 -I$(builddir)/rasterizer/jitter \
42 -I$(builddir)/rasterizer/archrast \
43 -I$(srcdir)/rasterizer \
44 -I$(srcdir)/rasterizer/core \
45 -I$(srcdir)/rasterizer/codegen \
46 -I$(srcdir)/rasterizer/jitter \
47 -I$(srcdir)/rasterizer/archrast
49 # SWR_AVX_CXXFLAGS needed for intrinsic usage in swr api headers
50 libmesaswr_la_CXXFLAGS = \
55 libmesaswr_la_CXXFLAGS += -DHAVE_SWR_AVX
59 libmesaswr_la_CXXFLAGS += -DHAVE_SWR_AVX2
63 libmesaswr_la_CXXFLAGS += -DHAVE_SWR_KNL
67 libmesaswr_la_CXXFLAGS += -DHAVE_SWR_SKX
71 $(ARCHRAST_CXX_SOURCES) \
72 $(COMMON_CXX_SOURCES) \
74 $(MEMORY_CXX_SOURCES) \
78 gen_swr_context_llvm.h \
79 rasterizer/codegen/gen_knobs.cpp \
80 rasterizer/codegen/gen_knobs.h \
81 rasterizer/jitter/gen_state_llvm.h \
82 rasterizer/jitter/gen_builder.hpp \
83 rasterizer/jitter/gen_builder_meta.hpp \
84 rasterizer/jitter/gen_builder_intrin.hpp \
85 rasterizer/codegen/gen_ar_event.hpp \
86 rasterizer/codegen/gen_ar_event.cpp \
87 rasterizer/codegen/gen_ar_eventhandler.hpp \
88 rasterizer/codegen/gen_ar_eventhandlerfile.hpp \
89 rasterizer/core/backends/gen_BackendPixelRate0.cpp \
90 rasterizer/core/backends/gen_BackendPixelRate1.cpp \
91 rasterizer/core/backends/gen_BackendPixelRate2.cpp \
92 rasterizer/core/backends/gen_BackendPixelRate3.cpp \
93 rasterizer/core/backends/gen_BackendPixelRate.hpp \
94 rasterizer/core/backends/gen_rasterizer0.cpp \
95 rasterizer/core/backends/gen_rasterizer1.cpp \
96 rasterizer/core/backends/gen_rasterizer2.cpp \
97 rasterizer/core/backends/gen_rasterizer3.cpp \
98 rasterizer/core/backends/gen_rasterizer.hpp
100 MKDIR_GEN = $(AM_V_at)$(MKDIR_P) $(@D)
101 PYTHON_GEN = $(AM_V_GEN)$(PYTHON) $(PYTHON_FLAGS)
102 gen_swr_context_llvm.h: rasterizer/codegen/gen_llvm_types.py rasterizer/codegen/templates/gen_llvm.hpp swr_context.h
104 $(srcdir)/rasterizer/codegen/gen_llvm_types.py \
105 --input $(srcdir)/swr_context.h \
106 --output ./gen_swr_context_llvm.h
109 rasterizer/codegen/gen_knobs.cpp: rasterizer/codegen/gen_knobs.py rasterizer/codegen/knob_defs.py rasterizer/codegen/templates/gen_knobs.cpp rasterizer/codegen/gen_common.py
112 $(srcdir)/rasterizer/codegen/gen_knobs.py \
113 --output rasterizer/codegen/gen_knobs.cpp \
117 rasterizer/codegen/gen_knobs.h: rasterizer/codegen/gen_knobs.py rasterizer/codegen/knob_defs.py rasterizer/codegen/templates/gen_knobs.h rasterizer/codegen/gen_common.py
120 $(srcdir)/rasterizer/codegen/gen_knobs.py \
121 --output rasterizer/codegen/gen_knobs.h \
125 rasterizer/jitter/gen_state_llvm.h: rasterizer/codegen/gen_llvm_types.py rasterizer/codegen/templates/gen_llvm.hpp rasterizer/core/state.h rasterizer/codegen/gen_common.py
128 $(srcdir)/rasterizer/codegen/gen_llvm_types.py \
129 --input $(srcdir)/rasterizer/core/state.h \
130 --output rasterizer/jitter/gen_state_llvm.h
133 rasterizer/jitter/gen_builder.hpp: rasterizer/codegen/gen_llvm_ir_macros.py rasterizer/codegen/templates/gen_builder.hpp rasterizer/codegen/gen_common.py
136 $(srcdir)/rasterizer/codegen/gen_llvm_ir_macros.py \
137 --input $(LLVM_INCLUDEDIR)/llvm/IR/IRBuilder.h \
138 --output rasterizer/jitter \
142 rasterizer/jitter/gen_builder_meta.hpp: rasterizer/codegen/gen_llvm_ir_macros.py rasterizer/codegen/templates/gen_builder.hpp rasterizer/codegen/gen_common.py
145 $(srcdir)/rasterizer/codegen/gen_llvm_ir_macros.py \
146 --output rasterizer/jitter \
150 rasterizer/jitter/gen_builder_intrin.hpp: rasterizer/codegen/gen_llvm_ir_macros.py rasterizer/codegen/templates/gen_builder.hpp rasterizer/codegen/gen_common.py
153 $(srcdir)/rasterizer/codegen/gen_llvm_ir_macros.py \
154 --output rasterizer/jitter \
158 rasterizer/codegen/gen_ar_event.hpp: rasterizer/codegen/gen_archrast.py rasterizer/codegen/templates/gen_ar_event.hpp rasterizer/archrast/events.proto rasterizer/archrast/events_private.proto rasterizer/codegen/gen_common.py
161 $(srcdir)/rasterizer/codegen/gen_archrast.py \
162 --proto $(srcdir)/rasterizer/archrast/events.proto $(srcdir)/rasterizer/archrast/events_private.proto \
163 --output-dir rasterizer/codegen
166 rasterizer/codegen/gen_ar_event.cpp: rasterizer/codegen/gen_archrast.py rasterizer/codegen/templates/gen_ar_event.cpp rasterizer/archrast/events.proto rasterizer/archrast/events_private.proto rasterizer/codegen/gen_common.py
169 $(srcdir)/rasterizer/codegen/gen_archrast.py \
170 --proto $(srcdir)/rasterizer/archrast/events.proto $(srcdir)/rasterizer/archrast/events_private.proto \
171 --output-dir rasterizer/codegen
174 rasterizer/codegen/gen_ar_eventhandler.hpp: rasterizer/codegen/gen_archrast.py rasterizer/codegen/templates/gen_ar_eventhandler.hpp rasterizer/archrast/events.proto rasterizer/archrast/events_private.proto rasterizer/codegen/gen_common.py
177 $(srcdir)/rasterizer/codegen/gen_archrast.py \
178 --proto $(srcdir)/rasterizer/archrast/events.proto $(srcdir)/rasterizer/archrast/events_private.proto \
179 --output-dir rasterizer/codegen
182 rasterizer/codegen/gen_ar_eventhandlerfile.hpp: rasterizer/codegen/gen_archrast.py rasterizer/codegen/templates/gen_ar_eventhandlerfile.hpp rasterizer/archrast/events.proto rasterizer/archrast/events_private.proto rasterizer/codegen/gen_common.py
185 $(srcdir)/rasterizer/codegen/gen_archrast.py \
186 --proto $(srcdir)/rasterizer/archrast/events.proto $(srcdir)/rasterizer/archrast/events_private.proto \
187 --output-dir rasterizer/codegen
190 rasterizer/core/backends/gen_BackendPixelRate0.cpp \
191 rasterizer/core/backends/gen_BackendPixelRate1.cpp \
192 rasterizer/core/backends/gen_BackendPixelRate2.cpp \
193 rasterizer/core/backends/gen_BackendPixelRate3.cpp \
194 rasterizer/core/backends/gen_BackendPixelRate.hpp: \
197 # 5 SWR_MULTISAMPLE_TYPE_COUNT
198 # 2 SWR_MSAA_SAMPLE_PATTERN_COUNT
199 # 3 SWR_INPUT_COVERAGE_COUNT
201 # 2 forcedSampleCount
204 # use intermediate rule to tell make that all files can be
205 # generated in one invocation of gen_backends.py (prevents
206 # parallel make race condition)
207 .INTERMEDIATE: backend.intermediate
208 backend.intermediate: rasterizer/codegen/gen_backends.py rasterizer/codegen/templates/gen_backend.cpp rasterizer/codegen/templates/gen_header_init.hpp
211 $(srcdir)/rasterizer/codegen/gen_backends.py \
212 --outdir rasterizer/core/backends \
218 rasterizer/core/backends/gen_rasterizer0.cpp \
219 rasterizer/core/backends/gen_rasterizer1.cpp \
220 rasterizer/core/backends/gen_rasterizer2.cpp \
221 rasterizer/core/backends/gen_rasterizer3.cpp \
222 rasterizer/core/backends/gen_rasterizer.hpp: \
223 rasterizer.intermediate
225 # 5 SWR_MULTISAMPLE_TYPE_COUNT
228 # 3 SWR_INPUT_COVERAGE_COUNT
229 # 5 STATE_VALID_TRI_EDGE_COUNT
230 # 2 RasterScissorEdges
232 # use intermediate rule to tell make that all files can be
233 # generated in one invocation of gen_backends.py (prevents
234 # parallel make race condition)
235 .INTERMEDIATE: rasterizer.intermediate
236 rasterizer.intermediate: rasterizer/codegen/gen_backends.py rasterizer/codegen/templates/gen_rasterizer.cpp rasterizer/codegen/templates/gen_header_init.hpp
239 $(srcdir)/rasterizer/codegen/gen_backends.py \
240 --outdir rasterizer/core/backends \
257 libswrAVX_la_CXXFLAGS = \
259 $(SWR_AVX_CXXFLAGS) \
260 -DKNOB_ARCH=KNOB_ARCH_AVX \
263 libswrAVX_la_SOURCES = \
266 libswrAVX_la_LIBADD = \
269 libswrAVX_la_LDFLAGS = \
274 libswrAVX2_la_CXXFLAGS = \
276 $(SWR_AVX2_CXXFLAGS) \
277 -DKNOB_ARCH=KNOB_ARCH_AVX2 \
280 libswrAVX2_la_SOURCES = \
283 libswrAVX2_la_LIBADD = \
286 libswrAVX2_la_LDFLAGS = \
291 libswrKNL_la_CXXFLAGS = \
293 $(SWR_KNL_CXXFLAGS) \
294 -DKNOB_ARCH=KNOB_ARCH_AVX512 -DSIMD_ARCH_KNIGHTS \
297 libswrKNL_la_SOURCES = \
300 libswrKNL_la_LIBADD = \
303 libswrKNL_la_LDFLAGS = \
308 libswrSKX_la_CXXFLAGS = \
310 $(SWR_SKX_CXXFLAGS) \
311 -DKNOB_ARCH=KNOB_ARCH_AVX512 \
314 libswrSKX_la_SOURCES = \
317 libswrSKX_la_LIBADD = \
320 libswrSKX_la_LDFLAGS = \
325 libmesaswr_la_CXXFLAGS += -DHAVE_SWR_BUILTIN
326 libmesaswr_la_LIBADD =
328 noinst_LTLIBRARIES += libswrAVX.la
329 libmesaswr_la_LIBADD += libswrAVX.la
332 noinst_LTLIBRARIES += libswrAVX2.la
333 libmesaswr_la_LIBADD += libswrAVX2.la
336 noinst_LTLIBRARIES += libswrKNL.la
337 libmesaswr_la_LIBADD += libswrKNL.la
340 noinst_LTLIBRARIES += libswrSKX.la
341 libmesaswr_la_LIBADD += libswrSKX.la
343 else # !HAVE_SWR_BUILTIN
344 # gen_knobs.* included here to provide driver access to swr configuration
345 libmesaswr_la_SOURCES += \
346 $(COMMON_CXX_SOURCES) \
347 rasterizer/codegen/gen_knobs.cpp \
348 rasterizer/codegen/gen_knobs.h
350 lib_LTLIBRARIES += libswrAVX.la
353 lib_LTLIBRARIES += libswrAVX2.la
356 lib_LTLIBRARIES += libswrKNL.la
359 lib_LTLIBRARIES += libswrSKX.la
363 include $(top_srcdir)/install-gallium-links.mk
365 # Generated gen_builder.hpp is not backwards compatible. So ship only one
366 # created with the oldest supported version of LLVM.
368 if SWR_INVALID_LLVM_VERSION
369 @echo "*****************************************"
370 @echo "LLVM 6.0.x required to create the tarball"
371 @echo "*****************************************"
378 rasterizer/jitter/meson.build \
379 rasterizer/codegen/meson.build \
380 rasterizer/core/backends/meson.build \
381 rasterizer/archrast/events.proto \
382 rasterizer/archrast/events_private.proto \
383 rasterizer/codegen/gen_llvm_ir_macros.py \
384 rasterizer/codegen/gen_llvm_types.py \
385 rasterizer/codegen/gen_archrast.py \
386 rasterizer/codegen/gen_backends.py \
387 rasterizer/codegen/gen_common.py \
388 rasterizer/codegen/gen_knobs.py \
389 rasterizer/codegen/knob_defs.py \
390 rasterizer/codegen/templates/gen_ar_event.cpp \
391 rasterizer/codegen/templates/gen_ar_event.hpp \
392 rasterizer/codegen/templates/gen_ar_eventhandler.hpp \
393 rasterizer/codegen/templates/gen_ar_eventhandlerfile.hpp \
394 rasterizer/codegen/templates/gen_backend.cpp \
395 rasterizer/codegen/templates/gen_builder.hpp \
396 rasterizer/codegen/templates/gen_header_init.hpp \
397 rasterizer/codegen/templates/gen_knobs.cpp \
398 rasterizer/codegen/templates/gen_knobs.h \
399 rasterizer/codegen/templates/gen_llvm.hpp \
400 rasterizer/codegen/templates/gen_rasterizer.cpp