summaryrefslogtreecommitdiffstats
path: root/src/gallium/auxiliary
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/auxiliary')
-rw-r--r--src/gallium/auxiliary/Android.mk55
-rw-r--r--src/gallium/auxiliary/Makefile207
-rw-r--r--src/gallium/auxiliary/Makefile.sources194
-rw-r--r--src/gallium/auxiliary/SConscript207
-rw-r--r--src/gallium/auxiliary/os/os_mman.h87
-rw-r--r--src/gallium/auxiliary/os/os_thread.h2
-rw-r--r--src/gallium/auxiliary/tgsi/tgsi_exec.c87
-rw-r--r--src/gallium/auxiliary/tgsi/tgsi_exec.h5
-rw-r--r--src/gallium/auxiliary/util/u_math.h12
9 files changed, 449 insertions, 407 deletions
diff --git a/src/gallium/auxiliary/Android.mk b/src/gallium/auxiliary/Android.mk
new file mode 100644
index 00000000000..0c37dd31ab6
--- /dev/null
+++ b/src/gallium/auxiliary/Android.mk
@@ -0,0 +1,55 @@
+# Mesa 3-D graphics library
+#
+# Copyright (C) 2010-2011 Chia-I Wu <[email protected]>
+# Copyright (C) 2010-2011 LunarG Inc.
+#
+# 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 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.
+
+LOCAL_PATH := $(call my-dir)
+
+# get C_SOURCES and GENERATED_SOURCES
+include $(LOCAL_PATH)/Makefile.sources
+
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(C_SOURCES)
+
+LOCAL_C_INCLUDES := $(GALLIUM_TOP)/auxiliary/util
+
+LOCAL_MODULE := libmesa_gallium
+
+# generate sources
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+intermediates := $(call local-intermediates-dir)
+LOCAL_GENERATED_SOURCES := $(addprefix $(intermediates)/, $(GENERATED_SOURCES))
+
+$(LOCAL_GENERATED_SOURCES): PRIVATE_PYTHON := $(MESA_PYTHON2)
+$(LOCAL_GENERATED_SOURCES): PRIVATE_CUSTOM_TOOL = $(PRIVATE_PYTHON) $^ > $@
+
+$(intermediates)/indices/u_indices_gen.c \
+$(intermediates)/indices/u_unfilled_gen.c \
+$(intermediates)/util/u_format_srgb.c \
+$(intermediates)/util/u_half.c: $(intermediates)/%.c: $(LOCAL_PATH)/%.py
+ $(transform-generated-source)
+
+$(intermediates)/util/u_format_table.c: $(intermediates)/%.c: $(LOCAL_PATH)/%.py $(LOCAL_PATH)/util/u_format.csv
+ $(transform-generated-source)
+
+include $(GALLIUM_COMMON_MK)
+include $(BUILD_STATIC_LIBRARY)
diff --git a/src/gallium/auxiliary/Makefile b/src/gallium/auxiliary/Makefile
index 6634b392f76..896c058fde9 100644
--- a/src/gallium/auxiliary/Makefile
+++ b/src/gallium/auxiliary/Makefile
@@ -3,211 +3,10 @@ include $(TOP)/configs/current
LIBNAME = gallium
-C_SOURCES = \
- cso_cache/cso_cache.c \
- cso_cache/cso_context.c \
- cso_cache/cso_hash.c \
- draw/draw_context.c \
- draw/draw_fs.c \
- draw/draw_gs.c \
- draw/draw_pipe.c \
- draw/draw_pipe_aaline.c \
- draw/draw_pipe_aapoint.c \
- draw/draw_pipe_clip.c \
- draw/draw_pipe_cull.c \
- draw/draw_pipe_flatshade.c \
- draw/draw_pipe_offset.c \
- draw/draw_pipe_pstipple.c \
- draw/draw_pipe_stipple.c \
- draw/draw_pipe_twoside.c \
- draw/draw_pipe_unfilled.c \
- draw/draw_pipe_util.c \
- draw/draw_pipe_validate.c \
- draw/draw_pipe_vbuf.c \
- draw/draw_pipe_wide_line.c \
- draw/draw_pipe_wide_point.c \
- draw/draw_pt.c \
- draw/draw_pt_emit.c \
- draw/draw_pt_fetch.c \
- draw/draw_pt_fetch_emit.c \
- draw/draw_pt_fetch_shade_emit.c \
- draw/draw_pt_fetch_shade_pipeline.c \
- draw/draw_pt_post_vs.c \
- draw/draw_pt_so_emit.c \
- draw/draw_pt_util.c \
- draw/draw_pt_vsplit.c \
- draw/draw_vertex.c \
- draw/draw_vs.c \
- draw/draw_vs_aos.c \
- draw/draw_vs_aos_io.c \
- draw/draw_vs_aos_machine.c \
- draw/draw_vs_exec.c \
- draw/draw_vs_ppc.c \
- draw/draw_vs_sse.c \
- draw/draw_vs_variant.c \
- indices/u_indices_gen.c \
- indices/u_unfilled_gen.c \
- os/os_misc.c \
- os/os_stream.c \
- os/os_stream_log.c \
- os/os_stream_null.c \
- os/os_stream_stdc.c \
- os/os_stream_str.c \
- os/os_time.c \
- pipebuffer/pb_buffer_fenced.c \
- pipebuffer/pb_buffer_malloc.c \
- pipebuffer/pb_bufmgr_alt.c \
- pipebuffer/pb_bufmgr_cache.c \
- pipebuffer/pb_bufmgr_debug.c \
- pipebuffer/pb_bufmgr_mm.c \
- pipebuffer/pb_bufmgr_ondemand.c \
- pipebuffer/pb_bufmgr_pool.c \
- pipebuffer/pb_bufmgr_slab.c \
- pipebuffer/pb_validate.c \
- postprocess/pp_celshade.c \
- postprocess/pp_colors.c \
- postprocess/pp_init.c \
- postprocess/pp_mlaa.c \
- postprocess/pp_run.c \
- postprocess/pp_program.c \
- rbug/rbug_connection.c \
- rbug/rbug_context.c \
- rbug/rbug_core.c \
- rbug/rbug_demarshal.c \
- rbug/rbug_texture.c \
- rbug/rbug_shader.c \
- rtasm/rtasm_cpu.c \
- rtasm/rtasm_execmem.c \
- rtasm/rtasm_ppc.c \
- rtasm/rtasm_ppc_spe.c \
- rtasm/rtasm_x86sse.c \
- tgsi/tgsi_build.c \
- tgsi/tgsi_dump.c \
- tgsi/tgsi_exec.c \
- tgsi/tgsi_info.c \
- tgsi/tgsi_iterate.c \
- tgsi/tgsi_parse.c \
- tgsi/tgsi_ppc.c \
- tgsi/tgsi_sanity.c \
- tgsi/tgsi_scan.c \
- tgsi/tgsi_sse2.c \
- tgsi/tgsi_text.c \
- tgsi/tgsi_transform.c \
- tgsi/tgsi_ureg.c \
- tgsi/tgsi_util.c \
- translate/translate.c \
- translate/translate_cache.c \
- translate/translate_generic.c \
- translate/translate_sse.c \
- util/u_debug.c \
- util/u_debug_describe.c \
- util/u_debug_refcnt.c \
- util/u_debug_stack.c \
- util/u_debug_symbol.c \
- util/u_dump_defines.c \
- util/u_dump_state.c \
- util/u_bitmask.c \
- util/u_blit.c \
- util/u_blitter.c \
- util/u_cache.c \
- util/u_caps.c \
- util/u_cpu_detect.c \
- util/u_dl.c \
- util/u_draw.c \
- util/u_draw_quad.c \
- util/u_format.c \
- util/u_format_other.c \
- util/u_format_latc.c \
- util/u_format_s3tc.c \
- util/u_format_rgtc.c \
- util/u_format_srgb.c \
- util/u_format_table.c \
- util/u_format_tests.c \
- util/u_format_yuv.c \
- util/u_format_zs.c \
- util/u_framebuffer.c \
- util/u_gen_mipmap.c \
- util/u_half.c \
- util/u_handle_table.c \
- util/u_hash.c \
- util/u_hash_table.c \
- util/u_index_modify.c \
- util/u_keymap.c \
- util/u_linear.c \
- util/u_linkage.c \
- util/u_network.c \
- util/u_math.c \
- util/u_mm.c \
- util/u_pstipple.c \
- util/u_rect.c \
- util/u_ringbuffer.c \
- util/u_sampler.c \
- util/u_simple_shaders.c \
- util/u_slab.c \
- util/u_snprintf.c \
- util/u_staging.c \
- util/u_surface.c \
- util/u_surfaces.c \
- util/u_texture.c \
- util/u_tile.c \
- util/u_transfer.c \
- util/u_resource.c \
- util/u_upload_mgr.c \
- util/u_vbuf_mgr.c \
- vl/vl_csc.c \
- vl/vl_compositor.c \
- vl/vl_decoder.c \
- vl/vl_mpeg12_decoder.c \
- vl/vl_mpeg12_bitstream.c \
- vl/vl_zscan.c \
- vl/vl_idct.c \
- vl/vl_mc.c \
- vl/vl_vertex_buffers.c \
- vl/vl_video_buffer.c
-
-GALLIVM_SOURCES = \
- gallivm/lp_bld_arit.c \
- gallivm/lp_bld_assert.c \
- gallivm/lp_bld_bitarit.c \
- gallivm/lp_bld_const.c \
- gallivm/lp_bld_conv.c \
- gallivm/lp_bld_flow.c \
- gallivm/lp_bld_format_aos.c \
- gallivm/lp_bld_format_soa.c \
- gallivm/lp_bld_format_yuv.c \
- gallivm/lp_bld_gather.c \
- gallivm/lp_bld_init.c \
- gallivm/lp_bld_intr.c \
- gallivm/lp_bld_logic.c \
- gallivm/lp_bld_pack.c \
- gallivm/lp_bld_printf.c \
- gallivm/lp_bld_quad.c \
- gallivm/lp_bld_sample.c \
- gallivm/lp_bld_sample_aos.c \
- gallivm/lp_bld_sample_soa.c \
- gallivm/lp_bld_struct.c \
- gallivm/lp_bld_swizzle.c \
- gallivm/lp_bld_tgsi_aos.c \
- gallivm/lp_bld_tgsi_info.c \
- gallivm/lp_bld_tgsi_soa.c \
- gallivm/lp_bld_type.c \
- draw/draw_llvm.c \
- draw/draw_llvm_sample.c \
- draw/draw_llvm_translate.c \
- draw/draw_vs_llvm.c \
- draw/draw_pt_fetch_shade_pipeline_llvm.c
-
-GALLIVM_CPP_SOURCES = \
- gallivm/lp_bld_debug.cpp \
- gallivm/lp_bld_misc.cpp
-
-GENERATED_SOURCES = \
- indices/u_indices_gen.c \
- indices/u_unfilled_gen.c \
- util/u_format_srgb.c \
- util/u_format_table.c \
- util/u_half.c
+# get source lists
+include Makefile.sources
+C_SOURCES += $(GENERATED_SOURCES)
ifeq ($(MESA_LLVM),1)
C_SOURCES += \
diff --git a/src/gallium/auxiliary/Makefile.sources b/src/gallium/auxiliary/Makefile.sources
new file mode 100644
index 00000000000..07cc3156f07
--- /dev/null
+++ b/src/gallium/auxiliary/Makefile.sources
@@ -0,0 +1,194 @@
+C_SOURCES := \
+ cso_cache/cso_cache.c \
+ cso_cache/cso_context.c \
+ cso_cache/cso_hash.c \
+ draw/draw_context.c \
+ draw/draw_fs.c \
+ draw/draw_gs.c \
+ draw/draw_pipe.c \
+ draw/draw_pipe_aaline.c \
+ draw/draw_pipe_aapoint.c \
+ draw/draw_pipe_clip.c \
+ draw/draw_pipe_cull.c \
+ draw/draw_pipe_flatshade.c \
+ draw/draw_pipe_offset.c \
+ draw/draw_pipe_pstipple.c \
+ draw/draw_pipe_stipple.c \
+ draw/draw_pipe_twoside.c \
+ draw/draw_pipe_unfilled.c \
+ draw/draw_pipe_util.c \
+ draw/draw_pipe_validate.c \
+ draw/draw_pipe_vbuf.c \
+ draw/draw_pipe_wide_line.c \
+ draw/draw_pipe_wide_point.c \
+ draw/draw_pt.c \
+ draw/draw_pt_emit.c \
+ draw/draw_pt_fetch.c \
+ draw/draw_pt_fetch_emit.c \
+ draw/draw_pt_fetch_shade_emit.c \
+ draw/draw_pt_fetch_shade_pipeline.c \
+ draw/draw_pt_post_vs.c \
+ draw/draw_pt_so_emit.c \
+ draw/draw_pt_util.c \
+ draw/draw_pt_vsplit.c \
+ draw/draw_vertex.c \
+ draw/draw_vs.c \
+ draw/draw_vs_aos.c \
+ draw/draw_vs_aos_io.c \
+ draw/draw_vs_aos_machine.c \
+ draw/draw_vs_exec.c \
+ draw/draw_vs_ppc.c \
+ draw/draw_vs_sse.c \
+ draw/draw_vs_variant.c \
+ os/os_misc.c \
+ os/os_stream.c \
+ os/os_stream_log.c \
+ os/os_stream_null.c \
+ os/os_stream_stdc.c \
+ os/os_stream_str.c \
+ os/os_time.c \
+ pipebuffer/pb_buffer_fenced.c \
+ pipebuffer/pb_buffer_malloc.c \
+ pipebuffer/pb_bufmgr_alt.c \
+ pipebuffer/pb_bufmgr_cache.c \
+ pipebuffer/pb_bufmgr_debug.c \
+ pipebuffer/pb_bufmgr_mm.c \
+ pipebuffer/pb_bufmgr_ondemand.c \
+ pipebuffer/pb_bufmgr_pool.c \
+ pipebuffer/pb_bufmgr_slab.c \
+ pipebuffer/pb_validate.c \
+ rbug/rbug_connection.c \
+ rbug/rbug_context.c \
+ rbug/rbug_core.c \
+ rbug/rbug_demarshal.c \
+ rbug/rbug_texture.c \
+ rbug/rbug_shader.c \
+ rtasm/rtasm_cpu.c \
+ rtasm/rtasm_execmem.c \
+ rtasm/rtasm_ppc.c \
+ rtasm/rtasm_ppc_spe.c \
+ rtasm/rtasm_x86sse.c \
+ tgsi/tgsi_build.c \
+ tgsi/tgsi_dump.c \
+ tgsi/tgsi_exec.c \
+ tgsi/tgsi_info.c \
+ tgsi/tgsi_iterate.c \
+ tgsi/tgsi_parse.c \
+ tgsi/tgsi_ppc.c \
+ tgsi/tgsi_sanity.c \
+ tgsi/tgsi_scan.c \
+ tgsi/tgsi_sse2.c \
+ tgsi/tgsi_text.c \
+ tgsi/tgsi_transform.c \
+ tgsi/tgsi_ureg.c \
+ tgsi/tgsi_util.c \
+ translate/translate.c \
+ translate/translate_cache.c \
+ translate/translate_generic.c \
+ translate/translate_sse.c \
+ util/u_debug.c \
+ util/u_debug_describe.c \
+ util/u_debug_memory.c \
+ util/u_debug_refcnt.c \
+ util/u_debug_stack.c \
+ util/u_debug_symbol.c \
+ util/u_dump_defines.c \
+ util/u_dump_state.c \
+ util/u_bitmask.c \
+ util/u_blit.c \
+ util/u_blitter.c \
+ util/u_cache.c \
+ util/u_caps.c \
+ util/u_cpu_detect.c \
+ util/u_dl.c \
+ util/u_draw.c \
+ util/u_draw_quad.c \
+ util/u_format.c \
+ util/u_format_other.c \
+ util/u_format_latc.c \
+ util/u_format_s3tc.c \
+ util/u_format_rgtc.c \
+ util/u_format_tests.c \
+ util/u_format_yuv.c \
+ util/u_format_zs.c \
+ util/u_framebuffer.c \
+ util/u_gen_mipmap.c \
+ util/u_handle_table.c \
+ util/u_hash.c \
+ util/u_hash_table.c \
+ util/u_index_modify.c \
+ util/u_keymap.c \
+ util/u_linear.c \
+ util/u_linkage.c \
+ util/u_network.c \
+ util/u_math.c \
+ util/u_mm.c \
+ util/u_pstipple.c \
+ util/u_rect.c \
+ util/u_ringbuffer.c \
+ util/u_sampler.c \
+ util/u_simple_shaders.c \
+ util/u_slab.c \
+ util/u_snprintf.c \
+ util/u_staging.c \
+ util/u_surface.c \
+ util/u_surfaces.c \
+ util/u_texture.c \
+ util/u_tile.c \
+ util/u_transfer.c \
+ util/u_resource.c \
+ util/u_upload_mgr.c \
+ util/u_vbuf_mgr.c \
+ vl/vl_csc.c \
+ vl/vl_compositor.c \
+ vl/vl_decoder.c \
+ vl/vl_mpeg12_decoder.c \
+ vl/vl_mpeg12_bitstream.c \
+ vl/vl_zscan.c \
+ vl/vl_idct.c \
+ vl/vl_mc.c \
+ vl/vl_vertex_buffers.c \
+ vl/vl_video_buffer.c
+
+GENERATED_SOURCES := \
+ indices/u_indices_gen.c \
+ indices/u_unfilled_gen.c \
+ util/u_format_srgb.c \
+ util/u_format_table.c \
+ util/u_half.c
+
+GALLIVM_SOURCES := \
+ gallivm/lp_bld_arit.c \
+ gallivm/lp_bld_assert.c \
+ gallivm/lp_bld_bitarit.c \
+ gallivm/lp_bld_const.c \
+ gallivm/lp_bld_conv.c \
+ gallivm/lp_bld_flow.c \
+ gallivm/lp_bld_format_aos.c \
+ gallivm/lp_bld_format_soa.c \
+ gallivm/lp_bld_format_yuv.c \
+ gallivm/lp_bld_gather.c \
+ gallivm/lp_bld_init.c \
+ gallivm/lp_bld_intr.c \
+ gallivm/lp_bld_logic.c \
+ gallivm/lp_bld_pack.c \
+ gallivm/lp_bld_printf.c \
+ gallivm/lp_bld_quad.c \
+ gallivm/lp_bld_sample.c \
+ gallivm/lp_bld_sample_aos.c \
+ gallivm/lp_bld_sample_soa.c \
+ gallivm/lp_bld_struct.c \
+ gallivm/lp_bld_swizzle.c \
+ gallivm/lp_bld_tgsi_aos.c \
+ gallivm/lp_bld_tgsi_info.c \
+ gallivm/lp_bld_tgsi_soa.c \
+ gallivm/lp_bld_type.c \
+ draw/draw_llvm.c \
+ draw/draw_llvm_sample.c \
+ draw/draw_llvm_translate.c \
+ draw/draw_vs_llvm.c \
+ draw/draw_pt_fetch_shade_pipeline_llvm.c
+
+GALLIVM_CPP_SOURCES := \
+ gallivm/lp_bld_debug.cpp \
+ gallivm/lp_bld_misc.cpp
diff --git a/src/gallium/auxiliary/SConscript b/src/gallium/auxiliary/SConscript
index 6535b0fb82a..e00040d97ab 100644
--- a/src/gallium/auxiliary/SConscript
+++ b/src/gallium/auxiliary/SConscript
@@ -47,207 +47,16 @@ env.Depends('util/u_format_table.c', [
'util/u_format_pack.py',
])
-source = [
- 'cso_cache/cso_cache.c',
- 'cso_cache/cso_context.c',
- 'cso_cache/cso_hash.c',
- 'draw/draw_context.c',
- 'draw/draw_fs.c',
- 'draw/draw_gs.c',
- 'draw/draw_pipe.c',
- 'draw/draw_pipe_aaline.c',
- 'draw/draw_pipe_aapoint.c',
- 'draw/draw_pipe_clip.c',
- 'draw/draw_pipe_cull.c',
- 'draw/draw_pipe_flatshade.c',
- 'draw/draw_pipe_offset.c',
- 'draw/draw_pipe_pstipple.c',
- 'draw/draw_pipe_stipple.c',
- 'draw/draw_pipe_twoside.c',
- 'draw/draw_pipe_unfilled.c',
- 'draw/draw_pipe_util.c',
- 'draw/draw_pipe_validate.c',
- 'draw/draw_pipe_vbuf.c',
- 'draw/draw_pipe_wide_line.c',
- 'draw/draw_pipe_wide_point.c',
- 'draw/draw_pt.c',
- 'draw/draw_pt_emit.c',
- 'draw/draw_pt_fetch.c',
- 'draw/draw_pt_fetch_emit.c',
- 'draw/draw_pt_fetch_shade_emit.c',
- 'draw/draw_pt_fetch_shade_pipeline.c',
- 'draw/draw_pt_post_vs.c',
- 'draw/draw_pt_so_emit.c',
- 'draw/draw_pt_util.c',
- 'draw/draw_pt_vsplit.c',
- 'draw/draw_vertex.c',
- 'draw/draw_vs.c',
- 'draw/draw_vs_aos.c',
- 'draw/draw_vs_aos_io.c',
- 'draw/draw_vs_aos_machine.c',
- 'draw/draw_vs_exec.c',
- 'draw/draw_vs_ppc.c',
- 'draw/draw_vs_sse.c',
- 'draw/draw_vs_variant.c',
- #'indices/u_indices.c',
- #'indices/u_unfilled_indices.c',
- 'indices/u_indices_gen.c',
- 'indices/u_unfilled_gen.c',
- 'os/os_misc.c',
- 'os/os_stream.c',
- 'os/os_stream_log.c',
- 'os/os_stream_null.c',
- 'os/os_stream_stdc.c',
- 'os/os_stream_str.c',
- 'os/os_time.c',
- 'pipebuffer/pb_buffer_fenced.c',
- 'pipebuffer/pb_buffer_malloc.c',
- 'pipebuffer/pb_bufmgr_alt.c',
- 'pipebuffer/pb_bufmgr_cache.c',
- 'pipebuffer/pb_bufmgr_debug.c',
- 'pipebuffer/pb_bufmgr_mm.c',
- 'pipebuffer/pb_bufmgr_ondemand.c',
- 'pipebuffer/pb_bufmgr_pool.c',
- 'pipebuffer/pb_bufmgr_slab.c',
- 'pipebuffer/pb_validate.c',
- 'postprocess/pp_celshade.c',
- 'postprocess/pp_colors.c',
- 'postprocess/pp_init.c',
- 'postprocess/pp_mlaa.c',
- 'postprocess/pp_run.c',
- 'postprocess/pp_program.c',
- 'rbug/rbug_connection.c',
- 'rbug/rbug_context.c',
- 'rbug/rbug_core.c',
- 'rbug/rbug_demarshal.c',
- 'rbug/rbug_shader.c',
- 'rbug/rbug_texture.c',
- 'rtasm/rtasm_cpu.c',
- 'rtasm/rtasm_execmem.c',
- 'rtasm/rtasm_ppc.c',
- 'rtasm/rtasm_ppc_spe.c',
- 'rtasm/rtasm_x86sse.c',
- 'tgsi/tgsi_build.c',
- 'tgsi/tgsi_dump.c',
- 'tgsi/tgsi_exec.c',
- 'tgsi/tgsi_info.c',
- 'tgsi/tgsi_iterate.c',
- 'tgsi/tgsi_parse.c',
- 'tgsi/tgsi_ppc.c',
- 'tgsi/tgsi_sanity.c',
- 'tgsi/tgsi_scan.c',
- 'tgsi/tgsi_sse2.c',
- 'tgsi/tgsi_text.c',
- 'tgsi/tgsi_transform.c',
- 'tgsi/tgsi_ureg.c',
- 'tgsi/tgsi_util.c',
- 'translate/translate.c',
- 'translate/translate_cache.c',
- 'translate/translate_generic.c',
- 'translate/translate_sse.c',
- 'util/u_bitmask.c',
- 'util/u_blit.c',
- 'util/u_blitter.c',
- 'util/u_cache.c',
- 'util/u_caps.c',
- 'util/u_cpu_detect.c',
- 'util/u_debug.c',
- 'util/u_debug_describe.c',
- 'util/u_debug_memory.c',
- 'util/u_debug_refcnt.c',
- 'util/u_debug_stack.c',
- 'util/u_debug_symbol.c',
- 'util/u_dump_defines.c',
- 'util/u_dump_state.c',
- 'util/u_dl.c',
- 'util/u_draw.c',
- 'util/u_draw_quad.c',
- 'util/u_format.c',
- 'util/u_format_other.c',
- 'util/u_format_latc.c',
- 'util/u_format_s3tc.c',
- 'util/u_format_rgtc.c',
- 'util/u_format_srgb.c',
- 'util/u_format_table.c',
- 'util/u_format_tests.c',
- 'util/u_format_yuv.c',
- 'util/u_format_zs.c',
- 'util/u_framebuffer.c',
- 'util/u_gen_mipmap.c',
- 'util/u_half.c',
- 'util/u_handle_table.c',
- 'util/u_hash.c',
- 'util/u_hash_table.c',
- 'util/u_index_modify.c',
- 'util/u_keymap.c',
- 'util/u_linear.c',
- 'util/u_linkage.c',
- 'util/u_network.c',
- 'util/u_math.c',
- 'util/u_mm.c',
- 'util/u_pstipple.c',
- 'util/u_rect.c',
- 'util/u_resource.c',
- 'util/u_ringbuffer.c',
- 'util/u_sampler.c',
- 'util/u_simple_shaders.c',
- 'util/u_slab.c',
- 'util/u_snprintf.c',
- 'util/u_staging.c',
- 'util/u_surface.c',
- 'util/u_surfaces.c',
- 'util/u_texture.c',
- 'util/u_tile.c',
- 'util/u_transfer.c',
- 'util/u_upload_mgr.c',
- 'util/u_vbuf_mgr.c',
- 'vl/vl_csc.c',
- 'vl/vl_compositor.c',
- 'vl/vl_decoder.c',
- 'vl/vl_mpeg12_decoder.c',
- 'vl/vl_mpeg12_bitstream.c',
- 'vl/vl_zscan.c',
- 'vl/vl_idct.c',
- 'vl/vl_mc.c',
- 'vl/vl_vertex_buffers.c',
- 'vl/vl_video_buffer.c',
-]
+source = env.ParseSourceList('Makefile.sources', [
+ 'C_SOURCES',
+ 'GENERATED_SOURCES'
+])
if env['llvm']:
- source += [
- 'gallivm/lp_bld_arit.c',
- 'gallivm/lp_bld_assert.c',
- 'gallivm/lp_bld_bitarit.c',
- 'gallivm/lp_bld_const.c',
- 'gallivm/lp_bld_conv.c',
- 'gallivm/lp_bld_debug.cpp',
- 'gallivm/lp_bld_flow.c',
- 'gallivm/lp_bld_format_aos.c',
- 'gallivm/lp_bld_format_soa.c',
- 'gallivm/lp_bld_format_yuv.c',
- 'gallivm/lp_bld_gather.c',
- 'gallivm/lp_bld_init.c',
- 'gallivm/lp_bld_intr.c',
- 'gallivm/lp_bld_logic.c',
- 'gallivm/lp_bld_misc.cpp',
- 'gallivm/lp_bld_pack.c',
- 'gallivm/lp_bld_printf.c',
- 'gallivm/lp_bld_quad.c',
- 'gallivm/lp_bld_sample.c',
- 'gallivm/lp_bld_sample_aos.c',
- 'gallivm/lp_bld_sample_soa.c',
- 'gallivm/lp_bld_struct.c',
- 'gallivm/lp_bld_swizzle.c',
- 'gallivm/lp_bld_tgsi_aos.c',
- 'gallivm/lp_bld_tgsi_info.c',
- 'gallivm/lp_bld_tgsi_soa.c',
- 'gallivm/lp_bld_type.c',
- 'draw/draw_llvm.c',
- 'draw/draw_llvm_sample.c',
- 'draw/draw_llvm_translate.c',
- 'draw/draw_pt_fetch_shade_pipeline_llvm.c',
- 'draw/draw_vs_llvm.c'
- ]
+ source += env.ParseSourceList('Makefile.sources', [
+ 'GALLIVM_SOURCES',
+ 'GALLIVM_CPP_SOURCES'
+ ])
gallium = env.ConvenienceLibrary(
target = 'gallium',
diff --git a/src/gallium/auxiliary/os/os_mman.h b/src/gallium/auxiliary/os/os_mman.h
new file mode 100644
index 00000000000..b48eb053023
--- /dev/null
+++ b/src/gallium/auxiliary/os/os_mman.h
@@ -0,0 +1,87 @@
+/**************************************************************************
+ *
+ * Copyright 2011 LunarG, Inc.
+ * 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, sub license, 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+/**
+ * @file
+ * OS independent memory mapping (with large file support).
+ *
+ * @author Chia-I Wu <[email protected]>
+ */
+
+#ifndef _OS_MMAN_H_
+#define _OS_MMAN_H_
+
+
+#include "pipe/p_config.h"
+#include "pipe/p_compiler.h"
+
+#if defined(PIPE_OS_UNIX)
+# ifndef _FILE_OFFSET_BITS
+# error _FILE_OFFSET_BITS must be defined to 64
+# endif
+# include <sys/mman.h>
+#else
+# error Unsupported OS
+#endif
+
+#if defined(PIPE_OS_ANDROID)
+# include <errno.h> /* for EINVAL */
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#if defined(PIPE_OS_ANDROID)
+
+extern void *__mmap2(void *, size_t, int, int, int, size_t);
+
+static INLINE void *os_mmap(void *addr, size_t length, int prot, int flags, int fd, loff_t offset)
+{
+ /* offset must be aligned to 4096 (not necessarily the page size) */
+ if (unlikely(offset & 4095)) {
+ errno = EINVAL;
+ return MAP_FAILED;
+ }
+
+ return __mmap2(addr, length, prot, flags, fd, (size_t) (offset >> 12));
+}
+
+#else
+/* assume large file support exists */
+# define os_mmap(addr, length, prot, flags, fd, offset) mmap(addr, length, prot, flags, fd, offset)
+#endif
+
+#define os_munmap(addr, length) munmap(addr, length)
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _OS_MMAN_H_ */
diff --git a/src/gallium/auxiliary/os/os_thread.h b/src/gallium/auxiliary/os/os_thread.h
index 8f1245bff55..d8301298b7f 100644
--- a/src/gallium/auxiliary/os/os_thread.h
+++ b/src/gallium/auxiliary/os/os_thread.h
@@ -314,7 +314,7 @@ typedef int64_t pipe_condvar;
* pipe_barrier
*/
-#if defined(PIPE_OS_LINUX) || defined(PIPE_OS_BSD) || defined(PIPE_OS_SOLARIS) || defined(PIPE_OS_HAIKU)
+#if (defined(PIPE_OS_LINUX) || defined(PIPE_OS_BSD) || defined(PIPE_OS_SOLARIS) || defined(PIPE_OS_HAIKU)) && !defined(PIPE_OS_ANDROID)
typedef pthread_barrier_t pipe_barrier;
diff --git a/src/gallium/auxiliary/tgsi/tgsi_exec.c b/src/gallium/auxiliary/tgsi/tgsi_exec.c
index 587483c049b..38dc1efa551 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_exec.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_exec.c
@@ -1594,6 +1594,9 @@ store_dest(struct tgsi_exec_machine *mach,
#define FETCH(VAL,INDEX,CHAN)\
fetch_source(mach, VAL, &inst->Src[INDEX], CHAN, TGSI_EXEC_DATA_FLOAT)
+#define IFETCH(VAL,INDEX,CHAN)\
+ fetch_source(mach, VAL, &inst->Src[INDEX], CHAN, TGSI_EXEC_DATA_INT)
+
/**
* Execute ARB-style KIL which is predicated by a src register.
@@ -1921,6 +1924,86 @@ exec_txd(struct tgsi_exec_machine *mach,
}
+static void
+exec_txf(struct tgsi_exec_machine *mach,
+ const struct tgsi_full_instruction *inst)
+{
+ struct tgsi_sampler *sampler;
+ const uint unit = inst->Src[1].Register.Index;
+ union tgsi_exec_channel r[4];
+ uint chan;
+ float rgba[NUM_CHANNELS][QUAD_SIZE];
+ int j;
+
+ IFETCH(&r[3], 0, CHAN_W);
+
+ switch(inst->Texture.Texture) {
+ case TGSI_TEXTURE_3D:
+ case TGSI_TEXTURE_2D_ARRAY:
+ IFETCH(&r[2], 0, CHAN_Z);
+ /* fallthrough */
+ case TGSI_TEXTURE_2D:
+ case TGSI_TEXTURE_RECT:
+ case TGSI_TEXTURE_SHADOW2D:
+ case TGSI_TEXTURE_SHADOWRECT:
+ case TGSI_TEXTURE_1D_ARRAY:
+ IFETCH(&r[1], 0, CHAN_Y);
+ /* fallthrough */
+ case TGSI_TEXTURE_1D:
+ case TGSI_TEXTURE_SHADOW1D:
+ IFETCH(&r[0], 0, CHAN_X);
+ break;
+ default:
+ assert(0);
+ break;
+ }
+
+ sampler = mach->Samplers[unit];
+ sampler->get_texel(sampler, r[0].i, r[1].i, r[2].i, r[3].i, rgba);
+
+ for (j = 0; j < QUAD_SIZE; j++) {
+ r[0].f[j] = rgba[0][j];
+ r[1].f[j] = rgba[1][j];
+ r[2].f[j] = rgba[2][j];
+ r[3].f[j] = rgba[3][j];
+ }
+
+ for (chan = 0; chan < NUM_CHANNELS; chan++) {
+ if (inst->Dst[0].Register.WriteMask & (1 << chan)) {
+ store_dest(mach, &r[chan], &inst->Dst[0], inst, chan, TGSI_EXEC_DATA_FLOAT);
+ }
+ }
+}
+
+static void
+exec_txq(struct tgsi_exec_machine *mach,
+ const struct tgsi_full_instruction *inst)
+{
+ struct tgsi_sampler *sampler;
+ const uint unit = inst->Src[1].Register.Index;
+ int result[4];
+ union tgsi_exec_channel r[4], src;
+ uint chan;
+ int i,j;
+
+ fetch_source(mach, &src, &inst->Src[0], CHAN_X, TGSI_EXEC_DATA_INT);
+ sampler = mach->Samplers[unit];
+
+ sampler->get_dims(sampler, src.i[0], result);
+
+ for (i = 0; i < QUAD_SIZE; i++) {
+ for (j = 0; j < 4; j++) {
+ r[j].i[i] = result[j];
+ }
+ }
+
+ for (chan = 0; chan < NUM_CHANNELS; chan++) {
+ if (inst->Dst[0].Register.WriteMask & (1 << chan)) {
+ store_dest(mach, &r[chan], &inst->Dst[0], inst, chan,
+ TGSI_EXEC_DATA_INT);
+ }
+ }
+}
static void
exec_sample(struct tgsi_exec_machine *mach,
@@ -3714,11 +3797,11 @@ exec_instruction(
break;
case TGSI_OPCODE_TXF:
- assert (0);
+ exec_txf(mach, inst);
break;
case TGSI_OPCODE_TXQ:
- assert (0);
+ exec_txq(mach, inst);
break;
case TGSI_OPCODE_EMIT:
diff --git a/src/gallium/auxiliary/tgsi/tgsi_exec.h b/src/gallium/auxiliary/tgsi/tgsi_exec.h
index 6c32ccff323..3f6964c17fb 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_exec.h
+++ b/src/gallium/auxiliary/tgsi/tgsi_exec.h
@@ -90,6 +90,11 @@ struct tgsi_sampler
const float c0[QUAD_SIZE],
enum tgsi_sampler_control control,
float rgba[NUM_CHANNELS][QUAD_SIZE]);
+ void (*get_dims)(struct tgsi_sampler *sampler, int level,
+ int dims[4]);
+ void (*get_texel)(struct tgsi_sampler *sampler, const int i[QUAD_SIZE],
+ const int j[QUAD_SIZE], const int k[QUAD_SIZE],
+ const int lod[QUAD_SIZE], float rgba[NUM_CHANNELS][QUAD_SIZE]);
};
#define TGSI_EXEC_NUM_TEMPS 128
diff --git a/src/gallium/auxiliary/util/u_math.h b/src/gallium/auxiliary/util/u_math.h
index 0b5284428eb..46d9322932a 100644
--- a/src/gallium/auxiliary/util/u_math.h
+++ b/src/gallium/auxiliary/util/u_math.h
@@ -199,6 +199,16 @@ roundf(float x)
#endif /* _MSC_VER */
+#ifdef PIPE_OS_ANDROID
+
+static INLINE
+double log2(double d)
+{
+ return log(d) * (1.0 / M_LN2);
+}
+
+#endif
+
@@ -409,7 +419,7 @@ unsigned ffs( unsigned u )
return i;
}
-#elif defined(__MINGW32__)
+#elif defined(__MINGW32__) || defined(PIPE_OS_ANDROID)
#define ffs __builtin_ffs
#endif