mesa.git
12 years agoi965: Use 64-bit writes for occlusion queries.
Kenneth Graunke [Tue, 7 Aug 2012 17:17:04 +0000 (10:17 -0700)]
i965: Use 64-bit writes for occlusion queries.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

To silence compiler warning.

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

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

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

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

Otherwise we're likely to hang the GPU.

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

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

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

Move releasing the VM area after closing the bo handle.

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

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

Fixes same on both sides defect reported by Coverity.

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

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

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

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

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

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

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

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

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

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

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

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

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

We'll use this for UBO surfaces.

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

Fixes piglit GL_ARB_uniform_buffer_object/dlist.

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

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

Fixes piglit GL_ARB_uniform_buffer_object/deletebuffers.

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

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

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

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

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

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

Fixes piglit GL_ARB_uniform_buffer_object/data-size test.

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

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

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

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

v2: Fix swapped then/else cases.

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

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

Fixes piglit getactiveuniformsiv-uniform_block_index.

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

Fixes some failures in GL_ARB_uniform_buffer_object/maxblocks.

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

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

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

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

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

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

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

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

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

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

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

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

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

variable_ref(ir_variable("a")),

and even more so does it not want to see

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

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

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

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

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

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

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

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

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

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

v2: Fix a bad <= 30 check.

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

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

This turns on window system MSAA.

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

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

  No piglit regressions on Ivybridge.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ditto for intel_miptree_unmap.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Fixes resource leak defect reported by Coverity.

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

Fixes uninitialized scalar field defect reported by Coverity.

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

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

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

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

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

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

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

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

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

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

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

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

NOTE: This is a candidate for the 8.0 branch.

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

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

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

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

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

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

See the preceding commit for a description of the problem.

NOTE: This is a candidate for stable release branches.

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

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

Consider a texture call such as:

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

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

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

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

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

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

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

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

NOTE: This is a candidate for stable release branches.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=52129
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
12 years agoi965/fs: Factor out texcoord setup into a helper function.
Kenneth Graunke [Sun, 5 Aug 2012 03:40:42 +0000 (20:40 -0700)]
i965/fs: Factor out texcoord setup into a helper function.

With the textureRect support and GL_CLAMP workarounds, it's grown
sufficiently that it deserves its own function.  Separating it out
makes the original function much more readable.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
12 years agoi965/fs: Move message header and texture offset setup to generate_tex().
Kenneth Graunke [Sun, 5 Aug 2012 03:33:13 +0000 (20:33 -0700)]
i965/fs: Move message header and texture offset setup to generate_tex().

Setting the texture offset bits in the message header involves very
specific hardware register descriptions.  As such, I feel it's better
suited for the lower level "generate" layer that has direct access to
the weird register layouts, rather than at the fs_inst abstraction layer.

This also parallels the approach I took in the VS backend.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
12 years agor600g: atomize sampler state v2
Jerome Glisse [Wed, 1 Aug 2012 19:53:11 +0000 (15:53 -0400)]
r600g: atomize sampler state v2

Use atom for sampler state. Does not provide new functionality
or fix any bug. Just a step toward full atom base r600g.

v2: Split seamless on r6xx/r7xx into it's own atom. Make sure it's
    emited after sampler and with a pipeline flush before otherwise
    it does not take effect.

Signed-off-by: Jerome Glisse <jglisse@redhat.com>
12 years agoradeonsi: add some new pci ids
Alex Deucher [Mon, 6 Aug 2012 14:54:31 +0000 (10:54 -0400)]
radeonsi: add some new pci ids

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
12 years agor600g: add additional evergreen pci ids
Alex Deucher [Mon, 6 Aug 2012 14:49:47 +0000 (10:49 -0400)]
r600g: add additional evergreen pci ids

Note: this is a candidate for the stable branches.

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
12 years agost/mesa: merge fragment/vertex sampler update code
Brian Paul [Mon, 6 Aug 2012 14:35:20 +0000 (08:35 -0600)]
st/mesa: merge fragment/vertex sampler update code

Reviewed-by: José Fonseca <jfonseca@vmware.com>
12 years agost/mesa: massage update_vertex_samplers() code
Brian Paul [Mon, 6 Aug 2012 14:35:20 +0000 (08:35 -0600)]
st/mesa: massage update_vertex_samplers() code

...to look like update_fragment_samplers() code, as with the previous
commit.  The next step would be to merge the two functions.

Reviewed-by: José Fonseca <jfonseca@vmware.com>
12 years agost/mesa: merge fragment/vertex texture update code
Brian Paul [Mon, 6 Aug 2012 14:35:20 +0000 (08:35 -0600)]
st/mesa: merge fragment/vertex texture update code

Reviewed-by: José Fonseca <jfonseca@vmware.com>
12 years agost/mesa: massage the update_vertex_textures() code
Brian Paul [Mon, 6 Aug 2012 14:35:20 +0000 (08:35 -0600)]
st/mesa: massage the update_vertex_textures() code

...to look like update_fragment_textures() code.  The next step would
be to merge the two functions.

Reviewed-by: José Fonseca <jfonseca@vmware.com>
12 years agost/mesa: rename some vertex/fragment state fields for better consistency
Brian Paul [Mon, 6 Aug 2012 14:35:20 +0000 (08:35 -0600)]
st/mesa: rename some vertex/fragment state fields for better consistency

Reviewed-by: José Fonseca <jfonseca@vmware.com>
12 years agollvmpipe: consolidate the sampler and sampler view setting code
Brian Paul [Sat, 4 Aug 2012 14:46:42 +0000 (08:46 -0600)]
llvmpipe: consolidate the sampler and sampler view setting code

Less code.  And as with softpipe, if/when we consolidate the pipe_context
functions for binding sampler state, this will make the llvmpipe changes
trivial.

Reviewed-by: José Fonseca <jfonseca@vmware.com>
12 years agollvmpipe: combine vertex/fragment sampler state into an array
Brian Paul [Sat, 4 Aug 2012 14:46:42 +0000 (08:46 -0600)]
llvmpipe: combine vertex/fragment sampler state into an array

This will allow code consolidation in the next patch.

Reviewed-by: José Fonseca <jfonseca@vmware.com>
12 years agosoftpipe: consolidate vert/frag/geom sampler setting functions
Brian Paul [Sat, 4 Aug 2012 14:46:41 +0000 (08:46 -0600)]
softpipe: consolidate vert/frag/geom sampler setting functions

The functions for setting samplers and sampler views for vertex,
fragment and geometry shaders were nearly identical.  Now they
use shared code.

In the future, if the pipe_context functions for setting samplers
and sampler views for vert/frag/geom/compute are combined, this
will make updating the softpipe driver a snap.

Reviewed-by: José Fonseca <jfonseca@vmware.com>
12 years agosoftpipe: consolidate sampler-related arrays
Brian Paul [Sat, 4 Aug 2012 14:46:41 +0000 (08:46 -0600)]
softpipe: consolidate sampler-related arrays

Combine separate arrays for vertex/fragment/geometry samplers, etc into
one array indexed by PIPE_SHADER_x.

This allows us to collapse separate code for vertex/fragment/geometry
state into loops over the shader stage.  More to come.

Reviewed-by: José Fonseca <jfonseca@vmware.com>
12 years agosoftpipe: combine vert/frag/geom texture caches in an array
Brian Paul [Sat, 4 Aug 2012 14:46:41 +0000 (08:46 -0600)]
softpipe: combine vert/frag/geom texture caches in an array

This lets us consolidate some code now, and more in subsequent patches.

Reviewed-by: José Fonseca <jfonseca@vmware.com>
12 years agomesa: Fix off-by-one error in Parse_TextureImageId.
Vinson Lee [Sat, 4 Aug 2012 06:51:34 +0000 (23:51 -0700)]
mesa: Fix off-by-one error in Parse_TextureImageId.

Fixes out-of-bounds write defect reported by Coverity.

Signed-off-by: Vinson Lee <vlee@freedesktop.org>
Reviewed-by: Brian Paul <brianp@vmware.com>
12 years agoutil: Move dereference after null check in util_resource_copy_region.
Vinson Lee [Sat, 4 Aug 2012 06:38:29 +0000 (23:38 -0700)]
util: Move dereference after null check in util_resource_copy_region.

Fixes dereference before null check defect reported by Coverity.

Signed-off-by: Vinson Lee <vlee@freedesktop.org>
Reviewed-by: Brian Paul <brianp@vmware.com>
12 years agoi915g: silence a const pointer warning
Brian Paul [Sat, 4 Aug 2012 14:30:15 +0000 (08:30 -0600)]
i915g: silence a const pointer warning

12 years agoradeonsi: fix build failure after blitter changes
Marek Olšák [Sat, 4 Aug 2012 14:34:24 +0000 (16:34 +0200)]
radeonsi: fix build failure after blitter changes

12 years agor600g: precompute color buffer state in pipe_surface and reuse it
Marek Olšák [Wed, 1 Aug 2012 23:43:01 +0000 (01:43 +0200)]
r600g: precompute color buffer state in pipe_surface and reuse it

12 years agor600g: precompute depth buffer state in pipe_surface and reuse it
Marek Olšák [Wed, 1 Aug 2012 23:43:01 +0000 (01:43 +0200)]
r600g: precompute depth buffer state in pipe_surface and reuse it

This is done on-demand, because we don't know in advance if a zbuffer
will be bound as depth or color.

12 years agor600g: simplify create_surface
Marek Olšák [Wed, 1 Aug 2012 15:04:29 +0000 (17:04 +0200)]
r600g: simplify create_surface

12 years agor600g: drop the old texture allocation code
Marek Olšák [Sun, 29 Jul 2012 16:53:19 +0000 (18:53 +0200)]
r600g: drop the old texture allocation code

Made obsolete by the libdrm surface allocator.

12 years agor600g: make sure copying of all texture formats is accelerated
Marek Olšák [Fri, 27 Jul 2012 22:38:42 +0000 (00:38 +0200)]
r600g: make sure copying of all texture formats is accelerated

12 years agogallium/u_blitter: add a query for checking whether copying is supported
Marek Olšák [Fri, 27 Jul 2012 23:19:18 +0000 (01:19 +0200)]
gallium/u_blitter: add a query for checking whether copying is supported

v2: add comments

12 years agor600g: don't decompress depth or stencil if there isn't any
Marek Olšák [Sat, 28 Jul 2012 11:55:59 +0000 (13:55 +0200)]
r600g: don't decompress depth or stencil if there isn't any

12 years agor600g: correct texture memory size for Z32F_S8X24 on evergreen
Marek Olšák [Sun, 29 Jul 2012 15:10:00 +0000 (17:10 +0200)]
r600g: correct texture memory size for Z32F_S8X24 on evergreen

12 years agogallium/u_blitter: remove fallback for stencil copy that all drivers skipped
Marek Olšák [Fri, 27 Jul 2012 20:45:52 +0000 (22:45 +0200)]
gallium/u_blitter: remove fallback for stencil copy that all drivers skipped

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