mesa.git
11 years agomesa: Array uniform name length includes length of [0]
Ian Romanick [Sat, 15 Dec 2012 03:00:32 +0000 (19:00 -0800)]
mesa: Array uniform name length includes length of [0]

This is required by OpenGL ES 3.0 and desktop OpenGL 4.2.  Previous
version were ambiguous.  This also matches the behavior of NVIDIA's
closed-source driver (version 304.64).

Fixed gles3conformance test uniform_buffer_object_getactiveuniformsiv
and uniform_buffer_object_structure_and_array_element_names (on my
in-progress branch that fixes a bunch of other stuff...YMMV).

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agomesa: Array uniform names are supposed to have [0] appended
Ian Romanick [Fri, 14 Dec 2012 23:01:48 +0000 (15:01 -0800)]
mesa: Array uniform names are supposed to have [0] appended

This is required by OpenGL ES 3.0 and desktop OpenGL 4.2.  Previous
version were ambiguous.  This also matches the behavior of NVIDIA's
closed-source driver (version 304.64).

Fixed gles3conformance test uniform_buffer_object_getactiveuniform.

Several piglit tests expect glGetActiveUniform to *not* include the [0]
on the end.  These tests were already failing on NVIDIA, and this change
regresses them on Mesa.  Patches have been sent to the piglit mailing
list to fix the tests.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agomesa: Refactor getting a uniform's name to a helper function
Ian Romanick [Fri, 14 Dec 2012 22:59:11 +0000 (14:59 -0800)]
mesa: Refactor getting a uniform's name to a helper function

We currently have a bug in this code, and I don't want to fix it in two
places.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agoglsl: Eliminate link_update_uniform_buffer_variables return value
Ian Romanick [Wed, 12 Dec 2012 00:51:02 +0000 (16:51 -0800)]
glsl: Eliminate link_update_uniform_buffer_variables return value

It always returns true, so there's no point in having a return value.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agoglsl: Remove unused loc parameter from generate_call
Ian Romanick [Tue, 11 Dec 2012 20:54:02 +0000 (12:54 -0800)]
glsl: Remove unused loc parameter from generate_call

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agomesa: Remove unused field gl_uniform_buffer_variable::Buffer
Ian Romanick [Thu, 13 Dec 2012 10:22:24 +0000 (02:22 -0800)]
mesa: Remove unused field gl_uniform_buffer_variable::Buffer

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agolinker: Use helper variable sh
Ian Romanick [Thu, 13 Dec 2012 20:42:02 +0000 (12:42 -0800)]
linker: Use helper variable sh

This looks like a copy-and-paste left over.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agoglsl: Remove stale comment
Ian Romanick [Thu, 13 Dec 2012 20:14:47 +0000 (12:14 -0800)]
glsl: Remove stale comment

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agoglsl: Track UBO block names in the symbol table.
Kenneth Graunke [Wed, 28 Nov 2012 08:18:02 +0000 (00:18 -0800)]
glsl: Track UBO block names in the symbol table.

The GLSL 1.40 spec says:

    "Uniform block names and variable names declared within uniform
    blocks are scoped at the program level."

Track the block name in the symbol table and emit errors when conflicts
exist.

Fixes es3conform's uniform_buffer_object_block_name_conflict test, and
fixes the piglit block-name-clashes-with-{variable,function,struct}.vert
tests.

NOTE: This is a candidate for the 9.0 branch.

v2: Fix bad constructor initialization.  Noticed by Topi Pohjolainen.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
11 years agoglsl: Reject row_major and column_major on non-matrix types
Ian Romanick [Wed, 16 Jan 2013 20:01:50 +0000 (12:01 -0800)]
glsl: Reject row_major and column_major on non-matrix types

About both row_major and column_major layout qualifiers, the GLSL spec
says:

    "It only affects the layout of matrices."

However, the OpenGL ES 3.0 conformance tests have taken this to mean it
is an error use it elsewhere.  This seems logical given that
'layout(row_major) vec4 foo' is probably not what the programmer meant.

The only catch is dealing with structures that contain matrices.  Layout
qualifiers cannot be applied directly to fields of structures, so the
only way to affect the layout of the fields is to apply a qualifier to
the structure declaration itself.  There is ongoing debate about this
within Khronos, and it seems to be settling in favor of allowing the
qualifiers on structures.  I light of this, I have chosen to allow the
qualifiers on structures but emit a warning since the usage may not be
portable.

Fixes gles3conform test
uniform_buffer_object_layouts_not_for_matrix_type and causes no
regressions.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agomesa: Skip updating texgen when not doing fixed function.
Eric Anholt [Tue, 8 Jan 2013 19:09:49 +0000 (11:09 -0800)]
mesa: Skip updating texgen when not doing fixed function.

Between the previous commit and this one, improves GLBenchmark 2.1
offscreen performance by 0.48% +/- 0.24% (n=22, throttling outliers
removed).

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
11 years agomesa: Don't bother updating ff texture state if we have a fragment shader.
Eric Anholt [Tue, 8 Jan 2013 17:56:24 +0000 (09:56 -0800)]
mesa: Don't bother updating ff texture state if we have a fragment shader.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
11 years agomesa: Drop a comment about ff vertex shading and texturing.
Eric Anholt [Tue, 8 Jan 2013 00:58:58 +0000 (16:58 -0800)]
mesa: Drop a comment about ff vertex shading and texturing.

It's never going to have texture fetches.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
11 years agomesa: Fix out of bounds writes when uncompressing non-block-aligned ETC1.
Eric Anholt [Fri, 11 Jan 2013 01:48:16 +0000 (17:48 -0800)]
mesa: Fix out of bounds writes when uncompressing non-block-aligned ETC1.

Fixes a crash in GLB2.1 offscreen on the glthread branch.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agoi965: Add support for GL_ARB_texture_buffer_object_rgb32.
Eric Anholt [Thu, 10 Jan 2013 22:53:12 +0000 (14:53 -0800)]
i965: Add support for GL_ARB_texture_buffer_object_rgb32.

Tested with piglit ARB_texture_buffer_object/formats.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agoi965: Add support for MESA_FORMAT_RGB_FLOAT32 surfaces.
Eric Anholt [Fri, 11 Jan 2013 00:11:26 +0000 (16:11 -0800)]
i965: Add support for MESA_FORMAT_RGB_FLOAT32 surfaces.

This is for GL_ARB_texture_buffer_object_rgb32 support, but it also
causes the format to get used for float32 rgb textures as well on
Ironlake and later.  Since that came with some surprises, separate
the change from the enable commit.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agointel: Make intel_region's pitch be bytes instead of pixels.
Eric Anholt [Thu, 10 Jan 2013 23:11:28 +0000 (15:11 -0800)]
intel: Make intel_region's pitch be bytes instead of pixels.

We almost never want a stride in pixels -- if you're doing anything with
a stride, you're specifying an offset or incrementing a pointer, and in
both cases you had to multiply by cpp to get the bytes value you wanted.
But worse, on the way to creating a region from a new tiled BO, we
divided by cpp to get pitch in pixels, and for an RGB32 buffer (an
upcoming change) the pitch wouldn't divide exactly, and we'd end up with
a wrong stride in our region.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agointel: Make intel_blit.c take pitches in bytes.
Eric Anholt [Thu, 10 Jan 2013 23:22:12 +0000 (15:22 -0800)]
intel: Make intel_blit.c take pitches in bytes.

As we gain support for NPOT cpp, a pitch may not divide by cpp cleanly.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agor600g/llvm: tgsi to llvm emits store.swizzle intrinsic for vs/fs output
Vincent Lejeune [Fri, 11 Jan 2013 18:48:29 +0000 (19:48 +0100)]
r600g/llvm: tgsi to llvm emits store.swizzle intrinsic for vs/fs output

Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
11 years agor600g/llvm: tgsi to llvm emits stream output intrinsics.
Vincent Lejeune [Fri, 11 Jan 2013 18:48:28 +0000 (19:48 +0100)]
r600g/llvm: tgsi to llvm emits stream output intrinsics.

Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
11 years agor600g/llvm:translate ARL opcode to a simple cast
Vincent Lejeune [Tue, 8 Jan 2013 21:46:37 +0000 (22:46 +0100)]
r600g/llvm:translate ARL opcode to a simple cast

Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
11 years agor600g/llvm: rework handling of the constants
Vadim Girlin [Tue, 8 Jan 2013 21:46:35 +0000 (22:46 +0100)]
r600g/llvm: rework handling of the constants

Vincent Lejeune:
  - tgsi to llvm now emits pointers for constants

Tom Stellard:
  - Only use texture cache for vtx fetch with compute shaders
  - Change address space used for constant loads to match LLVM
    backend.

Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
11 years agomesa: Only mark textures as mipmap incomplete on MAX_LEVEL issues.
Kenneth Graunke [Thu, 17 Jan 2013 17:38:02 +0000 (09:38 -0800)]
mesa: Only mark textures as mipmap incomplete on MAX_LEVEL issues.

According to the OpenGL 3.2 Core Profile specification, section 3.8.12:

"For one-, two-, and three-dimensional and one-and two-dimensional array
 textures, a texture is mipmap complete if all of the following
 conditions hold true:
 - [...]
 - levelbase <= levelmax [...]

 Using the preceding definitions, a texture is complete unless any of
 the following conditions hold true:
 - [...]
 - The minification filter requires a mipmap (is neither NEAREST nor
   LINEAR), and the texture is not mipmap complete."

(This text also appears in all GL >= 3.2 specs and the ES 3.0 spec.)

From this, we see that levelbase <= levelmax should only affect mipmap
completeness, not base-level completeness.

Prior versions of GL did not have the notion of mipmap completeness,
simply calling the texture incomplete in this case.  But I don't think
we really care.

Fixes es3conform's sgis_texture_lod_basic_completeness test.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <idr@freedesktop.org>
11 years agoi965/vs: Store texturing results into a vec4 temporary.
Kenneth Graunke [Thu, 17 Jan 2013 04:24:13 +0000 (20:24 -0800)]
i965/vs: Store texturing results into a vec4 temporary.

The sampler appears to ignore writemasks (even when correcting the
WRITEMASK_XYZW in brw_vec4_emit.cpp to the proper writemask) and just
always writes all four values.

To cope with this, just texture into a temporary, then MOV out into a
register that has the proper number of components.

NOTE: This is a candidate for stable branches.

Fixes es3conform's shadow_execution_vert.test.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <idr@freedesktop.org>
11 years agoi965/vs: Set LOD to 0 for ordinary texture() calls.
Kenneth Graunke [Thu, 17 Jan 2013 03:09:52 +0000 (19:09 -0800)]
i965/vs: Set LOD to 0 for ordinary texture() calls.

Previously it was left undefined, causing us to select a random LOD.

NOTE: This is a candidate for stable branches.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <idr@freedesktop.org>
11 years agoi965/vs: Create a 'lod_type' temporary for ir->lod_info.lod->type.
Kenneth Graunke [Thu, 17 Jan 2013 03:08:12 +0000 (19:08 -0800)]
i965/vs: Create a 'lod_type' temporary for ir->lod_info.lod->type.

This is purely a refactor.  However, in a moment, we'll want to set
lod_type to float for ir_tex, where ir->lod_info.lod is NULL.

NOTE: This is a candidate for stable branches (for the next patch).

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <idr@freedesktop.org>
11 years agoi965: Lower textureGrad() with samplerCubeShadow on pre-Haswell.
Kenneth Graunke [Wed, 16 Jan 2013 19:14:14 +0000 (11:14 -0800)]
i965: Lower textureGrad() with samplerCubeShadow on pre-Haswell.

Fixes regressions since commit 899017fc54c40c969b5239b33f3a17b311878b0d
Author: Kenneth Graunke <kenneth@whitecape.org>
Date:   Fri Jan 4 07:53:09 2013 -0800

    i965: Use Haswell's sample_d_c for textureGrad with shadow samplers.

That patch assumed that all instances were lowered.  However, we weren't
lowering textureGrad() with samplerCubeShadow because I couldn't figure
out the LOD calculations.  It turns out they're easy: you just have to
use 1 for the depth.  This causes it to pass oglconform's four tests.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Tested-by: Anuj Phogat <anuj.phogat@gmail.com>
Tested-by: Ian Romanick <idr@freedesktop.org>
11 years agollvmpipe: turn on integer texture support
Roland Scheidegger [Sun, 13 Jan 2013 01:28:40 +0000 (17:28 -0800)]
llvmpipe: turn on integer texture support

Now that things mostly seem to work enable those formats.
Some formats cause crashes (notably RGB8 variants) so switch these off
(these crashes are not specific to INT/UINT variants but the state tracker
doesn't use them for UNORM etc. formats so it went unnoticed so far).

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: José Fonseca <jfonseca@vmware.com>
11 years agollvmpipe: more fixes for integer color buffers
Roland Scheidegger [Sun, 13 Jan 2013 01:20:13 +0000 (17:20 -0800)]
llvmpipe: more fixes for integer color buffers

Cast back the fake floats to ints, and make sure we don't try to do scaling
in format conversion (which only makes sense with normalized values).
Also need to disable blending and alpha test (as per spec) for such buffers.
This makes fbo-blending from the piglit ext_texture_integer tests work for most
formats (some crash, and the luminance and intensity variants have the GB or
GBA channels respectively wrong).

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: José Fonseca <jfonseca@vmware.com>
11 years agollvmpipe: trivial code and comment cleanup.
Roland Scheidegger [Sun, 13 Jan 2013 01:09:04 +0000 (17:09 -0800)]
llvmpipe: trivial code and comment cleanup.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: José Fonseca <jfonseca@vmware.com>
11 years agollvmpipe: fix using wrong format with MRT in blend code
Roland Scheidegger [Sun, 13 Jan 2013 01:07:37 +0000 (17:07 -0800)]
llvmpipe: fix using wrong format with MRT in blend code

We were passing in the rt index however this was always 0 for non-independent
blend case. (The format was only actually used to decide if the color mask
covered all channels so this went unnoticed and was discovered by accident.)
Additionally, there was a second problem because we do fixups in the key based
on color buffer format we cannot use non-independent blend anyway as the fixed
up values would never get used.
So always turn non-independent blending into independent.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: José Fonseca <jfonseca@vmware.com>
11 years agomesa/es3: Don't check dimensions in _mesa_es3_error_check_format_and_type
Ian Romanick [Wed, 16 Jan 2013 23:34:49 +0000 (15:34 -0800)]
mesa/es3: Don't check dimensions in _mesa_es3_error_check_format_and_type

Filtering of DEPTH_COMPONENT and DEPTH_STENCIL for TEXTURE_3D is already
done in texture_error_check because these combinations aren't allowed on
desktop GL either.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
11 years agomesa: Don't allow DEPTH_STENCIL for 3D textures
Ian Romanick [Wed, 16 Jan 2013 23:34:26 +0000 (15:34 -0800)]
mesa: Don't allow DEPTH_STENCIL for 3D textures

Just like DEPTH_COMPONENT.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
11 years agoswrast: fix assorted bugs in software blit code
Brian Paul [Thu, 17 Jan 2013 15:59:13 +0000 (08:59 -0700)]
swrast: fix assorted bugs in software blit code

1. The loop over dest buffers in blit_linear() needed a null pointer
check.  Fixes https://bugs.freedesktop.org/show_bug.cgi?id=59499

2. The code to grab the drawRb's format needs to be inside the drawing loop.

3. An equality test was using = instead of == thus messing up a
renderbuffer attachment texture pointer.  This lead to memory
corruption and a crash at exit.

Finally, fix a capitalization error NumDrawBuffers -> numDrawBuffers
and change type to unsigned to fix signed/unsigned comparison warnings.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
11 years agoradeonsi: Actually keep track if we are using depth textures for samplers.
Michel Dänzer [Wed, 5 Dec 2012 17:35:22 +0000 (18:35 +0100)]
radeonsi: Actually keep track if we are using depth textures for samplers.

20-odd more piglits.

Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
11 years agoradeonsi: Fix Z24 texture formats.
Michel Dänzer [Tue, 15 Jan 2013 10:46:40 +0000 (11:46 +0100)]
radeonsi: Fix Z24 texture formats.

About half a dozen more piglits.

Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
11 years agoradeonsi: Set SPI_SHADER_COL_FORMAT to what the pixel shader actually exports.
Michel Dänzer [Fri, 21 Dec 2012 14:39:26 +0000 (15:39 +0100)]
radeonsi: Set SPI_SHADER_COL_FORMAT to what the pixel shader actually exports.

Instead of deriving it from the colour buffer formats only.

Fixes a number of piglit tests which export depth from the pixel shader.

Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
11 years agoradeonsi: Use proper hardware format for stencil texturing.
Michel Dänzer [Fri, 11 Jan 2013 18:51:09 +0000 (19:51 +0100)]
radeonsi: Use proper hardware format for stencil texturing.

Fixes piglit 'spec/ARB_depth_buffer_float/fbo-clear-formats stencil' crash.

Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
11 years agoradeonsi: Enable tiling for depth/stencil resources.
Michel Dänzer [Thu, 17 Jan 2013 15:31:58 +0000 (16:31 +0100)]
radeonsi: Enable tiling for depth/stencil resources.

Enabling it for all resources still seems to cause problems, but depth/stencil
buffers are always accessed with tiling by the DB block.

Also, stick to 1D tiling for now. Getting 2D tiling to work properly will
require substantial changes in libdrm_radeon and possibly the kernel as well.

Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
11 years agoradeonsi: Consolidate calculation of tile mode index.
Michel Dänzer [Thu, 13 Dec 2012 13:32:56 +0000 (14:32 +0100)]
radeonsi: Consolidate calculation of tile mode index.

Apart from the obvious cleanup, this makes sure all blocks use the same tiling
mode for accessing the resource.

Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
11 years agonvc0: add support for accelerated video decoding through the dedicated engines
Maarten Lankhorst [Sun, 2 Dec 2012 11:07:35 +0000 (12:07 +0100)]
nvc0: add support for accelerated video decoding through the dedicated engines

Currently the use of external firmware is required, with kernel and
userspace firmware needed for all Fermi cards except nvd9. Kepler and nvd9
should only require kernel firmware.

11 years agoradeonsi: Pass texture type to sampling intrinsics.
Michel Dänzer [Fri, 30 Nov 2012 10:38:24 +0000 (11:38 +0100)]
radeonsi: Pass texture type to sampling intrinsics.

Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
11 years agonvc0: add space checks to clear functions
Maarten Lankhorst [Thu, 17 Jan 2013 11:35:38 +0000 (12:35 +0100)]
nvc0: add space checks to clear functions

Thanks to calim for helping me find and fix the issue.

11 years agonv50: add space checks to clear functions, and respect depth
Maarten Lankhorst [Thu, 17 Jan 2013 11:33:34 +0000 (12:33 +0100)]
nv50: add space checks to clear functions, and respect depth

Thanks to calim for helping me find and fix the issue.

11 years agost/mesa: a couple fixes for st_BlitFramebuffer()
Brian Paul [Wed, 16 Jan 2013 15:41:01 +0000 (08:41 -0700)]
st/mesa: a couple fixes for st_BlitFramebuffer()

1. Loop over multiple destination color buffers.  If we set
glDrawBuffers(GL_FRONT_AND_BACK) we need to loop over multiple color
buffers, blitting to each.

2. Add checks for null src/dst surface pointers.  This fixes a crash
in the piglit fbo-missing-attachment-blit test.
See bug http://bugs.freedesktop.org/show_bug.cgi?id=59450

Reviewed-by: Reviewed-by: Marek Olšák <maraeo@gmail.com>
11 years agost/mesa: simplify some src/dst surface setup in BlitFramebuffer
Brian Paul [Wed, 16 Jan 2013 15:47:55 +0000 (08:47 -0700)]
st/mesa: simplify some src/dst surface setup in BlitFramebuffer

Use the renderbuffer attachment pointers that we grabbed earlier.

Reviewed-by: Reviewed-by: Marek Olšák <maraeo@gmail.com>
11 years agometa: add 'f' suffix to floats to silence some MSVC warnings
Brian Paul [Wed, 16 Jan 2013 15:25:43 +0000 (08:25 -0700)]
meta: add 'f' suffix to floats to silence some MSVC warnings

11 years agomesa: add missing ASSERT_OUTSIDE_BEGIN_END() in _mesa_GetInternalformativ()
Brian Paul [Wed, 16 Jan 2013 15:19:13 +0000 (08:19 -0700)]
mesa: add missing ASSERT_OUTSIDE_BEGIN_END() in _mesa_GetInternalformativ()

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
11 years agobuild: Make src/gtest before src/mesa
Matt Turner [Mon, 14 Jan 2013 22:38:01 +0000 (14:38 -0800)]
build: Make src/gtest before src/mesa

Fixes a make check problem where libgtest.la wasn't build before tests
that want to link with it.

11 years agoFix mapi code generator for out-of-tree build
Jon TURNEY [Mon, 14 Jan 2013 15:35:05 +0000 (15:35 +0000)]
Fix mapi code generator for out-of-tree build

Use os.path.join() rather than hand-rolling it, so path is correct if
sys.argv[0] returns an absolute path.

(According to the python documentation, it's platform dependent whether
sys.argv[0] is a full pathname or not.  It probably also depends on how
the process was started...)

Signed-off-by: Jon TURNEY <jon.turney@dronecode.org.uk>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
11 years agonvc0: Add support for video buffer
Maarten Lankhorst [Sun, 2 Dec 2012 11:07:35 +0000 (12:07 +0100)]
nvc0: Add support for video buffer

11 years agovl/video_buffer: fix up surface ordering for the interlaced case
Maarten Lankhorst [Tue, 18 Dec 2012 12:17:22 +0000 (13:17 +0100)]
vl/video_buffer: fix up surface ordering for the interlaced case

It seems the other code expects surface[0..1] to be the luma field in interlaced case.

See for example vdpau/surface.c vlVdpVideoSurfaceClear and vlVdpVideoSurfacePutBitsYCbCr.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
11 years agovl/compositor: fix weave shader bugs
Maarten Lankhorst [Tue, 18 Dec 2012 12:13:01 +0000 (13:13 +0100)]
vl/compositor: fix weave shader bugs

Writemask was XY instead of YZ (thanks to calim for spotting it).

The pixel calculation resulted in the pixel always being off by one.
If y was .5:

y' = round(y) + 0.5 = 1.5

Fixing this also means the LRP function has to swap the pixels it, since
it's now the other way around for top/bottom.

WIth these fixes only chroma for top and bottom pixel rows are wrongly interpolated
in my test program:

--- nvidia
+++ nouveau
@@ -1,4 +1,4 @@
-YCbCr[0] = 00c080
+YCbCr[0] = 00b070
 YCbCr[1] = 00b070
 YCbCr[2] = 029050
 YCbCr[3] = 207050
@@ -61,4 +61,4 @@
 YCbCr[60] = 0c5070
 YCbCr[61] = c05090
 YCbCr[62] = 0e70b0
-YCbCr[63] = e080c0
+YCbCr[63] = e070b0

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
11 years agomesa: add new formatquery.c file to SConscript file to fix build
Brian Paul [Wed, 16 Jan 2013 15:18:33 +0000 (08:18 -0700)]
mesa: add new formatquery.c file to SConscript file to fix build

11 years agoradeonsi/vdpau: remove nonsense state tracker dep
Christian König [Wed, 16 Jan 2013 14:15:38 +0000 (15:15 +0100)]
radeonsi/vdpau: remove nonsense state tracker dep

Added with automake conversion, but makes no sense at all.

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Andreas Boll <andreas.boll.dev@gmail.com>
11 years agoglapi: Remove duplicate ARB_base_instance from gl_API.xml
Ian Romanick [Wed, 16 Jan 2013 07:20:02 +0000 (23:20 -0800)]
glapi: Remove duplicate ARB_base_instance from gl_API.xml

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
11 years agointel: Enable GL_ARB_internalformat_query
Ian Romanick [Sat, 1 Dec 2012 19:06:31 +0000 (11:06 -0800)]
intel: Enable GL_ARB_internalformat_query

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
11 years agomesa: Add driver method to determine the possible sample counts
Ian Romanick [Sat, 1 Dec 2012 19:05:00 +0000 (11:05 -0800)]
mesa: Add driver method to determine the possible sample counts

Use this method in _mesa_GetInternalformativ for both GL_SAMPLES and
GL_NUM_SAMPLE_COUNTS.

v2: internalFormat may not be color renderable by the driver, so zero
can be returned as a sample count.  Require that drivers supporting the
extension provide a QuerySamplesForFormat function.  The later was
suggested by Eric Anholt.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
11 years agomesa: Add dispatch and extension XML for GL_ARB_internalformat_query
Ian Romanick [Fri, 30 Nov 2012 20:43:58 +0000 (12:43 -0800)]
mesa: Add dispatch and extension XML for GL_ARB_internalformat_query

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
11 years agomesa: Add extension tracking bit for GL_ARB_internalformat_query
Ian Romanick [Fri, 30 Nov 2012 20:42:59 +0000 (12:42 -0800)]
mesa: Add extension tracking bit for GL_ARB_internalformat_query

Though, I'm tempted to always expose this extension when
GL_ARB_framebuffer_object is exposed.  In that case, it would share the same
enable bit.

v2: Correctly sort extension names.  Suggested by Eric Anholt.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
11 years agomesa: Add skeleton implementation of glGetInternalformativ
Ian Romanick [Fri, 30 Nov 2012 20:41:50 +0000 (12:41 -0800)]
mesa: Add skeleton implementation of glGetInternalformativ

This is for the GL_ARB_internalformat_query extension and GLES 3.0.

v2: Generate GL_INVALID_OPERATION if the extension is not supported.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
11 years agometa: Move loop variable declaration outside for loop.
Vinson Lee [Wed, 16 Jan 2013 02:03:25 +0000 (18:03 -0800)]
meta: Move loop variable declaration outside for loop.

Fixes build with MSVC.

Signed-off-by: Vinson Lee <vlee@freedesktop.org>
11 years agomesa: move declarations before code to fix MSVC build
Brian Paul [Wed, 16 Jan 2013 00:02:30 +0000 (17:02 -0700)]
mesa: move declarations before code to fix MSVC build

11 years agomesa: Round float param in glTexparameterf() to nearest integer
Anuj Phogat [Mon, 7 Jan 2013 05:00:11 +0000 (10:30 +0530)]
mesa: Round float param in glTexparameterf() to nearest integer

OpenGL 4.2 specification suggests rounding the float data to nearest
integer when the type of internal state is integer. Out of range floats
should be clamped to {INT_MIN, INT_MAX}. This is not specified anywhere
in gl/gles spec but below test expects this behavior.  This patch makes
gles3 conformance sgis_texture_lod_basic_getter.test pass.

A GL spec bug will be raised to include clamping of out of range floats.

V2: Round float to nearest integer for all cases where
_mesa_Texparameterf() converts float param to int. Use the same block of
float to int conversion code for GL_TEXTURE_SWIZZLE_{R,G,B,A}_EXT cases
as well.

Signed-off-by: Anuj Phogat <anuj.phogat@gmail.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
11 years agomesa: Add support to allow blitting to multiple color draw buffers
Anuj Phogat [Wed, 12 Dec 2012 04:17:47 +0000 (20:17 -0800)]
mesa: Add support to allow blitting to multiple color draw buffers

This patch fixes a blitting case when drawAttachment->Texture ==
readAttachment->Texture. It was causing an assertion failure in
intel_miptree_attach_map() with gles3 conformance test case:
framebuffer_blit_functionality_minifying_blit

Number of changes in this file look scary. But most of them are caused
by introducing a big for loop to support rendering to multiple color
draw buffers.

V2: Fixed a case when number of draw buffer attachments are zero.
V3: Put a for loop in blit_nearest() and blit_linear() functions in to
    support blitting to multiple color draw buffers.
V4: Remove variable declaration in for loop to avoid MSVC compilation
    issues.

Signed-off-by: Anuj Phogat <anuj.phogat@gmail.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
11 years agomesa: Add error checking in _mesa_BlitFramebuffer() for MRTs
Anuj Phogat [Wed, 12 Dec 2012 04:17:47 +0000 (20:17 -0800)]
mesa: Add error checking in _mesa_BlitFramebuffer() for MRTs

This patch adds required error checking in _mesa_BlitFramebuffer() when
blitting to multiple color render targets. It also fixes a case when
blitting to a framebuffer with renderbuffer/texture attached to
GL_COLOR_ATTACHMENT{i} (where i!=0). Earlier it skips color blitting if
nothing is found attached to GL_COLOR_ATTACHMENT0.

V2: Fixed a case when number of draw buffer attachments are zero.
V3: Do compatible_color_datatypes() and compatible_resolve_formats()
    check for all the draw renderbuffers in fbobject.c. Fix debug code
    at bottom of _mesa_BlitFramebuffer() to handle MRTs. Combine error
    checking code for linear blits with other color blit error checking.

Signed-off-by: Anuj Phogat <anuj.phogat@gmail.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
11 years agomesa: Fix GL error generation in _mesa_GetFramebufferAttachmentParameteriv()
Anuj Phogat [Wed, 12 Dec 2012 04:08:13 +0000 (20:08 -0800)]
mesa: Fix GL error generation in _mesa_GetFramebufferAttachmentParameteriv()

This allows query on default framebuffer in
glGetFramebufferAttachmentParameteriv() for gles3. Fixes unexpected GL
errors in gles3 conformance test case:
framebuffer_blit_functionality_multisampled_to_singlesampled_blit

V2: Use _mesa_is_gles3() check to restrict allowed attachment types to
specific APIs.

Signed-off-by: Anuj Phogat <anuj.phogat@gmail.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
11 years agointel: Support blitting to multiple color draw buffers
Anuj Phogat [Wed, 12 Dec 2012 03:36:05 +0000 (19:36 -0800)]
intel: Support blitting to multiple color draw buffers

This patch enables blitting to multiple color attachments of a
framebuffer.  It also fixes a case when blitting to a framebuffer with
renderbuffer/texture attached to non-zero attachment point
i.e. GL_COLOR_ATTACHMENT{1, 2, ...}.  Earlier we were incorrectly
blitting to GL_COLOR_ATTACHMENT0 by default.

V2: Use intel_copy_texsubimage() for blitting only if all the color
attachments can blit using it.

Signed-off-by: Anuj Phogat <anuj.phogat@gmail.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
11 years agometa: Add functionality to do _mesa_meta_BlitFrameBuffer() using glsl
Anuj Phogat [Wed, 28 Nov 2012 20:55:55 +0000 (12:55 -0800)]
meta: Add functionality to do _mesa_meta_BlitFrameBuffer() using glsl

This patch rewrites _mesa_meta_BlitFrameBuffer() function to add support
for blitting with GLSL/GLSL ES shaders. These changes were required to
support glBlitFrameBuffer() in gles3. This patch, along with other
patches in this series, make 16 failing framebuffer_blit test cases in
gles3 conformance pass.

V2: Properly handle flipped blits for source and destination
    renderbuffer / textures. Add support for GL_TEXTURE_RECTANGLE in
    _mesa_meta_BlitFrameBuffer. Create a temp depth texture to support
    depth buffer blitting.
V3: Remove unsupported / redundant shader code. Add an assertion to make
    sure that we don't use rectangle texture in ES. Put API guard on
    glTexEnvi().
V4: For gles3: Don't use ReadPixels or CopyTexImage2D to blit depth
    buffer.  gles3 spec says for CopyTexImage2D that "color buffer
    components can be dropped during the conversion to internalformat,
    but new components cannot be added." So, use the internal format of
    read renderbuffer to create texture for color buffer blitting.

Signed-off-by: Anuj Phogat <anuj.phogat@gmail.com>
Reviewed-by: Ian Romanick <idr@freedesktop.org>
11 years agomesa: Fix GL error generation in glBlitFramebuffer()
Anuj Phogat [Mon, 7 Jan 2013 23:55:31 +0000 (15:55 -0800)]
mesa: Fix GL error generation in glBlitFramebuffer()

V2:
If mask has GL_STENCIL_BUFFER_BIT set, the depth formats for
readRenderBuffer and drawRenderBuffer must match unless one of the two
buffers doesn't have depth, in which case it's not blitted, so the
format check should be ignored.  Same comment goes for stencil formats
in depth renderbuffers if mask has GL_DEPTH_BUFFER_BIT set.

v3 (Kayden): Refactor code to be a bit more readable.

Signed-off-by: Anuj Phogat <anuj.phogat@gmail.com>
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
11 years agomesa: Make ES3 glDrawBuffers() only accept BACK/NONE for the winsys fbo.
Kenneth Graunke [Tue, 18 Dec 2012 21:26:04 +0000 (13:26 -0800)]
mesa: Make ES3 glDrawBuffers() only accept BACK/NONE for the winsys fbo.

Nothing was explicitly checking this.

v2: Update GL3 spec reference.

Signed-off-by: Anuj Phogat <anuj.phogat@gmail.com>
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> [v2]
Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> [v1]
11 years agomesa: Handle GL_BACK correctly for ES 3.0 in glDrawBuffers().
Kenneth Graunke [Tue, 18 Dec 2012 21:26:03 +0000 (13:26 -0800)]
mesa: Handle GL_BACK correctly for ES 3.0 in glDrawBuffers().

In ES 3.0, when calling glDrawBuffers() on the window system
framebuffer, the only valid targets are GL_NONE or GL_BACK.  Since there
is no stereo rendering in ES 3.0, this is a single buffer, unlike
desktop where it may be two (and thus isn't allowed).

For single-buffered configs, GL_BACK ironically means the front (and
only) buffer.  I'm not sure that it matters, however, as ES shouldn't
have front buffer rendering in the first place.

Fixes es3conform framebuffer_blit_coverage_default_draw_buffer_binding.

v2: Update GLES3 spec reference.

Signed-off-by: Anuj Phogat <anuj.phogat@gmail.com>
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> [v2]
Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> [v1]
11 years agoegl/dri2: Fix typo in the previous commit
Ian Romanick [Tue, 15 Jan 2013 22:17:46 +0000 (14:17 -0800)]
egl/dri2: Fix typo in the previous commit

I didn't notice this due to a noobed piglit run.  It wasn't previously
noticed because the patch was only run on a driver that supported GLES3.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
11 years agolibgl-gdi: Avoid hangs on DLL_PROCESS_DETACH.
Rob Schneider [Tue, 15 Jan 2013 19:49:12 +0000 (11:49 -0800)]
libgl-gdi: Avoid hangs on DLL_PROCESS_DETACH.

At process exit DLL_PROCESS_DETACH is signaled to DllMain(), where then
a final cleanup is triggered.  In stw_cleanup() code is triggered that
tries to communicate a shutdown to the spawned threads -- however at
that time those threads have already been terminated by the OS and so
the process hangs.

v2: skip stw_cleanup_thread() too

Signed-off-by: José Fonseca <jfonseca@vmware.com>
11 years agoegl/dri2: Add plumbing for EGL_OPENGL_ES3_BIT_KHR
Chad Versace [Tue, 20 Nov 2012 21:43:11 +0000 (13:43 -0800)]
egl/dri2: Add plumbing for EGL_OPENGL_ES3_BIT_KHR

Fixes error EGL_BAD_ATTRIBUTE in the tests below on Intel Sandybridge:
    * piglit egl-create-context-verify-gl-flavor, testcase OpenGL ES 3.0
    * gles3conform, revision 19700, when runnning GL3Tests with -fbo

This plumbing is added in order to comply with the EGL_KHR_create_context
spec. According to the EGL_KHR_create_context spec, it is illegal to call
eglCreateContext(EGL_CONTEXT_MAJOR_VERSION_KHR=3) with a config whose
EGL_RENDERABLE_TYPE does not contain the EGL_OPENGL_ES3_BIT_KHR. The
pertinent
portion of the spec is quoted below; the key word is "respectively".

  * If <config> is not a valid EGLConfig, or does not support the
    requested client API, then an EGL_BAD_CONFIG error is generated
    (this includes requesting creation of an OpenGL ES 1.x, 2.0, or
    3.0 context when the EGL_RENDERABLE_TYPE attribute of <config>
    does not contain EGL_OPENGL_ES_BIT, EGL_OPENGL_ES2_BIT, or
    EGL_OPENGL_ES3_BIT_KHR respectively).

To create this patch, I searched for all the ES2 bit plumbing by calling
`git grep "ES2_BIT\|DRI_API_GLES2" src/egl`, and then at each location
added a case for ES3.

Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
11 years agointel: Expose support for DRI_API_GLES3
Chad Versace [Thu, 22 Nov 2012 00:55:43 +0000 (16:55 -0800)]
intel: Expose support for DRI_API_GLES3

If the hardware/driver combo supports GLES3, then set the GLES3 bit in
intel_screen's bitmask of supported DRI API's.  Neither the EGL nor GLX
layer uses the bit yet.

Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
11 years agodri: Define enum __DRI_API_GLES3
Chad Versace [Tue, 20 Nov 2012 21:27:14 +0000 (13:27 -0800)]
dri: Define enum __DRI_API_GLES3

This enum corresponds to EGL_OPENGL_ES3_BIT_KHR.
Neither the GLX nor EGL layer use the enum yet.

I don't like the GLES bits. I'd prefer that all GLES APIs be exposed
through a single API bit, as is done in GLX_EXT_create_context_es_profile.
But, we need this GLES3 enum in order to do the plumbing necessary to
correctly support EGL_OPENGL_ES3_BIT_KHR as required by the
EGL_KHR_create_context spec.

Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
11 years agointel: Move validation of context version into intelInitContext
Chad Versace [Thu, 22 Nov 2012 00:22:19 +0000 (16:22 -0800)]
intel: Move validation of context version into intelInitContext

Each driver (i830, i915, i965) used independent but similar code to
validate the requested context version. With the rececnt arrival of GLES3,
that logic has needed an update. Rather than apply identical updates to
each drivers validation code, let's just move the validation into the
shared routine intelInitContext.

This refactor required some incidental changes to functions
i830CreateContext and intelInitContext. For each function, this patch:
    - Adds context version parameters to the signature.
    - Adds a DRI_CTX_ERROR out param to the signature.
    - Sets the DRI_CTX_ERROR at each early return.

Tested against gen6 with piglit egl-create-context-verify-gl-flavor.
Verified that this patch does not change the set of exposed EGL context
flavors.

Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
11 years agointel: Set screen's api mask according to hw capabilities (v3)
Chad Versace [Wed, 21 Nov 2012 23:08:27 +0000 (15:08 -0800)]
intel: Set screen's api mask according to hw capabilities (v3)

Before this patch, intelInitScreen2 set DRIScreen::api_mask with the hacky
heuristic below:

    if (gen >= 3)
        api_mask = GL | GLES1 | GLES2;
    else
        api_mask = 0;

This hack was likely broken on gen2 (i830), but I don't care enough to
properly investigate. It appears that every EGLConfig on i830 has
EGL_RENDERABLE_TYPE=0, and thus eglCreateContext will never succeed.
Anyway, moving on to living drivers...

With the arrival of EGL_OPENGL_ES3_BIT_KHR, this heuristic is now
insufficient. We must enable the GLES3 bit if and only if the driver is
capable of creating a GLES3 context. This requires us to determine the
maximum supported context version supported by the hardware/driver for
each api *during initialization of intel_screen*.

Therefore, this patch adds four new fields to intel_screen which indicate
the maximum supported context version for each api:
  max_gl_core_version
  max_gl_compat_version
  max_gl_es1_version
  max_gl_es2_version

The api mask is now correctly set as:

    api_mask = GL;
    if (max_gl_es1_version > 0)
        api_mask |= GLES1;
    if (max_gl_es2_version > 0)
        api_mask |= GLES2;

Tested against gen6 with piglit egl-create-context-verify-gl-flavor.
Verified that this patch does not change the set of exposed EGL context
flavors.

v2:
  - Replace the if-tree on gen with a switch, for Ian.
  - Unconditionally enable the DRI_API_OPENGL bit, for Ian.

v3:
  - Drop max gl version to 1.4 on gen3 if !has_occlusion_query,
    because occlusion queries entered core in 1.5. For Ian.

v4:
  - Drop ES2 version back to 2.0 due to rebase (Ian).

Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
Reviewed-by: Ian Romanick <ian.d.romanick.intel.com>
11 years agomesa: Return INVALID_ENUM for glReadPixels(..., GL_DEPTH_*, ...) on ES 3
Matt Turner [Fri, 30 Nov 2012 23:07:54 +0000 (15:07 -0800)]
mesa: Return INVALID_ENUM for glReadPixels(..., GL_DEPTH_*, ...) on ES 3

I'm not sure if this is the correct fix. The
_mesa_es_error_check_format_and_type function (used above in the ES 1
and 2 cases) was originally added for glTexImage checking and allows
GL_DEPTH_STENCIL/GL_UNSIGNED_INT_24_8 combinations. Using it in ES 3
causes other tests to regress.

Fixes es3conform's packed_depth_stencil_error test.
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> (v1)
Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
11 years agomesa: Return INVALID_OPERATION when type is known but not allowed
Matt Turner [Fri, 30 Nov 2012 23:07:18 +0000 (15:07 -0800)]
mesa: Return INVALID_OPERATION when type is known but not allowed

INVALID_ENUM is for when the type is simply not known.

Fixes part of es3conform's packed_depth_stencil_error test.
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
11 years agomesa: Allow HALF_FLOAT in glVertexAttribPointer for GLES3
Matt Turner [Thu, 29 Nov 2012 05:45:19 +0000 (21:45 -0800)]
mesa: Allow HALF_FLOAT in glVertexAttribPointer for GLES3

Fixes es3conform's half_float_max_vertex_dimensions and
half_float_textures tests.

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
11 years agomesa: Reject texture-only formats as renderbuffer formats in ES 3
Matt Turner [Tue, 20 Nov 2012 21:45:03 +0000 (13:45 -0800)]
mesa: Reject texture-only formats as renderbuffer formats in ES 3

ES 3 specifies some formats as texture-only (i.e., not available for
renderbuffers).

See the "Required Texture Formats" section (pg 126) of the ES 3 spec.

v2: Allow RED and RG float rendering in core profiles The check used to
be (version > 30) || (compat profile w/extensions).  Just deleting
<version > 30) broke 3.0+ core profiles.

Fixes es3conform's color_buffer_unsupported_format test.

Signed-off-by: Matt Turner <mattst88@gmail.com>
Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Acked-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
11 years agomesa: Fix default value of BUFFER_ACCESS_FLAGS.
Kenneth Graunke [Sun, 18 Nov 2012 05:23:28 +0000 (21:23 -0800)]
mesa: Fix default value of BUFFER_ACCESS_FLAGS.

According to both the GL 3.0 and ES 3.0 specifications (table 2.7 for GL
and table 2.8 for ES), the default value of BUFFER_ACCESS_FLAGS is
supposed to be zero.

Note that there are two related quantities: the obsolete BUFFER_ACCESS
enum and the new BUFFER_ACCESS_FLAGS bitfield.

BUFFER_ACCESS can only be GL_READ_ONLY, GL_WRITE_ONLY, or GL_READ_WRITE;
BUFFER_ACCESS_FLAGS can easily represent all three via GL_MAP_WRITE_BIT,
GL_MAP_READ_BIT, and their logical or.  It also supports more flags.

Thus, Mesa only stores the bitfield, and simply computes the old enum
when queried, via simplified_access_mode(bufObj->AccessFlags).

The tricky part is that, while BUFFER_ACCESS_FLAGS defaults to 0,
BUFFER_ACCESS defaults to GL_READ_WRITE for desktop [GL 3.0, table 2.8]
and GL_WRITE_ONLY_OES for ES [the GL_EXT_map_buffer_range extension].

Mesa tried to implement this by setting the default AccessFlags to
GL_MAP_READ_BIT | GL_MAP_WRITE_BIT on desktop, and GL_MAP_WRITE_BIT on
ES.  But in all specifications, it needs to be 0.

This patch moves that logic into simplified_access_mode(): when
AccessFlags == 0, it now returns GL_READ_WRITE for desktop and
GL_WRITE_ONLY for ES 1/2.  (BUFFER_ACCESS doesn't exist on ES 3.0,
so it's irrelevant there.)

With that in place, it changes the AccessFlags default to 0.

Fixes three es3conform tsets:
- copy_buffer_defaults
- map_buffer_range_modify_indices
- pixel_buffer_object_default_parameters

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
11 years agomesa: Rework crazy error code rules in glDrawBuffers().
Kenneth Graunke [Fri, 16 Nov 2012 22:52:01 +0000 (14:52 -0800)]
mesa: Rework crazy error code rules in glDrawBuffers().

Perhaps most importantly, this patch adds comments quoting the relevant
spec paragraphs above each error condition.

It also makes three changes:
- For FBOs, GL_COLOR_ATTACHMENTm where m >= MaxDrawBuffers is supposed
  to generate INVALID_OPERATION (not INVALID_ENUM).
- Constants that refer to multiple buffers (such as FRONT, BACK, LEFT,
  RIGHT, and FRONT_AND_BACK) are supposed to generate INVALID_OPERATION,
  not INVALID_ENUM.
- In ES 3.0, for FBOs, buffers[i] must be NONE or GL_COLOR_ATTACHMENTi
  or else INVALID_OPERATION occurs.  (This is a new restriction.)

Fixes es3conform's draw-buffers-api test.

v2: The error path was missing a "return" like all the other error
paths.  Also, we may as well call it glDrawBuffers in the error message
since the ARB suffix doesn't exist in ES 3.

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
11 years agoi965: Force even an empty query to flush all previous queries.
Carl Worth [Thu, 13 Dec 2012 23:23:10 +0000 (15:23 -0800)]
i965: Force even an empty query to flush all previous queries.

The specification requires that query results are processed in order, (when
one query result is returned, all previous query of the same type must also be
available). The implementation was failing this requirement in the case of
BeginQuery and EndQuery with no intervening drawing, (the result would be made
available immediately without flushing previous queries).

This fixes the following es3conform test:

occlusion_query_query_order

as well as the following piglit test:

occlusion_query_order

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
11 years agometa: Allow meta operations to pause/resume an active occlusion query
Carl Worth [Thu, 13 Dec 2012 19:15:03 +0000 (11:15 -0800)]
meta: Allow meta operations to pause/resume an active occlusion query

This allows for avoiding the occlusion query erroneously accumulating results
during the meta operation. This functionality is made conditional on a new
MESA_META_OCCLUSION_QUERY bit so that meta-operations which should generate
fragments can continue to get the current behavior.

The implementation of glClear is specifically augmented to request the flag
since glClear is specified to not generate fragments.

This fixes the following es3conform tests:

occlusion_query_draw_occluded.test
  occlusion_query_clear
occlusion_query_custom_framebuffer
occlusion_query_stencil_test
occlusion_query_discarded_fragments

As well as the following piglit test:

occlusion_query_meta_no_fragments

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
11 years agoqueryobj: Add EverBound flag, making ISQuery() return false before BeginQuery()
Carl Worth [Thu, 13 Dec 2012 20:47:56 +0000 (12:47 -0800)]
queryobj: Add EverBound flag, making ISQuery() return false before BeginQuery()

This flag allows for the specified behavior that GenQueries reserves a name,
but does not associate an object with it until BeginQuery. We allocate the
object immediately with the new EverBound flag set to false, and then set the
flag to true at the time of BeginQuery.

This allows us to implement a conformant IsQuery function by checking the
state of the new EverBound flag.

This fixes the following es3conform tests:

occlusion_query_genqueries
occlusion_query_is_query_nonzero

and the following piglit test:

occlusion_query_lifetime

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
11 years agoUpdate comment to specify actual text being referenced from the specification.
Carl Worth [Mon, 17 Dec 2012 21:38:39 +0000 (13:38 -0800)]
Update comment to specify actual text being referenced from the specification.

The reference to "correct, see spec" was a bit too vague to be useful,
(particularly since the language being referenced here changes between OpenGL
3.1 and OpenGL 4.3).

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
11 years agodocs: minor updates to VMware guest driver docs
Brian Paul [Tue, 15 Jan 2013 20:00:09 +0000 (13:00 -0700)]
docs: minor updates to VMware guest driver docs

The DRM's --enable-vmwgfx-experimental-api flag isn't needed anymore.

11 years agor300g: fix and cleanup flushing before clearing CMASK, ZMASK, and HIZ
Marek Olšák [Mon, 14 Jan 2013 00:38:51 +0000 (01:38 +0100)]
r300g: fix and cleanup flushing before clearing CMASK, ZMASK, and HIZ

11 years agor300g: implement MSAA compression and fast MSAA color clear
Marek Olšák [Sat, 12 Jan 2013 02:29:40 +0000 (03:29 +0100)]
r300g: implement MSAA compression and fast MSAA color clear

These are optimizations which make MSAA a lot faster.

The MSAA work is complete with this commit.  (except for enablement of AA
optimizations for RGBA16F, for which a patch is ready and waiting until
the kernel CS checker fix lands)

MSAA can't be made any faster as far as hw programming is concerned.

The catch is only one process and one colorbuffer can use the optimizations
at a time.  There usually is only one MSAA colorbuffer, so it shouldn't be
an issue.

Also, there is a limit on the size of MSAA colorbuffer resolution in terms
of megapixels.  If the limit is surpassed, the AA optimizations are disabled.
The limit is:
- 1 Mpix on low-end and some mid-level chipsets (1024x768 and 1280x720)
- 2 Mpix on some mid-level chipsets (1600x1200 and 1920x1080)
- 3 or 4 Mpix on high-end chipsets (2048x1536 or 2560x1600, respectively)
It corresponds to the number of raster pipes (= GB pipes) available, each pipe
can hold 1 Mpix of AA compression data.

If it's enabled, the driver prints to stdout:
  radeon: Acquired access to AA optimizations.

11 years agogallium/util: add a half float array to util_color
Marek Olšák [Fri, 11 Jan 2013 15:45:54 +0000 (16:45 +0100)]
gallium/util: add a half float array to util_color

For convenient packing into half floats.

11 years agoRevert "targets/opencl: Link against libgallium.la instead of libgallium.a"
Tom Stellard [Mon, 14 Jan 2013 17:20:53 +0000 (17:20 +0000)]
Revert "targets/opencl: Link against libgallium.la instead of libgallium.a"

This reverts commit 4148a29ed83d1d85bff3d4e40e847128011c3f20.

This is a work-around for bug:
https://bugs.freedesktop.org/show_bug.cgi?id=59334

We really should be linking against libgallium.la instead of
libgallium.a, but until we can figure why linking against libgallium.la
causes runtime failures in clover we will continue to link against
libgallium.a

Acked-by: Andreas Boll <andreas.boll.dev@gmail.com>
Tested-by: Aaron Watry <awatry@gmail.com>
11 years agost/mesa: use a generic varying to pass the clear color to the FS
Marek Olšák [Mon, 14 Jan 2013 16:17:20 +0000 (17:17 +0100)]
st/mesa: use a generic varying to pass the clear color to the FS

The color varying may have reduced precision or be even clamped.

Reviewed-by: Brian Paul <brianp@vmware.com>
11 years agogallium/util: fix glClear with MRT by making the FS write to all cbufs
Marek Olšák [Mon, 14 Jan 2013 16:07:58 +0000 (17:07 +0100)]
gallium/util: fix glClear with MRT by making the FS write to all cbufs

Reviewed-by: Brian Paul <brianp@vmware.com>
11 years agost/mesa: fix InternalFormat for Z24X8 window-system buffers
Marek Olšák [Mon, 14 Jan 2013 07:40:18 +0000 (08:40 +0100)]
st/mesa: fix InternalFormat for Z24X8 window-system buffers

This probably doesn't fix anything, but it's good to be consistent.

Reviewed-by: Brian Paul <brianp@vmware.com>
11 years agost/mesa: remove dead conditional in Clear
Marek Olšák [Mon, 14 Jan 2013 07:20:42 +0000 (08:20 +0100)]
st/mesa: remove dead conditional in Clear

I think the conditional always evaluates to false.

If I understand the code in core Mesa correctly, depthBits or stencilBits
is 0 if the depth or stencil renderbuffer is NULL, respectively.

Reviewed-by: Brian Paul <brianp@vmware.com>
11 years agost/mesa: simplify conditionals in Clear
Marek Olšák [Mon, 14 Jan 2013 07:16:18 +0000 (08:16 +0100)]
st/mesa: simplify conditionals in Clear

just check depth and stencil separately, the outcome is the same

Reviewed-by: Brian Paul <brianp@vmware.com>
11 years agost/mesa: fix glClear with different colormask for each colorbuffer
Marek Olšák [Mon, 14 Jan 2013 06:18:00 +0000 (07:18 +0100)]
st/mesa: fix glClear with different colormask for each colorbuffer

Reviewed-by: Brian Paul <brianp@vmware.com>