Commit Graph

38990 Commits

Author SHA1 Message Date
Bryan Cain a2c3b9f38d glsl_to_tgsi: make coding style more consistent 2011-08-01 17:59:10 -05:00
Bryan Cain 0da994a9f1 glsl_to_tgsi: make assignment hack safer
Fixes an assertion failure in piglit test glsl-texcoord-array.
2011-08-01 17:59:10 -05:00
Bryan Cain 7732822c83 glsl_to_tgsi: separate immediates from array constants during IR translation
Before, if any uniform or constant array was accessed with indirect
addressing, st_translate_program() would emit uniform constants in the place
of immediates.  This behavior was unavoidable with ir_to_mesa/mesa_to_tgsi, but
glsl_to_tgsi can work around it since the GLSL IR backend and the TGSI
emission are both inside the state tracker.
2011-08-01 17:59:09 -05:00
Bryan Cain 87f8d8547d glsl_to_tgsi: fix mistakes in get_pixel_transfer_visitor()
I noticed these issues while working on get_bitmap_visitor().
2011-08-01 17:59:09 -05:00
Bryan Cain 5f0b4b0e9d st/mesa, glsl_to_tgsi: support glBitmap with a GLSL fragment shader active 2011-08-01 17:59:09 -05:00
Bryan Cain c0dcab2882 st/mesa, glsl_to_tgsi: support glDrawPixels/glCopyPixels with a GLSL fragment shader active
Since this was previously implemented using Mesa IR and _mesa_combine_programs,
this commit adds a new code path that works with glsl_to_tgsi.
2011-08-01 17:59:09 -05:00
Bryan Cain 33e0c47b05 glsl_to_tgsi: replace MAX_PROGRAM_TEMPS (256) with MAX_TEMPS (4096) 2011-08-01 17:59:09 -05:00
Bryan Cain 54db6e618e r200, r600c, i965: fix build 2011-08-01 17:59:09 -05:00
Bryan Cain 9c2810103d glsl_to_tgsi: always run copy_propagate() and eliminate_dead_code_advanced()
These two passes are written to handle indirect addressing properly.
2011-08-01 17:59:09 -05:00
Bryan Cain 4c8b6a2868 glsl_to_tgsi: fix mistake in new dead code elimination pass
The conditions of IF opcodes were not being counted as reads, which sometimes
led to the condition register being wrong or undefined.
2011-08-01 17:59:09 -05:00
Bryan Cain f00406b68c glsl_to_tgsi: improve assignment handling
This is a hack, but it's better than emitting an unnecessary MOV instruction
and hoping the optimization passes clean it up.
2011-08-01 17:59:09 -05:00
Bryan Cain 71cbc9e3c4 glsl_to_tgsi: improve eliminate_dead_code_advanced() 2011-08-01 17:59:09 -05:00
Bryan Cain 3bd06e5b82 glsl_to_tgsi: use the correct writemask in try_emit_mad() and try_emit_sat() 2011-08-01 17:59:09 -05:00
Bryan Cain 194732fd72 glsl_to_tgsi: use a more specific condition for gl_FragDepth hack in generating assignments
This reduces the number of instructions in the fragment shader of
glsl-fs-atan-2 from 174 to 146 with EmitNoIfs enabled.
2011-08-01 17:59:09 -05:00
Bryan Cain 41472f7809 glsl_to_tgsi: add a better, more advanced dead code elimination pass 2011-08-01 17:59:08 -05:00
Bryan Cain 7ec7dd4fb6 glsl_to_tgsi: remove handling of XPD opcode in compile_tgsi_instruction()
The opcode is never emitted by the glsl_to_tgsi_visitor, so its special case in
compile_tgsi_instruction() was dead code.
2011-08-01 17:59:08 -05:00
Bryan Cain 8b881ad1c3 glsl_to_tgsi: use swizzle_for_size for src reg in conditional moves
This prevents the copy propagation pass from being confused by undefined
channels and thus missing optimization opportunities.
2011-08-01 17:59:08 -05:00
Emil Velikov 8c50f18b29 glsl_to_tgsi: execute merge_registers() after eliminate_dead_code()
Fixes a regression unintentionally introduced by "glsl_to_tgsi: fix shaders with
indirect addressing of temps" that caused missing leaves in 3dmark01 test 4 (Nature)
and missing/displaced textures on human models in Counter-Strike: Source.

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
Signed-off-by: Bryan Cain <bryancain3@gmail.com>
2011-08-01 17:59:08 -05:00
Bryan Cain 29d21417e3 glsl_to_tgsi: implement simplify_cmp pass needed by r300g 2011-08-01 17:59:08 -05:00
Bryan Cain 552cc48fca glsl_to_tgsi: fix compile error with g++ 4.6 2011-08-01 17:59:08 -05:00
Bryan Cain 1141c3f4c4 glsl: remove glsl_type::get_vec4_type()
Thanks to Kenneth Graunke for pointing out that glsl_type::get_instance(base, 4, 1)
is the same as glsl_type::get_vec4_type(base).

The function was only used in st_glsl_to_tgsi, and this commit replaces that usage
with get_instance.
2011-08-01 17:59:08 -05:00
Bryan Cain b30bbd7436 glsl_to_tgsi: silence compiler warning 2011-08-01 17:59:08 -05:00
Bryan Cain bf1cee9f24 glsl_to_tgsi: finish some loose ends 2011-08-01 17:59:08 -05:00
Bryan Cain b2c067e307 glsl-to-tgsi: fix piglit tests
This commit fixes all of the piglit tests regressed by "mesa, glsl_to_tgsi: add
native support for integers in shaders" on softpipe.
2011-08-01 17:59:08 -05:00
Bryan Cain b191382c60 mesa, glsl_to_tgsi: add native support for integers in shaders
Disabled by default on all drivers.  To enable it, change ctx->GLSLVersion to 130
in st_extensions.c.  Currently, softpipe is the only driver with integer support.
2011-08-01 17:59:08 -05:00
Bryan Cain f95169deb4 tgsi: add support for TGSI_OPCODE_MOD in tgsi_exec 2011-08-01 17:59:08 -05:00
Bryan Cain 6d89abadbc mesa: support boolean and integer-based parameters in prog_parameter
The functionality is not used by anything yet, and the glUniform functions will
need to be reworked before this can reach its full usefulness.  It is
nonetheless a step towards integer support in the state tracker and classic drivers.
2011-08-01 17:59:07 -05:00
Bryan Cain 17b695e6e7 gallium: add PIPE_SHADER_CAP_INTEGERS 2011-08-01 17:59:07 -05:00
Bryan Cain 16d7a717d5 glsl_to_tgsi: fix shaders with indirect addressing of temps
Fixes several Piglit tests, although it's a step backwards for optimization.
2011-08-01 17:59:07 -05:00
Bryan Cain 56dc2c176c glsl_to_tgsi: use TGSI opcodes when converting from GLSL IR
Before, the translator used Mesa IR opcodes (a holdover from ir_to_mesa) and
converted them to TGSI opcodes during TGSI emission.
2011-08-01 17:59:07 -05:00
Bryan Cain 3b0858f1ae glsl_to_tgsi: support DDY (ir_unop_dFdy) 2011-08-01 17:59:07 -05:00
Bryan Cain a6705aa5ca glsl_to_tgsi: lower noise opcodes when converting from GLSL IR, not when generating TGSI 2011-08-01 17:59:07 -05:00
Bryan Cain 5768ed6429 glsl_to_tgsi: define the sampler objects used
Fixes the Nexuiz title screen and the water in 0 A.D.
2011-08-01 17:59:07 -05:00
Bryan Cain 556bd82ce1 glsl_to_tgsi: remove a bad assertion
It was triggered by Alien Arena.
2011-08-01 17:59:07 -05:00
Bryan Cain c341d3cfd0 glsl_to_tgsi: remove reads to output registers
Fixes a regression in 0 A.D. introduced by 809a11c77073e999fd47.
2011-08-01 17:59:07 -05:00
Bryan Cain 44867da354 glsl_to_tgsi: stop generating Mesa IR
Before, it was still generating unused Mesa IR as a remnant of ir_to_mesa, and
depended on some of the information from it.
2011-08-01 17:59:07 -05:00
Bryan Cain 1e5fd8e480 mesa: fix segfault when no Mesa IR is generated 2011-08-01 17:59:07 -05:00
Bryan Cain f379d8f730 st/mesa: Add a GLSL IR to TGSI translator.
It is still a work in progress at this point, but it produces working and
reasonably well-optimized code.

Originally based on ir_to_mesa and st_mesa_to_tgsi, but does not directly use
Mesa IR instructions in TGSI generation, instead generating TGSI from the
intermediate class glsl_to_tgsi_instruction.  It also has new optimization
passes to replace _mesa_optimize_program.
2011-08-01 17:59:07 -05:00
Marek Olšák 6f243ec25d r600g: disable render condition for some blitter operations 2011-06-15 15:24:37 +02:00
Mike Kaplinskiy 40aec11b75 r600g: fix TXD src regs needing fetching.
[airlied: final chunk of Mike's patch from bug 37476
this uses a loop to emit the GRADIENTS and does a check to
see if we need to fetch to a temporary register. It also
increases the context src gpr to 4 which is needed here.]

Signed-off-by: Dave Airlie <airlied@redhat.com>
2011-06-15 16:58:40 +10:00
Mike Kaplinskiy 6415f25663 r600g: use inlines for some common tex instr setup code.
[airlied: taken from Mike's patch in bug 37476]

Signed-off-by: Dave Airlie <airlied@redhat.com>
2011-06-15 16:58:40 +10:00
Kenneth Graunke ef8f6a8c59 glsl/builtins: Actually implement int/ivec variants of abs().
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>

NOTE: This is a candidate for stable release branches (and don't forget
      to re-run "make builtins" after cherry-picking.)
2011-06-14 23:41:16 -07:00
Mike Kaplinskiy de91ea1c06 r600g: fix TXD when shadowing is enabled.
Mike had actually done a lot of the TXD support in a patch in bug
37476 which I see now, I'll add the bits of his work that I didn't think
to add to my work.

Signed-off-by: Dave Airlie <airlied@redhat.com>
2011-06-15 15:54:21 +10:00
Dave Airlie 13c9a8552b r600g: add TXD support.
This at least passes the piglit arb_shader_texture_lod-texgrad test,
the AMD shader analyzer seems to multiply the V component by an unspecified
constant value no idea why.

Signed-off-by: Dave Airlie <airlied@redhat.com>
2011-06-15 15:18:42 +10:00
Brian Paul 34a774797c i915g: add const qualifier to silence warning 2011-06-14 20:47:47 -06:00
Marek Olšák d9ca94836e r600g: also set TILE_MODE of the base level 2011-06-15 04:16:05 +02:00
Marek Olšák 677a4406d2 r600g: force OpenGL's BASE_LEVEL behavior on r600-r700
This sets the base level as the zero level, which fixes
piglit/texturing/tex-miplevel-selection*.

The r600 hardware ignores the BASE_LEVEL field in some cases, so we can't
use it.

Evergreen might need this too.
2011-06-15 03:39:24 +02:00
Kenneth Graunke 7c7a8a38e5 glsl/generate_builtins.py: Remove regexp to kill pointer addresses.
Commit 56ef62d988
"glsl: Generate readable unique names at print time."
changed ir_print_visitor to not generate @0x1234567 suffixes except
where necessary.  So there's no need to manually remove them.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
2011-06-14 18:29:48 -07:00
Jeremy Huddleston 1e16c34c5c glapi: _glapi_create_table_from_handle: Set missing pointers to NoOp rather than NULL
This change to _glapi_create_table_from_handle causes it to fill the dispatch
table with NoOps for unimplemented functionality.  This matches what is done
in indirect_init.c and also allows us to enable logging (when built with
-DDEBUG and the MESA_DEBUG or LIBGL_DEBUG environment variables are set) to
catch cases where clients are trying to use these unimplemented extentions.

Additionally, this fixes some gcc -pedantic warnings.

Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
2011-06-14 18:22:01 -07:00
Brian Paul 3751aa4592 st/mesa: fix indentation, whitespace 2011-06-14 17:19:53 -06:00