mesa.git
12 years agomesa: fix error message in _mesa_BlitFramebufferEXT()
Brian Paul [Mon, 9 Jan 2012 15:11:33 +0000 (08:11 -0700)]
mesa: fix error message in _mesa_BlitFramebufferEXT()

12 years agomesa: check depth, stencil formats (not depths) in glBlitFramebuffer
Brian Paul [Mon, 9 Jan 2012 15:11:33 +0000 (08:11 -0700)]
mesa: check depth, stencil formats (not depths) in glBlitFramebuffer

We were only comparing the number of depth and stencil bits but the
extension spec actually says the formats must match:

    The error INVALID_OPERATION is generated if BlitFramebufferEXT is
    called and <mask> includes DEPTH_BUFFER_BIT or STENCIL_BUFFER_BIT
    and the source and destination depth or stencil buffer formats do
    not match.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agomesa: add missing error check for linear blit of integer colors
Brian Paul [Mon, 9 Jan 2012 15:11:33 +0000 (08:11 -0700)]
mesa: add missing error check for linear blit of integer colors

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agoswrast: convert blit_linear() to Map/UnmapRenderbuffer()
Brian Paul [Mon, 9 Jan 2012 15:11:33 +0000 (08:11 -0700)]
swrast: convert blit_linear() to Map/UnmapRenderbuffer()

Reviewed-by: Eric Anholt <eric@anholt.net>
12 years agomesa: add _mesa_unpack_ubyte_rgba_row() function
Brian Paul [Mon, 9 Jan 2012 15:11:33 +0000 (08:11 -0700)]
mesa: add _mesa_unpack_ubyte_rgba_row() function

Reviewed-by: Eric Anholt <eric@anholt.net>
12 years agomesa: rename _mesa_unpack_int_rgba_row() to _mesa_unpack_uint_rgba_row()
Brian Paul [Mon, 9 Jan 2012 15:11:33 +0000 (08:11 -0700)]
mesa: rename _mesa_unpack_int_rgba_row() to _mesa_unpack_uint_rgba_row()

Since it returns uint values, not int.

Reviewed-by: Eric Anholt <eric@anholt.net>
12 years agovl: replace decode_buffers with auxiliary data field
Christian König [Fri, 23 Dec 2011 15:14:31 +0000 (16:14 +0100)]
vl: replace decode_buffers with auxiliary data field

Based on patches from Maarten Lankhorst <m.b.lankhorst@gmail.com>

Signed-off-by: Christian König <deathsimple@vodafone.de>
Acked-by: Maarten Lankhorst <m.b.lankhorst@gmail.com>
12 years agoi965: Actually enable SIMD16 dispatch on Ivybridge.
Kenneth Graunke [Sun, 8 Jan 2012 05:57:46 +0000 (21:57 -0800)]
i965: Actually enable SIMD16 dispatch on Ivybridge.

Commit acf82657f4d607e4477f03752613d42f239e4bd3 supposedly enabled
SIMD16 dispatch, but neglected to set the "16 Pixel Dispatch Enable"
bit, so nothing actually got enabled.

Furthermore, it neglected to set up the Dispatch GRF Start Register for
kernel 2, which is the SIMD16 program.

Increases performance in Nexuiz by ~15% at 800x600 (n=3).

NOTE: This is a candidate for the 7.11 branch.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
12 years agonvfx: remove unused-but-set variables
Marek Olšák [Sat, 17 Dec 2011 21:54:29 +0000 (22:54 +0100)]
nvfx: remove unused-but-set variables

12 years agoi965: Correct _NEW_TRANSOFORM typos.
Kenneth Graunke [Sun, 8 Jan 2012 04:00:10 +0000 (20:00 -0800)]
i965: Correct _NEW_TRANSOFORM typos.

Using the proper spelling, _NEW_TRANSFORM, makes searching work better.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agoi965: Correct misspellings of "invariant".
Kenneth Graunke [Sun, 8 Jan 2012 03:56:54 +0000 (19:56 -0800)]
i965: Correct misspellings of "invariant".

$ dict invarient
No definitions found for "invarient", perhaps you mean:
gcide:  Invariant
wn:  invariant

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agoglsl_to_tgsi: emit IABS for absolute value of integers
Bryan Cain [Sat, 7 Jan 2012 22:19:39 +0000 (16:19 -0600)]
glsl_to_tgsi: emit IABS for absolute value of integers

12 years agomesa: rework ctx->Driver.CopyTexSubImage() parameters
Brian Paul [Thu, 29 Dec 2011 13:36:55 +0000 (06:36 -0700)]
mesa: rework ctx->Driver.CopyTexSubImage() parameters

Replace target, level parameters with gl_texture_image.
Add gl_renderbuffer parameter to indicate source buffer for the copy.

This removes some redundant code in the drivers to find the source
renderbuffer and the destination texture image (which we already had
in _mesa_CopyTexSubImage).

Signed-off-by: Brian Paul <brianp@vmware.com>
12 years agogallium: add an IABS opcode to TGSI
Bryan Cain [Sat, 7 Jan 2012 16:43:04 +0000 (10:43 -0600)]
gallium: add an IABS opcode to TGSI

This is a necessary operation that is missing from TGSI.

Reviewed-by: Brian Paul <brianp@vmware.com>
12 years agomesa: remove unused _mesa_unpack_uint_rgba_row() prototype
Brian Paul [Sat, 7 Jan 2012 21:28:57 +0000 (14:28 -0700)]
mesa: remove unused _mesa_unpack_uint_rgba_row() prototype

12 years agoglsl_to_tgsi: fix emission of boolean constants
Bryan Cain [Sat, 7 Jan 2012 21:28:27 +0000 (15:28 -0600)]
glsl_to_tgsi: fix emission of boolean constants

We use 0xffffffff for true, but visit(ir_constant *) was emitting 1.

12 years agoglsl_to_tgsi: remove bad assertion
Bryan Cain [Sat, 7 Jan 2012 20:54:49 +0000 (14:54 -0600)]
glsl_to_tgsi: remove bad assertion

12 years agoswrast: fix Z testing of points/lines for 16-bit depth buffers
Brian Paul [Sat, 7 Jan 2012 21:16:27 +0000 (14:16 -0700)]
swrast: fix Z testing of points/lines for 16-bit depth buffers

We were comparing 32-bit Z buffer values against 16-bit fragment values.
Need to do scaling like for the 24-bit case.

Triangle Z testing was OK since it didn't hit this code path.

12 years agoswrast: s/GLbitfield/GLbitfield64/ for sw_span::arrayAttribs
Brian Paul [Sat, 7 Jan 2012 21:16:27 +0000 (14:16 -0700)]
swrast: s/GLbitfield/GLbitfield64/ for sw_span::arrayAttribs

This is a bitfield of FRAG_BIT_x values so it should be 64-bits now.

12 years agoswrast: s/GLint/GLuint/ to silence MSVC signed/unsigned comparison warning
Brian Paul [Sat, 7 Jan 2012 21:16:27 +0000 (14:16 -0700)]
swrast: s/GLint/GLuint/ to silence MSVC signed/unsigned comparison warning

12 years agometa: add some 'f' suffixes to silence MSVC warnings
Brian Paul [Sat, 7 Jan 2012 21:16:27 +0000 (14:16 -0700)]
meta: add some 'f' suffixes to silence MSVC warnings

12 years agomesa: add some 'f' suffixes to silence MSVC warnings
Brian Paul [Sat, 7 Jan 2012 21:16:27 +0000 (14:16 -0700)]
mesa: add some 'f' suffixes to silence MSVC warnings

12 years agoutil: silence some MSVC type conversion warnings
Brian Paul [Sat, 7 Jan 2012 21:16:27 +0000 (14:16 -0700)]
util: silence some MSVC type conversion warnings

12 years agodraw: replace assert(0) with debug_warn_once()
Brian Paul [Sat, 7 Jan 2012 21:16:27 +0000 (14:16 -0700)]
draw: replace assert(0) with debug_warn_once()

If the assertion was hit, it probably meant that we were unable to allocate
or map a vertex buffer.  Instead of dying in a debug build, issue a warning
and continue.

12 years agoutil: add debug_warn_once() macro
Brian Paul [Sat, 7 Jan 2012 21:16:27 +0000 (14:16 -0700)]
util: add debug_warn_once() macro

Emits a warning message, but only once to avoid tons of repeated warnings.

12 years agodraw: whitespace fixes, etc.
Brian Paul [Sat, 7 Jan 2012 21:16:27 +0000 (14:16 -0700)]
draw: whitespace fixes, etc.

12 years agogallium: make vbuf_render::set_primitive() return void
Brian Paul [Sat, 7 Jan 2012 21:16:27 +0000 (14:16 -0700)]
gallium: make vbuf_render::set_primitive() return void

All the implementations of this function always return TRUE.

12 years agosvga: fix assorted whitespace issues, add copyright comment
Brian Paul [Sat, 7 Jan 2012 21:16:27 +0000 (14:16 -0700)]
svga: fix assorted whitespace issues, add copyright comment

12 years agosvga: add switch cases for PIPE_SHADER_CAP_OUTPUT_READ
Brian Paul [Sat, 7 Jan 2012 21:16:27 +0000 (14:16 -0700)]
svga: add switch cases for PIPE_SHADER_CAP_OUTPUT_READ

Silences unhandled switch case warning.
Return 0 since we don't want to read from output regs.

12 years agomesa: add/update comments in _mesa_copy_buffer_subdata()
Brian Paul [Sat, 7 Jan 2012 21:16:27 +0000 (14:16 -0700)]
mesa: add/update comments in _mesa_copy_buffer_subdata()

12 years agou_vbuf: don't unroll indices if mapping vertex buffers blocks
Marek Olšák [Sat, 7 Jan 2012 13:58:03 +0000 (14:58 +0100)]
u_vbuf: don't unroll indices if mapping vertex buffers blocks

12 years agodraw: fix missing include for u_format.
Dave Airlie [Sat, 7 Jan 2012 08:55:30 +0000 (08:55 +0000)]
draw: fix missing include for u_format.

Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agost/mesa: add support for clip vertex.
Dave Airlie [Wed, 4 Jan 2012 11:49:26 +0000 (11:49 +0000)]
st/mesa: add support for clip vertex.

We need to pass the pre-projection matrix clip planes into the driver,
instead of the post for the case we have a vertex shader that writes clip
vertex.

Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agogallium: add new semantic for clip vertex.
Dave Airlie [Wed, 4 Jan 2012 11:48:24 +0000 (11:48 +0000)]
gallium: add new semantic for clip vertex.

This is to match the gl_ClipVertex output from GLSL 1.20.

Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agodraw: don't translate non-floats to float.
Dave Airlie [Fri, 6 Jan 2012 15:07:24 +0000 (15:07 +0000)]
draw: don't translate non-floats to float.

translate signed/unsigned integers to coresponding uint/sint r32g32b32a32 types.

This fixes a bunch of piglit tests.

Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agost/mesa: fix default interpolation for colors.
Dave Airlie [Fri, 6 Jan 2012 13:31:07 +0000 (13:31 +0000)]
st/mesa: fix default interpolation for colors.

Brian mentioned that mesa-demos/reflect was broken on softpipe,
by my previous commit. The problem was were blindly translating none
to perspective, when color/pntc at least need it linear.

this is the final version that fixes the reflect regression.

Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agoglsl/builtins: Add missing mix(genType, genType, bvec) built-ins.
Kenneth Graunke [Thu, 5 Jan 2012 21:28:56 +0000 (13:28 -0800)]
glsl/builtins: Add missing mix(genType, genType, bvec) built-ins.

The IR for mix(float, float, bool) was missing a write mask, causing the
IR reader to die horribly.  Furthermore, I neglected to add any of the
new prototypes to the 1.30 profiles.

Fixes oglconform's glsl-bif-com advanced.mix test cases.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=44477
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
12 years agoi965/vs: Fix invalid array access in copy propagation.
Kenneth Graunke [Thu, 5 Jan 2012 21:54:41 +0000 (13:54 -0800)]
i965/vs: Fix invalid array access in copy propagation.

Accessing virtual_grf_reg_map[inst->dst.reg] is invalid if
inst->dst.file != GRF.  Since is_direct_copy already implies a GRF
destination, we can just move the check earlier.

Fixes a regression in commit 07ee9f374f2946f852896e9264c7fa83eafc3f16.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=44302
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
12 years agoconfigure.ac: Remove unused GLUT substitutions.
Kenneth Graunke [Thu, 5 Jan 2012 18:30:36 +0000 (10:30 -0800)]
configure.ac: Remove unused GLUT substitutions.

GLUT was removed from the main tree a while ago; nothing uses these
substitutions.

Reviewed-by: Matt Turner <mattst88@gmail.com>
12 years agoglsl: Don't mark assignment temporaries as read-only
Ian Romanick [Fri, 23 Dec 2011 18:59:38 +0000 (10:59 -0800)]
glsl: Don't mark assignment temporaries as read-only

The various l-value errors this was designed to catch are now caught
by other means.  Marking the temporaries as read-only now just
prevents sensible error messages from being generated.  It's

0:0(0): error: function parameter 'out p' references the read-only variable '_post_incdec_tmp'

versus

0:13(5): error: function parameter 'out p' references a post-decrement operation

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Paul Berry <stereotype441@gmail.com>
12 years agoglsl: Emit extra errors for l-value violations in 'out' or 'inout' parameters
Ian Romanick [Fri, 23 Dec 2011 18:58:23 +0000 (10:58 -0800)]
glsl: Emit extra errors for l-value violations in 'out' or 'inout' parameters

Somethings, like pre-increment operations, were not previously caught.
After the 8.0 release, this code needs some major refactoring and
clean-up.  It's a mess. :(

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Paul Berry <stereotype441@gmail.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=42755

12 years agoglsl: Emit errors for assignments to non-l-value expressions
Ian Romanick [Fri, 23 Dec 2011 17:56:29 +0000 (09:56 -0800)]
glsl: Emit errors for assignments to non-l-value expressions

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Paul Berry <stereotype441@gmail.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=42755

12 years agoglsl: Track descriptions of some expressions that can't be l-values
Ian Romanick [Fri, 23 Dec 2011 17:56:03 +0000 (09:56 -0800)]
glsl: Track descriptions of some expressions that can't be l-values

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Paul Berry <stereotype441@gmail.com>
12 years agomesa: remove gl_framebuffer:_DepthBuffer, _StencilBuffer fields
Brian Paul [Fri, 6 Jan 2012 19:42:40 +0000 (12:42 -0700)]
mesa: remove gl_framebuffer:_DepthBuffer, _StencilBuffer fields

These were used by swrast to make a combined depth+stencil buffer look
like separate depth and stencil buffers.  But that's no longer needed
after rewriting the depth/stencil code in swrast.

Reviewed-by: Eric Anholt <eric@anholt.net>
12 years agoswrast: remove s_depthstencil.[ch] files
Brian Paul [Fri, 6 Jan 2012 19:42:40 +0000 (12:42 -0700)]
swrast: remove s_depthstencil.[ch] files

The code is no longer used.

Reviewed-by: Eric Anholt <eric@anholt.net>
12 years agoswrast: remove calls to _swrast_update_depth/stencil_buffer()
Brian Paul [Fri, 6 Jan 2012 19:42:40 +0000 (12:42 -0700)]
swrast: remove calls to _swrast_update_depth/stencil_buffer()

These functions updated the gl_renderbuffer::_DepthBuffer and
_StencilBuffer fields.  But those fields are no longer used.

Reviewed-by: Eric Anholt <eric@anholt.net>
12 years agoi965: Turn on ARB_depth_buffer_float by default.
Eric Anholt [Thu, 5 Jan 2012 02:02:49 +0000 (18:02 -0800)]
i965: Turn on ARB_depth_buffer_float by default.

Everything about this that we have tests for works except for the
deprecated metaops.  The conclusion we came to on IRC sounded like we
were OK with turning it on as long as core functionality works.  The
remaining failures (copypixels, drawpixels) should just be a matter of
finishing the MapRenderbuffer for them.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agoswrast: Convert the glBlitFramebuffer(GL_NEAREST) path to MapRenderbuffer().
Eric Anholt [Thu, 5 Jan 2012 01:54:48 +0000 (17:54 -0800)]
swrast: Convert the glBlitFramebuffer(GL_NEAREST) path to MapRenderbuffer().

Fixes on i965:
ARB_depth_buffer_float/fbo-depthstencil-GL_DEPTH32F_STENCIL8-blit
ARB_depth_buffer_float/fbo-stencil-GL_DEPTH32F_STENCIL8-blit

Reviewed-by: Brian Paul <brianp@vmware.com>
12 years agomesa: Fix packing of stencil bits to MESA_FORMAT_Z32_FLOAT_X24S8.
Eric Anholt [Thu, 5 Jan 2012 01:53:39 +0000 (17:53 -0800)]
mesa: Fix packing of stencil bits to MESA_FORMAT_Z32_FLOAT_X24S8.

We were converting our ubyte stencil value to a float.  Just write it
as a uint, which overwrites the X24 part of X24S8 with 0 but shouldn't
matter.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Brian Paul <brianp@vmware.com>
12 years agoswrast: Fix use of uninitialized value in rbmapping changes.
Eric Anholt [Thu, 5 Jan 2012 01:11:33 +0000 (17:11 -0800)]
swrast: Fix use of uninitialized value in rbmapping changes.

I'm so surprised that gcc didn't catch this that I feel like I must be
misreading.  srcMap is what we initialize (along with dstMap) from
this map value right after this check.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Brian Paul <brianp@vmware.com>
12 years agoswrast: Use the fast copypixels code to implement fast glBlitFramebuffer().
Eric Anholt [Thu, 5 Jan 2012 00:10:14 +0000 (16:10 -0800)]
swrast: Use the fast copypixels code to implement fast glBlitFramebuffer().

They were meaning to do the same thing of memcpying rows, so just
write the code once.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Brian Paul <brianp@vmware.com>
12 years agoswrast: Move the check for fast_copy_pixels() ability to caller.
Eric Anholt [Wed, 4 Jan 2012 23:59:39 +0000 (15:59 -0800)]
swrast: Move the check for fast_copy_pixels() ability to caller.

I'm going to reuse this function from glBlitFramebuffer() handling,
which wants to do the same thing.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Brian Paul <brianp@vmware.com>
12 years agoi965: Add sensible disasm for the JMPI instruction.
Eric Anholt [Mon, 19 Dec 2011 18:52:31 +0000 (10:52 -0800)]
i965: Add sensible disasm for the JMPI instruction.

We care about the jump distance, not that the first src is always the
ip register.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agoi965/gen7: Enable transform feedback as long as kernel support is present.
Eric Anholt [Fri, 30 Dec 2011 07:37:17 +0000 (23:37 -0800)]
i965/gen7: Enable transform feedback as long as kernel support is present.

The last major issue (intervening-read) is fixed, so let's turn this
on for real.  The only other known issue is a hardware limitation for
tesselation with flat shading.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eugeni Dodonov <eugeni.dodonov@intel.com>
12 years agoi965/gen7: Fix up the transform feedback buffer pointers on later batches.
Eric Anholt [Fri, 30 Dec 2011 07:26:48 +0000 (23:26 -0800)]
i965/gen7: Fix up the transform feedback buffer pointers on later batches.

Fixes piglit EXT_transform_feedback/intervening-read

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agoi965/gen7: Flush the batch between transform feedbacks.
Eric Anholt [Fri, 30 Dec 2011 02:24:02 +0000 (18:24 -0800)]
i965/gen7: Flush the batch between transform feedbacks.

We need the kernel to reset our pointers to 0 in between.  Note that
the initialization of function pointer had to move to after
InitContext since we didn't have intel->gen set up yet.

Fixes piglit EXT_transform_feedback/immediate-reuse

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agoi965/gen7: Use the updated interface for SO write pointer resetting.
Eric Anholt [Fri, 30 Dec 2011 02:12:48 +0000 (18:12 -0800)]
i965/gen7: Use the updated interface for SO write pointer resetting.

The new kernel patch I submitted makes the interface opt-in, so all
batchbuffers aren't preceded by the 4 MI_LOAD_REGISTER_IMMs.  This
requires the updated i915_drm.h present in libdrm 2.4.30.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agor600g: remove obsolete MULTIWRITE comment
Alex Deucher [Fri, 6 Jan 2012 15:15:37 +0000 (10:15 -0500)]
r600g: remove obsolete MULTIWRITE comment

fs writes all is implemented in the shader on eg+.

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
12 years agoglsl_to_tgsi: Remove the obsolete remove_output_reads pass.
Kenneth Graunke [Mon, 2 Jan 2012 10:43:41 +0000 (02:43 -0800)]
glsl_to_tgsi: Remove the obsolete remove_output_reads pass.

This is now handled by the GLSL compiler, so this code is dead.

Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agoglsl_to_tgsi: Use the GLSL compiler's new remove-output-reads pass.
Vincent Lejeune [Mon, 2 Jan 2012 19:17:38 +0000 (20:17 +0100)]
glsl_to_tgsi: Use the GLSL compiler's new remove-output-reads pass.

The existing glsl_to_tgsi::remove_output_read pass did not work properly
when indirect addressing was involved; this commit replaces it with a
lowering pass that occurs before TGSI code generation.

Fixes varying-array related piglit tests.

Signed-off-by: Vincent Lejeune <vljn@ovi.com>
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agoglsl: Add a lowering pass to remove reads of shader output variables.
Vincent Lejeune [Tue, 3 Jan 2012 10:08:32 +0000 (02:08 -0800)]
glsl: Add a lowering pass to remove reads of shader output variables.

This is similar to Gallium's existing glsl_to_tgsi::remove_output_read
lowering pass, but done entirely inside the GLSL compiler.

Signed-off-by: Vincent Lejeune <vljn@ovi.com>
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agodraw: fix piglit base vertex + user vertex array tests
Dave Airlie [Mon, 2 Jan 2012 17:41:34 +0000 (17:41 +0000)]
draw: fix piglit base vertex + user vertex array tests

This fixes
draw-elements-base-vertex user_varrays
draw-elements-instanced-base-vertex user_varrays
for softpipe with no llvm support (DRAW_USE_LLVM=false)

I'm not sure if this is the correct answer, but these tests were showing
a max_index of 7, then trying to fetch up to 43, maybe it should be fixing
max_index earlier somewhere to take care of this.

Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agoStrip LLVM svn rev from `llvm-config --version` output.
ojab [Thu, 5 Jan 2012 10:18:34 +0000 (14:18 +0400)]
Strip LLVM svn rev from `llvm-config --version` output.

Reviewed-by: Vinson Lee <vlee@freedesktop.org>
12 years agomesa: Remove 'texelBytes' declarations that are only used in assertions.
Vinson Lee [Thu, 5 Jan 2012 07:52:19 +0000 (23:52 -0800)]
mesa: Remove 'texelBytes' declarations that are only used in assertions.

This patch silences these GCC warnings.
warning: unused variable 'texelBytes'

Signed-off-by: Vinson Lee <vlee@freedesktop.org>
Reviewed-by: Brian Paul <brianp@vmware.com>
12 years agomesa: Fix transform feedback of unsubscripted arrays.
Paul Berry [Wed, 4 Jan 2012 04:41:34 +0000 (20:41 -0800)]
mesa: Fix transform feedback of unsubscripted arrays.

It is not explicitly stated in the GL 3.0 spec that transform feedback
can be performed on a whole varying array (without supplying a
subscript).  However, it seems clear from context that this was the
intent.  Section 2.15 (TransformFeedback) says this:

    When writing varying variables that are arrays, individual array
    elements are written in order.

And section 2.20.3 (Shader Variables), says this, in the description
of GetTransformFeedbackVarying:

    For the selected varying variable, its type is returned into
    type. The size of the varying is returned into size. The value in
    size is in units of the type returned in type.

If it were not possible to perform transform feedback on an
unsubscripted array, the returned size would always be 1.

This patch fixes the linker so that transform feedback on an
unsubscripted array is supported.

Fixes piglit tests "EXT_transform_feedback/builtin-varyings
gl_ClipDistance[{4,8}]-no-subscript" and
"EXT_transform_feedback/output_type *[2]-no-subscript".

Note: on back-ends that set
gl_shader_compiler_options::LowerClipDistance (for example i965),
tests "EXT_transform_feedback/builtin-varyings
gl_ClipDistance[{1,2,3,5,6,7}]" still fail.  I hope to address this in
a later patch.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
12 years agoAdd .gitignore files to exclude unit test build artifacts from git
Paul Berry [Tue, 3 Jan 2012 05:05:43 +0000 (21:05 -0800)]
Add .gitignore files to exclude unit test build artifacts from git

With the addition of unit tests in commit
3ef3ba4d2eee36f64062a21ce030c3f4d8c4cac4, several additional build
artifacts are created:

  bin/depcomp
  bin/missing
  tests/Makefile
  tests/Makefile.in
  tests/glx/Makefile
  tests/glx/Makefile.in
  tests/glx/.deps/
  tests/glx/.gitignore

This patch adds all of these files to .gitignore.

Acked-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
12 years agomesa: Avoid segfault when getting an unbound transform feedback buffer name.
Paul Berry [Tue, 3 Jan 2012 21:59:13 +0000 (13:59 -0800)]
mesa: Avoid segfault when getting an unbound transform feedback buffer name.

Previously we were using
gl_transform_feedback_object::Buffers[i]->Name to service an indexed
get request for GL_TRANSFORM_FEEDBACK_BUFFER_BINDING.  However, if no
buffer has been bound, gl_transform_feedback_object::Buffers[i] is
NULL, so this was causing a segfault.

This patch switches to using
gl_transform_feedback_object::BufferNames[i], which is equal to
gl_transform_feedback_object::Buffers[i]->Name if
gl_transform_feedback_object::Buffers[i] is not NULL, and 0 if it is
NULL.

Fixes piglit test "EXT_transform_feedback/get-buffer-state
indexed_binding".

Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agomesa: Fix transform feedback of gl_ClipDistance.
Paul Berry [Tue, 27 Dec 2011 03:39:25 +0000 (19:39 -0800)]
mesa: Fix transform feedback of gl_ClipDistance.

On drivers that set gl_shader_compiler_options::LowerClipDistance (for
example i965), references to gl_ClipDistance (a float[8] array) will
be converted to references to gl_ClipDistanceMESA (a vec4[2] array).

This patch modifies the linker so that requests for transform feedback
of gl_ClipDistance are similarly converted.

Fixes Piglit test "EXT_transform_feedback/builtin-varyings
gl_ClipDistance".

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agomesa: Make tfeedback_decl::var_name a const char *.
Paul Berry [Tue, 27 Dec 2011 16:24:57 +0000 (08:24 -0800)]
mesa: Make tfeedback_decl::var_name a const char *.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agogallium: Make use of gl_transform_feedback_info::ComponentOffset.
Paul Berry [Tue, 27 Dec 2011 03:31:44 +0000 (19:31 -0800)]
gallium: Make use of gl_transform_feedback_info::ComponentOffset.

Reviewed-by: Marek Olšák <maraeo@gmail.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agoi965: Make use of gl_transform_feedback_info::ComponentOffset.
Paul Berry [Tue, 27 Dec 2011 03:31:20 +0000 (19:31 -0800)]
i965: Make use of gl_transform_feedback_info::ComponentOffset.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agomesa: Add gl_transform_feedback_info::ComponentOffset.
Paul Berry [Tue, 27 Dec 2011 03:30:10 +0000 (19:30 -0800)]
mesa: Add gl_transform_feedback_info::ComponentOffset.

When using transform feedback, there are three circumstances in which
it is useful for Mesa to instruct a driver to stream out just a
portion of a varying slot (rather than the whole vec4):

(a) When a varying is smaller than a vec4, Mesa needs to instruct the
driver to stream out just the first one, two, or three components of
the varying slot.

(b) In the future, when we implement varying packing, some varyings
will be offset within the vec4, so Mesa will have to instruct the
driver to stream out an arbitrary contiguous subset of the components
of the varying slot (e.g. .yzw or .yz).

(c) On drivers that set gl_shader_compiler_options::LowerClipDistance,
if the client requests that an element of gl_ClipDistance be streamed
out using transform feedback, Mesa will have to instruct the driver to
stream out a single component of one of the gl_ClipDistance varying
slots.

Previous to this patch, only (a) was possible, since
gl_transform_feedback_info specified only the number of components of
the varying slot to stream out.  This patch adds
gl_transform_feedback_info::ComponentOffset, which indicates which
components should be streamed out.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agoi965: Fix transform feedback of gl_ClipVertex.
Paul Berry [Mon, 26 Dec 2011 22:20:47 +0000 (14:20 -0800)]
i965: Fix transform feedback of gl_ClipVertex.

Previously, on i965 Gen6 and above, we weren't allocating space for
gl_ClipVertex in the VUE, since the VS was automatically converting it
to clip distances.  This prevented transform feedback from being able
to capture gl_ClipVertex.

This patch goes aheads and allocates space for gl_ClipVertex in the
VUE on Gen6 and above.  The old behavior is retained on Gen5 and
below, since (a) transform feedback is not yet supported on those
platforms, and (b) those platforms don't currently support
gl_ClipVertex anyhow.

Note: this constitutes a slight waste of VUE space for shaders that
use gl_ClipVertex and don't use transform feedback to capture it.
However, that seems preferable to making the VUE map (and all of the
state that depends on it) dependent on transform feedback settings.

Fixes Piglit test "EXT_transform_feedback/builtin-varyings
gl_ClipVertex".

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agoi965: Fix transform feedback of gl_PointSize.
Paul Berry [Mon, 26 Dec 2011 21:58:46 +0000 (13:58 -0800)]
i965: Fix transform feedback of gl_PointSize.

On i965 Gen6 and above, gl_PointSize is stored in component W of the
first VUE slot (which corresponds to VERT_RESULT_PSIZ in the VUE map).
Normally we store varying floats in component X of a VUE slot, so we
need special case logic for gl_PointSize.

For Gen6, we do this with a ".wwww" swizzle in the GS.  For Gen7, we
shift the component mask by 3 to select the W component.

Fixes Piglit test "EXT_transform_feedback/builtin-varyings
gl_PointSize".

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agomesa: Fix extra memset in store_tfeedback_info()
Paul Berry [Thu, 5 Jan 2012 21:06:36 +0000 (13:06 -0800)]
mesa: Fix extra memset in store_tfeedback_info()

Commit 9d36c96d6ec9f2c05c8e0b9ef18c5462cddee8c1 (mesa: Fix
glGetTransformFeedbackVarying()) accidentally added an extra memset()
call to the store_tfeedback_info() function, causing
prog->LinkedTransformFeedback.NumBuffers to be erased.

This patch removes the extra memset and rearranges the other
operations in store_tfeedback_info() to be in the correct order.

Fixes piglit tests "EXT_transform_feedback/api-errors *unbound*"

Reviewed-by: Eric Anholt <eric@anholt.net>
12 years agoswrast: use memmove() instead of memcpy() in the SHIFT_ARRAY macro
Brian Paul [Thu, 5 Jan 2012 18:59:30 +0000 (11:59 -0700)]
swrast: use memmove() instead of memcpy() in the SHIFT_ARRAY macro

The src/dst arrays would overlap but dst was less than src so a simple
version of memcpy() would do the right thing.  But this isn't guaranteed
when memcpy() is optimized.

Fixes demos/copypix when the dest region was clipped by the left side of
the window.

Reviewed-by: Adam Jackson <ajax@redhat.com>
12 years agost/mesa: add support for gl_ClipDistance
Bryan Cain [Mon, 2 Jan 2012 20:49:46 +0000 (14:49 -0600)]
st/mesa: add support for gl_ClipDistance

12 years agogallium: add support for clip distances
Bryan Cain [Mon, 2 Jan 2012 20:48:47 +0000 (14:48 -0600)]
gallium: add support for clip distances

12 years agoglx/dri2: print FPS when env var LIBGL_SHOW_FPS is 1 (v2)
Marek Olšák [Wed, 4 Jan 2012 01:09:44 +0000 (02:09 +0100)]
glx/dri2: print FPS when env var LIBGL_SHOW_FPS is 1 (v2)

This is useful for apps which don't print FPS.
Only enabled in SwapBuffers.

v2: track state per drawable, use libGL prefix

Reviewed-by: Michel Dänzer <michel@daenzer.net>
12 years agor300/compiler: fix buffer underflow when setting SEM_WAIT on last instruction
Marek Olšák [Wed, 4 Jan 2012 04:18:58 +0000 (05:18 +0100)]
r300/compiler: fix buffer underflow when setting SEM_WAIT on last instruction

Do it after we check whether inst_end != -1.
Also move the code structure at the beginning of r300_fragment_shader_code
to detect underflows easily with valgrind.

12 years agou_vbuf: use cso_cache to cache vertex element states
Marek Olšák [Wed, 4 Jan 2012 01:05:51 +0000 (02:05 +0100)]
u_vbuf: use cso_cache to cache vertex element states

Improves performance to 28 fps in Cogs.

12 years agou_vbuf: implement another upload codepath which unrolls indices
Marek Olšák [Tue, 3 Jan 2012 21:01:03 +0000 (22:01 +0100)]
u_vbuf: implement another upload codepath which unrolls indices

Improves performance from cca 1 fps to 23 fps in Cogs.
This new codepath is not always used, instead, there is a heuristic which
determines whether to use it. Using translate for uploads is generally
slower than what we have had already, it's a win only in a few cases.

12 years agou_vbuf: cleanup variable names to be consistent
Marek Olšák [Tue, 3 Jan 2012 20:33:55 +0000 (21:33 +0100)]
u_vbuf: cleanup variable names to be consistent

12 years agou_vbuf: cleanup the computation of how many vertices to upload/translate
Marek Olšák [Tue, 3 Jan 2012 20:28:41 +0000 (21:28 +0100)]
u_vbuf: cleanup the computation of how many vertices to upload/translate

12 years agou_vbuf: convert min_index,max_index to start,count
Marek Olšák [Tue, 3 Jan 2012 15:37:17 +0000 (16:37 +0100)]
u_vbuf: convert min_index,max_index to start,count

12 years agoutil: add helper function util_dump_draw_info
Marek Olšák [Tue, 3 Jan 2012 18:18:45 +0000 (19:18 +0100)]
util: add helper function util_dump_draw_info

12 years agotrace: dump primitive restart info
Marek Olšák [Tue, 3 Jan 2012 18:18:26 +0000 (19:18 +0100)]
trace: dump primitive restart info

12 years agotranslate: implement translation of 10_10_10_2 types
Marek Olšák [Mon, 2 Jan 2012 02:34:09 +0000 (03:34 +0100)]
translate: implement translation of 10_10_10_2 types

This is for GL_ARB_vertex_type_2_10_10_10_rev.
I just took the code from u_format_table.c. It's based on pack_rgba_float.
I had no other choice. The u_format hooks are not exactly compatible
with translate. The cleanup of it is left for future work.

Reviewed-by: Dave Airlie <airlied@redhat.com>
12 years agotranslate: implement translation of (pure) integer formats
Marek Olšák [Mon, 2 Jan 2012 02:04:00 +0000 (03:04 +0100)]
translate: implement translation of (pure) integer formats

The conversion is limited to only a few cases, because converting to any other
type shouldn't happen in any driver.

Reviewed-by: Dave Airlie <airlied@redhat.com>
12 years agou_format: implement fetch_rgba_uint and fetch_rgba_sint for integer formats
Marek Olšák [Mon, 2 Jan 2012 01:59:51 +0000 (02:59 +0100)]
u_format: implement fetch_rgba_uint and fetch_rgba_sint for integer formats

Fetching int as float and vice versa is not allowed.
Fetching unsigned int as signed int and vice versa is not allowed either.
Doing conversions like that isn't allowed for samplers in OpenGL.

The three hooks could be consolidated into one fetch hook, which would fetch
uint as uint32, sint as sint32, and everything else as float. The receiving
parameter would be void*. This would be useful for implementing vertex fetches
for shader model 4.0, which has untyped registers.

Reviewed-by: Dave Airlie <airlied@redhat.com>
12 years agogallium: add flag PIPE_TRANSFER_MAP_PERMANENTLY
Marek Olšák [Mon, 2 Jan 2012 00:13:15 +0000 (01:13 +0100)]
gallium: add flag PIPE_TRANSFER_MAP_PERMANENTLY

Please see the diff for further info.

This paves the way for moving user buffer uploads out of drivers and should
allow to clean up the mess in u_upload_mgr in the meantime.

For now only allowed for buffers on r300 and r600.

Acked-by: Christian König <deathsimple@vodafone.de>
12 years agogallium: remove deprecated PIPE_TRANSFER_DISCARD
Marek Olšák [Sun, 1 Jan 2012 23:02:34 +0000 (00:02 +0100)]
gallium: remove deprecated PIPE_TRANSFER_DISCARD

PIPE_TRANSFER_DISCARD_RANGE is defined the same.

12 years agou_vbuf: translate per-vertex, per-instance, and constant attribs separately
Marek Olšák [Sun, 1 Jan 2012 19:27:40 +0000 (20:27 +0100)]
u_vbuf: translate per-vertex, per-instance, and constant attribs separately

We don't wanna convert per-instance or constant (zero-stride) attribs into
ordinary vertex attribs.

More importantly, the translation of instance attribs now finally works.

12 years agou_vbuf: take start_instance into account when uploading instanced attribs
Marek Olšák [Sun, 1 Jan 2012 18:11:25 +0000 (19:11 +0100)]
u_vbuf: take start_instance into account when uploading instanced attribs

12 years agou_upload_mgr: remove the 'flushed' parameter
Marek Olšák [Sun, 1 Jan 2012 17:23:07 +0000 (18:23 +0100)]
u_upload_mgr: remove the 'flushed' parameter

Not used by anybody.

Reviewed-by: Brian Paul <brianp@vmware.com>
12 years agou_vbuf: don't map user buffers, just obtain a pointer to them
Marek Olšák [Sun, 1 Jan 2012 16:53:55 +0000 (17:53 +0100)]
u_vbuf: don't map user buffers, just obtain a pointer to them

12 years agou_vbuf: only map a subrange of buffers to translate
Marek Olšák [Sun, 1 Jan 2012 16:38:22 +0000 (17:38 +0100)]
u_vbuf: only map a subrange of buffers to translate

12 years agogallium: fix behavior of pipe_buffer_map_range
Marek Olšák [Sun, 1 Jan 2012 16:12:35 +0000 (17:12 +0100)]
gallium: fix behavior of pipe_buffer_map_range

To match what transfer_map returns. Really, subtracting the offset leads
to bugs if someone expects it to work exactly like transfer_map.

Reviewed-by: Brian Paul <brianp@vmware.com>
12 years agou_vbuf: remove the workaround for half floats and translate
Marek Olšák [Sun, 1 Jan 2012 12:05:16 +0000 (13:05 +0100)]
u_vbuf: remove the workaround for half floats and translate

12 years agotranslate: implement translation of half floats in the generic codepath
Marek Olšák [Sun, 1 Jan 2012 11:36:44 +0000 (12:36 +0100)]
translate: implement translation of half floats in the generic codepath