Commit Graph

8141 Commits

Author SHA1 Message Date
Brian 49134e8e53 fix mistake in _slang_free_ir() 2007-03-24 15:29:10 -06:00
Brian 0e71d08e8d Properly free the slang_ir_node->Store data (use ref counting). 2007-03-24 10:18:14 -06:00
Brian b50b036ffb When computing render_inputs_bitset, omit primary color if we have a fragment program and it doesn't need FRAG_ATTRIB_COL0. Silences valgrind warnings. 2007-03-24 10:16:49 -06:00
Brian dc3015f157 move some code into new slang_ir.c file 2007-03-24 09:40:20 -06:00
Brian b2bc563142 IR utility functions 2007-03-24 09:39:24 -06:00
Brian d1934c2065 Fix issues related to the 'continue' statement.
IR_LOOP now has two children: the body code, and the tail code.
Tail code is the "i++" part of a for-loop, or the expression at the end
of a "do {} while(expr);" loop.
"continue" translates into: "execute tail code; CONT;"
Also, the test for infinite do/while loops was incorrect.
2007-03-23 17:48:42 -06:00
Brian 81767eead9 consolidate some code 2007-03-23 17:45:53 -06:00
Brian 63556fa994 Add the ability to generate programs that doesn't use condition codes.
ctx->Shader.EmitCondCodes determines if we use condition codes.
If not, IF statement uses first operand's X component as the condition.
Added OPCODE_BRK0, OPCODE_BRK1, OPCODE_CONT0, OPCODE_CONT1 to handle
the common cases of conditional break/continue.
2007-03-23 14:47:46 -06:00
Brian bf020d8d7f minor tweaks 2007-03-23 14:44:34 -06:00
Brian 2bdac09d16 updated comment 2007-03-23 10:46:08 -06:00
Brian fe20a619cf updated comment 2007-03-22 16:07:43 -06:00
Brian e6aeb24b23 Overhaul emit_compare() function.
Previously, comparing vec2, vec3, vec4 was broken.
Added IR_EQUAL, IR_NOTEQUAL nodes/operators to compute boolean
equality/inequality vs. IR_SEQUAL/IR_SNEQUAL which work component-wise.
Use IR_EQUAL/IR_NOTEQUAL for the == and != operators.
To compute vec4 equality, use SNE, DP4, SEQ instruction sequence.
2007-03-22 16:07:14 -06:00
Brian 0aad9e2627 First pass at implementing structure compares.
Need to improve this.  There may be holes in a structure so we can't
just blindly compare the full 4-float registers.
2007-03-22 09:15:39 -06:00
Brian 12229f119d use _mesa_copy_instructions() 2007-03-22 09:11:26 -06:00
Brian 1bf81e3c5d In _mesa_add_unnamed_constant() and _mesa_lookup_parameter_constant() allow swizzleOut==NULL.
There are times when we don't want to allow swizzling when searching for or
adding vector constants.  Passing NULL for swizzleOut disables swizzling.
This fixes a constant/swizzle bug in link_uniform_vars().
2007-03-22 09:07:27 -06:00
Brian 1936b25ebd print conditional writemask, if enabled 2007-03-22 09:04:18 -06:00
Brian 629ec2b06b added SWIZZLE_XYZW 2007-03-21 15:40:54 -06:00
Brian 2500d82d0d Support for user-defined structures.
struct == and != operators not finished yet.  Struct assignment works though.
2007-03-21 15:40:39 -06:00
Brian 97c9b3ecc6 disable apparently unused code 2007-03-21 15:38:46 -06:00
Brian e02b989ff9 indent 2007-03-21 14:45:34 -06:00
Brian 23d31efc16 merge from master 2007-03-21 11:57:30 -06:00
Brian 249b451d20 1D convolution (and post-conv scale/bias) were inadvertantly applied to 2D image transfers. 2007-03-21 09:44:03 -06:00
Roland Scheidegger c5fe807e42 fix copy and paste bug from last commit in fog generation code for GL_LINEAR fog 2007-03-21 13:19:02 +01:00
Ben Skeggs 4b5d6c0435 nouveau: update for drm interface changes (0.0.5) 2007-03-21 17:54:57 +11:00
Ben Skeggs 6cadebbb67 nouveau: SwapBuffers() needs to perform a glFlush() 2007-03-21 15:07:12 +11:00
Xiang, Haihao 704cd61120 mesa: revert f9f79c8d77
to fix #10232

Table6.1(in gl2.1) has been applied for glGetTexImage
before calling into _mesa_pack_rgba_span_float.
2007-03-21 10:50:19 +08:00
Nicolai Haehnle 4bafc547df r300: Remove the program-global const_sin index
The index is no longer necessary to share constants between multiple
SIN/COS/SCS instructions inside a single fragment program, and storing
a tiny implementation detail like this in the fragment_program structure
itself was just nasty.
2007-03-21 00:58:02 +01:00
Nicolai Haehnle cbe38dc0ce r300: Whitespace cleanup (remove trailing spaces) 2007-03-20 18:40:09 +01:00
Xiang, Haihao cf4272d256 fix for bug#10347
not sure which brw surface for DXT3 & DXT5, so restore
the previous choice.(changed in commit
84081774e6)
2007-03-20 22:12:03 +08:00
Alan Hourihane bec665d5b5 use passed target parameter 2007-03-20 13:15:58 +00:00
Ben Skeggs ecb1a1c82f nouveau: fix typo 2007-03-20 16:08:14 +11:00
Ben Skeggs 4185037af2 nouveau: fail translate if we use too many params somehow 2007-03-20 16:08:07 +11:00
Ben Skeggs 9622a634f6 nouveau: NVSDBG macro 2007-03-20 16:08:01 +11:00
Nicolai Haehnle 61821a41c0 r300: Cleanup fragment program constant allocation, share constants
The constant/parameter allocation was significantly simplified, removing
one unnecessary copy operation of parameters. The dirty state tracking is
unchanged and far from optimal, since all state is always re-fetched.

Constants and parameters are now emitted only once, which significantly
reduces the resource pressure on larger programs.
2007-03-19 23:59:59 +01:00
Nicolai Haehnle 5a65478783 r300: Fix special case (tmp.x <= 0) in fragment program LIT instruction
Also, fix a typo in a related comment.
2007-03-19 22:29:34 +01:00
Nicolai Haehnle b3acba87d7 r300: Clear fragment program instruction slots on first use
Make sure that instruction slots are fully initialized with NOPs during
find_and_prepare_slot(). This fixes a bug when a fragment program was
translated more than once (e.g. due to a second call to glProgramStringARB).

This partially fixes glean/fragProg1.
2007-03-19 22:29:21 +01:00
Brian fdcbbeb55e Properly compute render_inputs_bitset when using a vertex program/shader.
This fixes a performance regression introduced early in glsl-compiler-1 work.
2007-03-19 14:44:15 -06:00
Nicolai Haehnle 826815a5d2 r300: Dump fragment program after translation if RADEON_DEBUG=pixel is set 2007-03-19 20:02:19 +01:00
Nicolai Haehnle 7b992d024b r300: Whitespace cleanup (remove trailing spaces) 2007-03-19 19:49:06 +01:00
Nicolai Haehnle c4bf863f4c r300: Fix WRITEMASK handling when writing to result.depth
This is a necessary change to emit the right instructions when writing
to result.depth.

However, even with this test, Z-write doesn't work properly, and I don't
fully understand why. In addition to this, we'll at least have to disable
early-Z, but even that doesn't seem to be enough.
2007-03-19 19:48:58 +01:00
Nicolai Haehnle b645e8c96d r300: Streamlined fragment program LIT implementation
Fix a bug in the LIT implementation (clamp exponent to 128, not 0.5)
and change the implementation around. In theory, the new implementation
needs as little as 5 instruction slots. Unfortunately, the dependency
analysis in find_and_replace_slot is not strong enough to look at
individual components of a register yet.
2007-03-19 19:10:21 +01:00
Nicolai Haehnle ff6ab9b45b r300: Fix fragment program reordering
Do not move an instruction that writes to a temp forward past an instruction
that reads the same temporary.
2007-03-19 18:38:07 +01:00
Nicolai Haehnle ec1a77c864 r300: Fragment program dumps format tex instructions 2007-03-19 18:38:07 +01:00
Nicolai Haehnle a8e65a010c r300: Fix hw fragment program dump
Dumps of fragment programs were incorrect when the program consisted of multiple
nodes.

Also, improved the formatting a bit.
2007-03-19 18:38:07 +01:00
Nicolai Haehnle 7b430acd71 r300: Fix fragment program instruction pairing and register allocation
There were a number of bugs related to the pairing of vector and scalar
operations where swizzles ended up using the wrong source register,
or an instruction was moved forward and ended up overwriting an aliased
register.

The new algorithm for register allocation is quite conservative and may
run out of registers before necessary. On the plus side, It Just Works.

Pairing is done whenever possible, and in more cases than before, so
in practice this change should be a net win.
2007-03-19 18:38:07 +01:00
Michel Dänzer 07db8c9115 i915tex: The intended triple buffering fix.
Making modifications while the editor spawned by git-commit was suspended
didn't have the intended effect.
2007-03-19 18:34:27 +01:00
Michel Dänzer 9b42100c04 i915tex: Fix triple buffering after recent Mesa core changes.
Remove superfluous _mesa_resize_framebuffer call which is now harmful because
it causes the third renderbuffer to have width/height 0, so Mesa refuses to
render to it.

In the long term, it would be nice to remove the hack in
intel_alloc_window_storage in favour of a proper Mesa interface for flipping
between more than two colour buffers.
2007-03-19 17:23:44 +01:00
Keith Whitwell 77544d7b7d fix off-by-one in load_state_immediate 2007-03-18 20:13:45 +00:00
Keith Whitwell c9e39aeaef fix typo in subrect_disable packet 2007-03-18 20:13:45 +00:00
Keith Whitwell 07265280a9 fix typo in subrect_disable packet 2007-03-18 20:13:45 +00:00