mesa.git
12 years agobuild/mapi: More killing of TOP in favour of top_srcdir
Christopher James Halse Rogers [Thu, 19 Jul 2012 02:30:11 +0000 (12:30 +1000)]
build/mapi: More killing of TOP in favour of top_srcdir

Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Christopher James Halse Rogers <christopher.halse.rogers@canonical.com>
12 years agobuild/glsl: fix location of generated files.
Christopher James Halse Rogers [Thu, 19 Jul 2012 02:30:10 +0000 (12:30 +1000)]
build/glsl: fix location of generated files.

Like in src/mesa, use GLSL_BUILDDIR/GLSL_SRCDIR to unambiguously
distinguish between in-tree and generated files.

Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Christopher James Halse Rogers <christopher.halse.rogers@canonical.com>
12 years agobuild/glapi: fix includes for generated files
Christopher James Halse Rogers [Thu, 19 Jul 2012 02:30:09 +0000 (12:30 +1000)]
build/glapi: fix includes for generated files

Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Christopher James Halse Rogers <christopher.halse.rogers@canonical.com>
12 years agobuild: fix out of tree generation of glapi_mapi_tmp.h
Christopher James Halse Rogers [Thu, 19 Jul 2012 02:30:08 +0000 (12:30 +1000)]
build: fix out of tree generation of glapi_mapi_tmp.h

Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Christopher James Halse Rogers <christopher.halse.rogers@canonical.com>
12 years agobuild/glx: fix include paths for out-of-tree builds
Christopher James Halse Rogers [Thu, 19 Jul 2012 02:30:07 +0000 (12:30 +1000)]
build/glx: fix include paths for out-of-tree builds

Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Christopher James Halse Rogers <christopher.halse.rogers@canonical.com>
12 years agobuild: fix location of generated files in src/mesa (v4)
Christopher James Halse Rogers [Thu, 19 Jul 2012 02:30:06 +0000 (12:30 +1000)]
build: fix location of generated files in src/mesa (v4)

Also fix include paths for the generated headers.

v2: Switch to using self-explanatory BUILDDIR/SRCDIR defined from
    top_builddir/top_srcdir rather than the ambiguous TOP.
v3: Add both top_builddir and top_srcdir to include flags for mesa asm.
    These rely on both in-tree and build-time-generated includes.
v4: Rebased on top of 948c8f502a.

Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Signed-off-by: Christopher James Halse Rogers <christopher.halse.rogers@canonical.com>
Signed-off-by: Matt Turner <mattst88@gmail.com>
12 years agointel: Reserve enough space to finish occlusion queries on Gen6.
Kenneth Graunke [Fri, 10 Aug 2012 17:26:04 +0000 (10:26 -0700)]
intel: Reserve enough space to finish occlusion queries on Gen6.

After realizing that brw_finish_batch emitted some final PIPE_CONTROLs
to record occlusion queries, Chris noted that we probably hadn't
reserved enough space to actually emit them.

Reserving a full 60 bytes seems a bit harsh, since we only need that
much if occlusion queries are actually active.  Plus, 28 bytes would be
sufficient for Gen7, and 24 for Gen4-5.

We could optimize this in the future, but it doesn't seem too critical.

NOTE: This is a candidate for stable release branches.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=53311
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Eric Anholt <eric@anholt.net>
12 years agointel: Move finish_batch() call before MI_BATCH_BUFFER_END and padding.
Kenneth Graunke [Fri, 10 Aug 2012 17:26:03 +0000 (10:26 -0700)]
intel: Move finish_batch() call before MI_BATCH_BUFFER_END and padding.

On Gen4+, brw_finish_batch() calls brw_emit_query_end(), which emits
some extra PIPE_CONTROLs to capture the current occlusion query data.
Unfortunately, it was being called *after* _intel_batchbuffer_flush
added the MI_BATCH_BUFFER_END, meaning those PIPE_CONTROLs didn't get
inside the batch.

Not only does this likely cause bogus occlusion query values, it can
also cause crashes: with the recent change to use 64-bit depth count
writes on Gen6+, we started emitting an odd-length PIPE_CONTROL, which
happened after the MI_NOOP padding.  This resulted in an odd-length
batch buffer, which resulted in execbuf2 returning -EINVAL and the
application dying with an intel_do_flush_locked failure.

On older generations, finish_batch() doesn't emit any state, so this
change shouldn't have any effect.

Huge thanks to Chris Wilson for helping me figure this out.

NOTE: This is a candidate for stable release branches.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=53311
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Eric Anholt <eric@anholt.net>
12 years agoi965: Add perf debug for stalls during shader compiles.
Eric Anholt [Tue, 7 Aug 2012 17:05:38 +0000 (10:05 -0700)]
i965: Add perf debug for stalls during shader compiles.

v2: fix bad comment from before I gave up and decided to just use doubles.

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agoi965: Add performance debug for when the state cache gets nuked.
Eric Anholt [Thu, 12 Jul 2012 21:05:29 +0000 (14:05 -0700)]
i965: Add performance debug for when the state cache gets nuked.

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agoi965: Add performance debug for shader recompiles.
Eric Anholt [Thu, 12 Jul 2012 20:19:53 +0000 (13:19 -0700)]
i965: Add performance debug for shader recompiles.

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agoi965: Add performance debug for fast clear fallbacks.
Eric Anholt [Thu, 12 Jul 2012 20:14:42 +0000 (13:14 -0700)]
i965: Add performance debug for fast clear fallbacks.

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agointel: Add performance debug for some common GPU stalls.
Eric Anholt [Thu, 12 Jul 2012 20:01:49 +0000 (13:01 -0700)]
intel: Add performance debug for some common GPU stalls.

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agoi965: Add performance debug for register spilling.
Eric Anholt [Thu, 12 Jul 2012 20:08:20 +0000 (13:08 -0700)]
i965: Add performance debug for register spilling.

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agoi965: Add INTEL_DEBUG=perf for failure to compile 16-wide shaders.
Eric Anholt [Thu, 12 Jul 2012 19:48:58 +0000 (12:48 -0700)]
i965: Add INTEL_DEBUG=perf for failure to compile 16-wide shaders.

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agointel: Rename INTEL_DEBUG=fall to INTEL_DEBUG=perf.
Eric Anholt [Thu, 12 Jul 2012 19:35:19 +0000 (12:35 -0700)]
intel: Rename INTEL_DEBUG=fall to INTEL_DEBUG=perf.

I want to introduce some more debug output for performance surprises that
includes fallbacks, but aren't necessarily software rasterization.  Leave
INTEL_DEBUG=fall in place for those that have used that flag before.

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agometa: texture rectangle textures may not have mipmaps
Pauli Nieminen [Tue, 12 Jun 2012 18:38:59 +0000 (21:38 +0300)]
meta: texture rectangle textures may not have mipmaps

Avoid INVALID_OPERATION error if decompressing rectangle texture.
Setting mipmap level limits for those textures is error that must not be
hit by meta code to mislead user.

[v3/Kayden]: Resolve conflicts due to Eric picking a subset of Pauli's
original changes.

Signed-off-by: Pauli Nieminen <pauli.nieminen@linux.intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agometa: Use sampler object for mipmap generation
Pauli Nieminen [Tue, 12 Jun 2012 18:38:58 +0000 (21:38 +0300)]
meta: Use sampler object for mipmap generation

Sampler objects are perfect for meta operations.Sampler object
is separate state object that shadows the sampling state in texture
object. With sampler object mipmap can maintain same sampling state for
all subsequent generation requests.

Signed-off-by: Pauli Nieminen <pauli.nieminen@linux.intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agomesa/samplerobj: Avoid crash in sampler query if texture unit is disabled
Pauli Nieminen [Tue, 12 Jun 2012 18:38:48 +0000 (21:38 +0300)]
mesa/samplerobj: Avoid crash in sampler query if texture unit is disabled

Sampler queries are so far made only for enabled texture unit. But if
any code would query sampler before checking texture unit state that
would result to NULL deference.

Making the inline helper easier to use with NULL check makes a lot sense
because compiler is likely to combine the checks for the current texture.

Signed-off-by: Pauli Nieminen <pauli.nieminen@linux.intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agomesa: Remove unnecessary parameters CompressedTexImage
Pauli Nieminen [Tue, 12 Jun 2012 18:38:45 +0000 (21:38 +0300)]
mesa: Remove unnecessary parameters CompressedTexImage

In tune with previous patches. Again there is duplication of information
in function parameters that is good to remove.

Signed-off-by: Pauli Nieminen <pauli.nieminen@linux.intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agomesa: Remove unnecessary parameters from AllocTextureImageBuffer
Pauli Nieminen [Tue, 12 Jun 2012 18:38:44 +0000 (21:38 +0300)]
mesa: Remove unnecessary parameters from AllocTextureImageBuffer

Size and format information is always stored in gl_texture_image
structure. That makes it preferable to remove duplicate information from
parameters to make interface easier to understand.

Signed-off-by: Pauli Nieminen <pauli.nieminen@linux.intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agomesa: Remove unnecessary parameters from TexImage
Pauli Nieminen [Tue, 12 Jun 2012 18:38:43 +0000 (21:38 +0300)]
mesa: Remove unnecessary parameters from TexImage

gl_texture_image structure always holds size and internal format before
TexImage driver hook is called. Those passing same information in
function parameters only duplicates information making the interface
harder to understand.

Signed-off-by: Pauli Nieminen <pauli.nieminen@linux.intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agoconfigure: Check xcb version when X11 pkgconfig exists
Tom Stellard [Fri, 13 Jul 2012 13:46:23 +0000 (13:46 +0000)]
configure: Check xcb version when X11 pkgconfig exists

Commit 6882381a2efbdf06b7002d11468c94b9964c2bc8 added a dependency on a
newer version of xcb, but the version check wasn't added in all the
necessary places.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 years agogbm: Fix build without gallium_drm_loader
Chí-Thanh Christopher Nguyễn [Thu, 9 Aug 2012 15:42:24 +0000 (17:42 +0200)]
gbm: Fix build without gallium_drm_loader

pipe_loader_drm_probe_fd only exists if HAVE_PIPE_LOADER_DRM is defined.
Patch improved as suggested by Vadim A. Misbakh-Soloviov.

Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=52962
12 years agoradeonsi: move drawing into new state handling
Christian König [Fri, 3 Aug 2012 08:26:01 +0000 (10:26 +0200)]
radeonsi: move drawing into new state handling

Signed-off-by: Christian König <deathsimple@vodafone.de>
12 years agoradeonsi: move sync handling into new state handler
Christian König [Thu, 2 Aug 2012 14:15:40 +0000 (16:15 +0200)]
radeonsi: move sync handling into new state handler

So we can remove all the old atom handling.

Signed-off-by: Christian König <deathsimple@vodafone.de>
12 years agoradeonsi: separate and disable streamout for now
Christian König [Thu, 2 Aug 2012 13:21:02 +0000 (15:21 +0200)]
radeonsi: separate and disable streamout for now

I have my doubts that this code still works on SI.

Signed-off-by: Christian König <deathsimple@vodafone.de>
12 years agoradeonsi: remove ps_partial_flush
Christian König [Thu, 2 Aug 2012 13:06:59 +0000 (15:06 +0200)]
radeonsi: remove ps_partial_flush

Not needed any more.

Signed-off-by: Christian König <deathsimple@vodafone.de>
12 years agoradeonsi: remove r6xx_flush_and_inv atom
Christian König [Thu, 2 Aug 2012 12:52:55 +0000 (14:52 +0200)]
radeonsi: remove r6xx_flush_and_inv atom

It is not used any more.

Signed-off-by: Christian König <deathsimple@vodafone.de>
12 years agoradeonsi: move init state to new state handling
Christian König [Thu, 2 Aug 2012 12:43:23 +0000 (14:43 +0200)]
radeonsi: move init state to new state handling

Signed-off-by: Christian König <deathsimple@vodafone.de>
12 years agoradeonsi: add support for PKT3 cmds to new state handling
Christian König [Thu, 2 Aug 2012 12:30:06 +0000 (14:30 +0200)]
radeonsi: add support for PKT3 cmds to new state handling

Signed-off-by: Christian König <deathsimple@vodafone.de>
12 years agoradeonsi: cleanup shader headers
Christian König [Thu, 2 Aug 2012 10:14:59 +0000 (12:14 +0200)]
radeonsi: cleanup shader headers

Signed-off-by: Christian König <deathsimple@vodafone.de>
12 years agoRevert "mesa: Remove C++11 narrowing warnings"
Chad Versace [Fri, 10 Aug 2012 21:02:03 +0000 (14:02 -0700)]
Revert "mesa: Remove C++11 narrowing warnings"

This reverts commit 9f5a5d541d5c1ff2e440791ba8ff44d0233daeb4.

Fixes the following build error on GCC 4.2.3:
  cc1plus: error: unrecognized command line option "-Wno-narrowing"
The GCC Manual incorrectly stated that commit 9f5a5d54 woulde be safe for
old versions of GCC.

Reported-by: Andy Furniss <andyqos@ukfsn.org>
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
12 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>
12 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

12 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>
12 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>
12 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>
12 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>
12 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>
12 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>
12 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>
12 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>
12 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>
12 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.

12 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>
12 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>
12 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>
12 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>
12 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>
12 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>
12 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.

12 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.

12 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.

12 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>
12 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>
12 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>
12 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>
12 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>
12 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>
12 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>
12 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>
12 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>
12 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>
12 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>
12 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>
12 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>
12 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>
12 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>
12 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>
12 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>
12 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>
12 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>
12 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>
12 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>
12 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

12 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>
12 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>
12 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>
12 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>
12 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>
12 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>
12 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>
12 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>
12 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>
12 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>
12 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>
12 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>
12 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>
12 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>
12 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>
12 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>
12 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>
12 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>
12 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>
12 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>
12 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>
12 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>
12 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>
12 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.