mesa.git
11 years agosoftpipe: fix softpipe_delete_fs_state() failed assertion
Brian Paul [Fri, 10 Aug 2012 18:16:10 +0000 (12:16 -0600)]
softpipe: fix softpipe_delete_fs_state() failed assertion

The var!=softpipe->fs_variant assertion was failing because we weren't
nulling the softpipe->fs_variant pointer when binding a new shader.
Since softpipe->fs_variant depends on the current fs, it's of no use
when a new FS is bound.

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

Note: This is a candidate for the 8.0 branch.

Reviewed-by: José Fonseca <jfonseca@vmware.com>
11 years agocso: rearrange some structure fields for consistency
Brian Paul [Fri, 10 Aug 2012 18:14:17 +0000 (12:14 -0600)]
cso: rearrange some structure fields for consistency

11 years agost/mesa: fix renderbuffer validation bug
Brian Paul [Fri, 10 Aug 2012 15:57:05 +0000 (09:57 -0600)]
st/mesa: fix renderbuffer validation bug

After we attach a new renderbuffer in this function we need to make
sure Mesa's update_framebuffer() gets called.

Fixes crash in WebGL conformance/textures/texture-attachment-formats.html,
but the test still fails for other reasons.

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

Note: This is a candidate for the 8.0 branch.

Reviewed-by: José Fonseca <jfonseca@vmware.com>
11 years agomesa: Remove C++11 narrowing warnings
Chad Versace [Thu, 9 Aug 2012 19:59:22 +0000 (12:59 -0700)]
mesa: Remove C++11 narrowing warnings

Add -Wno-narrowing to CXXFLAGS for gcc.

It is safe to add this flag even for versions of gcc that don't recognize
it.  From the GCC Manual [1]: "[GCC] allows the use of new -Wno- options
with old compilers".

This removes warnings of the form
    warning: narrowing conversion of X from 'int' to 'float' inside { } is
    ill-formed in C++11 [-Wnarrowing]
in ff_fragment_shader.cpp and gen6_blorp.cpp of the form.  When building
i965, I observed no other difference in the build output.

[1] http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
11 years agogallivm: fix crash in lp_sampler_static_state()
Brian Paul [Fri, 10 Aug 2012 15:23:36 +0000 (09:23 -0600)]
gallivm: fix crash in lp_sampler_static_state()

Fixes WebGL conformance/uniforms/uniform-default-values.html crash.

We need to check for the null view pointer before accessing view->texture.

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

Note: This is a candidate for the 8.0 branch.

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
11 years agost/mesa: fix glCopyTexSubImage crash
Brian Paul [Fri, 10 Aug 2012 15:12:50 +0000 (09:12 -0600)]
st/mesa: fix glCopyTexSubImage crash

Fixes a WebGL crash.  The dest texture image is at level 2 and is of
size 1x1 texel.  The st texture image is a stand-alone resource, not
a pointer into a complete mipmap.  So the resource has one level and
trying to write to level 2 blows up.

Fixes http://bugs.freedesktop.org/show_bug.cgi?id=53314
and http://bugs.freedesktop.org/show_bug.cgi?id=53319

Note: This is a candidate for the 8.0 branch.

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
11 years agointel: Always downsample in intel_miptree_map_multisample
Chad Versace [Thu, 9 Aug 2012 20:55:07 +0000 (13:55 -0700)]
intel: Always downsample in intel_miptree_map_multisample

Always downsample before mapping, even if the map mode contains
GL_MAP_INVALIDATE_RANGE_BIT. If we neglect to downsample when only
a subrect is mapped then the upsample in intel_miptree_unmap_multisample
may write garbage to the region outside the subrect.

(Eric gave my patch e88cfbb a conditional reviewed-by with the condition
that it always downsample before mapping. I forgot to make that change
before pushing the patch.)

Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
11 years agoi965/gen6+: Add support for edge flags.
Eric Anholt [Sat, 28 Jul 2012 04:07:48 +0000 (21:07 -0700)]
i965/gen6+: Add support for edge flags.

Fixes the 3 new piglit edgeflag tests.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=40707
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agoi965/vs: Convert EdgeFlagPointer values appropriately for the VS on gen4.
Eric Anholt [Fri, 27 Jul 2012 22:57:07 +0000 (15:57 -0700)]
i965/vs: Convert EdgeFlagPointer values appropriately for the VS on gen4.

Fixes piglit gl-2.0/edgeflag.

NOTE: This is a candidate for the 8.0 branch.
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agoi965/vs: Add comment noting copy_edgeflag state dependency.
Eric Anholt [Fri, 27 Jul 2012 22:53:54 +0000 (15:53 -0700)]
i965/vs: Add comment noting copy_edgeflag state dependency.

It's already in the state struct.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agoi965/vs: Add support for copying user edge flags.
Eric Anholt [Fri, 27 Jul 2012 19:57:56 +0000 (12:57 -0700)]
i965/vs: Add support for copying user edge flags.

Fixes the glsl skinning demo regression since changing to the new GLSL
compiler, and is part of fixing piglit gl-2.0-edgeflag.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=50079
NOTE: This is a candidate for the 8.0 branch.
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agoi965/fs: Fix the FS inputs setup when some SF outputs aren't used in the FS.
Olivier Galibert [Thu, 19 Jul 2012 20:00:16 +0000 (22:00 +0200)]
i965/fs: Fix the FS inputs setup when some SF outputs aren't used in the FS.

If there was an edge flag or a two-side-color pair present, we'd end up
mismatched and read values from earlier in the VUE for later FS inputs.

v2: Fix regression in gles2conform shaders generating point size. (change by
    anholt)

Signed-off-by: Olivier Galibert <galibert@pobox.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
NOTE: This is a candidate for the 8.0 branch.

11 years agost/mesa: Initialize tgsi_texture_offset Padding field.
Vinson Lee [Wed, 8 Aug 2012 07:08:43 +0000 (00:08 -0700)]
st/mesa: Initialize tgsi_texture_offset Padding field.

Fixes uninitialized scalar variable defect reported by Coverity.

Signed-off-by: Vinson Lee <vlee@freedesktop.org>
Reviewed-by: José Fonseca <jfonseca@vmware.com>
11 years agoglx/dri: Initialize reset to __DRI_CTX_RESET_NO_NOTIFICATION.
Kenneth Graunke [Mon, 6 Aug 2012 22:12:07 +0000 (15:12 -0700)]
glx/dri: Initialize reset to __DRI_CTX_RESET_NO_NOTIFICATION.

If the application has requested reset notification, then
dri2_convert_glx_attribs will initialize this to the correct value.

Otherwise, it's supposed to initialize this to NO_NOTIFICATION, but
doesn't when num_attribs == 0.  (The consensus seems to be that we
should make it do so, but that's more invasive, so I'm pushing this for
now.)

Fixes a regression since a8724d85f8cb2f0fb73b9c6c1f268f9084c6d473
where trying to run OilRush_x86 or apitrace heaven_x64 would result in:

dri_util.c:221: dri2CreateContextAttribs: Assertion `!"Should not get
here."' failed.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=53076
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
11 years agointel: use _mesa_meta_Clear with OpenGL ES 1.1 v2
Tapani Pälli [Wed, 8 Aug 2012 17:46:45 +0000 (20:46 +0300)]
intel: use _mesa_meta_Clear with OpenGL ES 1.1 v2

Patch changes i915 and i965 drivers to use fixed function version of
meta clear when running on ES 1.1. This fixes rendering errors seen with
Google Maps, Angry Birds and Gallery3D on Android platform.

Change 88128516d43be5d25288ff5b64db63cda83c04b3 exposes all extensions
internally to be available independent of GL flavour, therefore check
against ARB_fragment_shader does not work.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=50333
Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
11 years agoi965: Rework the extra flushes surrounding occlusion queries.
Kenneth Graunke [Wed, 8 Aug 2012 16:41:19 +0000 (09:41 -0700)]
i965: Rework the extra flushes surrounding occlusion queries.

This removes the CS stall on Ivybridge.

On Sandybridge, the depth stall needs to be preceded by a non-zero
post-sync op, which requires a CS stall, which needs a stall at
scoreboard.  Emit the full workaround.

Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Eric Anholt <eric@anholt.net>
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agoi965/vs: Protect pow(x,y) MOV of y on gen4 from other instruction flags.
Eric Anholt [Mon, 6 Aug 2012 22:02:34 +0000 (15:02 -0700)]
i965/vs: Protect pow(x,y) MOV of y on gen4 from other instruction flags.

I don't know if it was possible to trigger this bug -- we don't merge
saturates into the math instruction because we're bad at coalescing currently,
and there's nothing generating these with predicates.  Still, let's avoid
future bugs when we do smarter codegen.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agoi965: Drop the confusing saturate argument to math instruction setup.
Eric Anholt [Mon, 6 Aug 2012 21:59:39 +0000 (14:59 -0700)]
i965: Drop the confusing saturate argument to math instruction setup.

This was ridiculous.  We were ignoring the inst->header.saturate flag in the
case of math and only math.  On gen4, we would leave inst->header.saturate in
place if it happened to be set, which would end up being applied to the
implicit mov and thus trash the first argument.  On gen6, we would overwrite
inst->header.saturate with the saturate flag from the argument, which was not
set appropriately in brw_vec4_emit.cpp, and was only not a bug due to our
incompetence at coalescing saturate moves.

By ripping the argument out and making saturate work just like all the other
brw_eu_emit.c code generation, we can avoid both these classes of bugs.

Fixes piglit fog-modes, and the new specific fs-saturate-exp2 case.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=48628
NOTE: This is a candidate for the 8.0 branch.
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agoi965: Make brw_set_saturate() use stdbool.
Eric Anholt [Wed, 8 Aug 2012 23:03:04 +0000 (16:03 -0700)]
i965: Make brw_set_saturate() use stdbool.

There was a chance for brw_wm_emit.c to screw up and pass (1 << 4) instead of
1, which would get converted to 0 when stored.  Instead, use stdbool which
converts nonzero to true/1 like we want.

11 years agomesa: In conditional rendering fallback, check the query status.
Eric Anholt [Mon, 6 Aug 2012 15:26:30 +0000 (08:26 -0700)]
mesa: In conditional rendering fallback, check the query status.

Otherwise, conditional rendering always takes the fallthrough "render it
anyway" case unless the application had itself done a check or wait on the
query.

Fixes intel oglconform's conditional_render advanced.nofbo.readpixels.

Reviewed-by: Brian Paul <brianp@vmware.com>
NOTE: This is a candidate for the 8.0 branch.

11 years agomesa: Fix glPopAttrib() behavior on GL_FRAMEBUFFER_SRGB.
Eric Anholt [Wed, 1 Aug 2012 19:38:56 +0000 (12:38 -0700)]
mesa: Fix glPopAttrib() behavior on GL_FRAMEBUFFER_SRGB.

I happened to notice this while looking at a blit pass in l4d2, which had an
optional push/pop around framebuffer srgb setting.  It didn't matter in the
end, but the fix is sitting in my tree now.

Reviewed-by: Brian Paul <brianp@vmware.com>
NOTE: This is a candidate for the 8.0 branch.

11 years agoMake shared-glapi the default
Ian Romanick [Wed, 1 Aug 2012 21:51:37 +0000 (14:51 -0700)]
Make shared-glapi the default

You can't practically have desktop OpenGL and OpenGL ES on the same system
without this.  The benefits of not having it (e.g., a more compact dispatch
table) are irrelevant.

v2: Don't mark shared-glapi as experimental.  Review suggestion by Chad.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Chad Versace <chad.versace@linux.intel.com>
11 years agomesa/tests: Fix trivial typos in src/mapi/glapi tests
Ian Romanick [Wed, 1 Aug 2012 21:50:28 +0000 (14:50 -0700)]
mesa/tests: Fix trivial typos in src/mapi/glapi tests

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
11 years agomesa/tests: Add tests for the generated shared-glapi dispatch table
Ian Romanick [Wed, 1 Aug 2012 21:48:27 +0000 (14:48 -0700)]
mesa/tests: Add tests for the generated shared-glapi dispatch table

These are largely based on the src/mapi/glapi/tests.  However,
shared-glapi provides less external visibility into the dispatch table,
so there is less to test.  Also, shared-glapi does not implement
_glapi_get_proc_name, so that test was removed.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
11 years agoglapi: Prevent accidental use of lies w/shared-glapi
Ian Romanick [Wed, 1 Aug 2012 00:23:35 +0000 (17:23 -0700)]
glapi: Prevent accidental use of lies w/shared-glapi

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
11 years agoglx: Don't use glapitable.h at all
Ian Romanick [Tue, 31 Jul 2012 23:58:41 +0000 (16:58 -0700)]
glx: Don't use glapitable.h at all

When --enable-shared-glapi is used, all non-ABI entries in the table are
lies.  Avoiding the use of glapitable.h avoids the lies.  The only
entries used in this code are entries that are ABI.  For these, the ABI
offset can be used directly.

Since this code is in src/glx, it can't use src/mesa/main/dispatch.h to
get the pretty names for these offsets.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
11 years agoglx: Don't rely on struct _glapi_table
Ian Romanick [Tue, 31 Jul 2012 23:40:07 +0000 (16:40 -0700)]
glx: Don't rely on struct _glapi_table

When --enable-shared-glapi is used, all non-ABI entries in the table are
lies.  There are two completely separate code generation paths used to
assign dispatch offset.  Neither has any clue about the other.
Unsurprisingly, the can't agree on what offsets to assign.

This adds a bunch of overhead to __glXNewIndirectAPI, but this function
is called at most once.

The test ExtensionNopDispatch was removed.  There was just no way to
make this test work with the information provided in shared-glapi.
Since indirect_glx.c uses _glapi_get_proc_offset now, it was also
impossible to make the tests work without shared-glapi.  So much pain.

This fixes indirect rendering with shared-glapi.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
11 years agomesa/tests: Don't build glapi tests with shared-glapi
Ian Romanick [Tue, 31 Jul 2012 21:10:54 +0000 (14:10 -0700)]
mesa/tests: Don't build glapi tests with shared-glapi

This fixes 'make check' on with --enable-shared-glapi.  This test cannot work
in that environment.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
11 years agoi965: Use 64-bit writes for occlusion queries.
Kenneth Graunke [Tue, 7 Aug 2012 17:17:04 +0000 (10:17 -0700)]
i965: Use 64-bit writes for occlusion queries.

The hardware seems to use the length of the PIPE_CONTROL command to
indicate whether the write is 64-bits or 32-bits.  Which makes sense
for immediate writes.

Daniel discovered this by writing a pattern into the query object bo
and noticing that the high 32-bits were left intact, even on those
pipe control writes that seemingly worked.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Reviewed-by: Eric Anholt <eric@anholt.net>
11 years agoi965: Refactor depth count write PIPE_CONTROLs into a helper function.
Kenneth Graunke [Tue, 7 Aug 2012 16:55:11 +0000 (09:55 -0700)]
i965: Refactor depth count write PIPE_CONTROLs into a helper function.

This consolidates the complexity in one place, which is important
because it's about to get even more complicated.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Reviewed-by: Eric Anholt <eric@anholt.net>
11 years agoi965: Emit a CS stall before timestamp writes.
Kenneth Graunke [Tue, 7 Aug 2012 16:32:46 +0000 (09:32 -0700)]
i965: Emit a CS stall before timestamp writes.

This implements one of the Sandybridge PIPE_CONTROL workarounds.  It
doesn't appear to be required for Ivybridge.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Reviewed-by: Eric Anholt <eric@anholt.net>
11 years agoi965: Use 64-bit writes for timestamp queries.
Kenneth Graunke [Tue, 7 Aug 2012 16:13:04 +0000 (09:13 -0700)]
i965: Use 64-bit writes for timestamp queries.

The hardware seems to use the length of the PIPE_CONTROL command to
indicate whether the write is 64-bits or 32-bits.  Which makes sense
for immediate writes.

Daniel discovered this by writing a pattern into the query object bo
and noticing that the high 32-bits were left intact, even on those
pipe control writes that seemingly worked.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Reviewed-by: Eric Anholt <eric@anholt.net>
11 years agoi965: Refactor timestamp write PIPE_CONTROLs into a helper function.
Kenneth Graunke [Tue, 7 Aug 2012 16:09:46 +0000 (09:09 -0700)]
i965: Refactor timestamp write PIPE_CONTROLs into a helper function.

This consolidates the complexity in one place, which is important
because it's about to get even more complicated.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Reviewed-by: Eric Anholt <eric@anholt.net>
11 years agointel: Make the length for PIPE_CONTROL explicit.
Kenneth Graunke [Thu, 26 Jul 2012 18:41:26 +0000 (11:41 -0700)]
intel: Make the length for PIPE_CONTROL explicit.

PIPE_CONTROL has variable length, depending upon generation and whether
we want to do 32-bit or 64-bit data writes.  Make it explicit, rather
than hiding a length of 4 in the #define for _3DSTATE_PIPE_CONTROL.

Generated by s/3DSTATE_PIPE_CONTROL/3DSTATE_PIPE_CONTROL | (4 - 2)/g.
This is equivalent since the #define used to have | 2 in it.  A grep
through the sources shows that all instances have been converted, so
it's safe to remove the | 2 from the #define.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Reviewed-by: Eric Anholt <eric@anholt.net>
11 years agoswrast: add missing switch case for API_OPENGL_CORE
Brian Paul [Wed, 8 Aug 2012 15:39:36 +0000 (09:39 -0600)]
swrast: add missing switch case for API_OPENGL_CORE

To silence compiler warning.

Reviewed-by: José Fonseca <jfonseca@vmware.com>
11 years agogallivm: remove unused src_elem_type variable
Brian Paul [Wed, 8 Aug 2012 15:39:36 +0000 (09:39 -0600)]
gallivm: remove unused src_elem_type variable

Reviewed-by: José Fonseca <jfonseca@vmware.com>
11 years agosvga: remove unused svga_shader::use_sm30 field, add comments
Brian Paul [Wed, 8 Aug 2012 15:39:36 +0000 (09:39 -0600)]
svga: remove unused svga_shader::use_sm30 field, add comments

Reviewed-by: José Fonseca <jfonseca@vmware.com>
11 years agosvga: remove unused svga_winsys_handle type
Brian Paul [Wed, 8 Aug 2012 15:39:36 +0000 (09:39 -0600)]
svga: remove unused svga_winsys_handle type

Reviewed-by: José Fonseca <jfonseca@vmware.com>
11 years agoradeonsi: If pixel shader compilation fails, use a dummy shader.
Michel Dänzer [Wed, 8 Aug 2012 13:35:42 +0000 (15:35 +0200)]
radeonsi: If pixel shader compilation fails, use a dummy shader.

Otherwise we're likely to hang the GPU.

Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
11 years agoradeonsi: fix memory leak and/or segfaults
Christian König [Fri, 3 Aug 2012 14:51:32 +0000 (16:51 +0200)]
radeonsi: fix memory leak and/or segfaults

Fix a stupid typo that could lead to memory
leaks and/or segfaults.

Signed-off-by: Christian König <deathsimple@vodafone.de>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
11 years agoradeon/winsys: fix winsys VM handling
Christian König [Mon, 6 Aug 2012 15:53:49 +0000 (17:53 +0200)]
radeon/winsys: fix winsys VM handling

Move releasing the VM area after closing the bo handle.

This partially fixes: https://bugs.freedesktop.org/show_bug.cgi?id=45018

Signed-off-by: Christian König <deathsimple@vodafone.de>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
11 years agotranslate: Fix typo in is_legal_int_format_combo.
Vinson Lee [Tue, 7 Aug 2012 07:13:41 +0000 (00:13 -0700)]
translate: Fix typo in is_legal_int_format_combo.

Fixes same on both sides defect reported by Coverity.

Signed-off-by: Vinson Lee <vlee@freedesktop.org>
Reviewed-by: José Fonseca <jfonseca@vmware.com>
11 years agor600g: remove unused parameters in texture functions
Marek Olšák [Tue, 7 Aug 2012 20:47:12 +0000 (22:47 +0200)]
r600g: remove unused parameters in texture functions

11 years agoi965: Enable uniform buffer objects on gen6+.
Eric Anholt [Wed, 27 Jun 2012 20:46:26 +0000 (13:46 -0700)]
i965: Enable uniform buffer objects on gen6+.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agoi965/vs: Add support for loading uniform buffer variables as pull constants.
Eric Anholt [Mon, 25 Jun 2012 21:55:01 +0000 (14:55 -0700)]
i965/vs: Add support for loading uniform buffer variables as pull constants.

Unlike the FS side in the previous commit, this does variable indexing just
fine, using the same code as we used for other variable-indexed pull
constants.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agoi965/fs: Add support for loading uniform buffer variables as pull constants.
Eric Anholt [Wed, 20 Jun 2012 22:55:13 +0000 (15:55 -0700)]
i965/fs: Add support for loading uniform buffer variables as pull constants.

Variable array indexing isn't finished, because the lowering pass
turns it all into conditional moves of constant index accesses so I
can't test it.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agoi965/vs: Add a surface index to VS_OPCODE_PULL_CONSTANT instructions.
Eric Anholt [Mon, 25 Jun 2012 21:36:28 +0000 (14:36 -0700)]
i965/vs: Add a surface index to VS_OPCODE_PULL_CONSTANT instructions.

Similar to the previous commit for the fragment shader, now we have a buffer
index and an offset.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agoi965/fs: Communicate the pull constant block read parameters through fs_regs.
Eric Anholt [Wed, 20 Jun 2012 22:41:14 +0000 (15:41 -0700)]
i965/fs: Communicate the pull constant block read parameters through fs_regs.

I wanted to add the surface index as a variable value for UBO support,
and a reg seemed like the obvious way to go.  This exposes more of the
information to CSE, which we'll probably want to apply to pull
constant loads for UBOs eventually (you might access 4 floats in a
row, each of which would produce an oword block read of the same
block).

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agoi965: Bind UBOs as surfaces like we do for pull constants.
Eric Anholt [Wed, 20 Jun 2012 19:29:29 +0000 (12:29 -0700)]
i965: Bind UBOs as surfaces like we do for pull constants.

v2: Comment fix, drop extraneous parens (review by Kenneth)

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agoi965: Add an offset argument to constant buffer setup.
Eric Anholt [Wed, 20 Jun 2012 20:03:04 +0000 (13:03 -0700)]
i965: Add an offset argument to constant buffer setup.

We'll use this for UBO surfaces.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agomesa: Add support for glUniformBlockBinding() in display lists.
Eric Anholt [Tue, 31 Jul 2012 21:28:05 +0000 (14:28 -0700)]
mesa: Add support for glUniformBlockBinding() in display lists.

Fixes piglit GL_ARB_uniform_buffer_object/dlist.

v2: Use the .ui fields instead of .i for type consistency (review by Brian
    Paul)

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agomesa: Unbind uniform buffer bindings on glDeleteBuffers().
Eric Anholt [Tue, 31 Jul 2012 19:46:25 +0000 (12:46 -0700)]
mesa: Unbind uniform buffer bindings on glDeleteBuffers().

Fixes piglit GL_ARB_uniform_buffer_object/deletebuffers.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agomesa: Default to GL 3.1's limits on uniform blocks.
Eric Anholt [Thu, 26 Jul 2012 23:56:49 +0000 (16:56 -0700)]
mesa: Default to GL 3.1's limits on uniform blocks.

The ARB spec lets you get away with the default block counting against the
blocks for combined size limits.  The core spec says you need to be able to
support the maximum size of default block *and* the maximum size of each
uniform block.  I see no reason that any driver would have a problem with
that.

Fixes gl 3.1/minmax (with an associated fix to the test)

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agoglsl: Refuse to parse uniform block declarations when UBOs aren't available.
Eric Anholt [Thu, 26 Jul 2012 20:11:05 +0000 (13:11 -0700)]
glsl: Refuse to parse uniform block declarations when UBOs aren't available.

Fixes piglit
GL_ARB_uniform_buffer_object/compiler/extension-disabled-block.frag

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agoglsl: Align GL_UNIFORM_BLOCK_DATA_SIZE according to std140 rules.
Eric Anholt [Wed, 25 Jul 2012 19:45:13 +0000 (12:45 -0700)]
glsl: Align GL_UNIFORM_BLOCK_DATA_SIZE according to std140 rules.

Fixes piglit GL_ARB_uniform_buffer_object/data-size test.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agoglsl: Only flag RowMajor on matrix-type variables.
Eric Anholt [Mon, 23 Jul 2012 21:31:42 +0000 (14:31 -0700)]
glsl: Only flag RowMajor on matrix-type variables.

We were only propagating it to the API when the variable was a matrix type,
but we were still tripping over it in lower_ubo_reference when it was set on a
vector.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agoglsl: Fix calculation of std140 offset alignment for mat2s.
Eric Anholt [Mon, 23 Jul 2012 21:11:38 +0000 (14:11 -0700)]
glsl: Fix calculation of std140 offset alignment for mat2s.

We were getting the base offset of a vec2, not of a vec2[2] like the quoted
spec text says we should.

v2: Fix swapped then/else cases.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agoglsl: Fix glGetActiveUniformsiv(GL_UNIFORM_BLOCK_INDEX).
Eric Anholt [Mon, 23 Jul 2012 18:05:11 +0000 (11:05 -0700)]
glsl: Fix glGetActiveUniformsiv(GL_UNIFORM_BLOCK_INDEX).

Previously, we were returning the index into the UniformBlocks of one of the
linked shaders, when it's supposed to be the program global index.

Fixes piglit getactiveuniformsiv-uniform_block_index.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agoir_to_mesa: Don't whack the ->location field of uniform block variables.
Eric Anholt [Fri, 20 Jul 2012 23:49:15 +0000 (16:49 -0700)]
ir_to_mesa: Don't whack the ->location field of uniform block variables.

Fixes some failures in GL_ARB_uniform_buffer_object/maxblocks.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agomesa: Make glBindBufferBase/glBindBufferRange() work on just-genned names.
Eric Anholt [Tue, 26 Jun 2012 20:17:08 +0000 (13:17 -0700)]
mesa: Make glBindBufferBase/glBindBufferRange() work on just-genned names.

In between glGenBuffers() and glBindBuffer(), the buffer object points to this
dummy buffer with a name of 0, and a glBindBufferBase() would point to that.
It seems pretty clear, given that glBindBufferBase() only cares about the
current size of the buffer at render time, that it should bind up the buffer
that you passed in instead of pointing it at this useless dummy buffer.

However, what should glBindBufferRange() do?  As of this patch, it will
promote the genned buffer to a proper buffer like it had been
glBindBuffer()ed, and then detect that the size is greater than the buffer's
current size of 0 and throw INVALID_VALUE.  It seems like the most reasonable
answer here.

Note that this also changes the behavior of these two on non-glGenBuffers() bo
names.  We haven't yet set up the error throwing for glBindBuffers() on gl
3.1+, and my assumption is that these two functions should inherit their
behavior on un-genned names from glBindBuffers().

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agoglsl: Add a lowering pass to turn complicated UBO references to vector loads.
Eric Anholt [Wed, 11 Jul 2012 15:26:31 +0000 (08:26 -0700)]
glsl: Add a lowering pass to turn complicated UBO references to vector loads.

v2: Reduce the impenetrable code in emit_ubo_loads() by 23 lines by keeping
    the ir_variable as the variable part of the offset from handle_rvalue(),
    and track the constant offsets from that with a plain old integer value,
    avoiding a bunch of temporary variables in the array and struct handling.
    Also, fix file description doxygen.
v3: Fix a row vs col typo, and fix spelling in a comment.

Reviewed-by: Eric Anholt <eric@anholt.net>
11 years agoglsl: Add a variant of the rvalue visitor for handle_rvalue() on the way down.
Eric Anholt [Fri, 20 Jul 2012 21:10:44 +0000 (14:10 -0700)]
glsl: Add a variant of the rvalue visitor for handle_rvalue() on the way down.

For the UBO lowering pass, I want to see the whole dereference chain for
replacing, not the innermost ir_dereference_variable.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agoglsl: Add a "ubo_load" expression type for fetches from UBOs.
Eric Anholt [Mon, 9 Jul 2012 22:52:53 +0000 (15:52 -0700)]
glsl: Add a "ubo_load" expression type for fetches from UBOs.

Drivers will probably want to be able to take UBO references in a
shader like:

        uniform ubo1 {
                float a;
                float b;
                float c;
                float d;
        }

        void main() {
             gl_FragColor = vec4(a, b, c, d);
        }

and generate a single aligned vec4 load out of the UBO.  For intel,
this involves recognizing the shared offset of the aligned loads and
CSEing them out.  Obviously that involves breaking things down to
loads from an offset from a particular UBO first.  Thus, the driver
doesn't want to see

variable_ref(ir_variable("a")),

and even more so does it not want to see

array_ref(record_ref(variable_ref(ir_variable("a")),
          "field1"), variable_ref(ir_variable("i"))).

where a.field1[i] is a row_major matrix.

Instead, we're going to make a lowering pass to break UBO references
down to expressions that are obvious to codegen, and amenable to
merging through CSE.

v2: Fix some partial thoughts in the ir_binop comment (review by Kenneth)

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agoglsl: Fix a reference to UniformBlocks during uniform linking.
Eric Anholt [Fri, 20 Jul 2012 23:57:22 +0000 (16:57 -0700)]
glsl: Fix a reference to UniformBlocks during uniform linking.

When converting var->location from pointing at the program's UniformBlocks to
pointing at the linked shader's UniformBlocks, I missed this change.  It
usually worked out in the end because the two lists happen to be the same in
many testcases.

Fixes a valgrind complaint on
oglconform ubo-compile.cpp advanced.std140.2stage

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agoglsl: Update the notes on adding a new expression type.
Eric Anholt [Mon, 9 Jul 2012 22:47:33 +0000 (15:47 -0700)]
glsl: Update the notes on adding a new expression type.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agomesa: Replace VersionMajor/VersionMinor with a Version field.
Eric Anholt [Thu, 26 Jul 2012 21:43:56 +0000 (14:43 -0700)]
mesa: Replace VersionMajor/VersionMinor with a Version field.

As we get into supporting GL 3.x core, we come across more and more features
of the API that depend on the version number as opposed to just the extension
list.  This will let us more sanely do version checks than "(VersionMajor == 3
&& VersionMinor >= 2) || VersionMajor >= 4".

v2: Fix a bad <= 30 check.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agointel: Fix compiler warnings from winsys msaa.
Eric Anholt [Tue, 7 Aug 2012 18:33:10 +0000 (11:33 -0700)]
intel: Fix compiler warnings from winsys msaa.

11 years agointel: Advertise multisample DRI2 configs on gen >= 6
Chad Versace [Fri, 3 Aug 2012 00:13:17 +0000 (17:13 -0700)]
intel: Advertise multisample DRI2 configs on gen >= 6

This turns on window system MSAA.

This patch changes the id of many GLX visuals and configs, but that
couldn't be prevented. I attempted to preserve the id's of extant configs
by appending the multisample configs to the end of the extant ones. But
somewhere, perhaps in the X server, the configs are reordered with
multisample configs interspersed among the singlesample ones.

Test results:
  Tested with xonotic and `glxgears -samples 1` on Ivybridge.

  No piglit regressions on Ivybridge.

  On Sandybridge, passes 68/70 of oglconform's
  winsys multisample tests.  The two failing tests are:
      multisample(advanced.pixelmap.depth)
      multisample(advanced.pixelmap.depthCopyPixels)
  These tests hang the gpu (on kernel 3.4.6) due to
  a glDrawPixels/glReadPixels pair on an MSAA depth buffer.  I don't expect
  realworld apps to do that, so I'm not too concerned about the hang.

  On Ivybridge, passes 69/70. The failing case is
  multisample(advanced.line.changeWidth).

Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
11 years agointel: Clarify intel_screen_make_configs
Chad Versace [Thu, 2 Aug 2012 21:51:47 +0000 (14:51 -0700)]
intel: Clarify intel_screen_make_configs

This function felt sloppy, so this patch cleans it up a little bit.

- Rename `color` to `i`. It is not a color value, only an iterator int.
- Move `depth_bits[0] = 0` into the non-accum loop because that is where
  it used. The accum loop later overwrites depth_bits[0].
- Rename `depth_factor` to `num_depth_stencil_bits`.
- Redefine `msaa_samples_array` as static const because it is never
  modified. Rename to `singlesample_samples`.

Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
11 years agodri: Simplify use of driConcatConfigs
Chad Versace [Thu, 2 Aug 2012 04:23:47 +0000 (21:23 -0700)]
dri: Simplify use of driConcatConfigs

If either argument to driConcatConfigs(a, b) is null or the empty list,
then simply return the other argument as the resultant list.

All callers were accomplishing that same behavior anyway. And each caller
accopmplished it with the same pattern. So this patch moves that external
pattern into the function.

Reviewed-by: <eric@anholt.net>
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
11 years agointel: Refactor creation of DRI2 configs
Chad Versace [Thu, 12 Jul 2012 21:17:22 +0000 (14:17 -0700)]
intel: Refactor creation of DRI2 configs

DRI2 configs were constructed in intelInitScreen2. That function already
does too much, so move verbatim the code for creating configs to a new
function, intel_screen_make_configs.

Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Paul Berry <stereotype441@gmail.com>
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
11 years agointel: Downsample on DRI2 flush
Chad Versace [Thu, 12 Jul 2012 20:01:26 +0000 (13:01 -0700)]
intel: Downsample on DRI2 flush

Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Paul Berry <stereotype441@gmail.com>
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
11 years agointel: Support mapping multisample miptrees
Chad Versace [Sat, 28 Jul 2012 03:42:31 +0000 (20:42 -0700)]
intel: Support mapping multisample miptrees

Add two new functions: intel_miptree_{map,unmap}_multisample, to which
intel_miptree_{map,unmap} dispatch. Only mapping flat, renderbuffer-like
miptrees are supported.

Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
11 years agointel: Refactor use of intel_miptree_map
Chad Versace [Sat, 28 Jul 2012 02:39:10 +0000 (19:39 -0700)]
intel: Refactor use of intel_miptree_map

Move the opencoded construction and destruction of intel_miptree_map into
new functions, intel_miptree_attach_map and intel_miptree_release_map.
This patch prevents code duplication in a future commit that adds support
for mapping multisample miptrees.

Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
11 years agointel: Refactor intel_miptree_map/unmap
Chad Versace [Sat, 28 Jul 2012 02:21:20 +0000 (19:21 -0700)]
intel: Refactor intel_miptree_map/unmap

Move the body of intel_miptree_map into a new function,
intel_miptree_map_singlesample. Now intel_miptree_map dispatches to the
new function. A future commit adds a multisample variant.

Ditto for intel_miptree_unmap.

Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
11 years agoi965: Mark needed downsamples for msaa winsys buffers
Chad Versace [Thu, 26 Jul 2012 23:47:35 +0000 (16:47 -0700)]
i965: Mark needed downsamples for msaa winsys buffers

Add function intel_renderbuffer_set_needs_downsample. It is a no-op
except on multisample winsys buffers shared with DRI2.

Mark the needed downsamples with the new function at two locations:
    - Immediately after drawing is complete.
    - After blitting.

Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Paul Berry <stereotype441@gmail.com>
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
11 years agointel: Define functions for up/downsampling on miptrees
Chad Versace [Thu, 12 Jul 2012 17:49:13 +0000 (10:49 -0700)]
intel: Define functions for up/downsampling on miptrees

Flesh out the stub functions intel_miptree_{up,down}sample.

Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
11 years agoi965: Add function brw_blorp_blit_miptrees
Chad Versace [Mon, 6 Aug 2012 23:10:50 +0000 (16:10 -0700)]
i965: Add function brw_blorp_blit_miptrees

Define a function, brw_blorp_blit_miptrees, that simply wraps
brw_blorp_blit_params + brw_blorp_exec with C calling conventions. This
enables intel_miptree.c, in a following commit, to perform blits with
blorp for the purpose of downsampling multisample miptrees.

Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
11 years agointel: Allocate miptree for multisample DRI2 buffers
Chad Versace [Thu, 19 Jul 2012 16:45:14 +0000 (09:45 -0700)]
intel: Allocate miptree for multisample DRI2 buffers

Immediately after obtaining, with DRI2GetBuffersWithFormat, the DRM buffer
handle for a DRI2 buffer, we wrap that DRM buffer handle with a region and
a miptree. This patch additionally allocates an accompanying multisample
miptree if the DRI2 buffer is multisampled.

Since we do not yet advertise multisample GL configs, the code for
allocating the multisample miptree is currently inactive.

This patch adds the following fields to intel_mipmap_tree:
    singlesample_mt
    needs_downsample
and the following function stubs:
    intel_miptree_downsample
    intel_miptree_upsample

Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
11 years agointel: Refactor creation of hiz and mcs miptrees
Chad Versace [Fri, 20 Jul 2012 21:56:16 +0000 (14:56 -0700)]
intel: Refactor creation of hiz and mcs miptrees

Move the logic for creating the ancillary hiz and mcs miptress for winsys
and non-texture renderbuffers from intel_alloc_renderbuffer_storage to
intel_miptree_create_for_renderbuffer. Let's try to isolate complex
miptree logic to intel_mipmap_tree.c.

Without this refactor, code duplication would be required along the
intel_process_dri2_buffer codepath in order to create the mcs miptree.

Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Paul Berry <stereotype441@gmail.com>
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
11 years agointel: Set num samples for winsys renderbuffers
Chad Versace [Wed, 11 Jul 2012 22:10:49 +0000 (15:10 -0700)]
intel: Set num samples for winsys renderbuffers

Add a new param, num_samples, to intel_create_renderbuffer and
intel_create_private_renderbuffer.

No multisample GL config is yet advertised, so the value of num_samples is
currently 0.  For server-owned winsys buffers, gl_renderbuffer::NumSamples
is not yet used.

Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Paul Berry <stereotype441@gmail.com> (v1)
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
11 years agointel: Refactor quantize_num_samples
Chad Versace [Wed, 11 Jul 2012 21:52:53 +0000 (14:52 -0700)]
intel: Refactor quantize_num_samples

Rename quantize_num_samples to intel_quantize_num_samples and change the
first param from struct intel_context* to struct intel_screen*. The
function will later be used by intelCreateBuffer, which is not bound to
any context but is bound to a screen.

Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Paul Berry <stereotype441@gmail.com> (v1)
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
11 years agointel: Update stale comment for intel_miptree_slice::map
Chad Versace [Wed, 1 Aug 2012 19:12:52 +0000 (12:12 -0700)]
intel: Update stale comment for intel_miptree_slice::map

The comment referred to intel_tex_image_map/unmap, but should more
accurately refer to intel_miptree_map/unmap.

Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
11 years agoi965: add more Haswell PCI IDs
Paulo Zanoni [Mon, 6 Aug 2012 17:58:08 +0000 (14:58 -0300)]
i965: add more Haswell PCI IDs

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@gmail.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agoegl: remove redundant PFNEGLQUERYSTREAMTIMEKHRPROC typedef
Brian Paul [Tue, 7 Aug 2012 03:11:32 +0000 (21:11 -0600)]
egl: remove redundant PFNEGLQUERYSTREAMTIMEKHRPROC typedef

This typedef is present earlier in the header and isn't part of the
EGL_KHR_stream_cross_process_fd extension.  Looks like a Khronos glitch.

11 years agosoftpipe: fix loop limit for tex_cache[] array
Brian Paul [Tue, 7 Aug 2012 14:00:09 +0000 (08:00 -0600)]
softpipe: fix loop limit for tex_cache[] array

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

11 years agost/mesa: Fix a potential memory leak in get_mesa_program.
Vinson Lee [Sat, 4 Aug 2012 21:04:03 +0000 (14:04 -0700)]
st/mesa: Fix a potential memory leak in get_mesa_program.

Fixes resource leak defect reported by Coverity.

Signed-off-by: Vinson Lee <vlee@freedesktop.org>
Reviewed-by: José Fonseca <jfonseca@vmware.com>
11 years agogallivm: Add constructor for raw_debug_ostream.
Vinson Lee [Sat, 4 Aug 2012 21:37:33 +0000 (14:37 -0700)]
gallivm: Add constructor for raw_debug_ostream.

Fixes uninitialized scalar field defect reported by Coverity.

Signed-off-by: Vinson Lee <vlee@freedesktop.org>
Reviewed-by: José Fonseca <jfonseca@vmware.com>
11 years agodocs: update ARB_debug_output status to DONE
Brian Paul [Mon, 6 Aug 2012 22:48:00 +0000 (16:48 -0600)]
docs: update ARB_debug_output status to DONE

11 years agodocs: Add OpenGL 4.3 requirements
Jason Wood [Mon, 6 Aug 2012 19:47:27 +0000 (13:47 -0600)]
docs: Add OpenGL 4.3 requirements

v2: Note that GLSL 4.3 has not been started, and that
ARB_compute_shader has been started in Gallium drivers.

Signed-off-by: Jason Wood <sandain@hotmail.com>
Signed-off-by: Brian Paul <brianp@vmware.com>
11 years agoegl: Import eglext.h version 14
Ian Romanick [Thu, 19 Jul 2012 17:59:49 +0000 (10:59 -0700)]
egl: Import eglext.h version 14

This is necessary for EGL_KHR_create_context work (including writing
piglit tests).

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Chad Versace <chad.versace@linux.intel.com>
11 years agoegl: Replace KHR_surfaceless_* extensions with KHR_surfaceless_context
Ian Romanick [Wed, 18 Jul 2012 16:38:34 +0000 (09:38 -0700)]
egl: Replace KHR_surfaceless_* extensions with KHR_surfaceless_context

KHR extension name is reserved for Khronos ratified extensions, and there is
no such thing as EGL_KHR_surfaceless_{gles1,gles2,opengl}.  Replace these
three extensions with EGL_KHR_surfaceless_context since that extension
actually exists.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kristian Høgsberg <krh@bitplanet.net>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Chad Versace <chad.versace@linux.intel.com>
11 years agoegl_dri2: Refactor dereference of dri2_ctx_shared
Ian Romanick [Wed, 18 Jul 2012 21:37:28 +0000 (14:37 -0700)]
egl_dri2: Refactor dereference of dri2_ctx_shared

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kristian Høgsberg <krh@bitplanet.net>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Chad Versace <chad.versace@linux.intel.com>
11 years agoegl_dri2: Remove swrast version >= 2 checks
Ian Romanick [Wed, 18 Jul 2012 17:08:49 +0000 (10:08 -0700)]
egl_dri2: Remove swrast version >= 2 checks

Since support for swrast version 2 was added (f55d027a), it has also been
required.  In swrast_driver_extensions, version 2 is set for __DRI_SWRAST
extension.  Remove the spurious version checks sprinked through the code.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Cc: Kristian Høgsberg <krh@bitplanet.net>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Chad Versace <chad.versace@linux.intel.com>
11 years agodri2: Fix bug in attribute handling for non-desktop OpenGL contexts
Ian Romanick [Wed, 18 Jul 2012 21:26:24 +0000 (14:26 -0700)]
dri2: Fix bug in attribute handling for non-desktop OpenGL contexts

Previously an error would be generated if any attributes were specified when
creating a non-desktop OpenGL context.  This was a mistake, and it will
prevent old drivers from working with new EGL libraries that add support for
the createContextAttribs interface.  Instead, match the behavior of
EGL_KHR_create_context: allow versions that make sense, reject non-zero flags.

NOTE: This is a candidate for the 8.0 branch.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Cc: Kristian Høgsberg <krh@bitplanet.net>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Chad Versace <chad.versace@linux.intel.com>
11 years agodocs: update piglit url
Andreas Boll [Mon, 6 Aug 2012 19:38:28 +0000 (21:38 +0200)]
docs: update piglit url

Signed-off-by: Brian Paul <brianp@vmware.com>
11 years agodocs/helpwanted: add r600g and i915g todo lists
Andreas Boll [Mon, 6 Aug 2012 19:38:27 +0000 (21:38 +0200)]
docs/helpwanted: add r600g and i915g todo lists

Signed-off-by: Brian Paul <brianp@vmware.com>
11 years agoi965: Allocate dummy slots for point sprites before computing VUE map.
Kenneth Graunke [Sun, 5 Aug 2012 09:30:38 +0000 (02:30 -0700)]
i965: Allocate dummy slots for point sprites before computing VUE map.

Commit f0cecd43d6b6d moved the VUE map computation to be only once, at
VS compile time.  However, it did so in slightly the wrong place: it
made the one call to brw_vue_compute_map happen right before the
allocation of dummy slots for replaced point sprite coordinates, causing
a different VUE map to be generated (at least on Ironlake).

Fixes a regression in Piglit's point-sprite test on Ironlake.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=46489
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
11 years agoi965/vs: Don't clobber sampler message MRFs with subexpressions.
Kenneth Graunke [Sun, 5 Aug 2012 04:28:23 +0000 (21:28 -0700)]
i965/vs: Don't clobber sampler message MRFs with subexpressions.

See the preceding commit for a description of the problem.

NOTE: This is a candidate for stable release branches.

v2: Use a separate dPdx variable rather than reusing the lod src_reg.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=52129
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
11 years agoi965/fs: Don't clobber sampler message MRFs with subexpressions.
Kenneth Graunke [Sun, 5 Aug 2012 03:55:21 +0000 (20:55 -0700)]
i965/fs: Don't clobber sampler message MRFs with subexpressions.

Consider a texture call such as:

   textureLod(s, coordinate, log2(...))

First, we begin setting up the sampler message by loading the texture
coordinates into MRFs, starting with m2.  Then, we realize we need the
LOD, and go to compute it with:

   ir->lod_info.lod->accept(this);

On Gen4-5, this will generate a SEND instruction to compute log2(),
loading the operand into m2, and clobbering our texcoord.

Similar issues exist on Gen6+.  For example, nested texture calls:

  textureLod(s1, c1, texture(s2, c2).x)

Any texturing call where evaluating the subexpression trees for LOD or
shadow comparitor would generate SEND instructions could potentially
break.  In some cases (like register spilling), we get lucky and avoid
the issue by using non-overlapping MRF regions.  But we shouldn't count
on that.

Fixes four Piglit test regressions on Gen4-5:
- glsl-fs-shadow2DGradARB-{01,04,07,cumulative}

NOTE: This is a candidate for stable release branches.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=52129
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>