Dave Airlie [Mon, 31 Jan 2011 06:03:29 +0000 (16:03 +1000)]
r600g: fix occlusion query results.
Like on some r5xx, there are multiple DB backends on the r600,
we need to add up the query results from each of these to get the
final correct value.
So far I'm not 100% sure how to calculate the num_db, value
setting it to 4 should be harmless enough until we do.
This fixes occulsion_query piglit test on my rv740.
Signed-off-by: Dave Airlie <airlied@redhat.com>
Alex Deucher [Mon, 31 Jan 2011 03:41:13 +0000 (22:41 -0500)]
r600g: remove some non-existent evergreen reg fields
Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Dave Airlie [Mon, 31 Jan 2011 03:03:10 +0000 (13:03 +1000)]
r600g: fix regression in cubemap tests since
eea1d8199b376f37027c14669e0bdf991a22872d
Although CUBE is a reduction inst, it writes to more than just PV.X
so we need to keep the dst channel.
Signed-off-by: Dave Airlie <airlied@redhat.com>
Dave Airlie [Mon, 31 Jan 2011 00:01:06 +0000 (10:01 +1000)]
r600g: handle the write all cbufs property.
This only works on r600/r700 so far, evergreen doesn't appear
to have the multiwrite enable bit in the color control, so we
may have to actually do a shader rewrite on EG hardware.
remove some duplicate code reg defines also.
Signed-off-by: Dave Airlie <airlied@redhat.com>
Henri Verbeet [Sun, 30 Jan 2011 17:57:39 +0000 (18:57 +0100)]
util: Call tables should be const.
Henri Verbeet [Sun, 30 Jan 2011 17:57:39 +0000 (18:57 +0100)]
r600g: Update the flushed depth texture after drawing to the corresponding texture.
I know Jerome will probably rewrite the way depth textures work sometime
soon. For the time being this should at least make common depth texture usage
for shadowing work properly though.
Chia-I Wu [Sun, 30 Jan 2011 14:54:40 +0000 (22:54 +0800)]
st/vega: Disable blending when the paint is opaque.
When the paint is opaque (currently, solid color with alpha 1.0f), no
blending is needed for VG_BLEND_SRC_OVER. This eliminates the serious
performance hit introduced by
859106f196ade77f59f8787b071739901cd1a843
for a common scenario.
Chia-I Wu [Sun, 30 Jan 2011 15:09:42 +0000 (23:09 +0800)]
st/vega: Remove an invalid sanity check.
Before create_handle returns, obj->handle is 0. Calling
handle_to_object will fail.
Chia-I Wu [Sun, 30 Jan 2011 08:38:12 +0000 (16:38 +0800)]
st/vega: s/vg[A-Z]/vega[A-Z]/.
José Fonseca [Sun, 30 Jan 2011 11:17:07 +0000 (11:17 +0000)]
scons: We have C++ in several libraries, so always link with the C++ compiler
Prevents missing symbols in libGL.so when LLVM is disabled.
Vinson Lee [Sun, 30 Jan 2011 09:08:54 +0000 (01:08 -0800)]
r600g: Fix void pointer arithmetic.
Fixes SCons build.
Dave Airlie [Sun, 30 Jan 2011 08:07:10 +0000 (18:07 +1000)]
r600g: fixes a segfault in the piglit fbo-genmipmap-formats test.
should be no need to unset this ptr here and if we don't end up using the
blitter we've just broken the state.
Tom Stellard [Sat, 29 Jan 2011 22:37:58 +0000 (14:37 -0800)]
r300/compiler: Standardize the number of bits used by swizzle fields
Swizzles are now defined everywhere as a field with 12 bits that contains
4 channels worth of meaningful information. Any channel that is unused is
set to RC_SWIZZLE_UNUSED. This change is necessary because rgb instructions
and alpha instructions were initializing channels that would never be used
(channel 3 for rgb and channels 1-3 for alpha) with 0 (aka RC_SWIZZLE_X).
This made it impossible to use generic helper functions for swizzles,
because sometimes a channel value of 0 meant unused and other times it
meant RC_SWIZZLE_X.
All hacks that tried to guess how many channels were relevant have
also been removed.
Marek Olšák [Sat, 29 Jan 2011 15:53:48 +0000 (16:53 +0100)]
r300g: upload translated indices via the uploader
Marek Olšák [Sat, 29 Jan 2011 12:58:02 +0000 (13:58 +0100)]
r300g: rework vertex format fallback
1) Only translate the [min_index, max_index] range.
2) Upload translated vertices via the uploader.
3) Rename valid_vertex_buffer[] to real_vertex_buffer[]
Marek Olšák [Sat, 29 Jan 2011 15:39:45 +0000 (16:39 +0100)]
r600g: upload translated indices via the uploader
Marek Olšák [Sat, 29 Jan 2011 15:22:08 +0000 (16:22 +0100)]
r600g: rework vertex format fallback
1) Only translate the [min_index, max_index] range.
2) Upload translated vertices via the uploader.
Marek Olšák [Sat, 29 Jan 2011 12:49:41 +0000 (13:49 +0100)]
r600g: fix vertex format fallback
This fixes:
- piglit/draw-vertices
- piglit/draw-vertices-half-float
Marek Olšák [Fri, 28 Jan 2011 21:04:09 +0000 (22:04 +0100)]
r600g: rework vertex buffer uploads
Only upload the [min_index, max_index] range instead of [0, userbuf_size].
This an important optimization.
Framerate in Lightsmark:
Before: 22 fps
After: 75 fps
The same optimization is already in r300g.
Marek Olšák [Sat, 29 Jan 2011 02:15:52 +0000 (03:15 +0100)]
r600g: consolidate set_constant_buffer functions
Marek Olšák [Sat, 29 Jan 2011 01:59:44 +0000 (02:59 +0100)]
r600g: consolidate vertex_buffer_update functions
Marek Olšák [Fri, 28 Jan 2011 21:17:41 +0000 (22:17 +0100)]
r600g: consolidate draw_vbo functions (v2)
Added a conditional to spi_update per Dave's comment.
Marek Olšák [Fri, 28 Jan 2011 20:55:28 +0000 (21:55 +0100)]
r600g: make r600_drawl inherit pipe_draw_info
Marek Olšák [Fri, 28 Jan 2011 02:03:38 +0000 (03:03 +0100)]
r600g: add back u_upload_mgr integration
I can't see a performance difference with this code, which means all
the driver-specific code removed in this commit was unnecessary.
Now we use u_upload_mgr in a slightly different way than we did before it got
dropped. I am not restoring the original code "as is" due to latest
u_upload_mgr changes that r300g performance benefits from.
This also fixes:
- piglit/fp-kil
Christoph Bumiller [Sun, 30 Jan 2011 00:24:56 +0000 (01:24 +0100)]
nvc0: implement transform feedback state
Christoph Bumiller [Sat, 29 Jan 2011 14:06:22 +0000 (15:06 +0100)]
nvc0: enable PIPE_CAP_ARRAY_TEXTURES and fix them
Chia-I Wu [Sat, 29 Jan 2011 21:09:06 +0000 (05:09 +0800)]
egl_dri2: Export glapi symbols for DRI drivers.
When an app loads libEGL.so dynamically with RTLD_LOCAL, loading DRI
drivers would fail because of missing glapi symbols. This commit makes
egl_dri2 load libglapi.so with RTLD_GLOBAL to export glapi symbols for
future symbol resolutions.
The same trick can be found in GLX. However, egl_dri2 can only do so
when --enable-shared-glapi is given. Because, otherwise, both libGL.so
and libglapi.so define glapi symbols and egl_dri2 cannot tell which
library to load.
Chia-I Wu [Sat, 29 Jan 2011 20:52:31 +0000 (04:52 +0800)]
egl: Make the transition to built-in drivers more smooth.
When the user sets EGL_DRIVER to egl_dri2 (or egl_glx), make sure the
built-in driver is used. The user might leave the outdated egl_dri2.so
(or egl_glx.so) on the filesystem and we do not want to load it.
Chia-I Wu [Sat, 29 Jan 2011 11:06:27 +0000 (19:06 +0800)]
mapi: Workaround a bug in makedepend.
makedepend would crash when a source includes a header indirectly, such
as
#define HEADER "some-header.h"
#include HEADER
Do not define HEADER (makedepend would detects this as an incomplete
include) and add the dependency manually in the Makefile.
This should hopefully fix bug #33374.
Marek Olšák [Sat, 29 Jan 2011 04:11:01 +0000 (05:11 +0100)]
u_blitter: use user buffers instead of real buffers
User buffers may be the fastest way to upload data.
Brian Paul [Sat, 29 Jan 2011 03:25:27 +0000 (20:25 -0700)]
gallium/docs: add info about transfer boxes and array textures
Brian Paul [Sat, 29 Jan 2011 03:25:27 +0000 (20:25 -0700)]
gallium: added comments to pipe_transfer
Brian Paul [Sat, 29 Jan 2011 03:25:27 +0000 (20:25 -0700)]
st/mesa: fix texture array dimensions
For 1D/2D texture arrays use the pipe_resource::array_size field.
In OpenGL 1D arrays texture use the height dimension as the array
size and 2D array textures use the depth dimension as the array size.
Gallium uses a special array_size field instead. When setting up
gallium textures or comparing Mesa textures to gallium textures we
need to be extra careful that we're comparing the right fields.
The new st_gl_texture_dims_to_pipe_dims() function maps OpenGL
texture dimensions to gallium texture dimensions and simplifies
this quite a bit.
Brian Paul [Sat, 29 Jan 2011 03:25:27 +0000 (20:25 -0700)]
softpipe: fix array textures to use resource array_size
Don't use height for 1D array textures or depth for 2D array textures.
Brian Paul [Sat, 29 Jan 2011 03:25:26 +0000 (20:25 -0700)]
mesa: fix typo, wrap long line
Brian Paul [Sat, 29 Jan 2011 03:25:26 +0000 (20:25 -0700)]
st/mesa: pass layers param to st_texture_create()
Carl Worth [Fri, 28 Jan 2011 22:19:39 +0000 (08:19 +1000)]
Revert "glcpp: Demote "macro redefined" from an error to a warning"
This reverts commit
d3df641f0aba99b0b65ecd4d9b06798bca090a29.
The original commit had sat unpushed on my machine for months. By the
time I found it again, I had forgotten that we had decided not to use
this change after all, (the relevant test was removed long ago).
Jakob Bornecrantz [Thu, 27 Jan 2011 13:58:30 +0000 (14:58 +0100)]
util: Fix leak of transfers in upload manager
Brian Paul [Fri, 28 Jan 2011 20:30:15 +0000 (13:30 -0700)]
docs: removed VC8 project files
Brian Paul [Fri, 28 Jan 2011 20:29:50 +0000 (13:29 -0700)]
mesa: omit VC8 project files from tarball
Thierry Vignaud [Fri, 28 Jan 2011 20:31:04 +0000 (12:31 -0800)]
Fix missing files in Mesa tarballs.
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Chad Versace [Fri, 28 Jan 2011 19:16:31 +0000 (11:16 -0800)]
mesa: Fix available APIs for AMD_conservative_depth
Remove ES2, since AMD_conservative_depth is not listed in the OpenGL ES
extension registry.
Marek Olšák [Fri, 28 Jan 2011 18:33:59 +0000 (19:33 +0100)]
r300/compiler: print stats based on the initial number of instructions
The same number of shaders is now printed regardless of optimizations being
enabled or not, so that we can compare shader stats side by side easily.
Marek Olšák [Fri, 28 Jan 2011 16:15:22 +0000 (17:15 +0100)]
r300g: fix resource_copy_region for DXT SRGB formats
Carl Worth [Mon, 23 Aug 2010 18:38:45 +0000 (11:38 -0700)]
glcpp: Demote "macro redefined" from an error to a warning
The GLSL specification is vague here, (just says "as is standard for
C++"), though the C specifications seem quite clear that this should
be an error.
However, an existing piglit test (CorrectPreprocess11.frag) expects
this to be a warning, not an error, so we change this, and document in
README the deviation from the specification.
Dave Airlie [Fri, 28 Jan 2011 01:44:51 +0000 (11:44 +1000)]
dri: add a placeholder for the framebuffer sRGB capable bit.
This is needed to build the X server GLX_EXT_framebuffer_sRGB bits.
Signed-off-by: Dave Airlie <airlied@redhat.com>
Dimitry Andric [Fri, 28 Jan 2011 01:03:42 +0000 (18:03 -0700)]
glapi: add @GOTPCREL relocation type
Fixes http://bugs.freedesktop.org/show_bug.cgi?id=33440
This replaces commit
731ec60da3ccb92f5bfb4d6f1bc3c8e712751376
NOTE: This is a candidate for the 7.9 and 7.10 branches
Signed-off-by: Brian Paul <brianp@vmware.com>
Marek Olšák [Fri, 28 Jan 2011 00:58:30 +0000 (01:58 +0100)]
r600g: handle PIPE_CAP_ARRAY_TEXTURES
Marek Olšák [Fri, 28 Jan 2011 00:56:57 +0000 (01:56 +0100)]
r300g: handle PIPE_CAP_ARRAY_TEXTURES
Marek Olšák [Fri, 28 Jan 2011 00:15:17 +0000 (01:15 +0100)]
r300g: 8x8-compressed zbuffer can only be point-sampled
Marek Olšák [Fri, 28 Jan 2011 00:01:01 +0000 (01:01 +0100)]
r300g: fix and re-enable 8x8 zbuffer compression mode
Also cleanup the whole thing.
Marek Olšák [Thu, 27 Jan 2011 22:14:17 +0000 (23:14 +0100)]
r300g: print driver info if RADEON_DEBUG=info
Marek Olšák [Thu, 27 Jan 2011 22:13:28 +0000 (23:13 +0100)]
r300g: add winsys flag CAN_AACOMPRESS
Marek Olšák [Thu, 27 Jan 2011 22:06:15 +0000 (23:06 +0100)]
r300g: rename flag squaretiling -> drm_2_1_0
Marek Olšák [Thu, 27 Jan 2011 20:17:25 +0000 (21:17 +0100)]
docs: update GL3 status
Marek Olšák [Wed, 26 Jan 2011 10:46:39 +0000 (11:46 +0100)]
util: fix parsing debug options
So that 'foo' can be found in: OPTION=prefixfoosuffix,foo
Also allow that debug options can be separated by a non-alphanumeric characters
instead of just commas.
Marek Olšák [Tue, 25 Jan 2011 04:37:52 +0000 (05:37 +0100)]
r300g: fix some bugs with zbuffer compression (v4)
This drops the memblock manager for ZMASK. Instead, only one zbuffer can be
compressed at a time. Note that this does not necessarily have to be slower.
When there is a large number of zbuffers, compression might be used more often
than it was before. It's also easier to debug.
How it works:
1) 'clear' turns the compression on.
2) If some other zbuffer is set or the currently-bound zbuffer is used
for texturing, the driver decompresses it and then turns the compression off.
Notes:
- The ZMASK clear has been refactored, so that only one packet3 is used to clear
ZMASK.
- The 8x8 compression mode is disabled. I couldn't make it work without issues.
- Also removed driver-specific stuff from u_blitter.
Driver status:
- RV530 and R580 appear to just work (finally).
- RV570 should work, but there may be an issue that we don't correctly
calculate the number of dwords to clear, resulting in a partially
uninitialized zbuffer.
- RS690 misrenders as if no ZMASK clear happened. No idea what's going on.
- RV350 may even hardlock. This issue was already present and this patch doesn't
fix it.
I think we are still missing some hardware info we need to make the zbuffer
compression work fully.
Note that there is also an issue with HiZ, resulting in a sort of blocky
zigzagged corruption around some objects.
Brian Paul [Thu, 27 Jan 2011 04:16:41 +0000 (21:16 -0700)]
glsl: use 'this' pointer to be consistent
Brian Paul [Thu, 27 Jan 2011 04:16:32 +0000 (21:16 -0700)]
glsl: remove needless conditional
Brian Paul [Thu, 27 Jan 2011 04:16:14 +0000 (21:16 -0700)]
glsl: move ir_var_out code
Brian Paul [Thu, 27 Jan 2011 04:15:52 +0000 (21:15 -0700)]
glsl: move ir_var_system_value code
Brian Paul [Thu, 27 Jan 2011 04:15:39 +0000 (21:15 -0700)]
glsl: use local var to simplify code a bit
Zack Rusin [Thu, 27 Jan 2011 02:20:53 +0000 (21:20 -0500)]
mesa: fix compilation
this isn't c++ please don't mix declerations with code
Chad Versace [Thu, 27 Jan 2011 09:40:55 +0000 (01:40 -0800)]
glsl: Refresh autogenerated lexer file
For previous commit.
Chad Versace [Thu, 27 Jan 2011 09:40:51 +0000 (01:40 -0800)]
glsl: Remove extraneously extraneous parens
I found this parenthetical usage of parentheses to be extraneously
extraneous:
(yyextra->ARB_fragment_coord_conventions_enable)
Chad Versace [Thu, 27 Jan 2011 09:40:47 +0000 (01:40 -0800)]
mesa: Allow extensions in MESA_EXTENSION_OVERRIDE to be prefixed with '+'
If an extension is prefixed with '+', attempt to enable it. This
introduces symmetry with the prefix '-', which is already allowed.
Chad Versace [Thu, 27 Jan 2011 09:40:43 +0000 (01:40 -0800)]
mesa: Simplify logic in get_extension_override()
* Reduce max indentation level from 7 to 3.
* Eliminate counter variables.
* Remove function append().
Chad Versace [Thu, 27 Jan 2011 09:40:39 +0000 (01:40 -0800)]
glsl: Enable AMD_conservative_depth in parser
All the necessary compiler infrastructure for AMD_conservative_depth is in
place, so it's safe to enable it in the parser.
Chad Versace [Thu, 27 Jan 2011 09:40:35 +0000 (01:40 -0800)]
mesa: Propagate gl_FragDepth layout from GLSL IR to Mesa IR
Chad Versace [Thu, 27 Jan 2011 09:40:31 +0000 (01:40 -0800)]
glsl: Raise linking error if gl_FragDepth layout is inconsistent
From the AMD_conservative_depth spec:
If gl_FragDepth is redeclared in any fragment shader in a program, it
must be redeclared in all fragment shaders in that program that have
static assignments to gl_FragDepth. All redeclarations of gl_FragDepth in
all fragment shaders in a single program must have the same set of
qualifiers.
Chad Versace [Thu, 27 Jan 2011 09:40:26 +0000 (01:40 -0800)]
glsl: Propagate depth layout qualifier from AST to IR
Chad Versace [Thu, 27 Jan 2011 09:40:22 +0000 (01:40 -0800)]
glsl: Define enum ir_depth_layout
Chad Versace [Thu, 27 Jan 2011 09:40:18 +0000 (01:40 -0800)]
glsl: Refresh autogenerated parser files
For commits titled:
glcpp: Conditionally define macro GL_AMD_conservative_depth
glsl: Add support for AMD_conservative_depth to parser
Chad Versace [Thu, 27 Jan 2011 09:40:14 +0000 (01:40 -0800)]
glsl: Add support for AMD_conservative_depth to parser
When AMD_conservative_depth is enabled:
* Let 'layout' be a token.
* Extend the production rule of layout_qualifier_id to process the tokens:
depth_any
depth_greater
depth_less
depth_unchanged
Chad Versace [Thu, 27 Jan 2011 09:40:10 +0000 (01:40 -0800)]
glsl: Add depth layout qualifiers to ast_type_qualifier
Chad Versace [Thu, 27 Jan 2011 09:40:06 +0000 (01:40 -0800)]
glcpp: Conditionally define macro GL_AMD_conservative_depth
Define macro GL_AMD_conservative_depth to 1 when its extension is
enabled.
Chad Versace [Thu, 27 Jan 2011 09:40:02 +0000 (01:40 -0800)]
mesa: Add AMD_conservative_depth to extension list
The extension is off by default.
First in a patchset that implements support for AMD_conservative_depth in
the compiler.
Brian Paul [Wed, 26 Jan 2011 23:22:30 +0000 (16:22 -0700)]
tgsi: add cases for array textures
Fixes http://bugs.freedesktop.org/show_bug.cgi?id=33555
Kristian Høgsberg [Wed, 26 Jan 2011 20:05:46 +0000 (15:05 -0500)]
mesa: Support internalFormat=GL_BGRA for DRI drivers
Kristian Høgsberg [Wed, 26 Jan 2011 15:46:02 +0000 (10:46 -0500)]
st/egl: Downgrade warning to debug when we can't create a drm screen
We try to load a DRI driver if this fails so don't confuse users.
Brian Paul [Wed, 26 Jan 2011 15:01:15 +0000 (08:01 -0700)]
mesa: fix MESA/EXT typo
Spotted by Bernd Buschinski.
Marek Olšák [Mon, 24 Jan 2011 22:41:51 +0000 (23:41 +0100)]
util: require debug options to be separated by commas
Let's assume there are two options with names such that one is a substring
of another. Previously, if we only specified the longer one as a debug option,
the shorter one would be considered specified as well (because of strstr).
This commit fixes it by checking that each option is surrounded by commas.
(a regexp would be nicer, but this is not a performance critical code)
Zack Rusin [Wed, 26 Jan 2011 05:01:51 +0000 (00:01 -0500)]
gallium: add an interface for query predicates
as specified in the arb_occlusion_query2. just the interface.
Brian Paul [Wed, 26 Jan 2011 03:27:10 +0000 (20:27 -0700)]
softpipe: support for 1D/2D texture arrays
Brian Paul [Wed, 26 Jan 2011 03:26:22 +0000 (20:26 -0700)]
st/mesa: support for 1D/2D texture arrays
Brian Paul [Wed, 26 Jan 2011 03:25:50 +0000 (20:25 -0700)]
tgsi: add support for 1D/2D texture arrays
Tormod Volden [Tue, 25 Jan 2011 21:25:18 +0000 (13:25 -0800)]
configure.ac: define LIBDRM_INTEL_REQUIRED
To have the LIBDRM* requirements in one place
Signed-off-by: Tormod Volden <debian.tormod@gmail.com>
Signed-off-by: Brian Paul <brianp@vmware.com>
Brian Paul [Wed, 26 Jan 2011 01:45:44 +0000 (18:45 -0700)]
mesa: remove isProxy local var
Brian Paul [Wed, 26 Jan 2011 01:44:11 +0000 (18:44 -0700)]
mesa: use texFormat local var in more places
Brian Paul [Wed, 26 Jan 2011 01:42:53 +0000 (18:42 -0700)]
mesa: consolidate error handling code in _mesa_GetTexLevelParameteriv()
Brian Paul [Wed, 26 Jan 2011 01:27:44 +0000 (18:27 -0700)]
mesa: consolidate error handling in set_tex_parameteri()
Brian Paul [Wed, 26 Jan 2011 01:07:45 +0000 (18:07 -0700)]
mesa: add checks for GL_EXT_texture_array
In case the driver enables GL_MESA_texture_array but not the EXT version.
Ian Romanick [Tue, 25 Jan 2011 20:06:18 +0000 (12:06 -0800)]
linker: Propagate max_array_access while linking functions
Update the max_array_access of a global as functions that use that
global are pulled into the linked shader.
Fixes piglit test glsl-fs-implicit-array-size-01 and bugzilla #33219.
NOTE: This is a candidate for the 7.9 and 7.10 branches.
Ian Romanick [Tue, 25 Jan 2011 20:04:08 +0000 (12:04 -0800)]
linker: Set sizes for non-global arrays as well
Previously only global arrays with implicit sizes would be patched.
This causes all arrays that are actually accessed to be sized.
Fixes piglit test glsl-fs-implicit-array-size-02.
NOTE: This is a candidate for the 7.9 and 7.10 branches.
Ian Romanick [Tue, 25 Jan 2011 19:50:04 +0000 (11:50 -0800)]
ir_to_mesa: Add several assertions about sizes of arrays
Both of these assertions are triggered by the test case in bugzilla
size of 0.
Brian Paul [Tue, 25 Jan 2011 20:09:57 +0000 (13:09 -0700)]
glsl: silence uninitialized var warning in read_texture()
And generate an error if the texture pattern is not matched.
Mathias Fröhlich [Sun, 23 Jan 2011 21:35:13 +0000 (22:35 +0100)]
r600g: Implement timer queries.
Mathias Fröhlich [Sun, 23 Jan 2011 21:16:56 +0000 (22:16 +0100)]
r600g: Implement asyncronous query results.
Mathias Fröhlich [Sun, 23 Jan 2011 21:10:10 +0000 (22:10 +0100)]
r600g: Fix meaning of num_results for queries.
Tim Wiederhake [Mon, 24 Jan 2011 15:59:16 +0000 (16:59 +0100)]
fix potential leak in r600_context_init