Brian [Tue, 27 Mar 2007 00:47:19 +0000 (18:47 -0600)]
s/SUB/BGNSUB/
Brian [Tue, 27 Mar 2007 00:46:07 +0000 (18:46 -0600)]
Checkpoint: implementing true CAL/RET instructions for subroutine calls.
Also, found/fixed a code generation regression: the emit_swizzle() function
was always returning NULL. This caused emit_move() to miss its chance at peephole
optimization.
Brian [Mon, 26 Mar 2007 23:16:26 +0000 (17:16 -0600)]
Get rid of IR_JUMP and related code.
Brian [Mon, 26 Mar 2007 22:58:50 +0000 (16:58 -0600)]
special case RET
Brian [Mon, 26 Mar 2007 22:56:45 +0000 (16:56 -0600)]
Get rid of SLANG_OPER_GOTO, start rewrite of 'return' handling.
Brian [Mon, 26 Mar 2007 22:01:58 +0000 (16:01 -0600)]
remove debug abort() calls
Brian [Mon, 26 Mar 2007 21:46:35 +0000 (15:46 -0600)]
Additional error checking for 'return' statements.
Brian [Mon, 26 Mar 2007 21:09:59 +0000 (15:09 -0600)]
undo some debugging hacks
Brian [Mon, 26 Mar 2007 21:02:21 +0000 (15:02 -0600)]
dead code elimination for constant-valued if/then/else
Nicolai Haehnle [Mon, 26 Mar 2007 20:20:46 +0000 (22:20 +0200)]
r300: Remove a warning when vertex programs produce an unused output
As far as we know, the hardware prefers outputs packed tightly together
with no holes caused by outputs that are not even read by the fragment
program. Therefore, we slightly rewrite vertex programs in this case.
It would be interesting to test this interaction between vertex programs
and fragment programs further, because some of that rewrite may be
unnecessary. However, play it safe for now and don't change the current
behaviour.
Nicolai Haehnle [Mon, 26 Mar 2007 20:16:22 +0000 (22:16 +0200)]
r300: Whitespace cleanup (remove trailing spaces)
Brian [Mon, 26 Mar 2007 19:06:33 +0000 (13:06 -0600)]
Fix a few issues with computing storage sizes with respect to swizzles.
Brian [Mon, 26 Mar 2007 19:04:57 +0000 (13:04 -0600)]
In _mesa_lookup_parameter_constant() make sure we return a full, 4-component swizzle.
Nicolai Haehnle [Mon, 26 Mar 2007 19:41:17 +0000 (21:41 +0200)]
r300: Fix warnings that were introduced by the glsl merge
Brian [Mon, 26 Mar 2007 17:30:05 +0000 (11:30 -0600)]
Add _swrast_span_default_secondary_color() for use with glBitmap, glDrawPixels, etc.
Secondary color wasn't getting added to post-texture color when drawing
bitmaps, images. See bug 10409.
Brian [Mon, 26 Mar 2007 16:39:56 +0000 (10:39 -0600)]
remove incorrect assertions
Brian [Mon, 26 Mar 2007 16:23:50 +0000 (10:23 -0600)]
minor status updates
Brian [Mon, 26 Mar 2007 16:15:02 +0000 (10:15 -0600)]
disable printing shader program debug info
Brian [Mon, 26 Mar 2007 16:13:02 +0000 (10:13 -0600)]
merge of glsl-compiler-1 branch
Michel Dänzer [Mon, 26 Mar 2007 15:38:58 +0000 (17:38 +0200)]
i915tex: Make sure renderbuffers don't get deleted when flipping them.
Since the recent renderbuffer refcounting fixes it's no longer sufficient to
just remove the old renderbuffer from the framebuffer and then add the new one
because the former may decrease the reference count to 0 and delete the old
renderbuffer.
Brian [Mon, 26 Mar 2007 15:24:30 +0000 (09:24 -0600)]
disable free() until other issues can be fixed...
Brian [Mon, 26 Mar 2007 15:23:44 +0000 (09:23 -0600)]
fix mem leak, add comments
Ben Skeggs [Mon, 26 Mar 2007 11:31:43 +0000 (21:31 +1000)]
nouveau: match drm version bump
Brian [Sun, 25 Mar 2007 16:39:36 +0000 (10:39 -0600)]
Fix some renderbuffer reference counting issues. Also fixes a mem leak.
Brian [Sun, 25 Mar 2007 16:25:29 +0000 (10:25 -0600)]
destroy window on exit
Xiang, Haihao [Sun, 25 Mar 2007 13:40:58 +0000 (21:40 +0800)]
i965: The given urb layout(maximal size of urb entries and the
values for nr of entries) should meet the requirement.
Xiang, Haihao [Sun, 25 Mar 2007 13:31:36 +0000 (21:31 +0800)]
Color3iv: set the alpha value to 1.0
Nicolai Haehnle [Sun, 25 Mar 2007 12:34:13 +0000 (14:34 +0200)]
r300: Whitespace cleanup in r300_texmem.c
Nicolai Haehnle [Sun, 25 Mar 2007 12:17:09 +0000 (14:17 +0200)]
r300: Whitespace cleanup in r300_texstate.c
Nicolai Haehnle [Sun, 25 Mar 2007 11:02:26 +0000 (13:02 +0200)]
r300: Fix regression: unnecessary node indirection
The texture_rectangle fix introduced a bug where every texture instruction
caused a new indirection.
Brian [Sat, 24 Mar 2007 22:44:20 +0000 (16:44 -0600)]
fix mem leak
Brian [Sat, 24 Mar 2007 22:43:44 +0000 (16:43 -0600)]
disable free(var->aux) -- can lead to segfault
Brian [Sat, 24 Mar 2007 22:26:51 +0000 (16:26 -0600)]
fix mem leak
Brian [Sat, 24 Mar 2007 22:22:35 +0000 (16:22 -0600)]
fix some mem leaks
Brian [Sat, 24 Mar 2007 22:20:02 +0000 (16:20 -0600)]
Free shader-related context state: _mesa_free_shader_state()
Brian [Sat, 24 Mar 2007 22:18:13 +0000 (16:18 -0600)]
free prog->Attributes in _mesa_delete_program()
Brian [Sat, 24 Mar 2007 21:29:10 +0000 (15:29 -0600)]
fix mistake in _slang_free_ir()
Dave Airlie [Sat, 24 Mar 2007 21:09:02 +0000 (07:09 +1000)]
nouveau: implement nv20Clear and nv20Scissor
Still crashes out on scissor regs
Nicolai Haehnle [Sat, 24 Mar 2007 18:08:26 +0000 (19:08 +0100)]
r300: Fix texture coordinate calculation for rectangle textures
R300 hardware takes texcoords in the range 0..1 even for rectangle
textures. Previously, the necessary texcoord conversion was applied
to the texture coordinate during vertex processing in a render stage.
This is obviously wrong when fragment programs are used, which can
calculate arbitrary coordinates for TEX instructions. Therefore,
we now inject an appropriate MUL instruction before a TEX that
reference a rectangle texture.
Nicolai Haehnle [Sat, 24 Mar 2007 15:42:08 +0000 (16:42 +0100)]
r300: No assertion when accessing incomplete texture images.
There used to be an assertion when a fragment program accesses an incomplete
texture image. Work around this assertion.
Note: I am unsure whether this workaround produces the desired result
(0,0,0,1) on all hardware.
Brian [Sat, 24 Mar 2007 16:18:14 +0000 (10:18 -0600)]
Properly free the slang_ir_node->Store data (use ref counting).
Brian [Sat, 24 Mar 2007 16:16:49 +0000 (10:16 -0600)]
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.
Brian [Sat, 24 Mar 2007 15:40:20 +0000 (09:40 -0600)]
move some code into new slang_ir.c file
Brian [Sat, 24 Mar 2007 15:39:24 +0000 (09:39 -0600)]
IR utility functions
Nicolai Haehnle [Sat, 24 Mar 2007 12:01:57 +0000 (13:01 +0100)]
r300: Fix: KIL instruction don't require textures
When no textures were enabled, a KIL instruction triggered an assertion
in r300_setup_rs_unit.
Nicolai Haehnle [Sat, 24 Mar 2007 13:41:59 +0000 (14:41 +0100)]
swrast: Fix crash when sampling from a non-existing texture object
Ben Skeggs [Sat, 24 Mar 2007 11:22:27 +0000 (22:22 +1100)]
nouveau: some swtcl fixes
Brian [Sat, 24 Mar 2007 00:01:31 +0000 (18:01 -0600)]
Implement alpha buffer copy for SwapBuffers().
Nicolai writes:
When the pixmap pixel format has no alpha channel, the x11 driver
(software rendering) adds a wrapped alpha channel on request.
During SwapBuffers, this alpha channel is not copied from back to
front, which means that the front buffer doesn't really contain the
contents that the back buffer previously contained.
A subsequent glReadPixels from the front buffer will return an
incorrect result. The following patch attempts to fix this.
Brian [Fri, 23 Mar 2007 23:49:19 +0000 (17:49 -0600)]
document internal compiler options
Brian [Fri, 23 Mar 2007 23:48:42 +0000 (17:48 -0600)]
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.
Brian [Fri, 23 Mar 2007 23:45:53 +0000 (17:45 -0600)]
consolidate some code
Brian [Fri, 23 Mar 2007 20:47:46 +0000 (14:47 -0600)]
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.
Brian [Fri, 23 Mar 2007 20:44:34 +0000 (14:44 -0600)]
minor tweaks
Brian [Fri, 23 Mar 2007 16:46:08 +0000 (10:46 -0600)]
updated comment
Nicolai Haehnle [Fri, 23 Mar 2007 16:07:58 +0000 (17:07 +0100)]
r300: Whitespace cleanup (remove trailing spaces)
Brian [Thu, 22 Mar 2007 22:07:43 +0000 (16:07 -0600)]
updated comment
Brian [Thu, 22 Mar 2007 22:07:14 +0000 (16:07 -0600)]
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.
Brian [Thu, 22 Mar 2007 15:15:39 +0000 (09:15 -0600)]
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.
Brian [Thu, 22 Mar 2007 15:11:26 +0000 (09:11 -0600)]
use _mesa_copy_instructions()
Brian [Thu, 22 Mar 2007 15:07:27 +0000 (09:07 -0600)]
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().
Brian [Thu, 22 Mar 2007 15:04:18 +0000 (09:04 -0600)]
print conditional writemask, if enabled
Brian [Thu, 22 Mar 2007 14:51:34 +0000 (08:51 -0600)]
use _mesa_alloc_instructions()
Brian [Thu, 22 Mar 2007 14:50:20 +0000 (08:50 -0600)]
use _mesa_copy_instructions()
Alan Hourihane [Thu, 22 Mar 2007 14:26:49 +0000 (14:26 +0000)]
Ensure we have a valid ReadBuffer for CopyTexSubImage, and
if not bail accordingly.
Previously we'd only do this test on compressed textures.
Xiang, Haihao [Thu, 22 Mar 2007 03:01:51 +0000 (11:01 +0800)]
fix for bug#10339
StateFlags has been updated in _mesa_add_state_reference
Brian [Wed, 21 Mar 2007 21:40:54 +0000 (15:40 -0600)]
added SWIZZLE_XYZW
Brian [Wed, 21 Mar 2007 21:40:39 +0000 (15:40 -0600)]
Support for user-defined structures.
struct == and != operators not finished yet. Struct assignment works though.
Brian [Wed, 21 Mar 2007 21:38:46 +0000 (15:38 -0600)]
disable apparently unused code
Brian [Wed, 21 Mar 2007 20:45:34 +0000 (14:45 -0600)]
indent
Brian [Wed, 21 Mar 2007 17:57:30 +0000 (11:57 -0600)]
merge from master
Brian [Wed, 21 Mar 2007 17:41:41 +0000 (11:41 -0600)]
disable assertion
Brian [Wed, 21 Mar 2007 15:45:58 +0000 (09:45 -0600)]
document 1D convolution fix
Brian [Wed, 21 Mar 2007 15:44:03 +0000 (09:44 -0600)]
1D convolution (and post-conv scale/bias) were inadvertantly applied to 2D image transfers.
Roland Scheidegger [Wed, 21 Mar 2007 12:19:02 +0000 (13:19 +0100)]
fix copy and paste bug from last commit in fog generation code for GL_LINEAR fog
Ben Skeggs [Wed, 21 Mar 2007 06:54:57 +0000 (17:54 +1100)]
nouveau: update for drm interface changes (0.0.5)
Ben Skeggs [Wed, 21 Mar 2007 04:05:07 +0000 (15:05 +1100)]
nouveau: SwapBuffers() needs to perform a glFlush()
Xiang, Haihao [Wed, 21 Mar 2007 02:50:19 +0000 (10:50 +0800)]
mesa: revert
f9f79c8d770e696249bd98c68b563f887562c974
to fix #10232
Table6.1(in gl2.1) has been applied for glGetTexImage
before calling into _mesa_pack_rgba_span_float.
Nicolai Haehnle [Tue, 20 Mar 2007 23:56:38 +0000 (00:56 +0100)]
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.
Nicolai Haehnle [Mon, 19 Mar 2007 22:30:26 +0000 (23:30 +0100)]
r300: Whitespace cleanup (remove trailing spaces)
Xiang, Haihao [Tue, 20 Mar 2007 14:12:03 +0000 (22:12 +0800)]
fix for bug#10347
not sure which brw surface for DXT3 & DXT5, so restore
the previous choice.(changed in commit
84081774e62a8af18e6bf894ea69f63b97dcfe96)
Alan Hourihane [Tue, 20 Mar 2007 13:15:58 +0000 (13:15 +0000)]
use passed target parameter
Ben Skeggs [Tue, 20 Mar 2007 04:59:55 +0000 (15:59 +1100)]
nouveau: fix typo
Ben Skeggs [Tue, 20 Mar 2007 04:52:57 +0000 (15:52 +1100)]
nouveau: fail translate if we use too many params somehow
Ben Skeggs [Tue, 20 Mar 2007 04:05:35 +0000 (15:05 +1100)]
nouveau: NVSDBG macro
Nicolai Haehnle [Mon, 19 Mar 2007 22:32:36 +0000 (23:32 +0100)]
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.
Nicolai Haehnle [Mon, 19 Mar 2007 21:26:08 +0000 (22:26 +0100)]
r300: Fix special case (tmp.x <= 0) in fragment program LIT instruction
Also, fix a typo in a related comment.
Nicolai Haehnle [Mon, 19 Mar 2007 21:17:16 +0000 (22:17 +0100)]
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.
Brian [Mon, 19 Mar 2007 20:44:15 +0000 (14:44 -0600)]
Properly compute render_inputs_bitset when using a vertex program/shader.
This fixes a performance regression introduced early in glsl-compiler-1 work.
Nicolai Haehnle [Mon, 19 Mar 2007 19:01:20 +0000 (20:01 +0100)]
r300: Dump fragment program after translation if RADEON_DEBUG=pixel is set
Nicolai Haehnle [Mon, 19 Mar 2007 18:46:25 +0000 (19:46 +0100)]
r300: Whitespace cleanup (remove trailing spaces)
Nicolai Haehnle [Mon, 19 Mar 2007 18:45:45 +0000 (19:45 +0100)]
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.
Nicolai Haehnle [Sun, 18 Mar 2007 17:32:32 +0000 (18:32 +0100)]
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.
Nicolai Haehnle [Sun, 18 Mar 2007 12:29:18 +0000 (13:29 +0100)]
r300: Fix fragment program reordering
Do not move an instruction that writes to a temp forward past an instruction
that reads the same temporary.
Nicolai Haehnle [Sun, 18 Mar 2007 12:09:21 +0000 (13:09 +0100)]
r300: Fragment program dumps format tex instructions
Nicolai Haehnle [Sun, 18 Mar 2007 11:46:53 +0000 (12:46 +0100)]
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.
Nicolai Haehnle [Sun, 18 Mar 2007 01:15:56 +0000 (02:15 +0100)]
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.
Michel Dänzer [Mon, 19 Mar 2007 17:34:27 +0000 (18:34 +0100)]
i915tex: The intended triple buffering fix.
Making modifications while the editor spawned by git-commit was suspended
didn't have the intended effect.
Michel Dänzer [Mon, 19 Mar 2007 16:23:44 +0000 (17:23 +0100)]
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.
Keith Whitwell [Sun, 18 Mar 2007 20:13:06 +0000 (20:13 +0000)]
fix off-by-one in load_state_immediate
Keith Whitwell [Sun, 18 Mar 2007 20:12:53 +0000 (20:12 +0000)]
fix typo in subrect_disable packet