mesa.git
13 years agollvmpipe: Also reset the state in lp_scene_bin_reset
José Fonseca [Thu, 29 Sep 2011 09:54:29 +0000 (10:54 +0100)]
llvmpipe: Also reset the state in lp_scene_bin_reset

Prevents segfaults when a opaque tile is found without state change.

13 years agollvmpipe: Prevent segfault during fs variant cache shrinking.
José Fonseca [Wed, 28 Sep 2011 19:23:13 +0000 (20:23 +0100)]
llvmpipe: Prevent segfault during fs variant cache shrinking.

13 years agotools/trace: Dump NULL literally.
José Fonseca [Wed, 28 Sep 2011 19:25:40 +0000 (20:25 +0100)]
tools/trace: Dump NULL literally.

Instead of None.

13 years agost/mesa: remove some old GetTexImage() code
Brian Paul [Thu, 29 Sep 2011 15:18:20 +0000 (09:18 -0600)]
st/mesa: remove some old GetTexImage() code

We can use the core Mesa code for glGetTexImage() since it handles the
image mapping/unmapping now.  We'll keep the decompress_with_blit() path
in the hope that it's faster than core Mesa's software decompression code.

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

13 years agowinsys/radeon: remove redundant member radeon_bo::size
Marek Olšák [Tue, 27 Sep 2011 02:03:07 +0000 (04:03 +0200)]
winsys/radeon: remove redundant member radeon_bo::size

It's part of pb_buffer already.

13 years agowinsys/radeon: simplify updating GEM domains for relocations
Marek Olšák [Tue, 27 Sep 2011 01:10:33 +0000 (03:10 +0200)]
winsys/radeon: simplify updating GEM domains for relocations

13 years agowinsys/radeon: simplify passing GEM domains through to GEM_CREATE
Marek Olšák [Tue, 27 Sep 2011 00:55:30 +0000 (02:55 +0200)]
winsys/radeon: simplify passing GEM domains through to GEM_CREATE

13 years agor300g: remove useless variables in some structures
Marek Olšák [Tue, 27 Sep 2011 00:04:02 +0000 (02:04 +0200)]
r300g: remove useless variables in some structures

13 years agor300g: simplify the immd_is_good_idea function
Marek Olšák [Mon, 26 Sep 2011 21:46:42 +0000 (23:46 +0200)]
r300g: simplify the immd_is_good_idea function

13 years agoconfigure.ac: unduplicate gallium directories
Marek Olšák [Tue, 27 Sep 2011 14:51:05 +0000 (16:51 +0200)]
configure.ac: unduplicate gallium directories

It may happen when two drivers share one winsys.

13 years agor600g: convert if (query->type) into switch statements
Marek Olšák [Tue, 27 Sep 2011 22:11:57 +0000 (00:11 +0200)]
r600g: convert if (query->type) into switch statements

13 years agogallium/docs: update d3d11ddi.txt
Marek Olšák [Tue, 27 Sep 2011 19:30:13 +0000 (21:30 +0200)]
gallium/docs: update d3d11ddi.txt

13 years agost/mesa: don't compute index buffer bounds for per-instance data
Marek Olšák [Sun, 25 Sep 2011 12:19:46 +0000 (14:19 +0200)]
st/mesa: don't compute index buffer bounds for per-instance data

13 years agoglsl 1.30: Fix numerical instabilities in asinh
Paul Berry [Mon, 26 Sep 2011 22:51:39 +0000 (15:51 -0700)]
glsl 1.30: Fix numerical instabilities in asinh

The formula we were previously using for asinh:

    asinh x = ln(x + sqrt(x * x + 1))

is numerically unstable: when x is a large negative value, the quantity

    x + sqrt(x * x + 1)

is a small positive value (on the order of 1/(2|x|)).  Since the
logarithm function is very sensitive in this range, any error in the
computation of the square root manifests as a large error in the
result.

This patch changes to the equivalent formula:

    asinh x = sign(x) * ln(abs(x) + sqrt(x * x + 1))

which is only slightly more expensive to compute, and is numerically
stable for all x.

Fixes piglit tests
spec/glsl-1.30/execution/built-in-functions/[fv]s-asinh-*.

Reviewed-by: Chad Versace <chad@chad-versace.us>
Acked-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agomesa: fix signed/unsigned sscanf() warning in _mesa_override_glsl_version()
Brian Paul [Wed, 28 Sep 2011 19:16:45 +0000 (13:16 -0600)]
mesa: fix signed/unsigned sscanf() warning in _mesa_override_glsl_version()

13 years agost/mesa: include version.h and fix _mesa_override_glsl_version() call
Brian Paul [Wed, 28 Sep 2011 19:16:25 +0000 (13:16 -0600)]
st/mesa: include version.h and fix _mesa_override_glsl_version() call

13 years agoglsl: Add support for constant expression evaluation on trunc().
Eric Anholt [Tue, 27 Sep 2011 21:50:45 +0000 (14:50 -0700)]
glsl: Add support for constant expression evaluation on trunc().

Fixes the glsl-1.30/compiler/built-in-functions/trunc-* tests under 1.30.

Reviewed-by: Chad Versace <chad@chad-versace.us>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
13 years agoi965/vs: Add support for bit-shift operations.
Eric Anholt [Tue, 27 Sep 2011 21:48:56 +0000 (14:48 -0700)]
i965/vs: Add support for bit-shift operations.

Reviewed-by: Chad Versace <chad@chad-versace.us>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
13 years agomesa: Add missing _mesa_sizeof_glsl_type() for UNSIGNED_INT.
Eric Anholt [Tue, 27 Sep 2011 21:36:07 +0000 (14:36 -0700)]
mesa: Add missing _mesa_sizeof_glsl_type() for UNSIGNED_INT.

Somehow we managed to get the unsigned int vectors, but not scalar.
Fixes _mesa_problem complaints in piglit's uint tests.

Reviewed-by: Chad Versace <chad@chad-versace.us>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
13 years agoi965/fs: Add support for bit-shift operations.
Eric Anholt [Tue, 27 Sep 2011 21:32:42 +0000 (14:32 -0700)]
i965/fs: Add support for bit-shift operations.

Reviewed-by: Chad Versace <chad@chad-versace.us>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
13 years agoglsl: Fix assertion checking types of constant bitshift expressions.
Eric Anholt [Tue, 27 Sep 2011 21:27:58 +0000 (14:27 -0700)]
glsl: Fix assertion checking types of constant bitshift expressions.

Bitshifts are one of the rare places that GLSL allows mixed base types
without an implicit conversion occurring.

Reviewed-by: Chad Versace <chad@chad-versace.us>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
13 years agoir_to_mesa: Don't assertion fail on remaining GLSL 1.30 ops.
Eric Anholt [Tue, 27 Sep 2011 21:26:02 +0000 (14:26 -0700)]
ir_to_mesa: Don't assertion fail on remaining GLSL 1.30 ops.

For hardware drivers, we only have ir_to_mesa called for the purposes
of potential swrast fallbacks (basically never on a 1.30 driver),
which we don't really care about.  This will allow 1.30 to be
implemented without rewriting swrast for it.

Reviewed-by: Chad Versace <chad@chad-versace.us>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
13 years agoi965: don't intepolate clip distances on pre-GEN6.
Paul Berry [Sat, 24 Sep 2011 04:55:20 +0000 (21:55 -0700)]
i965: don't intepolate clip distances on pre-GEN6.

On pre-GEN6 chips, the VUE slots set aside for clip distance aren't
actually used, so there is no reason for the clipper to waste time
interpolating them.

When commit 62bad54727690bff5ed42a74272e7822fd36cdb6 changed the enum
value used to represent these VUE slots, that caused the clipper to
start interpolating them as an accidental side effect.  This patch
reverts to the old clipper behavior.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
13 years agoi965 new VS: Fix bugs in pre-GEN6 psiz/flags computation
Paul Berry [Sat, 24 Sep 2011 04:36:17 +0000 (21:36 -0700)]
i965 new VS: Fix bugs in pre-GEN6 psiz/flags computation

This patch corrects two errors in the computation of the psiz/flags
VUE slot on pre-GEN5 when using the new VS backend:

- The clip flags (which should be stored in the w component of the
  first VUE slot) were being accidentally duplicated in all other
  components of that VUE slot, causing partially clipped triangles to
  sometimes disappear completely.

- The OR instruction wasn't being stored in "inst", causing the
  BRW_PREDICATE_NORMAL flag to be applied to the wrong instruction.

This patch fixes regressions in clipping behavior when using shaders
on GEN4-5.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
13 years agoi965 new VS: Fix src_reg(uint32_t) constructor.
Paul Berry [Sat, 24 Sep 2011 04:35:18 +0000 (21:35 -0700)]
i965 new VS: Fix src_reg(uint32_t) constructor.

This constructor was storing its argument in the wrong field of the
"imm" enum, resulting in it being converted to a float when it should
have remained an unsigned integer.  This was preventing clipping from
working properly on pre-GEN6.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
13 years agoi965 new VS: don't share clip plane constants in pre-GEN6
Paul Berry [Sat, 24 Sep 2011 04:33:50 +0000 (21:33 -0700)]
i965 new VS: don't share clip plane constants in pre-GEN6

In pre-GEN6, when using clip planes, both the vertex shader and the
clipper need access to the client-supplied clip planes, since the
vertex shader needs them to set the clip flags, and the clipper needs
them to determine where to insert new vertices.

With the old VS backend, we used a clever optimization to avoid
placing duplicate copies of these planes in the CURBE: we used the
same block of memory for both the clipper and vertex shader constants,
with the clip planes at the front of it, and then we instructed the
clipper to read just the initial part of this block containing the
clip planes.

This optimization was tricky, of dubious value, and not completely
working in the new VS backend, so I've removed it.  Now, when using
the new VS backend, separate parts of the CURBE are used for the
clipper and the vertex shader.  Note that this doesn't affect the
number of push constants available to the vertex shader, it simply
causes the CURBE to occupy a few more bytes of URB memory.

The old VS backend is unaffected.  GEN6+, which does clipping entirely
in hardware, is also unaffected.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
13 years agoi965: Fix a hardcoded user clip plane count.
Paul Berry [Sat, 24 Sep 2011 04:27:00 +0000 (21:27 -0700)]
i965: Fix a hardcoded user clip plane count.

Now that i965 supports 8 clip planes instead of 6, the size of the
brw_vs_compile::userplane array needs to be increased to 8.  Changed
the array size to MAX_CLIP_PLANES so that if the number changes again
in the future, this array size won't be missed.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
13 years agoi965: allow for nonconsecutive elements of gl_ClipDistance to be enabled.
Paul Berry [Tue, 20 Sep 2011 23:43:06 +0000 (16:43 -0700)]
i965: allow for nonconsecutive elements of gl_ClipDistance to be enabled.

When using user-defined clipping planes, the i965 driver compacts the
array of clipping planes so that disabled clipping planes do not
appear in it--this saves precious push constant space and makes it
easier to generate the pre-GEN6 clip program.  As a result, when
enabling clipping planes in GEN6+ hardware, we always enable clipping
planes 0 through n-1 (where n is the number of clipping planes
enabled), regardless of which clipping planes the user actually
requested.

However, we can't do this when using gl_ClipDistance, because it would
be prohibitively complex to compact the gl_ClipDistance array inside
the user-supplied vertex shader.  So, when enabling clipping planes in
GEN6+ hardware, if gl_ClipDistance is in use, we need to pass the
user-supplied enable flags directly through to the hardware rather
than just enabling the first n planes.

Fixes Piglit test vs-clip-distance-enables.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
13 years agoi965: Use 4 bits to store nr_userclip in brw_clip.h.
Paul Berry [Tue, 20 Sep 2011 23:20:32 +0000 (16:20 -0700)]
i965: Use 4 bits to store nr_userclip in brw_clip.h.

Since the i965 driver supports 8 clipping planes now, we need 4 bits
to store the number of user clipping planes, not 3.

In theory this isn't strictly necessary, since brw_clip.h is only used
on pre-GEN6, and pre-GEN6 only advertises support for 6 clipping
planes, but it seems wise to err on the safe side.

In the process I removed the pad0 element of struct
brw_clip_prog_key--it doesn't seem necessary because the compiler
automatically inserts padding if needed.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
13 years agointel: Remove unused function get_glsl_version()
Chad Versace [Tue, 27 Sep 2011 20:56:49 +0000 (13:56 -0700)]
intel: Remove unused function get_glsl_version()

It was replaced by _mesa_override_glsl_version().

Reviewed-by: Dave Airlie <airlied@gmail.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Signed-off-by: Chad Versace <chad@chad-versace.us>
13 years agomesa: Allow overriding GLSL version with environment variable
Chad Versace [Tue, 27 Sep 2011 20:53:11 +0000 (13:53 -0700)]
mesa: Allow overriding GLSL version with environment variable

Override the context's GLSL version if the environment variable
MESA_GLSL_VERSION_OVERRIDE is set. Valid values for
MESA_GLSL_VERSION_OVERRIDE are integers, such as "130".

MESA_GLSL_VERSION_OVERRIDE has the same behavior as INTEL_GLSL_VERSION,
except that it applies to all drivers, not just Intel's. Since the former
supercedes the latter, this patch disables the latter.

Reviewed-by: Dave Airlie <airlied@gmail.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Signed-off-by: Chad Versace <chad@chad-versace.us>
13 years agost/mesa: substitute argument to guess_base_level_size() call
Brian Paul [Wed, 28 Sep 2011 16:37:22 +0000 (10:37 -0600)]
st/mesa: substitute argument to guess_base_level_size() call

stObj->base.BaseLevel and firstImage->base.Level have the same value
but the later looks more consistent in the function call.

13 years agomesa: fix signed/unsigned warning in sscanf()
Brian Paul [Wed, 28 Sep 2011 16:09:56 +0000 (10:09 -0600)]
mesa: fix signed/unsigned warning in sscanf()

13 years agoscons: insert 'git-' into MESA_GIT_SHA1 string
Brian Paul [Wed, 28 Sep 2011 15:51:36 +0000 (09:51 -0600)]
scons: insert 'git-' into MESA_GIT_SHA1 string

To match makefile build.

13 years agoscons: fix write_git_sha1_h_file() issue on Windows
Brian Paul [Wed, 28 Sep 2011 15:04:03 +0000 (09:04 -0600)]
scons: fix write_git_sha1_h_file() issue on Windows

Unlike on Unix, os.rename(src, dst) will fail on Windows if the dst file
already exists.  Remove it first.

13 years agod3d1x: propagate DepthBiasClamp to rasterizer cso
Christoph Bumiller [Sat, 24 Sep 2011 11:27:08 +0000 (13:27 +0200)]
d3d1x: propagate DepthBiasClamp to rasterizer cso

13 years agod3d1x: fix uninitialized const color union black
Christoph Bumiller [Sat, 24 Sep 2011 13:37:32 +0000 (15:37 +0200)]
d3d1x: fix uninitialized const color union black

Broken by 6dd284f7c8fac22f64c13fdf9909094f5ec59086.

13 years agonv50,nvc0: support polygon offset clamp state
Christoph Bumiller [Sat, 24 Sep 2011 13:42:46 +0000 (15:42 +0200)]
nv50,nvc0: support polygon offset clamp state

13 years agor600: support polygon offset clamp state
Christoph Bumiller [Sat, 24 Sep 2011 13:41:25 +0000 (15:41 +0200)]
r600: support polygon offset clamp state

13 years agogallium: add polygon offset clamp state
Christoph Bumiller [Sat, 24 Sep 2011 11:22:29 +0000 (13:22 +0200)]
gallium: add polygon offset clamp state

This is required for D3D1x and supported by hardware.

13 years agoscons: generate git_sha1.h file as with Makefile build
Brian Paul [Wed, 28 Sep 2011 14:15:22 +0000 (08:15 -0600)]
scons: generate git_sha1.h file as with Makefile build

So that GL_VERSION includes the git head hash id when building with scons.

Reviewed-by: José Fonseca <jfonseca@vmware.com>
13 years agoi965: Allow SIMD16 color writes on Ivybridge.
Kenneth Graunke [Tue, 27 Sep 2011 06:57:40 +0000 (23:57 -0700)]
i965: Allow SIMD16 color writes on Ivybridge.

Again, the check was needlessly specific: this works fine on Gen7.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agoi965/fs: Allow SIMD16 with control flow on Ivybridge.
Kenneth Graunke [Tue, 27 Sep 2011 06:57:39 +0000 (23:57 -0700)]
i965/fs: Allow SIMD16 with control flow on Ivybridge.

The check was designed to forbid it on old generations (Gen5/Ironlake),
not on new ones.  It just works on Gen7/Ivybridge.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agointel: Fix compiler warnings from the depth stall flush commit.
Eric Anholt [Tue, 27 Sep 2011 22:17:50 +0000 (15:17 -0700)]
intel: Fix compiler warnings from the depth stall flush commit.

13 years agoradeon: Drop mapping we were doing around glGetTexImage().
Eric Anholt [Mon, 1 Aug 2011 04:09:04 +0000 (21:09 -0700)]
radeon: Drop mapping we were doing around glGetTexImage().

It's handled by MapTextureImage() now.

13 years agonouveau: Drop mapping we were doing around glGetTexImage().
Eric Anholt [Mon, 1 Aug 2011 04:07:00 +0000 (21:07 -0700)]
nouveau: Drop mapping we were doing around glGetTexImage().

It's handled by MapTextureImage() now.

13 years agointel: Drop our custom glGetTexImage() code.
Eric Anholt [Mon, 1 Aug 2011 04:02:46 +0000 (21:02 -0700)]
intel: Drop our custom glGetTexImage() code.

The mesa core code uses MapTextureImage() like we need now.

v2: Drop mapping around _mesa_generate_mipmap for compressed, since
    the whole path ends up going through MapTextureImage(), and the
    meta decompression code ended up causing us to lose track of the
    region that was originally mapped and assertion fail.

13 years agomesa: Finally, convert RGBA glGetTexImage() to using MapTextureImage().
Brian Paul [Mon, 1 Aug 2011 04:00:21 +0000 (21:00 -0700)]
mesa: Finally, convert RGBA glGetTexImage() to using MapTextureImage().

v2: Changes by Brian to MapTexImage in the decompression path.
v3: Changes by anholt to fix srcRowStride for decompression of NPOT.

Tested-by: Brian Paul <brianp@vmware.com> (v2)
13 years agomesa: Convert depth glGetTexImage() to using MapTextureImage().
Brian Paul [Mon, 1 Aug 2011 03:59:16 +0000 (20:59 -0700)]
mesa: Convert depth glGetTexImage() to using MapTextureImage().

Tested-by: Brian Paul <brianp@vmware.com>
13 years agomesa: Convert depth/stencil glGetTexImage() to using MapTextureImage().
Brian Paul [Mon, 1 Aug 2011 03:48:24 +0000 (20:48 -0700)]
mesa: Convert depth/stencil glGetTexImage() to using MapTextureImage().

Note that the implementation before and after appears to be broken in
its handling of Z24_S8 vs S8_Z24.

Tested-by: Brian Paul <brianp@vmware.com>
13 years agomesa: Switch ycbcr glGetTexImage() to using MapTextureImage().
Brian Paul [Mon, 1 Aug 2011 03:39:14 +0000 (20:39 -0700)]
mesa: Switch ycbcr glGetTexImage() to using MapTextureImage().

Tested-by: Brian Paul <brianp@vmware.com>
13 years agomesa: Switch memcpy fast-path of glGetTexImage() to using MapTextureImage().
Brian Paul [Mon, 1 Aug 2011 03:37:54 +0000 (20:37 -0700)]
mesa: Switch memcpy fast-path of glGetTexImage() to using MapTextureImage().

Tested-by: Brian Paul <brianp@vmware.com>
13 years agomesa: Update comments/assertions about buffer mapping for glGetTexImage().
Brian Paul [Mon, 1 Aug 2011 04:00:55 +0000 (21:00 -0700)]
mesa: Update comments/assertions about buffer mapping for glGetTexImage().

This code is about to stop needing ->Data and using MapTextureImage().

Tested-by: Brian Paul <brianp@vmware.com>
13 years agomesa: Convert GetCompressedTexImage to using MapTextureImage().
Brian Paul [Sat, 30 Jul 2011 00:14:34 +0000 (17:14 -0700)]
mesa: Convert GetCompressedTexImage to using MapTextureImage().

This changes drivers to not map the texture on their own before
calling _mesa_get_compressed_teximage().

Tested-by: Brian Paul <brianp@vmware.com>
13 years agogallium: move border color to be a color union
Dave Airlie [Tue, 27 Sep 2011 09:08:34 +0000 (10:08 +0100)]
gallium: move border color to be a color union

EXT_texture_integer also specifies border color should be a color
union, the values are used according to the texture sampler format.

(update docs)

Signed-off-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
13 years agomesa: Allow override of GL version with environment variable
Chad Versace [Mon, 26 Sep 2011 18:48:46 +0000 (11:48 -0700)]
mesa: Allow override of GL version with environment variable

It is necessary to manually set the GL version to 3.0 in order to run
Piglit tests that use glGetUniform*().

This patch allows one to override the version of the OpenGL context by
setting the environment variable MESA_GL_VERSION_OVERRIDE.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Signed-off-by: Chad Versace <chad@chad-versace.us>
13 years agomesa: Make enable.c and get.c properly range check clip flags.
Paul Berry [Sun, 25 Sep 2011 18:55:41 +0000 (11:55 -0700)]
mesa: Make enable.c and get.c properly range check clip flags.

This is a follow-up to commit
2d686fe911a89fa477ee3848da41ebfb100500bf, which added decoding of
GL_CLIP_DISTANCE[67] to the _mesa_set_enable() function.  This patch
makes the following additional fixes:

- Uses GL_CLIP_DISTANCEi enums consistently within enable.c rather
  than the deprecated GL_CLIP_PLANEi enums.

- Generates an error if the user tries to access a clip flag that is
  unsupported by the hardware.

- Applies the same change to _mesa_IsEnabled(), so that querying clip
  flags using glIsEnabled() works properly.

- Applies corresponding changes to get.c, so that querying clip flags
  using glGet*() works properly.

Fixes piglit test clip-flag-behavior.

Reviewed-by: Brian Paul <brianp@vmware.com>
13 years agomesa: fix indentation in mipmap.c (3 spaces)
Brian Paul [Tue, 27 Sep 2011 02:44:09 +0000 (20:44 -0600)]
mesa: fix indentation in mipmap.c (3 spaces)

13 years agoi965/vs: Fix access beyond array bounds for non-GRF operands.
Eric Anholt [Fri, 23 Sep 2011 20:52:47 +0000 (13:52 -0700)]
i965/vs: Fix access beyond array bounds for non-GRF operands.

Caught by valgrind.  I never saw a segfault from it (probably because
it's hard to have much more of any other file than GRF).

13 years agointel: Rename region->buffer to region->bo, and remove accessor function.
Eric Anholt [Thu, 22 Sep 2011 18:58:37 +0000 (11:58 -0700)]
intel: Rename region->buffer to region->bo, and remove accessor function.

We call all the other drm_intel_bo pointers in intel/*.h "bo", so this
one was rather out of place.

Acked-by: Kenneth Graunke <kenneth@whitecape.org>
13 years agointel: Drop stale comment about CopyTexSubImage.
Eric Anholt [Wed, 21 Sep 2011 23:43:08 +0000 (16:43 -0700)]
intel: Drop stale comment about CopyTexSubImage.

We get called for TexImage higher up, and in a relatively normal way
(pixels == NULL is common for FBO setup).

Acked-by: Kenneth Graunke <kenneth@whitecape.org>
13 years agointel: Rely on AllocTextureImageBuffer for our teximage fallbacks.
Eric Anholt [Wed, 21 Sep 2011 22:56:04 +0000 (15:56 -0700)]
intel: Rely on AllocTextureImageBuffer for our teximage fallbacks.

It will do a more reliable job at getting the image size for
_mesa_texstore right than us.

Acked-by: Kenneth Graunke <kenneth@whitecape.org>
13 years agointel: Rely on mesa core for compressed texture image uploading.
Eric Anholt [Wed, 21 Sep 2011 22:47:59 +0000 (15:47 -0700)]
intel: Rely on mesa core for compressed texture image uploading.

There's nothing in our normal texture path we need for this.  We don't
PBO upload blit it.  We don't need to worry about flushing because
MapTextureImage handles it.  hiz scattergather doesn't apply, but MTI
handles it too.

Acked-by: Kenneth Graunke <kenneth@whitecape.org>
13 years agointel: Allow src == NULL and *dst != NULL in intel_miptree_reference().
Eric Anholt [Wed, 21 Sep 2011 22:38:32 +0000 (15:38 -0700)]
intel: Allow src == NULL and *dst != NULL in intel_miptree_reference().

This makes this API consistent with intel_region_reference, and the
consumers wanted it this way.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
13 years agointel: Drop the "intel" argument to intel_miptree_release().
Eric Anholt [Wed, 21 Sep 2011 22:34:35 +0000 (15:34 -0700)]
intel: Drop the "intel" argument to intel_miptree_release().

We don't have it in the other refcounting functions, and it was
totally unused.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
13 years agointel: Drop the immediate validation of the texture object in TFP.
Eric Anholt [Wed, 21 Sep 2011 22:20:20 +0000 (15:20 -0700)]
intel: Drop the immediate validation of the texture object in TFP.

It's totally gratuitous -- the image's miptree will be checked for
binding to the object later, anyway, with zero-copy or blitting as
appropriate.

Tested-by: Kristian Høgsberg <krh@bitplanet.net>
Acked-by: Kenneth Graunke <kenneth@whitecape.org>
13 years agointel: Fix improper freeing of texture data in TFP.
Eric Anholt [Wed, 21 Sep 2011 22:17:36 +0000 (15:17 -0700)]
intel: Fix improper freeing of texture data in TFP.

If there happened to be ->Data present, we assertion failed instead of
handling it correctly.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=35234
Acked-by: Kenneth Graunke <kenneth@whitecape.org>
13 years agointel: Refactor texture_from_pixmap and EGL_image region binding.
Eric Anholt [Wed, 21 Sep 2011 22:13:57 +0000 (15:13 -0700)]
intel: Refactor texture_from_pixmap and EGL_image region binding.

Tested-by: Kristian Høgsberg <krh@bitplanet.net>
Acked-by: Kenneth Graunke <kenneth@whitecape.org>
13 years agointel: Drop some extra equality checks on reference/release functions.
Eric Anholt [Wed, 21 Sep 2011 21:47:39 +0000 (14:47 -0700)]
intel: Drop some extra equality checks on reference/release functions.

_mesa_reference_renderbuffer already short-circuits equality, and
intel_miptree_release does nothing on NULL.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
13 years agoi965: Set the pre/post-blend color clamp flags.
Eric Anholt [Fri, 9 Sep 2011 21:03:41 +0000 (14:03 -0700)]
i965: Set the pre/post-blend color clamp flags.

No change in piglit results on gen6, but the spec demands it so let's
do it.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
13 years agoi965/fs: Split generate_math into gen4/gen6 and 1/2 operand variants.
Kenneth Graunke [Thu, 18 Aug 2011 18:55:42 +0000 (11:55 -0700)]
i965/fs: Split generate_math into gen4/gen6 and 1/2 operand variants.

This mirrors the structure Eric used in the new VS backend, and seems
simpler.  In particular, the math1/math2 split will avoid having to
figure out how many operands there are, as this is already known by the
caller.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agoswrast: always call _swrast_choose_texture_sample_func()
Brian Paul [Mon, 26 Sep 2011 20:39:52 +0000 (14:39 -0600)]
swrast: always call _swrast_choose_texture_sample_func()

_swrast_choose_texture_sample_func() handles null texture object pointers
and will return the "null" sampler function which returns (0,0,0,1).  This
fixes a minor regression from ce82914f5ad4bb9148370826099925590e9798fd

13 years agomesa: Remove EXT_abgr extension enable flag
Ian Romanick [Wed, 31 Aug 2011 19:18:37 +0000 (12:18 -0700)]
mesa: Remove EXT_abgr extension enable flag

All drivers remaining in Mesa support this extension.  This extension
is required in desktop OpenGL.  The existing support is already partially
broken in Mesa (e.g., using format=GL_ABGR for glTexImage2D in OpenGL ES 2.x).
This patch does not change the situation in any way.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
13 years agomesa: Remove EXT_bgra and EXT_texture_format_BGRA8888 extension enable flags
Ian Romanick [Wed, 31 Aug 2011 18:43:39 +0000 (11:43 -0700)]
mesa: Remove EXT_bgra and EXT_texture_format_BGRA8888 extension enable flags

All drivers remaining in Mesa support this extension.  This extension
is either required or optional features in desktop OpenGL, OpenGL ES
1.x, and OpenGL ES 2.x.

EXT_texture_format_BGRA8888 is mostly a subset of EXT_bgra.  The only
difference seems to be that EXT_texture_format_BGRA8888 allows GL_BGRA
as an internal format to glTexImage2D and friends.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
13 years agomesa: Remove OES_read_format extension enable flag
Ian Romanick [Wed, 24 Aug 2011 00:18:00 +0000 (17:18 -0700)]
mesa: Remove OES_read_format extension enable flag

This extension is always enabled, and drivers do not have
to option to disable it.

I kept this one separate from the others because I was a little
uncertain about the changes to get.c.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Kristian Høgsberg <krh@bitplanet.net>
13 years agomesa: Remove all mention of EXT_vertex_array_set
Ian Romanick [Wed, 31 Aug 2011 00:42:33 +0000 (17:42 -0700)]
mesa: Remove all mention of EXT_vertex_array_set

Mesa has never any portion of this extension, and neither has any
other vendor.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
13 years agomesa: Fix extension year for EXT_texture_env_combine
Ian Romanick [Tue, 30 Aug 2011 23:56:20 +0000 (16:56 -0700)]
mesa: Fix extension year for EXT_texture_env_combine

The year 2006 apparently came from the "Last Modified Date" in the
spec header.  however, the revision history at the bottom say "2/22/00
mjk - added NVIDIA Implementation Details."  From that we can safely
infer that the spec is from at least 2000, and it may even be older.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
13 years agomesa: Remove many extension enable flags
Ian Romanick [Tue, 30 Aug 2011 23:29:52 +0000 (16:29 -0700)]
mesa: Remove many extension enable flags

The following extensions are always enabled, and drivers do not have
to option to disable them:

    GL_ARB_multisample
    GL_ARB_texture_compression
    GL_ARB_vertex_buffer_object / GL_OES_mapbuffer
    GL_EXT_copy_texture
    GL_EXT_multi_draw_arrays / GL_SUN_multi_draw_arrays
    GL_EXT_polygon_offset
    GL_EXT_subtexture
    GL_EXT_texture_edge_clamp / GL_SGIS_texture_edge_clamp
    GL_EXT_vertex_array
    GL_SGIS_generate_mipmap

This set was picked because the are all either required or optional
features in desktop OpenGL, OpenGL ES 1.x, and OpenGL ES 2.x.  The
existing support for some is already partially broken in Mesa (e.g.,
proxy texture targets in OpenGL ES).  This patch does not change the
situation in any way.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
13 years agointel: Remove redundant GL_ARB_window_pos enable
Ian Romanick [Tue, 23 Aug 2011 02:01:27 +0000 (19:01 -0700)]
intel: Remove redundant GL_ARB_window_pos enable

This extension is enabled by default in _mesa_init_extensions, so
drivers don't need to enable it again.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
13 years agodri: Remove redundant GL_SGIS_texture_edge_clamp enables
Ian Romanick [Tue, 23 Aug 2011 02:00:04 +0000 (19:00 -0700)]
dri: Remove redundant GL_SGIS_texture_edge_clamp enables

This extension is enabled by default in _mesa_init_extensions, so
drivers don't need to enable it again.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
13 years agoi965: Emit depth stalls and flushes before changing depth state on Gen6+.
Kenneth Graunke [Thu, 1 Sep 2011 11:18:20 +0000 (04:18 -0700)]
i965: Emit depth stalls and flushes before changing depth state on Gen6+.

Fixes OpenArena on Gen7.  Technically, adding only the first depth stall
fixes it, but the documentation says to do all three, and the Windows
driver seems to do it.

Not observed to fix anything on Gen6 yet.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=38863
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agointel: Introduce a new intel_context::gt field to go along with gen.
Kenneth Graunke [Sat, 24 Sep 2011 08:10:04 +0000 (01:10 -0700)]
intel: Introduce a new intel_context::gt field to go along with gen.

It seems that GT1/GT2 sorts of variations are here to stay, and more
special cases will likely be required in the future.  Checking by PCI ID
via the IS_xxx_GTx macros is cumbersome; introducing a new 'gt' field
analogous to intel->gen will make this easier.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agointel: Remove intel_context::has_xrgb_textures/has_luminance_srgb.
Kenneth Graunke [Sat, 24 Sep 2011 07:51:39 +0000 (00:51 -0700)]
intel: Remove intel_context::has_xrgb_textures/has_luminance_srgb.

Seeing as they were only used once (in the same function they were
defined), having them as context members seemed rather pointless.

Remove them entirely (rather than using local variables) since the
chipset generation checks are actually just as straightforward.

While we're at it, clean up the remainder of the if-tree that set them.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agoi965: Fix incorrect maximum PS thread count shift on Ivybridge.
Kenneth Graunke [Sat, 24 Sep 2011 06:32:56 +0000 (23:32 -0700)]
i965: Fix incorrect maximum PS thread count shift on Ivybridge.

At one point, the documentation said that max thread count in 3DSTATE_PS
was at bit offset 23, but it's actually 24 on Ivybridge.  Not only did
this halve our thread count, it caused us to write 1 into a bit 23, which
is marked as MBZ (must be zero).  Furthermore, it made us write an even
number into this field, which is apparently not allowed.  Apparently we
were just lucky it worked.

NOTE: This is a candidate for the 7.11 branch.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agor600g: add index_bias to index buffer bounds
Marek Olšák [Mon, 26 Sep 2011 13:03:43 +0000 (15:03 +0200)]
r600g: add index_bias to index buffer bounds

This fixes ARB_draw_elements_base_vertex with max_index != ~0.

NOTE: This is a candidate for the 7.11 branch.

13 years agou_vbuf_mgr: fix uploading with a non-zero index bias
Marek Olšák [Mon, 26 Sep 2011 01:30:24 +0000 (03:30 +0200)]
u_vbuf_mgr: fix uploading with a non-zero index bias

Also don't rely on pipe_draw_info being set correctly.

NOTE: This is a candidate for the 7.11 branch.

13 years agou_vbuf_mgr: dereference some pointers only once etc.
Marek Olšák [Mon, 26 Sep 2011 12:41:08 +0000 (14:41 +0200)]
u_vbuf_mgr: dereference some pointers only once etc.

13 years agou_vbuf_mgr: rework user buffer uploads
Marek Olšák [Sun, 25 Sep 2011 17:57:35 +0000 (19:57 +0200)]
u_vbuf_mgr: rework user buffer uploads

- first determine the buffer range to upload for each buffer by walking over
  vertex elements
- take buffer_offset into account
- take src_offset into account
- take src_format into account in more places
- don't just blindly upload (stride*count) bytes

NOTE: This is a candidate for the 7.11 branch.

13 years agou_vbuf_mgr: remove unused flag U_VBUF_UPLOAD_FLUSHED
Marek Olšák [Sun, 25 Sep 2011 17:31:15 +0000 (19:31 +0200)]
u_vbuf_mgr: remove unused flag U_VBUF_UPLOAD_FLUSHED

13 years agou_vbuf_mgr: s/u_vbuf_mgr_/u_vbuf_
Marek Olšák [Sun, 25 Sep 2011 17:16:21 +0000 (19:16 +0200)]
u_vbuf_mgr: s/u_vbuf_mgr_/u_vbuf_

13 years agou_vbuf_mgr: fix max_index computation for large src_offset
Marek Olšák [Sun, 25 Sep 2011 16:58:54 +0000 (18:58 +0200)]
u_vbuf_mgr: fix max_index computation for large src_offset

NOTE: This is a candidate for the 7.11 branch.

13 years agou_vbuf_mgr: don't take per-instance attribs into acc. when computing max index
Marek Olšák [Sun, 25 Sep 2011 16:44:36 +0000 (18:44 +0200)]
u_vbuf_mgr: don't take per-instance attribs into acc. when computing max index

NOTE: This is a candidate for the 7.11 branch.

13 years agou_vbuf_mgr: cleanup original vs real vertex buffer arrays
Marek Olšák [Sun, 25 Sep 2011 16:13:50 +0000 (18:13 +0200)]
u_vbuf_mgr: cleanup original vs real vertex buffer arrays

It can now override both buffer offsets and strides in additions to resources.
Overriding buffer offsets was kinda hackish and could cause issues with
non-native vertex formats.

13 years agointel: fix potential segfault error at intel_(un)map_texture_image
Yuanhan Liu [Mon, 26 Sep 2011 01:23:06 +0000 (09:23 +0800)]
intel: fix potential segfault error at intel_(un)map_texture_image

intel_image->mt might be NULL, say with border width set. It then would
trigger a segfault at intel_map/unmap_texture_image function.

This would fix the oglc misctest(basic.textureBorderIgnore) fail.

Signed-off-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
13 years agonouveau: fix crash during fence emission
Marcin Slusarz [Sun, 25 Sep 2011 14:01:19 +0000 (16:01 +0200)]
nouveau: fix crash during fence emission

Fence emission can flush the push buffer, which through flush_notify
unreferences recently emitted fence. If ref count is increased after
fence emission, unreference deletes the fence, which causes SIGSEGV.

Backtrace:
nouveau_fence_del
nouveau_fence_ref
nouveau_fence_next
nouveau_pushbuf_flush
MARK_RING
nv50_screen_fence_emit
nouveau_fence_emit
nv50_flush

This bug manifested as an assertion failure in nouveau_fence.c, because
SIGSEGV handler tried to shutdown the application and used messed up
fence.

This issue was reported by Maxim Levitsky.

Note: This is a candidate for the 7.11 branch.

13 years agomesa: Also set the remaining draw buffers to GL_NONE when updating just the first...
Henri Verbeet [Thu, 22 Sep 2011 21:46:34 +0000 (23:46 +0200)]
mesa: Also set the remaining draw buffers to GL_NONE when updating just the first buffer in _mesa_drawbuffers().

Without this we'd miss the last update in a sequence like {COLOR0, COLOR1},
{COLOR0}, {COLOR0, COLOR1}. I originally had a patch for this that called
updated_drawbuffers() when the buffer count changed, but later realized that
was wrong. The ARB_draw_buffers spec explicitly says "The draw buffer for
output colors beyond <n> is set to NONE.", and this is queryable state.
This fixes piglit arb_draw_buffers-state_change.

NOTE: This is a candidate for the 7.11 branch.

Signed-off-by: Henri Verbeet <hverbeet@gmail.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agopostprocess: Portability fixes.
José Fonseca [Sun, 25 Sep 2011 10:56:12 +0000 (11:56 +0100)]
postprocess: Portability fixes.

13 years agonoop: Always use memory allocation macros.
José Fonseca [Sun, 25 Sep 2011 10:48:17 +0000 (11:48 +0100)]
noop: Always use memory allocation macros.

13 years agollvmpipe: Always use memory allocation macros.
José Fonseca [Sun, 25 Sep 2011 10:48:00 +0000 (11:48 +0100)]
llvmpipe: Always use memory allocation macros.

13 years agosoftpipe: Use memory allocation macros.
José Fonseca [Sun, 25 Sep 2011 10:46:49 +0000 (11:46 +0100)]
softpipe: Use memory allocation macros.

Fixes segfault with memory debugging on.