mesa.git
11 years agomesa: loosen small matrix determinant check
Brian Paul [Tue, 24 Jul 2012 17:11:45 +0000 (11:11 -0600)]
mesa: loosen small matrix determinant check

When computing a matrix inverse, if the determinant is too small we could hit
a divide by zero.  There's a check to prevent this (we basically give up on
computing the inverse and return the identity matrix.)  This patch loosens
this test to fix a lighting bug reported by Lars Henning Wendt.

v2: use abs(det) to handle negative values

NOTE: This is a candidate for the 8.0 branch.

Tested-by: Lars Henning Wendt <lars.henning.wendt@gris.tu-darmstadt.de>
11 years agoi965: Use sendc for all render target writes on Gen6+.
Paul Berry [Thu, 19 Jul 2012 14:58:30 +0000 (07:58 -0700)]
i965: Use sendc for all render target writes on Gen6+.

The sendc instruction causes the fragment shader thread to wait for
any dependent threads (i.e. threads rendering to overlapping pixels)
to complete before sending the message.  We need to use sendc on the
first render target write in order to guarantee that fragment shader
outputs are written to the render target in the correct order.

Previously, we only used the "sendc" instruction when writing to
binding table index 0.  This did the right thing for fragment shaders,
because our fragment shader back-ends always issue their first render
target write to binding table index 0.  However, it did the wrong
thing for blorp, which performs its render target writes to binding
table index 1.

A more robust solution is to use sendc for all render target writes.
This should not produce any performance penalty, since after the first
sendc, all of the dependent threads will have completed.

For more information about sendc, see the Ivy Bridge PRM, Vol4 Part3
p218 (sendc - Conditional Send Message), and p54 (TDR Registers).

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
11 years agoi965/msaa: Remove TODO comments that are no longer relevant.
Paul Berry [Wed, 18 Jul 2012 16:54:04 +0000 (09:54 -0700)]
i965/msaa: Remove TODO comments that are no longer relevant.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agointel: Make more consistent use of _mesa_is_{user,winsys}_fbo()
Paul Berry [Wed, 18 Jul 2012 19:54:48 +0000 (12:54 -0700)]
intel: Make more consistent use of _mesa_is_{user,winsys}_fbo()

A lot of code was still differentiating between between winsys and
user fbos by testing the fbo's name against zero.  This converts
everything in the i915 and 965 drivers over to use _mesa_is_user_fbo()
and _mesa_is_winsys_fbo().

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agomesa: Make more consistent use of _mesa_is_{user,winsys}_fbo()
Paul Berry [Wed, 18 Jul 2012 19:54:48 +0000 (12:54 -0700)]
mesa: Make more consistent use of _mesa_is_{user,winsys}_fbo()

A lot of code was still differentiating between between winsys and
user fbos by testing the fbo's name against zero.  This converts
everything in core mesa, the state tracker, and src/mesa/program over
to use _mesa_is_user_fbo() and _mesa_is_winsys_fbo().

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agoglsl: warning: pragma `invariant(all)' not supported in GLSL ES 1.00
Oliver McFadden [Thu, 5 Jul 2012 08:22:06 +0000 (11:22 +0300)]
glsl: warning: pragma `invariant(all)' not supported in GLSL ES 1.00

The OpenGL(R) ES Shading Language
Version 1.00 Revision 17 (12 May, 2009)

> 4.6.1 The Invariant Qualifier
> ... To force all output variables to be invariant, use the pragma
> #pragma STDGL invariant(all)

Signed-off-by: Oliver McFadden <oliver.mcfadden@linux.intel.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
11 years agoshared-glapi: Install libglapi.so.0.0.0 and .0 links in lib/.
Kenneth Graunke [Mon, 23 Jul 2012 22:22:06 +0000 (15:22 -0700)]
shared-glapi: Install libglapi.so.0.0.0 and .0 links in lib/.

We already provided these files on 'make install', but only created a
'libglapi.so' in the top-level lib/ convenience folder.  We used to
create all three, but at some point in the build system churn, it broke.

Various applications (like the ES2 conformance suite) seem to link
against libglapi.so.0, so without these links, setting LD_LIBRARY_PATH
and LIBGL_DRIVERS_PATH can lead to using /usr/lib/libglapi.so.0 with
/home/whatever/libGL.so, which leads to API calls getting routed
incorrectly (i.e. glCompileShader -> _mesa_LinkProgramARB), which leads
to rage problems.

Preserve developer sanity...install links.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agoscons: Fix build with clang.
Vinson Lee [Wed, 25 Jul 2012 06:02:18 +0000 (23:02 -0700)]
scons: Fix build with clang.

Signed-off-by: Vinson Lee <vlee@freedesktop.org>
Reviewed-by: Brian Paul <brianp@vmware.com>
11 years agoi965: Remove unused param conversion code.
Eric Anholt [Sat, 21 Jul 2012 00:03:57 +0000 (17:03 -0700)]
i965: Remove unused param conversion code.

Ever since ctx->NativeIntegers was set, the conversion flag has been
PARAM_NO_CONVERT.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agosoftpipe: fix copy/paste error in tex sample code
Olivier Galibert [Wed, 25 Jul 2012 13:45:42 +0000 (07:45 -0600)]
softpipe: fix copy/paste error in tex sample code

Fixes https://bugs.freedesktop.org/show_bug.cgi?id=52369

Reviewed-by: Brian Paul <brianp@vmware.com>
11 years agoRemove redundant osmesa shared library install from Makefile.old
Jon TURNEY [Tue, 10 Jul 2012 15:33:40 +0000 (16:33 +0100)]
Remove redundant osmesa shared library install from Makefile.old

Since osmesa now has been converted to Makefile.am, an appropriate install: rule
is generated to install the shared libary, so we no longer need to do that in
src/mesa/Makefile.old

This leaves nothing in src/mesa/Makefile.old but the tags: rule, so move that to
Makefile.am and remove Makefile.old

Also, nothing now uses OSMESA_LIB_GLOB anymore, so remove it

Signed-off-by: Jon TURNEY <jon.turney@dronecode.org.uk>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
11 years agoUpdate mesa/drivers/x11/Makefile.am for xm_image.h removal
Jon TURNEY [Thu, 12 Jul 2012 21:41:06 +0000 (22:41 +0100)]
Update mesa/drivers/x11/Makefile.am for xm_image.h removal

Commit 6c6803f28de0d4cb6937fcd95a47aa81da31fd78 removed xm_image.[ch], and removed
xm_image.c, but not xm_image.h from the Makefile, this was subsequently carried over
into Makefile.am

Remove xm_image.h from Makfile.am.  This allows 'make dist' to succeed, even if it
doesn't do anything useful

Signed-off-by: Jon TURNEY <jon.turney@dronecode.org.uk>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
11 years agodrivers/osmesa: Link OSMesa using -no-undefined libtool flag
Jon TURNEY [Sat, 7 Jul 2012 21:02:44 +0000 (22:02 +0100)]
drivers/osmesa: Link OSMesa using -no-undefined libtool flag

"Use -no-undefined to assure libtool that the library has no
unresolved symbols at link time, so that libtool will build a shared
library on platforms require that all symbols are resolved when the
library is linked."

Signed-off-by: Jon TURNEY <jon.turney@dronecode.org.uk>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
11 years agodrivers/X11: Link X11 libGL with -no-undefined libtool flag
Jon TURNEY [Sat, 7 Jul 2012 17:01:50 +0000 (18:01 +0100)]
drivers/X11: Link X11 libGL with -no-undefined libtool flag

"Use -no-undefined to assure libtool that the library has no
unresolved symbols at link time, so that libtool will build a shared
library on platforms require that all symbols are resolved when the
library is linked."

Signed-off-by: Jon TURNEY <jon.turney@dronecode.org.uk>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
11 years agoRevert "scons: Add instrumentation component libraries to linking on llvm-3.2."
Vinson Lee [Wed, 25 Jul 2012 05:46:47 +0000 (22:46 -0700)]
Revert "scons: Add instrumentation component libraries to linking on llvm-3.2."

This reverts commit e2e7b467d8a6567437823767af74004a396f1c82.

No longer needed after llvm-3.2svn r160611.

Signed-off-by: Vinson Lee <vlee@freedesktop.org>
11 years agoi965/msaa: Switch on 8x MSAA for Gen7.
Paul Berry [Wed, 18 Jul 2012 04:06:01 +0000 (21:06 -0700)]
i965/msaa: Switch on 8x MSAA for Gen7.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agoi965/msaa: Adjust MCS buffer allocation for 8x MSAA.
Paul Berry [Wed, 18 Jul 2012 04:06:01 +0000 (21:06 -0700)]
i965/msaa: Adjust MCS buffer allocation for 8x MSAA.

MCS buffers use 32 bits per pixel in 8x MSAA, and 8 bits per pixel in
4x MSAA.  This patch adjusts the format we use to allocate the buffer
so that enough memory is set aside for 8x MSAA.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agoi965/msaa: Remove assertion in 3DSTATE_SAMPLE_MASK to allow 8x MSAA.
Paul Berry [Wed, 18 Jul 2012 04:06:01 +0000 (21:06 -0700)]
i965/msaa: Remove assertion in 3DSTATE_SAMPLE_MASK to allow 8x MSAA.

The code to emit 3DSTATE_SAMPLE_MASK was already correct for 8x
MSAA--this patch just removes an assertion that would have prevented
it from being used for 8x MSAA.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agoi965/msaa: Adjust 3DSTATE_MULTISAMPLE packet for 8x MSAA.
Paul Berry [Wed, 18 Jul 2012 04:06:01 +0000 (21:06 -0700)]
i965/msaa: Adjust 3DSTATE_MULTISAMPLE packet for 8x MSAA.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agoi965/blorp: Encode and decode IMS format for 8x MSAA correctly.
Paul Berry [Wed, 18 Jul 2012 04:06:01 +0000 (21:06 -0700)]
i965/blorp: Encode and decode IMS format for 8x MSAA correctly.

This patch updates the blorp functions encode_msaa() and decode_msaa()
to properly handle the encoding of IMS MSAA buffers when
num_samples=8.

Acked-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agoi965/blorp: Compute sample number correctly for 8x MSAA.
Paul Berry [Wed, 18 Jul 2012 04:06:01 +0000 (21:06 -0700)]
i965/blorp: Compute sample number correctly for 8x MSAA.

When operating in persample dispatch mode, the blorp engine would
previously assume that subspan N always represented sample N (this is
correct assuming 4x MSAA and a 16-wide dispatch).  In order to support
8x MSAA, we must compute which sample is associated with each subspan,
using the "Starting Sample Pair Index" field in the thread payload.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agoi965/blorp: Properly adjust primitive size for 8x MSAA.
Paul Berry [Wed, 18 Jul 2012 04:06:01 +0000 (21:06 -0700)]
i965/blorp: Properly adjust primitive size for 8x MSAA.

When rendering to an IMS MSAA surface on Gen7, blorp sets up the
rendering pipeline as though it were rendering to a single-sampled
surface; accordingly it must adjust the size of the primitive it sends
down the pipeline to account for the interleaving of samples in an IMS
surface.

This patch modifies the size adjustment code to properly handle 8x
MSAA, which makes room for the extra samples by using an interleaving
pattern that is twice as wide as 4x MSAA.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agoi965/blorp: Parameterize manual_blend() by num_samples.
Paul Berry [Wed, 18 Jul 2012 04:06:01 +0000 (21:06 -0700)]
i965/blorp: Parameterize manual_blend() by num_samples.

This patch adds a num_samples argument to the blorp function
manual_blend(), allowing it to be told how many samples need to be
blended together.  Previously it assumed 4x MSAA, since that was all
we supported.

We also bump up LOG2_MAX_BLEND_SAMPLES from 2 to 3, so that
manual_blend() will be able to handle 8x MSAA.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agoi965/msaa: Remove comment about falsely claiming to support MSAA.
Paul Berry [Mon, 9 Jul 2012 23:23:26 +0000 (16:23 -0700)]
i965/msaa: Remove comment about falsely claiming to support MSAA.

Gen6+ hardware now supports MSAA properly.

Reviewed-by: Chad Versace <chad.versace@linux.intel.com>
11 years agoi965/blorp: Handle DrawBuffers properly.
Paul Berry [Fri, 13 Jul 2012 21:59:13 +0000 (14:59 -0700)]
i965/blorp: Handle DrawBuffers properly.

When the client program uses glDrawBuffer() or glDrawBuffers() to
select more than one color buffer for drawing into, and then performs
a blit, we need to blit into every single enabled draw buffer.

+2 oglconforms.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=50407

Reviewed-by: Chad Versace <chad.versace@linux.intel.com>
11 years agoi965/blorp: Rearrange order of blit validation and preparation steps.
Paul Berry [Fri, 13 Jul 2012 21:21:27 +0000 (14:21 -0700)]
i965/blorp: Rearrange order of blit validation and preparation steps.

This patch rearranges the order of steps performed by a blorp blit
from this:

- Sync up state of window system buffers.
- Find buffers.
- Find miptrees.
- Make sure buffer formats match.
- Handle mirroring.
- Make sure width and height match.
- Handle clipping/scissoring.
- Account for window system origin conventions.
- Do depth resolves, if applicable.
- Do the blit.
- Record the need for a future HiZ resolve, if applicable.

To this:

- Sync up state of window system buffers.
- Handle mirroring.
- Make sure width and height match.
- Handle clipping/scissoring.
- Account for window system origin conventions.
- Find buffers.
- Make sure buffer formats match.
- Find miptrees.
- Do depth resolves, if applicable.
- Do the blit.
- Record the need for a future HiZ resolve, if applicable.

The steps are the same, but they are now performed in an order that
will make it possible to implement correct DrawBuffers support.  Note
that the last four steps are now in a separate function
(do_blorp_blit), since they will need to be executed repeatedly when
DrawBuffers support is added.

Reviewed-by: Chad Versace <chad.versace@linux.intel.com>
11 years agoi965/blorp: Don't fall back to swrast when miptrees absent.
Paul Berry [Fri, 13 Jul 2012 20:59:41 +0000 (13:59 -0700)]
i965/blorp: Don't fall back to swrast when miptrees absent.

Previously, the blorp engine would fall back to swrast if the source
or destination of a blit had no associated miptree.  This was
unnecessary, since _mesa_BlitFramebufferEXT() already takes care of
making the blit silently succeed if there are no buffers bound, so the
fallback paths could never actually happen in practice.

Removing these fallback paths will simplify the implementation of
correct DrawBuffers support in blorp.

Reviewed-by: Chad Versace <chad.versace@linux.intel.com>
11 years agoi965/blorp: Fixup scissoring of blits to window system buffers.
Paul Berry [Sat, 14 Jul 2012 01:30:55 +0000 (18:30 -0700)]
i965/blorp: Fixup scissoring of blits to window system buffers.

This patch modifies the order of operations in the blorp engine so
that clipping and scissoring are performed before adjusting the
coordinates to account for the difference in origin convention between
window system buffers and framebuffer objects.  Previously, we would
do clipping and scissoring after adjusting for origin conventions, so
we would get scissoring wrong in window system buffers.

Fixes Piglit test "fbo-scissor-blit window".

Reviewed-by: Chad Versace <chad.versace@linux.intel.com>
11 years agoi965/blorp: Simplify check that src/dst width/height match.
Paul Berry [Sat, 14 Jul 2012 01:30:55 +0000 (18:30 -0700)]
i965/blorp: Simplify check that src/dst width/height match.

When checking that the source and destination dimensions match, we
don't need to store the width and height in variables; doing so just
risks confusion since right after the check, we do clipping and
scissoring, which may alter the width and height.

No functional change.

Reviewed-by: Chad Versace <chad.versace@linux.intel.com>
11 years agoi965/msaa: Work around problems with null render targets on Gen6.
Paul Berry [Tue, 10 Jul 2012 18:23:25 +0000 (11:23 -0700)]
i965/msaa: Work around problems with null render targets on Gen6.

On Gen6, multisampled null render targets don't seem to work
properly--they cause the GPU to hang.  So, as a workaround, we render
into a dummy color buffer.

Fortunately this situation (multisampled rendering without a color
buffer) is rare, and we don't have to waste too much memory, because
we can give the workaround buffer a very small pitch.

Fixes piglit test "EXT_framebuffer_multisample/no-color {2,4}
depth-computed *" on Gen6.

Reviewed-by: Chad Versace <chad.versace@linux.intel.com>
11 years agoi965: Set width, height, and tiling properly for null render targets.
Paul Berry [Fri, 13 Jul 2012 14:25:12 +0000 (07:25 -0700)]
i965: Set width, height, and tiling properly for null render targets.

The HW docs say that the width and height of null render targets need
to match the width and height of the corresponding depth and/or
stencil buffers, and that they need to be marked as Y-tiled.  Although
leaving these values at 0 doesn't seem to cause any ill effects, it
seems wise to follow the documented requirements.

Reviewed-by: Chad Versace <chad.versace@linux.intel.com>
11 years agoi965/msaa: Control multisampling behaviour via the visual.
Paul Berry [Tue, 10 Jul 2012 03:05:41 +0000 (20:05 -0700)]
i965/msaa: Control multisampling behaviour via the visual.

Previously, we used the number of samples in draw buffer 0 to
determine whether to set up the 3D pipeline for multisampling.  Using
the visual is cleaner, and has the benefit of working properly when
there is no color buffer.

Fixes all piglit tests "EXT_framebuffer_multisample/no-color" on Gen7.
On Gen6, the "depth-computed" variants of these tests still fail; this
will be addresed in a later patch.

Reviewed-by: Chad Versace <chad.versace@linux.intel.com>
11 years agomsaa: Compute visual samples/sampleBuffers from all buffers.
Paul Berry [Tue, 10 Jul 2012 03:06:19 +0000 (20:06 -0700)]
msaa: Compute visual samples/sampleBuffers from all buffers.

This patch ensures that Visual.samples and Visual.sampleBuffers are
set correctly even in the case where there is no color buffer.
Previously, these values would retain their default value of 0 in this
circumstance, even if the depth or stencil buffer was multisampled.

Reviewed-by: Chad Versace <chad.versace@linux.intel.com>
11 years agoFix compile time errors when building against uclibc
Anthony G. Basile [Tue, 24 Jul 2012 19:59:54 +0000 (12:59 -0700)]
Fix compile time errors when building against uclibc

Mesa misses a few checks when compiling on a uclibc system
which cause it to fall back on glibc-ism.  This patch
addresses those issues.

Acked-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
11 years agor600g: enable streamout only on 2.14 or latter kernel
Jerome Glisse [Tue, 24 Jul 2012 19:05:43 +0000 (15:05 -0400)]
r600g: enable streamout only on 2.14 or latter kernel

The kernel streamout support was supposed to get into 3.3 along
the tiling change and thus use the same kernel version bump of
2.13 to report userspace that streamout register were supported.

This is not what happen. So as streamout kernel support did not
bump the kernel driver version, rely on kernel 2.14 version bump
to know if streamout is enabled or not. Which means you need at
least 3.4 kernel.

Signed-off-by: Jerome Glisse <jglisse@redhat.com>
11 years agointel: move error on create context to proper path
Jordan Justen [Tue, 17 Jul 2012 18:22:32 +0000 (11:22 -0700)]
intel: move error on create context to proper path

The error was being set on the non-error path, rather
than the error path.

NOTE: This is a candidate for the 8.0 branch.
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
11 years agomesa context: generate an error for uninstalled context functions
Jordan Justen [Mon, 16 Jul 2012 22:41:26 +0000 (15:41 -0700)]
mesa context: generate an error for uninstalled context functions

For 'non-legacy' contexts we will want to generate an error
if an uninstalled function is called.

The effect of this change will be that we can avoid installing
legacy functions, and they will then generate an error as
needed for deprecated functions in GL >= 3.1.

Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
11 years agonouveau: include glformats.h to get missing prototype
Brian Paul [Tue, 24 Jul 2012 16:33:18 +0000 (10:33 -0600)]
nouveau: include glformats.h to get missing prototype

Fixes http://bugs.freedesktop.org/show_bug.cgi?id=52449

11 years agomesa: improve comment in build_tnl_program()
Brian Paul [Tue, 24 Jul 2012 15:54:50 +0000 (09:54 -0600)]
mesa: improve comment in build_tnl_program()

11 years agodocs: the legacy makefile system is removed in Mesa 8.1
Brian Paul [Mon, 23 Jul 2012 17:29:42 +0000 (11:29 -0600)]
docs: the legacy makefile system is removed in Mesa 8.1

11 years agomesa: move _mesa_error_check_format_and_type() to glformats.c
Brian Paul [Sun, 22 Jul 2012 17:29:20 +0000 (11:29 -0600)]
mesa: move _mesa_error_check_format_and_type() to glformats.c

Now all the format/type-related helper functions are in glformats.c
and image.c is just image-related functions.

11 years agomesa: move more format helper functions to glformats.c
Brian Paul [Sun, 22 Jul 2012 17:20:00 +0000 (11:20 -0600)]
mesa: move more format helper functions to glformats.c

11 years agomesa: move some format helper functions to glformats.c
Brian Paul [Sun, 22 Jul 2012 17:03:13 +0000 (11:03 -0600)]
mesa: move some format helper functions to glformats.c

11 years agoradeonsi: remove old state handling
Christian König [Wed, 18 Jul 2012 10:10:24 +0000 (12:10 +0200)]
radeonsi: remove old state handling

Signed-off-by: Christian König <deathsimple@vodafone.de>
11 years agoradeonsi: move everything else into the new handling
Christian König [Fri, 20 Jul 2012 09:46:01 +0000 (11:46 +0200)]
radeonsi: move everything else into the new handling

Signed-off-by: Christian König <deathsimple@vodafone.de>
11 years agoradeonsi: move format handling into si_state.c
Christian König [Fri, 20 Jul 2012 09:08:22 +0000 (11:08 +0200)]
radeonsi: move format handling into si_state.c

Signed-off-by: Christian König <deathsimple@vodafone.de>
11 years agoradeonsi: move remaining sampler state into si_state.c
Christian König [Thu, 19 Jul 2012 13:53:01 +0000 (15:53 +0200)]
radeonsi: move remaining sampler state into si_state.c

Signed-off-by: Christian König <deathsimple@vodafone.de>
11 years agoradeonsi: move draw state into new handling
Christian König [Thu, 19 Jul 2012 13:20:45 +0000 (15:20 +0200)]
radeonsi: move draw state into new handling

Split it out into si_state_draw.c

Signed-off-by: Christian König <deathsimple@vodafone.de>
11 years agoradeonsi: move constants to new state handling
Christian König [Thu, 19 Jul 2012 12:45:00 +0000 (14:45 +0200)]
radeonsi: move constants to new state handling

Signed-off-by: Christian König <deathsimple@vodafone.de>
11 years agoradeonsi: move sampler states into new handling
Christian König [Thu, 19 Jul 2012 08:31:44 +0000 (10:31 +0200)]
radeonsi: move sampler states into new handling

Signed-off-by: Christian König <deathsimple@vodafone.de>
11 years agoradeonsi: move shaders to new handling
Christian König [Wed, 18 Jul 2012 15:39:15 +0000 (17:39 +0200)]
radeonsi: move shaders to new handling

Signed-off-by: Christian König <deathsimple@vodafone.de>
11 years agoradeonsi: move spi into new handling
Christian König [Wed, 18 Jul 2012 12:36:10 +0000 (14:36 +0200)]
radeonsi: move spi into new handling

Signed-off-by: Christian König <deathsimple@vodafone.de>
11 years agoradeonsi: move init state to new handling
Christian König [Wed, 18 Jul 2012 11:11:03 +0000 (13:11 +0200)]
radeonsi: move init state to new handling

Signed-off-by: Christian König <deathsimple@vodafone.de>
11 years agoradeonsi: move draw_info to new state handling
Christian König [Wed, 18 Jul 2012 10:07:20 +0000 (12:07 +0200)]
radeonsi: move draw_info to new state handling

Signed-off-by: Christian König <deathsimple@vodafone.de>
11 years agoradeonsi: move CB_TARGET_MASK into fb/blend state
Christian König [Wed, 18 Jul 2012 09:36:28 +0000 (11:36 +0200)]
radeonsi: move CB_TARGET_MASK into fb/blend state

Signed-off-by: Christian König <deathsimple@vodafone.de>
11 years agoradeonsi: move stencil_ref to new handling
Christian König [Wed, 18 Jul 2012 09:03:32 +0000 (11:03 +0200)]
radeonsi: move stencil_ref to new handling

Signed-off-by: Christian König <deathsimple@vodafone.de>
11 years agoradeonsi: move dsa state to new handling
Christian König [Wed, 18 Jul 2012 08:46:36 +0000 (10:46 +0200)]
radeonsi: move dsa state to new handling

Signed-off-by: Christian König <deathsimple@vodafone.de>
11 years agoradeonsi: move infeered fb/rs state to new handling
Christian König [Wed, 18 Jul 2012 08:03:34 +0000 (10:03 +0200)]
radeonsi: move infeered fb/rs state to new handling

Signed-off-by: Christian König <deathsimple@vodafone.de>
11 years agoradeonsi: move rasterizer state into new handling
Christian König [Tue, 17 Jul 2012 21:43:00 +0000 (23:43 +0200)]
radeonsi: move rasterizer state into new handling

Signed-off-by: Christian König <deathsimple@vodafone.de>
11 years agoradeonsi: move framebuffer to new handling
Christian König [Tue, 17 Jul 2012 19:28:10 +0000 (21:28 +0200)]
radeonsi: move framebuffer to new handling

Signed-off-by: Christian König <deathsimple@vodafone.de>
11 years agoradeonsi: move viewport to new handling
Christian König [Tue, 17 Jul 2012 13:46:24 +0000 (15:46 +0200)]
radeonsi: move viewport to new handling

Signed-off-by: Christian König <deathsimple@vodafone.de>
11 years agoradeonsi: move scissor state to new state handling
Christian König [Tue, 17 Jul 2012 13:05:14 +0000 (15:05 +0200)]
radeonsi: move scissor state to new state handling

Signed-off-by: Christian König <deathsimple@vodafone.de>
11 years agoradeonsi: move clip state to new handling
Christian König [Tue, 17 Jul 2012 12:52:08 +0000 (14:52 +0200)]
radeonsi: move clip state to new handling

Signed-off-by: Christian König <deathsimple@vodafone.de>
11 years agoradeonsi: move blend color to new state handling
Christian König [Tue, 17 Jul 2012 12:31:57 +0000 (14:31 +0200)]
radeonsi: move blend color to new state handling

Signed-off-by: Christian König <deathsimple@vodafone.de>
11 years agoradeonsi: move blender to new state handling
Christian König [Tue, 17 Jul 2012 12:12:46 +0000 (14:12 +0200)]
radeonsi: move blender to new state handling

Signed-off-by: Christian König <deathsimple@vodafone.de>
11 years agoradeonsi: rework state handling v2
Christian König [Tue, 17 Jul 2012 12:09:03 +0000 (14:09 +0200)]
radeonsi: rework state handling v2

Add a complete new state handling for SI.

v2: fix spelling error

Signed-off-by: Christian König <deathsimple@vodafone.de>
11 years agoautomake: Honor GL_LIB for mangled/custom lib names
Brad King [Mon, 16 Jul 2012 13:10:02 +0000 (09:10 -0400)]
automake: Honor GL_LIB for mangled/custom lib names

Commit 2d4b77c7 (automake: Convert src/mesa/drivers/x11/Makefile to
automake, 2012-06-12) dropped the old Makefile, which used GL_LIB, and
replaced it with a Makefile.am hard-coding the name "GL".  This broke
handling of --enable-mangling and --with-gl-lib-name options which
depend on GL_LIB to specify the GL library name.

Use "@GL_LIB@" in src/mesa/drivers/x11/Makefile.am to configure the
library name.  Also use this approach to simplify src/glx/Makefile.am
and drop the HAVE_MANGLED_GL conditional.  While at it, fix the
compatibility link we create in "lib" for the software-only driver to
use version GL_MAJOR instead of hard-coding "1".

Reviewed-by: Dan Nicholson <dbn.lists@gmail.com>
11 years agost/mesa: fix DDY opcode for FBOs
Marek Olšák [Sun, 22 Jul 2012 23:27:51 +0000 (01:27 +0200)]
st/mesa: fix DDY opcode for FBOs

This fixes piglit/fbo-deriv.

Reviewed-by: Brian Paul <brianp@vmware.com>
11 years agost/mesa: set the centroid qualifier in fragment shader inputs
Marek Olšák [Sun, 22 Jul 2012 21:06:19 +0000 (23:06 +0200)]
st/mesa: set the centroid qualifier in fragment shader inputs

This fixes some centroid tests in the EXT_framebuffer_multisample piglit group.

Reviewed-by: Brian Paul <brianp@vmware.com>
11 years agost/mesa: flush the glBitmap cache before changing framebuffer state
Marek Olšák [Sun, 22 Jul 2012 02:31:59 +0000 (04:31 +0200)]
st/mesa: flush the glBitmap cache before changing framebuffer state

This fixes the piglit EXT_framebuffer_multisample/bitmap tests.

Note that we must not rely on ctx->DrawBuffer when flushing the cache, because
that's already updated with a new framebuffer. We want to draw into the old
framebuffer where glBitmap was called.

Reviewed-by: Brian Paul <brianp@vmware.com>
11 years agost/mesa: set the correct window renderbuffer internal format
Marek Olšák [Sat, 21 Jul 2012 23:08:49 +0000 (01:08 +0200)]
st/mesa: set the correct window renderbuffer internal format

The multisample-resolve blit relies on this being correct.

Reviewed-by: Brian Paul <brianp@vmware.com>
11 years agomesa: fix format checking when doing a multisample resolve
Marek Olšák [Sat, 21 Jul 2012 13:16:15 +0000 (15:16 +0200)]
mesa: fix format checking when doing a multisample resolve

v2: make it more bullet-proof

Reviewed-by: Brian Paul <brianp@vmware.com>
11 years agogallivm: Prefer the standard JIT engine whenever possible.
José Fonseca [Fri, 20 Jul 2012 17:17:14 +0000 (18:17 +0100)]
gallivm: Prefer the standard JIT engine whenever possible.

Testing shows that the standard JIT engine retrofited with AVX support is quite
stable and as capable to handle AVX instructions as MC-JIT is.

And the old JIT is much more memory efficient, as we don't need to
allocate one engine instance per shader, as we do for MC-JIT due to its
incompleteness.

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
11 years agor600g: don't emit forbidden reg with old kernel on evergreen
Jerome Glisse [Mon, 23 Jul 2012 15:42:36 +0000 (11:42 -0400)]
r600g: don't emit forbidden reg with old kernel on evergreen

Fix https://bugs.freedesktop.org/show_bug.cgi?id=52313

Signed-off-by: Jerome Glisse <jglisse@redhat.com>
11 years agor600g: don't emit forbidden register on old kernel
Jerome Glisse [Mon, 23 Jul 2012 15:26:24 +0000 (11:26 -0400)]
r600g: don't emit forbidden register on old kernel

Fix https://bugs.freedesktop.org/show_bug.cgi?id=52313

Signed-off-by: Jerome Glisse <jglisse@redhat.com>
11 years agoradeon/llvm: Fix a bug with IF LOGICALNZ with int operand
Vincent Lejeune [Sat, 14 Jul 2012 18:33:23 +0000 (20:33 +0200)]
radeon/llvm: Fix a bug with IF LOGICALNZ with int operand

Signed-off-by: Tom Stellard <thomas.stellard@amd.com>
11 years agopipe_loader: Try to connect with the X server before probing pciids v2
Tom Stellard [Tue, 17 Jul 2012 18:36:06 +0000 (18:36 +0000)]
pipe_loader: Try to connect with the X server before probing pciids v2

When X is running it is neccesary for pipe_loader to authenticate with
DRM, in order to be able to use the device.

This makes it possible to run OpenCL programs while X is running.

v2:
  - Fix C++ style comments
  - Drop Xlib-xcb dependency
  - Close the X connection when done
  - Split auth code into separate function

Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
Reviewed-by: Francisco Jerez <currojerez@riseup.net>
11 years agoconfigure.ac: Add --with-llvm-prefix option
Tom Stellard [Tue, 17 Jul 2012 18:32:56 +0000 (18:32 +0000)]
configure.ac: Add --with-llvm-prefix option

This option allows you to specify the llvm install prefix.  It is
useful for switching between different versions of LLVM.

11 years agomesa: Prevent repeated glDeleteShader() from blowing away our refcounts.
Kenneth Graunke [Thu, 19 Jul 2012 20:41:34 +0000 (13:41 -0700)]
mesa: Prevent repeated glDeleteShader() from blowing away our refcounts.

Calling glDeleteShader() should mark shaders as pending for deletion,
but shouldn't decrement the refcount every time.  Otherwise, repeated
glDeleteShader() is not safe.

This is particularly bad since glDeleteProgram() frees shaders: if you
first call glDeleteShader() on the shaders attached to the program (thus
decrementing the refcount), then called glDeleteProgram(), it would try
to free them again (decrementing the refcount another time), causing
a refcount > 0 assertion to fail.

Similar to commit d950a778.

NOTE: This is a candidate for the 8.0 branch.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Brian Paul <brianp@vmware.com>
11 years agoimports.h: Correct ceilf typo.
Matt Turner [Sat, 21 Jul 2012 16:06:11 +0000 (09:06 -0700)]
imports.h: Correct ceilf typo.

Reviewed-by: Brian Paul <brianp@vmware.com>
11 years agost/mesa: remove st_flush_bitmap wrapper
Marek Olšák [Sun, 22 Jul 2012 00:46:30 +0000 (02:46 +0200)]
st/mesa: remove st_flush_bitmap wrapper

just a cleanup

11 years agomesa formats: add MESA_FORMAT_ABGR2101010_UINT
Jordan Justen [Sat, 9 Jun 2012 19:14:26 +0000 (12:14 -0700)]
mesa formats: add MESA_FORMAT_ABGR2101010_UINT

Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
11 years agomesa formats: unpack ARGB8888/XRGB8888
Jordan Justen [Mon, 25 Jun 2012 20:45:42 +0000 (13:45 -0700)]
mesa formats: unpack ARGB8888/XRGB8888

Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
11 years agomesa pack: use _mesa_problem instead of assert
Jordan Justen [Wed, 20 Jun 2012 21:47:46 +0000 (14:47 -0700)]
mesa pack: use _mesa_problem instead of assert

If the pack type is not supported, use _mesa_problem
rather than asserting.

Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
11 years agomesa: add glformats integer type/format detection routines
Jordan Justen [Mon, 25 Jun 2012 17:52:39 +0000 (10:52 -0700)]
mesa: add glformats integer type/format detection routines

_mesa_is_integer_format is moved to formats.c and renamed
as _mesa_is_enum_format_integer.

_mesa_is_format_unsigned, _mesa_is_type_integer,
_mesa_is_type_unsigned, and _mesa_is_enum_format_or_type_integer
are added.

Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
11 years agoscons: Add instrumentation component libraries to linking on llvm-3.2.
Vinson Lee [Sat, 21 Jul 2012 07:44:06 +0000 (00:44 -0700)]
scons: Add instrumentation component libraries to linking on llvm-3.2.

llvm-3.2svn r160587 moved createBoundsCheckingPass from
lib/Transforms/Scalar to lib/Transforms/Instrumentation.

Signed-off-by: Vinson Lee <vlee@freedesktop.org>
Reviewed-by: José Fonseca <jfonseca@vmware.com>
11 years agoRemove unused _mesa_memset16
Matt Turner [Fri, 20 Jul 2012 17:29:40 +0000 (10:29 -0700)]
Remove unused _mesa_memset16

Unused since commit fd104a845.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agoRemove _mesa_inv_sqrtf in favor of 1/SQRTF
Matt Turner [Fri, 20 Jul 2012 17:06:35 +0000 (10:06 -0700)]
Remove _mesa_inv_sqrtf in favor of 1/SQRTF

Except for a couple of explicit uses, _mesa_inv_sqrtf was disabled since
its addition in 2003 (see f9b1e524).

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agoRemove _mesa_sqrt* in favor of plain sqrt
Matt Turner [Fri, 20 Jul 2012 16:55:47 +0000 (09:55 -0700)]
Remove _mesa_sqrt* in favor of plain sqrt

Temporarily disabled since 2003 (see 386578c5b).

This saves us from calling sqrt() 128 times to generate the sqrttab in
one_time_init().

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agoUse INV_SQRT instead of 1/SQRTF
Matt Turner [Fri, 20 Jul 2012 17:03:10 +0000 (10:03 -0700)]
Use INV_SQRT instead of 1/SQRTF

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agoautoconf: Only kink mcjit component when available.
José Fonseca [Sat, 21 Jul 2012 10:43:06 +0000 (11:43 +0100)]
autoconf: Only kink mcjit component when available.

Should fix build failures with older LLVM version, but only tested on
LLVM 3.1.

11 years agoi830: Fix stack corruption
Chad Versace [Fri, 20 Jul 2012 22:41:27 +0000 (15:41 -0700)]
i830: Fix stack corruption

Found by compiler warning:
    i830_texstate.c:131:28: warning: argument to 'sizeof' in 'memset' call
          is the same expression as the destination; did you mean to
          dereference it?  [-Wsizeof-pointer-memaccess]
       memset(state, 0, sizeof(state));
              ~~~~~            ^~~~~

On 64-bit systems, memset here would write an extra 4 bytes.

Note: This is a candidate for the stable branches.
Reviewed-by: Brian Paul <brianp@vmware.com>
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
11 years agomesa: disable MSVC global optimization in pack.c
José Fonseca [Fri, 20 Jul 2012 22:16:11 +0000 (16:16 -0600)]
mesa: disable MSVC global optimization in pack.c

To reduce excessive compilation time in release mode.

NOTE: This is a candidate for the 8.0 branch.

Tested-by: Brian Paul <brianp@vmware.com>
11 years agomesa: whitespace fixes in pbo.c
Brian Paul [Thu, 19 Jul 2012 22:34:24 +0000 (16:34 -0600)]
mesa: whitespace fixes in pbo.c

11 years agomesa: update texstore.c comment
Brian Paul [Thu, 19 Jul 2012 21:07:10 +0000 (15:07 -0600)]
mesa: update texstore.c comment

11 years agollvmpipe: use runtime loop instead of static loop for looping over quads
Roland Scheidegger [Fri, 6 Jul 2012 00:53:44 +0000 (02:53 +0200)]
llvmpipe: use runtime loop instead of static loop for looping over quads

This can potentially cut shader program size by a factor of 4 for 4-wide
execution respectively 2 for 8-wide execution and while this ratios aren't
quite reached for more complex shaders it can be close.
Could not really measure a performance difference so far except for trivial
shaders (glxgears).
There seems to be a fair amount of unnecessary move's generated especially
at the beginning it might be possible to optimize those away somehow.
Things aren't quite as clean, some additional stuff needs to be done for
keeping both paths working (though llvm might be able to optimize this away).
glxgears seems to lose about 5-10% of performance, looking at the generated
shaders this is actually less than I'd think it would be - both 4 and 8-wide
shaders, despite containing a loop actually have about 10% more instructions
in total, and will have roughly 50% more executed instructions (though mostly
cheap ones). Need to figure out how to reduce overhead...

v2: keep complex interpolation for 4-wide mode, adapt to interface changes.

Reviewed-by: José Fonseca <jfonseca@vmware.com>
11 years agonv30: Support negative offsets in indirect constant access.
Roy Spliet [Wed, 18 Jul 2012 23:56:35 +0000 (01:56 +0200)]
nv30: Support negative offsets in indirect constant access.

Fixes piglit vp-address-01 amongst several others.

Signed-off-by: Roy Spliet <r.spliet@student.tudelft.nl>
Reviewed-by: Lucas Stach <dev@lynxeye.de>
Tested-by: Lucas Stach <dev@lynxeye.de>
11 years agonv50/ir: set position before i instead of i->next in NV50LoweringPreSSA::visit
Bryan Cain [Wed, 18 Jul 2012 04:46:39 +0000 (23:46 -0500)]
nv50/ir: set position before i instead of i->next in NV50LoweringPreSSA::visit

Fixes rendering glitches in Psychonauts such as Raz's eyes flickering white.
Fixes https://bugs.freedesktop.org/show_bug.cgi?id=51962.

11 years agoi965/gen7: Increase the WM threads to hardware limits.
Eric Anholt [Thu, 19 Jul 2012 05:58:15 +0000 (22:58 -0700)]
i965/gen7: Increase the WM threads to hardware limits.

This thread count is only supposed to be enabled when "WIZ Hashing Disable in
GT_MODE register enabled."  I've always been confused whether that means the
bit in the register should be 1 or 0.  For my IVB GT2's register 0x7008 value
of 0x0, this appears to work fine.

Improves l4d2 performance at 640x480 by 0.88 +/- 0.11% (n=88).  Improves
performance with rasterization at 1280x1024 by 1.45% +/- 0.36% (n=6).

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agoglsl: Assign locations for uniforms in UBOs using the std140 rules.
Eric Anholt [Tue, 1 May 2012 22:10:14 +0000 (15:10 -0700)]
glsl: Assign locations for uniforms in UBOs using the std140 rules.

Fixes piglit layout-std140.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>