mesa.git
12 years agosoftpipe: bump max texture array layers to 256.
Dave Airlie [Thu, 12 Jan 2012 10:13:37 +0000 (10:13 +0000)]
softpipe: bump max texture array layers to 256.

This as per GL3 specification.

Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agogallium/svga: Pass the SVGA3D_SURFACE_HINT_RENDERTARGET flag to the device
Thomas Hellstrom [Tue, 10 Jan 2012 13:37:33 +0000 (14:37 +0100)]
gallium/svga: Pass the SVGA3D_SURFACE_HINT_RENDERTARGET flag to the device

Some hardware versions rely on it to render correctly.

Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Reviewed-by: José Fonseca <jfonseca@vmware.com>
Reviewed-by: Jakob Bornecrantz <jakob@vmware.com>
12 years agovbo: fix breakage from previous commit
Brian Paul [Thu, 12 Jan 2012 03:23:07 +0000 (20:23 -0700)]
vbo: fix breakage from previous commit

Don't know how that slipped by.

12 years agovbo: fix void * arithmetic compilation error on MSVC
Brian Paul [Thu, 12 Jan 2012 03:03:32 +0000 (20:03 -0700)]
vbo: fix void * arithmetic compilation error on MSVC

Also, call vbo_sizeof_ib_type() once and fix argument cast in
MapBufferRange() call.

12 years agodocs/GL3: consolidate FBO extensions into one ARB
Marek Olšák [Thu, 12 Jan 2012 02:52:06 +0000 (03:52 +0100)]
docs/GL3: consolidate FBO extensions into one ARB

12 years agodocs/GL3: document r300 extension support
Marek Olšák [Thu, 12 Jan 2012 02:27:27 +0000 (03:27 +0100)]
docs/GL3: document r300 extension support

12 years agodocs/GL3: document what's missing for GL3
Marek Olšák [Thu, 12 Jan 2012 02:26:09 +0000 (03:26 +0100)]
docs/GL3: document what's missing for GL3

12 years agovbo: introduce vbo_get_minmax_indices function
Yuanhan Liu [Sat, 31 Dec 2011 06:22:46 +0000 (14:22 +0800)]
vbo: introduce vbo_get_minmax_indices function

Introduce vbo_get_minmax_indices() function to handle the min/max index
computation for nr_prims(>= 1). The old code just compute the first
prim's min/max index; this would results an error rendering if user
called functions like glMultiDrawElements(). This patch servers as
fixing this issue.

As when nr_prims = 1, we can pass 1 to paramter nr_prims, thus I made
vbo_get_minmax_index() static.

v2: per Roland's suggestion, put the indices address compuation into
    vbo_get_minmax_index() instead.

    Also do comination if possible to reduce map/unmap count

v3: per Brian's suggestion, use a pointer for start_prim to avoid
    structure copy per loop.

Signed-off-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
12 years agomesa: remove const qualifier from fProg to silence warning
Brian Paul [Thu, 12 Jan 2012 01:19:37 +0000 (18:19 -0700)]
mesa: remove const qualifier from fProg to silence warning

The args to _mesa_reference_shader_program() can't be const.

12 years agomesa: include uniforms.h to silence warning, remove unused var
Brian Paul [Thu, 12 Jan 2012 01:19:09 +0000 (18:19 -0700)]
mesa: include uniforms.h to silence warning, remove unused var

12 years agomesa: Include glx tests Makefile.in in tarball
Jakob Bornecrantz [Wed, 11 Jan 2012 23:36:23 +0000 (00:36 +0100)]
mesa: Include glx tests Makefile.in in tarball

Fix suggested by Kenneth Graunke.

Signed-off-by: Jakob Bornecrantz <jakob@vmware.com>
Kenneth Graunke <kenneth@whitescape.org>

12 years agoEnable is_front_buffer_rendering variable in case of GL_FRONT_AND_BACK
Anuj Phogat [Fri, 6 Jan 2012 20:48:45 +0000 (12:48 -0800)]
Enable is_front_buffer_rendering variable in case of GL_FRONT_AND_BACK

glDrawBuffer(GL_FRONT_AND_BACK) results in to segmentation fault if
intel->is_front_buffer_rendering is not enabled with GL_FRONT_AND_BACK.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=44153

Reported-by: Yi Sun <yi.sun@intel.com>
Signed-off-by: Anuj Phogat <anuj.phogat@gmail.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
12 years agomesa: Remove unused opengl version macro
Jakob Bornecrantz [Wed, 11 Jan 2012 22:17:37 +0000 (23:17 +0100)]
mesa: Remove unused opengl version macro

Signed-off-by: Jakob Bornecrantz <jakob@vmware.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
12 years agorbug: Silence warning
Jakob Bornecrantz [Mon, 9 Jan 2012 13:53:42 +0000 (14:53 +0100)]
rbug: Silence warning

Signed-off-by: Jakob Bornecrantz <jakob@vmware.com>
Reviewed-by Brian Paul <brianp@vmware.com>

12 years agoi965: Don't use _mesa_ir_link_shader to do our dirty work
Ian Romanick [Sat, 7 Jan 2012 00:26:49 +0000 (16:26 -0800)]
i965: Don't use _mesa_ir_link_shader to do our dirty work

Instead, do the uniform setting and input / output mapping directly in
brw_link_shader.  Hurray for not generating Mesa IR!  However, once
the i965 driver stops calling _mesa_ir_link_shader, UsesClipDistance
and UsesKill are no longer set.

Ideally gen6_upload_vs_push_constants should use the
gl_shader_program, but I don't see a way to propagate the information
there.  The other alternative, since this is the only usage, is to
move gl_vertex_program::UsesClipDistance to brw_vertex_program.

The compile (and precompile) stages use UsesKill to determine the
cache key for the shader.  This is then used to determine whether or
not to compile the shader.  Calculating this data during compilation
is too late.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Acked-by: Kenneth Graunke <kenneth@whitecape.org>
Acked-by: Eric Anholt <eric@anholt.net>
12 years agoi965: Don't calculate masks of used FS inputs
Ian Romanick [Fri, 6 Jan 2012 22:49:02 +0000 (14:49 -0800)]
i965: Don't calculate masks of used FS inputs

This previously enabled some optimizations in the fragment shader
(interpolation, etc.) if some input components were always 0.0 or
1.0.  However, this data was generated by analyzing Mesa IR.  The
next patch in this series removes generation of Mesa IR for GLSL
paths.  When we detect that case, just set the used mask to ~0 and
circumvent the optimizations.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agolinker: Calculate used samplers and shadow samplers in the linker
Ian Romanick [Tue, 15 Nov 2011 05:58:50 +0000 (21:58 -0800)]
linker: Calculate used samplers and shadow samplers in the linker

It used to be done in ir_to_mesa, and that was kind of a bad place.

I didn't change st_glsl_to_tgsi because there is some strange stuff
happening in the code that generates glDrawPixels shaders.  It looked
like this would break horribly if I touched anything.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agolinker: Calculate the sampler to texture target mapping during linking
Ian Romanick [Tue, 15 Nov 2011 02:12:16 +0000 (18:12 -0800)]
linker: Calculate the sampler to texture target mapping during linking

Track the calculated data in gl_shader_program instead of the
individual assembly shaders.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agoglsl: Add glsl_type::sampler_index
Ian Romanick [Mon, 14 Nov 2011 22:02:09 +0000 (14:02 -0800)]
glsl: Add glsl_type::sampler_index

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agomesa: Validate sampler settings using uniform storage
Ian Romanick [Mon, 14 Nov 2011 20:11:46 +0000 (12:11 -0800)]
mesa: Validate sampler settings using uniform storage

Rather than looking at the settings in individual assembly programs,
look at the settings in the top-level uniform values.  The old code
was flawed because examining each shader stage in isolation could
allow inconsitent usage across stages (e.g., bind unit 0 to a
sampler2D in the vertex shader and sampler1DShadow in the fragment
shader).

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agomesa: Track fixed-function fragment shader as a shader
Ian Romanick [Tue, 15 Nov 2011 20:01:18 +0000 (12:01 -0800)]
mesa: Track fixed-function fragment shader as a shader

Previously the fixed-function fragment shader was tracked as a
gl_program.  This means that it shows up in the driver as a Mesa IR
program instead of as a GLSL IR program.  If a driver doesn't generate
Mesa IR from the GLSL IR, that program is empty.  If the program is
empty there is either no rendering or a GPU hang.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Acked-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agomesa: Use static buffer for uniform name
Ian Romanick [Tue, 15 Nov 2011 00:52:05 +0000 (16:52 -0800)]
mesa: Use static buffer for uniform name

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agomesa: Use uniform interfaces in fixed-function fragment shader code
Ian Romanick [Mon, 14 Nov 2011 22:32:39 +0000 (14:32 -0800)]
mesa: Use uniform interfaces in fixed-function fragment shader code

Poking directly at the backing resources works only by luck.  Core
Mesa code should only know about the gl_uniform_storage structure.
Soon other code that looks at samplers will use the gl_uniform_storage
structures instead of the data in the gl_program.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Acked-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agoClean up GL3 status
Matt Turner [Wed, 11 Jan 2012 20:29:51 +0000 (15:29 -0500)]
Clean up GL3 status

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Signed-off-by: Matt Turner <mattst88@gmail.com>
12 years agoconfigure.ac: use AC_PROG_SED
Matt Turner [Wed, 11 Jan 2012 06:05:56 +0000 (01:05 -0500)]
configure.ac: use AC_PROG_SED

It looks like AC_PROG_SED was added in 2.59b, and wasn't in the
original 2.59 in the original 2.59.  Presumably that's why, though
it could've been an oversight.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Signed-off-by: Matt Turner <mattst88@gmail.com>
12 years agoconfigure.ac: don't set HAVE_GTEST twice
Matt Turner [Wed, 11 Jan 2012 06:11:35 +0000 (01:11 -0500)]
configure.ac: don't set HAVE_GTEST twice

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Signed-off-by: Matt Turner <mattst88@gmail.com>
12 years agoi965: Don't reallocate push constant URB space on new VS programs.
Kenneth Graunke [Wed, 11 Jan 2012 19:44:02 +0000 (11:44 -0800)]
i965: Don't reallocate push constant URB space on new VS programs.

The gen7_urb atom depends on CACHE_NEW_VS_PROG and CACHE_NEW_GS_PROG,
causing gen7_upload_urb() to be called when switching to a new VS
program.

In addition to partitioning the URB space between the VS and GS,
gen7_upload_urb() also allocated space for VS and PS push constants.
Unfortunately, this meant that whenever CACHE_NEW_VS was flagged, we'd
reallocate the space for the PS push constants.  According to the BSpec,
after sending 3DSTATE_PUSH_CONSTANT_ALLOC_PS, we must reprogram
3DSTATE_CONSTANT_PS prior to the next 3DPRIMITIVE.

Since our URB allocation for push constants is entirely static, it makes
sense to split it out into its own atom that only subscribes to
BRW_NEW_CONTEXT.  This avoids reallocating the space and trashing
constants.

Fixes a rendering artifact in Extreme Tuxracer, where instead of a snow
trail, you'd get a bright red streak (affectionately known as the
"bloody penguin bug").

This also explains why adding VS-related dirty bits to gen7_ps_state
made the problem disappear: it made 3DSTATE_CONSTANT_PS be emitted after
every 3DSTATE_PUSH_CONSTANT_ALLOC_PS packet.

NOTE: This is a candidate for the 7.11 branch.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=38868
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Paul Berry <stereotype441@gmail.com>
12 years agoglx/dri: Initialize api even if num_attribs == 0.
Kenneth Graunke [Wed, 11 Jan 2012 07:32:50 +0000 (23:32 -0800)]
glx/dri: Initialize api even if num_attribs == 0.

Both dri2_create_context_attribs and drisw_create_context_attribs call
dri2_convert_glx_attribs, expecting it to fill in *api on success.

However, when num_attribs == 0, it was returning true without setting
*api, causing the caller to use an uninitialized value.

Tested-by: Vadim Girlin <vadimgirlin@gmail.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agosvga: don't reference count svga_sampler_view's texture
Brian Paul [Wed, 11 Jan 2012 18:52:23 +0000 (19:52 +0100)]
svga: don't reference count svga_sampler_view's texture

svga_sampler_view contains a pointer to a pipe_resource (base class of
svga_texture) and svga_texture contains a pointer to an svga_sampler_view.
This circular dependency prevented the objects from ever being freed when
they pointed to each other.  Make the svga_sampler_view::texture pointer
a "weak reference" (no reference counting) to break the dependency.

This is safe to do because the pipe_resource/texture always has a longer
lifespan than the sampler view so when svga_sampler_view stops referencing
the texture, the texture's refcount never hits zero.

Fixes a memory leak seen with google earth and other apps.

Reviewed-by: Jakob Bornecrantz <jakob@vmware.com>
12 years agoi965: Fix compiler warning from uninitialized "success" value.
Eric Anholt [Wed, 11 Jan 2012 20:07:15 +0000 (12:07 -0800)]
i965: Fix compiler warning from uninitialized "success" value.

This shouldn't happen, because the DDX should only load this driver if
IS_965.  But better to do something defined in that case.

12 years agoi965/gen7: Fix segfault in transform feedback to DYNAMIC_DRAW buffers.
Eric Anholt [Mon, 2 Jan 2012 22:03:59 +0000 (14:03 -0800)]
i965/gen7: Fix segfault in transform feedback to DYNAMIC_DRAW buffers.

Fixes piglit EXT_transform_feedback/buffer-usage.

12 years agoi965/vs: Try to emit more components of constant vectors at once.
Eric Anholt [Fri, 6 Jan 2012 18:20:09 +0000 (10:20 -0800)]
i965/vs: Try to emit more components of constant vectors at once.

We were naively emitting each component at a time, even if we were
emitting the same value to multiple channels.  Improves on a codegen
regression from the old VS to the new VS on some unigine shaders
(because we emit constant vecs/matrices as immediates instead of
loading them as push constants, so we had over 4x the instructions for
using them).

shader-db results:
Total instructions: 58594 -> 58540
11/870 programs affected (1.3%)
765 -> 711 instructions in affected programs (7.1% reduction)

12 years agomesa: add _mesa_HashNumEntries() function
Brian Paul [Wed, 11 Jan 2012 19:58:43 +0000 (12:58 -0700)]
mesa: add _mesa_HashNumEntries() function

Useful when debugging to find the number of texture objects, shader
programs, etc.

12 years agost/wgl: Return NULL for NULL HDCs in wglGetExtensionsStringARB.
José Fonseca [Fri, 23 Dec 2011 02:57:29 +0000 (02:57 +0000)]
st/wgl: Return NULL for NULL HDCs in wglGetExtensionsStringARB.

WGL_ARB_extensions_string states that wglGetExtensionsStringARB should
return NULL for invalid HDCs.  And some applications rely on it.

Reviewed-By: "Keith Whitwell" <keithw@vmware.com>
12 years agollvmpipe: disable native integers
Dave Airlie [Wed, 11 Jan 2012 19:48:00 +0000 (19:48 +0000)]
llvmpipe: disable native integers

llvmpipe shouldn't be reporting native integer support.

Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agoxlib: stop calling XShmQueryVersion()
Brian Paul [Wed, 11 Jan 2012 02:32:38 +0000 (19:32 -0700)]
xlib: stop calling XShmQueryVersion()

It caused an X protocol error in some (rare) situations.
This is a follow-on to the previous commits which fixes a bug reported
by Wayne E. Robertz.

NOTE: This is a candidate for the 7.11 branch.

Reviewed-by: Adam Jackson <ajax@redhat.com>
12 years agost/glx/xlib: call register_with_display() in glXChooseFBConfig()
Brian Paul [Wed, 11 Jan 2012 02:39:04 +0000 (19:39 -0700)]
st/glx/xlib: call register_with_display() in glXChooseFBConfig()

This is the same fix as the previous commit, except it's for the gallium
glx/xlib state tracker.

NOTE: This is a candidate for the 7.11 branch.

Reviewed-by: Adam Jackson <ajax@redhat.com>
12 years agoxlib: call register_with_display() in Fake_glXChooseFBConfig()
Brian Paul [Wed, 11 Jan 2012 02:24:41 +0000 (19:24 -0700)]
xlib: call register_with_display() in Fake_glXChooseFBConfig()

as we do in Fake_glXChooseVisual().  This registers the MesaGLX
extension on the display so we can clean up buffers, etc. when
the display connection is closed.

Fixes a bug reported by Wayne E. Robertz.

NOTE: This is a candidate for the 7.11 branch.

Reviewed-by: Adam Jackson <ajax@redhat.com>
12 years agonv50/ir: handle TGSI_OPCODE_ISSG
Christoph Bumiller [Wed, 11 Jan 2012 19:25:06 +0000 (20:25 +0100)]
nv50/ir: handle TGSI_OPCODE_ISSG

12 years agonv50/ir: handle TGSI_TEXTURE_SHADOWCUBE
Christoph Bumiller [Wed, 11 Jan 2012 19:18:56 +0000 (20:18 +0100)]
nv50/ir: handle TGSI_TEXTURE_SHADOWCUBE

12 years agonv50,nvc0: zero out program struct on program_destroy
Christoph Bumiller [Wed, 11 Jan 2012 17:50:15 +0000 (18:50 +0100)]
nv50,nvc0: zero out program struct on program_destroy

Prevent any state from carrying over to a new translation in cases
where we assume that data is still zero from initial calloc (these
would require us to do individual zeroing before translation which
would be more code).

12 years agowayland-drm: Drop the non-premul formats, use format codes from drm_fourcc.h
Kristian Høgsberg [Wed, 11 Jan 2012 19:23:24 +0000 (14:23 -0500)]
wayland-drm: Drop the non-premul formats, use format codes from drm_fourcc.h

12 years agodraw: Store the new pre_clip_pos member as well.
José Fonseca [Wed, 11 Jan 2012 18:10:43 +0000 (18:10 +0000)]
draw: Store the new pre_clip_pos member as well.

Again, not much testing nor peer review, but should be better than what's
now.

12 years agoegl_dri2: Put the _eglError call in the case switch case
Kristian Høgsberg [Wed, 11 Jan 2012 17:36:37 +0000 (12:36 -0500)]
egl_dri2: Put the _eglError call in the case switch case

Log an error in case we get an unknown format, not in case for XRGB32.
I botched the edit of Roberts patch.

12 years agost/mesa: rename translate_texture_target, and make translate_opcode static.
Dave Airlie [Wed, 11 Jan 2012 17:32:40 +0000 (17:32 +0000)]
st/mesa: rename translate_texture_target, and make translate_opcode static.

As suggested by Brian.

Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agosoftpipe: route correct coordinates for shadow cube sampling.
Dave Airlie [Thu, 5 Jan 2012 16:16:24 +0000 (16:16 +0000)]
softpipe: route correct coordinates for shadow cube sampling.

This fixes the shadow cube map sampling on softpipe.

Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agoglsl_to_tgsi: add support for shadow cube map sampling.
Dave Airlie [Wed, 11 Jan 2012 13:23:38 +0000 (13:23 +0000)]
glsl_to_tgsi: add support for shadow cube map sampling.

This along with the TGSI support lets the piglit sampler-cube-shadow
test pass on softpipe.

Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agotgsi: add TGSI_TEXTURE_SHADOWCUBEMAP
Dave Airlie [Wed, 11 Jan 2012 13:22:22 +0000 (13:22 +0000)]
tgsi: add TGSI_TEXTURE_SHADOWCUBEMAP

This adds support for shadow cubemap texture sampling instructions.

This is required for GL 3.0.

Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agollvmpipe: Update for TGSI_INTERPOLATE_COLOR.
José Fonseca [Wed, 11 Jan 2012 17:14:26 +0000 (17:14 +0000)]
llvmpipe: Update for TGSI_INTERPOLATE_COLOR.

Not thoroughly tested nor reviewed. But should at least prevent the
assertion failure.

12 years agoegl_dri2/wayland: handle creating xrgb8888 images
Robert Bragg [Tue, 10 Jan 2012 22:16:26 +0000 (22:16 +0000)]
egl_dri2/wayland: handle creating xrgb8888 images

When creating an EGLImage from a struct wl_buffer * this ensures
that we create an XRGB8888 image if the wayland buffer doesn't have an
alpha channel. To determine if a wl_buffer has a valid alpha channel
this patch adds an internal wayland_drm_buffer_has_alpha() function.

It's important to get the internal format for an EGLImage right so that
if a GL texture is later created from the image then the GL driver will
know if it should sample the alpha from the texture or flatten it to
a constant of 1.0.

This avoids needing fragment program workarounds in wayland compositors
to manually ignore the alpha component of textures created from wayland
buffers.

krh: Edited to use wl_buffer_get_format() instead of wl_buffer_has_alpha().

Reviewed-by: Kristian Høgsberg <krh@bitplanet.net>
12 years agoglx: Suppress unused variable warning for cmdlen
Paul Berry [Mon, 9 Jan 2012 19:24:17 +0000 (11:24 -0800)]
glx: Suppress unused variable warning for cmdlen

No functional change.  In the function
__indirect_glAreTexturesResident(), the variable cmdlen is only used
if USE_XCB is not defined.  This patch avoids a compile warning in the
event that USE_XCB is defined.

v2: just move cmdlen declaration inside the #else part.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agomesa: Move transform feedback error check to reduce array overflow risk.
Paul Berry [Mon, 9 Jan 2012 19:25:14 +0000 (11:25 -0800)]
mesa: Move transform feedback error check to reduce array overflow risk.

Previous to this patch, we didn't do the limit check for
MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS until the end of the
store_tfeedback_info() function, *after* storing all of the transform
feedback info in the gl_transform_feedback_info::Outputs array.  This
meant that the limit check wouldn't prevent us from overflowing the
array and corrupting memory.

This patch moves the limit check to the top of tfeedback_decl::store()
so that there is no risk of overflowing the array.  It also adds
assertions to verify that the checks for
MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS and
MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS are sufficient to avoid
array overflow.

Note: strictly speaking this patch isn't necessary, since the maximum
possible number of varyings is MAX_VARYING (16), whereas the size of
the Outputs array is MAX_PROGRAM_OUTPUTS (64), so it's impossible to
have enough varyings to overflow the array.  However it seems prudent
to do the limit check before the array access in case these limits
change in the future.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
12 years agomesa: Fix transform feedback of unsubscripted gl_ClipDistance array.
Paul Berry [Wed, 4 Jan 2012 21:57:52 +0000 (13:57 -0800)]
mesa: Fix transform feedback of unsubscripted gl_ClipDistance array.

On drivers that set gl_shader_compiler_options::LowerClipDistance (for
example i965), we need to handle transform feedback of gl_ClipDistance
specially, to account for the fact that the hardware represents it as
an array of vec4's rather than an array of floats.

The previous way this was accounted for (translating the request for
gl_ClipDistance[n] to a request for a component of
gl_ClipDistanceMESA[n/4]) doesn't work when performing transform
feedback on the whole unsubscripted array, because we need to keep
track of the size of the gl_ClipDistance array prior to the lowering
pass.  So I replaced it with a boolean is_clip_distance_mesa, which
switches on the special logic that is needed to handle the lowered
version of gl_ClipDistance.

Fixes Piglit tests "EXT_transform_feedback/builtin-varyings
gl_ClipDistance[{1,2,3,5,6,7}]-no-subscript".

Reviewed-by: Eric Anholt <eric@anholt.net>
12 years agomesa: Fix computation of transform feedback num_components.
Paul Berry [Wed, 4 Jan 2012 20:21:55 +0000 (12:21 -0800)]
mesa: Fix computation of transform feedback num_components.

The function tfeedback_decl::num_components() was not correctly
accounting for transform feedback of whole arrays and gl_ClipDistance.
The bug was hard to notice in tests, because it only affected the
checks for MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS and
MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS.

This patch fixes the computation, and adds an assertion to verify
num_components() even when MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS
and MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS are not exceeded.

The assertion requires keeping track of components_so_far in
tfeedback_decl::store(); this will be useful in a future patch to fix
non-multiple-of-4-sized gl_ClipDistance.

Reviewed-by: Eric Anholt <eric@anholt.net>
12 years agost_extensions: fixup GLSL 1.30 related enables (v3)
Dave Airlie [Thu, 5 Jan 2012 14:35:54 +0000 (14:35 +0000)]
st_extensions: fixup GLSL 1.30 related enables (v3)

This just fixes up the enables for native integers and EXT_texture_integer
support in st/mesa.

It also set the MaxClipPlanes to 8.

We should consider exposing caps for MCP vs MCD, but since core
mesa doesn't care yet maybe we can wait for now.

v2: use 32-bit formats as per Marek's mail.

v3: add calim's fix for INT_DIV_TO_MUL_RCP disabling.

Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agost_glsl_to_tgsi: use ISSG and fixup IABS
Dave Airlie [Mon, 9 Jan 2012 11:50:14 +0000 (11:50 +0000)]
st_glsl_to_tgsi: use ISSG and fixup IABS

It doesn't look like the GLSL compiler will produce sign op
for an unsigned anyways (seems insane anyways).

Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agotgsi: add ISSG support
Dave Airlie [Mon, 9 Jan 2012 11:49:34 +0000 (11:49 +0000)]
tgsi: add ISSG support

This adds integer version of SSG that GLSL 1.30 can produce.

Signed-off-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
12 years agosoftpipe: enable clamping control
Dave Airlie [Thu, 5 Jan 2012 15:36:43 +0000 (15:36 +0000)]
softpipe: enable clamping control

This enables fragment clamping in softpipe, it passes more
tests than it did previously with no regressions, There are still
a couple of failures in the SNORM types to investigate.

Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agosoftpipe: fix texel fetch swizzles
Dave Airlie [Fri, 6 Jan 2012 16:28:32 +0000 (16:28 +0000)]
softpipe: fix texel fetch swizzles

This fixes a number of texelFetch swizzle tests, and consoldiates
the swizzle handling in a new function.

Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agoi915g: Fix bugs in the shader optimizer.
Stéphane Marchesin [Wed, 11 Jan 2012 10:24:34 +0000 (02:24 -0800)]
i915g: Fix bugs in the shader optimizer.

12 years agosoftpipe: fix llvm build
Dave Airlie [Wed, 11 Jan 2012 10:16:56 +0000 (10:16 +0000)]
softpipe: fix llvm build

Thanks to Wubbbi on #dri-devel for pointing it out.

Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agodraw: clipdistance support (v2)
Dave Airlie [Fri, 6 Jan 2012 12:23:00 +0000 (12:23 +0000)]
draw: clipdistance support (v2)

Add support for using the clipdistance instead of clip plane.

Passes all piglit clipdistance tests.

v2: fixup some comments from Brian in review.

Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agotgsi_scan: add support to count number of output clip distances
Dave Airlie [Fri, 6 Jan 2012 12:21:54 +0000 (12:21 +0000)]
tgsi_scan: add support to count number of output clip distances

Just add support to the scanner to count the number of clip distances.

Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agodraw/softpipe: add clip vertex support. (v2)
Dave Airlie [Wed, 4 Jan 2012 11:52:30 +0000 (11:52 +0000)]
draw/softpipe: add clip vertex support. (v2)

softpipe always clipped using the position vector, however for unclipped
vertices it stored the position in window coordinates, however when position
and clipping are separated, we need to store the clip-space position and
the clip-space vertex clip, so we can interpolate both separately.

This means we have to take the clip space position and store it to use later.

This allows softpipe to pass all the clip-vertex piglit tests.

v2: fix llvm draw regression, the structure being passed into llvm needed
updating, remove some hardcoded ints that should have been enums while there.

Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agotgsi/softpipe: add VertexID support.
Dave Airlie [Thu, 5 Jan 2012 16:59:24 +0000 (16:59 +0000)]
tgsi/softpipe: add VertexID support.

This required changing the system value semantics, so we stored
a system value per vertex, instance id is the only other system
value we currently support, so I span it across the channels.

This passes the 3 vertexid-* piglit tests + lots of instanceid tests.

Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agosoftpipe: allow softpipe to set shader params depending on runtime llvm (v3)
Dave Airlie [Thu, 5 Jan 2012 14:25:04 +0000 (14:25 +0000)]
softpipe: allow softpipe to set shader params depending on runtime llvm (v3)

If draw isn't using llvm we can support vertex texture and integers,
These will be fixed up later, but for now allow this check to happen
at run-time.

v2: since 3e22c7a25321554a32fa6254485912fd53deff3a we can ask draw for a non-llvm
context. Just track if ask and set the vars accordingly. This probably isn't perfect but should cover the cases we care about.

v3: use debug option, restructure to store in screen, as suggested by Jakob.

Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agomesa/clear: fix crashes with illegal clear tests.
Dave Airlie [Tue, 10 Jan 2012 12:48:26 +0000 (12:48 +0000)]
mesa/clear: fix crashes with illegal clear tests.

Mesa shouldn't call into the drivers if there are no renderbuffers
bound to the attachments for the buffers to be cleared.

Fixes a number of the clearbuffer-* tests on softpipe.

Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agomesa: fix cubemap depth completeness test
Dave Airlie [Tue, 10 Jan 2012 16:11:58 +0000 (16:11 +0000)]
mesa: fix cubemap depth completeness test

This fixes the test to allow cube/depth combinations on GL3
or EXT_gpu_shader4.

Signed-off-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
12 years agoglsl: Add error checking for applying interpolation qualifiers to other vars.
Eric Anholt [Tue, 10 Jan 2012 00:40:20 +0000 (16:40 -0800)]
glsl: Add error checking for applying interpolation qualifiers to other vars.

Fixes piglit
glsl-1.30/compiler/interpolation-qualifiers/local-smooth-01.frag.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agoi965: Claim to support 4 multisamples on gen6+.
Eric Anholt [Tue, 10 Jan 2012 00:39:28 +0000 (16:39 -0800)]
i965: Claim to support 4 multisamples on gen6+.

We're not quite ready to actually support it in the implementation,
but at least this allows GL 3.0 API-reliant applications to hopefully
run successfully, though they won't get multisampling.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agoi965: Increase the number of array texture levels to the hardware limit.
Eric Anholt [Mon, 9 Jan 2012 22:47:24 +0000 (14:47 -0800)]
i965: Increase the number of array texture levels to the hardware limit.

The EXT_texture_array required only 64, but GL 3.0 required 256.
Since we're already exposing values that can get us way beyond our
ability to map the single object directly, go ahead and expose all the
way to hardware limits.

Tested with new piglit EXT_texture_array/maxlayers on gen7.
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agoglsl: Fix copy_propagation_elements bug in handling self-copies.
Eric Anholt [Mon, 9 Jan 2012 21:30:55 +0000 (13:30 -0800)]
glsl: Fix copy_propagation_elements bug in handling self-copies.

We were doing the kill of the updated channels, then adding our copy
to the list of available stuff to copy.  But if the copy was updating
its own source channels, we didn't notice, breaking this code:

R0.xyzw = arg0 + arg1;
R0.xyzw = R0.wwwx;
gl_FragColor.xyzw = clamp(R0.xyzw, 0.0, 1.0);

Fixes piglit glsl-copy-propagation-self-2.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agoi965: Fix compiler warnings from hiz changes.
Eric Anholt [Wed, 11 Jan 2012 00:44:05 +0000 (16:44 -0800)]
i965: Fix compiler warnings from hiz changes.

12 years agoi965/gen7: Fix batch length for 3DSTATE_HIER_DEPTH_BUFFER
Chad Versace [Wed, 11 Jan 2012 00:31:39 +0000 (16:31 -0800)]
i965/gen7: Fix batch length for 3DSTATE_HIER_DEPTH_BUFFER

Change from 5 to 3.

Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
12 years agoi965/gen7: Enable HiZ
Chad Versace [Thu, 22 Dec 2011 01:09:58 +0000 (17:09 -0800)]
i965/gen7: Enable HiZ

This patch modifies all batches needed for HiZ. The batch length for
3DSTATE_HIER_DEPTH_BUFFER is also corrected from 4 to 3.

Performance +6.7% on Citybench.
    num-frames: 400
    resolution: 1918x1031
    avg-hiz-off: 127.90 fps
    avg-hiz-on: 136.50 fps
    kernel: git://people.freedesktop.org/~anholt/linux.git branch=gen7-reset-sol sha=23360e4

Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
12 years agoi965: Replace references to stencil region size with buffer size
Chad Versace [Thu, 22 Dec 2011 00:58:38 +0000 (16:58 -0800)]
i965: Replace references to stencil region size with buffer size

It is unwise to use a stencil region's size to determine its
renderbuffer's size, because at region creation we fudge the width and
height to accomodate interleaved rows. (See the comment for MESA_FORMAT_S8
in intel_miptree_create()). Most users of stencil_region->{width,height}
should be converted to use stencil_rb->{Width,Height}.

We have already done the replacement in several locations. This patch
continues the replacement in {brw,gen7}_emit_depthbuffer(). To make those
functions look consistent, I've also done the equivalent replacement for
the depth buffer.

Acked-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
12 years agoi965: Fix misnamed GEN7_WM_DEPTH_RESOLVE
Chad Versace [Thu, 22 Dec 2011 01:49:07 +0000 (17:49 -0800)]
i965: Fix misnamed GEN7_WM_DEPTH_RESOLVE

It was named GEN6_WM_DEPTH_RESOLVE. Luckily, this caused no conflict,
because the value is identical for gen6 and gen7.

Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
12 years agonv50: fix clip state validation
Christoph Bumiller [Tue, 10 Jan 2012 20:33:48 +0000 (21:33 +0100)]
nv50: fix clip state validation

Don't create clip outputs if no clip planes are enabled.

Move clip validation after program validation: we were calling
linkage validation in case the VP needed rebuilding before the
FP was validated.

The vertex program needs to be built first because when
ClipDistance is used we'll want to only enable those outputs that
are also written.

12 years agodraw: remove unused 'so' variable in draw_pt_so_emit()
Brian Paul [Tue, 10 Jan 2012 19:40:10 +0000 (12:40 -0700)]
draw: remove unused 'so' variable in draw_pt_so_emit()

12 years agomesa: fix > vs. >> typo in EXPAND_3_8() macro
Brian Paul [Tue, 10 Jan 2012 19:26:58 +0000 (12:26 -0700)]
mesa: fix > vs. >> typo in EXPAND_3_8() macro

Found by Eirik Byrkjeflot Anonsen.

12 years agost/mesa: remove unnecessary memset()/zero call
Brian Paul [Tue, 10 Jan 2012 18:40:00 +0000 (11:40 -0700)]
st/mesa: remove unnecessary memset()/zero call

The u_surface_default_template() function does the memset()/zero now.

Jakob Bornecrantz <jakob@vmware.com>

12 years agoutil: use memset() to initialize surface, sampler_view templates
Brian Paul [Tue, 10 Jan 2012 18:35:57 +0000 (11:35 -0700)]
util: use memset() to initialize surface, sampler_view templates

These initialization functions weren't initializing all the fields so
some had undefined values.  The callers of these functions sometimes use
a structure assignment to initialize new objects from these templates
so we'd just propagate the undefined values.  That made for some confusing
info when debugging, plus it could lead to bugs.

v2: fix surf pointer mix-up: "&surf" -> "surf"

Jakob Bornecrantz <jakob@vmware.com>

12 years agomesa: use STATIC_ASSERT in a few more places
Brian Paul [Tue, 10 Jan 2012 18:09:02 +0000 (11:09 -0700)]
mesa: use STATIC_ASSERT in a few more places

12 years agoscons: Fix libGL.so build.
José Fonseca [Tue, 10 Jan 2012 17:42:02 +0000 (17:42 +0000)]
scons: Fix libGL.so build.

12 years agomesa: move _mesa_clear_accum_buffer() inside FEATURE_accum test
Brian Paul [Tue, 10 Jan 2012 15:16:38 +0000 (08:16 -0700)]
mesa: move _mesa_clear_accum_buffer() inside FEATURE_accum test

Fixes _mesa_clear_accum_buffer() being multiply defined if
FEATURE_accum is false.

Tested-by: Chih-Wei Huang <cwhuang@android-x86.org>
12 years agomesa: add missing color buffer datatype check for glBlitFramebuffer()
Brian Paul [Mon, 9 Jan 2012 19:38:49 +0000 (12:38 -0700)]
mesa: add missing color buffer datatype check for glBlitFramebuffer()

Reviewed-By: Jose Fonseca <jfonseca@vmware.com>
12 years agosvga: Drop execbuf throttling
Jakob Bornecrantz [Mon, 9 Jan 2012 12:24:50 +0000 (13:24 +0100)]
svga: Drop execbuf throttling

This code isn't used anymore in preference for DRI2 client side swap buffers
throttling or throttling done inside the xa or xorg driver.

Signed-off-by: Jakob Bornecrantz <jakob@vmware.com>
Reviewed-by Brian Paul <brianp@vmware.com>

12 years agosvga: Add somewhat sensible fallback and silence warning
Jakob Bornecrantz [Mon, 9 Jan 2012 12:50:29 +0000 (13:50 +0100)]
svga: Add somewhat sensible fallback and silence warning

Signed-off-by: Jakob Bornecrantz <jakob@vmware.com>
Reviewed-by Brian Paul <brianp@vmware.com>

12 years agosvga: Silence warning
Jakob Bornecrantz [Mon, 9 Jan 2012 13:26:04 +0000 (14:26 +0100)]
svga: Silence warning

Signed-off-by: Jakob Bornecrantz <jakob@vmware.com>
Reviewed-by Brian Paul <brianp@vmware.com>

12 years agosvga: Silence warning
Jakob Bornecrantz [Mon, 9 Jan 2012 12:49:02 +0000 (13:49 +0100)]
svga: Silence warning

Signed-off-by: Jakob Bornecrantz <jakob@vmware.com>
Reviewed-by Brian Paul <brianp@vmware.com>

12 years agosvga: Silence warning
Jakob Bornecrantz [Mon, 9 Jan 2012 12:43:40 +0000 (13:43 +0100)]
svga: Silence warning

Signed-off-by: Jakob Bornecrantz <jakob@vmware.com>
Reviewed-by Brian Paul <brianp@vmware.com>

12 years agosvga: Ignores
Jakob Bornecrantz [Mon, 9 Jan 2012 21:30:00 +0000 (22:30 +0100)]
svga: Ignores

Signed-off-by: Jakob Bornecrantz <jakob@vmware.com>
Reviewed-by Brian Paul <brianp@vmware.com>

12 years agomesa: Silence warning
Jakob Bornecrantz [Mon, 9 Jan 2012 14:38:35 +0000 (15:38 +0100)]
mesa: Silence warning

Signed-off-by: Jakob Bornecrantz <jakob@vmware.com>
Reviewed-by Brian Paul <brianp@vmware.com>
Reviewed-by Ian Romanick <ian.d.romanick@intel.com>

12 years agomesa: Silence warning
Jakob Bornecrantz [Mon, 9 Jan 2012 14:37:51 +0000 (15:37 +0100)]
mesa: Silence warning

Signed-off-by: Jakob Bornecrantz <jakob@vmware.com>
Reviewed-by Brian Paul <brianp@vmware.com>
Reviewed-by Ian Romanick <ian.d.romanick@intel.com>

12 years agodraw: Silence warning
Jakob Bornecrantz [Mon, 9 Jan 2012 21:55:56 +0000 (22:55 +0100)]
draw: Silence warning

This peice of code has been here since the inital commit (c5c5cd71) and the
code that used instance_id_index was removed in (caede752) by José.

Signed-off-by: Jakob Bornecrantz <jakob@vmware.com>
Reviewed-by Brian Paul <brianp@vmware.com>

12 years agotarget-helpers: If neither softpipe or llvmpipe is used just return the screen
Jakob Bornecrantz [Mon, 9 Jan 2012 12:36:20 +0000 (13:36 +0100)]
target-helpers: If neither softpipe or llvmpipe is used just return the screen

So the targets can drop the sw_wrapper winsys when no sw driver is being used.

Signed-off-by: Jakob Bornecrantz <jakob@vmware.com>
Reviewed-by Brian Paul <brianp@vmware.com>

12 years agodraw/softpipe: EXT_transform_feedback support (v2)
Dave Airlie [Wed, 4 Jan 2012 17:38:55 +0000 (17:38 +0000)]
draw/softpipe: EXT_transform_feedback support (v2)

This replaces the current code with an implementation compatible with
the new gallium interface. I've left some of the remains of the interface
intact so llvmpipe keeps building correctly, and I'll take a look at fixing
llvmpipe up later.

v2: fixup as per Brian's review

Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agogallium: introduce GLSL based interpolation rules. (v2)
Dave Airlie [Mon, 9 Jan 2012 15:57:02 +0000 (15:57 +0000)]
gallium: introduce GLSL based interpolation rules. (v2)

This introduces an unspecified interpolation paramter that is only allowed for
color semantics, so a specified GLSL interpolation will override the ShadeModel
specified interpolation, but not vice-versa.

This fixes a lot of the interpolation tests in piglit.

v2: rename from unspecified to color

Signed-off-by: Dave Airlie <airlied@redhat.com>
12 years agonvc0: fix FP header clip distance mask
Christoph Bumiller [Sun, 8 Jan 2012 17:01:55 +0000 (18:01 +0100)]
nvc0: fix FP header clip distance mask

12 years agonvc0/ir: TXF array index already is an integer
Christoph Bumiller [Sun, 8 Jan 2012 15:26:23 +0000 (16:26 +0100)]
nvc0/ir: TXF array index already is an integer