Commit graph

29178 commits

Author SHA1 Message Date
Brian Paul
56bdaca03e mesa: _mesa_get_enabled_extension() function 2009-12-30 10:29:53 -07:00
Brian Paul
802b808939 mesa: implement GL3 GL_NUM_EXTENSIONS query 2009-12-30 10:16:01 -07:00
Brian Paul
1ec6de9f94 mesa: simplify some extension testing code 2009-12-30 10:13:31 -07:00
Brian Paul
05fb922e61 mesa: display list support for glClearBuffer functions
Note: some code disabled until dispatch table supports GL3 entrypoints.
2009-12-30 09:45:58 -07:00
Brian Paul
2b5ece5746 mesa: implement GL3 glClearBuffer() functions
These functions clear color/depth/stencil buffers with a value that's
passed to the function, rather than the context clear values.

For now these functions are implemented in terms of the existing
ctx->Driver.Clear() hook.  In the future when we have non-normalized
integer and unsigned integer color buffer formats we'll need new
driver hook(s) to pass int and uint clear values to the driver.

Note: these functions are not hooked into the dispatch table at this time.
2009-12-30 09:30:24 -07:00
Brian Paul
12039aa7a9 mklib: use a wrapper for ar 2009-12-30 09:30:24 -07:00
Luca Barbieri
9656177bc0 nouveau: Fix glTexSubImage on swizzled surfaces on <=NV40
Currently in nvXX_transfer_new a temporary as large as the surface is created.
If the subrectangle is not the whole texture we would need to read
back the whole texture, but we aren't.
Thus, everything but the subrectangle specified is loaded as garbage.
This can be seen in progs/demos/ray.

This patch fixes the problem by creating a temporary that covers only
the desired subrectangle.

That makes us hit an alignment assert in nv04_surface_2d.c. Fix it
using the point registers instead of manipulating the swizzled surface
offset to account for the destination coordinates (which do not seem
to have a 1024 limit).

Signed-off-by: Francisco Jerez <currojerez@riseup.net>
2009-12-30 14:37:19 +01:00
Brian Paul
f00bf0598c st/mesa: add PIPE_FORMAT_Z24S8_UNORM in st_get_format_info()
Fixes progs/demos/fbotexture on Nouveau.
Patch submitted by Luca Barbieri <luca@luca-barbieri.com>.
2009-12-29 23:31:43 -07:00
Vinson Lee
de95e5768b glu/sgi: Initialize members of struct O_nurbssurface. 2009-12-29 22:29:53 -08:00
Brian Paul
1677d5c0ae mesa: fix-up blend enable/disable code in _mesa_PopAttrib() 2009-12-29 23:04:27 -07:00
Brian Paul
36092fa2d8 mesa: finish-up indexed color mask code in _mesa_PopAttrib() 2009-12-29 22:58:44 -07:00
Brian Paul
81c72a1dab mesa: plug in GL_EXT_draw_buffers2 functions 2009-12-29 22:56:32 -07:00
Brian Paul
285d3f9ed8 mesa: regenerate API files related to GL_EXT_draw_buffers2 2009-12-29 22:55:57 -07:00
Brian Paul
ca3a8538b6 glapi: extension info for GL_EXT_draw_buffers2 2009-12-29 22:54:30 -07:00
Vinson Lee
ac21edff1c tdfx: Silence uninitialized variable warning. 2009-12-29 21:34:06 -08:00
Vinson Lee
0ab29d2b35 progs/glsl: Silence compiler warnings. 2009-12-29 21:11:37 -08:00
Vinson Lee
70bbe22366 glu/sgi: Silence warn_unused_result warnings. 2009-12-29 21:03:23 -08:00
Vinson Lee
31263f41a0 st/xorg: Use C-style comments. 2009-12-29 20:56:47 -08:00
Vinson Lee
97b899374c glu/sgi: Initialize member of struct GridVertex. 2009-12-29 20:45:24 -08:00
Jakob Bornecrantz
5169775345 st/xorg: Fix warning and add a TODO comment 2009-12-30 05:08:41 +01:00
Jakob Bornecrantz
d34fdf149d st/xorg: On close wait on fences and then destroy the screen 2009-12-30 05:01:09 +01:00
Jakob Bornecrantz
5fdc4f732f st/xorg: Be proper with pipe pointers on close in exa 2009-12-30 05:00:30 +01:00
Brian Paul
8f6f112463 mesa: added infrastructure for GL_EXT_draw_buffers2 2009-12-29 20:51:20 -07:00
Jakob Bornecrantz
53e314cb80 st/xorg: Make sure we don't overrun the fence array in block handler 2009-12-30 04:22:12 +01:00
Vinson Lee
3bcf7d7d7b glu/sgi: Initialize member variables in class Varray. 2009-12-29 17:46:42 -08:00
Vinson Lee
a7db305c2f glu/sgi: Initialize member of class monoChain. 2009-12-29 17:35:22 -08:00
Vinson Lee
5060fb428d glu/sgi: Initialize members of class sampledLine. 2009-12-29 17:22:11 -08:00
Brian Paul
a856d635d3 mesa: add dlist support for indexed colormask and indexed enables/disables
Not plugged into dispatch table yet...
2009-12-29 16:30:04 -07:00
Brian Paul
fd5511d27f mesa: implement per-buffer color masking
This is part of the GL_EXT_draw_buffers2 extension and part of GL 3.0.

The ctx->Color.ColorMask field is now a 2-D array.  Until drivers are
modified to support per-buffer color masking, they can just look at
the 0th color mask.

The new _mesa_ColorMaskIndexed() function will be called by
glColorMaskIndexedEXT() or glColorMaski().
2009-12-29 16:17:14 -07:00
Vinson Lee
495b8f8f7a glu/sgi: Initialize members of class directedLine. 2009-12-29 14:28:33 -08:00
Brian Paul
126b35bd3a mesa: implement indexed glGet functions
The functions are _mesa_GetBooleanIndexedv(), _mesa_GetIntegerIndexedv(), and
_mesa_GetInteger64Indexedv().  These will be called from API functions such as
glGetBooleanIndexedvEXT() and glGetBooleani_v().

Only the GL_BLEND query is supported at this time.
2009-12-29 15:09:16 -07:00
Brian Paul
3728673bd1 mesa: per-buffer blend enabled flags
ctx->Color.BlendEnabled is now a GLbitfield instead of a GLboolean to
indicate blend on/off status for each color/draw buffer.

This is infrastructure for GL_EXT_draw_buffers2 and OpenGL 3.x

New functions include _mesa_EnableIndexed(), _mesa_DisableIndexed(), and
_mesa_IsEnabledIndexed().  The enable function corresponds to
glEnableIndexedEXT() for GL_EXT_draw_buffers2 or glEnablei() for GL3.

Note that there's quite a few tests for ctx->Color.BlendEnabled != 0 in
drivers, etc.  Those tests can remain as-is since the mask will be 0 or ~0
unless GL_EXT_draw_buffers2 is enabled.
2009-12-29 15:04:03 -07:00
Vinson Lee
62a0d4ef7f mesa: Initialize variable in get_tex_color_index. 2009-12-29 13:38:02 -08:00
Brian Paul
4f481cb87a glsl: added uniform initializer check
GLSL 1.10 disallows initializers for uniforms but GLSL 1.20 and later
allows them.  This patch uses the #version directive to allow/disallow
uniform initializers.

This addresses bug 25807, but piglit also needs to be fixed to specify
the GLSL version in the shader.
2009-12-29 10:11:29 -07:00
Brian Paul
639e7a140e ARB prog parser: use _mesa_add_unnamed_constant() to use fewer constant slots
This function will search the constant parameters in an effort to re-use
constant slots.  For example, {1,2,3,4} and {4,1,1,2} can be stored in
one constant slot and accessed with different swizzles.  The swizzle info
must be propogated though the parsing code in a few places.

Fixes Piglit "vpfp-generic tests/shaders/generic/big-param.vpfp" failure.
2009-12-29 09:08:02 -07:00
Brian Paul
561a107df7 glsl: added default case in _fetch_token() to silence warnings 2009-12-29 08:47:40 -07:00
Eric Anholt
a099644755 intel: Fix false positives in checking for non-packed depth/stencil RB.
The wine d3d9 visual.c testcase was tripping over this and failing.
Presumably it's binding a packed depth/stencil texture to both
stencil and depth attachment points, and we make a new renderbuffer
wrapper for each in that case.
2009-12-28 19:21:27 -08:00
Vinson Lee
b4658dbf04 st/egl: Move declaration before code. 2009-12-28 19:09:33 -08:00
Eric Anholt
089144e4e5 intel: Allow binding a stencil but not a depth buffer.
Wine's d3d9 visual.c testcase tries this a lot, so I've added some
piglit tests (fbo-nodepth-test, fbo-nostencil-test, fbo-stencil-only)
and enabled it.
2009-12-28 18:52:47 -08:00
Eric Anholt
e4df8d32b5 intel: Improve INTEL_DEBUG=fbo output. 2009-12-28 18:51:18 -08:00
Eric Anholt
1e4677a61f intel: Remove dead fthrottle_mode option. We only do IRQ waits.
Noticed by clang.
2009-12-28 18:51:18 -08:00
Eric Anholt
2515ccaf24 mesa: remove gratuitous stores I added in remove_instructions. 2009-12-28 18:51:18 -08:00
Vinson Lee
c67bb15d4e intel: Silence compiler warnings. 2009-12-28 18:46:15 -08:00
Vinson Lee
46c2196de3 llvmpipe: Fix assert. 2009-12-28 18:07:09 -08:00
Vinson Lee
e049ddb754 llvmpipe: Silence compiler warnings. 2009-12-28 18:05:30 -08:00
Younes Manton
85dcc07071 nouveau: Unreference state/buffer objects on context/screen destruction.
- unreference state objects so that buffer objects are unreferenced and
eventually destroyed
- free channel at screen's destruction

Based on Krzysztof Smiechowicz's patch.
2009-12-28 17:59:01 -05:00
Luca Barbieri
cb9214f330 nouveau: Fix swizzling for copies to rectangular textures
nVidia hardware seems to swizzle rectangular texture (with width !=
height) coordinates by swizzling the lower bits and then adding the
higher bits from the larger dimension.
However, nv04_swizzle_bits ignores width and height and just
interleaves everything.
This causes problems with rectangular POT textures with height or
width 2048 or 4096 (but not 2048x1024 where it works by chance) since
the driver swizzles them in 1024x1024 chunks and gets the start
position for the non-first chunks wrong.
The following patch seems to fix those problems.
2009-12-28 17:59:01 -05:00
Luca Barbieri
3a0c527bd0 nouveau: Fix nv20-40 swizzled miptree RTs
I just coded a patch that does this and seems to work fine. It must be
fixed since it breaks OpenGL (or the state tracker can be changed, but
it seems better to do it in the driver).

The patch also fixes NV20 and NV30 in the same way. They compile but
are untested.

I would guess that using the 3D engine is faster for the larger
levels, but the 2D engine is faster for the smaller ones (and lacks
this issue).
2009-12-28 17:59:01 -05:00
Luca Barbieri
a55e50b082 NV30/NV40 CMP and SCS src == dst handling
CMP and SCS can produce incorrect results if the source and
destination are the same.
This patch should fix the issues.
CMP is fixed by predicating both moves.
SCS by changing the order if the source component is X.
2009-12-28 17:59:00 -05:00
José Fonseca
926562fe27 llvmpipe: Unmapping vertex/index buffers does NOT flush draw module anymore.
Not since 6094e79f4e.

Drivers now need to flush draw module explicitely (which explains why
all those previous commits adding draw_flushes calls were necessary).

This is a good thing, but it's tricky to get this right in face of user buffers
(it's not even clear who has the responsibility to flush when a user buffer
is seen -- statetracker or pipe driver), so just force flush (temporarily)
since it's not a bottleneck now.
2009-12-28 22:53:41 +00:00