diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/gallium/Makefile | 20 | ||||
-rw-r--r-- | src/gallium/Makefile.template (renamed from src/mesa/pipe/Makefile.template) | 7 | ||||
-rw-r--r-- | src/gallium/README.portability (renamed from src/mesa/pipe/README.portability) | 0 | ||||
-rw-r--r-- | src/gallium/SConscript (renamed from src/mesa/pipe/SConscript) | 0 | ||||
-rw-r--r-- | src/gallium/aux/Makefile | 24 | ||||
-rw-r--r-- | src/gallium/aux/cso_cache/cso_cache.c (renamed from src/mesa/pipe/cso_cache/cso_cache.c) | 0 | ||||
-rw-r--r-- | src/gallium/aux/cso_cache/cso_cache.h (renamed from src/mesa/pipe/cso_cache/cso_cache.h) | 0 | ||||
-rw-r--r-- | src/gallium/aux/cso_cache/cso_hash.c (renamed from src/mesa/pipe/cso_cache/cso_hash.c) | 0 | ||||
-rw-r--r-- | src/gallium/aux/cso_cache/cso_hash.h (renamed from src/mesa/pipe/cso_cache/cso_hash.h) | 0 | ||||
-rw-r--r-- | src/gallium/aux/draw/Makefile (renamed from src/mesa/pipe/draw/Makefile) | 0 | ||||
-rw-r--r-- | src/gallium/aux/draw/draw_clip.c (renamed from src/mesa/pipe/draw/draw_clip.c) | 4 | ||||
-rw-r--r-- | src/gallium/aux/draw/draw_context.c (renamed from src/mesa/pipe/draw/draw_context.c) | 4 | ||||
-rw-r--r-- | src/gallium/aux/draw/draw_context.h (renamed from src/mesa/pipe/draw/draw_context.h) | 0 | ||||
-rw-r--r-- | src/gallium/aux/draw/draw_cull.c (renamed from src/mesa/pipe/draw/draw_cull.c) | 4 | ||||
-rw-r--r-- | src/gallium/aux/draw/draw_debug.c (renamed from src/mesa/pipe/draw/draw_debug.c) | 0 | ||||
-rw-r--r-- | src/gallium/aux/draw/draw_flatshade.c (renamed from src/mesa/pipe/draw/draw_flatshade.c) | 4 | ||||
-rw-r--r-- | src/gallium/aux/draw/draw_offset.c (renamed from src/mesa/pipe/draw/draw_offset.c) | 4 | ||||
-rw-r--r-- | src/gallium/aux/draw/draw_prim.c (renamed from src/mesa/pipe/draw/draw_prim.c) | 0 | ||||
-rw-r--r-- | src/gallium/aux/draw/draw_private.h (renamed from src/mesa/pipe/draw/draw_private.h) | 8 | ||||
-rw-r--r-- | src/gallium/aux/draw/draw_stipple.c (renamed from src/mesa/pipe/draw/draw_stipple.c) | 3 | ||||
-rw-r--r-- | src/gallium/aux/draw/draw_twoside.c (renamed from src/mesa/pipe/draw/draw_twoside.c) | 4 | ||||
-rw-r--r-- | src/gallium/aux/draw/draw_unfilled.c (renamed from src/mesa/pipe/draw/draw_unfilled.c) | 6 | ||||
-rw-r--r-- | src/gallium/aux/draw/draw_validate.c (renamed from src/mesa/pipe/draw/draw_validate.c) | 0 | ||||
-rw-r--r-- | src/gallium/aux/draw/draw_vbuf.c (renamed from src/mesa/pipe/draw/draw_vbuf.c) | 3 | ||||
-rw-r--r-- | src/gallium/aux/draw/draw_vbuf.h (renamed from src/mesa/pipe/draw/draw_vbuf.h) | 0 | ||||
-rw-r--r-- | src/gallium/aux/draw/draw_vertex.c (renamed from src/mesa/pipe/draw/draw_vertex.c) | 4 | ||||
-rw-r--r-- | src/gallium/aux/draw/draw_vertex.h (renamed from src/mesa/pipe/draw/draw_vertex.h) | 7 | ||||
-rw-r--r-- | src/gallium/aux/draw/draw_vertex_cache.c (renamed from src/mesa/pipe/draw/draw_vertex_cache.c) | 0 | ||||
-rw-r--r-- | src/gallium/aux/draw/draw_vertex_fetch.c (renamed from src/mesa/pipe/draw/draw_vertex_fetch.c) | 0 | ||||
-rw-r--r-- | src/gallium/aux/draw/draw_vertex_shader.c (renamed from src/mesa/pipe/draw/draw_vertex_shader.c) | 4 | ||||
-rw-r--r-- | src/gallium/aux/draw/draw_vf.c (renamed from src/mesa/pipe/draw/draw_vf.c) | 2 | ||||
-rw-r--r-- | src/gallium/aux/draw/draw_vf.h (renamed from src/mesa/pipe/draw/draw_vf.h) | 17 | ||||
-rw-r--r-- | src/gallium/aux/draw/draw_vf_generic.c (renamed from src/mesa/pipe/draw/draw_vf_generic.c) | 0 | ||||
-rw-r--r-- | src/gallium/aux/draw/draw_vf_sse.c (renamed from src/mesa/pipe/draw/draw_vf_sse.c) | 0 | ||||
-rw-r--r-- | src/gallium/aux/draw/draw_wide_prims.c (renamed from src/mesa/pipe/draw/draw_wide_prims.c) | 10 | ||||
-rw-r--r-- | src/gallium/aux/llvm/Makefile (renamed from src/mesa/pipe/llvm/Makefile) | 10 | ||||
-rw-r--r-- | src/gallium/aux/llvm/gallivm.cpp (renamed from src/mesa/pipe/llvm/gallivm.cpp) | 4 | ||||
-rw-r--r-- | src/gallium/aux/llvm/gallivm.h (renamed from src/mesa/pipe/llvm/gallivm.h) | 0 | ||||
-rw-r--r-- | src/gallium/aux/llvm/gallivm_builtins.cpp (renamed from src/mesa/pipe/llvm/gallivm_builtins.cpp) | 0 | ||||
-rw-r--r-- | src/gallium/aux/llvm/gallivm_cpu.cpp (renamed from src/mesa/pipe/llvm/gallivm_cpu.cpp) | 4 | ||||
-rw-r--r-- | src/gallium/aux/llvm/gallivm_p.h (renamed from src/mesa/pipe/llvm/gallivm_p.h) | 0 | ||||
-rw-r--r-- | src/gallium/aux/llvm/instructions.cpp (renamed from src/mesa/pipe/llvm/instructions.cpp) | 0 | ||||
-rw-r--r-- | src/gallium/aux/llvm/instructions.h (renamed from src/mesa/pipe/llvm/instructions.h) | 0 | ||||
-rw-r--r-- | src/gallium/aux/llvm/instructionssoa.cpp | 121 | ||||
-rw-r--r-- | src/gallium/aux/llvm/instructionssoa.h (renamed from src/mesa/pipe/llvm/instructionssoa.h) | 10 | ||||
-rw-r--r-- | src/gallium/aux/llvm/llvm_builtins.c (renamed from src/mesa/pipe/llvm/llvm_builtins.c) | 0 | ||||
-rw-r--r-- | src/gallium/aux/llvm/loweringpass.cpp (renamed from src/mesa/pipe/llvm/loweringpass.cpp) | 0 | ||||
-rw-r--r-- | src/gallium/aux/llvm/loweringpass.h (renamed from src/mesa/pipe/llvm/loweringpass.h) | 0 | ||||
-rw-r--r-- | src/gallium/aux/llvm/storage.cpp (renamed from src/mesa/pipe/llvm/storage.cpp) | 0 | ||||
-rw-r--r-- | src/gallium/aux/llvm/storage.h (renamed from src/mesa/pipe/llvm/storage.h) | 0 | ||||
-rw-r--r-- | src/gallium/aux/llvm/storagesoa.cpp | 389 | ||||
-rw-r--r-- | src/gallium/aux/llvm/storagesoa.h (renamed from src/mesa/pipe/llvm/storagesoa.h) | 55 | ||||
-rw-r--r-- | src/gallium/aux/llvm/tgsitollvm.cpp (renamed from src/mesa/pipe/llvm/tgsitollvm.cpp) | 49 | ||||
-rw-r--r-- | src/gallium/aux/llvm/tgsitollvm.h (renamed from src/mesa/pipe/llvm/tgsitollvm.h) | 0 | ||||
-rw-r--r-- | src/gallium/aux/pipebuffer/Makefile (renamed from src/mesa/pipe/pipebuffer/Makefile) | 2 | ||||
-rw-r--r-- | src/gallium/aux/pipebuffer/linked_list.h (renamed from src/mesa/pipe/pipebuffer/linked_list.h) | 0 | ||||
-rw-r--r-- | src/gallium/aux/pipebuffer/pb_buffer.h (renamed from src/mesa/pipe/pipebuffer/pb_buffer.h) | 0 | ||||
-rw-r--r-- | src/gallium/aux/pipebuffer/pb_buffer_fenced.c (renamed from src/mesa/pipe/pipebuffer/pb_buffer_fenced.c) | 0 | ||||
-rw-r--r-- | src/gallium/aux/pipebuffer/pb_buffer_fenced.h (renamed from src/mesa/pipe/pipebuffer/pb_buffer_fenced.h) | 0 | ||||
-rw-r--r-- | src/gallium/aux/pipebuffer/pb_buffer_malloc.c (renamed from src/mesa/pipe/pipebuffer/pb_buffer_malloc.c) | 4 | ||||
-rw-r--r-- | src/gallium/aux/pipebuffer/pb_bufmgr.h (renamed from src/mesa/pipe/pipebuffer/pb_bufmgr.h) | 0 | ||||
-rw-r--r-- | src/gallium/aux/pipebuffer/pb_bufmgr_fenced.c (renamed from src/mesa/pipe/pipebuffer/pb_bufmgr_fenced.c) | 0 | ||||
-rw-r--r-- | src/gallium/aux/pipebuffer/pb_bufmgr_mm.c (renamed from src/mesa/pipe/pipebuffer/pb_bufmgr_mm.c) | 0 | ||||
-rw-r--r-- | src/gallium/aux/pipebuffer/pb_bufmgr_pool.c (renamed from src/mesa/pipe/pipebuffer/pb_bufmgr_pool.c) | 0 | ||||
-rw-r--r-- | src/gallium/aux/pipebuffer/pb_winsys.c (renamed from src/mesa/pipe/pipebuffer/pb_winsys.c) | 0 | ||||
-rw-r--r-- | src/gallium/aux/tgsi/Makefile (renamed from src/mesa/pipe/tgsi/Makefile) | 0 | ||||
-rw-r--r-- | src/gallium/aux/tgsi/exec/Makefile (renamed from src/mesa/pipe/tgsi/exec/Makefile) | 0 | ||||
-rw-r--r-- | src/gallium/aux/tgsi/exec/tgsi_exec.c (renamed from src/mesa/pipe/tgsi/exec/tgsi_exec.c) | 43 | ||||
-rw-r--r-- | src/gallium/aux/tgsi/exec/tgsi_exec.h (renamed from src/mesa/pipe/tgsi/exec/tgsi_exec.h) | 0 | ||||
-rwxr-xr-x | src/gallium/aux/tgsi/exec/tgsi_sse2.c (renamed from src/mesa/pipe/tgsi/exec/tgsi_sse2.c) | 4 | ||||
-rwxr-xr-x | src/gallium/aux/tgsi/exec/tgsi_sse2.h (renamed from src/mesa/pipe/tgsi/exec/tgsi_sse2.h) | 0 | ||||
-rw-r--r-- | src/gallium/aux/tgsi/util/tgsi_build.c (renamed from src/mesa/pipe/tgsi/util/tgsi_build.c) | 0 | ||||
-rw-r--r-- | src/gallium/aux/tgsi/util/tgsi_build.h (renamed from src/mesa/pipe/tgsi/util/tgsi_build.h) | 0 | ||||
-rw-r--r-- | src/gallium/aux/tgsi/util/tgsi_dump.c (renamed from src/mesa/pipe/tgsi/util/tgsi_dump.c) | 0 | ||||
-rw-r--r-- | src/gallium/aux/tgsi/util/tgsi_dump.h (renamed from src/mesa/pipe/tgsi/util/tgsi_dump.h) | 0 | ||||
-rw-r--r-- | src/gallium/aux/tgsi/util/tgsi_parse.c (renamed from src/mesa/pipe/tgsi/util/tgsi_parse.c) | 0 | ||||
-rw-r--r-- | src/gallium/aux/tgsi/util/tgsi_parse.h (renamed from src/mesa/pipe/tgsi/util/tgsi_parse.h) | 0 | ||||
-rw-r--r-- | src/gallium/aux/tgsi/util/tgsi_transform.c | 199 | ||||
-rw-r--r-- | src/gallium/aux/tgsi/util/tgsi_transform.h | 93 | ||||
-rw-r--r-- | src/gallium/aux/tgsi/util/tgsi_util.c (renamed from src/mesa/pipe/tgsi/util/tgsi_util.c) | 0 | ||||
-rw-r--r-- | src/gallium/aux/tgsi/util/tgsi_util.h (renamed from src/mesa/pipe/tgsi/util/tgsi_util.h) | 0 | ||||
-rw-r--r-- | src/gallium/aux/util/p_debug.c (renamed from src/mesa/pipe/util/p_debug.c) | 0 | ||||
-rw-r--r-- | src/gallium/aux/util/p_tile.c (renamed from src/mesa/pipe/util/p_tile.c) | 0 | ||||
-rw-r--r-- | src/gallium/aux/util/p_tile.h (renamed from src/mesa/pipe/util/p_tile.h) | 0 | ||||
-rw-r--r-- | src/gallium/aux/util/p_util.c (renamed from src/mesa/pipe/util/p_util.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/Makefile (renamed from src/mesa/pipe/Makefile) | 6 | ||||
-rw-r--r-- | src/gallium/drivers/cell/Makefile (renamed from src/mesa/pipe/cell/Makefile) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/cell/common.h (renamed from src/mesa/pipe/cell/common.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/cell/ppu/Makefile (renamed from src/mesa/pipe/cell/ppu/Makefile) | 7 | ||||
-rw-r--r-- | src/gallium/drivers/cell/ppu/cell_batch.c (renamed from src/mesa/pipe/cell/ppu/cell_batch.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/cell/ppu/cell_batch.h (renamed from src/mesa/pipe/cell/ppu/cell_batch.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/cell/ppu/cell_clear.c (renamed from src/mesa/pipe/cell/ppu/cell_clear.c) | 2 | ||||
-rw-r--r-- | src/gallium/drivers/cell/ppu/cell_clear.h (renamed from src/mesa/pipe/cell/ppu/cell_clear.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/cell/ppu/cell_context.c (renamed from src/mesa/pipe/cell/ppu/cell_context.c) | 6 | ||||
-rw-r--r-- | src/gallium/drivers/cell/ppu/cell_context.h (renamed from src/mesa/pipe/cell/ppu/cell_context.h) | 6 | ||||
-rw-r--r-- | src/gallium/drivers/cell/ppu/cell_draw_arrays.c (renamed from src/mesa/pipe/cell/ppu/cell_draw_arrays.c) | 2 | ||||
-rw-r--r-- | src/gallium/drivers/cell/ppu/cell_draw_arrays.h (renamed from src/mesa/pipe/cell/ppu/cell_draw_arrays.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/cell/ppu/cell_flush.c (renamed from src/mesa/pipe/cell/ppu/cell_flush.c) | 2 | ||||
-rw-r--r-- | src/gallium/drivers/cell/ppu/cell_flush.h (renamed from src/mesa/pipe/cell/ppu/cell_flush.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/cell/ppu/cell_render.c (renamed from src/mesa/pipe/cell/ppu/cell_render.c) | 2 | ||||
-rw-r--r-- | src/gallium/drivers/cell/ppu/cell_render.h (renamed from src/mesa/pipe/cell/ppu/cell_render.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/cell/ppu/cell_spu.c (renamed from src/mesa/pipe/cell/ppu/cell_spu.c) | 2 | ||||
-rw-r--r-- | src/gallium/drivers/cell/ppu/cell_spu.h (renamed from src/mesa/pipe/cell/ppu/cell_spu.h) | 2 | ||||
-rw-r--r-- | src/gallium/drivers/cell/ppu/cell_state.h (renamed from src/mesa/pipe/cell/ppu/cell_state.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/cell/ppu/cell_state_blend.c (renamed from src/mesa/pipe/cell/ppu/cell_state_blend.c) | 2 | ||||
-rw-r--r-- | src/gallium/drivers/cell/ppu/cell_state_clip.c (renamed from src/mesa/pipe/cell/ppu/cell_state_clip.c) | 2 | ||||
-rw-r--r-- | src/gallium/drivers/cell/ppu/cell_state_derived.c (renamed from src/mesa/pipe/cell/ppu/cell_state_derived.c) | 4 | ||||
-rw-r--r-- | src/gallium/drivers/cell/ppu/cell_state_emit.c (renamed from src/mesa/pipe/cell/ppu/cell_state_emit.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/cell/ppu/cell_state_emit.h (renamed from src/mesa/pipe/cell/ppu/cell_state_emit.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/cell/ppu/cell_state_fs.c (renamed from src/mesa/pipe/cell/ppu/cell_state_fs.c) | 8 | ||||
-rw-r--r-- | src/gallium/drivers/cell/ppu/cell_state_rasterizer.c (renamed from src/mesa/pipe/cell/ppu/cell_state_rasterizer.c) | 2 | ||||
-rw-r--r-- | src/gallium/drivers/cell/ppu/cell_state_sampler.c (renamed from src/mesa/pipe/cell/ppu/cell_state_sampler.c) | 2 | ||||
-rw-r--r-- | src/gallium/drivers/cell/ppu/cell_state_surface.c (renamed from src/mesa/pipe/cell/ppu/cell_state_surface.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/cell/ppu/cell_state_vertex.c (renamed from src/mesa/pipe/cell/ppu/cell_state_vertex.c) | 2 | ||||
-rw-r--r-- | src/gallium/drivers/cell/ppu/cell_surface.c (renamed from src/mesa/pipe/cell/ppu/cell_surface.c) | 2 | ||||
-rw-r--r-- | src/gallium/drivers/cell/ppu/cell_surface.h (renamed from src/mesa/pipe/cell/ppu/cell_surface.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/cell/ppu/cell_texture.c (renamed from src/mesa/pipe/cell/ppu/cell_texture.c) | 2 | ||||
-rw-r--r-- | src/gallium/drivers/cell/ppu/cell_texture.h (renamed from src/mesa/pipe/cell/ppu/cell_texture.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/cell/ppu/cell_vbuf.c (renamed from src/mesa/pipe/cell/ppu/cell_vbuf.c) | 2 | ||||
-rw-r--r-- | src/gallium/drivers/cell/ppu/cell_vbuf.h (renamed from src/mesa/pipe/cell/ppu/cell_vbuf.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/cell/ppu/cell_vertex_shader.c (renamed from src/mesa/pipe/cell/ppu/cell_vertex_shader.c) | 6 | ||||
-rw-r--r-- | src/gallium/drivers/cell/ppu/cell_winsys.c (renamed from src/mesa/pipe/cell/ppu/cell_winsys.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/cell/ppu/cell_winsys.h (renamed from src/mesa/pipe/cell/ppu/cell_winsys.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/cell/spu/Makefile (renamed from src/mesa/pipe/cell/spu/Makefile) | 6 | ||||
-rw-r--r-- | src/gallium/drivers/cell/spu/spu_blend.c (renamed from src/mesa/pipe/cell/spu/spu_blend.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/cell/spu/spu_blend.h (renamed from src/mesa/pipe/cell/spu/spu_blend.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/cell/spu/spu_colorpack.h (renamed from src/mesa/pipe/cell/spu/spu_colorpack.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/cell/spu/spu_exec.c (renamed from src/mesa/pipe/cell/spu/spu_exec.c) | 4 | ||||
-rw-r--r-- | src/gallium/drivers/cell/spu/spu_exec.h (renamed from src/mesa/pipe/cell/spu/spu_exec.h) | 2 | ||||
-rw-r--r-- | src/gallium/drivers/cell/spu/spu_main.c (renamed from src/mesa/pipe/cell/spu/spu_main.c) | 2 | ||||
-rw-r--r-- | src/gallium/drivers/cell/spu/spu_main.h (renamed from src/mesa/pipe/cell/spu/spu_main.h) | 4 | ||||
-rw-r--r-- | src/gallium/drivers/cell/spu/spu_render.c (renamed from src/mesa/pipe/cell/spu/spu_render.c) | 2 | ||||
-rw-r--r-- | src/gallium/drivers/cell/spu/spu_render.h (renamed from src/mesa/pipe/cell/spu/spu_render.h) | 2 | ||||
-rw-r--r-- | src/gallium/drivers/cell/spu/spu_texture.c (renamed from src/mesa/pipe/cell/spu/spu_texture.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/cell/spu/spu_texture.h (renamed from src/mesa/pipe/cell/spu/spu_texture.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/cell/spu/spu_tile.c (renamed from src/mesa/pipe/cell/spu/spu_tile.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/cell/spu/spu_tile.h (renamed from src/mesa/pipe/cell/spu/spu_tile.h) | 2 | ||||
-rw-r--r-- | src/gallium/drivers/cell/spu/spu_tri.c (renamed from src/mesa/pipe/cell/spu/spu_tri.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/cell/spu/spu_tri.h (renamed from src/mesa/pipe/cell/spu/spu_tri.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/cell/spu/spu_util.c (renamed from src/mesa/pipe/cell/spu/spu_util.c) | 4 | ||||
-rw-r--r-- | src/gallium/drivers/cell/spu/spu_vertex_fetch.c | 673 | ||||
-rw-r--r-- | src/gallium/drivers/cell/spu/spu_vertex_shader.c (renamed from src/mesa/pipe/cell/spu/spu_vertex_shader.c) | 6 | ||||
-rw-r--r-- | src/gallium/drivers/cell/spu/spu_vertex_shader.h (renamed from src/mesa/pipe/cell/spu/spu_vertex_shader.h) | 4 | ||||
-rw-r--r-- | src/gallium/drivers/cell/spu/spu_ztest.h (renamed from src/mesa/pipe/cell/spu/spu_ztest.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/failover/Makefile (renamed from src/mesa/pipe/failover/Makefile) | 2 | ||||
-rw-r--r-- | src/gallium/drivers/failover/fo_context.c (renamed from src/mesa/pipe/failover/fo_context.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/failover/fo_context.h (renamed from src/mesa/pipe/failover/fo_context.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/failover/fo_state.c (renamed from src/mesa/pipe/failover/fo_state.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/failover/fo_state_emit.c (renamed from src/mesa/pipe/failover/fo_state_emit.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/failover/fo_winsys.h (renamed from src/mesa/pipe/failover/fo_winsys.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i915simple/Makefile (renamed from src/mesa/pipe/i915simple/Makefile) | 2 | ||||
-rw-r--r-- | src/gallium/drivers/i915simple/SConscript (renamed from src/mesa/pipe/i915simple/SConscript) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i915simple/i915_batch.h (renamed from src/mesa/pipe/i915simple/i915_batch.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i915simple/i915_blit.c (renamed from src/mesa/pipe/i915simple/i915_blit.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i915simple/i915_blit.h (renamed from src/mesa/pipe/i915simple/i915_blit.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i915simple/i915_clear.c (renamed from src/mesa/pipe/i915simple/i915_clear.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i915simple/i915_context.c (renamed from src/mesa/pipe/i915simple/i915_context.c) | 2 | ||||
-rw-r--r-- | src/gallium/drivers/i915simple/i915_context.h (renamed from src/mesa/pipe/i915simple/i915_context.h) | 2 | ||||
-rw-r--r-- | src/gallium/drivers/i915simple/i915_debug.c (renamed from src/mesa/pipe/i915simple/i915_debug.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i915simple/i915_debug.h (renamed from src/mesa/pipe/i915simple/i915_debug.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i915simple/i915_debug_fp.c (renamed from src/mesa/pipe/i915simple/i915_debug_fp.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i915simple/i915_flush.c (renamed from src/mesa/pipe/i915simple/i915_flush.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i915simple/i915_fpc.h (renamed from src/mesa/pipe/i915simple/i915_fpc.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i915simple/i915_fpc_emit.c (renamed from src/mesa/pipe/i915simple/i915_fpc_emit.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i915simple/i915_fpc_translate.c (renamed from src/mesa/pipe/i915simple/i915_fpc_translate.c) | 4 | ||||
-rw-r--r-- | src/gallium/drivers/i915simple/i915_prim_emit.c (renamed from src/mesa/pipe/i915simple/i915_prim_emit.c) | 2 | ||||
-rw-r--r-- | src/gallium/drivers/i915simple/i915_prim_vbuf.c (renamed from src/mesa/pipe/i915simple/i915_prim_vbuf.c) | 2 | ||||
-rw-r--r-- | src/gallium/drivers/i915simple/i915_reg.h (renamed from src/mesa/pipe/i915simple/i915_reg.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i915simple/i915_state.c (renamed from src/mesa/pipe/i915simple/i915_state.c) | 2 | ||||
-rw-r--r-- | src/gallium/drivers/i915simple/i915_state.h (renamed from src/mesa/pipe/i915simple/i915_state.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i915simple/i915_state_derived.c (renamed from src/mesa/pipe/i915simple/i915_state_derived.c) | 4 | ||||
-rw-r--r-- | src/gallium/drivers/i915simple/i915_state_dynamic.c (renamed from src/mesa/pipe/i915simple/i915_state_dynamic.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i915simple/i915_state_emit.c (renamed from src/mesa/pipe/i915simple/i915_state_emit.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i915simple/i915_state_immediate.c (renamed from src/mesa/pipe/i915simple/i915_state_immediate.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i915simple/i915_state_inlines.h (renamed from src/mesa/pipe/i915simple/i915_state_inlines.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i915simple/i915_state_sampler.c (renamed from src/mesa/pipe/i915simple/i915_state_sampler.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i915simple/i915_strings.c (renamed from src/mesa/pipe/i915simple/i915_strings.c) | 2 | ||||
-rw-r--r-- | src/gallium/drivers/i915simple/i915_surface.c (renamed from src/mesa/pipe/i915simple/i915_surface.c) | 4 | ||||
-rw-r--r-- | src/gallium/drivers/i915simple/i915_texture.c (renamed from src/mesa/pipe/i915simple/i915_texture.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i915simple/i915_texture.h (renamed from src/mesa/pipe/i915simple/i915_texture.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i915simple/i915_winsys.h (renamed from src/mesa/pipe/i915simple/i915_winsys.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/Makefile (renamed from src/mesa/pipe/i965simple/Makefile) | 2 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/SConscript (renamed from src/mesa/pipe/i965simple/SConscript) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_batch.h (renamed from src/mesa/pipe/i965simple/brw_batch.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_blit.c (renamed from src/mesa/pipe/i965simple/brw_blit.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_blit.h (renamed from src/mesa/pipe/i965simple/brw_blit.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_cc.c (renamed from src/mesa/pipe/i965simple/brw_cc.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_clip.c (renamed from src/mesa/pipe/i965simple/brw_clip.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_clip.h (renamed from src/mesa/pipe/i965simple/brw_clip.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_clip_line.c (renamed from src/mesa/pipe/i965simple/brw_clip_line.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_clip_point.c (renamed from src/mesa/pipe/i965simple/brw_clip_point.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_clip_state.c (renamed from src/mesa/pipe/i965simple/brw_clip_state.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_clip_tri.c (renamed from src/mesa/pipe/i965simple/brw_clip_tri.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_clip_unfilled.c (renamed from src/mesa/pipe/i965simple/brw_clip_unfilled.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_clip_util.c (renamed from src/mesa/pipe/i965simple/brw_clip_util.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_context.c (renamed from src/mesa/pipe/i965simple/brw_context.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_context.h (renamed from src/mesa/pipe/i965simple/brw_context.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_curbe.c (renamed from src/mesa/pipe/i965simple/brw_curbe.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_defines.h (renamed from src/mesa/pipe/i965simple/brw_defines.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_draw.c (renamed from src/mesa/pipe/i965simple/brw_draw.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_draw.h (renamed from src/mesa/pipe/i965simple/brw_draw.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_draw_upload.c (renamed from src/mesa/pipe/i965simple/brw_draw_upload.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_eu.c (renamed from src/mesa/pipe/i965simple/brw_eu.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_eu.h (renamed from src/mesa/pipe/i965simple/brw_eu.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_eu_debug.c (renamed from src/mesa/pipe/i965simple/brw_eu_debug.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_eu_emit.c (renamed from src/mesa/pipe/i965simple/brw_eu_emit.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_eu_util.c (renamed from src/mesa/pipe/i965simple/brw_eu_util.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_flush.c (renamed from src/mesa/pipe/i965simple/brw_flush.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_gs.c (renamed from src/mesa/pipe/i965simple/brw_gs.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_gs.h (renamed from src/mesa/pipe/i965simple/brw_gs.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_gs_emit.c (renamed from src/mesa/pipe/i965simple/brw_gs_emit.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_gs_state.c (renamed from src/mesa/pipe/i965simple/brw_gs_state.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_misc_state.c (renamed from src/mesa/pipe/i965simple/brw_misc_state.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_reg.h (renamed from src/mesa/pipe/i965simple/brw_reg.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_sf.c (renamed from src/mesa/pipe/i965simple/brw_sf.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_sf.h (renamed from src/mesa/pipe/i965simple/brw_sf.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_sf_emit.c (renamed from src/mesa/pipe/i965simple/brw_sf_emit.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_sf_state.c (renamed from src/mesa/pipe/i965simple/brw_sf_state.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_shader_info.c (renamed from src/mesa/pipe/i965simple/brw_shader_info.c) | 2 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_state.c (renamed from src/mesa/pipe/i965simple/brw_state.c) | 2 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_state.h (renamed from src/mesa/pipe/i965simple/brw_state.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_state_batch.c (renamed from src/mesa/pipe/i965simple/brw_state_batch.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_state_cache.c (renamed from src/mesa/pipe/i965simple/brw_state_cache.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_state_pool.c (renamed from src/mesa/pipe/i965simple/brw_state_pool.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_state_upload.c (renamed from src/mesa/pipe/i965simple/brw_state_upload.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_strings.c (renamed from src/mesa/pipe/i965simple/brw_strings.c) | 2 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_structs.h (renamed from src/mesa/pipe/i965simple/brw_structs.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_surface.c (renamed from src/mesa/pipe/i965simple/brw_surface.c) | 2 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_tex_layout.c (renamed from src/mesa/pipe/i965simple/brw_tex_layout.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_tex_layout.h (renamed from src/mesa/pipe/i965simple/brw_tex_layout.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_urb.c (renamed from src/mesa/pipe/i965simple/brw_urb.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_util.c (renamed from src/mesa/pipe/i965simple/brw_util.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_util.h (renamed from src/mesa/pipe/i965simple/brw_util.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_vs.c (renamed from src/mesa/pipe/i965simple/brw_vs.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_vs.h (renamed from src/mesa/pipe/i965simple/brw_vs.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_vs_emit.c (renamed from src/mesa/pipe/i965simple/brw_vs_emit.c) | 2 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_vs_state.c (renamed from src/mesa/pipe/i965simple/brw_vs_state.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_winsys.h (renamed from src/mesa/pipe/i965simple/brw_winsys.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_wm.c (renamed from src/mesa/pipe/i965simple/brw_wm.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_wm.h (renamed from src/mesa/pipe/i965simple/brw_wm.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_wm_decl.c (renamed from src/mesa/pipe/i965simple/brw_wm_decl.c) | 2 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_wm_glsl.c (renamed from src/mesa/pipe/i965simple/brw_wm_glsl.c) | 2 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_wm_iz.c (renamed from src/mesa/pipe/i965simple/brw_wm_iz.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_wm_sampler_state.c (renamed from src/mesa/pipe/i965simple/brw_wm_sampler_state.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_wm_state.c (renamed from src/mesa/pipe/i965simple/brw_wm_state.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/i965simple/brw_wm_surface_state.c (renamed from src/mesa/pipe/i965simple/brw_wm_surface_state.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/Makefile (renamed from src/mesa/pipe/softpipe/Makefile) | 2 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/SConscript (renamed from src/mesa/pipe/softpipe/SConscript) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_clear.c (renamed from src/mesa/pipe/softpipe/sp_clear.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_clear.h (renamed from src/mesa/pipe/softpipe/sp_clear.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_context.c (renamed from src/mesa/pipe/softpipe/sp_context.c) | 2 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_context.h (renamed from src/mesa/pipe/softpipe/sp_context.h) | 2 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_draw_arrays.c (renamed from src/mesa/pipe/softpipe/sp_draw_arrays.c) | 2 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_flush.c (renamed from src/mesa/pipe/softpipe/sp_flush.c) | 3 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_flush.h (renamed from src/mesa/pipe/softpipe/sp_flush.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_fs.h | 54 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_fs_exec.c (renamed from src/mesa/pipe/softpipe/sp_fs_exec.c) | 2 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_fs_llvm.c (renamed from src/mesa/pipe/softpipe/sp_fs_llvm.c) | 2 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_fs_sse.c (renamed from src/mesa/pipe/softpipe/sp_fs_sse.c) | 4 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_headers.h (renamed from src/mesa/pipe/softpipe/sp_headers.h) | 2 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_prim_setup.c (renamed from src/mesa/pipe/softpipe/sp_prim_setup.c) | 25 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_prim_setup.h (renamed from src/mesa/pipe/softpipe/sp_prim_setup.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_prim_vbuf.c (renamed from src/mesa/pipe/softpipe/sp_prim_vbuf.c) | 11 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_prim_vbuf.h (renamed from src/mesa/pipe/softpipe/sp_prim_vbuf.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_quad.c (renamed from src/mesa/pipe/softpipe/sp_quad.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_quad.h (renamed from src/mesa/pipe/softpipe/sp_quad.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_quad_alpha_test.c (renamed from src/mesa/pipe/softpipe/sp_quad_alpha_test.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_quad_blend.c (renamed from src/mesa/pipe/softpipe/sp_quad_blend.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_quad_bufloop.c (renamed from src/mesa/pipe/softpipe/sp_quad_bufloop.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_quad_colormask.c (renamed from src/mesa/pipe/softpipe/sp_quad_colormask.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_quad_coverage.c (renamed from src/mesa/pipe/softpipe/sp_quad_coverage.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_quad_depth_test.c (renamed from src/mesa/pipe/softpipe/sp_quad_depth_test.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_quad_earlyz.c (renamed from src/mesa/pipe/softpipe/sp_quad_earlyz.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_quad_fs.c (renamed from src/mesa/pipe/softpipe/sp_quad_fs.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_quad_occlusion.c (renamed from src/mesa/pipe/softpipe/sp_quad_occlusion.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_quad_output.c (renamed from src/mesa/pipe/softpipe/sp_quad_output.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_quad_stencil.c (renamed from src/mesa/pipe/softpipe/sp_quad_stencil.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_quad_stipple.c (renamed from src/mesa/pipe/softpipe/sp_quad_stipple.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_query.c (renamed from src/mesa/pipe/softpipe/sp_query.c) | 2 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_query.h (renamed from src/mesa/pipe/softpipe/sp_query.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_state.h (renamed from src/mesa/pipe/softpipe/sp_state.h) | 9 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_state_blend.c (renamed from src/mesa/pipe/softpipe/sp_state_blend.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_state_clip.c (renamed from src/mesa/pipe/softpipe/sp_state_clip.c) | 2 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_state_derived.c | 235 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_state_fs.c (renamed from src/mesa/pipe/softpipe/sp_state_fs.c) | 4 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_state_rasterizer.c (renamed from src/mesa/pipe/softpipe/sp_state_rasterizer.c) | 2 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_state_sampler.c (renamed from src/mesa/pipe/softpipe/sp_state_sampler.c) | 6 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_state_surface.c (renamed from src/mesa/pipe/softpipe/sp_state_surface.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_state_vertex.c (renamed from src/mesa/pipe/softpipe/sp_state_vertex.c) | 2 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_surface.c (renamed from src/mesa/pipe/softpipe/sp_surface.c) | 4 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_surface.h (renamed from src/mesa/pipe/softpipe/sp_surface.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_tex_sample.c (renamed from src/mesa/pipe/softpipe/sp_tex_sample.c) | 2 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_tex_sample.h (renamed from src/mesa/pipe/softpipe/sp_tex_sample.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_texture.c (renamed from src/mesa/pipe/softpipe/sp_texture.c) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_texture.h (renamed from src/mesa/pipe/softpipe/sp_texture.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_tile_cache.c (renamed from src/mesa/pipe/softpipe/sp_tile_cache.c) | 2 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_tile_cache.h (renamed from src/mesa/pipe/softpipe/sp_tile_cache.h) | 0 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_winsys.h (renamed from src/mesa/pipe/softpipe/sp_winsys.h) | 0 | ||||
-rw-r--r-- | src/gallium/include/pipe/p_compiler.h (renamed from src/mesa/pipe/p_compiler.h) | 0 | ||||
-rw-r--r-- | src/gallium/include/pipe/p_context.h (renamed from src/mesa/pipe/p_context.h) | 0 | ||||
-rw-r--r-- | src/gallium/include/pipe/p_debug.h (renamed from src/mesa/pipe/p_debug.h) | 0 | ||||
-rw-r--r-- | src/gallium/include/pipe/p_defines.h (renamed from src/mesa/pipe/p_defines.h) | 0 | ||||
-rw-r--r-- | src/gallium/include/pipe/p_format.h (renamed from src/mesa/pipe/p_format.h) | 0 | ||||
-rw-r--r-- | src/gallium/include/pipe/p_inlines.h (renamed from src/mesa/pipe/p_inlines.h) | 0 | ||||
-rw-r--r-- | src/gallium/include/pipe/p_shader_tokens.h (renamed from src/mesa/pipe/p_shader_tokens.h) | 0 | ||||
-rw-r--r-- | src/gallium/include/pipe/p_state.h (renamed from src/mesa/pipe/p_state.h) | 0 | ||||
-rw-r--r-- | src/gallium/include/pipe/p_thread.h (renamed from src/mesa/pipe/p_thread.h) | 0 | ||||
-rw-r--r-- | src/gallium/include/pipe/p_util.h (renamed from src/mesa/pipe/p_util.h) | 4 | ||||
-rw-r--r-- | src/gallium/include/pipe/p_winsys.h (renamed from src/mesa/pipe/p_winsys.h) | 0 | ||||
-rw-r--r-- | src/gallium/state_trackers/README | 2 | ||||
-rw-r--r-- | src/gallium/winsys/dri/Makefile | 38 | ||||
-rw-r--r-- | src/gallium/winsys/dri/Makefile.template | 113 | ||||
-rw-r--r-- | src/gallium/winsys/dri/intel/Makefile (renamed from src/mesa/drivers/dri/intel_winsys/Makefile) | 8 | ||||
-rw-r--r-- | src/gallium/winsys/dri/intel/SConscript (renamed from src/mesa/drivers/dri/intel_winsys/SConscript) | 0 | ||||
-rw-r--r-- | src/gallium/winsys/dri/intel/intel_batchbuffer.c (renamed from src/mesa/drivers/dri/intel_winsys/intel_batchbuffer.c) | 0 | ||||
-rw-r--r-- | src/gallium/winsys/dri/intel/intel_batchbuffer.h (renamed from src/mesa/drivers/dri/intel_winsys/intel_batchbuffer.h) | 0 | ||||
-rw-r--r-- | src/gallium/winsys/dri/intel/intel_batchpool.c (renamed from src/mesa/drivers/dri/intel_winsys/intel_batchpool.c) | 0 | ||||
-rw-r--r-- | src/gallium/winsys/dri/intel/intel_batchpool.h (renamed from src/mesa/drivers/dri/intel_winsys/intel_batchpool.h) | 0 | ||||
-rw-r--r-- | src/gallium/winsys/dri/intel/intel_context.c (renamed from src/mesa/drivers/dri/intel_winsys/intel_context.c) | 0 | ||||
-rw-r--r-- | src/gallium/winsys/dri/intel/intel_context.h (renamed from src/mesa/drivers/dri/intel_winsys/intel_context.h) | 0 | ||||
-rw-r--r-- | src/gallium/winsys/dri/intel/intel_lock.c (renamed from src/mesa/drivers/dri/intel_winsys/intel_lock.c) | 0 | ||||
-rw-r--r-- | src/gallium/winsys/dri/intel/intel_reg.h (renamed from src/mesa/drivers/dri/intel_winsys/intel_reg.h) | 0 | ||||
-rw-r--r-- | src/gallium/winsys/dri/intel/intel_screen.c (renamed from src/mesa/drivers/dri/intel_winsys/intel_screen.c) | 0 | ||||
-rw-r--r-- | src/gallium/winsys/dri/intel/intel_screen.h (renamed from src/mesa/drivers/dri/intel_winsys/intel_screen.h) | 0 | ||||
-rw-r--r-- | src/gallium/winsys/dri/intel/intel_swapbuffers.c (renamed from src/mesa/drivers/dri/intel_winsys/intel_swapbuffers.c) | 1 | ||||
-rw-r--r-- | src/gallium/winsys/dri/intel/intel_swapbuffers.h (renamed from src/mesa/drivers/dri/intel_winsys/intel_swapbuffers.h) | 0 | ||||
-rw-r--r-- | src/gallium/winsys/dri/intel/intel_winsys.h (renamed from src/mesa/drivers/dri/intel_winsys/intel_winsys.h) | 0 | ||||
-rw-r--r-- | src/gallium/winsys/dri/intel/intel_winsys_i915.c (renamed from src/mesa/drivers/dri/intel_winsys/intel_winsys_i915.c) | 2 | ||||
-rw-r--r-- | src/gallium/winsys/dri/intel/intel_winsys_pipe.c (renamed from src/mesa/drivers/dri/intel_winsys/intel_winsys_pipe.c) | 0 | ||||
-rw-r--r-- | src/gallium/winsys/dri/intel/intel_winsys_softpipe.c (renamed from src/mesa/drivers/dri/intel_winsys/intel_winsys_softpipe.c) | 2 | ||||
-rw-r--r-- | src/gallium/winsys/dri/intel/server/i830_common.h (renamed from src/mesa/drivers/dri/intel_winsys/server/i830_common.h) | 0 | ||||
-rw-r--r-- | src/gallium/winsys/dri/intel/server/i830_dri.h (renamed from src/mesa/drivers/dri/intel_winsys/server/i830_dri.h) | 0 | ||||
-rw-r--r-- | src/gallium/winsys/dri/intel/server/intel.h (renamed from src/mesa/drivers/dri/intel_winsys/server/intel.h) | 0 | ||||
-rw-r--r-- | src/gallium/winsys/dri/intel/server/intel_dri.c (renamed from src/mesa/drivers/dri/intel_winsys/server/intel_dri.c) | 0 | ||||
-rw-r--r-- | src/gallium/winsys/xlib/brw_aub.c (renamed from src/mesa/pipe/xlib/brw_aub.c) | 0 | ||||
-rw-r--r-- | src/gallium/winsys/xlib/brw_aub.h (renamed from src/mesa/pipe/xlib/brw_aub.h) | 0 | ||||
-rw-r--r-- | src/gallium/winsys/xlib/fakeglx.c (renamed from src/mesa/pipe/xlib/fakeglx.c) | 0 | ||||
-rw-r--r-- | src/gallium/winsys/xlib/glxapi.c (renamed from src/mesa/pipe/xlib/glxapi.c) | 0 | ||||
-rw-r--r-- | src/gallium/winsys/xlib/glxapi.h (renamed from src/mesa/pipe/xlib/glxapi.h) | 0 | ||||
-rw-r--r-- | src/gallium/winsys/xlib/glxheader.h (renamed from src/mesa/pipe/xlib/glxheader.h) | 0 | ||||
-rw-r--r-- | src/gallium/winsys/xlib/realglx.c (renamed from src/mesa/pipe/xlib/realglx.c) | 0 | ||||
-rw-r--r-- | src/gallium/winsys/xlib/realglx.h (renamed from src/mesa/pipe/xlib/realglx.h) | 0 | ||||
-rw-r--r-- | src/gallium/winsys/xlib/xfonts.c (renamed from src/mesa/pipe/xlib/xfonts.c) | 0 | ||||
-rw-r--r-- | src/gallium/winsys/xlib/xfonts.h (renamed from src/mesa/pipe/xlib/xfonts.h) | 0 | ||||
-rw-r--r-- | src/gallium/winsys/xlib/xm_api.c (renamed from src/mesa/pipe/xlib/xm_api.c) | 0 | ||||
-rw-r--r-- | src/gallium/winsys/xlib/xm_image.c (renamed from src/mesa/pipe/xlib/xm_image.c) | 0 | ||||
-rw-r--r-- | src/gallium/winsys/xlib/xm_image.h (renamed from src/mesa/pipe/xlib/xm_image.h) | 0 | ||||
-rw-r--r-- | src/gallium/winsys/xlib/xm_winsys.c (renamed from src/mesa/pipe/xlib/xm_winsys.c) | 6 | ||||
-rw-r--r-- | src/gallium/winsys/xlib/xm_winsys_aub.c (renamed from src/mesa/pipe/xlib/xm_winsys_aub.c) | 2 | ||||
-rw-r--r-- | src/gallium/winsys/xlib/xm_winsys_aub.h (renamed from src/mesa/pipe/xlib/xm_winsys_aub.h) | 0 | ||||
-rw-r--r-- | src/gallium/winsys/xlib/xmesaP.h (renamed from src/mesa/pipe/xlib/xmesaP.h) | 0 | ||||
-rw-r--r-- | src/mesa/Makefile | 16 | ||||
-rw-r--r-- | src/mesa/drivers/x11/xm_api.c | 2 | ||||
-rw-r--r-- | src/mesa/drivers/x11/xm_dd.c | 2 | ||||
-rw-r--r-- | src/mesa/drivers/x11/xm_surface.c | 8 | ||||
-rw-r--r-- | src/mesa/drivers/x11/xm_winsys.c | 2 | ||||
-rw-r--r-- | src/mesa/drivers/x11/xmesaP.h | 4 | ||||
-rw-r--r-- | src/mesa/pipe/cell/spu/spu_vertex_fetch.c | 393 | ||||
-rw-r--r-- | src/mesa/pipe/llvm/instructionssoa.cpp | 46 | ||||
-rw-r--r-- | src/mesa/pipe/llvm/llvm_base_shader.cpp | 833 | ||||
-rw-r--r-- | src/mesa/pipe/llvm/llvm_entry.c | 163 | ||||
-rw-r--r-- | src/mesa/pipe/llvm/storagesoa.cpp | 208 | ||||
-rw-r--r-- | src/mesa/pipe/softpipe/sp_state_derived.c | 190 | ||||
-rw-r--r-- | src/mesa/ppc/rtasm/spe_asm.c | 351 | ||||
-rw-r--r-- | src/mesa/ppc/rtasm/spe_asm.h | 310 | ||||
-rw-r--r-- | src/mesa/sources | 84 | ||||
-rw-r--r-- | src/mesa/state_tracker/st_atom_shader.c | 2 | ||||
-rw-r--r-- | src/mesa/state_tracker/st_cache.c | 4 | ||||
-rw-r--r-- | src/mesa/state_tracker/st_cache.h | 2 | ||||
-rw-r--r-- | src/mesa/state_tracker/st_cb_accum.c | 2 | ||||
-rw-r--r-- | src/mesa/state_tracker/st_cb_clear.c | 117 | ||||
-rw-r--r-- | src/mesa/state_tracker/st_cb_drawpixels.c | 2 | ||||
-rw-r--r-- | src/mesa/state_tracker/st_cb_feedback.c | 6 | ||||
-rw-r--r-- | src/mesa/state_tracker/st_cb_program.c | 4 | ||||
-rw-r--r-- | src/mesa/state_tracker/st_cb_rasterpos.c | 4 | ||||
-rw-r--r-- | src/mesa/state_tracker/st_cb_readpixels.c | 2 | ||||
-rw-r--r-- | src/mesa/state_tracker/st_cb_texture.c | 2 | ||||
-rw-r--r-- | src/mesa/state_tracker/st_context.c | 4 | ||||
-rw-r--r-- | src/mesa/state_tracker/st_debug.c | 4 | ||||
-rw-r--r-- | src/mesa/state_tracker/st_draw.c | 4 | ||||
-rw-r--r-- | src/mesa/state_tracker/st_gen_mipmap.c | 2 | ||||
-rw-r--r-- | src/mesa/state_tracker/st_mesa_to_tgsi.c | 6 | ||||
-rw-r--r-- | src/mesa/state_tracker/st_program.c | 4 |
383 files changed, 3121 insertions, 2173 deletions
diff --git a/src/gallium/Makefile b/src/gallium/Makefile new file mode 100644 index 0000000000..a13b9a52d3 --- /dev/null +++ b/src/gallium/Makefile @@ -0,0 +1,20 @@ +TOP = ../.. +include $(TOP)/configs/current + + +SUBDIRS = aux drivers + + +default: subdirs + + +subdirs: + @for dir in $(SUBDIRS) ; do \ + if [ -d $$dir ] ; then \ + (cd $$dir && $(MAKE)) || exit 1 ; \ + fi \ + done + + +clean: + rm -f `find . -name \*.[oa]` diff --git a/src/mesa/pipe/Makefile.template b/src/gallium/Makefile.template index 8e84f8eb2d..0717ed8dd2 100644 --- a/src/mesa/pipe/Makefile.template +++ b/src/gallium/Makefile.template @@ -15,7 +15,10 @@ OBJECTS = $(C_SOURCES:.c=.o) \ ### Include directories INCLUDES = \ -I. \ - -I$(TOP)/src/mesa/pipe \ + -I$(TOP)/src/gallium/include \ + -I$(TOP)/src/gallium/include/pipe \ + -I$(TOP)/src/gallium/aux \ + -I$(TOP)/src/gallium/drivers \ -I$(TOP)/src/mesa \ -I$(TOP)/include \ $(DRIVER_INCLUDES) @@ -38,7 +41,7 @@ INCLUDES = \ default: depend symlinks $(LIBNAME) -$(LIBNAME): $(OBJECTS) Makefile $(TOP)/src/mesa/pipe/Makefile.template +$(LIBNAME): $(OBJECTS) Makefile $(TOP)/src/gallium/Makefile.template $(TOP)/bin/mklib -o $@ -static $(OBJECTS) $(DRIVER_LIBS) diff --git a/src/mesa/pipe/README.portability b/src/gallium/README.portability index c70ca774da..c70ca774da 100644 --- a/src/mesa/pipe/README.portability +++ b/src/gallium/README.portability diff --git a/src/mesa/pipe/SConscript b/src/gallium/SConscript index d9c20e0100..d9c20e0100 100644 --- a/src/mesa/pipe/SConscript +++ b/src/gallium/SConscript diff --git a/src/gallium/aux/Makefile b/src/gallium/aux/Makefile new file mode 100644 index 0000000000..da68498aa1 --- /dev/null +++ b/src/gallium/aux/Makefile @@ -0,0 +1,24 @@ +TOP = ../../.. +include $(TOP)/configs/current + + +ifeq ($(CONFIG_NAME), linux-llvm) +LLVM_DIR = llvm +endif + +SUBDIRS = pipebuffer $(LLVM_DIR) + + +default: subdirs + + +subdirs: + @for dir in $(SUBDIRS) ; do \ + if [ -d $$dir ] ; then \ + (cd $$dir && $(MAKE)) || exit 1 ; \ + fi \ + done + + +clean: + rm -f `find . -name \*.[oa]` diff --git a/src/mesa/pipe/cso_cache/cso_cache.c b/src/gallium/aux/cso_cache/cso_cache.c index 9e77e0774d..9e77e0774d 100644 --- a/src/mesa/pipe/cso_cache/cso_cache.c +++ b/src/gallium/aux/cso_cache/cso_cache.c diff --git a/src/mesa/pipe/cso_cache/cso_cache.h b/src/gallium/aux/cso_cache/cso_cache.h index 116e2eaa2c..116e2eaa2c 100644 --- a/src/mesa/pipe/cso_cache/cso_cache.h +++ b/src/gallium/aux/cso_cache/cso_cache.h diff --git a/src/mesa/pipe/cso_cache/cso_hash.c b/src/gallium/aux/cso_cache/cso_hash.c index 0338cb3b47..0338cb3b47 100644 --- a/src/mesa/pipe/cso_cache/cso_hash.c +++ b/src/gallium/aux/cso_cache/cso_hash.c diff --git a/src/mesa/pipe/cso_cache/cso_hash.h b/src/gallium/aux/cso_cache/cso_hash.h index b4aa111860..b4aa111860 100644 --- a/src/mesa/pipe/cso_cache/cso_hash.h +++ b/src/gallium/aux/cso_cache/cso_hash.h diff --git a/src/mesa/pipe/draw/Makefile b/src/gallium/aux/draw/Makefile index 451911a354..451911a354 100644 --- a/src/mesa/pipe/draw/Makefile +++ b/src/gallium/aux/draw/Makefile diff --git a/src/mesa/pipe/draw/draw_clip.c b/src/gallium/aux/draw/draw_clip.c index 61130c5600..e3051507ea 100644 --- a/src/mesa/pipe/draw/draw_clip.c +++ b/src/gallium/aux/draw/draw_clip.c @@ -459,7 +459,7 @@ static void clip_reset_stipple_counter( struct draw_stage *stage ) static void clip_destroy( struct draw_stage *stage ) { - draw_free_tmps( stage ); + draw_free_temp_verts( stage ); FREE( stage ); } @@ -472,7 +472,7 @@ struct draw_stage *draw_clip_stage( struct draw_context *draw ) { struct clipper *clipper = CALLOC_STRUCT(clipper); - draw_alloc_tmps( &clipper->stage, MAX_CLIPPED_VERTICES+1 ); + draw_alloc_temp_verts( &clipper->stage, MAX_CLIPPED_VERTICES+1 ); clipper->stage.draw = draw; clipper->stage.point = clip_point; diff --git a/src/mesa/pipe/draw/draw_context.c b/src/gallium/aux/draw/draw_context.c index b15f57c824..4be3830316 100644 --- a/src/mesa/pipe/draw/draw_context.c +++ b/src/gallium/aux/draw/draw_context.c @@ -242,7 +242,7 @@ draw_convert_wide_lines(struct draw_context *draw, boolean enable) /** * Allocate space for temporary post-transform vertices, such as for clipping. */ -void draw_alloc_tmps( struct draw_stage *stage, unsigned nr ) +void draw_alloc_temp_verts( struct draw_stage *stage, unsigned nr ) { assert(!stage->tmp); @@ -260,7 +260,7 @@ void draw_alloc_tmps( struct draw_stage *stage, unsigned nr ) } -void draw_free_tmps( struct draw_stage *stage ) +void draw_free_temp_verts( struct draw_stage *stage ) { if (stage->tmp) { FREE( stage->tmp[0] ); diff --git a/src/mesa/pipe/draw/draw_context.h b/src/gallium/aux/draw/draw_context.h index ddeb184497..ddeb184497 100644 --- a/src/mesa/pipe/draw/draw_context.h +++ b/src/gallium/aux/draw/draw_context.h diff --git a/src/mesa/pipe/draw/draw_cull.c b/src/gallium/aux/draw/draw_cull.c index 05c274e4dc..8177b0ac86 100644 --- a/src/mesa/pipe/draw/draw_cull.c +++ b/src/gallium/aux/draw/draw_cull.c @@ -123,7 +123,7 @@ static void cull_reset_stipple_counter( struct draw_stage *stage ) static void cull_destroy( struct draw_stage *stage ) { - draw_free_tmps( stage ); + draw_free_temp_verts( stage ); FREE( stage ); } @@ -135,7 +135,7 @@ struct draw_stage *draw_cull_stage( struct draw_context *draw ) { struct cull_stage *cull = CALLOC_STRUCT(cull_stage); - draw_alloc_tmps( &cull->stage, 0 ); + draw_alloc_temp_verts( &cull->stage, 0 ); cull->stage.draw = draw; cull->stage.next = NULL; diff --git a/src/mesa/pipe/draw/draw_debug.c b/src/gallium/aux/draw/draw_debug.c index d6220b5f62..d6220b5f62 100644 --- a/src/mesa/pipe/draw/draw_debug.c +++ b/src/gallium/aux/draw/draw_debug.c diff --git a/src/mesa/pipe/draw/draw_flatshade.c b/src/gallium/aux/draw/draw_flatshade.c index 1419f287d2..4398abbc60 100644 --- a/src/mesa/pipe/draw/draw_flatshade.c +++ b/src/gallium/aux/draw/draw_flatshade.c @@ -176,7 +176,7 @@ static void flatshade_reset_stipple_counter( struct draw_stage *stage ) static void flatshade_destroy( struct draw_stage *stage ) { - draw_free_tmps( stage ); + draw_free_temp_verts( stage ); FREE( stage ); } @@ -188,7 +188,7 @@ struct draw_stage *draw_flatshade_stage( struct draw_context *draw ) { struct flat_stage *flatshade = CALLOC_STRUCT(flat_stage); - draw_alloc_tmps( &flatshade->stage, 2 ); + draw_alloc_temp_verts( &flatshade->stage, 2 ); flatshade->stage.draw = draw; flatshade->stage.next = NULL; diff --git a/src/mesa/pipe/draw/draw_offset.c b/src/gallium/aux/draw/draw_offset.c index a2990ee8a8..dbc676deae 100644 --- a/src/mesa/pipe/draw/draw_offset.c +++ b/src/gallium/aux/draw/draw_offset.c @@ -159,7 +159,7 @@ static void offset_reset_stipple_counter( struct draw_stage *stage ) static void offset_destroy( struct draw_stage *stage ) { - draw_free_tmps( stage ); + draw_free_temp_verts( stage ); FREE( stage ); } @@ -171,7 +171,7 @@ struct draw_stage *draw_offset_stage( struct draw_context *draw ) { struct offset_stage *offset = CALLOC_STRUCT(offset_stage); - draw_alloc_tmps( &offset->stage, 3 ); + draw_alloc_temp_verts( &offset->stage, 3 ); offset->stage.draw = draw; offset->stage.next = NULL; diff --git a/src/mesa/pipe/draw/draw_prim.c b/src/gallium/aux/draw/draw_prim.c index 51e2242719..51e2242719 100644 --- a/src/mesa/pipe/draw/draw_prim.c +++ b/src/gallium/aux/draw/draw_prim.c diff --git a/src/mesa/pipe/draw/draw_private.h b/src/gallium/aux/draw/draw_private.h index 7782db0477..3d09aef87c 100644 --- a/src/mesa/pipe/draw/draw_private.h +++ b/src/gallium/aux/draw/draw_private.h @@ -45,7 +45,7 @@ #include "pipe/p_defines.h" #include "x86/rtasm/x86sse.h" -#include "pipe/tgsi/exec/tgsi_exec.h" +#include "tgsi/exec/tgsi_exec.h" struct gallivm_prog; @@ -276,9 +276,9 @@ extern struct draw_stage *draw_wide_stage( struct draw_context *context ); extern struct draw_stage *draw_validate_stage( struct draw_context *context ); -extern void draw_free_tmps( struct draw_stage *stage ); -extern void draw_reset_tmps( struct draw_stage *stage ); -extern void draw_alloc_tmps( struct draw_stage *stage, unsigned nr ); +extern void draw_free_temp_verts( struct draw_stage *stage ); + +extern void draw_alloc_temp_verts( struct draw_stage *stage, unsigned nr ); extern void draw_reset_vertex_ids( struct draw_context *draw ); diff --git a/src/mesa/pipe/draw/draw_stipple.c b/src/gallium/aux/draw/draw_stipple.c index 9029101916..506f33512c 100644 --- a/src/mesa/pipe/draw/draw_stipple.c +++ b/src/gallium/aux/draw/draw_stipple.c @@ -212,6 +212,7 @@ passthrough_tri(struct draw_stage *stage, struct prim_header *header) static void stipple_destroy( struct draw_stage *stage ) { + draw_free_temp_verts( stage ); FREE( stage ); } @@ -223,7 +224,7 @@ struct draw_stage *draw_stipple_stage( struct draw_context *draw ) { struct stipple_stage *stipple = CALLOC_STRUCT(stipple_stage); - draw_alloc_tmps( &stipple->stage, 2 ); + draw_alloc_temp_verts( &stipple->stage, 2 ); stipple->stage.draw = draw; stipple->stage.next = NULL; diff --git a/src/mesa/pipe/draw/draw_twoside.c b/src/gallium/aux/draw/draw_twoside.c index ad2aaf10bb..1c38957987 100644 --- a/src/mesa/pipe/draw/draw_twoside.c +++ b/src/gallium/aux/draw/draw_twoside.c @@ -176,7 +176,7 @@ static void twoside_reset_stipple_counter( struct draw_stage *stage ) static void twoside_destroy( struct draw_stage *stage ) { - draw_free_tmps( stage ); + draw_free_temp_verts( stage ); FREE( stage ); } @@ -188,7 +188,7 @@ struct draw_stage *draw_twoside_stage( struct draw_context *draw ) { struct twoside_stage *twoside = CALLOC_STRUCT(twoside_stage); - draw_alloc_tmps( &twoside->stage, 3 ); + draw_alloc_temp_verts( &twoside->stage, 3 ); twoside->stage.draw = draw; twoside->stage.next = NULL; diff --git a/src/mesa/pipe/draw/draw_unfilled.c b/src/gallium/aux/draw/draw_unfilled.c index 364bda8b79..8777cfdfc8 100644 --- a/src/mesa/pipe/draw/draw_unfilled.c +++ b/src/gallium/aux/draw/draw_unfilled.c @@ -165,6 +165,8 @@ static void unfilled_flush( struct draw_stage *stage, unsigned flags ) { stage->next->flush( stage->next, flags ); + + stage->tri = unfilled_first_tri; } @@ -176,7 +178,7 @@ static void unfilled_reset_stipple_counter( struct draw_stage *stage ) static void unfilled_destroy( struct draw_stage *stage ) { - draw_free_tmps( stage ); + draw_free_temp_verts( stage ); FREE( stage ); } @@ -188,7 +190,7 @@ struct draw_stage *draw_unfilled_stage( struct draw_context *draw ) { struct unfilled_stage *unfilled = CALLOC_STRUCT(unfilled_stage); - draw_alloc_tmps( &unfilled->stage, 0 ); + draw_alloc_temp_verts( &unfilled->stage, 0 ); unfilled->stage.draw = draw; unfilled->stage.next = NULL; diff --git a/src/mesa/pipe/draw/draw_validate.c b/src/gallium/aux/draw/draw_validate.c index 4375ebabbc..4375ebabbc 100644 --- a/src/mesa/pipe/draw/draw_validate.c +++ b/src/gallium/aux/draw/draw_validate.c diff --git a/src/mesa/pipe/draw/draw_vbuf.c b/src/gallium/aux/draw/draw_vbuf.c index be96c8fdeb..71ac73912b 100644 --- a/src/mesa/pipe/draw/draw_vbuf.c +++ b/src/gallium/aux/draw/draw_vbuf.c @@ -523,6 +523,9 @@ static void vbuf_destroy( struct draw_stage *stage ) if(vbuf->vf) draw_vf_destroy( vbuf->vf ); + if (vbuf->render) + vbuf->render->destroy( vbuf->render ); + FREE( stage ); } diff --git a/src/mesa/pipe/draw/draw_vbuf.h b/src/gallium/aux/draw/draw_vbuf.h index cfd2b9820c..cfd2b9820c 100644 --- a/src/mesa/pipe/draw/draw_vbuf.h +++ b/src/gallium/aux/draw/draw_vbuf.h diff --git a/src/mesa/pipe/draw/draw_vertex.c b/src/gallium/aux/draw/draw_vertex.c index 2d6592150f..daf1ef4b80 100644 --- a/src/mesa/pipe/draw/draw_vertex.c +++ b/src/gallium/aux/draw/draw_vertex.c @@ -34,8 +34,8 @@ */ -#include "pipe/draw/draw_private.h" -#include "pipe/draw/draw_vertex.h" +#include "draw/draw_private.h" +#include "draw/draw_vertex.h" /** diff --git a/src/mesa/pipe/draw/draw_vertex.h b/src/gallium/aux/draw/draw_vertex.h index dfc637b19b..267c74203b 100644 --- a/src/mesa/pipe/draw/draw_vertex.h +++ b/src/gallium/aux/draw/draw_vertex.h @@ -25,7 +25,12 @@ * **************************************************************************/ -/* Author: +/** + * Post-transform vertex format info. The vertex_info struct is used by + * the draw_vbuf code to emit hardware-specific vertex layouts into hw + * vertex buffers. + * + * Author: * Brian Paul */ diff --git a/src/mesa/pipe/draw/draw_vertex_cache.c b/src/gallium/aux/draw/draw_vertex_cache.c index 44427999cc..44427999cc 100644 --- a/src/mesa/pipe/draw/draw_vertex_cache.c +++ b/src/gallium/aux/draw/draw_vertex_cache.c diff --git a/src/mesa/pipe/draw/draw_vertex_fetch.c b/src/gallium/aux/draw/draw_vertex_fetch.c index e13df04605..e13df04605 100644 --- a/src/mesa/pipe/draw/draw_vertex_fetch.c +++ b/src/gallium/aux/draw/draw_vertex_fetch.c diff --git a/src/mesa/pipe/draw/draw_vertex_shader.c b/src/gallium/aux/draw/draw_vertex_shader.c index bf340ef9b0..9413f8b43a 100644 --- a/src/mesa/pipe/draw/draw_vertex_shader.c +++ b/src/gallium/aux/draw/draw_vertex_shader.c @@ -34,13 +34,13 @@ #include "pipe/p_util.h" #include "pipe/p_shader_tokens.h" #if defined(__i386__) || defined(__386__) -#include "pipe/tgsi/exec/tgsi_sse2.h" +#include "tgsi/exec/tgsi_sse2.h" #endif #include "draw_private.h" #include "draw_context.h" #include "x86/rtasm/x86sse.h" -#include "pipe/llvm/gallivm.h" +#include "llvm/gallivm.h" #define DBG_VS 0 diff --git a/src/mesa/pipe/draw/draw_vf.c b/src/gallium/aux/draw/draw_vf.c index f23d7fcec5..dc3a5ecd21 100644 --- a/src/mesa/pipe/draw/draw_vf.c +++ b/src/gallium/aux/draw/draw_vf.c @@ -370,7 +370,7 @@ void draw_vf_emit_vertex( struct draw_vertex_fetch *vf, unsigned j; for (j = 0; j < vf->attr_count; j++) { - if(!a[j].isconst) { + if (!a[j].isconst) { a[j].inputptr = (uint8_t *)&vertex->data[a[j].attrib][0]; a[j].inputstride = 0; /* XXX: one-vertex-max ATM */ } diff --git a/src/mesa/pipe/draw/draw_vf.h b/src/gallium/aux/draw/draw_vf.h index e694b98675..011c8f0ff1 100644 --- a/src/mesa/pipe/draw/draw_vf.h +++ b/src/gallium/aux/draw/draw_vf.h @@ -1,5 +1,5 @@ /* - * Copyright 2003 Tungsten Graphics, inc. + * Copyright 2008 Tungsten Graphics, inc. * All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a @@ -20,6 +20,17 @@ * 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. + */ + + +/** + * Vertex fetch/store/convert code. This functionality is used in two places: + * 1. Vertex fetch/convert - to grab vertex data from incoming vertex + * arrays and convert to format needed by vertex shaders. + * 2. Vertex store/emit - to convert simple float[][4] vertex attributes + * (which is the organization used throughout the draw/prim pipeline) to + * hardware-specific formats and emit into hardware vertex buffers. + * * * Authors: * Keith Whitwell <keithw@tungstengraphics.com> @@ -33,7 +44,7 @@ #include "pipe/p_state.h" #include "draw_vertex.h" -#include "draw_private.h" // for vertex_header +#include "draw_private.h" /* for vertex_header */ enum draw_vf_attr_format { @@ -181,6 +192,7 @@ struct draw_vf_attr_type { unsigned offset; }; +/** XXX this could be moved into draw_vf.c */ struct draw_vf_fastpath { unsigned vertex_stride; unsigned attr_count; @@ -209,6 +221,7 @@ void draw_vf_generate_sse_emit( struct draw_vertex_fetch *vf ); +/** XXX this type and function could probably be moved into draw_vf.c */ struct draw_vf_format_info { const char *name; draw_vf_insert_func insert[4]; diff --git a/src/mesa/pipe/draw/draw_vf_generic.c b/src/gallium/aux/draw/draw_vf_generic.c index 7a60a9db9c..7a60a9db9c 100644 --- a/src/mesa/pipe/draw/draw_vf_generic.c +++ b/src/gallium/aux/draw/draw_vf_generic.c diff --git a/src/mesa/pipe/draw/draw_vf_sse.c b/src/gallium/aux/draw/draw_vf_sse.c index 1ad2ae756d..1ad2ae756d 100644 --- a/src/mesa/pipe/draw/draw_vf_sse.c +++ b/src/gallium/aux/draw/draw_vf_sse.c diff --git a/src/mesa/pipe/draw/draw_wide_prims.c b/src/gallium/aux/draw/draw_wide_prims.c index 4c7e279b20..655774b155 100644 --- a/src/mesa/pipe/draw/draw_wide_prims.c +++ b/src/gallium/aux/draw/draw_wide_prims.c @@ -175,7 +175,7 @@ static void wide_line_aa(struct draw_stage *stage, float *pos; float dx = header->v[1]->data[0][0] - header->v[0]->data[0][0]; float dy = header->v[1]->data[0][1] - header->v[0]->data[0][1]; - const float len = sqrt(dx * dx + dy * dy); + const float len = (float) sqrt(dx * dx + dy * dy); uint i; dx = dx * half_width / len; @@ -400,7 +400,7 @@ static void wide_flush( struct draw_stage *stage, unsigned flags ) } -static void draw_reset_stipple_counter( struct draw_stage *stage ) +static void wide_reset_stipple_counter( struct draw_stage *stage ) { stage->next->reset_stipple_counter( stage->next ); } @@ -408,7 +408,7 @@ static void draw_reset_stipple_counter( struct draw_stage *stage ) static void wide_destroy( struct draw_stage *stage ) { - draw_free_tmps( stage ); + draw_free_temp_verts( stage ); FREE( stage ); } @@ -417,7 +417,7 @@ struct draw_stage *draw_wide_stage( struct draw_context *draw ) { struct wide_stage *wide = CALLOC_STRUCT(wide_stage); - draw_alloc_tmps( &wide->stage, 4 ); + draw_alloc_temp_verts( &wide->stage, 4 ); wide->stage.draw = draw; wide->stage.next = NULL; @@ -425,7 +425,7 @@ struct draw_stage *draw_wide_stage( struct draw_context *draw ) wide->stage.line = wide_first_line; wide->stage.tri = passthrough_tri; wide->stage.flush = wide_flush; - wide->stage.reset_stipple_counter = draw_reset_stipple_counter; + wide->stage.reset_stipple_counter = wide_reset_stipple_counter; wide->stage.destroy = wide_destroy; return &wide->stage; diff --git a/src/mesa/pipe/llvm/Makefile b/src/gallium/aux/llvm/Makefile index a0494ba966..e6ac399d08 100644 --- a/src/mesa/pipe/llvm/Makefile +++ b/src/gallium/aux/llvm/Makefile @@ -15,7 +15,7 @@ GALLIVM_SOURCES = \ storagesoa.cpp \ instructionssoa.cpp -INC_SOURCES = gallivm_builtins.cpp llvm_base_shader.cpp +INC_SOURCES = gallivm_builtins.cpp CPP_SOURCES = \ $(GALLIVM_SOURCES) @@ -30,7 +30,9 @@ OBJECTS = $(C_SOURCES:.c=.o) \ ### Include directories INCLUDES = \ -I. \ - -I$(TOP)/src/mesa/pipe \ + -I$(TOP)/src/gallium/drivers + -I$(TOP)/src/gallium/aux \ + -I$(TOP)/src/gallium/include \ -I$(TOP)/src/mesa \ -I$(TOP)/include @@ -65,8 +67,6 @@ depend: $(C_SOURCES) $(CPP_SOURCES) $(ASM_SOURCES) $(INC_SOURCES) gallivm_builtins.cpp: llvm_builtins.c clang --emit-llvm $< |llvm-as|opt -std-compile-opts|llvm2cpp -gen-contents -o=$@ -f -for=shader -funcname=createGallivmBuiltins -llvm_base_shader.cpp: llvm_entry.c - clang --emit-llvm $< |llvm-as |opt -std-compile-opts |llvm2cpp -for=Shader -gen-module -o=$@ -f -funcname=createBaseShader # Emacs tags tags: @@ -77,7 +77,7 @@ tags: clean: -rm -f *.o */*.o *~ *.so *~ server/*.o -rm -f depend depend.bak - -rm -f gallivm_builtins.cpp llvm_base_shader.cpp + -rm -f gallivm_builtins.cpp symlinks: diff --git a/src/mesa/pipe/llvm/gallivm.cpp b/src/gallium/aux/llvm/gallivm.cpp index da0105c2c9..d14bb3b99a 100644 --- a/src/mesa/pipe/llvm/gallivm.cpp +++ b/src/gallium/aux/llvm/gallivm.cpp @@ -42,8 +42,8 @@ #include "pipe/p_context.h" #include "pipe/p_shader_tokens.h" -#include "pipe/tgsi/exec/tgsi_exec.h" -#include "pipe/tgsi/util/tgsi_dump.h" +#include "tgsi/exec/tgsi_exec.h" +#include "tgsi/util/tgsi_dump.h" #include <llvm/Module.h> #include <llvm/CallingConv.h> diff --git a/src/mesa/pipe/llvm/gallivm.h b/src/gallium/aux/llvm/gallivm.h index 92da4bca7f..92da4bca7f 100644 --- a/src/mesa/pipe/llvm/gallivm.h +++ b/src/gallium/aux/llvm/gallivm.h diff --git a/src/mesa/pipe/llvm/gallivm_builtins.cpp b/src/gallium/aux/llvm/gallivm_builtins.cpp index 1796f0a177..1796f0a177 100644 --- a/src/mesa/pipe/llvm/gallivm_builtins.cpp +++ b/src/gallium/aux/llvm/gallivm_builtins.cpp diff --git a/src/mesa/pipe/llvm/gallivm_cpu.cpp b/src/gallium/aux/llvm/gallivm_cpu.cpp index dc4d92a72a..8f9830d0b1 100644 --- a/src/mesa/pipe/llvm/gallivm_cpu.cpp +++ b/src/gallium/aux/llvm/gallivm_cpu.cpp @@ -42,8 +42,8 @@ #include "pipe/p_context.h" #include "pipe/p_shader_tokens.h" -#include "pipe/tgsi/exec/tgsi_exec.h" -#include "pipe/tgsi/util/tgsi_dump.h" +#include "tgsi/exec/tgsi_exec.h" +#include "tgsi/util/tgsi_dump.h" #include <llvm/Module.h> #include <llvm/CallingConv.h> diff --git a/src/mesa/pipe/llvm/gallivm_p.h b/src/gallium/aux/llvm/gallivm_p.h index cfe7b1901b..cfe7b1901b 100644 --- a/src/mesa/pipe/llvm/gallivm_p.h +++ b/src/gallium/aux/llvm/gallivm_p.h diff --git a/src/mesa/pipe/llvm/instructions.cpp b/src/gallium/aux/llvm/instructions.cpp index 55d39fa5f1..55d39fa5f1 100644 --- a/src/mesa/pipe/llvm/instructions.cpp +++ b/src/gallium/aux/llvm/instructions.cpp diff --git a/src/mesa/pipe/llvm/instructions.h b/src/gallium/aux/llvm/instructions.h index 9ebc17dd8e..9ebc17dd8e 100644 --- a/src/mesa/pipe/llvm/instructions.h +++ b/src/gallium/aux/llvm/instructions.h diff --git a/src/gallium/aux/llvm/instructionssoa.cpp b/src/gallium/aux/llvm/instructionssoa.cpp new file mode 100644 index 0000000000..a4d5046637 --- /dev/null +++ b/src/gallium/aux/llvm/instructionssoa.cpp @@ -0,0 +1,121 @@ +#include "instructionssoa.h" + +#include "storagesoa.h" + +#include <llvm/Constants.h> + +using namespace llvm; + +InstructionsSoa::InstructionsSoa(llvm::Module *mod, llvm::Function *func, + llvm::BasicBlock *block, StorageSoa *storage) + : m_builder(block), + m_storage(storage), + m_idx(0) +{ +} + +const char * InstructionsSoa::name(const char *prefix) const +{ + ++m_idx; + snprintf(m_name, 32, "%s%d", prefix, m_idx); + return m_name; +} + +llvm::Value * InstructionsSoa::vectorFromVals(llvm::Value *x, llvm::Value *y, + llvm::Value *z, llvm::Value *w) +{ + VectorType *vectorType = VectorType::get(Type::FloatTy, 4); + Constant *constVector = Constant::getNullValue(vectorType); + Value *res = m_builder.CreateInsertElement(constVector, x, + m_storage->constantInt(0), + name("vecx")); + res = m_builder.CreateInsertElement(res, y, m_storage->constantInt(1), + name("vecxy")); + res = m_builder.CreateInsertElement(res, z, m_storage->constantInt(2), + name("vecxyz")); + if (w) + res = m_builder.CreateInsertElement(res, w, m_storage->constantInt(3), + name("vecxyzw")); + return res; +} + +std::vector<llvm::Value*> InstructionsSoa::arl(const std::vector<llvm::Value*> in) +{ + std::vector<llvm::Value*> res(4); + + //Extract x's + llvm::Value *x1 = m_builder.CreateExtractElement(in[0], + m_storage->constantInt(0), + name("extractX")); + //cast it to an unsigned int + x1 = m_builder.CreateFPToUI(x1, IntegerType::get(32), name("x1IntCast")); + + res[0] = x1;//vectorFromVals(x1, x2, x3, x4); + //only x is valid. the others shouldn't be necessary + /* + res[1] = Constant::getNullValue(m_floatVecType); + res[2] = Constant::getNullValue(m_floatVecType); + res[3] = Constant::getNullValue(m_floatVecType); + */ + + return res; +} + + +std::vector<llvm::Value*> InstructionsSoa::add(const std::vector<llvm::Value*> in1, + const std::vector<llvm::Value*> in2) +{ + std::vector<llvm::Value*> res(4); + + res[0] = m_builder.CreateAdd(in1[0], in2[0], name("addx")); + res[1] = m_builder.CreateAdd(in1[1], in2[1], name("addy")); + res[2] = m_builder.CreateAdd(in1[2], in2[2], name("addz")); + res[3] = m_builder.CreateAdd(in1[3], in2[3], name("addw")); + + return res; +} + +std::vector<llvm::Value*> InstructionsSoa::mul(const std::vector<llvm::Value*> in1, + const std::vector<llvm::Value*> in2) +{ + std::vector<llvm::Value*> res(4); + + res[0] = m_builder.CreateMul(in1[0], in2[0], name("mulx")); + res[1] = m_builder.CreateMul(in1[1], in2[1], name("muly")); + res[2] = m_builder.CreateMul(in1[2], in2[2], name("mulz")); + res[3] = m_builder.CreateMul(in1[3], in2[3], name("mulw")); + + return res; +} + +void InstructionsSoa::end() +{ + m_builder.CreateRetVoid(); +} + +std::vector<llvm::Value*> InstructionsSoa::madd(const std::vector<llvm::Value*> in1, + const std::vector<llvm::Value*> in2, + const std::vector<llvm::Value*> in3) +{ + std::vector<llvm::Value*> res = mul(in1, in2); + return add(res, in3); +} + +std::vector<llvm::Value*> InstructionsSoa::extractVector(llvm::Value *vector) +{ + std::vector<llvm::Value*> res(4); + res[0] = m_builder.CreateExtractElement(vector, + m_storage->constantInt(0), + name("extract1X")); + res[1] = m_builder.CreateExtractElement(vector, + m_storage->constantInt(1), + name("extract2X")); + res[2] = m_builder.CreateExtractElement(vector, + m_storage->constantInt(2), + name("extract3X")); + res[3] = m_builder.CreateExtractElement(vector, + m_storage->constantInt(3), + name("extract4X")); + + return res; +} diff --git a/src/mesa/pipe/llvm/instructionssoa.h b/src/gallium/aux/llvm/instructionssoa.h index 0195501584..4169dcbb2e 100644 --- a/src/mesa/pipe/llvm/instructionssoa.h +++ b/src/gallium/aux/llvm/instructionssoa.h @@ -46,17 +46,25 @@ public: InstructionsSoa(llvm::Module *mod, llvm::Function *func, llvm::BasicBlock *block, StorageSoa *storage); + std::vector<llvm::Value*> arl(const std::vector<llvm::Value*> in); + std::vector<llvm::Value*> add(const std::vector<llvm::Value*> in1, const std::vector<llvm::Value*> in2); + std::vector<llvm::Value*> madd(const std::vector<llvm::Value*> in1, + const std::vector<llvm::Value*> in2, + const std::vector<llvm::Value*> in3); std::vector<llvm::Value*> mul(const std::vector<llvm::Value*> in1, const std::vector<llvm::Value*> in2); void end(); + std::vector<llvm::Value*> extractVector(llvm::Value *vector); private: const char * name(const char *prefix) const; + llvm::Value *vectorFromVals(llvm::Value *x, llvm::Value *y, + llvm::Value *z, llvm::Value *w); private: llvm::LLVMFoldingBuilder m_builder; - + StorageSoa *m_storage; private: mutable int m_idx; mutable char m_name[32]; diff --git a/src/mesa/pipe/llvm/llvm_builtins.c b/src/gallium/aux/llvm/llvm_builtins.c index 4f98d754ba..4f98d754ba 100644 --- a/src/mesa/pipe/llvm/llvm_builtins.c +++ b/src/gallium/aux/llvm/llvm_builtins.c diff --git a/src/mesa/pipe/llvm/loweringpass.cpp b/src/gallium/aux/llvm/loweringpass.cpp index 556dbec366..556dbec366 100644 --- a/src/mesa/pipe/llvm/loweringpass.cpp +++ b/src/gallium/aux/llvm/loweringpass.cpp diff --git a/src/mesa/pipe/llvm/loweringpass.h b/src/gallium/aux/llvm/loweringpass.h index f62dcf6ba7..f62dcf6ba7 100644 --- a/src/mesa/pipe/llvm/loweringpass.h +++ b/src/gallium/aux/llvm/loweringpass.h diff --git a/src/mesa/pipe/llvm/storage.cpp b/src/gallium/aux/llvm/storage.cpp index c4326de8c5..c4326de8c5 100644 --- a/src/mesa/pipe/llvm/storage.cpp +++ b/src/gallium/aux/llvm/storage.cpp diff --git a/src/mesa/pipe/llvm/storage.h b/src/gallium/aux/llvm/storage.h index 8574f7554e..8574f7554e 100644 --- a/src/mesa/pipe/llvm/storage.h +++ b/src/gallium/aux/llvm/storage.h diff --git a/src/gallium/aux/llvm/storagesoa.cpp b/src/gallium/aux/llvm/storagesoa.cpp new file mode 100644 index 0000000000..ed0674a96f --- /dev/null +++ b/src/gallium/aux/llvm/storagesoa.cpp @@ -0,0 +1,389 @@ +/************************************************************************** + * + * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas. + * 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 TUNGSTEN GRAPHICS 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. + * + **************************************************************************/ + +#include "storagesoa.h" + +#include "gallivm_p.h" + +#include "pipe/p_shader_tokens.h" +#include "pipe/p_debug.h" + +#include <llvm/BasicBlock.h> +#include <llvm/Module.h> +#include <llvm/Value.h> + +#include <llvm/CallingConv.h> +#include <llvm/Constants.h> +#include <llvm/DerivedTypes.h> +#include <llvm/InstrTypes.h> +#include <llvm/Instructions.h> + +using namespace llvm; + + +StorageSoa::StorageSoa(llvm::BasicBlock *block, + llvm::Value *input, + llvm::Value *output, + llvm::Value *consts, + llvm::Value *temps) + : m_block(block), + m_input(input), + m_output(output), + m_consts(consts), + m_temps(temps), + m_immediates(0), + m_idx(0) +{ +} + +void StorageSoa::addImmediate(float *vec) +{ + std::vector<float> vals(4); + vals[0] = vec[0]; + vals[1] = vec[1]; + vals[2] = vec[2]; + vals[3] = vec[3]; + m_immediatesToFlush.push_back(vals); +} + +void StorageSoa::declareImmediates() +{ + if (m_immediatesToFlush.empty()) + return; + + VectorType *vectorType = VectorType::get(Type::FloatTy, 4); + ArrayType *vectorChannels = ArrayType::get(vectorType, 4); + ArrayType *arrayType = ArrayType::get(vectorChannels, m_immediatesToFlush.size()); + + m_immediates = new GlobalVariable( + /*Type=*/arrayType, + /*isConstant=*/false, + /*Linkage=*/GlobalValue::ExternalLinkage, + /*Initializer=*/0, // has initializer, specified below + /*Name=*/name("immediates"), + currentModule()); + + std::vector<Constant*> arrayVals; + for (unsigned int i = 0; i < m_immediatesToFlush.size(); ++i) { + std::vector<float> vec = m_immediatesToFlush[i]; + std::vector<float> vals(4); + std::vector<Constant*> channelArray; + + vals[0] = vec[0]; vals[1] = vec[0]; vals[2] = vec[0]; vals[3] = vec[0]; + llvm::Constant *xChannel = createConstGlobalVector(vals); + + vals[0] = vec[1]; vals[1] = vec[1]; vals[2] = vec[1]; vals[3] = vec[1]; + llvm::Constant *yChannel = createConstGlobalVector(vals); + + vals[0] = vec[2]; vals[1] = vec[2]; vals[2] = vec[2]; vals[3] = vec[2]; + llvm::Constant *zChannel = createConstGlobalVector(vals); + + vals[0] = vec[3]; vals[1] = vec[3]; vals[2] = vec[3]; vals[3] = vec[3]; + llvm::Constant *wChannel = createConstGlobalVector(vals); + channelArray.push_back(xChannel); + channelArray.push_back(yChannel); + channelArray.push_back(zChannel); + channelArray.push_back(wChannel); + Constant *constChannels = ConstantArray::get(vectorChannels, + channelArray); + arrayVals.push_back(constChannels); + } + Constant *constArray = ConstantArray::get(arrayType, arrayVals); + m_immediates->setInitializer(constArray); + + m_immediatesToFlush.clear(); +} + +llvm::Value *StorageSoa::addrElement(int idx) const +{ + std::map<int, llvm::Value*>::const_iterator itr = m_addresses.find(idx); + if (itr == m_addresses.end()) { + debug_printf("Trying to access invalid shader 'address'\n"); + return 0; + } + llvm::Value * res = (*itr).second; + + res = new LoadInst(res, name("addr"), false, m_block); + + return res; +} + +std::vector<llvm::Value*> StorageSoa::inputElement(llvm::Value *idx) +{ + std::vector<llvm::Value*> res(4); + + res[0] = element(m_input, idx, 0); + res[1] = element(m_input, idx, 1); + res[2] = element(m_input, idx, 2); + res[3] = element(m_input, idx, 3); + + return res; +} + +std::vector<llvm::Value*> StorageSoa::constElement(llvm::Value *idx) +{ + std::vector<llvm::Value*> res(4); + llvm::Value *xChannel, *yChannel, *zChannel, *wChannel; + + xChannel = elementPointer(m_consts, idx, 0); + yChannel = elementPointer(m_consts, idx, 1); + zChannel = elementPointer(m_consts, idx, 2); + wChannel = elementPointer(m_consts, idx, 3); + + res[0] = alignedArrayLoad(xChannel); + res[1] = alignedArrayLoad(yChannel); + res[2] = alignedArrayLoad(zChannel); + res[3] = alignedArrayLoad(wChannel); + + return res; +} + +std::vector<llvm::Value*> StorageSoa::outputElement(llvm::Value *idx) +{ + std::vector<llvm::Value*> res(4); + + res[0] = element(m_output, idx, 0); + res[1] = element(m_output, idx, 1); + res[2] = element(m_output, idx, 2); + res[3] = element(m_output, idx, 3); + + return res; +} + +std::vector<llvm::Value*> StorageSoa::tempElement(llvm::Value *idx) +{ + std::vector<llvm::Value*> res(4); + + res[0] = element(m_temps, idx, 0); + res[1] = element(m_temps, idx, 1); + res[2] = element(m_temps, idx, 2); + res[3] = element(m_temps, idx, 3); + + return res; +} + +std::vector<llvm::Value*> StorageSoa::immediateElement(llvm::Value *idx) +{ + std::vector<llvm::Value*> res(4); + + res[0] = element(m_immediates, idx, 0); + res[1] = element(m_immediates, idx, 1); + res[2] = element(m_immediates, idx, 2); + res[3] = element(m_immediates, idx, 3); + + return res; +} + +llvm::Value * StorageSoa::elementPointer(llvm::Value *ptr, llvm::Value *index, + int channel) const +{ + std::vector<Value*> indices; + if (m_immediates == ptr) + indices.push_back(constantInt(0)); + indices.push_back(index); + indices.push_back(constantInt(channel)); + + GetElementPtrInst *getElem = new GetElementPtrInst(ptr, + indices.begin(), + indices.end(), + name("ptr"), + m_block); + return getElem; +} + +llvm::Value * StorageSoa::element(llvm::Value *ptr, llvm::Value *index, + int channel) const +{ + llvm::Value *res = elementPointer(ptr, index, channel); + LoadInst *load = new LoadInst(res, name("element"), false, m_block); + //load->setAlignment(8); + return load; +} + +const char * StorageSoa::name(const char *prefix) const +{ + ++m_idx; + snprintf(m_name, 32, "%s%d", prefix, m_idx); + return m_name; +} + +llvm::ConstantInt * StorageSoa::constantInt(int idx) const +{ + if (m_constInts.find(idx) != m_constInts.end()) { + return m_constInts[idx]; + } + ConstantInt *constInt = ConstantInt::get(APInt(32, idx)); + m_constInts[idx] = constInt; + return constInt; +} + +llvm::Value *StorageSoa::alignedArrayLoad(llvm::Value *val) +{ + VectorType *vectorType = VectorType::get(Type::FloatTy, 4); + PointerType *vectorPtr = PointerType::get(vectorType, 0); + + CastInst *cast = new BitCastInst(val, vectorPtr, name("toVector"), m_block); + LoadInst *load = new LoadInst(cast, name("alignLoad"), false, m_block); + load->setAlignment(8); + return load; +} + +llvm::Module * StorageSoa::currentModule() const +{ + if (!m_block || !m_block->getParent()) + return 0; + + return m_block->getParent()->getParent(); +} + +llvm::Constant * StorageSoa::createConstGlobalVector(const std::vector<float> &vec) +{ + VectorType *vectorType = VectorType::get(Type::FloatTy, 4); + std::vector<Constant*> immValues; + ConstantFP *constx = ConstantFP::get(Type::FloatTy, APFloat(vec[0])); + ConstantFP *consty = ConstantFP::get(Type::FloatTy, APFloat(vec[1])); + ConstantFP *constz = ConstantFP::get(Type::FloatTy, APFloat(vec[2])); + ConstantFP *constw = ConstantFP::get(Type::FloatTy, APFloat(vec[3])); + immValues.push_back(constx); + immValues.push_back(consty); + immValues.push_back(constz); + immValues.push_back(constw); + Constant *constVector = ConstantVector::get(vectorType, immValues); + + return constVector; +} + +std::vector<llvm::Value*> StorageSoa::load(Argument type, int idx, int swizzle, + llvm::Value *indIdx) +{ + std::vector<llvm::Value*> val(4); + + //if we have an indirect index, always use that + // if not use the integer offset to create one + llvm::Value *realIndex = 0; + if (indIdx) + realIndex = indIdx; + else + realIndex = constantInt(idx); + debug_printf("XXXXXXXXX realIdx = %p, indIdx = %p\n", realIndex, indIdx); + + switch(type) { + case Input: + val = inputElement(realIndex); + break; + case Output: + val = outputElement(realIndex); + break; + case Temp: + val = tempElement(realIndex); + break; + case Const: + val = constElement(realIndex); + break; + case Immediate: + val = immediateElement(realIndex); + break; + case Address: + debug_printf("Address not handled in the load phase!\n"); + assert(0); + break; + } + if (!gallivm_is_swizzle(swizzle)) + return val; + + std::vector<llvm::Value*> res(4); + + res[0] = val[gallivm_x_swizzle(swizzle)]; + res[1] = val[gallivm_y_swizzle(swizzle)]; + res[2] = val[gallivm_z_swizzle(swizzle)]; + res[3] = val[gallivm_w_swizzle(swizzle)]; + return res; +} + +void StorageSoa::store(Argument type, int idx, const std::vector<llvm::Value*> &val, + int mask) +{ + llvm::Value *out = 0; + switch(type) { + case Output: + out = m_output; + break; + case Temp: + out = m_temps; + break; + case Input: + out = m_input; + break; + case Address: { + llvm::Value *addr = m_addresses[idx]; + if (!addr) { + addAddress(idx); + addr = m_addresses[idx]; + assert(addr); + } + new StoreInst(val[0], addr, false, m_block); + return; + break; + } + default: + debug_printf("Can't save output of this type: %d !\n", type); + assert(0); + break; + } + llvm::Value *realIndex = constantInt(idx); + if ((mask & TGSI_WRITEMASK_X)) { + llvm::Value *xChannel = elementPointer(out, realIndex, 0); + new StoreInst(val[0], xChannel, false, m_block); + } + if ((mask & TGSI_WRITEMASK_Y)) { + llvm::Value *yChannel = elementPointer(out, realIndex, 1); + new StoreInst(val[1], yChannel, false, m_block); + } + if ((mask & TGSI_WRITEMASK_Z)) { + llvm::Value *zChannel = elementPointer(out, realIndex, 2); + new StoreInst(val[2], zChannel, false, m_block); + } + if ((mask & TGSI_WRITEMASK_W)) { + llvm::Value *wChannel = elementPointer(out, realIndex, 3); + new StoreInst(val[3], wChannel, false, m_block); + } +} + +void StorageSoa::addAddress(int idx) +{ + GlobalVariable *val = new GlobalVariable( + /*Type=*/IntegerType::get(32), + /*isConstant=*/false, + /*Linkage=*/GlobalValue::ExternalLinkage, + /*Initializer=*/0, // has initializer, specified below + /*Name=*/name("address"), + currentModule()); + val->setInitializer(Constant::getNullValue(IntegerType::get(32))); + + debug_printf("adding to %d\n", idx); + m_addresses[idx] = val; +} diff --git a/src/mesa/pipe/llvm/storagesoa.h b/src/gallium/aux/llvm/storagesoa.h index 84db7726a7..6443351f27 100644 --- a/src/mesa/pipe/llvm/storagesoa.h +++ b/src/gallium/aux/llvm/storagesoa.h @@ -29,51 +29,67 @@ #define STORAGESOA_H #include <vector> +#include <list> #include <map> namespace llvm { class BasicBlock; class Constant; class ConstantInt; + class GlobalVariable; class LoadInst; class Value; class VectorType; + class Module; } class StorageSoa { public: + enum Argument { + Input, + Output, + Temp, + Const, + Immediate, + Address + }; +public: StorageSoa(llvm::BasicBlock *block, llvm::Value *input, llvm::Value *output, llvm::Value *consts, llvm::Value *temps); - void addImmediate(float *vec); - llvm::Value * addrElement(int idx) const; + std::vector<llvm::Value*> load(Argument type, int idx, int swizzle, + llvm::Value *indIdx =0); + void store(Argument type, int idx, const std::vector<llvm::Value*> &val, + int mask); - std::vector<llvm::Value*> inputElement(int idx, int swizzle, llvm::Value *indIdx =0); - std::vector<llvm::Value*> constElement(int idx, int swizzle, llvm::Value *indIdx =0); - std::vector<llvm::Value*> outputElement(int idx, int swizzle, llvm::Value *indIdx =0); - std::vector<llvm::Value*> tempElement(int idx, int swizzle, llvm::Value *indIdx =0); - std::vector<llvm::Value*> immediateElement(int idx, int swizzle); + void addImmediate(float *vec); + void declareImmediates(); + + void addAddress(int idx); - llvm::Value *extractIndex(llvm::Value *vec); + llvm::Value * addrElement(int idx) const; - void storeOutput(int dstIdx, const std::vector<llvm::Value*> &val, - int mask); - void storeTemp(int idx, const std::vector<llvm::Value*> &val, - int mask); - void storeAddress(int idx, const std::vector<llvm::Value*> &val, - int mask); + llvm::ConstantInt *constantInt(int) const; private: - llvm::Value *elementPointer(llvm::Value *ptr, int index, + llvm::Value *elementPointer(llvm::Value *ptr, llvm::Value *indIdx, int channel) const; - llvm::Value *element(llvm::Value *ptr, int index, + llvm::Value *element(llvm::Value *ptr, llvm::Value *idx, int channel) const; const char *name(const char *prefix) const; - llvm::ConstantInt *constantInt(int) const; + llvm::Value *alignedArrayLoad(llvm::Value *val); + llvm::Module *currentModule() const; + llvm::Constant *createConstGlobalVector(const std::vector<float> &vec); + + std::vector<llvm::Value*> inputElement(llvm::Value *indIdx); + std::vector<llvm::Value*> constElement(llvm::Value *indIdx); + std::vector<llvm::Value*> outputElement(llvm::Value *indIdx); + std::vector<llvm::Value*> tempElement(llvm::Value *indIdx); + std::vector<llvm::Value*> immediateElement(llvm::Value *indIdx); private: llvm::BasicBlock *m_block; @@ -81,6 +97,11 @@ private: llvm::Value *m_output; llvm::Value *m_consts; llvm::Value *m_temps; + llvm::GlobalVariable *m_immediates; + + std::map<int, llvm::Value*> m_addresses; + + std::vector<std::vector<float> > m_immediatesToFlush; mutable std::map<int, llvm::ConstantInt*> m_constInts; mutable char m_name[32]; diff --git a/src/mesa/pipe/llvm/tgsitollvm.cpp b/src/gallium/aux/llvm/tgsitollvm.cpp index 3497eebcd9..2cb4acce32 100644 --- a/src/mesa/pipe/llvm/tgsitollvm.cpp +++ b/src/gallium/aux/llvm/tgsitollvm.cpp @@ -10,11 +10,11 @@ #include "pipe/p_shader_tokens.h" -#include "pipe/tgsi/util/tgsi_parse.h" -#include "pipe/tgsi/exec/tgsi_exec.h" -#include "pipe/tgsi/util/tgsi_util.h" -#include "pipe/tgsi/util/tgsi_build.h" -#include "pipe/tgsi/util/tgsi_dump.h" +#include "tgsi/util/tgsi_parse.h" +#include "tgsi/exec/tgsi_exec.h" +#include "tgsi/util/tgsi_util.h" +#include "tgsi/util/tgsi_build.h" +#include "tgsi/util/tgsi_dump.h" #include <llvm/Module.h> @@ -44,7 +44,6 @@ #include <iostream> using namespace llvm; -#include "llvm_base_shader.cpp" static inline FunctionType *vertexShaderFunctionType() { @@ -149,10 +148,14 @@ translate_declaration(struct gallivm_ir *prog, static void translate_declarationir(struct gallivm_ir *, llvm::Module *, - StorageSoa *, - struct tgsi_full_declaration *, + StorageSoa *storage, + struct tgsi_full_declaration *decl, struct tgsi_full_declaration *) { + if (decl->Declaration.File == TGSI_FILE_ADDRESS) { + int idx = decl->u.DeclarationRange.First; + storage->addAddress(idx); + } } static void @@ -704,18 +707,22 @@ translate_instructionir(llvm::Module *module, if (src->SrcRegister.Indirect) { indIdx = storage->addrElement(src->SrcRegisterInd.Index); - indIdx = storage->extractIndex(indIdx); } if (src->SrcRegister.File == TGSI_FILE_CONSTANT) { - val = storage->constElement(src->SrcRegister.Index, swizzle, indIdx); + val = storage->load(StorageSoa::Const, + src->SrcRegister.Index, swizzle, indIdx); } else if (src->SrcRegister.File == TGSI_FILE_INPUT) { - val = storage->inputElement(src->SrcRegister.Index, swizzle, indIdx); + val = storage->load(StorageSoa::Input, + src->SrcRegister.Index, swizzle, indIdx); } else if (src->SrcRegister.File == TGSI_FILE_TEMPORARY) { - val = storage->tempElement(src->SrcRegister.Index, swizzle); + val = storage->load(StorageSoa::Temp, + src->SrcRegister.Index, swizzle, indIdx); } else if (src->SrcRegister.File == TGSI_FILE_OUTPUT) { - val = storage->outputElement(src->SrcRegister.Index, swizzle, indIdx); + val = storage->load(StorageSoa::Output, + src->SrcRegister.Index, swizzle, indIdx); } else if (src->SrcRegister.File == TGSI_FILE_IMMEDIATE) { - val = storage->immediateElement(src->SrcRegister.Index, swizzle); + val = storage->load(StorageSoa::Immediate, + src->SrcRegister.Index, swizzle, indIdx); } else { fprintf(stderr, "ERROR: not supported llvm source %d\n", src->SrcRegister.File); return; @@ -727,6 +734,7 @@ translate_instructionir(llvm::Module *module, std::vector<llvm::Value*> out(4); switch (inst->Instruction.Opcode) { case TGSI_OPCODE_ARL: { + out = instr->arl(inputs[0]); } break; case TGSI_OPCODE_MOV: { @@ -776,6 +784,7 @@ translate_instructionir(llvm::Module *module, } break; case TGSI_OPCODE_MAD: { + out = instr->madd(inputs[0], inputs[1], inputs[2]); } break; case TGSI_OPCODE_SUB: { @@ -1059,11 +1068,14 @@ translate_instructionir(llvm::Module *module, struct tgsi_full_dst_register *dst = &inst->FullDstRegisters[i]; if (dst->DstRegister.File == TGSI_FILE_OUTPUT) { - storage->storeOutput(dst->DstRegister.Index, out, dst->DstRegister.WriteMask); + storage->store(StorageSoa::Output, + dst->DstRegister.Index, out, dst->DstRegister.WriteMask); } else if (dst->DstRegister.File == TGSI_FILE_TEMPORARY) { - storage->storeTemp(dst->DstRegister.Index, out, dst->DstRegister.WriteMask); + storage->store(StorageSoa::Temp, + dst->DstRegister.Index, out, dst->DstRegister.WriteMask); } else if (dst->DstRegister.File == TGSI_FILE_ADDRESS) { - storage->storeAddress(dst->DstRegister.Index, out, dst->DstRegister.WriteMask); + storage->store(StorageSoa::Address, + dst->DstRegister.Index, out, dst->DstRegister.WriteMask); } else { fprintf(stderr, "ERROR: unsupported LLVM destination!"); assert(!"wrong destination"); @@ -1074,7 +1086,7 @@ translate_instructionir(llvm::Module *module, llvm::Module * tgsi_to_llvm(struct gallivm_ir *ir, const struct tgsi_token *tokens) { - llvm::Module *mod = createBaseShader(); + llvm::Module *mod = new Module("shader"); struct tgsi_parse_context parse; struct tgsi_full_instruction fi; struct tgsi_full_declaration fd; @@ -1191,6 +1203,7 @@ llvm::Module * tgsi_to_llvmir(struct gallivm_ir *ir, break; case TGSI_TOKEN_TYPE_INSTRUCTION: + storage.declareImmediates(); translate_instructionir(mod, &storage, &instr, &parse.FullToken.FullInstruction, &fi, instno); diff --git a/src/mesa/pipe/llvm/tgsitollvm.h b/src/gallium/aux/llvm/tgsitollvm.h index 7ada04d629..7ada04d629 100644 --- a/src/mesa/pipe/llvm/tgsitollvm.h +++ b/src/gallium/aux/llvm/tgsitollvm.h diff --git a/src/mesa/pipe/pipebuffer/Makefile b/src/gallium/aux/pipebuffer/Makefile index 75764a9a18..588629e870 100644 --- a/src/mesa/pipe/pipebuffer/Makefile +++ b/src/gallium/aux/pipebuffer/Makefile @@ -17,7 +17,7 @@ C_SOURCES = \ ASM_SOURCES = -include ../Makefile.template +include ../../Makefile.template symlinks: diff --git a/src/mesa/pipe/pipebuffer/linked_list.h b/src/gallium/aux/pipebuffer/linked_list.h index e99817fb13..e99817fb13 100644 --- a/src/mesa/pipe/pipebuffer/linked_list.h +++ b/src/gallium/aux/pipebuffer/linked_list.h diff --git a/src/mesa/pipe/pipebuffer/pb_buffer.h b/src/gallium/aux/pipebuffer/pb_buffer.h index 97beb5f72a..97beb5f72a 100644 --- a/src/mesa/pipe/pipebuffer/pb_buffer.h +++ b/src/gallium/aux/pipebuffer/pb_buffer.h diff --git a/src/mesa/pipe/pipebuffer/pb_buffer_fenced.c b/src/gallium/aux/pipebuffer/pb_buffer_fenced.c index f4fc3f6d71..f4fc3f6d71 100644 --- a/src/mesa/pipe/pipebuffer/pb_buffer_fenced.c +++ b/src/gallium/aux/pipebuffer/pb_buffer_fenced.c diff --git a/src/mesa/pipe/pipebuffer/pb_buffer_fenced.h b/src/gallium/aux/pipebuffer/pb_buffer_fenced.h index c40b9c75e1..c40b9c75e1 100644 --- a/src/mesa/pipe/pipebuffer/pb_buffer_fenced.h +++ b/src/gallium/aux/pipebuffer/pb_buffer_fenced.h diff --git a/src/mesa/pipe/pipebuffer/pb_buffer_malloc.c b/src/gallium/aux/pipebuffer/pb_buffer_malloc.c index c1b7759874..9e8244f909 100644 --- a/src/mesa/pipe/pipebuffer/pb_buffer_malloc.c +++ b/src/gallium/aux/pipebuffer/pb_buffer_malloc.c @@ -110,7 +110,7 @@ pb_malloc_buffer_create(size_t size, buf = CALLOC_STRUCT(malloc_buffer); if(!buf) return NULL; - + buf->base.base.refcount = 1; buf->base.base.alignment = desc->alignment; buf->base.base.usage = desc->usage; @@ -119,7 +119,7 @@ pb_malloc_buffer_create(size_t size, buf->data = align_malloc(size, desc->alignment < sizeof(void*) ? sizeof(void*) : desc->alignment); if(!buf->data) { - FREE(buf); + align_free(buf); return NULL; } diff --git a/src/mesa/pipe/pipebuffer/pb_bufmgr.h b/src/gallium/aux/pipebuffer/pb_bufmgr.h index 1ddf784c97..1ddf784c97 100644 --- a/src/mesa/pipe/pipebuffer/pb_bufmgr.h +++ b/src/gallium/aux/pipebuffer/pb_bufmgr.h diff --git a/src/mesa/pipe/pipebuffer/pb_bufmgr_fenced.c b/src/gallium/aux/pipebuffer/pb_bufmgr_fenced.c index c535d3276c..c535d3276c 100644 --- a/src/mesa/pipe/pipebuffer/pb_bufmgr_fenced.c +++ b/src/gallium/aux/pipebuffer/pb_bufmgr_fenced.c diff --git a/src/mesa/pipe/pipebuffer/pb_bufmgr_mm.c b/src/gallium/aux/pipebuffer/pb_bufmgr_mm.c index 8b1b51c0e2..8b1b51c0e2 100644 --- a/src/mesa/pipe/pipebuffer/pb_bufmgr_mm.c +++ b/src/gallium/aux/pipebuffer/pb_bufmgr_mm.c diff --git a/src/mesa/pipe/pipebuffer/pb_bufmgr_pool.c b/src/gallium/aux/pipebuffer/pb_bufmgr_pool.c index 04477a865a..04477a865a 100644 --- a/src/mesa/pipe/pipebuffer/pb_bufmgr_pool.c +++ b/src/gallium/aux/pipebuffer/pb_bufmgr_pool.c diff --git a/src/mesa/pipe/pipebuffer/pb_winsys.c b/src/gallium/aux/pipebuffer/pb_winsys.c index 978944091f..978944091f 100644 --- a/src/mesa/pipe/pipebuffer/pb_winsys.c +++ b/src/gallium/aux/pipebuffer/pb_winsys.c diff --git a/src/mesa/pipe/tgsi/Makefile b/src/gallium/aux/tgsi/Makefile index 12a8bd0409..12a8bd0409 100644 --- a/src/mesa/pipe/tgsi/Makefile +++ b/src/gallium/aux/tgsi/Makefile diff --git a/src/mesa/pipe/tgsi/exec/Makefile b/src/gallium/aux/tgsi/exec/Makefile index eb8b14e0e8..eb8b14e0e8 100644 --- a/src/mesa/pipe/tgsi/exec/Makefile +++ b/src/gallium/aux/tgsi/exec/Makefile diff --git a/src/mesa/pipe/tgsi/exec/tgsi_exec.c b/src/gallium/aux/tgsi/exec/tgsi_exec.c index 92a6fd4d62..d7b18dc9c5 100644 --- a/src/mesa/pipe/tgsi/exec/tgsi_exec.c +++ b/src/gallium/aux/tgsi/exec/tgsi_exec.c @@ -54,8 +54,8 @@ #include "pipe/p_state.h" #include "pipe/p_util.h" #include "pipe/p_shader_tokens.h" -#include "pipe/tgsi/util/tgsi_parse.h" -#include "pipe/tgsi/util/tgsi_util.h" +#include "tgsi/util/tgsi_parse.h" +#include "tgsi/util/tgsi_util.h" #include "tgsi_exec.h" #define TILE_TOP_LEFT 0 @@ -176,13 +176,13 @@ tgsi_exec_machine_bind_shader( if (numDeclarations == maxDeclarations) { declarations = REALLOC(declarations, maxDeclarations - * sizeof(struct tgsi_full_instruction), + * sizeof(struct tgsi_full_declaration), (maxDeclarations + 10) - * sizeof(struct tgsi_full_instruction)); + * sizeof(struct tgsi_full_declaration)); maxDeclarations += 10; } memcpy(declarations + numDeclarations, - &parse.FullToken.FullInstruction, + &parse.FullToken.FullDeclaration, sizeof(declarations[0])); numDeclarations++; break; @@ -1337,9 +1337,12 @@ exec_tex(struct tgsi_exec_machine *mach, } - +/** + * Evaluate a constant-valued coefficient at the position of the + * current quad. + */ static void -constant_interpolation( +eval_constant_coef( struct tgsi_exec_machine *mach, unsigned attrib, unsigned chan ) @@ -1351,8 +1354,12 @@ constant_interpolation( } } +/** + * Evaluate a linear-valued coefficient at the position of the + * current quad. + */ static void -linear_interpolation( +eval_linear_coef( struct tgsi_exec_machine *mach, unsigned attrib, unsigned chan ) @@ -1368,8 +1375,12 @@ linear_interpolation( mach->Inputs[attrib].xyzw[chan].f[3] = a0 + dadx + dady; } +/** + * Evaluate a perspective-valued coefficient at the position of the + * current quad. + */ static void -perspective_interpolation( +eval_perspective_coef( struct tgsi_exec_machine *mach, unsigned attrib, unsigned chan ) @@ -1388,7 +1399,7 @@ perspective_interpolation( } -typedef void (* interpolation_func)( +typedef void (* eval_coef_func)( struct tgsi_exec_machine *mach, unsigned attrib, unsigned chan ); @@ -1401,7 +1412,7 @@ exec_declaration( if( mach->Processor == TGSI_PROCESSOR_FRAGMENT ) { if( decl->Declaration.File == TGSI_FILE_INPUT ) { unsigned first, last, mask; - interpolation_func interp; + eval_coef_func eval; assert( decl->Declaration.Declare == TGSI_DECLARE_RANGE ); @@ -1411,15 +1422,15 @@ exec_declaration( switch( decl->Interpolation.Interpolate ) { case TGSI_INTERPOLATE_CONSTANT: - interp = constant_interpolation; + eval = eval_constant_coef; break; case TGSI_INTERPOLATE_LINEAR: - interp = linear_interpolation; + eval = eval_linear_coef; break; case TGSI_INTERPOLATE_PERSPECTIVE: - interp = perspective_interpolation; + eval = eval_perspective_coef; break; default: @@ -1431,7 +1442,7 @@ exec_declaration( for( i = first; i <= last; i++ ) { for( j = 0; j < NUM_CHANNELS; j++ ) { - interp( mach, i, j ); + eval( mach, i, j ); } } } @@ -1441,7 +1452,7 @@ exec_declaration( for( j = 0; j < NUM_CHANNELS; j++ ) { if( mask & (1 << j) ) { for( i = first; i <= last; i++ ) { - interp( mach, i, j ); + eval( mach, i, j ); } } } diff --git a/src/mesa/pipe/tgsi/exec/tgsi_exec.h b/src/gallium/aux/tgsi/exec/tgsi_exec.h index 45c49dd007..45c49dd007 100644 --- a/src/mesa/pipe/tgsi/exec/tgsi_exec.h +++ b/src/gallium/aux/tgsi/exec/tgsi_exec.h diff --git a/src/mesa/pipe/tgsi/exec/tgsi_sse2.c b/src/gallium/aux/tgsi/exec/tgsi_sse2.c index 9bc9483e3b..79209575bc 100755 --- a/src/mesa/pipe/tgsi/exec/tgsi_sse2.c +++ b/src/gallium/aux/tgsi/exec/tgsi_sse2.c @@ -27,8 +27,8 @@ #include "pipe/p_util.h" #include "pipe/p_shader_tokens.h" -#include "pipe/tgsi/util/tgsi_parse.h" -#include "pipe/tgsi/util/tgsi_util.h" +#include "tgsi/util/tgsi_parse.h" +#include "tgsi/util/tgsi_util.h" #include "tgsi_exec.h" #include "tgsi_sse2.h" diff --git a/src/mesa/pipe/tgsi/exec/tgsi_sse2.h b/src/gallium/aux/tgsi/exec/tgsi_sse2.h index 9bee371766..9bee371766 100755 --- a/src/mesa/pipe/tgsi/exec/tgsi_sse2.h +++ b/src/gallium/aux/tgsi/exec/tgsi_sse2.h diff --git a/src/mesa/pipe/tgsi/util/tgsi_build.c b/src/gallium/aux/tgsi/util/tgsi_build.c index a00ff1c2a5..a00ff1c2a5 100644 --- a/src/mesa/pipe/tgsi/util/tgsi_build.c +++ b/src/gallium/aux/tgsi/util/tgsi_build.c diff --git a/src/mesa/pipe/tgsi/util/tgsi_build.h b/src/gallium/aux/tgsi/util/tgsi_build.h index 116c78abf3..116c78abf3 100644 --- a/src/mesa/pipe/tgsi/util/tgsi_build.h +++ b/src/gallium/aux/tgsi/util/tgsi_build.h diff --git a/src/mesa/pipe/tgsi/util/tgsi_dump.c b/src/gallium/aux/tgsi/util/tgsi_dump.c index b5c54847e0..b5c54847e0 100644 --- a/src/mesa/pipe/tgsi/util/tgsi_dump.c +++ b/src/gallium/aux/tgsi/util/tgsi_dump.c diff --git a/src/mesa/pipe/tgsi/util/tgsi_dump.h b/src/gallium/aux/tgsi/util/tgsi_dump.h index 1adc9db251..1adc9db251 100644 --- a/src/mesa/pipe/tgsi/util/tgsi_dump.h +++ b/src/gallium/aux/tgsi/util/tgsi_dump.h diff --git a/src/mesa/pipe/tgsi/util/tgsi_parse.c b/src/gallium/aux/tgsi/util/tgsi_parse.c index bf6b89ce56..bf6b89ce56 100644 --- a/src/mesa/pipe/tgsi/util/tgsi_parse.c +++ b/src/gallium/aux/tgsi/util/tgsi_parse.c diff --git a/src/mesa/pipe/tgsi/util/tgsi_parse.h b/src/gallium/aux/tgsi/util/tgsi_parse.h index 9372da8d5d..9372da8d5d 100644 --- a/src/mesa/pipe/tgsi/util/tgsi_parse.h +++ b/src/gallium/aux/tgsi/util/tgsi_parse.h diff --git a/src/gallium/aux/tgsi/util/tgsi_transform.c b/src/gallium/aux/tgsi/util/tgsi_transform.c new file mode 100644 index 0000000000..357f77b05a --- /dev/null +++ b/src/gallium/aux/tgsi/util/tgsi_transform.c @@ -0,0 +1,199 @@ +/************************************************************************** + * + * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. + * 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 TUNGSTEN GRAPHICS 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. + * + **************************************************************************/ + +/** + * TGSI program transformation utility. + * + * Authors: Brian Paul + */ + + +#include "tgsi_transform.h" + + + +static void +emit_instruction(struct tgsi_transform_context *ctx, + const struct tgsi_full_instruction *inst) +{ + uint ti = ctx->ti; + + ti += tgsi_build_full_instruction(inst, + ctx->tokens_out + ti, + ctx->header, + ctx->max_tokens_out - ti); + ctx->ti = ti; +} + + +static void +emit_declaration(struct tgsi_transform_context *ctx, + const struct tgsi_full_declaration *decl) +{ + uint ti = ctx->ti; + + ti += tgsi_build_full_declaration(decl, + ctx->tokens_out + ti, + ctx->header, + ctx->max_tokens_out - ti); + ctx->ti = ti; +} + + +static void +emit_immediate(struct tgsi_transform_context *ctx, + const struct tgsi_full_immediate *imm) +{ + uint ti = ctx->ti; + + ti += tgsi_build_full_immediate(imm, + ctx->tokens_out + ti, + ctx->header, + ctx->max_tokens_out - ti); + ctx->ti = ti; +} + + + +/** + * Apply user-defined transformations to the input shader to produce + * the output shader. + * For example, a register search-and-replace operation could be applied + * by defining a transform_instruction() callback that examined and changed + * the instruction src/dest regs. + * + * \return number of tokens emitted + */ +int +tgsi_transform_shader(const struct tgsi_token *tokens_in, + struct tgsi_token *tokens_out, + uint max_tokens_out, + struct tgsi_transform_context *ctx) +{ + uint procType; + + /* input shader */ + struct tgsi_parse_context parse; + + /* output shader */ + struct tgsi_processor *processor; + + + /** + ** callback context init + **/ + ctx->emit_instruction = emit_instruction; + ctx->emit_declaration = emit_declaration; + ctx->emit_immediate = emit_immediate; + ctx->tokens_out = tokens_out; + ctx->max_tokens_out = max_tokens_out; + + + /** + ** Setup to begin parsing input shader + **/ + if (tgsi_parse_init( &parse, tokens_in ) != TGSI_PARSE_OK) { + debug_printf("tgsi_parse_init() failed in tgsi_transform_shader()!\n"); + return -1; + } + procType = parse.FullHeader.Processor.Processor; + assert(procType == TGSI_PROCESSOR_FRAGMENT || + procType == TGSI_PROCESSOR_VERTEX || + procType == TGSI_PROCESSOR_GEOMETRY); + + + /** + ** Setup output shader + **/ + *(struct tgsi_version *) &tokens_out[0] = tgsi_build_version(); + + ctx->header = (struct tgsi_header *) (tokens_out + 1); + *ctx->header = tgsi_build_header(); + + processor = (struct tgsi_processor *) (tokens_out + 2); + *processor = tgsi_build_processor( procType, ctx->header ); + + ctx->ti = 3; + + + /** + ** Loop over incoming program tokens/instructions + */ + while( !tgsi_parse_end_of_tokens( &parse ) ) { + + tgsi_parse_token( &parse ); + + switch( parse.FullToken.Token.Type ) { + case TGSI_TOKEN_TYPE_INSTRUCTION: + { + struct tgsi_full_instruction *fullinst + = &parse.FullToken.FullInstruction; + + if (ctx->transform_instruction) + ctx->transform_instruction(ctx, fullinst); + else + ctx->emit_instruction(ctx, fullinst); + } + break; + + case TGSI_TOKEN_TYPE_DECLARATION: + { + struct tgsi_full_declaration *fulldecl + = &parse.FullToken.FullDeclaration; + + if (ctx->transform_declaration) + ctx->transform_declaration(ctx, fulldecl); + else + ctx->emit_declaration(ctx, fulldecl); + } + break; + + case TGSI_TOKEN_TYPE_IMMEDIATE: + { + struct tgsi_full_immediate *fullimm + = &parse.FullToken.FullImmediate; + + if (ctx->transform_immediate) + ctx->transform_immediate(ctx, fullimm); + else + ctx->emit_immediate(ctx, fullimm); + } + break; + + default: + assert( 0 ); + } + } + + if (ctx->epilog) { + ctx->epilog(ctx); + } + + tgsi_parse_free (&parse); + + return ctx->ti; +} diff --git a/src/gallium/aux/tgsi/util/tgsi_transform.h b/src/gallium/aux/tgsi/util/tgsi_transform.h new file mode 100644 index 0000000000..fcf85d603b --- /dev/null +++ b/src/gallium/aux/tgsi/util/tgsi_transform.h @@ -0,0 +1,93 @@ +/************************************************************************** + * + * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. + * 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 TUNGSTEN GRAPHICS 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. + * + **************************************************************************/ + +#ifndef TGSI_TRANSFORM_H +#define TGSI_TRANSFORM_H + + +#include "pipe/p_util.h" +#include "pipe/p_shader_tokens.h" +#include "tgsi/util/tgsi_parse.h" +#include "tgsi/util/tgsi_build.h" + + + +/** + * Subclass this to add caller-specific data + */ +struct tgsi_transform_context +{ +/**** PUBLIC ***/ + + /** + * User-defined callbacks invoked per instruction. + */ + void (*transform_instruction)(struct tgsi_transform_context *ctx, + struct tgsi_full_instruction *inst); + + void (*transform_declaration)(struct tgsi_transform_context *ctx, + struct tgsi_full_declaration *decl); + + void (*transform_immediate)(struct tgsi_transform_context *ctx, + struct tgsi_full_immediate *imm); + + /** + * Called at end of input program to allow caller to append extra + * instructions. Return number of tokens emitted. + */ + void (*epilog)(struct tgsi_transform_context *ctx); + + +/*** PRIVATE ***/ + + /** + * These are setup by tgsi_transform_shader() and cannot be overridden. + * Meant to be called from in the above user callback functions. + */ + void (*emit_instruction)(struct tgsi_transform_context *ctx, + const struct tgsi_full_instruction *inst); + void (*emit_declaration)(struct tgsi_transform_context *ctx, + const struct tgsi_full_declaration *decl); + void (*emit_immediate)(struct tgsi_transform_context *ctx, + const struct tgsi_full_immediate *imm); + + struct tgsi_header *header; + uint max_tokens_out; + struct tgsi_token *tokens_out; + uint ti; +}; + + + +extern int +tgsi_transform_shader(const struct tgsi_token *tokens_in, + struct tgsi_token *tokens_out, + uint max_tokens_out, + struct tgsi_transform_context *ctx); + + +#endif /* TGSI_TRANSFORM_H */ diff --git a/src/mesa/pipe/tgsi/util/tgsi_util.c b/src/gallium/aux/tgsi/util/tgsi_util.c index 4cdd89182a..4cdd89182a 100644 --- a/src/mesa/pipe/tgsi/util/tgsi_util.c +++ b/src/gallium/aux/tgsi/util/tgsi_util.c diff --git a/src/mesa/pipe/tgsi/util/tgsi_util.h b/src/gallium/aux/tgsi/util/tgsi_util.h index ef14446f0e..ef14446f0e 100644 --- a/src/mesa/pipe/tgsi/util/tgsi_util.h +++ b/src/gallium/aux/tgsi/util/tgsi_util.h diff --git a/src/mesa/pipe/util/p_debug.c b/src/gallium/aux/util/p_debug.c index b9607a6ba7..b9607a6ba7 100644 --- a/src/mesa/pipe/util/p_debug.c +++ b/src/gallium/aux/util/p_debug.c diff --git a/src/mesa/pipe/util/p_tile.c b/src/gallium/aux/util/p_tile.c index 3f795a3898..3f795a3898 100644 --- a/src/mesa/pipe/util/p_tile.c +++ b/src/gallium/aux/util/p_tile.c diff --git a/src/mesa/pipe/util/p_tile.h b/src/gallium/aux/util/p_tile.h index cd8124bf11..cd8124bf11 100644 --- a/src/mesa/pipe/util/p_tile.h +++ b/src/gallium/aux/util/p_tile.h diff --git a/src/mesa/pipe/util/p_util.c b/src/gallium/aux/util/p_util.c index 2a92f8e408..2a92f8e408 100644 --- a/src/mesa/pipe/util/p_util.c +++ b/src/gallium/aux/util/p_util.c diff --git a/src/mesa/pipe/Makefile b/src/gallium/drivers/Makefile index d880d090c1..c0345a9cb5 100644 --- a/src/mesa/pipe/Makefile +++ b/src/gallium/drivers/Makefile @@ -6,11 +6,7 @@ ifeq ($(CONFIG_NAME), linux-cell) CELL_DIR = cell endif -ifeq ($(CONFIG_NAME), linux-llvm) -LLVM_DIR = llvm -endif - -SUBDIRS = softpipe i915simple i965simple failover pipebuffer $(CELL_DIR) $(LLVM_DIR) +SUBDIRS = softpipe i915simple i965simple failover pipebuffer $(CELL_DIR) default: subdirs diff --git a/src/mesa/pipe/cell/Makefile b/src/gallium/drivers/cell/Makefile index 47aef7b05f..47aef7b05f 100644 --- a/src/mesa/pipe/cell/Makefile +++ b/src/gallium/drivers/cell/Makefile diff --git a/src/mesa/pipe/cell/common.h b/src/gallium/drivers/cell/common.h index 4de514c358..4de514c358 100644 --- a/src/mesa/pipe/cell/common.h +++ b/src/gallium/drivers/cell/common.h diff --git a/src/mesa/pipe/cell/ppu/Makefile b/src/gallium/drivers/cell/ppu/Makefile index 50060f5cd3..011863c11e 100644 --- a/src/mesa/pipe/cell/ppu/Makefile +++ b/src/gallium/drivers/cell/ppu/Makefile @@ -40,8 +40,11 @@ SOURCES = \ OBJECTS = $(SOURCES:.c=.o) \ -INCLUDE_DIRS = -I$(TOP)/src/mesa - +INCLUDE_DIRS = \ + -I$(TOP)/src/mesa \ + -I$(TOP)/src/gallium/include \ + -I$(TOP)/src/gallium/aux \ + -I$(TOP)/src/gallium/drivers .c.o: $(CC) -c $(INCLUDE_DIRS) $(CFLAGS) $< -o $@ diff --git a/src/mesa/pipe/cell/ppu/cell_batch.c b/src/gallium/drivers/cell/ppu/cell_batch.c index f45e5f25b6..f45e5f25b6 100644 --- a/src/mesa/pipe/cell/ppu/cell_batch.c +++ b/src/gallium/drivers/cell/ppu/cell_batch.c diff --git a/src/mesa/pipe/cell/ppu/cell_batch.h b/src/gallium/drivers/cell/ppu/cell_batch.h index a6eee0a8b1..a6eee0a8b1 100644 --- a/src/mesa/pipe/cell/ppu/cell_batch.h +++ b/src/gallium/drivers/cell/ppu/cell_batch.h diff --git a/src/mesa/pipe/cell/ppu/cell_clear.c b/src/gallium/drivers/cell/ppu/cell_clear.c index 07b908eec5..e588a30d5b 100644 --- a/src/mesa/pipe/cell/ppu/cell_clear.c +++ b/src/gallium/drivers/cell/ppu/cell_clear.c @@ -35,7 +35,7 @@ #include <stdint.h> #include "pipe/p_inlines.h" #include "pipe/p_util.h" -#include "pipe/cell/common.h" +#include "cell/common.h" #include "cell_clear.h" #include "cell_context.h" #include "cell_batch.h" diff --git a/src/mesa/pipe/cell/ppu/cell_clear.h b/src/gallium/drivers/cell/ppu/cell_clear.h index ff47d43f4c..ff47d43f4c 100644 --- a/src/mesa/pipe/cell/ppu/cell_clear.h +++ b/src/gallium/drivers/cell/ppu/cell_clear.h diff --git a/src/mesa/pipe/cell/ppu/cell_context.c b/src/gallium/drivers/cell/ppu/cell_context.c index bbe1fd7a11..e1eb22f468 100644 --- a/src/mesa/pipe/cell/ppu/cell_context.c +++ b/src/gallium/drivers/cell/ppu/cell_context.c @@ -37,9 +37,9 @@ #include "pipe/p_format.h" #include "pipe/p_util.h" #include "pipe/p_winsys.h" -#include "pipe/cell/common.h" -#include "pipe/draw/draw_context.h" -#include "pipe/draw/draw_private.h" +#include "cell/common.h" +#include "draw/draw_context.h" +#include "draw/draw_private.h" #include "cell_clear.h" #include "cell_context.h" #include "cell_draw_arrays.h" diff --git a/src/mesa/pipe/cell/ppu/cell_context.h b/src/gallium/drivers/cell/ppu/cell_context.h index 3b63419b5e..6196c0c72f 100644 --- a/src/mesa/pipe/cell/ppu/cell_context.h +++ b/src/gallium/drivers/cell/ppu/cell_context.h @@ -32,10 +32,10 @@ #include "pipe/p_context.h" #include "pipe/p_defines.h" -#include "pipe/draw/draw_vertex.h" -#include "pipe/draw/draw_vbuf.h" +#include "draw/draw_vertex.h" +#include "draw/draw_vbuf.h" #include "cell_winsys.h" -#include "pipe/cell/common.h" +#include "cell/common.h" struct cell_vbuf_render; diff --git a/src/mesa/pipe/cell/ppu/cell_draw_arrays.c b/src/gallium/drivers/cell/ppu/cell_draw_arrays.c index 717cd8370f..f12613649b 100644 --- a/src/mesa/pipe/cell/ppu/cell_draw_arrays.c +++ b/src/gallium/drivers/cell/ppu/cell_draw_arrays.c @@ -39,7 +39,7 @@ #include "cell_draw_arrays.h" #include "cell_state.h" -#include "pipe/draw/draw_context.h" +#include "draw/draw_context.h" diff --git a/src/mesa/pipe/cell/ppu/cell_draw_arrays.h b/src/gallium/drivers/cell/ppu/cell_draw_arrays.h index d5df4aa05f..d5df4aa05f 100644 --- a/src/mesa/pipe/cell/ppu/cell_draw_arrays.h +++ b/src/gallium/drivers/cell/ppu/cell_draw_arrays.h diff --git a/src/mesa/pipe/cell/ppu/cell_flush.c b/src/gallium/drivers/cell/ppu/cell_flush.c index f62bc4650c..20f27531fc 100644 --- a/src/mesa/pipe/cell/ppu/cell_flush.c +++ b/src/gallium/drivers/cell/ppu/cell_flush.c @@ -31,7 +31,7 @@ #include "cell_flush.h" #include "cell_spu.h" #include "cell_render.h" -#include "pipe/draw/draw_context.h" +#include "draw/draw_context.h" void diff --git a/src/mesa/pipe/cell/ppu/cell_flush.h b/src/gallium/drivers/cell/ppu/cell_flush.h index eda351b1cb..eda351b1cb 100644 --- a/src/mesa/pipe/cell/ppu/cell_flush.h +++ b/src/gallium/drivers/cell/ppu/cell_flush.h diff --git a/src/mesa/pipe/cell/ppu/cell_render.c b/src/gallium/drivers/cell/ppu/cell_render.c index 4ab277a4b2..b663b37622 100644 --- a/src/mesa/pipe/cell/ppu/cell_render.c +++ b/src/gallium/drivers/cell/ppu/cell_render.c @@ -34,7 +34,7 @@ #include "cell_render.h" #include "cell_spu.h" #include "pipe/p_util.h" -#include "pipe/draw/draw_private.h" +#include "draw/draw_private.h" struct render_stage { diff --git a/src/mesa/pipe/cell/ppu/cell_render.h b/src/gallium/drivers/cell/ppu/cell_render.h index 826dcbafeb..826dcbafeb 100644 --- a/src/mesa/pipe/cell/ppu/cell_render.h +++ b/src/gallium/drivers/cell/ppu/cell_render.h diff --git a/src/mesa/pipe/cell/ppu/cell_spu.c b/src/gallium/drivers/cell/ppu/cell_spu.c index 7c83a47e57..419e74dc40 100644 --- a/src/mesa/pipe/cell/ppu/cell_spu.c +++ b/src/gallium/drivers/cell/ppu/cell_spu.c @@ -31,7 +31,7 @@ #include "cell_spu.h" #include "pipe/p_format.h" #include "pipe/p_state.h" -#include "pipe/cell/common.h" +#include "cell/common.h" /* diff --git a/src/mesa/pipe/cell/ppu/cell_spu.h b/src/gallium/drivers/cell/ppu/cell_spu.h index 19eff94f96..137f26612e 100644 --- a/src/mesa/pipe/cell/ppu/cell_spu.h +++ b/src/gallium/drivers/cell/ppu/cell_spu.h @@ -31,7 +31,7 @@ #include <libspe2.h> #include <libmisc.h> -#include "pipe/cell/common.h" +#include "cell/common.h" #include "cell_context.h" diff --git a/src/mesa/pipe/cell/ppu/cell_state.h b/src/gallium/drivers/cell/ppu/cell_state.h index 3a71ba14fa..3a71ba14fa 100644 --- a/src/mesa/pipe/cell/ppu/cell_state.h +++ b/src/gallium/drivers/cell/ppu/cell_state.h diff --git a/src/mesa/pipe/cell/ppu/cell_state_blend.c b/src/gallium/drivers/cell/ppu/cell_state_blend.c index 4fc60548c8..b6d6d71f0c 100644 --- a/src/mesa/pipe/cell/ppu/cell_state_blend.c +++ b/src/gallium/drivers/cell/ppu/cell_state_blend.c @@ -29,7 +29,7 @@ */ #include "pipe/p_util.h" -#include "pipe/draw/draw_context.h" +#include "draw/draw_context.h" #include "cell_context.h" #include "cell_state.h" diff --git a/src/mesa/pipe/cell/ppu/cell_state_clip.c b/src/gallium/drivers/cell/ppu/cell_state_clip.c index 4f43665941..0482f87e88 100644 --- a/src/mesa/pipe/cell/ppu/cell_state_clip.c +++ b/src/gallium/drivers/cell/ppu/cell_state_clip.c @@ -30,7 +30,7 @@ #include "cell_context.h" #include "cell_state.h" -#include "pipe/draw/draw_context.h" +#include "draw/draw_context.h" void cell_set_clip_state( struct pipe_context *pipe, diff --git a/src/mesa/pipe/cell/ppu/cell_state_derived.c b/src/gallium/drivers/cell/ppu/cell_state_derived.c index 56daf5dfde..0c46829258 100644 --- a/src/mesa/pipe/cell/ppu/cell_state_derived.c +++ b/src/gallium/drivers/cell/ppu/cell_state_derived.c @@ -27,8 +27,8 @@ #include "pipe/p_util.h" #include "pipe/p_shader_tokens.h" -#include "pipe/draw/draw_context.h" -#include "pipe/draw/draw_vertex.h" +#include "draw/draw_context.h" +#include "draw/draw_vertex.h" #include "cell_context.h" #include "cell_batch.h" #include "cell_state.h" diff --git a/src/mesa/pipe/cell/ppu/cell_state_emit.c b/src/gallium/drivers/cell/ppu/cell_state_emit.c index 5d2a786449..5d2a786449 100644 --- a/src/mesa/pipe/cell/ppu/cell_state_emit.c +++ b/src/gallium/drivers/cell/ppu/cell_state_emit.c diff --git a/src/mesa/pipe/cell/ppu/cell_state_emit.h b/src/gallium/drivers/cell/ppu/cell_state_emit.h index 59f8affe8d..59f8affe8d 100644 --- a/src/mesa/pipe/cell/ppu/cell_state_emit.h +++ b/src/gallium/drivers/cell/ppu/cell_state_emit.h diff --git a/src/mesa/pipe/cell/ppu/cell_state_fs.c b/src/gallium/drivers/cell/ppu/cell_state_fs.c index 3f46a87d18..b2ed699a5b 100644 --- a/src/mesa/pipe/cell/ppu/cell_state_fs.c +++ b/src/gallium/drivers/cell/ppu/cell_state_fs.c @@ -29,12 +29,12 @@ #include "pipe/p_util.h" #include "pipe/p_inlines.h" #include "pipe/p_winsys.h" -#include "pipe/draw/draw_context.h" +#include "draw/draw_context.h" #if 0 #include "pipe/p_shader_tokens.h" -#include "pipe/llvm/gallivm.h" -#include "pipe/tgsi/util/tgsi_dump.h" -#include "pipe/tgsi/exec/tgsi_sse2.h" +#include "llvm/gallivm.h" +#include "tgsi/util/tgsi_dump.h" +#include "tgsi/exec/tgsi_sse2.h" #endif #include "cell_context.h" diff --git a/src/mesa/pipe/cell/ppu/cell_state_rasterizer.c b/src/gallium/drivers/cell/ppu/cell_state_rasterizer.c index d8128ece54..7eca5b5765 100644 --- a/src/mesa/pipe/cell/ppu/cell_state_rasterizer.c +++ b/src/gallium/drivers/cell/ppu/cell_state_rasterizer.c @@ -27,7 +27,7 @@ #include "pipe/p_defines.h" #include "pipe/p_util.h" -#include "pipe/draw/draw_context.h" +#include "draw/draw_context.h" #include "cell_context.h" #include "cell_state.h" diff --git a/src/mesa/pipe/cell/ppu/cell_state_sampler.c b/src/gallium/drivers/cell/ppu/cell_state_sampler.c index ade6cc8338..a33421a4ad 100644 --- a/src/mesa/pipe/cell/ppu/cell_state_sampler.c +++ b/src/gallium/drivers/cell/ppu/cell_state_sampler.c @@ -30,7 +30,7 @@ */ #include "pipe/p_util.h" -#include "pipe/draw/draw_context.h" +#include "draw/draw_context.h" #include "cell_context.h" #include "cell_state.h" #include "cell_texture.h" diff --git a/src/mesa/pipe/cell/ppu/cell_state_surface.c b/src/gallium/drivers/cell/ppu/cell_state_surface.c index 287610b76b..287610b76b 100644 --- a/src/mesa/pipe/cell/ppu/cell_state_surface.c +++ b/src/gallium/drivers/cell/ppu/cell_state_surface.c diff --git a/src/mesa/pipe/cell/ppu/cell_state_vertex.c b/src/gallium/drivers/cell/ppu/cell_state_vertex.c index 0f01e920f9..563831b62d 100644 --- a/src/mesa/pipe/cell/ppu/cell_state_vertex.c +++ b/src/gallium/drivers/cell/ppu/cell_state_vertex.c @@ -32,7 +32,7 @@ #include "cell_context.h" #include "cell_state.h" -#include "pipe/draw/draw_context.h" +#include "draw/draw_context.h" void diff --git a/src/mesa/pipe/cell/ppu/cell_surface.c b/src/gallium/drivers/cell/ppu/cell_surface.c index fca93e4742..a35db0ef99 100644 --- a/src/mesa/pipe/cell/ppu/cell_surface.c +++ b/src/gallium/drivers/cell/ppu/cell_surface.c @@ -29,7 +29,7 @@ #include "pipe/p_util.h" #include "pipe/p_inlines.h" #include "pipe/p_winsys.h" -#include "pipe/util/p_tile.h" +#include "util/p_tile.h" #include "cell_context.h" #include "cell_surface.h" diff --git a/src/mesa/pipe/cell/ppu/cell_surface.h b/src/gallium/drivers/cell/ppu/cell_surface.h index 9e58f32944..9e58f32944 100644 --- a/src/mesa/pipe/cell/ppu/cell_surface.h +++ b/src/gallium/drivers/cell/ppu/cell_surface.h diff --git a/src/mesa/pipe/cell/ppu/cell_texture.c b/src/gallium/drivers/cell/ppu/cell_texture.c index df178d9ca2..c8ef36002f 100644 --- a/src/mesa/pipe/cell/ppu/cell_texture.c +++ b/src/gallium/drivers/cell/ppu/cell_texture.c @@ -61,7 +61,7 @@ cell_texture_layout(struct cell_texture * spt) spt->buffer_size = 0; - for ( level = pt->first_level ; level <= pt->last_level ; level++ ) { + for ( level = 0 ; level <= pt->last_level ; level++ ) { pt->width[level] = width; pt->height[level] = height; pt->depth[level] = depth; diff --git a/src/mesa/pipe/cell/ppu/cell_texture.h b/src/gallium/drivers/cell/ppu/cell_texture.h index 0264fed88e..0264fed88e 100644 --- a/src/mesa/pipe/cell/ppu/cell_texture.h +++ b/src/gallium/drivers/cell/ppu/cell_texture.h diff --git a/src/mesa/pipe/cell/ppu/cell_vbuf.c b/src/gallium/drivers/cell/ppu/cell_vbuf.c index e9fafe492e..cc727ff4ed 100644 --- a/src/mesa/pipe/cell/ppu/cell_vbuf.c +++ b/src/gallium/drivers/cell/ppu/cell_vbuf.c @@ -36,7 +36,7 @@ #include "cell_flush.h" #include "cell_spu.h" #include "cell_vbuf.h" -#include "pipe/draw/draw_vbuf.h" +#include "draw/draw_vbuf.h" /** Allow vertex data to be inlined after RENDER command */ diff --git a/src/mesa/pipe/cell/ppu/cell_vbuf.h b/src/gallium/drivers/cell/ppu/cell_vbuf.h index d265cbf770..d265cbf770 100644 --- a/src/mesa/pipe/cell/ppu/cell_vbuf.h +++ b/src/gallium/drivers/cell/ppu/cell_vbuf.h diff --git a/src/mesa/pipe/cell/ppu/cell_vertex_shader.c b/src/gallium/drivers/cell/ppu/cell_vertex_shader.c index 80dd500b34..0ba4506505 100644 --- a/src/mesa/pipe/cell/ppu/cell_vertex_shader.c +++ b/src/gallium/drivers/cell/ppu/cell_vertex_shader.c @@ -38,9 +38,9 @@ #include "cell_spu.h" #include "cell_batch.h" -#include "pipe/cell/common.h" -#include "pipe/draw/draw_context.h" -#include "pipe/draw/draw_private.h" +#include "cell/common.h" +#include "draw/draw_context.h" +#include "draw/draw_private.h" /** * Run the vertex shader on all vertices in the vertex queue. diff --git a/src/mesa/pipe/cell/ppu/cell_winsys.c b/src/gallium/drivers/cell/ppu/cell_winsys.c index ebabce3c8f..ebabce3c8f 100644 --- a/src/mesa/pipe/cell/ppu/cell_winsys.c +++ b/src/gallium/drivers/cell/ppu/cell_winsys.c diff --git a/src/mesa/pipe/cell/ppu/cell_winsys.h b/src/gallium/drivers/cell/ppu/cell_winsys.h index ae2af5696b..ae2af5696b 100644 --- a/src/mesa/pipe/cell/ppu/cell_winsys.h +++ b/src/gallium/drivers/cell/ppu/cell_winsys.h diff --git a/src/mesa/pipe/cell/spu/Makefile b/src/gallium/drivers/cell/spu/Makefile index f202971d73..7aa947299e 100644 --- a/src/mesa/pipe/cell/spu/Makefile +++ b/src/gallium/drivers/cell/spu/Makefile @@ -31,7 +31,11 @@ SPU_OBJECTS = $(SOURCES:.c=.o) \ SPU_ASM_OUT = $(SOURCES:.c=.s) \ -INCLUDE_DIRS = -I$(TOP)/src/mesa +INCLUDE_DIRS = \ + -I$(TOP)/src/mesa \ + -I$(TOP)/src/gallium/include \ + -I$(TOP)/src/gallium/aux \ + -I$(TOP)/src/gallium/drivers .c.o: diff --git a/src/mesa/pipe/cell/spu/spu_blend.c b/src/gallium/drivers/cell/spu/spu_blend.c index 23ec0eeb45..23ec0eeb45 100644 --- a/src/mesa/pipe/cell/spu/spu_blend.c +++ b/src/gallium/drivers/cell/spu/spu_blend.c diff --git a/src/mesa/pipe/cell/spu/spu_blend.h b/src/gallium/drivers/cell/spu/spu_blend.h index 2b594b578b..2b594b578b 100644 --- a/src/mesa/pipe/cell/spu/spu_blend.h +++ b/src/gallium/drivers/cell/spu/spu_blend.h diff --git a/src/mesa/pipe/cell/spu/spu_colorpack.h b/src/gallium/drivers/cell/spu/spu_colorpack.h index e9fee8a3a6..e9fee8a3a6 100644 --- a/src/mesa/pipe/cell/spu/spu_colorpack.h +++ b/src/gallium/drivers/cell/spu/spu_colorpack.h diff --git a/src/mesa/pipe/cell/spu/spu_exec.c b/src/gallium/drivers/cell/spu/spu_exec.c index e51008b9b3..109540b1f7 100644 --- a/src/mesa/pipe/cell/spu/spu_exec.c +++ b/src/gallium/drivers/cell/spu/spu_exec.c @@ -67,8 +67,8 @@ #include "pipe/p_state.h" #include "pipe/p_util.h" #include "pipe/p_shader_tokens.h" -#include "pipe/tgsi/util/tgsi_parse.h" -#include "pipe/tgsi/util/tgsi_util.h" +#include "tgsi/util/tgsi_parse.h" +#include "tgsi/util/tgsi_util.h" #include "spu_exec.h" #include "spu_main.h" #include "spu_vertex_shader.h" diff --git a/src/mesa/pipe/cell/spu/spu_exec.h b/src/gallium/drivers/cell/spu/spu_exec.h index b4c7661ef6..3e17c490d2 100644 --- a/src/mesa/pipe/cell/spu/spu_exec.h +++ b/src/gallium/drivers/cell/spu/spu_exec.h @@ -29,7 +29,7 @@ #define SPU_EXEC_H #include "pipe/p_compiler.h" -#include "pipe/tgsi/exec/tgsi_exec.h" +#include "tgsi/exec/tgsi_exec.h" #if defined __cplusplus extern "C" { diff --git a/src/mesa/pipe/cell/spu/spu_main.c b/src/gallium/drivers/cell/spu/spu_main.c index e375197fe6..1e7243b863 100644 --- a/src/mesa/pipe/cell/spu/spu_main.c +++ b/src/gallium/drivers/cell/spu/spu_main.c @@ -38,7 +38,7 @@ #include "spu_tile.h" //#include "spu_test.h" #include "spu_vertex_shader.h" -#include "pipe/cell/common.h" +#include "cell/common.h" #include "pipe/p_defines.h" diff --git a/src/mesa/pipe/cell/spu/spu_main.h b/src/gallium/drivers/cell/spu/spu_main.h index 1710a17512..5c95d112ac 100644 --- a/src/mesa/pipe/cell/spu/spu_main.h +++ b/src/gallium/drivers/cell/spu/spu_main.h @@ -31,8 +31,8 @@ #include <spu_mfcio.h> -#include "pipe/cell/common.h" -#include "pipe/draw/draw_vertex.h" +#include "cell/common.h" +#include "draw/draw_vertex.h" #include "pipe/p_state.h" diff --git a/src/mesa/pipe/cell/spu/spu_render.c b/src/gallium/drivers/cell/spu/spu_render.c index 932fb500b3..20e77aa2e6 100644 --- a/src/mesa/pipe/cell/spu/spu_render.c +++ b/src/gallium/drivers/cell/spu/spu_render.c @@ -34,7 +34,7 @@ #include "spu_render.h" #include "spu_tri.h" #include "spu_tile.h" -#include "pipe/cell/common.h" +#include "cell/common.h" diff --git a/src/mesa/pipe/cell/spu/spu_render.h b/src/gallium/drivers/cell/spu/spu_render.h index fbcdc5ec31..493434f087 100644 --- a/src/mesa/pipe/cell/spu/spu_render.h +++ b/src/gallium/drivers/cell/spu/spu_render.h @@ -29,7 +29,7 @@ #ifndef SPU_RENDER_H #define SPU_RENDER_H -#include "pipe/cell/common.h" +#include "cell/common.h" extern void cmd_render(const struct cell_command_render *render, uint *pos_incr); diff --git a/src/mesa/pipe/cell/spu/spu_texture.c b/src/gallium/drivers/cell/spu/spu_texture.c index 3962aaa4a9..3962aaa4a9 100644 --- a/src/mesa/pipe/cell/spu/spu_texture.c +++ b/src/gallium/drivers/cell/spu/spu_texture.c diff --git a/src/mesa/pipe/cell/spu/spu_texture.h b/src/gallium/drivers/cell/spu/spu_texture.h index 95eb87080f..95eb87080f 100644 --- a/src/mesa/pipe/cell/spu/spu_texture.h +++ b/src/gallium/drivers/cell/spu/spu_texture.h diff --git a/src/mesa/pipe/cell/spu/spu_tile.c b/src/gallium/drivers/cell/spu/spu_tile.c index 12dc246328..12dc246328 100644 --- a/src/mesa/pipe/cell/spu/spu_tile.c +++ b/src/gallium/drivers/cell/spu/spu_tile.c diff --git a/src/mesa/pipe/cell/spu/spu_tile.h b/src/gallium/drivers/cell/spu/spu_tile.h index e53340a55a..3105b848fd 100644 --- a/src/mesa/pipe/cell/spu/spu_tile.h +++ b/src/gallium/drivers/cell/spu/spu_tile.h @@ -32,7 +32,7 @@ #include <libmisc.h> #include <spu_mfcio.h> #include "spu_main.h" -#include "pipe/cell/common.h" +#include "cell/common.h" diff --git a/src/mesa/pipe/cell/spu/spu_tri.c b/src/gallium/drivers/cell/spu/spu_tri.c index be9624cf7d..be9624cf7d 100644 --- a/src/mesa/pipe/cell/spu/spu_tri.c +++ b/src/gallium/drivers/cell/spu/spu_tri.c diff --git a/src/mesa/pipe/cell/spu/spu_tri.h b/src/gallium/drivers/cell/spu/spu_tri.h index aa694dd7c9..aa694dd7c9 100644 --- a/src/mesa/pipe/cell/spu/spu_tri.h +++ b/src/gallium/drivers/cell/spu/spu_tri.h diff --git a/src/mesa/pipe/cell/spu/spu_util.c b/src/gallium/drivers/cell/spu/spu_util.c index ac373240c1..ea4274a0a7 100644 --- a/src/mesa/pipe/cell/spu/spu_util.c +++ b/src/gallium/drivers/cell/spu/spu_util.c @@ -1,8 +1,8 @@ #include "pipe/p_util.h" #include "pipe/p_shader_tokens.h" -#include "pipe/tgsi/util/tgsi_parse.h" +#include "tgsi/util/tgsi_parse.h" //#include "tgsi_build.h" -#include "pipe/tgsi/util/tgsi_util.h" +#include "tgsi/util/tgsi_util.h" unsigned tgsi_util_get_src_register_swizzle( diff --git a/src/gallium/drivers/cell/spu/spu_vertex_fetch.c b/src/gallium/drivers/cell/spu/spu_vertex_fetch.c new file mode 100644 index 0000000000..45e3c26c00 --- /dev/null +++ b/src/gallium/drivers/cell/spu/spu_vertex_fetch.c @@ -0,0 +1,673 @@ +/************************************************************************** + * + * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas. + * 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 TUNGSTEN GRAPHICS 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. + * + **************************************************************************/ + + /* + * Authors: + * Keith Whitwell <keith@tungstengraphics.com> + */ + +#include <spu_mfcio.h> +#include <transpose_matrix4x4.h> + +#include "pipe/p_util.h" +#include "pipe/p_state.h" +#include "pipe/p_shader_tokens.h" +#include "spu_exec.h" +#include "spu_vertex_shader.h" +#include "spu_main.h" + +#define CACHE_NAME attribute +#define CACHED_TYPE qword +#define CACHE_TYPE CACHE_TYPE_RO +#define CACHE_SET_TAGID(set) TAG_VERTEX_BUFFER +#define CACHE_LOG2NNWAY 2 +#define CACHE_LOG2NSETS 6 +#include <cache-api.h> + +/* Yes folks, this is ugly. + */ +#undef CACHE_NWAY +#undef CACHE_NSETS +#define CACHE_NAME attribute +#define CACHE_NWAY 4 +#define CACHE_NSETS (1U << 6) + + +#define DRAW_DBG 0 + +static const qword fetch_shuffle_data[] = { + /* Shuffle used by CVT_64_FLOAT + */ + { + 0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + }, + + /* Shuffle used by CVT_8_USCALED and CVT_8_SSCALED + */ + { + 0x00, 0x80, 0x80, 0x80, 0x01, 0x80, 0x80, 0x80, + 0x02, 0x80, 0x80, 0x80, 0x03, 0x80, 0x80, 0x80, + }, + + /* Shuffle used by CVT_16_USCALED and CVT_16_SSCALED + */ + { + 0x00, 0x01, 0x80, 0x80, 0x02, 0x03, 0x80, 0x80, + 0x04, 0x05, 0x80, 0x80, 0x06, 0x07, 0x80, 0x80, + }, + + /* High value shuffle used by trans4x4. + */ + { + 0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13, + 0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17 + }, + + /* Low value shuffle used by trans4x4. + */ + { + 0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B, + 0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F + } +}; + + +static INLINE void +trans4x4(qword row0, qword row1, qword row2, qword row3, qword *out, + const qword *shuffle) +{ + qword t1 = si_shufb(row0, row2, shuffle[3]); + qword t2 = si_shufb(row0, row2, shuffle[4]); + qword t3 = si_shufb(row1, row3, shuffle[3]); + qword t4 = si_shufb(row1, row3, shuffle[4]); + + out[0] = si_shufb(t1, t3, shuffle[3]); + out[1] = si_shufb(t1, t3, shuffle[4]); + out[2] = si_shufb(t2, t4, shuffle[3]); + out[3] = si_shufb(t2, t4, shuffle[4]); +} + + +/** + * Fetch between 1 and 32 bytes from an unaligned address + */ +static INLINE void +fetch_unaligned(qword *dst, unsigned ea, unsigned size) +{ + qword tmp[4]; + const int shift = ea & 0x0f; + const unsigned aligned_start_ea = ea & ~0x0f; + const unsigned aligned_end_ea = (ea + size) & ~0x0f; + const unsigned num_entries = ((aligned_end_ea - aligned_start_ea) / 16) + 1; + unsigned i; + + + if (shift == 0) { + /* Data is already aligned. Fetch directly into the destination buffer. + */ + for (i = 0; i < num_entries; i++) { + dst[i] = cache_rd(attribute, (ea & ~0x0f) + (i * 16)); + } + } else { + /* Fetch data from the cache to the local buffer. + */ + for (i = 0; i < num_entries; i++) { + tmp[i] = cache_rd(attribute, (ea & ~0x0f) + (i * 16)); + } + + + /* Fix the alignment of the data and write to the destination buffer. + */ + for (i = 0; i < ((size + 15) / 16); i++) { + dst[i] = si_or((qword) spu_slqwbyte(tmp[i], shift), + (qword) spu_rlmaskqwbyte(tmp[i + 1], shift - 16)); + } + } +} + + +#define CVT_32_FLOAT(q, s) (*(q)) + +static INLINE qword +CVT_64_FLOAT(const qword *qw, const qword *shuffle) +{ + qword a = si_frds(qw[0]); + qword b = si_frds(si_rotqbyi(qw[0], 8)); + qword c = si_frds(qw[1]); + qword d = si_frds(si_rotqbyi(qw[1], 8)); + + qword ab = si_shufb(a, b, shuffle[0]); + qword cd = si_shufb(c, d, si_rotqbyi(shuffle[0], 8)); + + return si_or(ab, cd); +} + + +static INLINE qword +CVT_8_USCALED(const qword *qw, const qword *shuffle) +{ + return si_cuflt(si_shufb(*qw, *qw, shuffle[1]), 0); +} + + +static INLINE qword +CVT_16_USCALED(const qword *qw, const qword *shuffle) +{ + return si_cuflt(si_shufb(*qw, *qw, shuffle[2]), 0); +} + + +static INLINE qword +CVT_32_USCALED(const qword *qw, const qword *shuffle) +{ + (void) shuffle; + return si_cuflt(*qw, 0); +} + +static INLINE qword +CVT_8_SSCALED(const qword *qw, const qword *shuffle) +{ + return si_csflt(si_shufb(*qw, *qw, shuffle[1]), 0); +} + + +static INLINE qword +CVT_16_SSCALED(const qword *qw, const qword *shuffle) +{ + return si_csflt(si_shufb(*qw, *qw, shuffle[2]), 0); +} + + +static INLINE qword +CVT_32_SSCALED(const qword *qw, const qword *shuffle) +{ + (void) shuffle; + return si_csflt(*qw, 0); +} + + +static INLINE qword +CVT_8_UNORM(const qword *qw, const qword *shuffle) +{ + const qword scale = (qword) spu_splats(1.0f / 255.0f); + return si_fm(CVT_8_USCALED(qw, shuffle), scale); +} + + +static INLINE qword +CVT_16_UNORM(const qword *qw, const qword *shuffle) +{ + const qword scale = (qword) spu_splats(1.0f / 65535.0f); + return si_fm(CVT_16_USCALED(qw, shuffle), scale); +} + + +static INLINE qword +CVT_32_UNORM(const qword *qw, const qword *shuffle) +{ + const qword scale = (qword) spu_splats(1.0f / 4294967295.0f); + return si_fm(CVT_32_USCALED(qw, shuffle), scale); +} + + +static INLINE qword +CVT_8_SNORM(const qword *qw, const qword *shuffle) +{ + const qword scale = (qword) spu_splats(1.0f / 127.0f); + return si_fm(CVT_8_SSCALED(qw, shuffle), scale); +} + + +static INLINE qword +CVT_16_SNORM(const qword *qw, const qword *shuffle) +{ + const qword scale = (qword) spu_splats(1.0f / 32767.0f); + return si_fm(CVT_16_SSCALED(qw, shuffle), scale); +} + + +static INLINE qword +CVT_32_SNORM(const qword *qw, const qword *shuffle) +{ + const qword scale = (qword) spu_splats(1.0f / 2147483647.0f); + return si_fm(CVT_32_SSCALED(qw, shuffle), scale); +} + +#define SZ_4 si_il(0U) +#define SZ_3 si_fsmbi(0x000f) +#define SZ_2 si_fsmbi(0x00ff) +#define SZ_1 si_fsmbi(0x0fff) + +/** + * Fetch a float[4] vertex attribute from memory, doing format/type + * conversion as needed. + * + * This is probably needed/dupliocated elsewhere, eg format + * conversion, texture sampling etc. + */ +#define FETCH_ATTRIB( NAME, SZ, CVT, N ) \ +static void \ +fetch_##NAME(qword *out, const qword *in, qword defaults, \ + const qword *shuffle) \ +{ \ + qword tmp[4]; \ + \ + tmp[0] = si_selb(CVT(in + (0 * N), shuffle), defaults, SZ); \ + tmp[1] = si_selb(CVT(in + (1 * N), shuffle), defaults, SZ); \ + tmp[2] = si_selb(CVT(in + (2 * N), shuffle), defaults, SZ); \ + tmp[3] = si_selb(CVT(in + (3 * N), shuffle), defaults, SZ); \ + trans4x4(tmp[0], tmp[1], tmp[2], tmp[3], out, shuffle); \ +} + + +FETCH_ATTRIB( R64G64B64A64_FLOAT, SZ_4, CVT_64_FLOAT, 2 ) +FETCH_ATTRIB( R64G64B64_FLOAT, SZ_3, CVT_64_FLOAT, 2 ) +FETCH_ATTRIB( R64G64_FLOAT, SZ_2, CVT_64_FLOAT, 2 ) +FETCH_ATTRIB( R64_FLOAT, SZ_1, CVT_64_FLOAT, 2 ) + +FETCH_ATTRIB( R32G32B32A32_FLOAT, SZ_4, CVT_32_FLOAT, 1 ) +FETCH_ATTRIB( R32G32B32_FLOAT, SZ_3, CVT_32_FLOAT, 1 ) +FETCH_ATTRIB( R32G32_FLOAT, SZ_2, CVT_32_FLOAT, 1 ) +FETCH_ATTRIB( R32_FLOAT, SZ_1, CVT_32_FLOAT, 1 ) + +FETCH_ATTRIB( R32G32B32A32_USCALED, SZ_4, CVT_32_USCALED, 1 ) +FETCH_ATTRIB( R32G32B32_USCALED, SZ_3, CVT_32_USCALED, 1 ) +FETCH_ATTRIB( R32G32_USCALED, SZ_2, CVT_32_USCALED, 1 ) +FETCH_ATTRIB( R32_USCALED, SZ_1, CVT_32_USCALED, 1 ) + +FETCH_ATTRIB( R32G32B32A32_SSCALED, SZ_4, CVT_32_SSCALED, 1 ) +FETCH_ATTRIB( R32G32B32_SSCALED, SZ_3, CVT_32_SSCALED, 1 ) +FETCH_ATTRIB( R32G32_SSCALED, SZ_2, CVT_32_SSCALED, 1 ) +FETCH_ATTRIB( R32_SSCALED, SZ_1, CVT_32_SSCALED, 1 ) + +FETCH_ATTRIB( R32G32B32A32_UNORM, SZ_4, CVT_32_UNORM, 1 ) +FETCH_ATTRIB( R32G32B32_UNORM, SZ_3, CVT_32_UNORM, 1 ) +FETCH_ATTRIB( R32G32_UNORM, SZ_2, CVT_32_UNORM, 1 ) +FETCH_ATTRIB( R32_UNORM, SZ_1, CVT_32_UNORM, 1 ) + +FETCH_ATTRIB( R32G32B32A32_SNORM, SZ_4, CVT_32_SNORM, 1 ) +FETCH_ATTRIB( R32G32B32_SNORM, SZ_3, CVT_32_SNORM, 1 ) +FETCH_ATTRIB( R32G32_SNORM, SZ_2, CVT_32_SNORM, 1 ) +FETCH_ATTRIB( R32_SNORM, SZ_1, CVT_32_SNORM, 1 ) + +FETCH_ATTRIB( R16G16B16A16_USCALED, SZ_4, CVT_16_USCALED, 1 ) +FETCH_ATTRIB( R16G16B16_USCALED, SZ_3, CVT_16_USCALED, 1 ) +FETCH_ATTRIB( R16G16_USCALED, SZ_2, CVT_16_USCALED, 1 ) +FETCH_ATTRIB( R16_USCALED, SZ_1, CVT_16_USCALED, 1 ) + +FETCH_ATTRIB( R16G16B16A16_SSCALED, SZ_4, CVT_16_SSCALED, 1 ) +FETCH_ATTRIB( R16G16B16_SSCALED, SZ_3, CVT_16_SSCALED, 1 ) +FETCH_ATTRIB( R16G16_SSCALED, SZ_2, CVT_16_SSCALED, 1 ) +FETCH_ATTRIB( R16_SSCALED, SZ_1, CVT_16_SSCALED, 1 ) + +FETCH_ATTRIB( R16G16B16A16_UNORM, SZ_4, CVT_16_UNORM, 1 ) +FETCH_ATTRIB( R16G16B16_UNORM, SZ_3, CVT_16_UNORM, 1 ) +FETCH_ATTRIB( R16G16_UNORM, SZ_2, CVT_16_UNORM, 1 ) +FETCH_ATTRIB( R16_UNORM, SZ_1, CVT_16_UNORM, 1 ) + +FETCH_ATTRIB( R16G16B16A16_SNORM, SZ_4, CVT_16_SNORM, 1 ) +FETCH_ATTRIB( R16G16B16_SNORM, SZ_3, CVT_16_SNORM, 1 ) +FETCH_ATTRIB( R16G16_SNORM, SZ_2, CVT_16_SNORM, 1 ) +FETCH_ATTRIB( R16_SNORM, SZ_1, CVT_16_SNORM, 1 ) + +FETCH_ATTRIB( R8G8B8A8_USCALED, SZ_4, CVT_8_USCALED, 1 ) +FETCH_ATTRIB( R8G8B8_USCALED, SZ_3, CVT_8_USCALED, 1 ) +FETCH_ATTRIB( R8G8_USCALED, SZ_2, CVT_8_USCALED, 1 ) +FETCH_ATTRIB( R8_USCALED, SZ_1, CVT_8_USCALED, 1 ) + +FETCH_ATTRIB( R8G8B8A8_SSCALED, SZ_4, CVT_8_SSCALED, 1 ) +FETCH_ATTRIB( R8G8B8_SSCALED, SZ_3, CVT_8_SSCALED, 1 ) +FETCH_ATTRIB( R8G8_SSCALED, SZ_2, CVT_8_SSCALED, 1 ) +FETCH_ATTRIB( R8_SSCALED, SZ_1, CVT_8_SSCALED, 1 ) + +FETCH_ATTRIB( R8G8B8A8_UNORM, SZ_4, CVT_8_UNORM, 1 ) +FETCH_ATTRIB( R8G8B8_UNORM, SZ_3, CVT_8_UNORM, 1 ) +FETCH_ATTRIB( R8G8_UNORM, SZ_2, CVT_8_UNORM, 1 ) +FETCH_ATTRIB( R8_UNORM, SZ_1, CVT_8_UNORM, 1 ) + +FETCH_ATTRIB( R8G8B8A8_SNORM, SZ_4, CVT_8_SNORM, 1 ) +FETCH_ATTRIB( R8G8B8_SNORM, SZ_3, CVT_8_SNORM, 1 ) +FETCH_ATTRIB( R8G8_SNORM, SZ_2, CVT_8_SNORM, 1 ) +FETCH_ATTRIB( R8_SNORM, SZ_1, CVT_8_SNORM, 1 ) + +FETCH_ATTRIB( A8R8G8B8_UNORM, SZ_4, CVT_8_UNORM, 1 ) + + + +static spu_fetch_func get_fetch_func( enum pipe_format format ) +{ + switch (format) { + case PIPE_FORMAT_R64_FLOAT: + return fetch_R64_FLOAT; + case PIPE_FORMAT_R64G64_FLOAT: + return fetch_R64G64_FLOAT; + case PIPE_FORMAT_R64G64B64_FLOAT: + return fetch_R64G64B64_FLOAT; + case PIPE_FORMAT_R64G64B64A64_FLOAT: + return fetch_R64G64B64A64_FLOAT; + + case PIPE_FORMAT_R32_FLOAT: + return fetch_R32_FLOAT; + case PIPE_FORMAT_R32G32_FLOAT: + return fetch_R32G32_FLOAT; + case PIPE_FORMAT_R32G32B32_FLOAT: + return fetch_R32G32B32_FLOAT; + case PIPE_FORMAT_R32G32B32A32_FLOAT: + return fetch_R32G32B32A32_FLOAT; + + case PIPE_FORMAT_R32_UNORM: + return fetch_R32_UNORM; + case PIPE_FORMAT_R32G32_UNORM: + return fetch_R32G32_UNORM; + case PIPE_FORMAT_R32G32B32_UNORM: + return fetch_R32G32B32_UNORM; + case PIPE_FORMAT_R32G32B32A32_UNORM: + return fetch_R32G32B32A32_UNORM; + + case PIPE_FORMAT_R32_USCALED: + return fetch_R32_USCALED; + case PIPE_FORMAT_R32G32_USCALED: + return fetch_R32G32_USCALED; + case PIPE_FORMAT_R32G32B32_USCALED: + return fetch_R32G32B32_USCALED; + case PIPE_FORMAT_R32G32B32A32_USCALED: + return fetch_R32G32B32A32_USCALED; + + case PIPE_FORMAT_R32_SNORM: + return fetch_R32_SNORM; + case PIPE_FORMAT_R32G32_SNORM: + return fetch_R32G32_SNORM; + case PIPE_FORMAT_R32G32B32_SNORM: + return fetch_R32G32B32_SNORM; + case PIPE_FORMAT_R32G32B32A32_SNORM: + return fetch_R32G32B32A32_SNORM; + + case PIPE_FORMAT_R32_SSCALED: + return fetch_R32_SSCALED; + case PIPE_FORMAT_R32G32_SSCALED: + return fetch_R32G32_SSCALED; + case PIPE_FORMAT_R32G32B32_SSCALED: + return fetch_R32G32B32_SSCALED; + case PIPE_FORMAT_R32G32B32A32_SSCALED: + return fetch_R32G32B32A32_SSCALED; + + case PIPE_FORMAT_R16_UNORM: + return fetch_R16_UNORM; + case PIPE_FORMAT_R16G16_UNORM: + return fetch_R16G16_UNORM; + case PIPE_FORMAT_R16G16B16_UNORM: + return fetch_R16G16B16_UNORM; + case PIPE_FORMAT_R16G16B16A16_UNORM: + return fetch_R16G16B16A16_UNORM; + + case PIPE_FORMAT_R16_USCALED: + return fetch_R16_USCALED; + case PIPE_FORMAT_R16G16_USCALED: + return fetch_R16G16_USCALED; + case PIPE_FORMAT_R16G16B16_USCALED: + return fetch_R16G16B16_USCALED; + case PIPE_FORMAT_R16G16B16A16_USCALED: + return fetch_R16G16B16A16_USCALED; + + case PIPE_FORMAT_R16_SNORM: + return fetch_R16_SNORM; + case PIPE_FORMAT_R16G16_SNORM: + return fetch_R16G16_SNORM; + case PIPE_FORMAT_R16G16B16_SNORM: + return fetch_R16G16B16_SNORM; + case PIPE_FORMAT_R16G16B16A16_SNORM: + return fetch_R16G16B16A16_SNORM; + + case PIPE_FORMAT_R16_SSCALED: + return fetch_R16_SSCALED; + case PIPE_FORMAT_R16G16_SSCALED: + return fetch_R16G16_SSCALED; + case PIPE_FORMAT_R16G16B16_SSCALED: + return fetch_R16G16B16_SSCALED; + case PIPE_FORMAT_R16G16B16A16_SSCALED: + return fetch_R16G16B16A16_SSCALED; + + case PIPE_FORMAT_R8_UNORM: + return fetch_R8_UNORM; + case PIPE_FORMAT_R8G8_UNORM: + return fetch_R8G8_UNORM; + case PIPE_FORMAT_R8G8B8_UNORM: + return fetch_R8G8B8_UNORM; + case PIPE_FORMAT_R8G8B8A8_UNORM: + return fetch_R8G8B8A8_UNORM; + + case PIPE_FORMAT_R8_USCALED: + return fetch_R8_USCALED; + case PIPE_FORMAT_R8G8_USCALED: + return fetch_R8G8_USCALED; + case PIPE_FORMAT_R8G8B8_USCALED: + return fetch_R8G8B8_USCALED; + case PIPE_FORMAT_R8G8B8A8_USCALED: + return fetch_R8G8B8A8_USCALED; + + case PIPE_FORMAT_R8_SNORM: + return fetch_R8_SNORM; + case PIPE_FORMAT_R8G8_SNORM: + return fetch_R8G8_SNORM; + case PIPE_FORMAT_R8G8B8_SNORM: + return fetch_R8G8B8_SNORM; + case PIPE_FORMAT_R8G8B8A8_SNORM: + return fetch_R8G8B8A8_SNORM; + + case PIPE_FORMAT_R8_SSCALED: + return fetch_R8_SSCALED; + case PIPE_FORMAT_R8G8_SSCALED: + return fetch_R8G8_SSCALED; + case PIPE_FORMAT_R8G8B8_SSCALED: + return fetch_R8G8B8_SSCALED; + case PIPE_FORMAT_R8G8B8A8_SSCALED: + return fetch_R8G8B8A8_SSCALED; + + case PIPE_FORMAT_A8R8G8B8_UNORM: + return fetch_A8R8G8B8_UNORM; + + case 0: + return NULL; /* not sure why this is needed */ + + default: + assert(0); + return NULL; + } +} + + +static unsigned get_vertex_size( enum pipe_format format ) +{ + switch (format) { + case PIPE_FORMAT_R64_FLOAT: + return 8; + case PIPE_FORMAT_R64G64_FLOAT: + return 2 * 8; + case PIPE_FORMAT_R64G64B64_FLOAT: + return 3 * 8; + case PIPE_FORMAT_R64G64B64A64_FLOAT: + return 4 * 8; + + case PIPE_FORMAT_R32_SSCALED: + case PIPE_FORMAT_R32_SNORM: + case PIPE_FORMAT_R32_USCALED: + case PIPE_FORMAT_R32_UNORM: + case PIPE_FORMAT_R32_FLOAT: + return 4; + case PIPE_FORMAT_R32G32_SSCALED: + case PIPE_FORMAT_R32G32_SNORM: + case PIPE_FORMAT_R32G32_USCALED: + case PIPE_FORMAT_R32G32_UNORM: + case PIPE_FORMAT_R32G32_FLOAT: + return 2 * 4; + case PIPE_FORMAT_R32G32B32_SSCALED: + case PIPE_FORMAT_R32G32B32_SNORM: + case PIPE_FORMAT_R32G32B32_USCALED: + case PIPE_FORMAT_R32G32B32_UNORM: + case PIPE_FORMAT_R32G32B32_FLOAT: + return 3 * 4; + case PIPE_FORMAT_R32G32B32A32_SSCALED: + case PIPE_FORMAT_R32G32B32A32_SNORM: + case PIPE_FORMAT_R32G32B32A32_USCALED: + case PIPE_FORMAT_R32G32B32A32_UNORM: + case PIPE_FORMAT_R32G32B32A32_FLOAT: + return 4 * 4; + + case PIPE_FORMAT_R16_SSCALED: + case PIPE_FORMAT_R16_SNORM: + case PIPE_FORMAT_R16_UNORM: + case PIPE_FORMAT_R16_USCALED: + return 2; + case PIPE_FORMAT_R16G16_SSCALED: + case PIPE_FORMAT_R16G16_SNORM: + case PIPE_FORMAT_R16G16_USCALED: + case PIPE_FORMAT_R16G16_UNORM: + return 2 * 2; + case PIPE_FORMAT_R16G16B16_SSCALED: + case PIPE_FORMAT_R16G16B16_SNORM: + case PIPE_FORMAT_R16G16B16_USCALED: + case PIPE_FORMAT_R16G16B16_UNORM: + return 3 * 2; + case PIPE_FORMAT_R16G16B16A16_SSCALED: + case PIPE_FORMAT_R16G16B16A16_SNORM: + case PIPE_FORMAT_R16G16B16A16_USCALED: + case PIPE_FORMAT_R16G16B16A16_UNORM: + return 4 * 2; + + case PIPE_FORMAT_R8_SSCALED: + case PIPE_FORMAT_R8_SNORM: + case PIPE_FORMAT_R8_USCALED: + case PIPE_FORMAT_R8_UNORM: + return 1; + case PIPE_FORMAT_R8G8_SSCALED: + case PIPE_FORMAT_R8G8_SNORM: + case PIPE_FORMAT_R8G8_USCALED: + case PIPE_FORMAT_R8G8_UNORM: + return 2 * 1; + case PIPE_FORMAT_R8G8B8_SSCALED: + case PIPE_FORMAT_R8G8B8_SNORM: + case PIPE_FORMAT_R8G8B8_USCALED: + case PIPE_FORMAT_R8G8B8_UNORM: + return 3 * 1; + case PIPE_FORMAT_A8R8G8B8_UNORM: + case PIPE_FORMAT_R8G8B8A8_SSCALED: + case PIPE_FORMAT_R8G8B8A8_SNORM: + case PIPE_FORMAT_R8G8B8A8_USCALED: + case PIPE_FORMAT_R8G8B8A8_UNORM: + return 4 * 1; + + case 0: + return 0; /* not sure why this is needed */ + + default: + assert(0); + return 0; + } +} + + +/** + * Fetch vertex attributes for 'count' vertices. + */ +static void generic_vertex_fetch(struct spu_vs_context *draw, + struct spu_exec_machine *machine, + const unsigned *elts, + unsigned count) +{ + unsigned nr_attrs = draw->vertex_fetch.nr_attrs; + unsigned attr; + + assert(count <= 4); + +#if DRAW_DBG + printf("SPU: %s count = %u, nr_attrs = %u\n", + __FUNCTION__, count, nr_attrs); +#endif + + /* loop over vertex attributes (vertex shader inputs) + */ + for (attr = 0; attr < nr_attrs; attr++) { + const qword default_values = (qword)(vec_float4){ 0.0, 0.0, 0.0, 1.0 }; + const unsigned pitch = draw->vertex_fetch.pitch[attr]; + const uint64_t src = draw->vertex_fetch.src_ptr[attr]; + const spu_fetch_func fetch = draw->vertex_fetch.fetch[attr]; + unsigned i; + unsigned idx; + const unsigned bytes_per_entry = draw->vertex_fetch.size[attr]; + const unsigned quads_per_entry = (bytes_per_entry + 15) / 16; + qword in[2 * 4]; + + + /* Fetch four attributes for four vertices. + */ + idx = 0; + for (i = 0; i < count; i++) { + const uint64_t addr = src + (elts[i] * pitch); + +#if DRAW_DBG + printf("SPU: fetching = 0x%llx\n", addr); +#endif + + fetch_unaligned(& in[idx], addr, bytes_per_entry); + idx += quads_per_entry; + } + + /* Be nice and zero out any missing vertices. + */ + (void) memset(& in[idx], 0, (8 - idx) * sizeof(qword)); + + + /* Convert all 4 vertices to vectors of float. + */ + (*fetch)(&machine->Inputs[attr].xyzw[0].q, in, default_values, + fetch_shuffle_data); + } +} + + +void spu_update_vertex_fetch( struct spu_vs_context *draw ) +{ + unsigned i; + + + /* Invalidate the vertex cache. + */ + for (i = 0; i < (CACHE_NWAY * CACHE_NSETS); i++) { + CACHELINE_CLEARVALID(i); + } + + + for (i = 0; i < draw->vertex_fetch.nr_attrs; i++) { + draw->vertex_fetch.fetch[i] = + get_fetch_func(draw->vertex_fetch.format[i]); + draw->vertex_fetch.size[i] = + get_vertex_size(draw->vertex_fetch.format[i]); + } + + draw->vertex_fetch.fetch_func = generic_vertex_fetch; +} diff --git a/src/mesa/pipe/cell/spu/spu_vertex_shader.c b/src/gallium/drivers/cell/spu/spu_vertex_shader.c index c1cbbb6d1e..3f5bf41aa2 100644 --- a/src/mesa/pipe/cell/spu/spu_vertex_shader.c +++ b/src/gallium/drivers/cell/spu/spu_vertex_shader.c @@ -39,9 +39,9 @@ #include "pipe/p_shader_tokens.h" #include "spu_vertex_shader.h" #include "spu_exec.h" -#include "pipe/draw/draw_private.h" -#include "pipe/draw/draw_context.h" -#include "pipe/cell/common.h" +#include "draw/draw_private.h" +#include "draw/draw_context.h" +#include "cell/common.h" #include "spu_main.h" static INLINE unsigned diff --git a/src/mesa/pipe/cell/spu/spu_vertex_shader.h b/src/gallium/drivers/cell/spu/spu_vertex_shader.h index c96b93ff0a..b5bf31e67d 100644 --- a/src/mesa/pipe/cell/spu/spu_vertex_shader.h +++ b/src/gallium/drivers/cell/spu/spu_vertex_shader.h @@ -6,7 +6,8 @@ struct spu_vs_context; -typedef qword (*spu_fetch_func)(const void *ptr); +typedef void (*spu_fetch_func)(qword *out, const qword *in, qword defaults, + const qword *shuffle_data); typedef void (*spu_full_fetch_func)( struct spu_vs_context *draw, struct spu_exec_machine *machine, const unsigned *elts, @@ -18,6 +19,7 @@ struct spu_vs_context { struct { uint64_t src_ptr[PIPE_ATTRIB_MAX]; unsigned pitch[PIPE_ATTRIB_MAX]; + unsigned size[PIPE_ATTRIB_MAX]; enum pipe_format format[PIPE_ATTRIB_MAX]; unsigned nr_attrs; boolean dirty; diff --git a/src/mesa/pipe/cell/spu/spu_ztest.h b/src/gallium/drivers/cell/spu/spu_ztest.h index ce8ad00339..ce8ad00339 100644 --- a/src/mesa/pipe/cell/spu/spu_ztest.h +++ b/src/gallium/drivers/cell/spu/spu_ztest.h diff --git a/src/mesa/pipe/failover/Makefile b/src/gallium/drivers/failover/Makefile index 72d0895c74..14389bd055 100644 --- a/src/mesa/pipe/failover/Makefile +++ b/src/gallium/drivers/failover/Makefile @@ -15,7 +15,7 @@ C_SOURCES = \ ASM_SOURCES = -include ../Makefile.template +include ../../Makefile.template symlinks: diff --git a/src/mesa/pipe/failover/fo_context.c b/src/gallium/drivers/failover/fo_context.c index 7ce4a7df17..7ce4a7df17 100644 --- a/src/mesa/pipe/failover/fo_context.c +++ b/src/gallium/drivers/failover/fo_context.c diff --git a/src/mesa/pipe/failover/fo_context.h b/src/gallium/drivers/failover/fo_context.h index 1dc87291c9..1dc87291c9 100644 --- a/src/mesa/pipe/failover/fo_context.h +++ b/src/gallium/drivers/failover/fo_context.h diff --git a/src/mesa/pipe/failover/fo_state.c b/src/gallium/drivers/failover/fo_state.c index 0fc5568da1..0fc5568da1 100644 --- a/src/mesa/pipe/failover/fo_state.c +++ b/src/gallium/drivers/failover/fo_state.c diff --git a/src/mesa/pipe/failover/fo_state_emit.c b/src/gallium/drivers/failover/fo_state_emit.c index c663dd4947..c663dd4947 100644 --- a/src/mesa/pipe/failover/fo_state_emit.c +++ b/src/gallium/drivers/failover/fo_state_emit.c diff --git a/src/mesa/pipe/failover/fo_winsys.h b/src/gallium/drivers/failover/fo_winsys.h index a8ce997a1f..a8ce997a1f 100644 --- a/src/mesa/pipe/failover/fo_winsys.h +++ b/src/gallium/drivers/failover/fo_winsys.h diff --git a/src/mesa/pipe/i915simple/Makefile b/src/gallium/drivers/i915simple/Makefile index 2f91de3afc..ee22ba86f9 100644 --- a/src/mesa/pipe/i915simple/Makefile +++ b/src/gallium/drivers/i915simple/Makefile @@ -32,7 +32,7 @@ C_SOURCES = \ ASM_SOURCES = -include ../Makefile.template +include ../../Makefile.template symlinks: diff --git a/src/mesa/pipe/i915simple/SConscript b/src/gallium/drivers/i915simple/SConscript index f5fb96b995..f5fb96b995 100644 --- a/src/mesa/pipe/i915simple/SConscript +++ b/src/gallium/drivers/i915simple/SConscript diff --git a/src/mesa/pipe/i915simple/i915_batch.h b/src/gallium/drivers/i915simple/i915_batch.h index fb88cd6db0..fb88cd6db0 100644 --- a/src/mesa/pipe/i915simple/i915_batch.h +++ b/src/gallium/drivers/i915simple/i915_batch.h diff --git a/src/mesa/pipe/i915simple/i915_blit.c b/src/gallium/drivers/i915simple/i915_blit.c index db4671ff55..db4671ff55 100644 --- a/src/mesa/pipe/i915simple/i915_blit.c +++ b/src/gallium/drivers/i915simple/i915_blit.c diff --git a/src/mesa/pipe/i915simple/i915_blit.h b/src/gallium/drivers/i915simple/i915_blit.h index 6e5b44e124..6e5b44e124 100644 --- a/src/mesa/pipe/i915simple/i915_blit.h +++ b/src/gallium/drivers/i915simple/i915_blit.h diff --git a/src/mesa/pipe/i915simple/i915_clear.c b/src/gallium/drivers/i915simple/i915_clear.c index cde69daacc..cde69daacc 100644 --- a/src/mesa/pipe/i915simple/i915_clear.c +++ b/src/gallium/drivers/i915simple/i915_clear.c diff --git a/src/mesa/pipe/i915simple/i915_context.c b/src/gallium/drivers/i915simple/i915_context.c index 497623a700..7f71f8fd4f 100644 --- a/src/mesa/pipe/i915simple/i915_context.c +++ b/src/gallium/drivers/i915simple/i915_context.c @@ -32,7 +32,7 @@ #include "i915_texture.h" #include "i915_reg.h" -#include "pipe/draw/draw_context.h" +#include "draw/draw_context.h" #include "pipe/p_defines.h" #include "pipe/p_winsys.h" #include "pipe/p_util.h" diff --git a/src/mesa/pipe/i915simple/i915_context.h b/src/gallium/drivers/i915simple/i915_context.h index b4ea63c3e7..2d876925b2 100644 --- a/src/mesa/pipe/i915simple/i915_context.h +++ b/src/gallium/drivers/i915simple/i915_context.h @@ -33,7 +33,7 @@ #include "pipe/p_defines.h" #include "pipe/p_state.h" -#include "pipe/draw/draw_vertex.h" +#include "draw/draw_vertex.h" #define I915_TEX_UNITS 8 diff --git a/src/mesa/pipe/i915simple/i915_debug.c b/src/gallium/drivers/i915simple/i915_debug.c index 94db44e1aa..94db44e1aa 100644 --- a/src/mesa/pipe/i915simple/i915_debug.c +++ b/src/gallium/drivers/i915simple/i915_debug.c diff --git a/src/mesa/pipe/i915simple/i915_debug.h b/src/gallium/drivers/i915simple/i915_debug.h index 0bcd094233..0bcd094233 100644 --- a/src/mesa/pipe/i915simple/i915_debug.h +++ b/src/gallium/drivers/i915simple/i915_debug.h diff --git a/src/mesa/pipe/i915simple/i915_debug_fp.c b/src/gallium/drivers/i915simple/i915_debug_fp.c index ebfdb3d93c..ebfdb3d93c 100644 --- a/src/mesa/pipe/i915simple/i915_debug_fp.c +++ b/src/gallium/drivers/i915simple/i915_debug_fp.c diff --git a/src/mesa/pipe/i915simple/i915_flush.c b/src/gallium/drivers/i915simple/i915_flush.c index 3c2069b827..3c2069b827 100644 --- a/src/mesa/pipe/i915simple/i915_flush.c +++ b/src/gallium/drivers/i915simple/i915_flush.c diff --git a/src/mesa/pipe/i915simple/i915_fpc.h b/src/gallium/drivers/i915simple/i915_fpc.h index 8c7b68aefb..8c7b68aefb 100644 --- a/src/mesa/pipe/i915simple/i915_fpc.h +++ b/src/gallium/drivers/i915simple/i915_fpc.h diff --git a/src/mesa/pipe/i915simple/i915_fpc_emit.c b/src/gallium/drivers/i915simple/i915_fpc_emit.c index 74924ff0a1..74924ff0a1 100644 --- a/src/mesa/pipe/i915simple/i915_fpc_emit.c +++ b/src/gallium/drivers/i915simple/i915_fpc_emit.c diff --git a/src/mesa/pipe/i915simple/i915_fpc_translate.c b/src/gallium/drivers/i915simple/i915_fpc_translate.c index 868f0c7e04..6c1524c768 100644 --- a/src/mesa/pipe/i915simple/i915_fpc_translate.c +++ b/src/gallium/drivers/i915simple/i915_fpc_translate.c @@ -33,9 +33,9 @@ #include "i915_fpc.h" #include "pipe/p_shader_tokens.h" -#include "pipe/tgsi/util/tgsi_parse.h" +#include "tgsi/util/tgsi_parse.h" -#include "pipe/draw/draw_vertex.h" +#include "draw/draw_vertex.h" /** diff --git a/src/mesa/pipe/i915simple/i915_prim_emit.c b/src/gallium/drivers/i915simple/i915_prim_emit.c index c4a706c37d..44c4325936 100644 --- a/src/mesa/pipe/i915simple/i915_prim_emit.c +++ b/src/gallium/drivers/i915simple/i915_prim_emit.c @@ -26,7 +26,7 @@ **************************************************************************/ -#include "pipe/draw/draw_private.h" +#include "draw/draw_private.h" #include "pipe/p_util.h" #include "i915_context.h" diff --git a/src/mesa/pipe/i915simple/i915_prim_vbuf.c b/src/gallium/drivers/i915simple/i915_prim_vbuf.c index e069773fd4..c5bf6174f6 100644 --- a/src/mesa/pipe/i915simple/i915_prim_vbuf.c +++ b/src/gallium/drivers/i915simple/i915_prim_vbuf.c @@ -38,7 +38,7 @@ */ -#include "pipe/draw/draw_vbuf.h" +#include "draw/draw_vbuf.h" #include "pipe/p_debug.h" #include "pipe/p_util.h" #include "pipe/p_inlines.h" diff --git a/src/mesa/pipe/i915simple/i915_reg.h b/src/gallium/drivers/i915simple/i915_reg.h index 04620fec68..04620fec68 100644 --- a/src/mesa/pipe/i915simple/i915_reg.h +++ b/src/gallium/drivers/i915simple/i915_reg.h diff --git a/src/mesa/pipe/i915simple/i915_state.c b/src/gallium/drivers/i915simple/i915_state.c index abd5571b88..294e6fad03 100644 --- a/src/mesa/pipe/i915simple/i915_state.c +++ b/src/gallium/drivers/i915simple/i915_state.c @@ -29,7 +29,7 @@ */ -#include "pipe/draw/draw_context.h" +#include "draw/draw_context.h" #include "pipe/p_winsys.h" #include "pipe/p_util.h" diff --git a/src/mesa/pipe/i915simple/i915_state.h b/src/gallium/drivers/i915simple/i915_state.h index 86c6b0027d..86c6b0027d 100644 --- a/src/mesa/pipe/i915simple/i915_state.h +++ b/src/gallium/drivers/i915simple/i915_state.h diff --git a/src/mesa/pipe/i915simple/i915_state_derived.c b/src/gallium/drivers/i915simple/i915_state_derived.c index 653983e4a9..4767584fc6 100644 --- a/src/mesa/pipe/i915simple/i915_state_derived.c +++ b/src/gallium/drivers/i915simple/i915_state_derived.c @@ -27,8 +27,8 @@ #include "pipe/p_util.h" -#include "pipe/draw/draw_context.h" -#include "pipe/draw/draw_vertex.h" +#include "draw/draw_context.h" +#include "draw/draw_vertex.h" #include "i915_context.h" #include "i915_state.h" #include "i915_reg.h" diff --git a/src/mesa/pipe/i915simple/i915_state_dynamic.c b/src/gallium/drivers/i915simple/i915_state_dynamic.c index 8cfbdddd19..8cfbdddd19 100644 --- a/src/mesa/pipe/i915simple/i915_state_dynamic.c +++ b/src/gallium/drivers/i915simple/i915_state_dynamic.c diff --git a/src/mesa/pipe/i915simple/i915_state_emit.c b/src/gallium/drivers/i915simple/i915_state_emit.c index 3339287f49..3339287f49 100644 --- a/src/mesa/pipe/i915simple/i915_state_emit.c +++ b/src/gallium/drivers/i915simple/i915_state_emit.c diff --git a/src/mesa/pipe/i915simple/i915_state_immediate.c b/src/gallium/drivers/i915simple/i915_state_immediate.c index 07031fc6c5..07031fc6c5 100644 --- a/src/mesa/pipe/i915simple/i915_state_immediate.c +++ b/src/gallium/drivers/i915simple/i915_state_immediate.c diff --git a/src/mesa/pipe/i915simple/i915_state_inlines.h b/src/gallium/drivers/i915simple/i915_state_inlines.h index 0934ac79a4..0934ac79a4 100644 --- a/src/mesa/pipe/i915simple/i915_state_inlines.h +++ b/src/gallium/drivers/i915simple/i915_state_inlines.h diff --git a/src/mesa/pipe/i915simple/i915_state_sampler.c b/src/gallium/drivers/i915simple/i915_state_sampler.c index 9c1a5bbbd6..9c1a5bbbd6 100644 --- a/src/mesa/pipe/i915simple/i915_state_sampler.c +++ b/src/gallium/drivers/i915simple/i915_state_sampler.c diff --git a/src/mesa/pipe/i915simple/i915_strings.c b/src/gallium/drivers/i915simple/i915_strings.c index c713bf7208..301fedea19 100644 --- a/src/mesa/pipe/i915simple/i915_strings.c +++ b/src/gallium/drivers/i915simple/i915_strings.c @@ -70,7 +70,7 @@ static const char *i915_get_name( struct pipe_context *pipe ) break; } - sprintf(buffer, "pipe/i915 (chipset: %s)", chipset); + sprintf(buffer, "i915 (chipset: %s)", chipset); return buffer; } diff --git a/src/mesa/pipe/i915simple/i915_surface.c b/src/gallium/drivers/i915simple/i915_surface.c index 6d4b8a0aa9..17fd27895a 100644 --- a/src/mesa/pipe/i915simple/i915_surface.c +++ b/src/gallium/drivers/i915simple/i915_surface.c @@ -33,7 +33,7 @@ #include "pipe/p_util.h" #include "pipe/p_inlines.h" #include "pipe/p_winsys.h" -#include "pipe/util/p_tile.h" +#include "util/p_tile.h" /* @@ -99,7 +99,7 @@ i915_surface_copy(struct pipe_context *pipe, dstx, dsty, width, height, pipe_surface_map(src), - do_flip ? -src->pitch : src->pitch, + do_flip ? -(int) src->pitch : src->pitch, srcx, do_flip ? 1 - srcy - height : srcy); pipe_surface_unmap(src); diff --git a/src/mesa/pipe/i915simple/i915_texture.c b/src/gallium/drivers/i915simple/i915_texture.c index 6d37ae3d74..6d37ae3d74 100644 --- a/src/mesa/pipe/i915simple/i915_texture.c +++ b/src/gallium/drivers/i915simple/i915_texture.c diff --git a/src/mesa/pipe/i915simple/i915_texture.h b/src/gallium/drivers/i915simple/i915_texture.h index 330d111dc7..330d111dc7 100644 --- a/src/mesa/pipe/i915simple/i915_texture.h +++ b/src/gallium/drivers/i915simple/i915_texture.h diff --git a/src/mesa/pipe/i915simple/i915_winsys.h b/src/gallium/drivers/i915simple/i915_winsys.h index fe49710852..fe49710852 100644 --- a/src/mesa/pipe/i915simple/i915_winsys.h +++ b/src/gallium/drivers/i915simple/i915_winsys.h diff --git a/src/mesa/pipe/i965simple/Makefile b/src/gallium/drivers/i965simple/Makefile index 48c00ab50b..1dec1f9749 100644 --- a/src/mesa/pipe/i965simple/Makefile +++ b/src/gallium/drivers/i965simple/Makefile @@ -61,6 +61,6 @@ ASM_SOURCES = DRIVER_DEFINES = -I. -include ../Makefile.template +include ../../Makefile.template symlinks: diff --git a/src/mesa/pipe/i965simple/SConscript b/src/gallium/drivers/i965simple/SConscript index 74621de84c..74621de84c 100644 --- a/src/mesa/pipe/i965simple/SConscript +++ b/src/gallium/drivers/i965simple/SConscript diff --git a/src/mesa/pipe/i965simple/brw_batch.h b/src/gallium/drivers/i965simple/brw_batch.h index 5f5932a488..5f5932a488 100644 --- a/src/mesa/pipe/i965simple/brw_batch.h +++ b/src/gallium/drivers/i965simple/brw_batch.h diff --git a/src/mesa/pipe/i965simple/brw_blit.c b/src/gallium/drivers/i965simple/brw_blit.c index 8494f70493..8494f70493 100644 --- a/src/mesa/pipe/i965simple/brw_blit.c +++ b/src/gallium/drivers/i965simple/brw_blit.c diff --git a/src/mesa/pipe/i965simple/brw_blit.h b/src/gallium/drivers/i965simple/brw_blit.h index 111c5d91d3..111c5d91d3 100644 --- a/src/mesa/pipe/i965simple/brw_blit.h +++ b/src/gallium/drivers/i965simple/brw_blit.h diff --git a/src/mesa/pipe/i965simple/brw_cc.c b/src/gallium/drivers/i965simple/brw_cc.c index 337e4f95f6..337e4f95f6 100644 --- a/src/mesa/pipe/i965simple/brw_cc.c +++ b/src/gallium/drivers/i965simple/brw_cc.c diff --git a/src/mesa/pipe/i965simple/brw_clip.c b/src/gallium/drivers/i965simple/brw_clip.c index 268124cc53..268124cc53 100644 --- a/src/mesa/pipe/i965simple/brw_clip.c +++ b/src/gallium/drivers/i965simple/brw_clip.c diff --git a/src/mesa/pipe/i965simple/brw_clip.h b/src/gallium/drivers/i965simple/brw_clip.h index a89d08b791..a89d08b791 100644 --- a/src/mesa/pipe/i965simple/brw_clip.h +++ b/src/gallium/drivers/i965simple/brw_clip.h diff --git a/src/mesa/pipe/i965simple/brw_clip_line.c b/src/gallium/drivers/i965simple/brw_clip_line.c index 75d9e5fcda..75d9e5fcda 100644 --- a/src/mesa/pipe/i965simple/brw_clip_line.c +++ b/src/gallium/drivers/i965simple/brw_clip_line.c diff --git a/src/mesa/pipe/i965simple/brw_clip_point.c b/src/gallium/drivers/i965simple/brw_clip_point.c index 6fce7210d1..6fce7210d1 100644 --- a/src/mesa/pipe/i965simple/brw_clip_point.c +++ b/src/gallium/drivers/i965simple/brw_clip_point.c diff --git a/src/mesa/pipe/i965simple/brw_clip_state.c b/src/gallium/drivers/i965simple/brw_clip_state.c index ea5c05a279..ea5c05a279 100644 --- a/src/mesa/pipe/i965simple/brw_clip_state.c +++ b/src/gallium/drivers/i965simple/brw_clip_state.c diff --git a/src/mesa/pipe/i965simple/brw_clip_tri.c b/src/gallium/drivers/i965simple/brw_clip_tri.c index c5da7b825e..c5da7b825e 100644 --- a/src/mesa/pipe/i965simple/brw_clip_tri.c +++ b/src/gallium/drivers/i965simple/brw_clip_tri.c diff --git a/src/mesa/pipe/i965simple/brw_clip_unfilled.c b/src/gallium/drivers/i965simple/brw_clip_unfilled.c index b774a76dd6..b774a76dd6 100644 --- a/src/mesa/pipe/i965simple/brw_clip_unfilled.c +++ b/src/gallium/drivers/i965simple/brw_clip_unfilled.c diff --git a/src/mesa/pipe/i965simple/brw_clip_util.c b/src/gallium/drivers/i965simple/brw_clip_util.c index 6d58ceafff..6d58ceafff 100644 --- a/src/mesa/pipe/i965simple/brw_clip_util.c +++ b/src/gallium/drivers/i965simple/brw_clip_util.c diff --git a/src/mesa/pipe/i965simple/brw_context.c b/src/gallium/drivers/i965simple/brw_context.c index 5e58701e91..5e58701e91 100644 --- a/src/mesa/pipe/i965simple/brw_context.c +++ b/src/gallium/drivers/i965simple/brw_context.c diff --git a/src/mesa/pipe/i965simple/brw_context.h b/src/gallium/drivers/i965simple/brw_context.h index 65664d853d..65664d853d 100644 --- a/src/mesa/pipe/i965simple/brw_context.h +++ b/src/gallium/drivers/i965simple/brw_context.h diff --git a/src/mesa/pipe/i965simple/brw_curbe.c b/src/gallium/drivers/i965simple/brw_curbe.c index 52bbd525c1..52bbd525c1 100644 --- a/src/mesa/pipe/i965simple/brw_curbe.c +++ b/src/gallium/drivers/i965simple/brw_curbe.c diff --git a/src/mesa/pipe/i965simple/brw_defines.h b/src/gallium/drivers/i965simple/brw_defines.h index 9379a397f6..9379a397f6 100644 --- a/src/mesa/pipe/i965simple/brw_defines.h +++ b/src/gallium/drivers/i965simple/brw_defines.h diff --git a/src/mesa/pipe/i965simple/brw_draw.c b/src/gallium/drivers/i965simple/brw_draw.c index 7598e3dc8a..7598e3dc8a 100644 --- a/src/mesa/pipe/i965simple/brw_draw.c +++ b/src/gallium/drivers/i965simple/brw_draw.c diff --git a/src/mesa/pipe/i965simple/brw_draw.h b/src/gallium/drivers/i965simple/brw_draw.h index 62fe0d5d0e..62fe0d5d0e 100644 --- a/src/mesa/pipe/i965simple/brw_draw.h +++ b/src/gallium/drivers/i965simple/brw_draw.h diff --git a/src/mesa/pipe/i965simple/brw_draw_upload.c b/src/gallium/drivers/i965simple/brw_draw_upload.c index aa85d93866..aa85d93866 100644 --- a/src/mesa/pipe/i965simple/brw_draw_upload.c +++ b/src/gallium/drivers/i965simple/brw_draw_upload.c diff --git a/src/mesa/pipe/i965simple/brw_eu.c b/src/gallium/drivers/i965simple/brw_eu.c index e2002d1821..e2002d1821 100644 --- a/src/mesa/pipe/i965simple/brw_eu.c +++ b/src/gallium/drivers/i965simple/brw_eu.c diff --git a/src/mesa/pipe/i965simple/brw_eu.h b/src/gallium/drivers/i965simple/brw_eu.h index 23151ae9ed..23151ae9ed 100644 --- a/src/mesa/pipe/i965simple/brw_eu.h +++ b/src/gallium/drivers/i965simple/brw_eu.h diff --git a/src/mesa/pipe/i965simple/brw_eu_debug.c b/src/gallium/drivers/i965simple/brw_eu_debug.c index 4a94ddefa6..4a94ddefa6 100644 --- a/src/mesa/pipe/i965simple/brw_eu_debug.c +++ b/src/gallium/drivers/i965simple/brw_eu_debug.c diff --git a/src/mesa/pipe/i965simple/brw_eu_emit.c b/src/gallium/drivers/i965simple/brw_eu_emit.c index 400a80b6fb..400a80b6fb 100644 --- a/src/mesa/pipe/i965simple/brw_eu_emit.c +++ b/src/gallium/drivers/i965simple/brw_eu_emit.c diff --git a/src/mesa/pipe/i965simple/brw_eu_util.c b/src/gallium/drivers/i965simple/brw_eu_util.c index 3a65b141f0..3a65b141f0 100644 --- a/src/mesa/pipe/i965simple/brw_eu_util.c +++ b/src/gallium/drivers/i965simple/brw_eu_util.c diff --git a/src/mesa/pipe/i965simple/brw_flush.c b/src/gallium/drivers/i965simple/brw_flush.c index 5216c680cf..5216c680cf 100644 --- a/src/mesa/pipe/i965simple/brw_flush.c +++ b/src/gallium/drivers/i965simple/brw_flush.c diff --git a/src/mesa/pipe/i965simple/brw_gs.c b/src/gallium/drivers/i965simple/brw_gs.c index de60868ccc..de60868ccc 100644 --- a/src/mesa/pipe/i965simple/brw_gs.c +++ b/src/gallium/drivers/i965simple/brw_gs.c diff --git a/src/mesa/pipe/i965simple/brw_gs.h b/src/gallium/drivers/i965simple/brw_gs.h index f09141c6aa..f09141c6aa 100644 --- a/src/mesa/pipe/i965simple/brw_gs.h +++ b/src/gallium/drivers/i965simple/brw_gs.h diff --git a/src/mesa/pipe/i965simple/brw_gs_emit.c b/src/gallium/drivers/i965simple/brw_gs_emit.c index c3cc90b10f..c3cc90b10f 100644 --- a/src/mesa/pipe/i965simple/brw_gs_emit.c +++ b/src/gallium/drivers/i965simple/brw_gs_emit.c diff --git a/src/mesa/pipe/i965simple/brw_gs_state.c b/src/gallium/drivers/i965simple/brw_gs_state.c index 3932e9e939..3932e9e939 100644 --- a/src/mesa/pipe/i965simple/brw_gs_state.c +++ b/src/gallium/drivers/i965simple/brw_gs_state.c diff --git a/src/mesa/pipe/i965simple/brw_misc_state.c b/src/gallium/drivers/i965simple/brw_misc_state.c index 925049ecc1..925049ecc1 100644 --- a/src/mesa/pipe/i965simple/brw_misc_state.c +++ b/src/gallium/drivers/i965simple/brw_misc_state.c diff --git a/src/mesa/pipe/i965simple/brw_reg.h b/src/gallium/drivers/i965simple/brw_reg.h index 9e885c3b3b..9e885c3b3b 100644 --- a/src/mesa/pipe/i965simple/brw_reg.h +++ b/src/gallium/drivers/i965simple/brw_reg.h diff --git a/src/mesa/pipe/i965simple/brw_sf.c b/src/gallium/drivers/i965simple/brw_sf.c index 7c83b81c85..7c83b81c85 100644 --- a/src/mesa/pipe/i965simple/brw_sf.c +++ b/src/gallium/drivers/i965simple/brw_sf.c diff --git a/src/mesa/pipe/i965simple/brw_sf.h b/src/gallium/drivers/i965simple/brw_sf.h index b7ada47560..b7ada47560 100644 --- a/src/mesa/pipe/i965simple/brw_sf.h +++ b/src/gallium/drivers/i965simple/brw_sf.h diff --git a/src/mesa/pipe/i965simple/brw_sf_emit.c b/src/gallium/drivers/i965simple/brw_sf_emit.c index 78d6fa5e9e..78d6fa5e9e 100644 --- a/src/mesa/pipe/i965simple/brw_sf_emit.c +++ b/src/gallium/drivers/i965simple/brw_sf_emit.c diff --git a/src/mesa/pipe/i965simple/brw_sf_state.c b/src/gallium/drivers/i965simple/brw_sf_state.c index 9acd3ea61b..9acd3ea61b 100644 --- a/src/mesa/pipe/i965simple/brw_sf_state.c +++ b/src/gallium/drivers/i965simple/brw_sf_state.c diff --git a/src/mesa/pipe/i965simple/brw_shader_info.c b/src/gallium/drivers/i965simple/brw_shader_info.c index 431b45466a..a762a870fe 100644 --- a/src/mesa/pipe/i965simple/brw_shader_info.c +++ b/src/gallium/drivers/i965simple/brw_shader_info.c @@ -3,7 +3,7 @@ #include "brw_state.h" #include "pipe/p_util.h" #include "pipe/p_shader_tokens.h" -#include "pipe/tgsi/util/tgsi_parse.h" +#include "tgsi/util/tgsi_parse.h" diff --git a/src/mesa/pipe/i965simple/brw_state.c b/src/gallium/drivers/i965simple/brw_state.c index 95dfce88e4..f746d1cc57 100644 --- a/src/mesa/pipe/i965simple/brw_state.c +++ b/src/gallium/drivers/i965simple/brw_state.c @@ -33,7 +33,7 @@ #include "pipe/p_winsys.h" #include "pipe/p_util.h" #include "pipe/p_shader_tokens.h" -#include "pipe/tgsi/util/tgsi_dump.h" +#include "tgsi/util/tgsi_dump.h" #include "brw_context.h" #include "brw_defines.h" diff --git a/src/mesa/pipe/i965simple/brw_state.h b/src/gallium/drivers/i965simple/brw_state.h index 258e9a556e..258e9a556e 100644 --- a/src/mesa/pipe/i965simple/brw_state.h +++ b/src/gallium/drivers/i965simple/brw_state.h diff --git a/src/mesa/pipe/i965simple/brw_state_batch.c b/src/gallium/drivers/i965simple/brw_state_batch.c index 35db76b594..35db76b594 100644 --- a/src/mesa/pipe/i965simple/brw_state_batch.c +++ b/src/gallium/drivers/i965simple/brw_state_batch.c diff --git a/src/mesa/pipe/i965simple/brw_state_cache.c b/src/gallium/drivers/i965simple/brw_state_cache.c index b3a5124461..b3a5124461 100644 --- a/src/mesa/pipe/i965simple/brw_state_cache.c +++ b/src/gallium/drivers/i965simple/brw_state_cache.c diff --git a/src/mesa/pipe/i965simple/brw_state_pool.c b/src/gallium/drivers/i965simple/brw_state_pool.c index f3174bfe0a..f3174bfe0a 100644 --- a/src/mesa/pipe/i965simple/brw_state_pool.c +++ b/src/gallium/drivers/i965simple/brw_state_pool.c diff --git a/src/mesa/pipe/i965simple/brw_state_upload.c b/src/gallium/drivers/i965simple/brw_state_upload.c index e727601e1e..e727601e1e 100644 --- a/src/mesa/pipe/i965simple/brw_state_upload.c +++ b/src/gallium/drivers/i965simple/brw_state_upload.c diff --git a/src/mesa/pipe/i965simple/brw_strings.c b/src/gallium/drivers/i965simple/brw_strings.c index 29a41ed1e9..3d9c50961f 100644 --- a/src/mesa/pipe/i965simple/brw_strings.c +++ b/src/gallium/drivers/i965simple/brw_strings.c @@ -59,7 +59,7 @@ static const char *brw_get_name( struct pipe_context *pipe ) break; } - sprintf(buffer, "pipe/i965 (chipset: %s)", chipset); + sprintf(buffer, "i965 (chipset: %s)", chipset); return buffer; } diff --git a/src/mesa/pipe/i965simple/brw_structs.h b/src/gallium/drivers/i965simple/brw_structs.h index bbb087e95d..bbb087e95d 100644 --- a/src/mesa/pipe/i965simple/brw_structs.h +++ b/src/gallium/drivers/i965simple/brw_structs.h diff --git a/src/mesa/pipe/i965simple/brw_surface.c b/src/gallium/drivers/i965simple/brw_surface.c index 518845e4b2..376a42b1a6 100644 --- a/src/mesa/pipe/i965simple/brw_surface.c +++ b/src/gallium/drivers/i965simple/brw_surface.c @@ -32,7 +32,7 @@ #include "pipe/p_util.h" #include "pipe/p_inlines.h" #include "pipe/p_winsys.h" -#include "pipe/util/p_tile.h" +#include "util/p_tile.h" /* diff --git a/src/mesa/pipe/i965simple/brw_tex_layout.c b/src/gallium/drivers/i965simple/brw_tex_layout.c index 90561f1307..90561f1307 100644 --- a/src/mesa/pipe/i965simple/brw_tex_layout.c +++ b/src/gallium/drivers/i965simple/brw_tex_layout.c diff --git a/src/mesa/pipe/i965simple/brw_tex_layout.h b/src/gallium/drivers/i965simple/brw_tex_layout.h index cfd6b1ef3a..cfd6b1ef3a 100644 --- a/src/mesa/pipe/i965simple/brw_tex_layout.h +++ b/src/gallium/drivers/i965simple/brw_tex_layout.h diff --git a/src/mesa/pipe/i965simple/brw_urb.c b/src/gallium/drivers/i965simple/brw_urb.c index 101a4367b9..101a4367b9 100644 --- a/src/mesa/pipe/i965simple/brw_urb.c +++ b/src/gallium/drivers/i965simple/brw_urb.c diff --git a/src/mesa/pipe/i965simple/brw_util.c b/src/gallium/drivers/i965simple/brw_util.c index 42391d7c8c..42391d7c8c 100644 --- a/src/mesa/pipe/i965simple/brw_util.c +++ b/src/gallium/drivers/i965simple/brw_util.c diff --git a/src/mesa/pipe/i965simple/brw_util.h b/src/gallium/drivers/i965simple/brw_util.h index d60e5934db..d60e5934db 100644 --- a/src/mesa/pipe/i965simple/brw_util.h +++ b/src/gallium/drivers/i965simple/brw_util.h diff --git a/src/mesa/pipe/i965simple/brw_vs.c b/src/gallium/drivers/i965simple/brw_vs.c index 738c6346d5..738c6346d5 100644 --- a/src/mesa/pipe/i965simple/brw_vs.c +++ b/src/gallium/drivers/i965simple/brw_vs.c diff --git a/src/mesa/pipe/i965simple/brw_vs.h b/src/gallium/drivers/i965simple/brw_vs.h index 0e58f043b0..0e58f043b0 100644 --- a/src/mesa/pipe/i965simple/brw_vs.h +++ b/src/gallium/drivers/i965simple/brw_vs.h diff --git a/src/mesa/pipe/i965simple/brw_vs_emit.c b/src/gallium/drivers/i965simple/brw_vs_emit.c index 98915ba101..05df4860ed 100644 --- a/src/mesa/pipe/i965simple/brw_vs_emit.c +++ b/src/gallium/drivers/i965simple/brw_vs_emit.c @@ -33,7 +33,7 @@ #include "brw_vs.h" #include "pipe/p_shader_tokens.h" -#include "pipe/tgsi/util/tgsi_parse.h" +#include "tgsi/util/tgsi_parse.h" struct brw_prog_info { unsigned num_temps; diff --git a/src/mesa/pipe/i965simple/brw_vs_state.c b/src/gallium/drivers/i965simple/brw_vs_state.c index c73469929c..c73469929c 100644 --- a/src/mesa/pipe/i965simple/brw_vs_state.c +++ b/src/gallium/drivers/i965simple/brw_vs_state.c diff --git a/src/mesa/pipe/i965simple/brw_winsys.h b/src/gallium/drivers/i965simple/brw_winsys.h index 3523a58614..3523a58614 100644 --- a/src/mesa/pipe/i965simple/brw_winsys.h +++ b/src/gallium/drivers/i965simple/brw_winsys.h diff --git a/src/mesa/pipe/i965simple/brw_wm.c b/src/gallium/drivers/i965simple/brw_wm.c index 539b170744..539b170744 100644 --- a/src/mesa/pipe/i965simple/brw_wm.c +++ b/src/gallium/drivers/i965simple/brw_wm.c diff --git a/src/mesa/pipe/i965simple/brw_wm.h b/src/gallium/drivers/i965simple/brw_wm.h index a1ac0f504a..a1ac0f504a 100644 --- a/src/mesa/pipe/i965simple/brw_wm.h +++ b/src/gallium/drivers/i965simple/brw_wm.h diff --git a/src/mesa/pipe/i965simple/brw_wm_decl.c b/src/gallium/drivers/i965simple/brw_wm_decl.c index b45a333a2e..97418a52e7 100644 --- a/src/mesa/pipe/i965simple/brw_wm_decl.c +++ b/src/gallium/drivers/i965simple/brw_wm_decl.c @@ -4,7 +4,7 @@ #include "brw_wm.h" #include "pipe/p_util.h" #include "pipe/p_shader_tokens.h" -#include "pipe/tgsi/util/tgsi_parse.h" +#include "tgsi/util/tgsi_parse.h" static struct brw_reg alloc_tmp(struct brw_wm_compile *c) { diff --git a/src/mesa/pipe/i965simple/brw_wm_glsl.c b/src/gallium/drivers/i965simple/brw_wm_glsl.c index d95645d108..44f946ea74 100644 --- a/src/mesa/pipe/i965simple/brw_wm_glsl.c +++ b/src/gallium/drivers/i965simple/brw_wm_glsl.c @@ -4,7 +4,7 @@ #include "brw_wm.h" #include "pipe/p_util.h" #include "pipe/p_shader_tokens.h" -#include "pipe/tgsi/util/tgsi_parse.h" +#include "tgsi/util/tgsi_parse.h" diff --git a/src/mesa/pipe/i965simple/brw_wm_iz.c b/src/gallium/drivers/i965simple/brw_wm_iz.c index 6c5f25bf39..6c5f25bf39 100644 --- a/src/mesa/pipe/i965simple/brw_wm_iz.c +++ b/src/gallium/drivers/i965simple/brw_wm_iz.c diff --git a/src/mesa/pipe/i965simple/brw_wm_sampler_state.c b/src/gallium/drivers/i965simple/brw_wm_sampler_state.c index de42ffc5b1..de42ffc5b1 100644 --- a/src/mesa/pipe/i965simple/brw_wm_sampler_state.c +++ b/src/gallium/drivers/i965simple/brw_wm_sampler_state.c diff --git a/src/mesa/pipe/i965simple/brw_wm_state.c b/src/gallium/drivers/i965simple/brw_wm_state.c index 5ccd488842..5ccd488842 100644 --- a/src/mesa/pipe/i965simple/brw_wm_state.c +++ b/src/gallium/drivers/i965simple/brw_wm_state.c diff --git a/src/mesa/pipe/i965simple/brw_wm_surface_state.c b/src/gallium/drivers/i965simple/brw_wm_surface_state.c index d16d919bce..d16d919bce 100644 --- a/src/mesa/pipe/i965simple/brw_wm_surface_state.c +++ b/src/gallium/drivers/i965simple/brw_wm_surface_state.c diff --git a/src/mesa/pipe/softpipe/Makefile b/src/gallium/drivers/softpipe/Makefile index 304632abb2..5479daf8ea 100644 --- a/src/mesa/pipe/softpipe/Makefile +++ b/src/gallium/drivers/softpipe/Makefile @@ -47,7 +47,7 @@ C_SOURCES = \ ASM_SOURCES = -include ../Makefile.template +include ../../Makefile.template symlinks: diff --git a/src/mesa/pipe/softpipe/SConscript b/src/gallium/drivers/softpipe/SConscript index d581ee8d3c..d581ee8d3c 100644 --- a/src/mesa/pipe/softpipe/SConscript +++ b/src/gallium/drivers/softpipe/SConscript diff --git a/src/mesa/pipe/softpipe/sp_clear.c b/src/gallium/drivers/softpipe/sp_clear.c index 8d295a30ca..8d295a30ca 100644 --- a/src/mesa/pipe/softpipe/sp_clear.c +++ b/src/gallium/drivers/softpipe/sp_clear.c diff --git a/src/mesa/pipe/softpipe/sp_clear.h b/src/gallium/drivers/softpipe/sp_clear.h index a8ed1c4ecc..a8ed1c4ecc 100644 --- a/src/mesa/pipe/softpipe/sp_clear.h +++ b/src/gallium/drivers/softpipe/sp_clear.h diff --git a/src/mesa/pipe/softpipe/sp_context.c b/src/gallium/drivers/softpipe/sp_context.c index cea6b90104..5e98f190bb 100644 --- a/src/mesa/pipe/softpipe/sp_context.c +++ b/src/gallium/drivers/softpipe/sp_context.c @@ -29,7 +29,7 @@ * Keith Whitwell <keith@tungstengraphics.com> */ -#include "pipe/draw/draw_context.h" +#include "draw/draw_context.h" #include "pipe/p_defines.h" #include "pipe/p_inlines.h" #include "pipe/p_util.h" diff --git a/src/mesa/pipe/softpipe/sp_context.h b/src/gallium/drivers/softpipe/sp_context.h index 5e24baf938..b70d4fea85 100644 --- a/src/mesa/pipe/softpipe/sp_context.h +++ b/src/gallium/drivers/softpipe/sp_context.h @@ -34,7 +34,7 @@ #include "pipe/p_context.h" #include "pipe/p_defines.h" -#include "pipe/draw/draw_vertex.h" +#include "draw/draw_vertex.h" #include "sp_quad.h" diff --git a/src/mesa/pipe/softpipe/sp_draw_arrays.c b/src/gallium/drivers/softpipe/sp_draw_arrays.c index 71a303a8b5..2049afda34 100644 --- a/src/mesa/pipe/softpipe/sp_draw_arrays.c +++ b/src/gallium/drivers/softpipe/sp_draw_arrays.c @@ -38,7 +38,7 @@ #include "sp_context.h" #include "sp_state.h" -#include "pipe/draw/draw_context.h" +#include "draw/draw_context.h" diff --git a/src/mesa/pipe/softpipe/sp_flush.c b/src/gallium/drivers/softpipe/sp_flush.c index ec6bb4a0dc..2cbd0d7cab 100644 --- a/src/mesa/pipe/softpipe/sp_flush.c +++ b/src/gallium/drivers/softpipe/sp_flush.c @@ -31,6 +31,7 @@ #include "pipe/p_defines.h" +#include "draw/draw_context.h" #include "sp_flush.h" #include "sp_context.h" #include "sp_surface.h" @@ -50,6 +51,8 @@ softpipe_flush( struct pipe_context *pipe, struct softpipe_context *softpipe = softpipe_context(pipe); uint i; + draw_flush(softpipe->draw); + /* - flush the quad pipeline * - flush the texture cache * - flush the render cache diff --git a/src/mesa/pipe/softpipe/sp_flush.h b/src/gallium/drivers/softpipe/sp_flush.h index 34ec617866..34ec617866 100644 --- a/src/mesa/pipe/softpipe/sp_flush.h +++ b/src/gallium/drivers/softpipe/sp_flush.h diff --git a/src/gallium/drivers/softpipe/sp_fs.h b/src/gallium/drivers/softpipe/sp_fs.h new file mode 100644 index 0000000000..4792ace3a3 --- /dev/null +++ b/src/gallium/drivers/softpipe/sp_fs.h @@ -0,0 +1,54 @@ +/************************************************************************** + * + * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas. + * 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 TUNGSTEN GRAPHICS 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. + * + **************************************************************************/ + +/* Authors: Keith Whitwell <keith@tungstengraphics.com> + */ + +#ifndef SP_FS_H +#define SP_FS_H + +struct sp_fragment_shader * +softpipe_create_fs_exec(struct softpipe_context *softpipe, + const struct pipe_shader_state *templ); + +struct sp_fragment_shader * +softpipe_create_fs_sse(struct softpipe_context *softpipe, + const struct pipe_shader_state *templ); + +struct sp_fragment_shader * +softpipe_create_fs_llvm(struct softpipe_context *softpipe, + const struct pipe_shader_state *templ); + +struct tgsi_interp_coef; +struct tgsi_exec_vector; + +void sp_setup_pos_vector(const struct tgsi_interp_coef *coef, + float x, float y, + struct tgsi_exec_vector *quadpos); + + +#endif diff --git a/src/mesa/pipe/softpipe/sp_fs_exec.c b/src/gallium/drivers/softpipe/sp_fs_exec.c index b949492e09..9ad30a7681 100644 --- a/src/mesa/pipe/softpipe/sp_fs_exec.c +++ b/src/gallium/drivers/softpipe/sp_fs_exec.c @@ -36,7 +36,7 @@ #include "pipe/p_defines.h" #include "pipe/p_util.h" #include "pipe/p_inlines.h" -#include "pipe/tgsi/exec/tgsi_exec.h" +#include "tgsi/exec/tgsi_exec.h" struct sp_exec_fragment_shader { struct sp_fragment_shader base; diff --git a/src/mesa/pipe/softpipe/sp_fs_llvm.c b/src/gallium/drivers/softpipe/sp_fs_llvm.c index 9237c1fbda..22da471453 100644 --- a/src/mesa/pipe/softpipe/sp_fs_llvm.c +++ b/src/gallium/drivers/softpipe/sp_fs_llvm.c @@ -38,7 +38,7 @@ #include "pipe/p_defines.h" #include "pipe/p_util.h" #include "pipe/p_inlines.h" -#include "pipe/tgsi/exec/tgsi_sse2.h" +#include "tgsi/exec/tgsi_sse2.h" #if 0 diff --git a/src/mesa/pipe/softpipe/sp_fs_sse.c b/src/gallium/drivers/softpipe/sp_fs_sse.c index 713ece369e..28c5d8c556 100644 --- a/src/mesa/pipe/softpipe/sp_fs_sse.c +++ b/src/gallium/drivers/softpipe/sp_fs_sse.c @@ -36,8 +36,8 @@ #include "pipe/p_defines.h" #include "pipe/p_util.h" #include "pipe/p_inlines.h" -#include "pipe/tgsi/exec/tgsi_exec.h" -#include "pipe/tgsi/exec/tgsi_sse2.h" +#include "tgsi/exec/tgsi_exec.h" +#include "tgsi/exec/tgsi_sse2.h" #if defined(__i386__) || defined(__386__) diff --git a/src/mesa/pipe/softpipe/sp_headers.h b/src/gallium/drivers/softpipe/sp_headers.h index 0ae31d8796..9cf8222133 100644 --- a/src/mesa/pipe/softpipe/sp_headers.h +++ b/src/gallium/drivers/softpipe/sp_headers.h @@ -31,7 +31,7 @@ #ifndef SP_HEADERS_H #define SP_HEADERS_H -#include "pipe/tgsi/exec/tgsi_exec.h" +#include "tgsi/exec/tgsi_exec.h" #define PRIM_POINT 1 #define PRIM_LINE 2 diff --git a/src/mesa/pipe/softpipe/sp_prim_setup.c b/src/gallium/drivers/softpipe/sp_prim_setup.c index 7478b2336b..d73521ccbe 100644 --- a/src/mesa/pipe/softpipe/sp_prim_setup.c +++ b/src/gallium/drivers/softpipe/sp_prim_setup.c @@ -38,8 +38,8 @@ #include "sp_quad.h" #include "sp_state.h" #include "sp_prim_setup.h" -#include "pipe/draw/draw_private.h" -#include "pipe/draw/draw_vertex.h" +#include "draw/draw_private.h" +#include "draw/draw_vertex.h" #include "pipe/p_util.h" #include "pipe/p_shader_tokens.h" @@ -499,7 +499,7 @@ setup_fragcoord_coeff(struct setup_stage *setup) setup->coef[0].a0[2] = setup->posCoef.a0[2]; setup->coef[0].dadx[2] = setup->posCoef.dadx[2]; setup->coef[0].dady[2] = setup->posCoef.dady[2]; - /*w*/ + /*W*/ setup->coef[0].a0[3] = setup->posCoef.a0[3]; setup->coef[0].dadx[3] = setup->posCoef.dadx[3]; setup->coef[0].dady[3] = setup->posCoef.dady[3]; @@ -513,8 +513,9 @@ setup_fragcoord_coeff(struct setup_stage *setup) */ static void setup_tri_coefficients( struct setup_stage *setup ) { - const struct softpipe_context *softpipe = setup->softpipe; + struct softpipe_context *softpipe = setup->softpipe; const struct pipe_shader_state *fs = &softpipe->fs->shader; + const struct vertex_info *vinfo = softpipe_get_vertex_info(softpipe); uint fragSlot; /* z and w are done by linear interpolation: @@ -525,10 +526,10 @@ static void setup_tri_coefficients( struct setup_stage *setup ) /* setup interpolation for all the remaining attributes: */ for (fragSlot = 0; fragSlot < fs->num_inputs; fragSlot++) { - const uint vertSlot = softpipe->vertex_info.src_index[fragSlot]; + const uint vertSlot = vinfo->src_index[fragSlot]; uint j; - switch (softpipe->vertex_info.interp_mode[fragSlot]) { + switch (vinfo->interp_mode[fragSlot]) { case INTERP_CONSTANT: for (j = 0; j < NUM_CHANNELS; j++) const_coeff(setup, &setup->coef[fragSlot], vertSlot, j); @@ -756,8 +757,9 @@ line_persp_coeff(struct setup_stage *setup, static INLINE void setup_line_coefficients(struct setup_stage *setup, struct prim_header *prim) { - const struct softpipe_context *softpipe = setup->softpipe; + struct softpipe_context *softpipe = setup->softpipe; const struct pipe_shader_state *fs = &setup->softpipe->fs->shader; + const struct vertex_info *vinfo = softpipe_get_vertex_info(softpipe); uint fragSlot; /* use setup->vmin, vmax to point to vertices */ @@ -779,10 +781,10 @@ setup_line_coefficients(struct setup_stage *setup, struct prim_header *prim) /* setup interpolation for all the remaining attributes: */ for (fragSlot = 0; fragSlot < fs->num_inputs; fragSlot++) { - const uint vertSlot = softpipe->vertex_info.src_index[fragSlot]; + const uint vertSlot = vinfo->src_index[fragSlot]; uint j; - switch (softpipe->vertex_info.interp_mode[fragSlot]) { + switch (vinfo->interp_mode[fragSlot]) { case INTERP_CONSTANT: for (j = 0; j < NUM_CHANNELS; j++) const_coeff(setup, &setup->coef[fragSlot], vertSlot, j); @@ -978,6 +980,7 @@ setup_point(struct draw_stage *stage, struct prim_header *prim) const boolean round = (boolean) setup->softpipe->rasterizer->point_smooth; const float x = v0->data[0][0]; /* Note: data[0] is always position */ const float y = v0->data[0][1]; + const struct vertex_info *vinfo = softpipe_get_vertex_info(softpipe); uint fragSlot; /* For points, all interpolants are constant-valued. @@ -1003,10 +1006,10 @@ setup_point(struct draw_stage *stage, struct prim_header *prim) const_coeff(setup, &setup->posCoef, 0, 3); for (fragSlot = 0; fragSlot < fs->num_inputs; fragSlot++) { - const uint vertSlot = softpipe->vertex_info.src_index[fragSlot]; + const uint vertSlot = vinfo->src_index[fragSlot]; uint j; - switch (softpipe->vertex_info.interp_mode[fragSlot]) { + switch (vinfo->interp_mode[fragSlot]) { case INTERP_CONSTANT: /* fall-through */ case INTERP_LINEAR: diff --git a/src/mesa/pipe/softpipe/sp_prim_setup.h b/src/gallium/drivers/softpipe/sp_prim_setup.h index f3e8a79dd9..f3e8a79dd9 100644 --- a/src/mesa/pipe/softpipe/sp_prim_setup.h +++ b/src/gallium/drivers/softpipe/sp_prim_setup.h diff --git a/src/mesa/pipe/softpipe/sp_prim_vbuf.c b/src/gallium/drivers/softpipe/sp_prim_vbuf.c index c9089e7eb2..69bea8a8f5 100644 --- a/src/mesa/pipe/softpipe/sp_prim_vbuf.c +++ b/src/gallium/drivers/softpipe/sp_prim_vbuf.c @@ -37,10 +37,11 @@ #include "sp_context.h" +#include "sp_state.h" #include "sp_prim_vbuf.h" -#include "pipe/draw/draw_context.h" -#include "pipe/draw/draw_private.h" -#include "pipe/draw/draw_vbuf.h" +#include "draw/draw_context.h" +#include "draw/draw_private.h" +#include "draw/draw_vbuf.h" #define SP_MAX_VBUF_INDEXES 1024 @@ -73,9 +74,7 @@ static const struct vertex_info * sp_vbuf_get_vertex_info(struct vbuf_render *vbr) { struct softpipe_vbuf_render *cvbr = softpipe_vbuf_render(vbr); - /* XXX check for state changes? */ - assert(!cvbr->softpipe->dirty ); - return &cvbr->softpipe->vertex_info_vbuf; + return softpipe_get_vbuf_vertex_info(cvbr->softpipe); } diff --git a/src/mesa/pipe/softpipe/sp_prim_vbuf.h b/src/gallium/drivers/softpipe/sp_prim_vbuf.h index 1de9cc2a89..1de9cc2a89 100644 --- a/src/mesa/pipe/softpipe/sp_prim_vbuf.h +++ b/src/gallium/drivers/softpipe/sp_prim_vbuf.h diff --git a/src/mesa/pipe/softpipe/sp_quad.c b/src/gallium/drivers/softpipe/sp_quad.c index 6bd468a51c..6bd468a51c 100644 --- a/src/mesa/pipe/softpipe/sp_quad.c +++ b/src/gallium/drivers/softpipe/sp_quad.c diff --git a/src/mesa/pipe/softpipe/sp_quad.h b/src/gallium/drivers/softpipe/sp_quad.h index f1e0281764..f1e0281764 100644 --- a/src/mesa/pipe/softpipe/sp_quad.h +++ b/src/gallium/drivers/softpipe/sp_quad.h diff --git a/src/mesa/pipe/softpipe/sp_quad_alpha_test.c b/src/gallium/drivers/softpipe/sp_quad_alpha_test.c index 4ffeac35e1..4ffeac35e1 100644 --- a/src/mesa/pipe/softpipe/sp_quad_alpha_test.c +++ b/src/gallium/drivers/softpipe/sp_quad_alpha_test.c diff --git a/src/mesa/pipe/softpipe/sp_quad_blend.c b/src/gallium/drivers/softpipe/sp_quad_blend.c index 17f3ecd0b8..17f3ecd0b8 100644 --- a/src/mesa/pipe/softpipe/sp_quad_blend.c +++ b/src/gallium/drivers/softpipe/sp_quad_blend.c diff --git a/src/mesa/pipe/softpipe/sp_quad_bufloop.c b/src/gallium/drivers/softpipe/sp_quad_bufloop.c index 2ae4e22a7d..2ae4e22a7d 100644 --- a/src/mesa/pipe/softpipe/sp_quad_bufloop.c +++ b/src/gallium/drivers/softpipe/sp_quad_bufloop.c diff --git a/src/mesa/pipe/softpipe/sp_quad_colormask.c b/src/gallium/drivers/softpipe/sp_quad_colormask.c index 1f09d900ca..1f09d900ca 100644 --- a/src/mesa/pipe/softpipe/sp_quad_colormask.c +++ b/src/gallium/drivers/softpipe/sp_quad_colormask.c diff --git a/src/mesa/pipe/softpipe/sp_quad_coverage.c b/src/gallium/drivers/softpipe/sp_quad_coverage.c index b3d3fae22f..b3d3fae22f 100644 --- a/src/mesa/pipe/softpipe/sp_quad_coverage.c +++ b/src/gallium/drivers/softpipe/sp_quad_coverage.c diff --git a/src/mesa/pipe/softpipe/sp_quad_depth_test.c b/src/gallium/drivers/softpipe/sp_quad_depth_test.c index a9a0754f27..a9a0754f27 100644 --- a/src/mesa/pipe/softpipe/sp_quad_depth_test.c +++ b/src/gallium/drivers/softpipe/sp_quad_depth_test.c diff --git a/src/mesa/pipe/softpipe/sp_quad_earlyz.c b/src/gallium/drivers/softpipe/sp_quad_earlyz.c index 22ea99049f..22ea99049f 100644 --- a/src/mesa/pipe/softpipe/sp_quad_earlyz.c +++ b/src/gallium/drivers/softpipe/sp_quad_earlyz.c diff --git a/src/mesa/pipe/softpipe/sp_quad_fs.c b/src/gallium/drivers/softpipe/sp_quad_fs.c index cf1b1eff75..cf1b1eff75 100644 --- a/src/mesa/pipe/softpipe/sp_quad_fs.c +++ b/src/gallium/drivers/softpipe/sp_quad_fs.c diff --git a/src/mesa/pipe/softpipe/sp_quad_occlusion.c b/src/gallium/drivers/softpipe/sp_quad_occlusion.c index 54254df1f1..54254df1f1 100644 --- a/src/mesa/pipe/softpipe/sp_quad_occlusion.c +++ b/src/gallium/drivers/softpipe/sp_quad_occlusion.c diff --git a/src/mesa/pipe/softpipe/sp_quad_output.c b/src/gallium/drivers/softpipe/sp_quad_output.c index cfe8f11808..cfe8f11808 100644 --- a/src/mesa/pipe/softpipe/sp_quad_output.c +++ b/src/gallium/drivers/softpipe/sp_quad_output.c diff --git a/src/mesa/pipe/softpipe/sp_quad_stencil.c b/src/gallium/drivers/softpipe/sp_quad_stencil.c index 92a0da0083..92a0da0083 100644 --- a/src/mesa/pipe/softpipe/sp_quad_stencil.c +++ b/src/gallium/drivers/softpipe/sp_quad_stencil.c diff --git a/src/mesa/pipe/softpipe/sp_quad_stipple.c b/src/gallium/drivers/softpipe/sp_quad_stipple.c index 8660432259..8660432259 100644 --- a/src/mesa/pipe/softpipe/sp_quad_stipple.c +++ b/src/gallium/drivers/softpipe/sp_quad_stipple.c diff --git a/src/mesa/pipe/softpipe/sp_query.c b/src/gallium/drivers/softpipe/sp_query.c index 6a8a43aeda..adf9ccf64c 100644 --- a/src/mesa/pipe/softpipe/sp_query.c +++ b/src/gallium/drivers/softpipe/sp_query.c @@ -29,7 +29,7 @@ * Keith Whitwell <keith@tungstengraphics.com> */ -#include "pipe/draw/draw_context.h" +#include "draw/draw_context.h" #include "pipe/p_defines.h" #include "pipe/p_inlines.h" #include "pipe/p_util.h" diff --git a/src/mesa/pipe/softpipe/sp_query.h b/src/gallium/drivers/softpipe/sp_query.h index 05060a4575..05060a4575 100644 --- a/src/mesa/pipe/softpipe/sp_query.h +++ b/src/gallium/drivers/softpipe/sp_query.h diff --git a/src/mesa/pipe/softpipe/sp_state.h b/src/gallium/drivers/softpipe/sp_state.h index 431952f1aa..ef8cf67d4c 100644 --- a/src/mesa/pipe/softpipe/sp_state.h +++ b/src/gallium/drivers/softpipe/sp_state.h @@ -78,6 +78,7 @@ struct sp_fragment_shader { void (*delete)( struct sp_fragment_shader * ); }; +struct vertex_info; /** Subclass of pipe_shader_state */ struct sp_vertex_shader { @@ -181,4 +182,12 @@ softpipe_map_texture_surfaces(struct softpipe_context *sp); void softpipe_unmap_texture_surfaces(struct softpipe_context *sp); + +struct vertex_info * +softpipe_get_vertex_info(struct softpipe_context *softpipe); + +struct vertex_info * +softpipe_get_vbuf_vertex_info(struct softpipe_context *softpipe); + + #endif diff --git a/src/mesa/pipe/softpipe/sp_state_blend.c b/src/gallium/drivers/softpipe/sp_state_blend.c index 2d40d6bd8f..2d40d6bd8f 100644 --- a/src/mesa/pipe/softpipe/sp_state_blend.c +++ b/src/gallium/drivers/softpipe/sp_state_blend.c diff --git a/src/mesa/pipe/softpipe/sp_state_clip.c b/src/gallium/drivers/softpipe/sp_state_clip.c index 08c5f06d05..c797c0dd3b 100644 --- a/src/mesa/pipe/softpipe/sp_state_clip.c +++ b/src/gallium/drivers/softpipe/sp_state_clip.c @@ -29,7 +29,7 @@ */ #include "sp_context.h" #include "sp_state.h" -#include "pipe/draw/draw_context.h" +#include "draw/draw_context.h" void softpipe_set_clip_state( struct pipe_context *pipe, diff --git a/src/gallium/drivers/softpipe/sp_state_derived.c b/src/gallium/drivers/softpipe/sp_state_derived.c new file mode 100644 index 0000000000..9d8fd8b750 --- /dev/null +++ b/src/gallium/drivers/softpipe/sp_state_derived.c @@ -0,0 +1,235 @@ +/************************************************************************** + * + * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas. + * 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 TUNGSTEN GRAPHICS 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. + * + **************************************************************************/ + +#include "pipe/p_util.h" +#include "pipe/p_shader_tokens.h" +#include "draw/draw_context.h" +#include "draw/draw_vertex.h" +#include "draw/draw_private.h" +#include "sp_context.h" +#include "sp_state.h" + + +/** + * Search vertex program's outputs to find a match for the given + * semantic name/index. Return the index of the output slot. + * + * Return 0 if not found. This will cause the fragment program to use + * vertex attrib 0 (position) in the cases where the fragment program + * attempts to use a missing vertex program output. This is an undefined + * condition that users shouldn't hit anyway. + */ +static int +find_vs_output(const struct pipe_shader_state *vs, + uint semantic_name, + uint semantic_index) +{ + uint i; + for (i = 0; i < vs->num_outputs; i++) { + if (vs->output_semantic_name[i] == semantic_name && + vs->output_semantic_index[i] == semantic_index) + return i; + } + return 0; +} + + +/** + * Mark the current vertex layout as "invalid". + * We'll validate the vertex layout later, when we start to actually + * render a point or line or tri. + */ +static void +invalidate_vertex_layout(struct softpipe_context *softpipe) +{ + softpipe->vertex_info.num_attribs = 0; +} + + +/** + * The vertex info describes how to convert the post-transformed vertices + * (simple float[][4]) used by the 'draw' module into vertices for + * rasterization. + * + * This function validates the vertex layout and returns a pointer to a + * vertex_info object. + */ +struct vertex_info * +softpipe_get_vertex_info(struct softpipe_context *softpipe) +{ + struct vertex_info *vinfo = &softpipe->vertex_info; + + if (vinfo->num_attribs == 0) { + /* compute vertex layout now */ + const struct pipe_shader_state *vs = &softpipe->vs->shader; + const struct pipe_shader_state *fs = &softpipe->fs->shader; + const enum interp_mode colorInterp + = softpipe->rasterizer->flatshade ? INTERP_CONSTANT : INTERP_LINEAR; + uint i; + + if (softpipe->vbuf) { + /* if using the post-transform vertex buffer, tell draw_vbuf to + * simply emit the whole post-xform vertex as-is: + */ + struct vertex_info *vinfo_vbuf = &softpipe->vertex_info_vbuf; + vinfo_vbuf->num_attribs = 0; + draw_emit_vertex_attr(vinfo_vbuf, EMIT_ALL, INTERP_NONE, 0); + vinfo_vbuf->size = 4 * vs->num_outputs + + sizeof(struct vertex_header) / 4; + } + + /* + * Loop over fragment shader inputs, searching for the matching output + * from the vertex shader. + */ + vinfo->num_attribs = 0; + for (i = 0; i < fs->num_inputs; i++) { + int src; + switch (fs->input_semantic_name[i]) { + case TGSI_SEMANTIC_POSITION: + src = find_vs_output(vs, TGSI_SEMANTIC_POSITION, 0); + draw_emit_vertex_attr(vinfo, EMIT_4F, INTERP_POS, src); + break; + + case TGSI_SEMANTIC_COLOR: + src = find_vs_output(vs, TGSI_SEMANTIC_COLOR, + fs->input_semantic_index[i]); + draw_emit_vertex_attr(vinfo, EMIT_4F, colorInterp, src); + break; + + case TGSI_SEMANTIC_FOG: + src = find_vs_output(vs, TGSI_SEMANTIC_FOG, 0); + draw_emit_vertex_attr(vinfo, EMIT_4F, INTERP_PERSPECTIVE, src); + break; + + case TGSI_SEMANTIC_GENERIC: + /* this includes texcoords and varying vars */ + src = find_vs_output(vs, TGSI_SEMANTIC_GENERIC, + fs->input_semantic_index[i]); + draw_emit_vertex_attr(vinfo, EMIT_4F, INTERP_PERSPECTIVE, src); + break; + + default: + assert(0); + } + } + + softpipe->psize_slot = find_vs_output(vs, TGSI_SEMANTIC_PSIZE, 0); + if (softpipe->psize_slot > 0) { + draw_emit_vertex_attr(vinfo, EMIT_4F, INTERP_CONSTANT, + softpipe->psize_slot); + } + + draw_compute_vertex_size(vinfo); + } + + return vinfo; +} + + +/** + * Called from vbuf module. + * + * Note that there's actually two different vertex layouts in softpipe. + * + * The normal one is computed in softpipe_get_vertex_info() above and is + * used by the point/line/tri "setup" code. + * + * The other one (this one) is only used by the vbuf module (which is + * not normally used by default but used in testing). For the vbuf module, + * we basically want to pass-through the draw module's vertex layout as-is. + * When the softpipe vbuf code begins drawing, the normal vertex layout + * will come into play again. + */ +struct vertex_info * +softpipe_get_vbuf_vertex_info(struct softpipe_context *softpipe) +{ + (void) softpipe_get_vertex_info(softpipe); + return &softpipe->vertex_info_vbuf; +} + + +/** + * Recompute cliprect from scissor bounds, scissor enable and surface size. + */ +static void +compute_cliprect(struct softpipe_context *sp) +{ + unsigned surfWidth, surfHeight; + + if (sp->framebuffer.num_cbufs > 0) { + surfWidth = sp->framebuffer.cbufs[0]->width; + surfHeight = sp->framebuffer.cbufs[0]->height; + } + else { + /* no surface? */ + surfWidth = sp->scissor.maxx; + surfHeight = sp->scissor.maxy; + } + + if (sp->rasterizer->scissor) { + /* clip to scissor rect */ + sp->cliprect.minx = MAX2(sp->scissor.minx, 0); + sp->cliprect.miny = MAX2(sp->scissor.miny, 0); + sp->cliprect.maxx = MIN2(sp->scissor.maxx, surfWidth); + sp->cliprect.maxy = MIN2(sp->scissor.maxy, surfHeight); + } + else { + /* clip to surface bounds */ + sp->cliprect.minx = 0; + sp->cliprect.miny = 0; + sp->cliprect.maxx = surfWidth; + sp->cliprect.maxy = surfHeight; + } +} + + +/* Hopefully this will remain quite simple, otherwise need to pull in + * something like the state tracker mechanism. + */ +void softpipe_update_derived( struct softpipe_context *softpipe ) +{ + if (softpipe->dirty & (SP_NEW_RASTERIZER | + SP_NEW_FS | + SP_NEW_VS)) + invalidate_vertex_layout( softpipe ); + + if (softpipe->dirty & (SP_NEW_SCISSOR | + SP_NEW_DEPTH_STENCIL_ALPHA | + SP_NEW_FRAMEBUFFER)) + compute_cliprect(softpipe); + + if (softpipe->dirty & (SP_NEW_BLEND | + SP_NEW_DEPTH_STENCIL_ALPHA | + SP_NEW_FRAMEBUFFER | + SP_NEW_RASTERIZER | + SP_NEW_FS | + SP_NEW_QUERY)) + sp_build_quad_pipeline(softpipe); + + softpipe->dirty = 0; +} diff --git a/src/mesa/pipe/softpipe/sp_state_fs.c b/src/gallium/drivers/softpipe/sp_state_fs.c index c43f28583e..b0238f8173 100644 --- a/src/mesa/pipe/softpipe/sp_state_fs.c +++ b/src/gallium/drivers/softpipe/sp_state_fs.c @@ -34,8 +34,8 @@ #include "pipe/p_inlines.h" #include "pipe/p_winsys.h" #include "pipe/p_shader_tokens.h" -#include "pipe/draw/draw_context.h" -#include "pipe/tgsi/util/tgsi_dump.h" +#include "draw/draw_context.h" +#include "tgsi/util/tgsi_dump.h" void * diff --git a/src/mesa/pipe/softpipe/sp_state_rasterizer.c b/src/gallium/drivers/softpipe/sp_state_rasterizer.c index 53755099dd..98e04352db 100644 --- a/src/mesa/pipe/softpipe/sp_state_rasterizer.c +++ b/src/gallium/drivers/softpipe/sp_state_rasterizer.c @@ -29,7 +29,7 @@ #include "pipe/p_util.h" #include "sp_context.h" #include "sp_state.h" -#include "pipe/draw/draw_context.h" +#include "draw/draw_context.h" diff --git a/src/mesa/pipe/softpipe/sp_state_sampler.c b/src/gallium/drivers/softpipe/sp_state_sampler.c index 6a5a643c89..460adccec4 100644 --- a/src/mesa/pipe/softpipe/sp_state_sampler.c +++ b/src/gallium/drivers/softpipe/sp_state_sampler.c @@ -30,11 +30,15 @@ */ #include "pipe/p_util.h" + +#include "draw/draw_context.h" + +#include "sp_context.h" #include "sp_context.h" #include "sp_state.h" #include "sp_texture.h" #include "sp_tile_cache.h" -#include "pipe/draw/draw_context.h" +#include "draw/draw_context.h" diff --git a/src/mesa/pipe/softpipe/sp_state_surface.c b/src/gallium/drivers/softpipe/sp_state_surface.c index e2c6893e9f..e2c6893e9f 100644 --- a/src/mesa/pipe/softpipe/sp_state_surface.c +++ b/src/gallium/drivers/softpipe/sp_state_surface.c diff --git a/src/mesa/pipe/softpipe/sp_state_vertex.c b/src/gallium/drivers/softpipe/sp_state_vertex.c index 09ff540ccf..f01a10de3b 100644 --- a/src/mesa/pipe/softpipe/sp_state_vertex.c +++ b/src/gallium/drivers/softpipe/sp_state_vertex.c @@ -33,7 +33,7 @@ #include "sp_state.h" #include "sp_surface.h" -#include "pipe/draw/draw_context.h" +#include "draw/draw_context.h" void diff --git a/src/mesa/pipe/softpipe/sp_surface.c b/src/gallium/drivers/softpipe/sp_surface.c index 5c6ed3b8d9..653449c4f1 100644 --- a/src/mesa/pipe/softpipe/sp_surface.c +++ b/src/gallium/drivers/softpipe/sp_surface.c @@ -29,7 +29,7 @@ #include "pipe/p_util.h" #include "pipe/p_inlines.h" #include "pipe/p_winsys.h" -#include "pipe/util/p_tile.h" +#include "util/p_tile.h" #include "sp_context.h" #include "sp_surface.h" @@ -54,7 +54,7 @@ sp_surface_copy(struct pipe_context *pipe, dstx, dsty, width, height, pipe_surface_map(src), - do_flip ? -src->pitch : src->pitch, + do_flip ? -(int) src->pitch : src->pitch, srcx, do_flip ? 1 - srcy - height : srcy); pipe_surface_unmap(src); diff --git a/src/mesa/pipe/softpipe/sp_surface.h b/src/gallium/drivers/softpipe/sp_surface.h index 22de3ba43f..22de3ba43f 100644 --- a/src/mesa/pipe/softpipe/sp_surface.h +++ b/src/gallium/drivers/softpipe/sp_surface.h diff --git a/src/mesa/pipe/softpipe/sp_tex_sample.c b/src/gallium/drivers/softpipe/sp_tex_sample.c index 325bdb86da..2f82fd6abe 100644 --- a/src/mesa/pipe/softpipe/sp_tex_sample.c +++ b/src/gallium/drivers/softpipe/sp_tex_sample.c @@ -40,7 +40,7 @@ #include "pipe/p_context.h" #include "pipe/p_defines.h" #include "pipe/p_util.h" -#include "pipe/tgsi/exec/tgsi_exec.h" +#include "tgsi/exec/tgsi_exec.h" /* diff --git a/src/mesa/pipe/softpipe/sp_tex_sample.h b/src/gallium/drivers/softpipe/sp_tex_sample.h index 404bfd0c36..404bfd0c36 100644 --- a/src/mesa/pipe/softpipe/sp_tex_sample.h +++ b/src/gallium/drivers/softpipe/sp_tex_sample.h diff --git a/src/mesa/pipe/softpipe/sp_texture.c b/src/gallium/drivers/softpipe/sp_texture.c index 6de7a9b543..6de7a9b543 100644 --- a/src/mesa/pipe/softpipe/sp_texture.c +++ b/src/gallium/drivers/softpipe/sp_texture.c diff --git a/src/mesa/pipe/softpipe/sp_texture.h b/src/gallium/drivers/softpipe/sp_texture.h index fa646c0de9..fa646c0de9 100644 --- a/src/mesa/pipe/softpipe/sp_texture.h +++ b/src/gallium/drivers/softpipe/sp_texture.h diff --git a/src/mesa/pipe/softpipe/sp_tile_cache.c b/src/gallium/drivers/softpipe/sp_tile_cache.c index 1597361b82..dde3fabc81 100644 --- a/src/mesa/pipe/softpipe/sp_tile_cache.c +++ b/src/gallium/drivers/softpipe/sp_tile_cache.c @@ -34,7 +34,7 @@ #include "pipe/p_util.h" #include "pipe/p_inlines.h" -#include "pipe/util/p_tile.h" +#include "util/p_tile.h" #include "sp_context.h" #include "sp_surface.h" #include "sp_tile_cache.h" diff --git a/src/mesa/pipe/softpipe/sp_tile_cache.h b/src/gallium/drivers/softpipe/sp_tile_cache.h index 7fd1081286..7fd1081286 100644 --- a/src/mesa/pipe/softpipe/sp_tile_cache.h +++ b/src/gallium/drivers/softpipe/sp_tile_cache.h diff --git a/src/mesa/pipe/softpipe/sp_winsys.h b/src/gallium/drivers/softpipe/sp_winsys.h index d6b379f58c..d6b379f58c 100644 --- a/src/mesa/pipe/softpipe/sp_winsys.h +++ b/src/gallium/drivers/softpipe/sp_winsys.h diff --git a/src/mesa/pipe/p_compiler.h b/src/gallium/include/pipe/p_compiler.h index 30cd729c56..30cd729c56 100644 --- a/src/mesa/pipe/p_compiler.h +++ b/src/gallium/include/pipe/p_compiler.h diff --git a/src/mesa/pipe/p_context.h b/src/gallium/include/pipe/p_context.h index 39f95695fb..39f95695fb 100644 --- a/src/mesa/pipe/p_context.h +++ b/src/gallium/include/pipe/p_context.h diff --git a/src/mesa/pipe/p_debug.h b/src/gallium/include/pipe/p_debug.h index 2a11627b36..2a11627b36 100644 --- a/src/mesa/pipe/p_debug.h +++ b/src/gallium/include/pipe/p_debug.h diff --git a/src/mesa/pipe/p_defines.h b/src/gallium/include/pipe/p_defines.h index 0bf53ecb79..0bf53ecb79 100644 --- a/src/mesa/pipe/p_defines.h +++ b/src/gallium/include/pipe/p_defines.h diff --git a/src/mesa/pipe/p_format.h b/src/gallium/include/pipe/p_format.h index c9ad324315..c9ad324315 100644 --- a/src/mesa/pipe/p_format.h +++ b/src/gallium/include/pipe/p_format.h diff --git a/src/mesa/pipe/p_inlines.h b/src/gallium/include/pipe/p_inlines.h index ebf6ed86bc..ebf6ed86bc 100644 --- a/src/mesa/pipe/p_inlines.h +++ b/src/gallium/include/pipe/p_inlines.h diff --git a/src/mesa/pipe/p_shader_tokens.h b/src/gallium/include/pipe/p_shader_tokens.h index 3ce35310f6..3ce35310f6 100644 --- a/src/mesa/pipe/p_shader_tokens.h +++ b/src/gallium/include/pipe/p_shader_tokens.h diff --git a/src/mesa/pipe/p_state.h b/src/gallium/include/pipe/p_state.h index 1082343e2f..1082343e2f 100644 --- a/src/mesa/pipe/p_state.h +++ b/src/gallium/include/pipe/p_state.h diff --git a/src/mesa/pipe/p_thread.h b/src/gallium/include/pipe/p_thread.h index cd432c547c..cd432c547c 100644 --- a/src/mesa/pipe/p_thread.h +++ b/src/gallium/include/pipe/p_thread.h diff --git a/src/mesa/pipe/p_util.h b/src/gallium/include/pipe/p_util.h index a8938a7e43..d7da2801c9 100644 --- a/src/mesa/pipe/p_util.h +++ b/src/gallium/include/pipe/p_util.h @@ -185,12 +185,12 @@ align_free(void *ptr) /** - * Duplicate of a block of memory + * Duplicate a block of memory. */ static INLINE void * mem_dup(const void *src, uint size) { - void *dup = malloc(size); + void *dup = MALLOC(size); if (dup) memcpy(dup, src, size); return dup; diff --git a/src/mesa/pipe/p_winsys.h b/src/gallium/include/pipe/p_winsys.h index 1e81eebd78..1e81eebd78 100644 --- a/src/mesa/pipe/p_winsys.h +++ b/src/gallium/include/pipe/p_winsys.h diff --git a/src/gallium/state_trackers/README b/src/gallium/state_trackers/README new file mode 100644 index 0000000000..28dd27bbd5 --- /dev/null +++ b/src/gallium/state_trackers/README @@ -0,0 +1,2 @@ +This directory is a placeholder for incubating state-trackers. Mesa's +state-tracker is in src/mesa. diff --git a/src/gallium/winsys/dri/Makefile b/src/gallium/winsys/dri/Makefile new file mode 100644 index 0000000000..f466ce6c3c --- /dev/null +++ b/src/gallium/winsys/dri/Makefile @@ -0,0 +1,38 @@ +# src/mesa/drivers/dri/Makefile + +TOP = ../../../.. + +include $(TOP)/configs/current + + + +default: $(TOP)/$(LIB_DIR) subdirs + + +$(TOP)/$(LIB_DIR): + -mkdir $(TOP)/$(LIB_DIR) + + +subdirs: + @for dir in $(DRI_DIRS) ; do \ + if [ -d $$dir ] ; then \ + (cd $$dir && $(MAKE)) || exit 1 ; \ + fi \ + done + + +install: + @for dir in $(DRI_DIRS) ; do \ + if [ -d $$dir ] ; then \ + (cd $$dir && $(MAKE) install) || exit 1 ; \ + fi \ + done + + +clean: + @for dir in $(DRI_DIRS) ; do \ + if [ -d $$dir ] ; then \ + (cd $$dir && $(MAKE) clean) ; \ + fi \ + done + -rm -f common/*.o diff --git a/src/gallium/winsys/dri/Makefile.template b/src/gallium/winsys/dri/Makefile.template new file mode 100644 index 0000000000..b96305c094 --- /dev/null +++ b/src/gallium/winsys/dri/Makefile.template @@ -0,0 +1,113 @@ +# -*-makefile-*- + +MESA_MODULES = $(TOP)/src/mesa/libmesa.a + +COMMON_GALLIUM_SOURCES = \ + $(TOP)/src/mesa/drivers/dri/common/utils.c \ + $(TOP)/src/mesa/drivers/dri/common/vblank.c \ + $(TOP)/src/mesa/drivers/dri/common/dri_util.c \ + $(TOP)/src/mesa/drivers/dri/common/xmlconfig.c + +COMMON_SOURCES = $(COMMON_GALLIUM_SOURCES) \ + $(TOP)/src/mesa/drivers/common/driverfuncs.c \ + $(TOP)/src/mesa/drivers/dri/common/texmem.c \ + $(TOP)/src/mesa/drivers/dri/common/drirenderbuffer.c + +COMMON_BM_SOURCES = \ + $(TOP)/src/mesa/drivers/dri/common/dri_bufmgr.c \ + $(TOP)/src/mesa/drivers/dri/common/dri_drmpool.c + + +ifeq ($(WINDOW_SYSTEM),dri) +WINOBJ= +WINLIB= +INCLUDES = $(SHARED_INCLUDES) $(EXPAT_INCLUDES) + +OBJECTS = $(C_SOURCES:.c=.o) \ + $(ASM_SOURCES:.S=.o) + +else +# miniglx +WINOBJ= +WINLIB=-L$(MESA)/src/glx/mini +MINIGLX_INCLUDES = -I$(TOP)/src/glx/mini +INCLUDES = $(MINIGLX_INCLUDES) \ + $(SHARED_INCLUDES) \ + $(PCIACCESS_CFLAGS) + +OBJECTS = $(C_SOURCES:.c=.o) \ + $(MINIGLX_SOURCES:.c=.o) \ + $(ASM_SOURCES:.S=.o) +endif + + +### Include directories +SHARED_INCLUDES = \ + -I. \ + -I$(TOP)/src/mesa/drivers/dri/common \ + -Iserver \ + -I$(TOP)/include \ + -I$(TOP)/include/GL/internal \ + -I$(TOP)/src/gallium/include \ + -I$(TOP)/src/gallium/aux \ + -I$(TOP)/src/gallium/drivers \ + -I$(TOP)/src/mesa \ + -I$(TOP)/src/mesa/main \ + -I$(TOP)/src/mesa/glapi \ + -I$(TOP)/src/mesa/math \ + -I$(TOP)/src/mesa/transform \ + -I$(TOP)/src/mesa/shader \ + -I$(TOP)/src/mesa/swrast \ + -I$(TOP)/src/mesa/swrast_setup \ + -I$(TOP)/src/egl/main \ + -I$(TOP)/src/egl/drivers/dri \ + $(LIBDRM_CFLAGS) + + +##### RULES ##### + +.c.o: + $(CC) -c $(INCLUDES) $(CFLAGS) $(DRIVER_DEFINES) $< -o $@ + +.S.o: + $(CC) -c $(INCLUDES) $(CFLAGS) $(DRIVER_DEFINES) $< -o $@ + + +##### TARGETS ##### + +default: depend symlinks $(LIBNAME) $(TOP)/$(LIB_DIR)/$(LIBNAME) + + +$(LIBNAME): $(OBJECTS) $(MESA_MODULES) $(PIPE_DRIVERS) $(WINOBJ) Makefile $(TOP)/src/mesa/drivers/dri/Makefile.template + $(TOP)/bin/mklib -noprefix -o $@ \ + $(OBJECTS) $(PIPE_DRIVERS) $(MESA_MODULES) $(WINOBJ) $(DRI_LIB_DEPS) + + +$(TOP)/$(LIB_DIR)/$(LIBNAME): $(LIBNAME) + $(INSTALL) $(LIBNAME) $(TOP)/$(LIB_DIR) + + +depend: $(C_SOURCES) $(ASM_SOURCES) $(SYMLINKS) + rm -f depend + touch depend + $(MKDEP) $(MKDEP_OPTIONS) $(DRIVER_DEFINES) $(INCLUDES) $(C_SOURCES) \ + $(ASM_SOURCES) 2> /dev/null + + +# Emacs tags +tags: + etags `find . -name \*.[ch]` `find ../include` + + +# Remove .o and backup files +clean: + -rm -f *.o */*.o *~ *.so *~ server/*.o $(SYMLINKS) + -rm -f depend depend.bak + + +install: $(LIBNAME) + $(INSTALL) -d $(DRI_DRIVER_INSTALL_DIR) + $(INSTALL) -m 755 $(LIBNAME) $(DRI_DRIVER_INSTALL_DIR) + + +include depend diff --git a/src/mesa/drivers/dri/intel_winsys/Makefile b/src/gallium/winsys/dri/intel/Makefile index 9ae0f01325..40654bb2ac 100644 --- a/src/mesa/drivers/dri/intel_winsys/Makefile +++ b/src/gallium/winsys/dri/intel/Makefile @@ -7,8 +7,8 @@ LIBNAME = i915tex_dri.so MINIGLX_SOURCES = server/intel_dri.c PIPE_DRIVERS = \ - $(TOP)/src/mesa/pipe/softpipe/libsoftpipe.a \ - $(TOP)/src/mesa/pipe/i915simple/libi915simple.a + $(TOP)/src/gallium/drivers/softpipe/libsoftpipe.a \ + $(TOP)/src/gallium/drivers/i915simple/libi915simple.a DRIVER_SOURCES = \ intel_winsys_pipe.c \ @@ -28,11 +28,11 @@ C_SOURCES = \ ASM_SOURCES = -DRIVER_DEFINES = -I../intel $(shell pkg-config libdrm --atleast-version=2.3.1 \ +DRIVER_DEFINES = -I$(TOP)/src/mesa/drivers/dri/intel $(shell pkg-config libdrm --atleast-version=2.3.1 \ && echo "-DDRM_VBLANK_FLIP=DRM_VBLANK_FLIP") include ../Makefile.template -intel_tex_layout.o: ../intel/intel_tex_layout.c +intel_tex_layout.o: $(TOP)/src/mesa/drivers/dri/intel/intel_tex_layout.c symlinks: diff --git a/src/mesa/drivers/dri/intel_winsys/SConscript b/src/gallium/winsys/dri/intel/SConscript index a7cc10450e..a7cc10450e 100644 --- a/src/mesa/drivers/dri/intel_winsys/SConscript +++ b/src/gallium/winsys/dri/intel/SConscript diff --git a/src/mesa/drivers/dri/intel_winsys/intel_batchbuffer.c b/src/gallium/winsys/dri/intel/intel_batchbuffer.c index 49e04d81ec..49e04d81ec 100644 --- a/src/mesa/drivers/dri/intel_winsys/intel_batchbuffer.c +++ b/src/gallium/winsys/dri/intel/intel_batchbuffer.c diff --git a/src/mesa/drivers/dri/intel_winsys/intel_batchbuffer.h b/src/gallium/winsys/dri/intel/intel_batchbuffer.h index 82feafa21f..82feafa21f 100644 --- a/src/mesa/drivers/dri/intel_winsys/intel_batchbuffer.h +++ b/src/gallium/winsys/dri/intel/intel_batchbuffer.h diff --git a/src/mesa/drivers/dri/intel_winsys/intel_batchpool.c b/src/gallium/winsys/dri/intel/intel_batchpool.c index 33b56817f6..33b56817f6 100644 --- a/src/mesa/drivers/dri/intel_winsys/intel_batchpool.c +++ b/src/gallium/winsys/dri/intel/intel_batchpool.c diff --git a/src/mesa/drivers/dri/intel_winsys/intel_batchpool.h b/src/gallium/winsys/dri/intel/intel_batchpool.h index f6a95723bc..f6a95723bc 100644 --- a/src/mesa/drivers/dri/intel_winsys/intel_batchpool.h +++ b/src/gallium/winsys/dri/intel/intel_batchpool.h diff --git a/src/mesa/drivers/dri/intel_winsys/intel_context.c b/src/gallium/winsys/dri/intel/intel_context.c index c033f2a592..c033f2a592 100644 --- a/src/mesa/drivers/dri/intel_winsys/intel_context.c +++ b/src/gallium/winsys/dri/intel/intel_context.c diff --git a/src/mesa/drivers/dri/intel_winsys/intel_context.h b/src/gallium/winsys/dri/intel/intel_context.h index b01370c049..b01370c049 100644 --- a/src/mesa/drivers/dri/intel_winsys/intel_context.h +++ b/src/gallium/winsys/dri/intel/intel_context.h diff --git a/src/mesa/drivers/dri/intel_winsys/intel_lock.c b/src/gallium/winsys/dri/intel/intel_lock.c index 70aa7ea5f4..70aa7ea5f4 100644 --- a/src/mesa/drivers/dri/intel_winsys/intel_lock.c +++ b/src/gallium/winsys/dri/intel/intel_lock.c diff --git a/src/mesa/drivers/dri/intel_winsys/intel_reg.h b/src/gallium/winsys/dri/intel/intel_reg.h index f37c24fda9..f37c24fda9 100644 --- a/src/mesa/drivers/dri/intel_winsys/intel_reg.h +++ b/src/gallium/winsys/dri/intel/intel_reg.h diff --git a/src/mesa/drivers/dri/intel_winsys/intel_screen.c b/src/gallium/winsys/dri/intel/intel_screen.c index 9e31c013a9..9e31c013a9 100644 --- a/src/mesa/drivers/dri/intel_winsys/intel_screen.c +++ b/src/gallium/winsys/dri/intel/intel_screen.c diff --git a/src/mesa/drivers/dri/intel_winsys/intel_screen.h b/src/gallium/winsys/dri/intel/intel_screen.h index 3396f9e564..3396f9e564 100644 --- a/src/mesa/drivers/dri/intel_winsys/intel_screen.h +++ b/src/gallium/winsys/dri/intel/intel_screen.h diff --git a/src/mesa/drivers/dri/intel_winsys/intel_swapbuffers.c b/src/gallium/winsys/dri/intel/intel_swapbuffers.c index 454cd71f6c..56b86d6a63 100644 --- a/src/mesa/drivers/dri/intel_winsys/intel_swapbuffers.c +++ b/src/gallium/winsys/dri/intel/intel_swapbuffers.c @@ -220,6 +220,7 @@ intelSwapBuffers(__DRIdrawablePrivate * dPriv) if (back_surf) { st_notify_swapbuffers(intel_fb->stfb); intelDisplaySurface(dPriv, back_surf, NULL); + st_notify_swapbuffers_complete(intel_fb->stfb); } } diff --git a/src/mesa/drivers/dri/intel_winsys/intel_swapbuffers.h b/src/gallium/winsys/dri/intel/intel_swapbuffers.h index 7ae5fd15a5..7ae5fd15a5 100644 --- a/src/mesa/drivers/dri/intel_winsys/intel_swapbuffers.h +++ b/src/gallium/winsys/dri/intel/intel_swapbuffers.h diff --git a/src/mesa/drivers/dri/intel_winsys/intel_winsys.h b/src/gallium/winsys/dri/intel/intel_winsys.h index ffc40782be..ffc40782be 100644 --- a/src/mesa/drivers/dri/intel_winsys/intel_winsys.h +++ b/src/gallium/winsys/dri/intel/intel_winsys.h diff --git a/src/mesa/drivers/dri/intel_winsys/intel_winsys_i915.c b/src/gallium/winsys/dri/intel/intel_winsys_i915.c index 1ba6a9e1b2..0ed3890e93 100644 --- a/src/mesa/drivers/dri/intel_winsys/intel_winsys_i915.c +++ b/src/gallium/winsys/dri/intel/intel_winsys_i915.c @@ -39,7 +39,7 @@ #include "intel_winsys.h" #include "pipe/p_util.h" -#include "pipe/i915simple/i915_winsys.h" +#include "i915simple/i915_winsys.h" struct intel_i915_winsys { diff --git a/src/mesa/drivers/dri/intel_winsys/intel_winsys_pipe.c b/src/gallium/winsys/dri/intel/intel_winsys_pipe.c index 789a386500..789a386500 100644 --- a/src/mesa/drivers/dri/intel_winsys/intel_winsys_pipe.c +++ b/src/gallium/winsys/dri/intel/intel_winsys_pipe.c diff --git a/src/mesa/drivers/dri/intel_winsys/intel_winsys_softpipe.c b/src/gallium/winsys/dri/intel/intel_winsys_softpipe.c index cec3437831..9e483bdc9f 100644 --- a/src/mesa/drivers/dri/intel_winsys/intel_winsys_softpipe.c +++ b/src/gallium/winsys/dri/intel/intel_winsys_softpipe.c @@ -34,7 +34,7 @@ #include "pipe/p_defines.h" #include "pipe/p_util.h" #include "pipe/p_format.h" -#include "pipe/softpipe/sp_winsys.h" +#include "softpipe/sp_winsys.h" struct intel_softpipe_winsys { diff --git a/src/mesa/drivers/dri/intel_winsys/server/i830_common.h b/src/gallium/winsys/dri/intel/server/i830_common.h index d4d58886ce..d4d58886ce 100644 --- a/src/mesa/drivers/dri/intel_winsys/server/i830_common.h +++ b/src/gallium/winsys/dri/intel/server/i830_common.h diff --git a/src/mesa/drivers/dri/intel_winsys/server/i830_dri.h b/src/gallium/winsys/dri/intel/server/i830_dri.h index c2a3af8cbf..c2a3af8cbf 100644 --- a/src/mesa/drivers/dri/intel_winsys/server/i830_dri.h +++ b/src/gallium/winsys/dri/intel/server/i830_dri.h diff --git a/src/mesa/drivers/dri/intel_winsys/server/intel.h b/src/gallium/winsys/dri/intel/server/intel.h index 6ea72499c1..6ea72499c1 100644 --- a/src/mesa/drivers/dri/intel_winsys/server/intel.h +++ b/src/gallium/winsys/dri/intel/server/intel.h diff --git a/src/mesa/drivers/dri/intel_winsys/server/intel_dri.c b/src/gallium/winsys/dri/intel/server/intel_dri.c index e49c4214ad..e49c4214ad 100644 --- a/src/mesa/drivers/dri/intel_winsys/server/intel_dri.c +++ b/src/gallium/winsys/dri/intel/server/intel_dri.c diff --git a/src/mesa/pipe/xlib/brw_aub.c b/src/gallium/winsys/xlib/brw_aub.c index 541d50c6e4..541d50c6e4 100644 --- a/src/mesa/pipe/xlib/brw_aub.c +++ b/src/gallium/winsys/xlib/brw_aub.c diff --git a/src/mesa/pipe/xlib/brw_aub.h b/src/gallium/winsys/xlib/brw_aub.h index f5c60c7be2..f5c60c7be2 100644 --- a/src/mesa/pipe/xlib/brw_aub.h +++ b/src/gallium/winsys/xlib/brw_aub.h diff --git a/src/mesa/pipe/xlib/fakeglx.c b/src/gallium/winsys/xlib/fakeglx.c index 902a755075..902a755075 100644 --- a/src/mesa/pipe/xlib/fakeglx.c +++ b/src/gallium/winsys/xlib/fakeglx.c diff --git a/src/mesa/pipe/xlib/glxapi.c b/src/gallium/winsys/xlib/glxapi.c index c2ccce6f52..c2ccce6f52 100644 --- a/src/mesa/pipe/xlib/glxapi.c +++ b/src/gallium/winsys/xlib/glxapi.c diff --git a/src/mesa/pipe/xlib/glxapi.h b/src/gallium/winsys/xlib/glxapi.h index 37de81e55a..37de81e55a 100644 --- a/src/mesa/pipe/xlib/glxapi.h +++ b/src/gallium/winsys/xlib/glxapi.h diff --git a/src/mesa/pipe/xlib/glxheader.h b/src/gallium/winsys/xlib/glxheader.h index a402191f13..a402191f13 100644 --- a/src/mesa/pipe/xlib/glxheader.h +++ b/src/gallium/winsys/xlib/glxheader.h diff --git a/src/mesa/pipe/xlib/realglx.c b/src/gallium/winsys/xlib/realglx.c index 30adb7465b..30adb7465b 100644 --- a/src/mesa/pipe/xlib/realglx.c +++ b/src/gallium/winsys/xlib/realglx.c diff --git a/src/mesa/pipe/xlib/realglx.h b/src/gallium/winsys/xlib/realglx.h index 150129db68..150129db68 100644 --- a/src/mesa/pipe/xlib/realglx.h +++ b/src/gallium/winsys/xlib/realglx.h diff --git a/src/mesa/pipe/xlib/xfonts.c b/src/gallium/winsys/xlib/xfonts.c index d72c600bd1..d72c600bd1 100644 --- a/src/mesa/pipe/xlib/xfonts.c +++ b/src/gallium/winsys/xlib/xfonts.c diff --git a/src/mesa/pipe/xlib/xfonts.h b/src/gallium/winsys/xlib/xfonts.h index e36f42f817..e36f42f817 100644 --- a/src/mesa/pipe/xlib/xfonts.h +++ b/src/gallium/winsys/xlib/xfonts.h diff --git a/src/mesa/pipe/xlib/xm_api.c b/src/gallium/winsys/xlib/xm_api.c index e5fef1d7a8..e5fef1d7a8 100644 --- a/src/mesa/pipe/xlib/xm_api.c +++ b/src/gallium/winsys/xlib/xm_api.c diff --git a/src/mesa/pipe/xlib/xm_image.c b/src/gallium/winsys/xlib/xm_image.c index 087b4e4c3a..087b4e4c3a 100644 --- a/src/mesa/pipe/xlib/xm_image.c +++ b/src/gallium/winsys/xlib/xm_image.c diff --git a/src/mesa/pipe/xlib/xm_image.h b/src/gallium/winsys/xlib/xm_image.h index 2a5e0f3777..2a5e0f3777 100644 --- a/src/mesa/pipe/xlib/xm_image.h +++ b/src/gallium/winsys/xlib/xm_image.h diff --git a/src/mesa/pipe/xlib/xm_winsys.c b/src/gallium/winsys/xlib/xm_winsys.c index c3cd22eea3..8da596d419 100644 --- a/src/mesa/pipe/xlib/xm_winsys.c +++ b/src/gallium/winsys/xlib/xm_winsys.c @@ -41,11 +41,11 @@ #include "pipe/p_context.h" #include "pipe/p_util.h" #include "pipe/p_inlines.h" -#include "pipe/softpipe/sp_winsys.h" +#include "softpipe/sp_winsys.h" #ifdef GALLIUM_CELL -#include "pipe/cell/ppu/cell_context.h" -#include "pipe/cell/ppu/cell_winsys.h" +#include "cell/ppu/cell_context.h" +#include "cell/ppu/cell_winsys.h" #else #define TILE_SIZE 32 /* avoid compilation errors */ #endif diff --git a/src/mesa/pipe/xlib/xm_winsys_aub.c b/src/gallium/winsys/xlib/xm_winsys_aub.c index bf41570257..dbfd37bda2 100644 --- a/src/mesa/pipe/xlib/xm_winsys_aub.c +++ b/src/gallium/winsys/xlib/xm_winsys_aub.c @@ -39,7 +39,7 @@ #include "pipe/p_winsys.h" #include "pipe/p_util.h" #include "pipe/p_inlines.h" -#include "pipe/i965simple/brw_winsys.h" +#include "i965simple/brw_winsys.h" #include "brw_aub.h" #include "xm_winsys_aub.h" diff --git a/src/mesa/pipe/xlib/xm_winsys_aub.h b/src/gallium/winsys/xlib/xm_winsys_aub.h index 7bee199116..7bee199116 100644 --- a/src/mesa/pipe/xlib/xm_winsys_aub.h +++ b/src/gallium/winsys/xlib/xm_winsys_aub.h diff --git a/src/mesa/pipe/xlib/xmesaP.h b/src/gallium/winsys/xlib/xmesaP.h index fa8d1f14b9..fa8d1f14b9 100644 --- a/src/mesa/pipe/xlib/xmesaP.h +++ b/src/gallium/winsys/xlib/xmesaP.h diff --git a/src/mesa/Makefile b/src/mesa/Makefile index 720f1b2e02..561608fedd 100644 --- a/src/mesa/Makefile +++ b/src/mesa/Makefile @@ -12,16 +12,16 @@ GL_TINY = 0$(MESA_MAJOR)0$(MESA_MINOR)0$(MESA_TINY) PIPE_LIB = \ - $(TOP)/src/mesa/pipe/softpipe/libsoftpipe.a \ - $(TOP)/src/mesa/pipe/i965simple/libi965simple.a + $(TOP)/src/gallium/drivers/softpipe/libsoftpipe.a \ + $(TOP)/src/gallium/drivers/i965simple/libi965simple.a ifeq ($(CONFIG_NAME), linux-cell) -CELL_LIB = $(TOP)/src/mesa/pipe/cell/ppu/libcell.a -CELL_LIB_SPU = $(TOP)/src/mesa/pipe/cell/spu/g3d_spu.a +CELL_LIB = $(TOP)/src/gallium/drivers/cell/ppu/libcell.a +CELL_LIB_SPU = $(TOP)/src/gallium/drivers/cell/spu/g3d_spu.a endif ifeq ($(CONFIG_NAME), linux-llvm) -LLVM_LIB = $(TOP)/src/mesa/pipe/llvm/libgallivm.a +LLVM_LIB = $(TOP)/src/gallium/aux/llvm/libgallivm.a endif .SUFFIXES : .cpp @@ -71,7 +71,7 @@ libmesa.a: $(SOLO_OBJECTS) fi linux-solo: depend subdirs libmesa.a - cd drivers/dri ; $(MAKE) + cd $(TOP)/src/gallium/winsys/dri ; $(MAKE) ##################################################################### @@ -165,7 +165,6 @@ depend: $(ALL_SOURCES) subdirs: @ (cd x86 ; $(MAKE)) @ (cd x86-64 ; $(MAKE)) - (cd pipe ; $(MAKE)) install: default $(INSTALL) -d $(INSTALL_DIR)/include/GL @@ -178,7 +177,7 @@ install: default $(INSTALL) $(TOP)/$(LIB_DIR)/libOSMesa* $(INSTALL_DIR)/$(LIB_DIR); \ fi @if [ "${DRIVER_DIRS}" = "dri" ] ; then \ - cd drivers/dri ; $(MAKE) install ; \ + cd $(TOP)/gallium/winsys/dri ; $(MAKE) install ; \ fi ## NOT INSTALLED YET: @@ -198,7 +197,6 @@ clean: (cd drivers/dri && $(MAKE) clean) (cd x86 && $(MAKE) clean) (cd x86-64 && $(MAKE) clean) - (cd pipe ; $(MAKE) clean ) include depend diff --git a/src/mesa/drivers/x11/xm_api.c b/src/mesa/drivers/x11/xm_api.c index 08c98eab48..18b033666f 100644 --- a/src/mesa/drivers/x11/xm_api.c +++ b/src/mesa/drivers/x11/xm_api.c @@ -85,7 +85,7 @@ #include "state_tracker/st_public.h" #include "state_tracker/st_context.h" -#include "pipe/softpipe/sp_context.h" +#include "softpipe/sp_context.h" #include "pipe/p_defines.h" /** diff --git a/src/mesa/drivers/x11/xm_dd.c b/src/mesa/drivers/x11/xm_dd.c index 8ae243ae66..34287effe1 100644 --- a/src/mesa/drivers/x11/xm_dd.c +++ b/src/mesa/drivers/x11/xm_dd.c @@ -53,7 +53,7 @@ #include "tnl/tnl.h" #include "tnl/t_context.h" -#include "pipe/softpipe/sp_context.h" +#include "softpipe/sp_context.h" #include "state_tracker/st_public.h" #include "state_tracker/st_context.h" #include "state_tracker/st_draw.h" diff --git a/src/mesa/drivers/x11/xm_surface.c b/src/mesa/drivers/x11/xm_surface.c index 5533158ece..81616b92d9 100644 --- a/src/mesa/drivers/x11/xm_surface.c +++ b/src/mesa/drivers/x11/xm_surface.c @@ -45,10 +45,10 @@ #include "pipe/p_context.h" #include "pipe/p_defines.h" #include "pipe/p_winsys.h" -#include "pipe/softpipe/sp_context.h" -#include "pipe/softpipe/sp_clear.h" -#include "pipe/softpipe/sp_tile_cache.h" -#include "pipe/softpipe/sp_surface.h" +#include "softpipe/sp_context.h" +#include "softpipe/sp_clear.h" +#include "softpipe/sp_tile_cache.h" +#include "softpipe/sp_surface.h" #include "state_tracker/st_context.h" diff --git a/src/mesa/drivers/x11/xm_winsys.c b/src/mesa/drivers/x11/xm_winsys.c index a690df2772..2edc697693 100644 --- a/src/mesa/drivers/x11/xm_winsys.c +++ b/src/mesa/drivers/x11/xm_winsys.c @@ -38,7 +38,7 @@ #include "main/macros.h" #include "pipe/p_winsys.h" -#include "pipe/softpipe/sp_winsys.h" +#include "softpipe/sp_winsys.h" /** diff --git a/src/mesa/drivers/x11/xmesaP.h b/src/mesa/drivers/x11/xmesaP.h index 4709d63394..fd2dfcd79a 100644 --- a/src/mesa/drivers/x11/xmesaP.h +++ b/src/mesa/drivers/x11/xmesaP.h @@ -37,8 +37,8 @@ #include "xm_image.h" #endif #include "state_tracker/st_cb_fbo.h" -#include "pipe/softpipe/sp_context.h" -#include "pipe/softpipe/sp_surface.h" +#include "softpipe/sp_context.h" +#include "softpipe/sp_surface.h" extern _glthread_Mutex _xmesa_lock; diff --git a/src/mesa/pipe/cell/spu/spu_vertex_fetch.c b/src/mesa/pipe/cell/spu/spu_vertex_fetch.c deleted file mode 100644 index 6e86a919ce..0000000000 --- a/src/mesa/pipe/cell/spu/spu_vertex_fetch.c +++ /dev/null @@ -1,393 +0,0 @@ -/************************************************************************** - * - * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas. - * 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 TUNGSTEN GRAPHICS 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. - * - **************************************************************************/ - - /* - * Authors: - * Keith Whitwell <keith@tungstengraphics.com> - */ - -#include <spu_mfcio.h> -#include <transpose_matrix4x4.h> - -#include "pipe/p_util.h" -#include "pipe/p_state.h" -#include "pipe/p_shader_tokens.h" -#include "spu_exec.h" -#include "spu_vertex_shader.h" -#include "spu_main.h" - - -#define DRAW_DBG 0 - - -static const vec_float4 defaults = { 0.0, 0.0, 0.0, 1.0 }; - -/** - * Fetch a float[4] vertex attribute from memory, doing format/type - * conversion as needed. - * - * This is probably needed/dupliocated elsewhere, eg format - * conversion, texture sampling etc. - */ -#define FETCH_ATTRIB( NAME, SZ, CVT ) \ -static qword \ -fetch_##NAME(const void *ptr) \ -{ \ - vec_float4 attrib = defaults; \ - int i; \ - \ - for (i = 0; i < SZ; i++) { \ - attrib = spu_insert(CVT, attrib, i); \ - } \ - return (qword) attrib; \ -} - -#define CVT_64_FLOAT (float) ((double *) ptr)[i] -#define CVT_32_FLOAT ((float *) ptr)[i] - -#define CVT_8_USCALED (float) ((unsigned char *) ptr)[i] -#define CVT_16_USCALED (float) ((unsigned short *) ptr)[i] -#define CVT_32_USCALED (float) ((unsigned int *) ptr)[i] - -#define CVT_8_SSCALED (float) ((char *) ptr)[i] -#define CVT_16_SSCALED (float) ((short *) ptr)[i] -#define CVT_32_SSCALED (float) ((int *) ptr)[i] - -#define CVT_8_UNORM (float) ((unsigned char *) ptr)[i] / 255.0f -#define CVT_16_UNORM (float) ((unsigned short *) ptr)[i] / 65535.0f -#define CVT_32_UNORM (float) ((unsigned int *) ptr)[i] / 4294967295.0f - -#define CVT_8_SNORM (float) ((char *) ptr)[i] / 127.0f -#define CVT_16_SNORM (float) ((short *) ptr)[i] / 32767.0f -#define CVT_32_SNORM (float) ((int *) ptr)[i] / 2147483647.0f - -FETCH_ATTRIB( R64G64B64A64_FLOAT, 4, CVT_64_FLOAT ) -FETCH_ATTRIB( R64G64B64_FLOAT, 3, CVT_64_FLOAT ) -FETCH_ATTRIB( R64G64_FLOAT, 2, CVT_64_FLOAT ) -FETCH_ATTRIB( R64_FLOAT, 1, CVT_64_FLOAT ) - -FETCH_ATTRIB( R32G32B32A32_FLOAT, 4, CVT_32_FLOAT ) -FETCH_ATTRIB( R32G32B32_FLOAT, 3, CVT_32_FLOAT ) -FETCH_ATTRIB( R32G32_FLOAT, 2, CVT_32_FLOAT ) -FETCH_ATTRIB( R32_FLOAT, 1, CVT_32_FLOAT ) - -FETCH_ATTRIB( R32G32B32A32_USCALED, 4, CVT_32_USCALED ) -FETCH_ATTRIB( R32G32B32_USCALED, 3, CVT_32_USCALED ) -FETCH_ATTRIB( R32G32_USCALED, 2, CVT_32_USCALED ) -FETCH_ATTRIB( R32_USCALED, 1, CVT_32_USCALED ) - -FETCH_ATTRIB( R32G32B32A32_SSCALED, 4, CVT_32_SSCALED ) -FETCH_ATTRIB( R32G32B32_SSCALED, 3, CVT_32_SSCALED ) -FETCH_ATTRIB( R32G32_SSCALED, 2, CVT_32_SSCALED ) -FETCH_ATTRIB( R32_SSCALED, 1, CVT_32_SSCALED ) - -FETCH_ATTRIB( R32G32B32A32_UNORM, 4, CVT_32_UNORM ) -FETCH_ATTRIB( R32G32B32_UNORM, 3, CVT_32_UNORM ) -FETCH_ATTRIB( R32G32_UNORM, 2, CVT_32_UNORM ) -FETCH_ATTRIB( R32_UNORM, 1, CVT_32_UNORM ) - -FETCH_ATTRIB( R32G32B32A32_SNORM, 4, CVT_32_SNORM ) -FETCH_ATTRIB( R32G32B32_SNORM, 3, CVT_32_SNORM ) -FETCH_ATTRIB( R32G32_SNORM, 2, CVT_32_SNORM ) -FETCH_ATTRIB( R32_SNORM, 1, CVT_32_SNORM ) - -FETCH_ATTRIB( R16G16B16A16_USCALED, 4, CVT_16_USCALED ) -FETCH_ATTRIB( R16G16B16_USCALED, 3, CVT_16_USCALED ) -FETCH_ATTRIB( R16G16_USCALED, 2, CVT_16_USCALED ) -FETCH_ATTRIB( R16_USCALED, 1, CVT_16_USCALED ) - -FETCH_ATTRIB( R16G16B16A16_SSCALED, 4, CVT_16_SSCALED ) -FETCH_ATTRIB( R16G16B16_SSCALED, 3, CVT_16_SSCALED ) -FETCH_ATTRIB( R16G16_SSCALED, 2, CVT_16_SSCALED ) -FETCH_ATTRIB( R16_SSCALED, 1, CVT_16_SSCALED ) - -FETCH_ATTRIB( R16G16B16A16_UNORM, 4, CVT_16_UNORM ) -FETCH_ATTRIB( R16G16B16_UNORM, 3, CVT_16_UNORM ) -FETCH_ATTRIB( R16G16_UNORM, 2, CVT_16_UNORM ) -FETCH_ATTRIB( R16_UNORM, 1, CVT_16_UNORM ) - -FETCH_ATTRIB( R16G16B16A16_SNORM, 4, CVT_16_SNORM ) -FETCH_ATTRIB( R16G16B16_SNORM, 3, CVT_16_SNORM ) -FETCH_ATTRIB( R16G16_SNORM, 2, CVT_16_SNORM ) -FETCH_ATTRIB( R16_SNORM, 1, CVT_16_SNORM ) - -FETCH_ATTRIB( R8G8B8A8_USCALED, 4, CVT_8_USCALED ) -FETCH_ATTRIB( R8G8B8_USCALED, 3, CVT_8_USCALED ) -FETCH_ATTRIB( R8G8_USCALED, 2, CVT_8_USCALED ) -FETCH_ATTRIB( R8_USCALED, 1, CVT_8_USCALED ) - -FETCH_ATTRIB( R8G8B8A8_SSCALED, 4, CVT_8_SSCALED ) -FETCH_ATTRIB( R8G8B8_SSCALED, 3, CVT_8_SSCALED ) -FETCH_ATTRIB( R8G8_SSCALED, 2, CVT_8_SSCALED ) -FETCH_ATTRIB( R8_SSCALED, 1, CVT_8_SSCALED ) - -FETCH_ATTRIB( R8G8B8A8_UNORM, 4, CVT_8_UNORM ) -FETCH_ATTRIB( R8G8B8_UNORM, 3, CVT_8_UNORM ) -FETCH_ATTRIB( R8G8_UNORM, 2, CVT_8_UNORM ) -FETCH_ATTRIB( R8_UNORM, 1, CVT_8_UNORM ) - -FETCH_ATTRIB( R8G8B8A8_SNORM, 4, CVT_8_SNORM ) -FETCH_ATTRIB( R8G8B8_SNORM, 3, CVT_8_SNORM ) -FETCH_ATTRIB( R8G8_SNORM, 2, CVT_8_SNORM ) -FETCH_ATTRIB( R8_SNORM, 1, CVT_8_SNORM ) - -FETCH_ATTRIB( A8R8G8B8_UNORM, 4, CVT_8_UNORM ) -//FETCH_ATTRIB( R8G8B8A8_UNORM, 4, CVT_8_UNORM ) - - - -static spu_fetch_func get_fetch_func( enum pipe_format format ) -{ -#if 0 - { - char tmp[80]; - pf_sprint_name(tmp, format); - _mesa_printf("%s: %s\n", __FUNCTION__, tmp); - } -#endif - - switch (format) { - case PIPE_FORMAT_R64_FLOAT: - return fetch_R64_FLOAT; - case PIPE_FORMAT_R64G64_FLOAT: - return fetch_R64G64_FLOAT; - case PIPE_FORMAT_R64G64B64_FLOAT: - return fetch_R64G64B64_FLOAT; - case PIPE_FORMAT_R64G64B64A64_FLOAT: - return fetch_R64G64B64A64_FLOAT; - - case PIPE_FORMAT_R32_FLOAT: - return fetch_R32_FLOAT; - case PIPE_FORMAT_R32G32_FLOAT: - return fetch_R32G32_FLOAT; - case PIPE_FORMAT_R32G32B32_FLOAT: - return fetch_R32G32B32_FLOAT; - case PIPE_FORMAT_R32G32B32A32_FLOAT: - return fetch_R32G32B32A32_FLOAT; - - case PIPE_FORMAT_R32_UNORM: - return fetch_R32_UNORM; - case PIPE_FORMAT_R32G32_UNORM: - return fetch_R32G32_UNORM; - case PIPE_FORMAT_R32G32B32_UNORM: - return fetch_R32G32B32_UNORM; - case PIPE_FORMAT_R32G32B32A32_UNORM: - return fetch_R32G32B32A32_UNORM; - - case PIPE_FORMAT_R32_USCALED: - return fetch_R32_USCALED; - case PIPE_FORMAT_R32G32_USCALED: - return fetch_R32G32_USCALED; - case PIPE_FORMAT_R32G32B32_USCALED: - return fetch_R32G32B32_USCALED; - case PIPE_FORMAT_R32G32B32A32_USCALED: - return fetch_R32G32B32A32_USCALED; - - case PIPE_FORMAT_R32_SNORM: - return fetch_R32_SNORM; - case PIPE_FORMAT_R32G32_SNORM: - return fetch_R32G32_SNORM; - case PIPE_FORMAT_R32G32B32_SNORM: - return fetch_R32G32B32_SNORM; - case PIPE_FORMAT_R32G32B32A32_SNORM: - return fetch_R32G32B32A32_SNORM; - - case PIPE_FORMAT_R32_SSCALED: - return fetch_R32_SSCALED; - case PIPE_FORMAT_R32G32_SSCALED: - return fetch_R32G32_SSCALED; - case PIPE_FORMAT_R32G32B32_SSCALED: - return fetch_R32G32B32_SSCALED; - case PIPE_FORMAT_R32G32B32A32_SSCALED: - return fetch_R32G32B32A32_SSCALED; - - case PIPE_FORMAT_R16_UNORM: - return fetch_R16_UNORM; - case PIPE_FORMAT_R16G16_UNORM: - return fetch_R16G16_UNORM; - case PIPE_FORMAT_R16G16B16_UNORM: - return fetch_R16G16B16_UNORM; - case PIPE_FORMAT_R16G16B16A16_UNORM: - return fetch_R16G16B16A16_UNORM; - - case PIPE_FORMAT_R16_USCALED: - return fetch_R16_USCALED; - case PIPE_FORMAT_R16G16_USCALED: - return fetch_R16G16_USCALED; - case PIPE_FORMAT_R16G16B16_USCALED: - return fetch_R16G16B16_USCALED; - case PIPE_FORMAT_R16G16B16A16_USCALED: - return fetch_R16G16B16A16_USCALED; - - case PIPE_FORMAT_R16_SNORM: - return fetch_R16_SNORM; - case PIPE_FORMAT_R16G16_SNORM: - return fetch_R16G16_SNORM; - case PIPE_FORMAT_R16G16B16_SNORM: - return fetch_R16G16B16_SNORM; - case PIPE_FORMAT_R16G16B16A16_SNORM: - return fetch_R16G16B16A16_SNORM; - - case PIPE_FORMAT_R16_SSCALED: - return fetch_R16_SSCALED; - case PIPE_FORMAT_R16G16_SSCALED: - return fetch_R16G16_SSCALED; - case PIPE_FORMAT_R16G16B16_SSCALED: - return fetch_R16G16B16_SSCALED; - case PIPE_FORMAT_R16G16B16A16_SSCALED: - return fetch_R16G16B16A16_SSCALED; - - case PIPE_FORMAT_R8_UNORM: - return fetch_R8_UNORM; - case PIPE_FORMAT_R8G8_UNORM: - return fetch_R8G8_UNORM; - case PIPE_FORMAT_R8G8B8_UNORM: - return fetch_R8G8B8_UNORM; - case PIPE_FORMAT_R8G8B8A8_UNORM: - return fetch_R8G8B8A8_UNORM; - - case PIPE_FORMAT_R8_USCALED: - return fetch_R8_USCALED; - case PIPE_FORMAT_R8G8_USCALED: - return fetch_R8G8_USCALED; - case PIPE_FORMAT_R8G8B8_USCALED: - return fetch_R8G8B8_USCALED; - case PIPE_FORMAT_R8G8B8A8_USCALED: - return fetch_R8G8B8A8_USCALED; - - case PIPE_FORMAT_R8_SNORM: - return fetch_R8_SNORM; - case PIPE_FORMAT_R8G8_SNORM: - return fetch_R8G8_SNORM; - case PIPE_FORMAT_R8G8B8_SNORM: - return fetch_R8G8B8_SNORM; - case PIPE_FORMAT_R8G8B8A8_SNORM: - return fetch_R8G8B8A8_SNORM; - - case PIPE_FORMAT_R8_SSCALED: - return fetch_R8_SSCALED; - case PIPE_FORMAT_R8G8_SSCALED: - return fetch_R8G8_SSCALED; - case PIPE_FORMAT_R8G8B8_SSCALED: - return fetch_R8G8B8_SSCALED; - case PIPE_FORMAT_R8G8B8A8_SSCALED: - return fetch_R8G8B8A8_SSCALED; - - case PIPE_FORMAT_A8R8G8B8_UNORM: - return fetch_A8R8G8B8_UNORM; - - case 0: - return NULL; /* not sure why this is needed */ - - default: - assert(0); - return NULL; - } -} - - -/** - * Fetch vertex attributes for 'count' vertices. - */ -static void generic_vertex_fetch(struct spu_vs_context *draw, - struct spu_exec_machine *machine, - const unsigned *elts, - unsigned count) -{ - unsigned nr_attrs = draw->vertex_fetch.nr_attrs; - unsigned attr; - - assert(count <= 4); - - wait_on_mask(1 << TAG_VERTEX_BUFFER); - -#if DRAW_DBG - printf("SPU: %s count = %u, nr_attrs = %u\n", - __FUNCTION__, count, nr_attrs); -#endif - - /* loop over vertex attributes (vertex shader inputs) - */ - for (attr = 0; attr < nr_attrs; attr++) { - const unsigned pitch = draw->vertex_fetch.pitch[attr]; - const uint64_t src = draw->vertex_fetch.src_ptr[attr]; - const spu_fetch_func fetch = draw->vertex_fetch.fetch[attr]; - unsigned i; - qword p[4]; - - - /* Fetch four attributes for four vertices. - * - * Could fetch directly into AOS format, but this is meant to be - * a prototype for an sse implementation, which would have - * difficulties doing that. - */ - for (i = 0; i < count; i++) { - uint8_t buffer[32] ALIGN16_ATTRIB; - const uint64_t addr = src + (elts[i] * pitch); - const unsigned size = ((addr & 0x0f) == 0) ? 16 : 32; - -#if DRAW_DBG - printf("SPU: fetching = 0x%llx\n", addr); -#endif - mfc_get(buffer, addr & ~0x0f, size, TAG_VERTEX_BUFFER, 0, 0); - wait_on_mask(1 << TAG_VERTEX_BUFFER); - - p[i] = (*fetch)(buffer + (addr & 0x0f)); - } - - /* Be nice and zero out any missing vertices: - */ - for (/* empty */; i < 4; i++) - p[i] = si_xor(p[i], p[i]); - - /* Transpose/swizzle into vector-friendly format. Currently - * assuming that all vertex shader inputs are float[4], but this - * isn't true -- if the vertex shader only wants tex0.xy, we - * could optimize for that. - * - * To do so fully without codegen would probably require an - * excessive number of fetch functions, but we could at least - * minimize the transpose step: - */ - _transpose_matrix4x4(&machine->Inputs[attr].xyzw[0].q, p); - } -} - - -void spu_update_vertex_fetch( struct spu_vs_context *draw ) -{ - unsigned i; - - - for (i = 0; i < draw->vertex_fetch.nr_attrs; i++) { - draw->vertex_fetch.fetch[i] = - get_fetch_func(draw->vertex_fetch.format[i]); - } - - draw->vertex_fetch.fetch_func = generic_vertex_fetch; -} diff --git a/src/mesa/pipe/llvm/instructionssoa.cpp b/src/mesa/pipe/llvm/instructionssoa.cpp deleted file mode 100644 index 0c2032e56f..0000000000 --- a/src/mesa/pipe/llvm/instructionssoa.cpp +++ /dev/null @@ -1,46 +0,0 @@ -#include "instructionssoa.h" - -InstructionsSoa::InstructionsSoa(llvm::Module *mod, llvm::Function *func, - llvm::BasicBlock *block, StorageSoa *storage) - : m_builder(block), - m_idx(0) -{ -} - -std::vector<llvm::Value*> InstructionsSoa::add(const std::vector<llvm::Value*> in1, - const std::vector<llvm::Value*> in2) -{ - std::vector<llvm::Value*> res(4); - - res[0] = m_builder.CreateAdd(in1[0], in2[0], name("addx")); - res[1] = m_builder.CreateAdd(in1[1], in2[1], name("addy")); - res[2] = m_builder.CreateAdd(in1[2], in2[2], name("addz")); - res[3] = m_builder.CreateAdd(in1[3], in2[3], name("addw")); - - return res; -} - -std::vector<llvm::Value*> InstructionsSoa::mul(const std::vector<llvm::Value*> in1, - const std::vector<llvm::Value*> in2) -{ - std::vector<llvm::Value*> res(4); - - res[0] = m_builder.CreateMul(in1[0], in2[0], name("mulx")); - res[1] = m_builder.CreateMul(in1[1], in2[1], name("muly")); - res[2] = m_builder.CreateMul(in1[2], in2[2], name("mulz")); - res[3] = m_builder.CreateMul(in1[3], in2[3], name("mulw")); - - return res; -} - -void InstructionsSoa::end() -{ - m_builder.CreateRetVoid(); -} - -const char * InstructionsSoa::name(const char *prefix) const -{ - ++m_idx; - snprintf(m_name, 32, "%s%d", prefix, m_idx); - return m_name; -} diff --git a/src/mesa/pipe/llvm/llvm_base_shader.cpp b/src/mesa/pipe/llvm/llvm_base_shader.cpp deleted file mode 100644 index 90a25a440a..0000000000 --- a/src/mesa/pipe/llvm/llvm_base_shader.cpp +++ /dev/null @@ -1,833 +0,0 @@ -// Generated by llvm2cpp - DO NOT MODIFY! - - -Module* createBaseShader() { - // Module Construction - Module* mod = new Module("Shader"); - mod->setDataLayout("e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128"); - mod->setTargetTriple("i686-pc-linux-gnu"); - - // Type Definitions - std::vector<const Type*>StructTy_struct_ShaderInput_fields; - VectorType* VectorTy_1 = VectorType::get(Type::FloatTy, 4); - - PointerType* PointerTy_0 = PointerType::get(VectorTy_1, 0); - - StructTy_struct_ShaderInput_fields.push_back(PointerTy_0); - StructTy_struct_ShaderInput_fields.push_back(PointerTy_0); - StructTy_struct_ShaderInput_fields.push_back(PointerTy_0); - StructTy_struct_ShaderInput_fields.push_back(PointerTy_0); - StructTy_struct_ShaderInput_fields.push_back(IntegerType::get(32)); - StructType* StructTy_struct_ShaderInput = StructType::get(StructTy_struct_ShaderInput_fields, /*isPacked=*/false); - mod->addTypeName("struct.ShaderInput", StructTy_struct_ShaderInput); - - OpaqueType* OpaqueTy_struct_pipe_sampler_state = OpaqueType::get(); - mod->addTypeName("struct.pipe_sampler_state", OpaqueTy_struct_pipe_sampler_state); - - OpaqueType* OpaqueTy_struct_softpipe_tile_cache = OpaqueType::get(); - mod->addTypeName("struct.softpipe_tile_cache", OpaqueTy_struct_softpipe_tile_cache); - - std::vector<const Type*>StructTy_struct_tgsi_sampler_fields; - PointerType* PointerTy_2 = PointerType::get(OpaqueTy_struct_pipe_sampler_state, 0); - - StructTy_struct_tgsi_sampler_fields.push_back(PointerTy_2); - std::vector<const Type*>FuncTy_4_args; - PATypeHolder StructTy_struct_tgsi_sampler_fwd = OpaqueType::get(); - PointerType* PointerTy_5 = PointerType::get(StructTy_struct_tgsi_sampler_fwd, 0); - - FuncTy_4_args.push_back(PointerTy_5); - PointerType* PointerTy_6 = PointerType::get(Type::FloatTy, 0); - - FuncTy_4_args.push_back(PointerTy_6); - FuncTy_4_args.push_back(PointerTy_6); - FuncTy_4_args.push_back(PointerTy_6); - FuncTy_4_args.push_back(Type::FloatTy); - ArrayType* ArrayTy_8 = ArrayType::get(Type::FloatTy, 4); - - PointerType* PointerTy_7 = PointerType::get(ArrayTy_8, 0); - - FuncTy_4_args.push_back(PointerTy_7); - FunctionType* FuncTy_4 = FunctionType::get( - /*Result=*/Type::VoidTy, - /*Params=*/FuncTy_4_args, - /*isVarArg=*/false); - - PointerType* PointerTy_3 = PointerType::get(FuncTy_4, 0); - - StructTy_struct_tgsi_sampler_fields.push_back(PointerTy_3); - PointerType* PointerTy_9 = PointerType::get(IntegerType::get(8), 0); - - StructTy_struct_tgsi_sampler_fields.push_back(PointerTy_9); - PointerType* PointerTy_10 = PointerType::get(OpaqueTy_struct_softpipe_tile_cache, 0); - - StructTy_struct_tgsi_sampler_fields.push_back(PointerTy_10); - StructType* StructTy_struct_tgsi_sampler = StructType::get(StructTy_struct_tgsi_sampler_fields, /*isPacked=*/false); - mod->addTypeName("struct.tgsi_sampler", StructTy_struct_tgsi_sampler); - cast<OpaqueType>(StructTy_struct_tgsi_sampler_fwd.get())->refineAbstractTypeTo(StructTy_struct_tgsi_sampler); - StructTy_struct_tgsi_sampler = cast<StructType>(StructTy_struct_tgsi_sampler_fwd.get()); - - - std::vector<const Type*>FuncTy_11_args; - ArrayType* ArrayTy_13 = ArrayType::get(VectorTy_1, 16); - - PointerType* PointerTy_12 = PointerType::get(ArrayTy_13, 0); - - FuncTy_11_args.push_back(PointerTy_12); - ArrayType* ArrayTy_15 = ArrayType::get(ArrayTy_8, 16); - - PointerType* PointerTy_14 = PointerType::get(ArrayTy_15, 0); - - FuncTy_11_args.push_back(PointerTy_14); - FuncTy_11_args.push_back(IntegerType::get(32)); - FuncTy_11_args.push_back(IntegerType::get(32)); - FunctionType* FuncTy_11 = FunctionType::get( - /*Result=*/Type::VoidTy, - /*Params=*/FuncTy_11_args, - /*isVarArg=*/false); - - std::vector<const Type*>FuncTy_16_args; - FuncTy_16_args.push_back(PointerTy_0); - FuncTy_16_args.push_back(PointerTy_7); - FuncTy_16_args.push_back(IntegerType::get(32)); - FunctionType* FuncTy_16 = FunctionType::get( - /*Result=*/Type::VoidTy, - /*Params=*/FuncTy_16_args, - /*isVarArg=*/false); - - std::vector<const Type*>FuncTy_17_args; - FuncTy_17_args.push_back(PointerTy_7); - FuncTy_17_args.push_back(PointerTy_0); - FuncTy_17_args.push_back(IntegerType::get(32)); - FunctionType* FuncTy_17 = FunctionType::get( - /*Result=*/Type::VoidTy, - /*Params=*/FuncTy_17_args, - /*isVarArg=*/false); - - std::vector<const Type*>FuncTy_18_args; - FuncTy_18_args.push_back(PointerTy_9); - FuncTy_18_args.push_back(PointerTy_9); - FuncTy_18_args.push_back(PointerTy_7); - FuncTy_18_args.push_back(IntegerType::get(32)); - FuncTy_18_args.push_back(IntegerType::get(32)); - FuncTy_18_args.push_back(IntegerType::get(32)); - FuncTy_18_args.push_back(IntegerType::get(32)); - FunctionType* FuncTy_18 = FunctionType::get( - /*Result=*/Type::VoidTy, - /*Params=*/FuncTy_18_args, - /*isVarArg=*/false); - - ArrayType* ArrayTy_20 = ArrayType::get(VectorTy_1, 32); - - PointerType* PointerTy_19 = PointerType::get(ArrayTy_20, 0); - - ArrayType* ArrayTy_22 = ArrayType::get(VectorTy_1, 128); - - PointerType* PointerTy_21 = PointerType::get(ArrayTy_22, 0); - - PointerType* PointerTy_23 = PointerType::get(StructTy_struct_ShaderInput, 0); - - PointerType* PointerTy_24 = PointerType::get(PointerTy_0, 0); - - std::vector<const Type*>FuncTy_26_args; - FuncTy_26_args.push_back(PointerTy_23); - FunctionType* FuncTy_26 = FunctionType::get( - /*Result=*/Type::VoidTy, - /*Params=*/FuncTy_26_args, - /*isVarArg=*/false); - - PointerType* PointerTy_25 = PointerType::get(FuncTy_26, 0); - - std::vector<const Type*>FuncTy_27_args; - FuncTy_27_args.push_back(Type::FloatTy); - FuncTy_27_args.push_back(Type::FloatTy); - FuncTy_27_args.push_back(PointerTy_12); - FuncTy_27_args.push_back(PointerTy_12); - FuncTy_27_args.push_back(IntegerType::get(32)); - FuncTy_27_args.push_back(PointerTy_7); - FuncTy_27_args.push_back(IntegerType::get(32)); - FuncTy_27_args.push_back(PointerTy_5); - FunctionType* FuncTy_27 = FunctionType::get( - /*Result=*/IntegerType::get(32), - /*Params=*/FuncTy_27_args, - /*isVarArg=*/false); - - PointerType* PointerTy_28 = PointerType::get(IntegerType::get(32), 0); - - - // Function Declarations - - Function* func_from_array = new Function( - /*Type=*/FuncTy_11, - /*Linkage=*/GlobalValue::ExternalLinkage, - /*Name=*/"from_array", mod); - func_from_array->setCallingConv(CallingConv::C); - const ParamAttrsList *func_from_array_PAL = 0; - { - ParamAttrsVector Attrs; - ParamAttrsWithIndex PAWI; - PAWI.index = 0; PAWI.attrs = 0 | ParamAttr::NoUnwind; - Attrs.push_back(PAWI); - func_from_array_PAL = ParamAttrsList::get(Attrs); - - } - func_from_array->setParamAttrs(func_from_array_PAL); - - Function* func_from_consts = new Function( - /*Type=*/FuncTy_16, - /*Linkage=*/GlobalValue::ExternalLinkage, - /*Name=*/"from_consts", mod); - func_from_consts->setCallingConv(CallingConv::C); - const ParamAttrsList *func_from_consts_PAL = 0; - { - ParamAttrsVector Attrs; - ParamAttrsWithIndex PAWI; - PAWI.index = 0; PAWI.attrs = 0 | ParamAttr::NoUnwind; - Attrs.push_back(PAWI); - func_from_consts_PAL = ParamAttrsList::get(Attrs); - - } - func_from_consts->setParamAttrs(func_from_consts_PAL); - - Function* func_to_array = new Function( - /*Type=*/FuncTy_17, - /*Linkage=*/GlobalValue::ExternalLinkage, - /*Name=*/"to_array", mod); - func_to_array->setCallingConv(CallingConv::C); - const ParamAttrsList *func_to_array_PAL = 0; - { - ParamAttrsVector Attrs; - ParamAttrsWithIndex PAWI; - PAWI.index = 0; PAWI.attrs = 0 | ParamAttr::NoUnwind; - Attrs.push_back(PAWI); - func_to_array_PAL = ParamAttrsList::get(Attrs); - - } - func_to_array->setParamAttrs(func_to_array_PAL); - - Function* func_run_vertex_shader = new Function( - /*Type=*/FuncTy_18, - /*Linkage=*/GlobalValue::ExternalLinkage, - /*Name=*/"run_vertex_shader", mod); - func_run_vertex_shader->setCallingConv(CallingConv::C); - const ParamAttrsList *func_run_vertex_shader_PAL = 0; - func_run_vertex_shader->setParamAttrs(func_run_vertex_shader_PAL); - - Function* func_execute_shader = new Function( - /*Type=*/FuncTy_26, - /*Linkage=*/GlobalValue::ExternalLinkage, - /*Name=*/"execute_shader", mod); // (external, no body) - func_execute_shader->setCallingConv(CallingConv::C); - const ParamAttrsList *func_execute_shader_PAL = 0; - func_execute_shader->setParamAttrs(func_execute_shader_PAL); - - Function* func_run_fragment_shader = new Function( - /*Type=*/FuncTy_27, - /*Linkage=*/GlobalValue::ExternalLinkage, - /*Name=*/"run_fragment_shader", mod); - func_run_fragment_shader->setCallingConv(CallingConv::C); - const ParamAttrsList *func_run_fragment_shader_PAL = 0; - func_run_fragment_shader->setParamAttrs(func_run_fragment_shader_PAL); - - // Global Variable Declarations - - - // Constant Definitions - Constant* const_int32_29 = Constant::getNullValue(IntegerType::get(32)); - ConstantInt* const_int32_30 = ConstantInt::get(APInt(32, "-1", 10)); - ConstantInt* const_int32_31 = ConstantInt::get(APInt(32, "1", 10)); - UndefValue* const_packed_32 = UndefValue::get(VectorTy_1); - ConstantInt* const_int32_33 = ConstantInt::get(APInt(32, "2", 10)); - ConstantInt* const_int32_34 = ConstantInt::get(APInt(32, "3", 10)); - ConstantInt* const_int32_35 = ConstantInt::get(APInt(32, "4", 10)); - - // Global Variable Definitions - - // Function Definitions - - // Function: from_array (func_from_array) - { - Function::arg_iterator args = func_from_array->arg_begin(); - Value* ptr_res = args++; - ptr_res->setName("res"); - Value* ptr_ainputs = args++; - ptr_ainputs->setName("ainputs"); - Value* int32_count = args++; - int32_count->setName("count"); - Value* int32_num_attribs = args++; - int32_num_attribs->setName("num_attribs"); - - BasicBlock* label_entry = new BasicBlock("entry",func_from_array,0); - BasicBlock* label_forcond2_preheader_split = new BasicBlock("forcond2.preheader.split",func_from_array,0); - BasicBlock* label_forcond2 = new BasicBlock("forcond2",func_from_array,0); - BasicBlock* label_forbody6 = new BasicBlock("forbody6",func_from_array,0); - BasicBlock* label_forinc57 = new BasicBlock("forinc57",func_from_array,0); - BasicBlock* label_afterfor60 = new BasicBlock("afterfor60",func_from_array,0); - - // Block entry (label_entry) - ICmpInst* int1_cmp = new ICmpInst(ICmpInst::ICMP_SGT, int32_count, const_int32_29, "cmp", label_entry); - ICmpInst* int1_cmp5 = new ICmpInst(ICmpInst::ICMP_SGT, int32_num_attribs, const_int32_29, "cmp5", label_entry); - BinaryOperator* int1_bothcond = BinaryOperator::create(Instruction::And, int1_cmp, int1_cmp5, "bothcond", label_entry); - new BranchInst(label_forcond2_preheader_split, label_afterfor60, int1_bothcond, label_entry); - - // Block forcond2.preheader.split (label_forcond2_preheader_split) - BinaryOperator* int32_tmp21 = BinaryOperator::create(Instruction::Add, int32_count, const_int32_30, "tmp21", label_forcond2_preheader_split); - ICmpInst* int1_tmp22 = new ICmpInst(ICmpInst::ICMP_SLT, int32_tmp21, const_int32_29, "tmp22", label_forcond2_preheader_split); - SelectInst* int32_tmp25 = new SelectInst(int1_tmp22, const_int32_31, int32_count, "tmp25", label_forcond2_preheader_split); - new BranchInst(label_forcond2, label_forcond2_preheader_split); - - // Block forcond2 (label_forcond2) - Argument* fwdref_38 = new Argument(IntegerType::get(32)); - PHINode* int32_i_0_reg2mem_0 = new PHINode(IntegerType::get(32), "i.0.reg2mem.0", label_forcond2); - int32_i_0_reg2mem_0->reserveOperandSpace(2); - int32_i_0_reg2mem_0->addIncoming(const_int32_29, label_forcond2_preheader_split); - int32_i_0_reg2mem_0->addIncoming(fwdref_38, label_forinc57); - - Argument* fwdref_39 = new Argument(VectorTy_1); - PHINode* packed_vec_1_reg2mem_0 = new PHINode(VectorTy_1, "vec.1.reg2mem.0", label_forcond2); - packed_vec_1_reg2mem_0->reserveOperandSpace(2); - packed_vec_1_reg2mem_0->addIncoming(const_packed_32, label_forcond2_preheader_split); - packed_vec_1_reg2mem_0->addIncoming(fwdref_39, label_forinc57); - - BinaryOperator* int32_tmp = BinaryOperator::create(Instruction::Add, int32_num_attribs, const_int32_30, "tmp", label_forcond2); - ICmpInst* int1_tmp18 = new ICmpInst(ICmpInst::ICMP_SLT, int32_tmp, const_int32_29, "tmp18", label_forcond2); - SelectInst* int32_tmp19 = new SelectInst(int1_tmp18, const_int32_31, int32_num_attribs, "tmp19", label_forcond2); - new BranchInst(label_forbody6, label_forcond2); - - // Block forbody6 (label_forbody6) - Argument* fwdref_41 = new Argument(IntegerType::get(32)); - PHINode* int32_j_0_reg2mem_0 = new PHINode(IntegerType::get(32), "j.0.reg2mem.0", label_forbody6); - int32_j_0_reg2mem_0->reserveOperandSpace(2); - int32_j_0_reg2mem_0->addIncoming(const_int32_29, label_forcond2); - int32_j_0_reg2mem_0->addIncoming(fwdref_41, label_forbody6); - - PHINode* packed_vec_0_reg2mem_0 = new PHINode(VectorTy_1, "vec.0.reg2mem.0", label_forbody6); - packed_vec_0_reg2mem_0->reserveOperandSpace(2); - packed_vec_0_reg2mem_0->addIncoming(packed_vec_1_reg2mem_0, label_forcond2); - packed_vec_0_reg2mem_0->addIncoming(fwdref_39, label_forbody6); - - std::vector<Value*> ptr_arraydecay11_indices; - ptr_arraydecay11_indices.push_back(int32_i_0_reg2mem_0); - ptr_arraydecay11_indices.push_back(int32_j_0_reg2mem_0); - ptr_arraydecay11_indices.push_back(const_int32_29); - Instruction* ptr_arraydecay11 = new GetElementPtrInst(ptr_ainputs, ptr_arraydecay11_indices.begin(), ptr_arraydecay11_indices.end(), "arraydecay11", label_forbody6); - LoadInst* float_tmp13 = new LoadInst(ptr_arraydecay11, "tmp13", false, label_forbody6); - InsertElementInst* packed_tmp15 = new InsertElementInst(packed_vec_0_reg2mem_0, float_tmp13, const_int32_29, "tmp15", label_forbody6); - std::vector<Value*> ptr_arrayidx23_indices; - ptr_arrayidx23_indices.push_back(int32_i_0_reg2mem_0); - ptr_arrayidx23_indices.push_back(int32_j_0_reg2mem_0); - ptr_arrayidx23_indices.push_back(const_int32_31); - Instruction* ptr_arrayidx23 = new GetElementPtrInst(ptr_ainputs, ptr_arrayidx23_indices.begin(), ptr_arrayidx23_indices.end(), "arrayidx23", label_forbody6); - LoadInst* float_tmp24 = new LoadInst(ptr_arrayidx23, "tmp24", false, label_forbody6); - InsertElementInst* packed_tmp26 = new InsertElementInst(packed_tmp15, float_tmp24, const_int32_31, "tmp26", label_forbody6); - std::vector<Value*> ptr_arrayidx34_indices; - ptr_arrayidx34_indices.push_back(int32_i_0_reg2mem_0); - ptr_arrayidx34_indices.push_back(int32_j_0_reg2mem_0); - ptr_arrayidx34_indices.push_back(const_int32_33); - Instruction* ptr_arrayidx34 = new GetElementPtrInst(ptr_ainputs, ptr_arrayidx34_indices.begin(), ptr_arrayidx34_indices.end(), "arrayidx34", label_forbody6); - LoadInst* float_tmp35 = new LoadInst(ptr_arrayidx34, "tmp35", false, label_forbody6); - InsertElementInst* packed_tmp37 = new InsertElementInst(packed_tmp26, float_tmp35, const_int32_33, "tmp37", label_forbody6); - std::vector<Value*> ptr_arrayidx45_indices; - ptr_arrayidx45_indices.push_back(int32_i_0_reg2mem_0); - ptr_arrayidx45_indices.push_back(int32_j_0_reg2mem_0); - ptr_arrayidx45_indices.push_back(const_int32_34); - Instruction* ptr_arrayidx45 = new GetElementPtrInst(ptr_ainputs, ptr_arrayidx45_indices.begin(), ptr_arrayidx45_indices.end(), "arrayidx45", label_forbody6); - LoadInst* float_tmp46 = new LoadInst(ptr_arrayidx45, "tmp46", false, label_forbody6); - InsertElementInst* packed_tmp48 = new InsertElementInst(packed_tmp37, float_tmp46, const_int32_34, "tmp48", label_forbody6); - std::vector<Value*> ptr_arrayidx54_indices; - ptr_arrayidx54_indices.push_back(int32_i_0_reg2mem_0); - ptr_arrayidx54_indices.push_back(int32_j_0_reg2mem_0); - Instruction* ptr_arrayidx54 = new GetElementPtrInst(ptr_res, ptr_arrayidx54_indices.begin(), ptr_arrayidx54_indices.end(), "arrayidx54", label_forbody6); - StoreInst* void_42 = new StoreInst(packed_tmp48, ptr_arrayidx54, false, label_forbody6); - BinaryOperator* int32_indvar_next = BinaryOperator::create(Instruction::Add, int32_j_0_reg2mem_0, const_int32_31, "indvar.next", label_forbody6); - ICmpInst* int1_exitcond = new ICmpInst(ICmpInst::ICMP_EQ, int32_indvar_next, int32_tmp19, "exitcond", label_forbody6); - new BranchInst(label_forinc57, label_forbody6, int1_exitcond, label_forbody6); - - // Block forinc57 (label_forinc57) - BinaryOperator* int32_indvar_next20 = BinaryOperator::create(Instruction::Add, int32_i_0_reg2mem_0, const_int32_31, "indvar.next20", label_forinc57); - ICmpInst* int1_exitcond26 = new ICmpInst(ICmpInst::ICMP_EQ, int32_indvar_next20, int32_tmp25, "exitcond26", label_forinc57); - new BranchInst(label_afterfor60, label_forcond2, int1_exitcond26, label_forinc57); - - // Block afterfor60 (label_afterfor60) - new ReturnInst(label_afterfor60); - - // Resolve Forward References - fwdref_39->replaceAllUsesWith(packed_tmp48); delete fwdref_39; - fwdref_41->replaceAllUsesWith(int32_indvar_next); delete fwdref_41; - fwdref_38->replaceAllUsesWith(int32_indvar_next20); delete fwdref_38; - - } - - // Function: from_consts (func_from_consts) - { - Function::arg_iterator args = func_from_consts->arg_begin(); - Value* ptr_res_46 = args++; - ptr_res_46->setName("res"); - Value* ptr_ainputs_47 = args++; - ptr_ainputs_47->setName("ainputs"); - Value* int32_count_48 = args++; - int32_count_48->setName("count"); - - BasicBlock* label_entry_49 = new BasicBlock("entry",func_from_consts,0); - BasicBlock* label_forbody_preheader = new BasicBlock("forbody.preheader",func_from_consts,0); - BasicBlock* label_forbody = new BasicBlock("forbody",func_from_consts,0); - BasicBlock* label_afterfor = new BasicBlock("afterfor",func_from_consts,0); - - // Block entry (label_entry_49) - ICmpInst* int1_cmp_50 = new ICmpInst(ICmpInst::ICMP_SGT, int32_count_48, const_int32_29, "cmp", label_entry_49); - new BranchInst(label_forbody_preheader, label_afterfor, int1_cmp_50, label_entry_49); - - // Block forbody.preheader (label_forbody_preheader) - BinaryOperator* int32_tmp_52 = BinaryOperator::create(Instruction::Add, int32_count_48, const_int32_30, "tmp", label_forbody_preheader); - ICmpInst* int1_tmp9 = new ICmpInst(ICmpInst::ICMP_SLT, int32_tmp_52, const_int32_29, "tmp9", label_forbody_preheader); - SelectInst* int32_tmp10 = new SelectInst(int1_tmp9, const_int32_31, int32_count_48, "tmp10", label_forbody_preheader); - new BranchInst(label_forbody, label_forbody_preheader); - - // Block forbody (label_forbody) - Argument* fwdref_55 = new Argument(IntegerType::get(32)); - PHINode* int32_i_0_reg2mem_0_54 = new PHINode(IntegerType::get(32), "i.0.reg2mem.0", label_forbody); - int32_i_0_reg2mem_0_54->reserveOperandSpace(2); - int32_i_0_reg2mem_0_54->addIncoming(const_int32_29, label_forbody_preheader); - int32_i_0_reg2mem_0_54->addIncoming(fwdref_55, label_forbody); - - Argument* fwdref_57 = new Argument(VectorTy_1); - PHINode* packed_vec_0_reg2mem_0_56 = new PHINode(VectorTy_1, "vec.0.reg2mem.0", label_forbody); - packed_vec_0_reg2mem_0_56->reserveOperandSpace(2); - packed_vec_0_reg2mem_0_56->addIncoming(const_packed_32, label_forbody_preheader); - packed_vec_0_reg2mem_0_56->addIncoming(fwdref_57, label_forbody); - - std::vector<Value*> ptr_arraydecay_indices; - ptr_arraydecay_indices.push_back(int32_i_0_reg2mem_0_54); - ptr_arraydecay_indices.push_back(const_int32_29); - Instruction* ptr_arraydecay = new GetElementPtrInst(ptr_ainputs_47, ptr_arraydecay_indices.begin(), ptr_arraydecay_indices.end(), "arraydecay", label_forbody); - LoadInst* float_tmp5 = new LoadInst(ptr_arraydecay, "tmp5", false, label_forbody); - InsertElementInst* packed_tmp7 = new InsertElementInst(packed_vec_0_reg2mem_0_56, float_tmp5, const_int32_29, "tmp7", label_forbody); - std::vector<Value*> ptr_arrayidx12_indices; - ptr_arrayidx12_indices.push_back(int32_i_0_reg2mem_0_54); - ptr_arrayidx12_indices.push_back(const_int32_31); - Instruction* ptr_arrayidx12 = new GetElementPtrInst(ptr_ainputs_47, ptr_arrayidx12_indices.begin(), ptr_arrayidx12_indices.end(), "arrayidx12", label_forbody); - LoadInst* float_tmp13_58 = new LoadInst(ptr_arrayidx12, "tmp13", false, label_forbody); - InsertElementInst* packed_tmp15_59 = new InsertElementInst(packed_tmp7, float_tmp13_58, const_int32_31, "tmp15", label_forbody); - std::vector<Value*> ptr_arrayidx20_indices; - ptr_arrayidx20_indices.push_back(int32_i_0_reg2mem_0_54); - ptr_arrayidx20_indices.push_back(const_int32_33); - Instruction* ptr_arrayidx20 = new GetElementPtrInst(ptr_ainputs_47, ptr_arrayidx20_indices.begin(), ptr_arrayidx20_indices.end(), "arrayidx20", label_forbody); - LoadInst* float_tmp21 = new LoadInst(ptr_arrayidx20, "tmp21", false, label_forbody); - InsertElementInst* packed_tmp23 = new InsertElementInst(packed_tmp15_59, float_tmp21, const_int32_33, "tmp23", label_forbody); - std::vector<Value*> ptr_arrayidx28_indices; - ptr_arrayidx28_indices.push_back(int32_i_0_reg2mem_0_54); - ptr_arrayidx28_indices.push_back(const_int32_34); - Instruction* ptr_arrayidx28 = new GetElementPtrInst(ptr_ainputs_47, ptr_arrayidx28_indices.begin(), ptr_arrayidx28_indices.end(), "arrayidx28", label_forbody); - LoadInst* float_tmp29 = new LoadInst(ptr_arrayidx28, "tmp29", false, label_forbody); - InsertElementInst* packed_tmp31 = new InsertElementInst(packed_tmp23, float_tmp29, const_int32_34, "tmp31", label_forbody); - GetElementPtrInst* ptr_arrayidx34_60 = new GetElementPtrInst(ptr_res_46, int32_i_0_reg2mem_0_54, "arrayidx34", label_forbody); - StoreInst* void_61 = new StoreInst(packed_tmp31, ptr_arrayidx34_60, false, label_forbody); - BinaryOperator* int32_indvar_next_62 = BinaryOperator::create(Instruction::Add, int32_i_0_reg2mem_0_54, const_int32_31, "indvar.next", label_forbody); - ICmpInst* int1_exitcond_63 = new ICmpInst(ICmpInst::ICMP_EQ, int32_indvar_next_62, int32_tmp10, "exitcond", label_forbody); - new BranchInst(label_afterfor, label_forbody, int1_exitcond_63, label_forbody); - - // Block afterfor (label_afterfor) - new ReturnInst(label_afterfor); - - // Resolve Forward References - fwdref_57->replaceAllUsesWith(packed_tmp31); delete fwdref_57; - fwdref_55->replaceAllUsesWith(int32_indvar_next_62); delete fwdref_55; - - } - - // Function: to_array (func_to_array) - { - Function::arg_iterator args = func_to_array->arg_begin(); - Value* ptr_dests = args++; - ptr_dests->setName("dests"); - Value* ptr_in = args++; - ptr_in->setName("in"); - Value* int32_num_attribs_66 = args++; - int32_num_attribs_66->setName("num_attribs"); - - BasicBlock* label_entry_67 = new BasicBlock("entry",func_to_array,0); - BasicBlock* label_forbody_preheader_68 = new BasicBlock("forbody.preheader",func_to_array,0); - BasicBlock* label_forbody_69 = new BasicBlock("forbody",func_to_array,0); - BasicBlock* label_afterfor_70 = new BasicBlock("afterfor",func_to_array,0); - - // Block entry (label_entry_67) - ICmpInst* int1_cmp_71 = new ICmpInst(ICmpInst::ICMP_SGT, int32_num_attribs_66, const_int32_29, "cmp", label_entry_67); - new BranchInst(label_forbody_preheader_68, label_afterfor_70, int1_cmp_71, label_entry_67); - - // Block forbody.preheader (label_forbody_preheader_68) - BinaryOperator* int32_tmp_73 = BinaryOperator::create(Instruction::Add, int32_num_attribs_66, const_int32_30, "tmp", label_forbody_preheader_68); - ICmpInst* int1_tmp9_74 = new ICmpInst(ICmpInst::ICMP_SLT, int32_tmp_73, const_int32_29, "tmp9", label_forbody_preheader_68); - SelectInst* int32_tmp10_75 = new SelectInst(int1_tmp9_74, const_int32_31, int32_num_attribs_66, "tmp10", label_forbody_preheader_68); - new BranchInst(label_forbody_69, label_forbody_preheader_68); - - // Block forbody (label_forbody_69) - Argument* fwdref_78 = new Argument(IntegerType::get(32)); - PHINode* int32_i_0_reg2mem_0_77 = new PHINode(IntegerType::get(32), "i.0.reg2mem.0", label_forbody_69); - int32_i_0_reg2mem_0_77->reserveOperandSpace(2); - int32_i_0_reg2mem_0_77->addIncoming(const_int32_29, label_forbody_preheader_68); - int32_i_0_reg2mem_0_77->addIncoming(fwdref_78, label_forbody_69); - - std::vector<Value*> ptr_arraydecay_79_indices; - ptr_arraydecay_79_indices.push_back(int32_i_0_reg2mem_0_77); - ptr_arraydecay_79_indices.push_back(const_int32_29); - Instruction* ptr_arraydecay_79 = new GetElementPtrInst(ptr_dests, ptr_arraydecay_79_indices.begin(), ptr_arraydecay_79_indices.end(), "arraydecay", label_forbody_69); - GetElementPtrInst* ptr_arrayidx6 = new GetElementPtrInst(ptr_in, int32_i_0_reg2mem_0_77, "arrayidx6", label_forbody_69); - LoadInst* packed_tmp7_80 = new LoadInst(ptr_arrayidx6, "tmp7", false, label_forbody_69); - ExtractElementInst* float_tmp11 = new ExtractElementInst(packed_tmp7_80, const_int32_29, "tmp11", label_forbody_69); - StoreInst* void_81 = new StoreInst(float_tmp11, ptr_arraydecay_79, false, label_forbody_69); - std::vector<Value*> ptr_arrayidx13_indices; - ptr_arrayidx13_indices.push_back(int32_i_0_reg2mem_0_77); - ptr_arrayidx13_indices.push_back(const_int32_31); - Instruction* ptr_arrayidx13 = new GetElementPtrInst(ptr_dests, ptr_arrayidx13_indices.begin(), ptr_arrayidx13_indices.end(), "arrayidx13", label_forbody_69); - ExtractElementInst* float_tmp15 = new ExtractElementInst(packed_tmp7_80, const_int32_31, "tmp15", label_forbody_69); - StoreInst* void_82 = new StoreInst(float_tmp15, ptr_arrayidx13, false, label_forbody_69); - std::vector<Value*> ptr_arrayidx17_indices; - ptr_arrayidx17_indices.push_back(int32_i_0_reg2mem_0_77); - ptr_arrayidx17_indices.push_back(const_int32_33); - Instruction* ptr_arrayidx17 = new GetElementPtrInst(ptr_dests, ptr_arrayidx17_indices.begin(), ptr_arrayidx17_indices.end(), "arrayidx17", label_forbody_69); - ExtractElementInst* float_tmp19 = new ExtractElementInst(packed_tmp7_80, const_int32_33, "tmp19", label_forbody_69); - StoreInst* void_83 = new StoreInst(float_tmp19, ptr_arrayidx17, false, label_forbody_69); - std::vector<Value*> ptr_arrayidx21_indices; - ptr_arrayidx21_indices.push_back(int32_i_0_reg2mem_0_77); - ptr_arrayidx21_indices.push_back(const_int32_34); - Instruction* ptr_arrayidx21 = new GetElementPtrInst(ptr_dests, ptr_arrayidx21_indices.begin(), ptr_arrayidx21_indices.end(), "arrayidx21", label_forbody_69); - ExtractElementInst* float_tmp23 = new ExtractElementInst(packed_tmp7_80, const_int32_34, "tmp23", label_forbody_69); - StoreInst* void_84 = new StoreInst(float_tmp23, ptr_arrayidx21, false, label_forbody_69); - BinaryOperator* int32_indvar_next_85 = BinaryOperator::create(Instruction::Add, int32_i_0_reg2mem_0_77, const_int32_31, "indvar.next", label_forbody_69); - ICmpInst* int1_exitcond_86 = new ICmpInst(ICmpInst::ICMP_EQ, int32_indvar_next_85, int32_tmp10_75, "exitcond", label_forbody_69); - new BranchInst(label_afterfor_70, label_forbody_69, int1_exitcond_86, label_forbody_69); - - // Block afterfor (label_afterfor_70) - new ReturnInst(label_afterfor_70); - - // Resolve Forward References - fwdref_78->replaceAllUsesWith(int32_indvar_next_85); delete fwdref_78; - - } - - // Function: run_vertex_shader (func_run_vertex_shader) - { - Function::arg_iterator args = func_run_vertex_shader->arg_begin(); - Value* ptr_inputs = args++; - ptr_inputs->setName("inputs"); - Value* ptr_results = args++; - ptr_results->setName("results"); - Value* ptr_aconsts = args++; - ptr_aconsts->setName("aconsts"); - Value* int32_num_vertices = args++; - int32_num_vertices->setName("num_vertices"); - Value* int32_num_inputs = args++; - int32_num_inputs->setName("num_inputs"); - Value* int32_num_attribs_89 = args++; - int32_num_attribs_89->setName("num_attribs"); - Value* int32_num_consts = args++; - int32_num_consts->setName("num_consts"); - - BasicBlock* label_entry_90 = new BasicBlock("entry",func_run_vertex_shader,0); - BasicBlock* label_forbody_preheader_i = new BasicBlock("forbody.preheader.i",func_run_vertex_shader,0); - BasicBlock* label_forbody_i = new BasicBlock("forbody.i",func_run_vertex_shader,0); - BasicBlock* label_from_consts_exit = new BasicBlock("from_consts.exit",func_run_vertex_shader,0); - - // Block entry (label_entry_90) - AllocaInst* ptr_consts = new AllocaInst(ArrayTy_20, "consts", label_entry_90); - AllocaInst* ptr_temps = new AllocaInst(ArrayTy_22, "temps", label_entry_90); - AllocaInst* ptr_args = new AllocaInst(StructTy_struct_ShaderInput, "args", label_entry_90); - std::vector<Value*> ptr_tmp_indices; - ptr_tmp_indices.push_back(const_int32_29); - ptr_tmp_indices.push_back(const_int32_29); - Instruction* ptr_tmp = new GetElementPtrInst(ptr_args, ptr_tmp_indices.begin(), ptr_tmp_indices.end(), "tmp", label_entry_90); - CastInst* ptr_conv = new BitCastInst(ptr_results, PointerTy_0, "conv", label_entry_90); - StoreInst* void_91 = new StoreInst(ptr_conv, ptr_tmp, false, label_entry_90); - std::vector<Value*> ptr_tmp2_indices; - ptr_tmp2_indices.push_back(const_int32_29); - ptr_tmp2_indices.push_back(const_int32_31); - Instruction* ptr_tmp2 = new GetElementPtrInst(ptr_args, ptr_tmp2_indices.begin(), ptr_tmp2_indices.end(), "tmp2", label_entry_90); - CastInst* ptr_conv4 = new BitCastInst(ptr_inputs, PointerTy_0, "conv4", label_entry_90); - StoreInst* void_92 = new StoreInst(ptr_conv4, ptr_tmp2, false, label_entry_90); - ICmpInst* int1_cmp_i = new ICmpInst(ICmpInst::ICMP_SGT, int32_num_consts, const_int32_29, "cmp.i", label_entry_90); - new BranchInst(label_forbody_preheader_i, label_from_consts_exit, int1_cmp_i, label_entry_90); - - // Block forbody.preheader.i (label_forbody_preheader_i) - BinaryOperator* int32_tmp_i = BinaryOperator::create(Instruction::Add, int32_num_consts, const_int32_30, "tmp.i", label_forbody_preheader_i); - ICmpInst* int1_tmp9_i = new ICmpInst(ICmpInst::ICMP_SLT, int32_tmp_i, const_int32_29, "tmp9.i", label_forbody_preheader_i); - SelectInst* int32_tmp10_i = new SelectInst(int1_tmp9_i, const_int32_31, int32_num_consts, "tmp10.i", label_forbody_preheader_i); - new BranchInst(label_forbody_i, label_forbody_preheader_i); - - // Block forbody.i (label_forbody_i) - Argument* fwdref_95 = new Argument(IntegerType::get(32)); - PHINode* int32_i_0_reg2mem_0_i = new PHINode(IntegerType::get(32), "i.0.reg2mem.0.i", label_forbody_i); - int32_i_0_reg2mem_0_i->reserveOperandSpace(2); - int32_i_0_reg2mem_0_i->addIncoming(const_int32_29, label_forbody_preheader_i); - int32_i_0_reg2mem_0_i->addIncoming(fwdref_95, label_forbody_i); - - Argument* fwdref_96 = new Argument(VectorTy_1); - PHINode* packed_vec_0_reg2mem_0_i = new PHINode(VectorTy_1, "vec.0.reg2mem.0.i", label_forbody_i); - packed_vec_0_reg2mem_0_i->reserveOperandSpace(2); - packed_vec_0_reg2mem_0_i->addIncoming(const_packed_32, label_forbody_preheader_i); - packed_vec_0_reg2mem_0_i->addIncoming(fwdref_96, label_forbody_i); - - std::vector<Value*> ptr_arraydecay_i_indices; - ptr_arraydecay_i_indices.push_back(int32_i_0_reg2mem_0_i); - ptr_arraydecay_i_indices.push_back(const_int32_29); - Instruction* ptr_arraydecay_i = new GetElementPtrInst(ptr_aconsts, ptr_arraydecay_i_indices.begin(), ptr_arraydecay_i_indices.end(), "arraydecay.i", label_forbody_i); - LoadInst* float_tmp5_i = new LoadInst(ptr_arraydecay_i, "tmp5.i", false, label_forbody_i); - InsertElementInst* packed_tmp7_i = new InsertElementInst(packed_vec_0_reg2mem_0_i, float_tmp5_i, const_int32_29, "tmp7.i", label_forbody_i); - std::vector<Value*> ptr_arrayidx12_i_indices; - ptr_arrayidx12_i_indices.push_back(int32_i_0_reg2mem_0_i); - ptr_arrayidx12_i_indices.push_back(const_int32_31); - Instruction* ptr_arrayidx12_i = new GetElementPtrInst(ptr_aconsts, ptr_arrayidx12_i_indices.begin(), ptr_arrayidx12_i_indices.end(), "arrayidx12.i", label_forbody_i); - LoadInst* float_tmp13_i = new LoadInst(ptr_arrayidx12_i, "tmp13.i", false, label_forbody_i); - InsertElementInst* packed_tmp15_i = new InsertElementInst(packed_tmp7_i, float_tmp13_i, const_int32_31, "tmp15.i", label_forbody_i); - std::vector<Value*> ptr_arrayidx20_i_indices; - ptr_arrayidx20_i_indices.push_back(int32_i_0_reg2mem_0_i); - ptr_arrayidx20_i_indices.push_back(const_int32_33); - Instruction* ptr_arrayidx20_i = new GetElementPtrInst(ptr_aconsts, ptr_arrayidx20_i_indices.begin(), ptr_arrayidx20_i_indices.end(), "arrayidx20.i", label_forbody_i); - LoadInst* float_tmp21_i = new LoadInst(ptr_arrayidx20_i, "tmp21.i", false, label_forbody_i); - InsertElementInst* packed_tmp23_i = new InsertElementInst(packed_tmp15_i, float_tmp21_i, const_int32_33, "tmp23.i", label_forbody_i); - std::vector<Value*> ptr_arrayidx28_i_indices; - ptr_arrayidx28_i_indices.push_back(int32_i_0_reg2mem_0_i); - ptr_arrayidx28_i_indices.push_back(const_int32_34); - Instruction* ptr_arrayidx28_i = new GetElementPtrInst(ptr_aconsts, ptr_arrayidx28_i_indices.begin(), ptr_arrayidx28_i_indices.end(), "arrayidx28.i", label_forbody_i); - LoadInst* float_tmp29_i = new LoadInst(ptr_arrayidx28_i, "tmp29.i", false, label_forbody_i); - InsertElementInst* packed_tmp31_i = new InsertElementInst(packed_tmp23_i, float_tmp29_i, const_int32_34, "tmp31.i", label_forbody_i); - std::vector<Value*> ptr_arrayidx34_i_indices; - ptr_arrayidx34_i_indices.push_back(const_int32_29); - ptr_arrayidx34_i_indices.push_back(int32_i_0_reg2mem_0_i); - Instruction* ptr_arrayidx34_i = new GetElementPtrInst(ptr_consts, ptr_arrayidx34_i_indices.begin(), ptr_arrayidx34_i_indices.end(), "arrayidx34.i", label_forbody_i); - StoreInst* void_97 = new StoreInst(packed_tmp31_i, ptr_arrayidx34_i, false, label_forbody_i); - BinaryOperator* int32_indvar_next_98 = BinaryOperator::create(Instruction::Add, int32_i_0_reg2mem_0_i, const_int32_31, "indvar.next", label_forbody_i); - ICmpInst* int1_exitcond_99 = new ICmpInst(ICmpInst::ICMP_EQ, int32_indvar_next_98, int32_tmp10_i, "exitcond", label_forbody_i); - new BranchInst(label_from_consts_exit, label_forbody_i, int1_exitcond_99, label_forbody_i); - - // Block from_consts.exit (label_from_consts_exit) - std::vector<Value*> ptr_tmp7_indices; - ptr_tmp7_indices.push_back(const_int32_29); - ptr_tmp7_indices.push_back(const_int32_34); - Instruction* ptr_tmp7 = new GetElementPtrInst(ptr_args, ptr_tmp7_indices.begin(), ptr_tmp7_indices.end(), "tmp7", label_from_consts_exit); - std::vector<Value*> ptr_arraydecay8_indices; - ptr_arraydecay8_indices.push_back(const_int32_29); - ptr_arraydecay8_indices.push_back(const_int32_29); - Instruction* ptr_arraydecay8 = new GetElementPtrInst(ptr_consts, ptr_arraydecay8_indices.begin(), ptr_arraydecay8_indices.end(), "arraydecay8", label_from_consts_exit); - StoreInst* void_101 = new StoreInst(ptr_arraydecay8, ptr_tmp7, false, label_from_consts_exit); - std::vector<Value*> ptr_tmp9_indices; - ptr_tmp9_indices.push_back(const_int32_29); - ptr_tmp9_indices.push_back(const_int32_33); - Instruction* ptr_tmp9 = new GetElementPtrInst(ptr_args, ptr_tmp9_indices.begin(), ptr_tmp9_indices.end(), "tmp9", label_from_consts_exit); - std::vector<Value*> ptr_arraydecay10_indices; - ptr_arraydecay10_indices.push_back(const_int32_29); - ptr_arraydecay10_indices.push_back(const_int32_29); - Instruction* ptr_arraydecay10 = new GetElementPtrInst(ptr_temps, ptr_arraydecay10_indices.begin(), ptr_arraydecay10_indices.end(), "arraydecay10", label_from_consts_exit); - StoreInst* void_102 = new StoreInst(ptr_arraydecay10, ptr_tmp9, false, label_from_consts_exit); - CallInst* void_103 = new CallInst(func_execute_shader, ptr_args, "", label_from_consts_exit); - void_103->setCallingConv(CallingConv::C); - void_103->setTailCall(false);const ParamAttrsList *void_103_PAL = 0; - void_103->setParamAttrs(void_103_PAL); - - new ReturnInst(label_from_consts_exit); - - // Resolve Forward References - fwdref_96->replaceAllUsesWith(packed_tmp31_i); delete fwdref_96; - fwdref_95->replaceAllUsesWith(int32_indvar_next_98); delete fwdref_95; - - } - - // Function: run_fragment_shader (func_run_fragment_shader) - { - Function::arg_iterator args = func_run_fragment_shader->arg_begin(); - Value* float_x = args++; - float_x->setName("x"); - Value* float_y = args++; - float_y->setName("y"); - Value* ptr_results_105 = args++; - ptr_results_105->setName("results"); - Value* ptr_inputs_106 = args++; - ptr_inputs_106->setName("inputs"); - Value* int32_num_inputs_107 = args++; - int32_num_inputs_107->setName("num_inputs"); - Value* ptr_aconsts_108 = args++; - ptr_aconsts_108->setName("aconsts"); - Value* int32_num_consts_109 = args++; - int32_num_consts_109->setName("num_consts"); - Value* ptr_samplers = args++; - ptr_samplers->setName("samplers"); - - BasicBlock* label_entry_110 = new BasicBlock("entry",func_run_fragment_shader,0); - BasicBlock* label_forbody_preheader_i_111 = new BasicBlock("forbody.preheader.i",func_run_fragment_shader,0); - BasicBlock* label_forbody_i_112 = new BasicBlock("forbody.i",func_run_fragment_shader,0); - BasicBlock* label_from_consts_exit_113 = new BasicBlock("from_consts.exit",func_run_fragment_shader,0); - - // Block entry (label_entry_110) - AllocaInst* ptr_consts_114 = new AllocaInst(ArrayTy_20, "consts", label_entry_110); - AllocaInst* ptr_temps_115 = new AllocaInst(ArrayTy_22, "temps", label_entry_110); - AllocaInst* ptr_args_116 = new AllocaInst(StructTy_struct_ShaderInput, "args", label_entry_110); - std::vector<Value*> ptr_tmp_117_indices; - ptr_tmp_117_indices.push_back(const_int32_29); - ptr_tmp_117_indices.push_back(const_int32_35); - Instruction* ptr_tmp_117 = new GetElementPtrInst(ptr_args_116, ptr_tmp_117_indices.begin(), ptr_tmp_117_indices.end(), "tmp", label_entry_110); - StoreInst* void_118 = new StoreInst(const_int32_29, ptr_tmp_117, false, label_entry_110); - ICmpInst* int1_cmp_i_119 = new ICmpInst(ICmpInst::ICMP_SGT, int32_num_consts_109, const_int32_29, "cmp.i", label_entry_110); - new BranchInst(label_forbody_preheader_i_111, label_from_consts_exit_113, int1_cmp_i_119, label_entry_110); - - // Block forbody.preheader.i (label_forbody_preheader_i_111) - BinaryOperator* int32_tmp_i_121 = BinaryOperator::create(Instruction::Add, int32_num_consts_109, const_int32_30, "tmp.i", label_forbody_preheader_i_111); - ICmpInst* int1_tmp9_i_122 = new ICmpInst(ICmpInst::ICMP_SLT, int32_tmp_i_121, const_int32_29, "tmp9.i", label_forbody_preheader_i_111); - SelectInst* int32_tmp10_i_123 = new SelectInst(int1_tmp9_i_122, const_int32_31, int32_num_consts_109, "tmp10.i", label_forbody_preheader_i_111); - new BranchInst(label_forbody_i_112, label_forbody_preheader_i_111); - - // Block forbody.i (label_forbody_i_112) - Argument* fwdref_126 = new Argument(IntegerType::get(32)); - PHINode* int32_i_0_reg2mem_0_i_125 = new PHINode(IntegerType::get(32), "i.0.reg2mem.0.i", label_forbody_i_112); - int32_i_0_reg2mem_0_i_125->reserveOperandSpace(2); - int32_i_0_reg2mem_0_i_125->addIncoming(const_int32_29, label_forbody_preheader_i_111); - int32_i_0_reg2mem_0_i_125->addIncoming(fwdref_126, label_forbody_i_112); - - Argument* fwdref_128 = new Argument(VectorTy_1); - PHINode* packed_vec_0_reg2mem_0_i_127 = new PHINode(VectorTy_1, "vec.0.reg2mem.0.i", label_forbody_i_112); - packed_vec_0_reg2mem_0_i_127->reserveOperandSpace(2); - packed_vec_0_reg2mem_0_i_127->addIncoming(const_packed_32, label_forbody_preheader_i_111); - packed_vec_0_reg2mem_0_i_127->addIncoming(fwdref_128, label_forbody_i_112); - - std::vector<Value*> ptr_arraydecay_i_129_indices; - ptr_arraydecay_i_129_indices.push_back(int32_i_0_reg2mem_0_i_125); - ptr_arraydecay_i_129_indices.push_back(const_int32_29); - Instruction* ptr_arraydecay_i_129 = new GetElementPtrInst(ptr_aconsts_108, ptr_arraydecay_i_129_indices.begin(), ptr_arraydecay_i_129_indices.end(), "arraydecay.i", label_forbody_i_112); - LoadInst* float_tmp5_i_130 = new LoadInst(ptr_arraydecay_i_129, "tmp5.i", false, label_forbody_i_112); - InsertElementInst* packed_tmp7_i_131 = new InsertElementInst(packed_vec_0_reg2mem_0_i_127, float_tmp5_i_130, const_int32_29, "tmp7.i", label_forbody_i_112); - std::vector<Value*> ptr_arrayidx12_i_132_indices; - ptr_arrayidx12_i_132_indices.push_back(int32_i_0_reg2mem_0_i_125); - ptr_arrayidx12_i_132_indices.push_back(const_int32_31); - Instruction* ptr_arrayidx12_i_132 = new GetElementPtrInst(ptr_aconsts_108, ptr_arrayidx12_i_132_indices.begin(), ptr_arrayidx12_i_132_indices.end(), "arrayidx12.i", label_forbody_i_112); - LoadInst* float_tmp13_i_133 = new LoadInst(ptr_arrayidx12_i_132, "tmp13.i", false, label_forbody_i_112); - InsertElementInst* packed_tmp15_i_134 = new InsertElementInst(packed_tmp7_i_131, float_tmp13_i_133, const_int32_31, "tmp15.i", label_forbody_i_112); - std::vector<Value*> ptr_arrayidx20_i_135_indices; - ptr_arrayidx20_i_135_indices.push_back(int32_i_0_reg2mem_0_i_125); - ptr_arrayidx20_i_135_indices.push_back(const_int32_33); - Instruction* ptr_arrayidx20_i_135 = new GetElementPtrInst(ptr_aconsts_108, ptr_arrayidx20_i_135_indices.begin(), ptr_arrayidx20_i_135_indices.end(), "arrayidx20.i", label_forbody_i_112); - LoadInst* float_tmp21_i_136 = new LoadInst(ptr_arrayidx20_i_135, "tmp21.i", false, label_forbody_i_112); - InsertElementInst* packed_tmp23_i_137 = new InsertElementInst(packed_tmp15_i_134, float_tmp21_i_136, const_int32_33, "tmp23.i", label_forbody_i_112); - std::vector<Value*> ptr_arrayidx28_i_138_indices; - ptr_arrayidx28_i_138_indices.push_back(int32_i_0_reg2mem_0_i_125); - ptr_arrayidx28_i_138_indices.push_back(const_int32_34); - Instruction* ptr_arrayidx28_i_138 = new GetElementPtrInst(ptr_aconsts_108, ptr_arrayidx28_i_138_indices.begin(), ptr_arrayidx28_i_138_indices.end(), "arrayidx28.i", label_forbody_i_112); - LoadInst* float_tmp29_i_139 = new LoadInst(ptr_arrayidx28_i_138, "tmp29.i", false, label_forbody_i_112); - InsertElementInst* packed_tmp31_i_140 = new InsertElementInst(packed_tmp23_i_137, float_tmp29_i_139, const_int32_34, "tmp31.i", label_forbody_i_112); - std::vector<Value*> ptr_arrayidx34_i_141_indices; - ptr_arrayidx34_i_141_indices.push_back(const_int32_29); - ptr_arrayidx34_i_141_indices.push_back(int32_i_0_reg2mem_0_i_125); - Instruction* ptr_arrayidx34_i_141 = new GetElementPtrInst(ptr_consts_114, ptr_arrayidx34_i_141_indices.begin(), ptr_arrayidx34_i_141_indices.end(), "arrayidx34.i", label_forbody_i_112); - StoreInst* void_142 = new StoreInst(packed_tmp31_i_140, ptr_arrayidx34_i_141, false, label_forbody_i_112); - BinaryOperator* int32_indvar_next7 = BinaryOperator::create(Instruction::Add, int32_i_0_reg2mem_0_i_125, const_int32_31, "indvar.next7", label_forbody_i_112); - ICmpInst* int1_exitcond8 = new ICmpInst(ICmpInst::ICMP_EQ, int32_indvar_next7, int32_tmp10_i_123, "exitcond8", label_forbody_i_112); - new BranchInst(label_from_consts_exit_113, label_forbody_i_112, int1_exitcond8, label_forbody_i_112); - - // Block from_consts.exit (label_from_consts_exit_113) - std::vector<Value*> ptr_tmp3_indices; - ptr_tmp3_indices.push_back(const_int32_29); - ptr_tmp3_indices.push_back(const_int32_34); - Instruction* ptr_tmp3 = new GetElementPtrInst(ptr_args_116, ptr_tmp3_indices.begin(), ptr_tmp3_indices.end(), "tmp3", label_from_consts_exit_113); - std::vector<Value*> ptr_arraydecay4_indices; - ptr_arraydecay4_indices.push_back(const_int32_29); - ptr_arraydecay4_indices.push_back(const_int32_29); - Instruction* ptr_arraydecay4 = new GetElementPtrInst(ptr_consts_114, ptr_arraydecay4_indices.begin(), ptr_arraydecay4_indices.end(), "arraydecay4", label_from_consts_exit_113); - StoreInst* void_144 = new StoreInst(ptr_arraydecay4, ptr_tmp3, false, label_from_consts_exit_113); - std::vector<Value*> ptr_tmp5_indices; - ptr_tmp5_indices.push_back(const_int32_29); - ptr_tmp5_indices.push_back(const_int32_33); - Instruction* ptr_tmp5 = new GetElementPtrInst(ptr_args_116, ptr_tmp5_indices.begin(), ptr_tmp5_indices.end(), "tmp5", label_from_consts_exit_113); - std::vector<Value*> ptr_arraydecay6_indices; - ptr_arraydecay6_indices.push_back(const_int32_29); - ptr_arraydecay6_indices.push_back(const_int32_29); - Instruction* ptr_arraydecay6 = new GetElementPtrInst(ptr_temps_115, ptr_arraydecay6_indices.begin(), ptr_arraydecay6_indices.end(), "arraydecay6", label_from_consts_exit_113); - StoreInst* void_145 = new StoreInst(ptr_arraydecay6, ptr_tmp5, false, label_from_consts_exit_113); - std::vector<Value*> ptr_tmp8_indices; - ptr_tmp8_indices.push_back(const_int32_29); - ptr_tmp8_indices.push_back(const_int32_31); - Instruction* ptr_tmp8 = new GetElementPtrInst(ptr_args_116, ptr_tmp8_indices.begin(), ptr_tmp8_indices.end(), "tmp8", label_from_consts_exit_113); - std::vector<Value*> ptr_tmp12_indices; - ptr_tmp12_indices.push_back(const_int32_29); - ptr_tmp12_indices.push_back(const_int32_29); - Instruction* ptr_tmp12 = new GetElementPtrInst(ptr_args_116, ptr_tmp12_indices.begin(), ptr_tmp12_indices.end(), "tmp12", label_from_consts_exit_113); - std::vector<Value*> ptr_arraydecay11_146_indices; - ptr_arraydecay11_146_indices.push_back(const_int32_29); - ptr_arraydecay11_146_indices.push_back(const_int32_29); - Instruction* ptr_arraydecay11_146 = new GetElementPtrInst(ptr_inputs_106, ptr_arraydecay11_146_indices.begin(), ptr_arraydecay11_146_indices.end(), "arraydecay11", label_from_consts_exit_113); - StoreInst* void_147 = new StoreInst(ptr_arraydecay11_146, ptr_tmp8, false, label_from_consts_exit_113); - std::vector<Value*> ptr_arraydecay16_indices; - ptr_arraydecay16_indices.push_back(const_int32_29); - ptr_arraydecay16_indices.push_back(const_int32_29); - Instruction* ptr_arraydecay16 = new GetElementPtrInst(ptr_results_105, ptr_arraydecay16_indices.begin(), ptr_arraydecay16_indices.end(), "arraydecay16", label_from_consts_exit_113); - StoreInst* void_148 = new StoreInst(ptr_arraydecay16, ptr_tmp12, false, label_from_consts_exit_113); - StoreInst* void_149 = new StoreInst(const_int32_29, ptr_tmp_117, false, label_from_consts_exit_113); - CallInst* void_150 = new CallInst(func_execute_shader, ptr_args_116, "", label_from_consts_exit_113); - void_150->setCallingConv(CallingConv::C); - void_150->setTailCall(false);const ParamAttrsList *void_150_PAL = 0; - void_150->setParamAttrs(void_150_PAL); - - LoadInst* int32_tmp23 = new LoadInst(ptr_tmp_117, "tmp23", false, label_from_consts_exit_113); - std::vector<Value*> ptr_arraydecay11_1_indices; - ptr_arraydecay11_1_indices.push_back(const_int32_31); - ptr_arraydecay11_1_indices.push_back(const_int32_29); - Instruction* ptr_arraydecay11_1 = new GetElementPtrInst(ptr_inputs_106, ptr_arraydecay11_1_indices.begin(), ptr_arraydecay11_1_indices.end(), "arraydecay11.1", label_from_consts_exit_113); - StoreInst* void_151 = new StoreInst(ptr_arraydecay11_1, ptr_tmp8, false, label_from_consts_exit_113); - std::vector<Value*> ptr_arraydecay16_1_indices; - ptr_arraydecay16_1_indices.push_back(const_int32_31); - ptr_arraydecay16_1_indices.push_back(const_int32_29); - Instruction* ptr_arraydecay16_1 = new GetElementPtrInst(ptr_results_105, ptr_arraydecay16_1_indices.begin(), ptr_arraydecay16_1_indices.end(), "arraydecay16.1", label_from_consts_exit_113); - StoreInst* void_152 = new StoreInst(ptr_arraydecay16_1, ptr_tmp12, false, label_from_consts_exit_113); - StoreInst* void_153 = new StoreInst(const_int32_29, ptr_tmp_117, false, label_from_consts_exit_113); - CallInst* void_154 = new CallInst(func_execute_shader, ptr_args_116, "", label_from_consts_exit_113); - void_154->setCallingConv(CallingConv::C); - void_154->setTailCall(false);const ParamAttrsList *void_154_PAL = 0; - void_154->setParamAttrs(void_154_PAL); - - LoadInst* int32_tmp23_1 = new LoadInst(ptr_tmp_117, "tmp23.1", false, label_from_consts_exit_113); - BinaryOperator* int32_shl_1 = BinaryOperator::create(Instruction::Shl, int32_tmp23_1, const_int32_31, "shl.1", label_from_consts_exit_113); - BinaryOperator* int32_or_1 = BinaryOperator::create(Instruction::Or, int32_shl_1, int32_tmp23, "or.1", label_from_consts_exit_113); - std::vector<Value*> ptr_arraydecay11_2_indices; - ptr_arraydecay11_2_indices.push_back(const_int32_33); - ptr_arraydecay11_2_indices.push_back(const_int32_29); - Instruction* ptr_arraydecay11_2 = new GetElementPtrInst(ptr_inputs_106, ptr_arraydecay11_2_indices.begin(), ptr_arraydecay11_2_indices.end(), "arraydecay11.2", label_from_consts_exit_113); - StoreInst* void_155 = new StoreInst(ptr_arraydecay11_2, ptr_tmp8, false, label_from_consts_exit_113); - std::vector<Value*> ptr_arraydecay16_2_indices; - ptr_arraydecay16_2_indices.push_back(const_int32_33); - ptr_arraydecay16_2_indices.push_back(const_int32_29); - Instruction* ptr_arraydecay16_2 = new GetElementPtrInst(ptr_results_105, ptr_arraydecay16_2_indices.begin(), ptr_arraydecay16_2_indices.end(), "arraydecay16.2", label_from_consts_exit_113); - StoreInst* void_156 = new StoreInst(ptr_arraydecay16_2, ptr_tmp12, false, label_from_consts_exit_113); - StoreInst* void_157 = new StoreInst(const_int32_29, ptr_tmp_117, false, label_from_consts_exit_113); - CallInst* void_158 = new CallInst(func_execute_shader, ptr_args_116, "", label_from_consts_exit_113); - void_158->setCallingConv(CallingConv::C); - void_158->setTailCall(false);const ParamAttrsList *void_158_PAL = 0; - void_158->setParamAttrs(void_158_PAL); - - LoadInst* int32_tmp23_2 = new LoadInst(ptr_tmp_117, "tmp23.2", false, label_from_consts_exit_113); - BinaryOperator* int32_shl_2 = BinaryOperator::create(Instruction::Shl, int32_tmp23_2, const_int32_33, "shl.2", label_from_consts_exit_113); - BinaryOperator* int32_or_2 = BinaryOperator::create(Instruction::Or, int32_shl_2, int32_or_1, "or.2", label_from_consts_exit_113); - std::vector<Value*> ptr_arraydecay11_3_indices; - ptr_arraydecay11_3_indices.push_back(const_int32_34); - ptr_arraydecay11_3_indices.push_back(const_int32_29); - Instruction* ptr_arraydecay11_3 = new GetElementPtrInst(ptr_inputs_106, ptr_arraydecay11_3_indices.begin(), ptr_arraydecay11_3_indices.end(), "arraydecay11.3", label_from_consts_exit_113); - StoreInst* void_159 = new StoreInst(ptr_arraydecay11_3, ptr_tmp8, false, label_from_consts_exit_113); - std::vector<Value*> ptr_arraydecay16_3_indices; - ptr_arraydecay16_3_indices.push_back(const_int32_34); - ptr_arraydecay16_3_indices.push_back(const_int32_29); - Instruction* ptr_arraydecay16_3 = new GetElementPtrInst(ptr_results_105, ptr_arraydecay16_3_indices.begin(), ptr_arraydecay16_3_indices.end(), "arraydecay16.3", label_from_consts_exit_113); - StoreInst* void_160 = new StoreInst(ptr_arraydecay16_3, ptr_tmp12, false, label_from_consts_exit_113); - StoreInst* void_161 = new StoreInst(const_int32_29, ptr_tmp_117, false, label_from_consts_exit_113); - CallInst* void_162 = new CallInst(func_execute_shader, ptr_args_116, "", label_from_consts_exit_113); - void_162->setCallingConv(CallingConv::C); - void_162->setTailCall(false);const ParamAttrsList *void_162_PAL = 0; - void_162->setParamAttrs(void_162_PAL); - - LoadInst* int32_tmp23_3 = new LoadInst(ptr_tmp_117, "tmp23.3", false, label_from_consts_exit_113); - BinaryOperator* int32_shl_3 = BinaryOperator::create(Instruction::Shl, int32_tmp23_3, const_int32_34, "shl.3", label_from_consts_exit_113); - BinaryOperator* int32_or_3 = BinaryOperator::create(Instruction::Or, int32_shl_3, int32_or_2, "or.3", label_from_consts_exit_113); - BinaryOperator* int32_neg = BinaryOperator::create(Instruction::Xor, int32_or_3, const_int32_30, "neg", label_from_consts_exit_113); - new ReturnInst(int32_neg, label_from_consts_exit_113); - - // Resolve Forward References - fwdref_128->replaceAllUsesWith(packed_tmp31_i_140); delete fwdref_128; - fwdref_126->replaceAllUsesWith(int32_indvar_next7); delete fwdref_126; - - } - - return mod; -} diff --git a/src/mesa/pipe/llvm/llvm_entry.c b/src/mesa/pipe/llvm/llvm_entry.c deleted file mode 100644 index fa50b60e66..0000000000 --- a/src/mesa/pipe/llvm/llvm_entry.c +++ /dev/null @@ -1,163 +0,0 @@ -/* clang --emit-llvm llvm_entry.c |llvm-as |opt -std-compile-opts |llvm2cpp -for=Shader -gen-module -funcname=createBaseShader */ -/************************************************************************** - * - * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas. - * 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 TUNGSTEN GRAPHICS 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. - * - **************************************************************************/ - - /* - * Authors: - * Zack Rusin zack@tungstengraphics.com - */ - -/* clang --emit-llvm llvm_builtins.c |llvm-as |opt -std-compile-opts |llvm-dis */ -typedef __attribute__(( ocu_vector_type(4) )) float float4; - -void from_array(float4 (*res)[16], float (*ainputs)[16][4], - int count, int num_attribs) -{ - for (int i = 0; i < count; ++i) { - for (int j = 0; j < num_attribs; ++j) { - float4 vec; - vec.x = ainputs[i][j][0]; - vec.y = ainputs[i][j][1]; - vec.z = ainputs[i][j][2]; - vec.w = ainputs[i][j][3]; - res[i][j] = vec; - } - } -} - -void from_consts(float4 *res, float (*ainputs)[4], - int count) -{ - for (int i = 0; i < count; ++i) { - float4 vec; - vec.x = ainputs[i][0]; - vec.y = ainputs[i][1]; - vec.z = ainputs[i][2]; - vec.w = ainputs[i][3]; - res[i] = vec; - } -} - -void to_array(float (*dests)[4], float4 *in, int num_attribs) -{ - for (int i = 0; i < num_attribs; ++i) { - float *rd = dests[i]; - float4 ri = in[i]; - rd[0] = ri.x; - rd[1] = ri.y; - rd[2] = ri.z; - rd[3] = ri.w; - } -} - - -struct ShaderInput -{ - float4 *dests; - float4 *inputs; - float4 *temps; - float4 *consts; - int kilmask; -}; - -extern void execute_shader(struct ShaderInput *input); - -void run_vertex_shader(void *inputs, - void *results, - float (*aconsts)[4], - int num_vertices, - int num_inputs, - int num_attribs, - int num_consts) -{ - float4 consts[32]; - float4 temps[128];//MAX_PROGRAM_TEMPS - - struct ShaderInput args; - args.dests = results; - args.inputs = inputs; - - /*printf("XXX LLVM run_vertex_shader vertices = %d, inputs = %d, attribs = %d, consts = %d\n", - num_vertices, num_inputs, num_attribs, num_consts);*/ - from_consts(consts, aconsts, num_consts); - args.consts = consts; - args.temps = temps; - - execute_shader(&args); -} - - -struct pipe_sampler_state; -struct softpipe_tile_cache; - -#define NUM_CHANNELS 4 /* R,G,B,A */ -#define QUAD_SIZE 4 /* 4 pixel/quad */ - -struct tgsi_sampler -{ - const struct pipe_sampler_state *state; - /** Get samples for four fragments in a quad */ - void (*get_samples)(struct tgsi_sampler *sampler, - const float s[QUAD_SIZE], - const float t[QUAD_SIZE], - const float p[QUAD_SIZE], - float lodbias, - float rgba[NUM_CHANNELS][QUAD_SIZE]); - void *pipe; /*XXX temporary*/ - struct softpipe_tile_cache *cache; -}; - - -int run_fragment_shader(float x, float y, - float4 (*results)[16], - float4 (*inputs)[16], - int num_inputs, - float (*aconsts)[4], - int num_consts, - struct tgsi_sampler *samplers) -{ - float4 consts[32]; - float4 temps[128];//MAX_PROGRAM_TEMPS - struct ShaderInput args; - int mask = 0; - args.kilmask = 0; - - from_consts(consts, aconsts, num_consts); - args.consts = consts; - args.temps = temps; - //printf("AAAAAAAAAAAAAAAAAAAAAAA FRAGMENT SHADER %f %f\n", x, y); - for (int i = 0; i < 4; ++i) { - args.inputs = inputs[i]; - args.dests = results[i]; - mask = args.kilmask; - args.kilmask = 0; - execute_shader(&args); - args.kilmask = mask | (args.kilmask << i); - } - return ~args.kilmask; -} - diff --git a/src/mesa/pipe/llvm/storagesoa.cpp b/src/mesa/pipe/llvm/storagesoa.cpp deleted file mode 100644 index e09e9e8fe7..0000000000 --- a/src/mesa/pipe/llvm/storagesoa.cpp +++ /dev/null @@ -1,208 +0,0 @@ -/************************************************************************** - * - * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas. - * 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 TUNGSTEN GRAPHICS 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. - * - **************************************************************************/ - -#include "storagesoa.h" - - -#include "pipe/p_shader_tokens.h" -#include <llvm/BasicBlock.h> -#include <llvm/Module.h> -#include <llvm/Value.h> - -#include <llvm/CallingConv.h> -#include <llvm/Constants.h> -#include <llvm/DerivedTypes.h> -#include <llvm/InstrTypes.h> -#include <llvm/Instructions.h> - -using namespace llvm; - -StorageSoa::StorageSoa(llvm::BasicBlock *block, - llvm::Value *input, - llvm::Value *output, - llvm::Value *consts, - llvm::Value *temps) - : m_block(block), - m_input(input), - m_output(output), - m_consts(consts), - m_temps(temps), - m_idx(0) -{ -} - -void StorageSoa::addImmediate(float *vec) -{ -} - -llvm::Value *StorageSoa::addrElement(int idx) const -{ - return 0; -} - -std::vector<llvm::Value*> StorageSoa::inputElement(int idx, int swizzle, - llvm::Value *indIdx) -{ - std::vector<llvm::Value*> res(4); - - res[0] = element(m_input, idx, 0); - res[1] = element(m_input, idx, 1); - res[2] = element(m_input, idx, 2); - res[3] = element(m_input, idx, 3); - - return res; -} - -std::vector<llvm::Value*> StorageSoa::constElement(int idx, int swizzle, - llvm::Value *indIdx) -{ - std::vector<llvm::Value*> res(4); - - return res; -} - -std::vector<llvm::Value*> StorageSoa::outputElement(int idx, int swizzle, - llvm::Value *indIdx) -{ - std::vector<llvm::Value*> res(4); - - res[0] = element(m_output, idx, 0); - res[1] = element(m_output, idx, 1); - res[2] = element(m_output, idx, 2); - res[3] = element(m_output, idx, 3); - - return res; -} - -std::vector<llvm::Value*> StorageSoa::tempElement(int idx, int swizzle, - llvm::Value *indIdx) -{ - std::vector<llvm::Value*> res(4); - - res[0] = element(m_temps, idx, 0); - res[1] = element(m_temps, idx, 1); - res[2] = element(m_temps, idx, 2); - res[3] = element(m_temps, idx, 3); - - return res; -} - -std::vector<llvm::Value*> StorageSoa::immediateElement(int idx, int swizzle) -{ - std::vector<llvm::Value*> res(4); - - return res; -} - -llvm::Value * StorageSoa::extractIndex(llvm::Value *vec) -{ - return 0; -} - -void StorageSoa::storeOutput(int dstIdx, const std::vector<llvm::Value*> &val, - int mask) -{ - if (mask != TGSI_WRITEMASK_XYZW) { - fprintf(stderr, "requires swizzle!!\n"); - assert(0); - } else { - llvm::Value *xChannel = elementPointer(m_output, dstIdx, 0); - llvm::Value *yChannel = elementPointer(m_output, dstIdx, 1); - llvm::Value *zChannel = elementPointer(m_output, dstIdx, 2); - llvm::Value *wChannel = elementPointer(m_output, dstIdx, 3); - - StoreInst *st = new StoreInst(val[0], xChannel, false, m_block); - st = new StoreInst(val[1], yChannel, false, m_block); - st = new StoreInst(val[2], zChannel, false, m_block); - st = new StoreInst(val[3], wChannel, false, m_block); - } -} - -void StorageSoa::storeTemp(int idx, const std::vector<llvm::Value*> &val, - int mask) -{ - if (mask != TGSI_WRITEMASK_XYZW) { - fprintf(stderr, "requires swizzle!!\n"); - assert(0); - } else { - llvm::Value *xChannel = elementPointer(m_temps, idx, 0); - llvm::Value *yChannel = elementPointer(m_temps, idx, 1); - llvm::Value *zChannel = elementPointer(m_temps, idx, 2); - llvm::Value *wChannel = elementPointer(m_temps, idx, 3); - - StoreInst *st = new StoreInst(val[0], xChannel, false, m_block); - st = new StoreInst(val[1], yChannel, false, m_block); - st = new StoreInst(val[2], zChannel, false, m_block); - st = new StoreInst(val[3], wChannel, false, m_block); - } -} - -void StorageSoa::storeAddress(int idx, const std::vector<llvm::Value*> &val, - int mask) -{ -} - -llvm::Value * StorageSoa::elementPointer(llvm::Value *ptr, int index, - int channel) const -{ - std::vector<Value*> indices; - indices.push_back(constantInt(index)); - indices.push_back(constantInt(channel)); - - GetElementPtrInst *getElem = new GetElementPtrInst(ptr, - indices.begin(), - indices.end(), - name("ptr"), - m_block); - return getElem; -} - -llvm::Value * StorageSoa::element(llvm::Value *ptr, int index, - int channel) const -{ - llvm::Value *res = elementPointer(ptr, index, channel); - LoadInst *load = new LoadInst(res, name("element"), false, m_block); - //load->setAlignment(8); - return load; -} - -const char * StorageSoa::name(const char *prefix) const -{ - ++m_idx; - snprintf(m_name, 32, "%s%d", prefix, m_idx); - return m_name; -} - -llvm::ConstantInt * StorageSoa::constantInt(int idx) const -{ - if (m_constInts.find(idx) != m_constInts.end()) { - return m_constInts[idx]; - } - ConstantInt *constInt = ConstantInt::get(APInt(32, idx)); - m_constInts[idx] = constInt; - return constInt; -} diff --git a/src/mesa/pipe/softpipe/sp_state_derived.c b/src/mesa/pipe/softpipe/sp_state_derived.c deleted file mode 100644 index 39c3e1afe1..0000000000 --- a/src/mesa/pipe/softpipe/sp_state_derived.c +++ /dev/null @@ -1,190 +0,0 @@ -/************************************************************************** - * - * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas. - * 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 TUNGSTEN GRAPHICS 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. - * - **************************************************************************/ - -#include "pipe/p_util.h" -#include "pipe/p_shader_tokens.h" -#include "pipe/draw/draw_context.h" -#include "pipe/draw/draw_vertex.h" -#include "pipe/draw/draw_private.h" -#include "sp_context.h" -#include "sp_state.h" - - -static int -find_vs_output(const struct pipe_shader_state *vs, - uint semantic_name, - uint semantic_index) -{ - uint i; - for (i = 0; i < vs->num_outputs; i++) { - if (vs->output_semantic_name[i] == semantic_name && - vs->output_semantic_index[i] == semantic_index) - return i; - } - return -1; -} - - - -/** - * Determine how to map vertex program outputs to fragment program inputs. - * Basically, this will be used when computing the triangle interpolation - * coefficients from the post-transform vertex attributes. - */ -static void calculate_vertex_layout( struct softpipe_context *softpipe ) -{ - const struct pipe_shader_state *vs = &softpipe->vs->shader; - const struct pipe_shader_state *fs = &softpipe->fs->shader; - const enum interp_mode colorInterp - = softpipe->rasterizer->flatshade ? INTERP_CONSTANT : INTERP_LINEAR; - struct vertex_info *vinfo = &softpipe->vertex_info; - uint i; - - if (softpipe->vbuf) { - /* if using the post-transform vertex buffer, tell draw_vbuf to - * simply emit the whole post-xform vertex as-is: - */ - struct vertex_info *vinfo_vbuf = &softpipe->vertex_info_vbuf; - vinfo_vbuf->num_attribs = 0; - draw_emit_vertex_attr(vinfo_vbuf, EMIT_ALL, INTERP_NONE, 0); - vinfo_vbuf->size = 4 * vs->num_outputs + sizeof(struct vertex_header)/4; - } - - /* - * Loop over fragment shader inputs, searching for the matching output - * from the vertex shader. - */ - vinfo->num_attribs = 0; - for (i = 0; i < fs->num_inputs; i++) { - int src; - switch (fs->input_semantic_name[i]) { - case TGSI_SEMANTIC_POSITION: - src = find_vs_output(vs, TGSI_SEMANTIC_POSITION, 0); - assert(src >= 0); - draw_emit_vertex_attr(vinfo, EMIT_4F, INTERP_POS, src); - break; - - case TGSI_SEMANTIC_COLOR: - src = find_vs_output(vs, TGSI_SEMANTIC_COLOR, - fs->input_semantic_index[i]); - assert(src >= 0); - draw_emit_vertex_attr(vinfo, EMIT_4F, colorInterp, src); - break; - - case TGSI_SEMANTIC_FOG: - src = find_vs_output(vs, TGSI_SEMANTIC_FOG, 0); -#if 1 - if (src < 0) /* XXX temp hack, try demos/fogcoord.c with this */ - src = 0; -#endif - assert(src >= 0); - draw_emit_vertex_attr(vinfo, EMIT_4F, INTERP_PERSPECTIVE, src); - break; - - case TGSI_SEMANTIC_GENERIC: - /* this includes texcoords and varying vars */ - src = find_vs_output(vs, TGSI_SEMANTIC_GENERIC, - fs->input_semantic_index[i]); - assert(src >= 0); - draw_emit_vertex_attr(vinfo, EMIT_4F, INTERP_PERSPECTIVE, src); - break; - - default: - assert(0); - } - } - - softpipe->psize_slot = find_vs_output(vs, TGSI_SEMANTIC_PSIZE, 0); - if (softpipe->psize_slot >= 0) { - draw_emit_vertex_attr(vinfo, EMIT_4F, INTERP_CONSTANT, - softpipe->psize_slot); - } - - draw_compute_vertex_size(vinfo); -} - - -/** - * Recompute cliprect from scissor bounds, scissor enable and surface size. - */ -static void -compute_cliprect(struct softpipe_context *sp) -{ - unsigned surfWidth, surfHeight; - - if (sp->framebuffer.num_cbufs > 0) { - surfWidth = sp->framebuffer.cbufs[0]->width; - surfHeight = sp->framebuffer.cbufs[0]->height; - } - else { - /* no surface? */ - surfWidth = sp->scissor.maxx; - surfHeight = sp->scissor.maxy; - } - - if (sp->rasterizer->scissor) { - /* clip to scissor rect */ - sp->cliprect.minx = MAX2(sp->scissor.minx, 0); - sp->cliprect.miny = MAX2(sp->scissor.miny, 0); - sp->cliprect.maxx = MIN2(sp->scissor.maxx, surfWidth); - sp->cliprect.maxy = MIN2(sp->scissor.maxy, surfHeight); - } - else { - /* clip to surface bounds */ - sp->cliprect.minx = 0; - sp->cliprect.miny = 0; - sp->cliprect.maxx = surfWidth; - sp->cliprect.maxy = surfHeight; - } -} - - -/* Hopefully this will remain quite simple, otherwise need to pull in - * something like the state tracker mechanism. - */ -void softpipe_update_derived( struct softpipe_context *softpipe ) -{ - if (softpipe->dirty & (SP_NEW_RASTERIZER | - SP_NEW_FS | - SP_NEW_VS)) - calculate_vertex_layout( softpipe ); - - if (softpipe->dirty & (SP_NEW_SCISSOR | - SP_NEW_DEPTH_STENCIL_ALPHA | - SP_NEW_FRAMEBUFFER)) - compute_cliprect(softpipe); - - if (softpipe->dirty & (SP_NEW_BLEND | - SP_NEW_DEPTH_STENCIL_ALPHA | - SP_NEW_FRAMEBUFFER | - SP_NEW_RASTERIZER | - SP_NEW_FS | - SP_NEW_QUERY)) - sp_build_quad_pipeline(softpipe); - - softpipe->dirty = 0; -} diff --git a/src/mesa/ppc/rtasm/spe_asm.c b/src/mesa/ppc/rtasm/spe_asm.c new file mode 100644 index 0000000000..f8aff9050b --- /dev/null +++ b/src/mesa/ppc/rtasm/spe_asm.c @@ -0,0 +1,351 @@ +/* + * (C) Copyright IBM Corporation 2008 + * 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 + * on 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 + * AUTHORS, COPYRIGHT HOLDERS, AND/OR THEIR 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 spe_asm.c + * Real-time assembly generation interface for Cell B.E. SPEs. + * + * \author Ian Romanick <idr@us.ibm.com> + */ +#ifdef GALLIUM_CELL +#include <inttypes.h> +#include <imports.h> +#include "spe_asm.h" + +/** + * SPE instruction types + * + * There are 6 primary instruction encodings used on the Cell's SPEs. Each of + * the following unions encodes one type. + * + * \bug + * If, at some point, we start generating SPE code from a little-endian host + * these unions will not work. + */ +/*@{*/ +/** + * Encode one output register with two input registers + */ +union spe_inst_RR { + uint32_t bits; + struct { + unsigned op:11; + unsigned rB:7; + unsigned rA:7; + unsigned rT:7; + } inst; +}; + + +/** + * Encode one output register with three input registers + */ +union spe_inst_RRR { + uint32_t bits; + struct { + unsigned op:4; + unsigned rT:7; + unsigned rB:7; + unsigned rA:7; + unsigned rC:7; + } inst; +}; + + +/** + * Encode one output register with one input reg. and a 7-bit signed immed + */ +union spe_inst_RI7 { + uint32_t bits; + struct { + unsigned op:11; + unsigned i7:7; + unsigned rA:7; + unsigned rT:7; + } inst; +}; + + +/** + * Encode one output register with one input reg. and a 10-bit signed immed + */ +union spe_inst_RI10 { + uint32_t bits; + struct { + unsigned op:8; + unsigned i10:10; + unsigned rA:7; + unsigned rT:7; + } inst; +}; + + +/** + * Encode one output register with a 16-bit signed immediate + */ +union spe_inst_RI16 { + uint32_t bits; + struct { + unsigned op:9; + unsigned i16:16; + unsigned rT:7; + } inst; +}; + + +/** + * Encode one output register with a 18-bit signed immediate + */ +union spe_inst_RI18 { + uint32_t bits; + struct { + unsigned op:7; + unsigned i18:18; + unsigned rT:7; + } inst; +}; +/*@}*/ + + +static void emit_RR(struct spe_function *p, unsigned op, unsigned rT, + unsigned rA, unsigned rB) +{ + union spe_inst_RR inst; + inst.inst.op = op; + inst.inst.rB = rB; + inst.inst.rA = rA; + inst.inst.rT = rT; + *p->csr = inst.bits; + p->csr++; +} + + +static void emit_RRR(struct spe_function *p, unsigned op, unsigned rT, + unsigned rA, unsigned rB, unsigned rC) +{ + union spe_inst_RRR inst; + inst.inst.op = op; + inst.inst.rT = rT; + inst.inst.rB = rB; + inst.inst.rA = rA; + inst.inst.rC = rC; + *p->csr = inst.bits; + p->csr++; +} + + +static void emit_RI7(struct spe_function *p, unsigned op, unsigned rT, + unsigned rA, int imm) +{ + union spe_inst_RI7 inst; + inst.inst.op = op; + inst.inst.i7 = imm; + inst.inst.rA = rA; + inst.inst.rT = rT; + *p->csr = inst.bits; + p->csr++; +} + + + +static void emit_RI10(struct spe_function *p, unsigned op, unsigned rT, + unsigned rA, int imm) +{ + union spe_inst_RI10 inst; + inst.inst.op = op; + inst.inst.i10 = imm; + inst.inst.rA = rA; + inst.inst.rT = rT; + *p->csr = inst.bits; + p->csr++; +} + + +static void emit_RI16(struct spe_function *p, unsigned op, unsigned rT, + int imm) +{ + union spe_inst_RI16 inst; + inst.inst.op = op; + inst.inst.i16 = imm; + inst.inst.rT = rT; + *p->csr = inst.bits; + p->csr++; +} + + +static void emit_RI18(struct spe_function *p, unsigned op, unsigned rT, + int imm) +{ + union spe_inst_RI18 inst; + inst.inst.op = op; + inst.inst.i18 = imm; + inst.inst.rT = rT; + *p->csr = inst.bits; + p->csr++; +} + + + + +#define EMIT_(_name, _op) \ +void _name (struct spe_function *p, unsigned rT) \ +{ \ + emit_RR(p, _op, rT, 0, 0); \ +} + +#define EMIT_R(_name, _op) \ +void _name (struct spe_function *p, unsigned rT, unsigned rA) \ +{ \ + emit_RR(p, _op, rT, rA, 0); \ +} + +#define EMIT_RR(_name, _op) \ +void _name (struct spe_function *p, unsigned rT, unsigned rA, unsigned rB) \ +{ \ + emit_RR(p, _op, rT, rA, rB); \ +} + +#define EMIT_RRR(_name, _op) \ +void _name (struct spe_function *p, unsigned rT, unsigned rA, unsigned rB, unsigned rC) \ +{ \ + emit_RRR(p, _op, rT, rA, rB, rC); \ +} + +#define EMIT_RI7(_name, _op) \ +void _name (struct spe_function *p, unsigned rT, unsigned rA, int imm) \ +{ \ + emit_RI7(p, _op, rT, rA, imm); \ +} + +#define EMIT_RI10(_name, _op) \ +void _name (struct spe_function *p, unsigned rT, unsigned rA, int imm) \ +{ \ + emit_RI10(p, _op, rT, rA, imm); \ +} + +#define EMIT_RI16(_name, _op) \ +void _name (struct spe_function *p, unsigned rT, int imm) \ +{ \ + emit_RI16(p, _op, rT, imm); \ +} + +#define EMIT_RI18(_name, _op) \ +void _name (struct spe_function *p, unsigned rT, int imm) \ +{ \ + emit_RI18(p, _op, rT, imm); \ +} + +#define EMIT_I16(_name, _op) \ +void _name (struct spe_function *p, int imm) \ +{ \ + emit_RI16(p, _op, 0, imm); \ +} + +#include "spe_asm.h" + + +/* + */ +void spe_init_func(struct spe_function *p, unsigned code_size) +{ + p->store = _mesa_align_malloc(code_size, 16); + p->csr = p->store; +} + + +void spe_release_func(struct spe_function *p) +{ + _mesa_align_free(p->store); + p->store = NULL; + p->csr = NULL; +} + + +void spe_bi(struct spe_function *p, unsigned rA, int d, int e) +{ + emit_RI7(p, 0x1a8, 0, rA, (d << 5) | (e << 4)); +} + +void spe_iret(struct spe_function *p, unsigned rA, int d, int e) +{ + emit_RI7(p, 0x1aa, 0, rA, (d << 5) | (e << 4)); +} + +void spe_bisled(struct spe_function *p, unsigned rT, unsigned rA, int d, + int e) +{ + emit_RI7(p, 0x1ab, rT, rA, (d << 5) | (e << 4)); +} + +void spe_bisl(struct spe_function *p, unsigned rT, unsigned rA, int d, + int e) +{ + emit_RI7(p, 0x1a9, rT, rA, (d << 5) | (e << 4)); +} + +void spe_biz(struct spe_function *p, unsigned rT, unsigned rA, int d, + int e) +{ + emit_RI7(p, 0x128, rT, rA, (d << 5) | (e << 4)); +} + +void spe_binz(struct spe_function *p, unsigned rT, unsigned rA, int d, int e) +{ + emit_RI7(p, 0x129, rT, rA, (d << 5) | (e << 4)); +} + +void spe_bihz(struct spe_function *p, unsigned rT, unsigned rA, int d, int e) +{ + emit_RI7(p, 0x12a, rT, rA, (d << 5) | (e << 4)); +} + +void spe_bihnz(struct spe_function *p, unsigned rT, unsigned rA, int d, int e) +{ + emit_RI7(p, 0x12b, rT, rA, (d << 5) | (e << 4)); +} + + +/* Hint-for-branch instructions + */ +#if 0 +hbr; +hbra; +hbrr; +#endif + + +/* Control instructions + */ +#if 0 +stop; +EMIT_RR (spe_stopd, 0x140); +EMIT_ (spe_lnop, 0x001); +EMIT_ (spe_nop, 0x201); +sync; +EMIT_ (spe_dsync, 0x003); +EMIT_R (spe_mfspr, 0x00c); +EMIT_R (spe_mtspr, 0x10c); +#endif + +#endif /* GALLIUM_CELL */ diff --git a/src/mesa/ppc/rtasm/spe_asm.h b/src/mesa/ppc/rtasm/spe_asm.h new file mode 100644 index 0000000000..9532669b8c --- /dev/null +++ b/src/mesa/ppc/rtasm/spe_asm.h @@ -0,0 +1,310 @@ +/* + * (C) Copyright IBM Corporation 2008 + * 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 + * on 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 + * AUTHORS, COPYRIGHT HOLDERS, AND/OR THEIR 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 spe_asm.h + * Real-time assembly generation interface for Cell B.E. SPEs. + * + * \author Ian Romanick <idr@us.ibm.com> + */ + +#ifndef SPE_ASM_H +#define SPE_ASM_H + +struct spe_function { + /** + * + */ + uint32_t *store; + uint32_t *csr; + const char *fn; +}; + +extern void spe_init_func(struct spe_function *p, unsigned code_size); +extern void spe_release_func(struct spe_function *p); + +#endif /* SPE_ASM_H */ + +#ifndef EMIT_ +#define EMIT_(name, _op) \ + extern void _name (struct spe_function *p, unsigned rT) +#define EMIT_R(_name, _op) \ + extern void _name (struct spe_function *p, unsigned rT, unsigned rA) +#define EMIT_RR(_name, _op) \ + extern void _name (struct spe_function *p, unsigned rT, unsigned rA, \ + unsigned rB) +#define EMIT_RRR(_name, _op) \ + extern void _name (struct spe_function *p, unsigned rT, unsigned rA, \ + unsigned rB, unsigned rC) +#define EMIT_RI7(_name, _op) \ + extern void _name (struct spe_function *p, unsigned rT, unsigned rA, \ + int imm) +#define EMIT_RI10(_name, _op) \ + extern void _name (struct spe_function *p, unsigned rT, unsigned rA, \ + int imm) +#define EMIT_RI16(_name, _op) \ + extern void _name (struct spe_function *p, unsigned rT, int imm) +#define EMIT_RI18(_name, _op) \ + extern void _name (struct spe_function *p, unsigned rT, int imm) +#define EMIT_I16(_name, _op) \ + extern void _name (struct spe_function *p, int imm) +#define UNDEF_EMIT_MACROS +#endif /* EMIT_ */ + + +/* Memory load / store instructions + */ +EMIT_RI10(spe_lqd, 0x034); +EMIT_RR (spe_lqx, 0x1c4); +EMIT_RI16(spe_lqa, 0x061); +EMIT_RI16(spe_lqr, 0x067); +EMIT_RI10(spe_stqd, 0x024); +EMIT_RR (spe_stqx, 0x144); +EMIT_RI16(spe_stqa, 0x041); +EMIT_RI16(spe_stqr, 0x047); +EMIT_RI7 (spe_cbd, 0x1f4); +EMIT_RR (spe_cbx, 0x1d4); +EMIT_RI7 (spe_chd, 0x1f5); +EMIT_RI7 (spe_chx, 0x1d5); +EMIT_RI7 (spe_cwd, 0x1f6); +EMIT_RI7 (spe_cwx, 0x1d6); +EMIT_RI7 (spe_cdd, 0x1f7); +EMIT_RI7 (spe_cdx, 0x1d7); + + +/* Constant formation instructions + */ +EMIT_RI16(spe_ilh, 0x083); +EMIT_RI16(spe_ilhu, 0x082); +EMIT_RI16(spe_il, 0x081); +EMIT_RI18(spe_ila, 0x021); +EMIT_RI16(spe_iohl, 0x0c1); +EMIT_RI16(spe_fsmbi, 0x0c5); + + +/* Integer and logical instructions + */ +EMIT_RR (spe_ah, 0x0c8); +EMIT_RI10(spe_ahi, 0x01d); +EMIT_RR (spe_a, 0x0c0); +EMIT_RI10(spe_ai, 0x01c); +EMIT_RR (spe_sfh, 0x048); +EMIT_RI10(spe_sfhi, 0x00d); +EMIT_RR (spe_sf, 0x040); +EMIT_RI10(spe_sfi, 0x00c); +EMIT_RR (spe_addx, 0x340); +EMIT_RR (spe_cg, 0x0c2); +EMIT_RR (spe_cgx, 0x342); +EMIT_RR (spe_sfx, 0x341); +EMIT_RR (spe_bg, 0x042); +EMIT_RR (spe_bgx, 0x343); +EMIT_RR (spe_mpy, 0x3c4); +EMIT_RR (spe_mpyu, 0x3cc); +EMIT_RI10(spe_mpyi, 0x074); +EMIT_RI10(spe_mpyui, 0x075); +EMIT_RRR (spe_mpya, 0x00c); +EMIT_RR (spe_mpyh, 0x3c5); +EMIT_RR (spe_mpys, 0x3c7); +EMIT_RR (spe_mpyhh, 0x3c6); +EMIT_RR (spe_mpyhha, 0x346); +EMIT_RR (spe_mpyhhu, 0x3ce); +EMIT_RR (spe_mpyhhau, 0x34e); +EMIT_R (spe_clz, 0x2a5); +EMIT_R (spe_cntb, 0x2b4); +EMIT_R (spe_fsmb, 0x1b6); +EMIT_R (spe_fsmh, 0x1b5); +EMIT_R (spe_fsm, 0x1b4); +EMIT_R (spe_gbb, 0x1b2); +EMIT_R (spe_gbh, 0x1b1); +EMIT_R (spe_gb, 0x1b0); +EMIT_RR (spe_avgb, 0x0d3); +EMIT_RR (spe_absdb, 0x053); +EMIT_RR (spe_sumb, 0x253); +EMIT_R (spe_xsbh, 0x2b6); +EMIT_R (spe_xshw, 0x2ae); +EMIT_R (spe_xswd, 0x2a6); +EMIT_RR (spe_and, 0x0c1); +EMIT_RR (spe_andc, 0x2c1); +EMIT_RI10(spe_andbi, 0x016); +EMIT_RI10(spe_andhi, 0x015); +EMIT_RI10(spe_andi, 0x014); +EMIT_RR (spe_or, 0x041); +EMIT_RR (spe_orc, 0x2c9); +EMIT_RI10(spe_orbi, 0x006); +EMIT_RI10(spe_orhi, 0x005); +EMIT_RI10(spe_ori, 0x004); +EMIT_R (spe_orx, 0x1f0); +EMIT_RR (spe_xor, 0x241); +EMIT_RI10(spe_xorbi, 0x026); +EMIT_RI10(spe_xorhi, 0x025); +EMIT_RI10(spe_xori, 0x024); +EMIT_RR (spe_nand, 0x0c9); +EMIT_RR (spe_nor, 0x049); +EMIT_RR (spe_eqv, 0x249); +EMIT_RRR (spe_selb, 0x008); +EMIT_RRR (spe_shufb, 0x00b); + + +/* Shift and rotate instructions + */ +EMIT_RR (spe_shlh, 0x05f); +EMIT_RI7 (spe_shlhi, 0x07f); +EMIT_RR (spe_shl, 0x05b); +EMIT_RI7 (spe_shli, 0x07b); +EMIT_RR (spe_shlqbi, 0x1db); +EMIT_RI7 (spe_shlqbii, 0x1fb); +EMIT_RR (spe_shlqby, 0x1df); +EMIT_RI7 (spe_shlqbyi, 0x1ff); +EMIT_RR (spe_shlqbybi, 0x1cf); +EMIT_RR (spe_roth, 0x05c); +EMIT_RI7 (spe_rothi, 0x07c); +EMIT_RR (spe_rot, 0x058); +EMIT_RI7 (spe_roti, 0x078); +EMIT_RR (spe_rotqby, 0x1dc); +EMIT_RI7 (spe_rotqbyi, 0x1fc); +EMIT_RR (spe_rotqbybi, 0x1cc); +EMIT_RR (spe_rotqbi, 0x1d8); +EMIT_RI7 (spe_rotqbii, 0x1f8); +EMIT_RR (spe_rothm, 0x05d); +EMIT_RI7 (spe_rothmi, 0x07d); +EMIT_RR (spe_rotm, 0x059); +EMIT_RI7 (spe_rotmi, 0x079); +EMIT_RR (spe_rotqmby, 0x1dd); +EMIT_RI7 (spe_rotqmbyi, 0x1fd); +EMIT_RR (spe_rotqmbybi, 0x1cd); +EMIT_RR (spe_rotqmbi, 0x1c9); +EMIT_RI7 (spe_rotqmbii, 0x1f9); +EMIT_RR (spe_rotmah, 0x05e); +EMIT_RI7 (spe_rotmahi, 0x07e); +EMIT_RR (spe_rotma, 0x05a); +EMIT_RI7 (spe_rotmai, 0x07a); + + +/* Compare, branch, and halt instructions + */ +EMIT_RR (spe_heq, 0x3d8); +EMIT_RI10(spe_heqi, 0x07f); +EMIT_RR (spe_hgt, 0x258); +EMIT_RI10(spe_hgti, 0x04f); +EMIT_RR (spe_hlgt, 0x2d8); +EMIT_RI10(spe_hlgti, 0x05f); +EMIT_RR (spe_ceqb, 0x3d0); +EMIT_RI10(spe_ceqbi, 0x07e); +EMIT_RR (spe_ceqh, 0x3c8); +EMIT_RI10(spe_ceqhi, 0x07d); +EMIT_RR (spe_ceq, 0x3c0); +EMIT_RI10(spe_ceqi, 0x07c); +EMIT_RR (spe_cgtb, 0x250); +EMIT_RI10(spe_cgtbi, 0x04e); +EMIT_RR (spe_cgth, 0x248); +EMIT_RI10(spe_cgthi, 0x04d); +EMIT_RR (spe_cgt, 0x240); +EMIT_RI10(spe_cgti, 0x04c); +EMIT_RR (spe_clgtb, 0x2d0); +EMIT_RI10(spe_clgtbi, 0x05e); +EMIT_RR (spe_clgth, 0x2c8); +EMIT_RI10(spe_clgthi, 0x05d); +EMIT_RR (spe_clgt, 0x2c0); +EMIT_RI10(spe_clgti, 0x05c); +EMIT_I16 (spe_br, 0x064); +EMIT_I16 (spe_bra, 0x060); +EMIT_RI16(spe_brsl, 0x066); +EMIT_RI16(spe_brasl, 0x062); +EMIT_RI16(spe_brnz, 0x042); +EMIT_RI16(spe_brz, 0x040); +EMIT_RI16(spe_brhnz, 0x046); +EMIT_RI16(spe_brhz, 0x044); + +extern void spe_bi(struct spe_function *p, unsigned rA, int d, int e); +extern void spe_iret(struct spe_function *p, unsigned rA, int d, int e); +extern void spe_bisled(struct spe_function *p, unsigned rT, unsigned rA, + int d, int e); +extern void spe_bisl(struct spe_function *p, unsigned rT, unsigned rA, + int d, int e); +extern void spe_biz(struct spe_function *p, unsigned rT, unsigned rA, + int d, int e); +extern void spe_binz(struct spe_function *p, unsigned rT, unsigned rA, + int d, int e); +extern void spe_bihz(struct spe_function *p, unsigned rT, unsigned rA, + int d, int e); +extern void spe_bihnz(struct spe_function *p, unsigned rT, unsigned rA, + int d, int e); + + +/* Floating-point instructions + */ +EMIT_RR (spe_fa, 0x2c4); +EMIT_RR (spe_dfa, 0x2cc); +EMIT_RR (spe_fs, 0x2c5); +EMIT_RR (spe_dfs, 0x2cd); +EMIT_RR (spe_fm, 0x2c6); +EMIT_RR (spe_dfm, 0x2ce); +EMIT_RRR (spe_fma, 0x00e); +EMIT_RR (spe_dfma, 0x35c); +EMIT_RRR (spe_fnms, 0x00d); +EMIT_RR (spe_dfnms, 0x35e); +EMIT_RRR (spe_fms, 0x00f); +EMIT_RR (spe_dfms, 0x35d); +EMIT_RR (spe_dfnma, 0x35f); +EMIT_R (spe_frest, 0x1b8); +EMIT_R (spe_frsqest, 0x1b9); +EMIT_RR (spe_fi, 0x3d4); +EMIT_RI7 (spe_csflt, 0x3da); +EMIT_RI7 (spe_cflts, 0x3d8); +EMIT_RI7 (spe_cuflt, 0x3db); +EMIT_RI7 (spe_cfltu, 0x3d9); +EMIT_R (spe_frds, 0x3b9); +EMIT_R (spe_fesd, 0x3b8); +EMIT_RR (spe_dfceq, 0x3c3); +EMIT_RR (spe_dfcmeq, 0x3cb); +EMIT_RR (spe_dfcgt, 0x2c3); +EMIT_RR (spe_dfcmgt, 0x2cb); +EMIT_RI7 (spe_dftsv, 0x3bf); +EMIT_RR (spe_fceq, 0x3c2); +EMIT_RR (spe_fcmeq, 0x3ca); +EMIT_RR (spe_fcgt, 0x2c2); +EMIT_RR (spe_fcmgt, 0x2ca); +EMIT_R (spe_fscrwr, 0x3ba); +EMIT_ (spe_fscrrd, 0x398); + + +/* Channel instructions + */ +EMIT_R (spe_rdch, 0x00d); +EMIT_R (spe_rdchcnt, 0x00f); +EMIT_R (spe_wrch, 0x10d); + + +#ifdef UNDEF_EMIT_MACROS +#undef EMIT_ +#undef EMIT_R +#undef EMIT_RR +#undef EMIT_RRR +#undef EMIT_RI7 +#undef EMIT_RI10 +#undef EMIT_RI16 +#undef EMIT_RI18 +#undef EMIT_I16 +#undef UNDEF_EMIT_MACROS +#endif /* EMIT_ */ diff --git a/src/mesa/sources b/src/mesa/sources index 96ae3dbca0..2d07738210 100644 --- a/src/mesa/sources +++ b/src/mesa/sources @@ -158,45 +158,45 @@ VF_SOURCES = \ DRAW_SOURCES = \ - pipe/draw/draw_clip.c \ - pipe/draw/draw_context.c\ - pipe/draw/draw_cull.c \ - pipe/draw/draw_debug.c \ - pipe/draw/draw_flatshade.c \ - pipe/draw/draw_offset.c \ - pipe/draw/draw_prim.c \ - pipe/draw/draw_stipple.c \ - pipe/draw/draw_twoside.c \ - pipe/draw/draw_unfilled.c \ - pipe/draw/draw_validate.c \ - pipe/draw/draw_vbuf.c \ - pipe/draw/draw_vertex.c \ - pipe/draw/draw_vertex_cache.c \ - pipe/draw/draw_vertex_fetch.c \ - pipe/draw/draw_vertex_shader.c \ - pipe/draw/draw_vf.c \ - pipe/draw/draw_vf_generic.c \ - pipe/draw/draw_vf_sse.c \ - pipe/draw/draw_wide_prims.c + $(TOP)/src/gallium/aux/draw/draw_clip.c \ + $(TOP)/src/gallium/aux/draw/draw_context.c\ + $(TOP)/src/gallium/aux/draw/draw_cull.c \ + $(TOP)/src/gallium/aux/draw/draw_debug.c \ + $(TOP)/src/gallium/aux/draw/draw_flatshade.c \ + $(TOP)/src/gallium/aux/draw/draw_offset.c \ + $(TOP)/src/gallium/aux/draw/draw_prim.c \ + $(TOP)/src/gallium/aux/draw/draw_stipple.c \ + $(TOP)/src/gallium/aux/draw/draw_twoside.c \ + $(TOP)/src/gallium/aux/draw/draw_unfilled.c \ + $(TOP)/src/gallium/aux/draw/draw_validate.c \ + $(TOP)/src/gallium/aux/draw/draw_vbuf.c \ + $(TOP)/src/gallium/aux/draw/draw_vertex.c \ + $(TOP)/src/gallium/aux/draw/draw_vertex_cache.c \ + $(TOP)/src/gallium/aux/draw/draw_vertex_fetch.c \ + $(TOP)/src/gallium/aux/draw/draw_vertex_shader.c \ + $(TOP)/src/gallium/aux/draw/draw_vf.c \ + $(TOP)/src/gallium/aux/draw/draw_vf_generic.c \ + $(TOP)/src/gallium/aux/draw/draw_vf_sse.c \ + $(TOP)/src/gallium/aux/draw/draw_wide_prims.c TGSIEXEC_SOURCES = \ - pipe/tgsi/exec/tgsi_exec.c \ - pipe/tgsi/exec/tgsi_sse2.c + $(TOP)/src/gallium/aux/tgsi/exec/tgsi_exec.c \ + $(TOP)/src/gallium/aux/tgsi/exec/tgsi_sse2.c TGSIUTIL_SOURCES = \ - pipe/tgsi/util/tgsi_build.c \ - pipe/tgsi/util/tgsi_dump.c \ - pipe/tgsi/util/tgsi_parse.c \ - pipe/tgsi/util/tgsi_util.c + $(TOP)/src/gallium/aux/tgsi/util/tgsi_build.c \ + $(TOP)/src/gallium/aux/tgsi/util/tgsi_dump.c \ + $(TOP)/src/gallium/aux/tgsi/util/tgsi_parse.c \ + $(TOP)/src/gallium/aux/tgsi/util/tgsi_util.c STATECACHE_SOURCES = \ - pipe/cso_cache/cso_hash.c \ - pipe/cso_cache/cso_cache.c + $(TOP)/src/gallium/aux/cso_cache/cso_hash.c \ + $(TOP)/src/gallium/aux/cso_cache/cso_cache.c PIPEUTIL_SOURCES = \ - pipe/util/p_debug.c \ - pipe/util/p_tile.c \ - pipe/util/p_util.c + $(TOP)/src/gallium/aux/util/p_debug.c \ + $(TOP)/src/gallium/aux/util/p_tile.c \ + $(TOP)/src/gallium/aux/util/p_util.c STATETRACKER_SOURCES = \ state_tracker/st_atom.c \ @@ -288,6 +288,7 @@ ASM_C_SOURCES = \ x86/rtasm/x86sse.c \ sparc/sparc.c \ ppc/common_ppc.c \ + ppc/rtasm/spe_asm.c \ x86-64/x86-64.c X86_SOURCES = \ @@ -330,13 +331,13 @@ __COMMON_DRIVER_SOURCES = \ drivers/common/driverfuncs.c X11_DRIVER_SOURCES = \ - pipe/xlib/glxapi.c \ - pipe/xlib/fakeglx.c \ - pipe/xlib/xfonts.c \ - pipe/xlib/xm_api.c \ - pipe/xlib/xm_winsys.c \ - pipe/xlib/xm_winsys_aub.c \ - pipe/xlib/brw_aub.c + $(TOP)/src/gallium/winsys/xlib/glxapi.c \ + $(TOP)/src/gallium/winsys/xlib/fakeglx.c \ + $(TOP)/src/gallium/winsys/xlib/xfonts.c \ + $(TOP)/src/gallium/winsys/xlib/xm_api.c \ + $(TOP)/src/gallium/winsys/xlib/xm_winsys.c \ + $(TOP)/src/gallium/winsys/xlib/xm_winsys_aub.c \ + $(TOP)/src/gallium/winsys/xlib/brw_aub.c OSMESA_DRIVER_SOURCES = \ drivers/osmesa/osmesa.c @@ -424,7 +425,10 @@ FBDEV_DRIVER_OBJECTS = $(FBDEV_DRIVER_SOURCES:.c=.o) INCLUDE_DIRS = \ -I$(TOP)/include \ -I$(TOP)/src/mesa \ - -I$(TOP)/src/mesa/main + -I$(TOP)/src/mesa/main \ + -I$(TOP)/src/gallium/include \ + -I$(TOP)/src/gallium/drivers \ + -I$(TOP)/src/gallium/aux OLD_INCLUDE_DIRS = \ -I$(TOP)/src/mesa/tnl \ @@ -434,4 +438,4 @@ OLD_INCLUDE_DIRS = \ -I$(TOP)/src/mesa/shader \ -I$(TOP)/src/mesa/shader/grammar \ -I$(TOP)/src/mesa/shader/slang \ - -I$(TOP)/src/mesa/pipe/tgsi + -I$(TOP)/s$(TOP)/src/gallium/aux/tgsi diff --git a/src/mesa/state_tracker/st_atom_shader.c b/src/mesa/state_tracker/st_atom_shader.c index 2c6ec8421b..b67b620eaa 100644 --- a/src/mesa/state_tracker/st_atom_shader.c +++ b/src/mesa/state_tracker/st_atom_shader.c @@ -43,7 +43,7 @@ #include "pipe/p_context.h" #include "pipe/p_shader_tokens.h" -#include "pipe/cso_cache/cso_cache.h" +#include "cso_cache/cso_cache.h" #include "st_context.h" #include "st_cache.h" diff --git a/src/mesa/state_tracker/st_cache.c b/src/mesa/state_tracker/st_cache.c index e0965b217a..2979e7fae5 100644 --- a/src/mesa/state_tracker/st_cache.c +++ b/src/mesa/state_tracker/st_cache.c @@ -36,8 +36,8 @@ #include "pipe/p_state.h" -#include "pipe/cso_cache/cso_cache.h" -#include "pipe/cso_cache/cso_hash.h" +#include "cso_cache/cso_cache.h" +#include "cso_cache/cso_hash.h" /* Those function will either find the state of the given template diff --git a/src/mesa/state_tracker/st_cache.h b/src/mesa/state_tracker/st_cache.h index e0c176b0ff..b81de316ec 100644 --- a/src/mesa/state_tracker/st_cache.h +++ b/src/mesa/state_tracker/st_cache.h @@ -33,7 +33,7 @@ #ifndef ST_CACHE_H #define ST_CACHE_H -#include "pipe/cso_cache/cso_cache.h" +#include "cso_cache/cso_cache.h" struct pipe_blend_state; struct pipe_sampler_state; diff --git a/src/mesa/state_tracker/st_cb_accum.c b/src/mesa/state_tracker/st_cb_accum.c index 3a3bf9016d..663c4f205d 100644 --- a/src/mesa/state_tracker/st_cb_accum.c +++ b/src/mesa/state_tracker/st_cb_accum.c @@ -43,7 +43,7 @@ #include "pipe/p_context.h" #include "pipe/p_defines.h" #include "pipe/p_inlines.h" -#include "pipe/util/p_tile.h" +#include "util/p_tile.h" #define UNCLAMPED_FLOAT_TO_SHORT(us, f) \ diff --git a/src/mesa/state_tracker/st_cb_clear.c b/src/mesa/state_tracker/st_cb_clear.c index 410062e1e8..78baf772f4 100644 --- a/src/mesa/state_tracker/st_cb_clear.c +++ b/src/mesa/state_tracker/st_cb_clear.c @@ -272,6 +272,14 @@ clear_with_quad(GLcontext *ctx, const GLfloat x1 = ctx->DrawBuffer->_Xmax; const GLfloat y1 = ctx->DrawBuffer->_Ymax; + /* + printf("%s %s%s%s %f,%f %f,%f\n", __FUNCTION__, + color ? "color, " : "", + depth ? "depth, " : "", + stencil ? "stencil" : "", + x0, y0, + x1, y1); + */ /* blend state: RGBA masking */ { @@ -389,13 +397,44 @@ clear_with_quad(GLcontext *ctx, * Determine if we need to clear the depth buffer by drawing a quad. */ static INLINE GLboolean -check_clear_color_with_quad(GLcontext *ctx) +check_clear_color_with_quad(GLcontext *ctx, struct gl_renderbuffer *rb) +{ + const struct st_renderbuffer *strb = st_renderbuffer(rb); + + if (strb->surface->status == PIPE_SURFACE_STATUS_UNDEFINED) + return FALSE; + + if (ctx->Scissor.Enabled) + return TRUE; + + if (!ctx->Color.ColorMask[0] || + !ctx->Color.ColorMask[1] || + !ctx->Color.ColorMask[2] || + !ctx->Color.ColorMask[3]) + return TRUE; + + return FALSE; +} + + +static INLINE GLboolean +check_clear_depth_stencil_with_quad(GLcontext *ctx, struct gl_renderbuffer *rb) { - return !(ctx->Color.ColorMask[0] && - ctx->Color.ColorMask[1] && - ctx->Color.ColorMask[2] && - ctx->Color.ColorMask[3] && - !ctx->Scissor.Enabled); + const struct st_renderbuffer *strb = st_renderbuffer(rb); + const GLuint stencilMax = (1 << rb->StencilBits) - 1; + GLboolean maskStencil + = (ctx->Stencil.WriteMask[0] & stencilMax) != stencilMax; + + if (strb->surface->status == PIPE_SURFACE_STATUS_UNDEFINED) + return FALSE; + + if (ctx->Scissor.Enabled) + return TRUE; + + if (maskStencil) + return TRUE; + + return FALSE; } @@ -407,10 +446,19 @@ check_clear_depth_with_quad(GLcontext *ctx, struct gl_renderbuffer *rb) { const struct st_renderbuffer *strb = st_renderbuffer(rb); const GLboolean isDS = is_depth_stencil_format(strb->surface->format); - return ctx->Scissor.Enabled - || (isDS && - strb->surface->status == PIPE_SURFACE_STATUS_DEFINED && - ctx->DrawBuffer->Visual.stencilBits > 0); + + if (strb->surface->status == PIPE_SURFACE_STATUS_UNDEFINED) + return FALSE; + + if (ctx->Scissor.Enabled) + return TRUE; + + if (isDS && + strb->surface->status == PIPE_SURFACE_STATUS_DEFINED && + ctx->DrawBuffer->Visual.stencilBits > 0) + return TRUE; + + return FALSE; } @@ -425,9 +473,27 @@ check_clear_stencil_with_quad(GLcontext *ctx, struct gl_renderbuffer *rb) const GLuint stencilMax = (1 << rb->StencilBits) - 1; const GLboolean maskStencil = (ctx->Stencil.WriteMask[0] & stencilMax) != stencilMax; - return maskStencil - || ctx->Scissor.Enabled - || (isDS && ctx->DrawBuffer->Visual.depthBits > 0); + + if (strb->surface->status == PIPE_SURFACE_STATUS_UNDEFINED) + return FALSE; + + if (maskStencil) + return TRUE; + + if (ctx->Scissor.Enabled) + return TRUE; + + /* This is correct, but it is necessary to look at the depth clear + * value held in the surface when it comes time to issue the clear, + * rather than taking depth and stencil clear values from the + * current state. + */ + if (isDS && + strb->surface->status == PIPE_SURFACE_STATUS_DEFINED && + ctx->DrawBuffer->Visual.depthBits > 0) + return TRUE; + + return FALSE; } @@ -436,14 +502,10 @@ check_clear_stencil_with_quad(GLcontext *ctx, struct gl_renderbuffer *rb) static void clear_color_buffer(GLcontext *ctx, struct gl_renderbuffer *rb) { - struct st_renderbuffer *strb = st_renderbuffer(rb); - - if (ctx->Color.ColorMask[0] && - ctx->Color.ColorMask[1] && - ctx->Color.ColorMask[2] && - ctx->Color.ColorMask[3] && - !ctx->Scissor.Enabled) + if (!check_clear_color_with_quad( ctx, rb )) { + struct st_renderbuffer *strb = st_renderbuffer(rb); + /* clear whole buffer w/out masking */ GLuint clearValue = color_value(strb->surface->format, ctx->Color.ClearColor); @@ -482,14 +544,8 @@ static void clear_stencil_buffer(GLcontext *ctx, struct gl_renderbuffer *rb) { struct st_renderbuffer *strb = st_renderbuffer(rb); - const GLboolean isDS = is_depth_stencil_format(strb->surface->format); - const GLuint stencilMax = (1 << rb->StencilBits) - 1; - GLboolean maskStencil - = (ctx->Stencil.WriteMask[0] & stencilMax) != stencilMax; - if (maskStencil || - ctx->Scissor.Enabled || - (isDS && ctx->DrawBuffer->Visual.depthBits > 0)) { + if (check_clear_stencil_with_quad(ctx, rb)) { /* masking or scissoring or combined depth/stencil buffer */ clear_with_quad(ctx, GL_FALSE, GL_FALSE, GL_TRUE); } @@ -505,13 +561,10 @@ static void clear_depth_stencil_buffer(GLcontext *ctx, struct gl_renderbuffer *rb) { struct st_renderbuffer *strb = st_renderbuffer(rb); - const GLuint stencilMax = (1 << rb->StencilBits) - 1; - GLboolean maskStencil - = (ctx->Stencil.WriteMask[0] & stencilMax) != stencilMax; assert(is_depth_stencil_format(strb->surface->format)); - if (!maskStencil && !ctx->Scissor.Enabled) { + if (check_clear_depth_stencil_with_quad(ctx, rb)) { /* clear whole buffer w/out masking */ GLuint clearValue = depth_value(strb->surface->format, ctx->Depth.Clear); @@ -520,7 +573,7 @@ clear_depth_stencil_buffer(GLcontext *ctx, struct gl_renderbuffer *rb) clearValue |= ctx->Stencil.Clear << 24; break; case PIPE_FORMAT_Z24S8_UNORM: - clearValue |= clearValue | ctx->Stencil.Clear; + clearValue |= ctx->Stencil.Clear; break; default: assert(0); diff --git a/src/mesa/state_tracker/st_cb_drawpixels.c b/src/mesa/state_tracker/st_cb_drawpixels.c index f13199a3c0..e2d4e06da1 100644 --- a/src/mesa/state_tracker/st_cb_drawpixels.c +++ b/src/mesa/state_tracker/st_cb_drawpixels.c @@ -56,7 +56,7 @@ #include "pipe/p_defines.h" #include "pipe/p_inlines.h" #include "pipe/p_winsys.h" -#include "pipe/util/p_tile.h" +#include "util/p_tile.h" #include "shader/prog_instruction.h" diff --git a/src/mesa/state_tracker/st_cb_feedback.c b/src/mesa/state_tracker/st_cb_feedback.c index 31744151f1..5315294c07 100644 --- a/src/mesa/state_tracker/st_cb_feedback.c +++ b/src/mesa/state_tracker/st_cb_feedback.c @@ -53,10 +53,10 @@ #include "pipe/p_context.h" #include "pipe/p_defines.h" #include "pipe/p_winsys.h" -#include "pipe/cso_cache/cso_cache.h" +#include "cso_cache/cso_cache.h" -#include "pipe/draw/draw_context.h" -#include "pipe/draw/draw_private.h" +#include "draw/draw_context.h" +#include "draw/draw_private.h" /** diff --git a/src/mesa/state_tracker/st_cb_program.c b/src/mesa/state_tracker/st_cb_program.c index af3ee65504..61d4f4c41c 100644 --- a/src/mesa/state_tracker/st_cb_program.c +++ b/src/mesa/state_tracker/st_cb_program.c @@ -39,8 +39,8 @@ #include "shader/programopt.h" #include "shader/shader_api.h" -#include "pipe/cso_cache/cso_cache.h" -#include "pipe/draw/draw_context.h" +#include "cso_cache/cso_cache.h" +#include "draw/draw_context.h" #include "st_context.h" #include "st_program.h" diff --git a/src/mesa/state_tracker/st_cb_rasterpos.c b/src/mesa/state_tracker/st_cb_rasterpos.c index 7e347c4893..5b0eb6022b 100644 --- a/src/mesa/state_tracker/st_cb_rasterpos.c +++ b/src/mesa/state_tracker/st_cb_rasterpos.c @@ -44,8 +44,8 @@ #include "st_draw.h" #include "st_cb_rasterpos.h" #include "st_draw.h" -#include "pipe/draw/draw_context.h" -#include "pipe/draw/draw_private.h" +#include "draw/draw_context.h" +#include "draw/draw_private.h" #include "shader/prog_instruction.h" #include "vbo/vbo.h" diff --git a/src/mesa/state_tracker/st_cb_readpixels.c b/src/mesa/state_tracker/st_cb_readpixels.c index 868c5f3c5f..c89c74229e 100644 --- a/src/mesa/state_tracker/st_cb_readpixels.c +++ b/src/mesa/state_tracker/st_cb_readpixels.c @@ -40,7 +40,7 @@ #include "pipe/p_context.h" #include "pipe/p_defines.h" #include "pipe/p_inlines.h" -#include "pipe/util/p_tile.h" +#include "util/p_tile.h" #include "st_context.h" #include "st_cb_readpixels.h" #include "st_cb_fbo.h" diff --git a/src/mesa/state_tracker/st_cb_texture.c b/src/mesa/state_tracker/st_cb_texture.c index 91a40288cc..03dbb30b0f 100644 --- a/src/mesa/state_tracker/st_cb_texture.c +++ b/src/mesa/state_tracker/st_cb_texture.c @@ -47,7 +47,7 @@ #include "pipe/p_context.h" #include "pipe/p_defines.h" #include "pipe/p_inlines.h" -#include "pipe/util/p_tile.h" +#include "util/p_tile.h" #define DBG if (0) printf diff --git a/src/mesa/state_tracker/st_context.c b/src/mesa/state_tracker/st_context.c index bf4618bed8..09e389f9dc 100644 --- a/src/mesa/state_tracker/st_context.c +++ b/src/mesa/state_tracker/st_context.c @@ -54,8 +54,8 @@ #include "pipe/p_context.h" #include "pipe/p_winsys.h" #include "pipe/p_inlines.h" -#include "pipe/draw/draw_context.h" -#include "pipe/cso_cache/cso_cache.h" +#include "draw/draw_context.h" +#include "cso_cache/cso_cache.h" /** diff --git a/src/mesa/state_tracker/st_debug.c b/src/mesa/state_tracker/st_debug.c index 57450e52bf..5888bcb98a 100644 --- a/src/mesa/state_tracker/st_debug.c +++ b/src/mesa/state_tracker/st_debug.c @@ -31,9 +31,9 @@ #include "pipe/p_state.h" #include "pipe/p_shader_tokens.h" -#include "pipe/tgsi/util/tgsi_dump.h" +#include "tgsi/util/tgsi_dump.h" -#include "pipe/cso_cache/cso_cache.h" +#include "cso_cache/cso_cache.h" #include "st_context.h" #include "st_debug.h" diff --git a/src/mesa/state_tracker/st_draw.c b/src/mesa/state_tracker/st_draw.c index ae9f5c8b11..1c0fa8c6aa 100644 --- a/src/mesa/state_tracker/st_draw.c +++ b/src/mesa/state_tracker/st_draw.c @@ -47,8 +47,8 @@ #include "pipe/p_winsys.h" #include "pipe/p_inlines.h" -#include "pipe/draw/draw_private.h" -#include "pipe/draw/draw_context.h" +#include "draw/draw_private.h" +#include "draw/draw_context.h" static GLuint double_types[4] = { diff --git a/src/mesa/state_tracker/st_gen_mipmap.c b/src/mesa/state_tracker/st_gen_mipmap.c index 459941cca8..6c09b86033 100644 --- a/src/mesa/state_tracker/st_gen_mipmap.c +++ b/src/mesa/state_tracker/st_gen_mipmap.c @@ -37,7 +37,7 @@ #include "pipe/p_defines.h" #include "pipe/p_inlines.h" #include "pipe/p_winsys.h" -#include "pipe/cso_cache/cso_cache.h" +#include "cso_cache/cso_cache.h" #include "st_context.h" #include "st_draw.h" diff --git a/src/mesa/state_tracker/st_mesa_to_tgsi.c b/src/mesa/state_tracker/st_mesa_to_tgsi.c index 325aa20173..97206752af 100644 --- a/src/mesa/state_tracker/st_mesa_to_tgsi.c +++ b/src/mesa/state_tracker/st_mesa_to_tgsi.c @@ -32,9 +32,9 @@ #include "pipe/p_compiler.h" #include "pipe/p_shader_tokens.h" -#include "pipe/tgsi/util/tgsi_parse.h" -#include "pipe/tgsi/util/tgsi_build.h" -#include "pipe/tgsi/util/tgsi_util.h" +#include "tgsi/util/tgsi_parse.h" +#include "tgsi/util/tgsi_build.h" +#include "tgsi/util/tgsi_util.h" #include "st_mesa_to_tgsi.h" #include "shader/prog_instruction.h" #include "shader/prog_parameter.h" diff --git a/src/mesa/state_tracker/st_program.c b/src/mesa/state_tracker/st_program.c index c8297baded..dc992ee9c2 100644 --- a/src/mesa/state_tracker/st_program.c +++ b/src/mesa/state_tracker/st_program.c @@ -38,8 +38,8 @@ #include "pipe/p_context.h" #include "pipe/p_defines.h" #include "pipe/p_shader_tokens.h" -#include "pipe/draw/draw_context.h" -#include "pipe/tgsi/util/tgsi_dump.h" +#include "draw/draw_context.h" +#include "tgsi/util/tgsi_dump.h" #include "st_context.h" #include "st_cache.h" |