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/archrast/gen_ar_event.hpp \
86 rasterizer/archrast/gen_ar_event.cpp \
87 rasterizer/archrast/gen_ar_eventhandler.hpp \
88 rasterizer/archrast/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)$(PYTHON2) $(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/archrast/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 \
163 --proto_private $(srcdir)/rasterizer/archrast/events_private.proto \
164 --output rasterizer/archrast/gen_ar_event.hpp \
168 rasterizer/archrast/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
171 $(srcdir)/rasterizer/codegen/gen_archrast.py \
172 --proto $(srcdir)/rasterizer/archrast/events.proto \
173 --proto_private $(srcdir)/rasterizer/archrast/events_private.proto \
174 --output rasterizer/archrast/gen_ar_event.cpp \
178 rasterizer/archrast/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
181 $(srcdir)/rasterizer/codegen/gen_archrast.py \
182 --proto $(srcdir)/rasterizer/archrast/events.proto \
183 --proto_private $(srcdir)/rasterizer/archrast/events_private.proto \
184 --output rasterizer/archrast/gen_ar_eventhandler.hpp \
185 --gen_eventhandler_hpp
188 rasterizer/archrast/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
191 $(srcdir)/rasterizer/codegen/gen_archrast.py \
192 --proto $(srcdir)/rasterizer/archrast/events.proto \
193 --proto_private $(srcdir)/rasterizer/archrast/events_private.proto \
194 --output rasterizer/archrast/gen_ar_eventhandlerfile.hpp \
195 --gen_eventhandlerfile_hpp
198 rasterizer/core/backends/gen_BackendPixelRate0.cpp \
199 rasterizer/core/backends/gen_BackendPixelRate1.cpp \
200 rasterizer/core/backends/gen_BackendPixelRate2.cpp \
201 rasterizer/core/backends/gen_BackendPixelRate3.cpp \
202 rasterizer/core/backends/gen_BackendPixelRate.hpp: \
205 # 5 SWR_MULTISAMPLE_TYPE_COUNT
206 # 2 SWR_MSAA_SAMPLE_PATTERN_COUNT
207 # 3 SWR_INPUT_COVERAGE_COUNT
209 # 2 forcedSampleCount
212 # use intermediate rule to tell make that all files can be
213 # generated in one invocation of gen_backends.py (prevents
214 # parallel make race condition)
215 .INTERMEDIATE: backend.intermediate
216 backend.intermediate: rasterizer/codegen/gen_backends.py rasterizer/codegen/templates/gen_backend.cpp rasterizer/codegen/templates/gen_header_init.hpp
219 $(srcdir)/rasterizer/codegen/gen_backends.py \
220 --outdir rasterizer/core/backends \
226 rasterizer/core/backends/gen_rasterizer0.cpp \
227 rasterizer/core/backends/gen_rasterizer1.cpp \
228 rasterizer/core/backends/gen_rasterizer2.cpp \
229 rasterizer/core/backends/gen_rasterizer3.cpp \
230 rasterizer/core/backends/gen_rasterizer.hpp: \
231 rasterizer.intermediate
233 # 5 SWR_MULTISAMPLE_TYPE_COUNT
236 # 3 SWR_INPUT_COVERAGE_COUNT
237 # 5 STATE_VALID_TRI_EDGE_COUNT
238 # 2 RasterScissorEdges
240 # use intermediate rule to tell make that all files can be
241 # generated in one invocation of gen_backends.py (prevents
242 # parallel make race condition)
243 .INTERMEDIATE: rasterizer.intermediate
244 rasterizer.intermediate: rasterizer/codegen/gen_backends.py rasterizer/codegen/templates/gen_rasterizer.cpp rasterizer/codegen/templates/gen_header_init.hpp
247 $(srcdir)/rasterizer/codegen/gen_backends.py \
248 --outdir rasterizer/core/backends \
265 libswrAVX_la_CXXFLAGS = \
267 $(SWR_AVX_CXXFLAGS) \
268 -DKNOB_ARCH=KNOB_ARCH_AVX \
271 libswrAVX_la_SOURCES = \
274 libswrAVX_la_LIBADD = \
277 libswrAVX_la_LDFLAGS = \
282 libswrAVX2_la_CXXFLAGS = \
284 $(SWR_AVX2_CXXFLAGS) \
285 -DKNOB_ARCH=KNOB_ARCH_AVX2 \
288 libswrAVX2_la_SOURCES = \
291 libswrAVX2_la_LIBADD = \
294 libswrAVX2_la_LDFLAGS = \
299 libswrKNL_la_CXXFLAGS = \
301 $(SWR_KNL_CXXFLAGS) \
302 -DKNOB_ARCH=KNOB_ARCH_AVX512 -DSIMD_ARCH_KNIGHTS \
305 libswrKNL_la_SOURCES = \
308 libswrKNL_la_LIBADD = \
311 libswrKNL_la_LDFLAGS = \
316 libswrSKX_la_CXXFLAGS = \
318 $(SWR_SKX_CXXFLAGS) \
319 -DKNOB_ARCH=KNOB_ARCH_AVX512 \
322 libswrSKX_la_SOURCES = \
325 libswrSKX_la_LIBADD = \
328 libswrSKX_la_LDFLAGS = \
333 libmesaswr_la_CXXFLAGS += -DHAVE_SWR_BUILTIN
334 libmesaswr_la_LIBADD =
336 noinst_LTLIBRARIES += libswrAVX.la
337 libmesaswr_la_LIBADD += libswrAVX.la
340 noinst_LTLIBRARIES += libswrAVX2.la
341 libmesaswr_la_LIBADD += libswrAVX2.la
344 noinst_LTLIBRARIES += libswrKNL.la
345 libmesaswr_la_LIBADD += libswrKNL.la
348 noinst_LTLIBRARIES += libswrSKX.la
349 libmesaswr_la_LIBADD += libswrSKX.la
351 else # !HAVE_SWR_BUILTIN
352 # gen_knobs.* included here to provide driver access to swr configuration
353 libmesaswr_la_SOURCES += \
354 $(COMMON_CXX_SOURCES) \
355 rasterizer/codegen/gen_knobs.cpp \
356 rasterizer/codegen/gen_knobs.h
358 lib_LTLIBRARIES += libswrAVX.la
361 lib_LTLIBRARIES += libswrAVX2.la
364 lib_LTLIBRARIES += libswrKNL.la
367 lib_LTLIBRARIES += libswrSKX.la
371 include $(top_srcdir)/install-gallium-links.mk
373 # Generated gen_builder.hpp is not backwards compatible. So ship only one
374 # created with the oldest supported version of LLVM.
376 if SWR_INVALID_LLVM_VERSION
377 @echo "*****************************************"
378 @echo "LLVM 6.0.x required to create the tarball"
379 @echo "*****************************************"
386 rasterizer/jitter/meson.build \
387 rasterizer/codegen/meson.build \
388 rasterizer/core/backends/meson.build \
389 rasterizer/archrast/events.proto \
390 rasterizer/archrast/events_private.proto \
391 rasterizer/codegen/gen_llvm_ir_macros.py \
392 rasterizer/codegen/gen_llvm_types.py \
393 rasterizer/codegen/gen_archrast.py \
394 rasterizer/codegen/gen_backends.py \
395 rasterizer/codegen/gen_common.py \
396 rasterizer/codegen/gen_knobs.py \
397 rasterizer/codegen/knob_defs.py \
398 rasterizer/codegen/templates/gen_ar_event.cpp \
399 rasterizer/codegen/templates/gen_ar_event.hpp \
400 rasterizer/codegen/templates/gen_ar_eventhandler.hpp \
401 rasterizer/codegen/templates/gen_ar_eventhandlerfile.hpp \
402 rasterizer/codegen/templates/gen_backend.cpp \
403 rasterizer/codegen/templates/gen_builder.hpp \
404 rasterizer/codegen/templates/gen_header_init.hpp \
405 rasterizer/codegen/templates/gen_knobs.cpp \
406 rasterizer/codegen/templates/gen_knobs.h \
407 rasterizer/codegen/templates/gen_llvm.hpp \
408 rasterizer/codegen/templates/gen_rasterizer.cpp