mesa.git
13 years agost/mesa: silence int/float and double/float conversion warnings
Brian Paul [Thu, 4 Aug 2011 14:22:31 +0000 (08:22 -0600)]
st/mesa: silence int/float and double/float conversion warnings

13 years agost/mesa: move declaration before code
Brian Paul [Thu, 4 Aug 2011 14:22:31 +0000 (08:22 -0600)]
st/mesa: move declaration before code

13 years agomesa: minor comment updates in enable.c
Brian Paul [Thu, 4 Aug 2011 14:22:31 +0000 (08:22 -0600)]
mesa: minor comment updates in enable.c

13 years agomesa: whitespace, formatting fixes in GetTexParameter() code
Brian Paul [Thu, 4 Aug 2011 14:22:31 +0000 (08:22 -0600)]
mesa: whitespace, formatting fixes in GetTexParameter() code

13 years agomesa: add null ptr checks in GetTexParameterI[u]iv() functions
Brian Paul [Thu, 4 Aug 2011 14:22:31 +0000 (08:22 -0600)]
mesa: add null ptr checks in GetTexParameterI[u]iv() functions

13 years agomesa: condense GL_TEXTURE_RESIDENT query code
Brian Paul [Thu, 4 Aug 2011 14:22:31 +0000 (08:22 -0600)]
mesa: condense GL_TEXTURE_RESIDENT query code

13 years agomesa: make error handling in glGetTexParameter() a bit more concise
Brian Paul [Thu, 4 Aug 2011 14:22:30 +0000 (08:22 -0600)]
mesa: make error handling in glGetTexParameter() a bit more concise

13 years agonv50: implement resource_resolve with custom blit
Christoph Bumiller [Thu, 28 Jul 2011 13:54:53 +0000 (15:54 +0200)]
nv50: implement resource_resolve with custom blit

13 years agost/mesa: implement multisample resolve via BlitFramebuffer
Christoph Bumiller [Wed, 3 Aug 2011 14:01:41 +0000 (16:01 +0200)]
st/mesa: implement multisample resolve via BlitFramebuffer

13 years agogallium: extend resource_resolve to accommodate BlitFramebuffer
Christoph Bumiller [Wed, 3 Aug 2011 13:43:16 +0000 (15:43 +0200)]
gallium: extend resource_resolve to accommodate BlitFramebuffer

Resolve via glBlitFramebuffer allows resolving a sub-region of a
renderbuffer to a different location in any mipmap level of some
other texture, and, with a new extension, even scaling. Therefore,
location and size parameters are needed.

The mask parameter was added because resolving only depth or only
stencil of a combined buffer is possible as well.

Full information about the blit operation allows the drivers to
take the most efficient path they possibly can.

13 years agost/mesa: determine Const.MaxSamples in init_extensions
Christoph Bumiller [Thu, 28 Jul 2011 13:26:01 +0000 (15:26 +0200)]
st/mesa: determine Const.MaxSamples in init_extensions

v2: Check for non-pow2 sample counts as well.

13 years agoegl/gbm: Fix EGL_DEFAULT_DISPLAY
Benjamin Franzke [Wed, 29 Jun 2011 06:49:39 +0000 (08:49 +0200)]
egl/gbm: Fix EGL_DEFAULT_DISPLAY

13 years agogbm: link gbm_gallium_drm.so against math library
Benjamin Franzke [Thu, 4 Aug 2011 11:37:42 +0000 (13:37 +0200)]
gbm: link gbm_gallium_drm.so against math library

This avoids the following runtime error with EGL on platforms that
require linking with libm for nontrivial math functions:

failed to load module: /xorg/lib64/gbm/gbm_gallium_drm.so: undefined
symbol: powf

(Based on Kristóf RALOVICHs patch and Ian's suggestions in
http://lists.freedesktop.org/archives/mesa-dev/2011-August/010036.html)

13 years agogbm/dri: avoid crash in dri_screen_create
RALOVICH, Kristóf [Sun, 31 Jul 2011 21:49:43 +0000 (23:49 +0200)]
gbm/dri: avoid crash in dri_screen_create

13 years agor600g: remove more of unused code
Marek Olšák [Thu, 4 Aug 2011 01:23:12 +0000 (03:23 +0200)]
r600g: remove more of unused code

This is a follow-up to f6df430a85141f6a384c18079fb5b2ad848dac0d.

13 years agor600g: take into account force_add_cf in pops
Vadim Girlin [Wed, 3 Aug 2011 11:35:02 +0000 (15:35 +0400)]
r600g: take into account force_add_cf in pops

When we have two ENDIFs in a row, we shouldn't modify the pop_count
for the same alu clause twice.

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

Note: this is a candidate for the 7.11 branch.

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
13 years agor600g: use backend mask for occlusion queries
Vadim Girlin [Tue, 2 Aug 2011 21:04:19 +0000 (01:04 +0400)]
r600g: use backend mask for occlusion queries

Use backend_map kernel query if supported, otherwise analyze ZPASS_DONE
results to get the mask.

Fixes lockups with predicated rendering due to incorrect query buffer
initialization on some cards.

Note: this is a candidate for the 7.11 branch.

Signed-off-by: Vadim Girlin <vadimgirlin@gmail.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
13 years agowinsys/radeon: remove dummy function pb_buffer
Marek Olšák [Tue, 2 Aug 2011 22:52:55 +0000 (00:52 +0200)]
winsys/radeon: remove dummy function pb_buffer

13 years agoutil: fix a typo in util_format_swizzle_4f
Marek Olšák [Tue, 2 Aug 2011 23:13:06 +0000 (01:13 +0200)]
util: fix a typo in util_format_swizzle_4f

Reported by Gustaw Smolarczyk.

13 years agoradeon: Remove some remaining set-but-unused variables.
Eric Anholt [Tue, 2 Aug 2011 20:49:05 +0000 (13:49 -0700)]
radeon: Remove some remaining set-but-unused variables.

These looked more like copy-and-paste to me than the others (which
looked more like possibly someone forgot to write some code in a
refactor), so I didn't verify where they came from.

13 years agoradeon: Remove set-but-unused variables in radeon_lock.c
Eric Anholt [Tue, 2 Aug 2011 20:47:18 +0000 (13:47 -0700)]
radeon: Remove set-but-unused variables in radeon_lock.c

These have been unused since this function's introduction in the FBO
support development around 2009.

13 years agoradeon: Remove set-but-unused variables in radeonSetTexBuffer2() variants.
Eric Anholt [Tue, 2 Aug 2011 20:41:59 +0000 (13:41 -0700)]
radeon: Remove set-but-unused variables in radeonSetTexBuffer2() variants.

These have been unused since 2009.

13 years agoradeon: Remove set-but-unused log2depth variable.
Eric Anholt [Tue, 2 Aug 2011 20:39:43 +0000 (13:39 -0700)]
radeon: Remove set-but-unused log2depth variable.

r100 doesn't support 3D GL_EXT_texture3D.

13 years agoradeon: Remove set-but-unused color_mask variable.
Eric Anholt [Tue, 2 Aug 2011 20:36:57 +0000 (13:36 -0700)]
radeon: Remove set-but-unused color_mask variable.

This has been around since the initial import in 2003 and never used.

13 years agointel: Fix unused variable warning.
Eric Anholt [Mon, 1 Aug 2011 23:06:59 +0000 (16:06 -0700)]
intel: Fix unused variable warning.

13 years agor600g: remove dummy function r600_bo_offset
Marek Olšák [Sat, 23 Jul 2011 02:29:59 +0000 (04:29 +0200)]
r600g: remove dummy function r600_bo_offset

Always returned 0.

13 years agor600g: remove unused code
Marek Olšák [Fri, 22 Jul 2011 16:45:30 +0000 (18:45 +0200)]
r600g: remove unused code

13 years agogallium/util: add functions for manipulating swizzles
Marek Olšák [Mon, 1 Aug 2011 23:04:58 +0000 (01:04 +0200)]
gallium/util: add functions for manipulating swizzles

Some of those have been in drivers already.

13 years agoi915: Only emit program errors when INTEL_DEBUG=wm or INTEL_DEBUG=fallbacks
Ian Romanick [Thu, 10 Feb 2011 21:20:26 +0000 (13:20 -0800)]
i915: Only emit program errors when INTEL_DEBUG=wm or INTEL_DEBUG=fallbacks

This makes piglit a lot more happy.  The errors are logged when
INTEL_DEBUG=fallbacks because the application is about to hit a big
software fallback.  We frequently ask people to run applications that
are hitting software fallbacks with INTEL_DEBUG=fallbacks so the we
can help them debug the reason for the software fallback.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agoi915: Fail without crashing if a Mesa IR program uses too many registers
Ian Romanick [Mon, 25 Jul 2011 23:41:39 +0000 (16:41 -0700)]
i915: Fail without crashing if a Mesa IR program uses too many registers

This can only happen in GLSL shaders because assembly shaders that use
too many temps are rejected by core Mesa.  It is easiest to make this
happen with shaders that contain flow-control that could not be lowered.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agoir_to_mesa: Emit warnings instead of errors for IR that can't be lowered
Ian Romanick [Mon, 25 Jul 2011 22:58:07 +0000 (15:58 -0700)]
ir_to_mesa: Emit warnings instead of errors for IR that can't be lowered

Rely on the driver to do the right thing.  This probably means falling
back to software.  Page 88 of the OpenGL 2.1 spec specifically says:

    "A shader should not fail to compile, and a program object should
    not fail to link due to lack of instruction space or lack of
    temporary variables. Implementations should ensure that all valid
    shaders and program objects may be successfully compiled, linked
    and executed."

There is no provision for saying "No" to a valid shader that is
difficult for the hardware to handle, so stop doing that.

On i915 this causes a large number of piglit tests to change from FAIL
to WARN.  The warning is because the driver still emits messages to
stderr like "i915_program_error: Unsupported opcode: BGNLOOP".

It also fixes ES2 conformance CorrectFull_frag and CorrectParse1_frag
on i915 (and probably other hardware that can't handle loops).

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agoir_to_mesa: Use Add linker_error instead of fail_link
Ian Romanick [Mon, 25 Jul 2011 22:55:59 +0000 (15:55 -0700)]
ir_to_mesa: Use Add linker_error instead of fail_link

The functions were almost identical.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agomesa: Ensure that gl_shader_program::InfoLog is never NULL
Ian Romanick [Thu, 28 Jul 2011 22:10:17 +0000 (15:10 -0700)]
mesa: Ensure that gl_shader_program::InfoLog is never NULL

This prevents assertion failures in ralloc_strcat.  The ralloc_free in
_mesa_free_shader_program_data can be omitted because freeing the
gl_shader_program in _mesa_delete_shader_program will take care of
this automatically.

A bunch of this code could use a refactor to use ralloc a bit more
effectively.  A bunch of the things that are allocated with malloc and
owned by the gl_shader_program should be allocated with ralloc (using
the gl_shader_program as the context).

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agolinker: Make linker_{error,warning} generally available
Ian Romanick [Thu, 28 Jul 2011 21:09:06 +0000 (14:09 -0700)]
linker: Make linker_{error,warning} generally available

linker_warning is a new function.  It's identical to linker_error
except that it doesn't set LinkStatus=false and it prepends "warning: "
on messages instead of "error: ".

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agolinker: Make linker_error set LinkStatus to false
Ian Romanick [Thu, 28 Jul 2011 21:04:09 +0000 (14:04 -0700)]
linker: Make linker_error set LinkStatus to false

Remove the other places that set LinkStatus to false since they all
immediately follow a call to linker_error.  The function linker_error
was previously known as linker_error_printf.  The name was changed
because it may seem surprising that a printf function will set an
error flag.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agoi965/gen5+: Fix incorrect miptree layout for non-power-of-two cubemaps.
Kenneth Graunke [Sat, 30 Jul 2011 23:44:49 +0000 (16:44 -0700)]
i965/gen5+: Fix incorrect miptree layout for non-power-of-two cubemaps.

For power-of-two sizes, h0 == mt->height0 since it's already a multiple
of two.  However, for NPOT, they're different; h1 should be computed
based on the original size.

Fixes piglit test "cubemap npot" and oglconform test "textureNPOT".

NOTE: This is a candidate for stable release branches.

Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
13 years agoglsl: improve the accuracy of the atan(x,y) builtin function.
Paul Berry [Wed, 27 Jul 2011 22:53:31 +0000 (15:53 -0700)]
glsl: improve the accuracy of the atan(x,y) builtin function.

The previous formula for atan(x,y) returned a value of +/- pi whenever
|x|<0.0001, and used a formula based on atan(y/x) otherwise.  This
broke in cases where both x and y were small (e.g. atan(1e-5, 1e-5)).

This patch modifies the formula so that it returns a value of +/- pi
whenever |x|<1e-8*|y|, and uses the formula based on atan(y/x)
otherwise.

13 years agoglsl: improve the accuracy of the asin() builtin function.
Paul Berry [Wed, 27 Jul 2011 21:34:12 +0000 (14:34 -0700)]
glsl: improve the accuracy of the asin() builtin function.

The previous formula for asin(x) was algebraically equivalent to:

sign(x)*(pi/2 - sqrt(1-|x|)*(A + B|x| + C|x|^2))

where A, B, and C were arbitrary constants determined by a curve fit.

This formula had a worst case absolute error of 0.00448, an unbounded
worst case relative error, and a discontinuity near x=0.

Changed the formula to:

sign(x)*(pi/2 - sqrt(1-|x|)*(pi/2 + (pi/4-1)|x| + A|x|^2 + B|x|^3))

where A and B are arbitrary constants determined by a curve fit.  This
has a worst case absolute error of 0.00039, a worst case relative
error of 0.000405, and no discontinuities.

I don't expect a significant performance degradation, since the extra
multiply-accumulate should be fast compared to the sqrt() computation.

Fixes piglit tests {vs,fs}-asin-float and {vs,fs}-atan-*

13 years agoglsl: Remove duplicate comment
Chad Versace [Mon, 1 Aug 2011 16:36:08 +0000 (09:36 -0700)]
glsl: Remove duplicate comment

Remove duplicate doxgen comment for
ir_function.cpp:parameter_lists_match().

Signed-off-by: Chad Versace <chad@chad-versace.us>
13 years agodarwin: Use machine/endian.h to determine endianness
Jeremy Huddleston [Sun, 31 Jul 2011 16:31:48 +0000 (09:31 -0700)]
darwin: Use machine/endian.h to determine endianness

Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
13 years agoFix PPC detection on darwin
Jeremy Huddleston [Sun, 31 Jul 2011 16:21:56 +0000 (09:21 -0700)]
Fix PPC detection on darwin

Fixes regression introduced by 7004582c1894ede839c44e292b413fe4916d7e9e

Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
13 years agoglsl: Clarify ir_function::matching_sigature()
Chad Versace [Wed, 27 Jul 2011 19:37:51 +0000 (12:37 -0700)]
glsl: Clarify ir_function::matching_sigature()

The function used a variable named 'score', which was an outright lie.
A signature matches or it doesn't; there is no fuzzy scoring.

Change the return type of parameter_lists_match() to an enum, and
let ir_function::matching_sigature() switch on that enum.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Signed-off-by: Chad Versace <chad@chad-versace.us>
13 years agoglsl: Fix conversions in array constructors
Chad Versace [Wed, 27 Jul 2011 20:00:02 +0000 (13:00 -0700)]
glsl: Fix conversions in array constructors

Array constructors obey narrower conversion rules than other constructors
[1] --- they use the implicit conversion rules [2] instead of the scalar
constructor conversions [3].  But process_array_constructor() was
incorrectly applying the broader rules.

[1] GLSL 1.50 spec, Section 5.4.4 Array Constructors, page 52 (58 of pdf)
[2] GLSL 1.50 spec, Section 4.1.10 Implicit Conversions, page 25 (31 of pdf)
[3] GLSL 1.50 spec, Section 5.4.1 Conversion, page 48 (54 of pdf)

To fix this, first check (with glsl_type::can_be_implicitly_converted_to)
if an implicit conversion is legal before performing the conversion.

Fixes:
piglit:spec/glsl-1.20/compiler/structure-and-array-operations/array-ctor-implicit-conversion-bool-float.vert
piglit:spec/glsl-1.20/compiler/structure-and-array-operations/array-ctor-implicit-conversion-bvec*-vec*.vert

Note: This is a candidate for the 7.10 and 7.11 branches.
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Signed-off-by: Chad Versace <chad@chad-versace.us>
13 years agoglsl: Remove ir_function.cpp:type_compare()
Chad Versace [Wed, 27 Jul 2011 19:32:10 +0000 (12:32 -0700)]
glsl: Remove ir_function.cpp:type_compare()

The function is no longer used and has been replaced by
glsl_type::can_implicitly_convert_to().

Note: This is a candidate for the 7.10 and 7.11 branches.
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Signed-off-by: Chad Versace <chad@chad-versace.us>
13 years agoglsl: Fix implicit conversions in non-constructor function calls
Chad Versace [Wed, 27 Jul 2011 19:31:10 +0000 (12:31 -0700)]
glsl: Fix implicit conversions in non-constructor function calls

Context
-------
In ast_function_expression::hir(), parameter_lists_match() checks if the
function call's actual parameter list matches the signature's parameter
list, where the match may require implicit conversion of some arguments.
To check if an implicit conversion exists between individual arguments,
type_compare() is used.

Problems
--------
type_compare() allowed the following illegal implicit conversions:
    bool -> float
    bvecN -> vecN

    int -> uint
    ivecN -> uvecN

    uint -> int
    uvecN -> ivecN

Change
------
type_compare() is buggy, so replace it with glsl_type::can_be_implicitly_converted_to().
This comprises a rewrite of parameter_lists_match().

Fixes piglit:spec/glsl-1.20/compiler/built-in-functions/outerProduct-bvec*.vert

Note: This is a candidate for the 7.10 and 7.11 branches.
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Signed-off-by: Chad Versace <chad@chad-versace.us>
13 years agoglsl: Add method glsl_type::can_implicitly_convert_to()
Chad Versace [Wed, 27 Jul 2011 19:21:27 +0000 (12:21 -0700)]
glsl: Add method glsl_type::can_implicitly_convert_to()

This method checks if a source type is identical to or can be implicitly
converted to a target type according to the GLSL 1.20 spec, Section 4.1.10
Implicit Conversions.

The following commits use the method for a bugfix:
    glsl: Fix implicit conversions in non-constructor function calls
    glsl: Fix implicit conversions in array constructors

Note: This is a candidate for the 7.10 and 7.11 branches.
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Signed-off-by: Chad Versace <chad@chad-versace.us>
13 years agomesa: minor comment changes in teximage.c
Brian Paul [Fri, 29 Jul 2011 22:49:55 +0000 (16:49 -0600)]
mesa: minor comment changes in teximage.c

13 years agomesa: add missing breaks for GL_TEXTURE_CUBE_MAP_SEAMLESS queries
Brian Paul [Fri, 29 Jul 2011 22:49:55 +0000 (16:49 -0600)]
mesa: add missing breaks for GL_TEXTURE_CUBE_MAP_SEAMLESS queries

And fix indentation.

NOTE: This is a candidate for the 7.11 branch.

13 years agoi965/fs: Allow register coalescing where the source is a uniform.
Eric Anholt [Fri, 22 Jul 2011 23:52:54 +0000 (16:52 -0700)]
i965/fs: Allow register coalescing where the source is a uniform.

Removes 0.8% of the fragment shader instructions on Unigine Tropics.

13 years agoi965/fs: Optimize a * 1.0 -> a.
Eric Anholt [Fri, 22 Jul 2011 23:45:15 +0000 (16:45 -0700)]
i965/fs: Optimize a * 1.0 -> a.

This appears in our instruction stream as a result of the
brw_vs_constval.c handling.

13 years agoi965/fs: If we see a RCP of a constant, try to constant fold it.
Eric Anholt [Fri, 22 Jul 2011 23:18:39 +0000 (16:18 -0700)]
i965/fs: If we see a RCP of a constant, try to constant fold it.

13 years agoi965/fs: Port texture projection avoidance optimization from the old backend.
Eric Anholt [Fri, 22 Jul 2011 22:56:46 +0000 (15:56 -0700)]
i965/fs: Port texture projection avoidance optimization from the old backend.

This is part of fixing a ~1% performance regression in OpenArena when
changing the fixed function fragment shader to using the new backend.
Right now this just avoids the LINTERP of the projector, not the math
using it.

13 years agoRevert "i965: Don't compute brw->wm.input_size_masks when it's unused."
Eric Anholt [Fri, 22 Jul 2011 22:48:53 +0000 (15:48 -0700)]
Revert "i965: Don't compute brw->wm.input_size_masks when it's unused."

This reverts commit 3412069e23b7fa5656262f3dd1aa86f66980594d.  We're
about to start using it in fragment shaders to handle avoiding
projection for fixed function.

13 years agoi965/fs: Stop using the exec_list iterator.
Eric Anholt [Fri, 29 Jul 2011 18:52:39 +0000 (11:52 -0700)]
i965/fs: Stop using the exec_list iterator.

The old style has gone out of favor in the project, but I kept copy
and pasting from existing iterator code.

13 years agor600g: fix up vs export handling
Alex Deucher [Fri, 29 Jul 2011 15:29:53 +0000 (11:29 -0400)]
r600g: fix up vs export handling

Certain attributes (position, psize, etc.) don't
count as params; they are handled separately by the hw.
However, the VS is required to export at least one param
and r600_shader_from_tgsi() takes care of adding a dummy
export if there is none.  Make sure the VS param export
count in the SPI properly accounts for this.

Note: This is a candidate for the 7.11 branch.

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
13 years agost/egl: create pbuffers with PIPE_BIND_SAMPLER_VIEW
Chia-I Wu [Fri, 29 Jul 2011 01:59:18 +0000 (10:59 +0900)]
st/egl: create pbuffers with PIPE_BIND_SAMPLER_VIEW

So that eglBindTexImage works.

13 years agoi965/fs: Respect ARB_color_buffer_float clamping.
Eric Anholt [Tue, 26 Jul 2011 01:50:43 +0000 (18:50 -0700)]
i965/fs: Respect ARB_color_buffer_float clamping.

This was done in the old codegen path, but not the new one.  Caught by
piglit fbo tests after the conversion to GLSL ff_fragment_shader.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
13 years agomesa: Fix ff fragment shader inputs calculation when enabling a VS.
Eric Anholt [Wed, 13 Jul 2011 21:24:41 +0000 (14:24 -0700)]
mesa: Fix ff fragment shader inputs calculation when enabling a VS.

The FF VS generation happens just after the FF FS generation in
state.c, so the ctx->VP._Current value is for the previous state
update's vertex shader, not the one that will be chosen as a result of
this state update.  The vertexShader and vertexProgram variables
should be accurately telling us whether there's going to be a
ctx->VP._Current (except on _MaintainTnlProgram drivers, where it's
always true).

The glsl-vs-statechange-1 test was created to test for this, but it
turns out that the bug is hidden by the fact that we call
_mesa_update_state() twice per draw call -- once from
_mesa_valid_to_render() and once from vbo_draw_arrays(), and the
second one was fixing up the first one.

Reviewed-by: Brian Paul <brianp@vmware.com>
13 years agotargets/{egl,gbm}: omit unneeded libdrm_radeon
Chia-I Wu [Fri, 29 Jul 2011 00:58:18 +0000 (09:58 +0900)]
targets/{egl,gbm}: omit unneeded libdrm_radeon

13 years agoegl: EGL_MATCH_NATIVE_NATIVE_PIXMAP cannot be EGL_DONT_CARE
Chia-I Wu [Thu, 28 Jul 2011 07:03:11 +0000 (16:03 +0900)]
egl: EGL_MATCH_NATIVE_NATIVE_PIXMAP cannot be EGL_DONT_CARE

13 years agoegl: make pixmaps and pbuffers EGL_BUFFER_PRESERVED
Chia-I Wu [Thu, 28 Jul 2011 04:33:55 +0000 (13:33 +0900)]
egl: make pixmaps and pbuffers EGL_BUFFER_PRESERVED

eglSwapBuffers is no-op to these surface types anyway.

13 years agoAdd dependency generation for Mesa and GLSL dricore objects.
Eric Anholt [Sat, 23 Jul 2011 01:42:21 +0000 (18:42 -0700)]
Add dependency generation for Mesa and GLSL dricore objects.

Reviewed-By: Christopher James Halse Rogers
     <christopher.halse.rogers@canonical.com>

13 years agosoftpipe: When doing write_all_cbufs, don't stomp over the color.
Eric Anholt [Wed, 13 Jul 2011 23:08:42 +0000 (16:08 -0700)]
softpipe: When doing write_all_cbufs, don't stomp over the color.

We have to make it through this loop processing the color multiple
times, so we can't go overwriting it on our first color buffer.

Reviewed-by: Brian Paul <brianp@vmware.com>
13 years agomesa: fix format selection for meta CopyTexSubImage()
Brian Paul [Thu, 28 Jul 2011 15:51:30 +0000 (09:51 -0600)]
mesa: fix format selection for meta CopyTexSubImage()

When we do a glReadPixels into the temporary buffer, we don't want to
use GL_LUMINANCE, GL_LUMINANCE_ALPHA or GL_INTENSITY since they will
compute L=R+G+B which is not what we want.

This bug has existed all along but was only exposed by the elimination
of the driver hook for glCopyTexImage() in
5874890c26f434f54e9218b83fae4eb8175c24e9.

Fixes https://bugs.freedesktop.org/show_bug.cgi?id=39604
Tested-by: Ian Romanick <ian.d.romanick@intel.com>
13 years agomesa: test against MESA_FORMAT_NONE in _mesa_GetTexLevelParameteriv()
Brian Paul [Thu, 28 Jul 2011 15:43:09 +0000 (09:43 -0600)]
mesa: test against MESA_FORMAT_NONE in _mesa_GetTexLevelParameteriv()

13 years agost/mesa: fix comment language
Brian Paul [Wed, 27 Jul 2011 21:49:39 +0000 (15:49 -0600)]
st/mesa: fix comment language

13 years agor600g: fix vs export count
Vadim Girlin [Thu, 28 Jul 2011 20:33:31 +0000 (00:33 +0400)]
r600g: fix vs export count

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

Signed-off-by: Vadim Girlin <vadimgirlin@gmail.com>
13 years agoi965: Remove the now unused intel_renderbuffer::draw_offset field.
Kenneth Graunke [Tue, 26 Jul 2011 04:13:43 +0000 (21:13 -0700)]
i965: Remove the now unused intel_renderbuffer::draw_offset field.

The previous commit removed the last use of this field.

Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
13 years agoi965: Check actual tile offsets in Gen4 miptree workaround.
Kenneth Graunke [Tue, 26 Jul 2011 00:06:13 +0000 (17:06 -0700)]
i965: Check actual tile offsets in Gen4 miptree workaround.

The purpose of the (irb->draw_offset & 4095) != 0 check was to ensure
that we don't have XYy offsets into a tile, since Gen4 hardware doesn't
support that.  However, it's insufficient: there are cases where
draw_offset & 4095 is 0 but we still have a Y-offset.  This leads to an
assertion failure in brw_update_renderbuffer_surface with tile_y != 0.

Instead, simply call intel_renderbuffer_tile_offsets to compute the
actual X/Y offsets and check if either are non-zero.  This makes both
the workaround and the assertion check the same things.

Fixes piglit test fbo-generatemipmap-formats, and should also fix
bugs #34009 and #39487.

NOTE: This is a candidate for stable release branches.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=34009
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=39487
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Chad Versace <chad@chad-versace.us>
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
13 years agoi965/gen4: Fix message parameter loading for 1D TXD sampling.
Kenneth Graunke [Mon, 25 Jul 2011 21:27:07 +0000 (14:27 -0700)]
i965/gen4: Fix message parameter loading for 1D TXD sampling.

We were neglecting to load dvdx and dvdy.  v is not optional.

Fixes glslparsertests tex-grad-0[12345].frag on Broadwater/Crestline.
(We still need an execution test using sampler1D.)

NOTE: This is a candidate for the 7.11 branch.

Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
13 years agoglsl: improve the accuracy of the radians() builtin function
Paul Berry [Wed, 27 Jul 2011 17:35:17 +0000 (10:35 -0700)]
glsl: improve the accuracy of the radians() builtin function

The constant used in the radians() function didn't have enough
precision, causing a relative error of 1.676e-5, which is far worse
than the precision of 32-bit floats.  This patch reduces the relative
error to 1.14e-9, which is the best we can do in 32 bits.

Fixes piglit tests {fs,vs}-radians-{float,vec2,vec3,vec4}.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
13 years agoconfigure.ac: add DLOPEN_LIBS to xlib build
Marek Olšák [Mon, 25 Jul 2011 23:05:51 +0000 (01:05 +0200)]
configure.ac: add DLOPEN_LIBS to xlib build

Otherwise xlib-based llvmpipe fails to link.

NOTE: This is a candidate for the 7.11 branch.

13 years agoconfigure.ac: fix xlib-based softpipe build
Marek Olšák [Mon, 25 Jul 2011 23:05:13 +0000 (01:05 +0200)]
configure.ac: fix xlib-based softpipe build

Tested-by: Jon TURNEY <jon.turney@dronecode.org.uk>
NOTE: This is a candidate for the 7.11 branch.

13 years agoglsl: Add source location tracking to TODO list
Ian Romanick [Wed, 27 Jul 2011 18:37:30 +0000 (11:37 -0700)]
glsl: Add source location tracking to TODO list

13 years agoglsl: Remove completed items from the TODO list
Ian Romanick [Wed, 27 Jul 2011 18:35:31 +0000 (11:35 -0700)]
glsl: Remove completed items from the TODO list

13 years agomesa: don't forget about sampleBuffers in framebuffer visual update
Christoph Bumiller [Wed, 27 Jul 2011 10:13:37 +0000 (12:13 +0200)]
mesa: don't forget about sampleBuffers in framebuffer visual update

Otherwise multisample will never been enabled for multisample
renderbuffers.

Reviewed-by: Brian Paul <brianp@vmware.com>
13 years agowayland-drm: Add copyright notice to protocol
Benjamin Franzke [Wed, 27 Jul 2011 08:04:51 +0000 (10:04 +0200)]
wayland-drm: Add copyright notice to protocol

Fixes build since wayland 986703ac7365bc87a5501714adb9fc73157c62b7.

13 years agoegl/gallium: fix build without softpipe and llvmpipe
Tobias Droste [Thu, 14 Jul 2011 20:32:58 +0000 (22:32 +0200)]
egl/gallium: fix build without softpipe and llvmpipe

Signed-off-by: Tobias Droste <tdroste@gmx.de>
Acked-by: Jakob Bornecrantz <wallbraker@gmail.com>
Reviewed-by: Marek Olšák <maraeo@gmail.com>
13 years agor300g: copy the compiler from r300c
Marek Olšák [Tue, 26 Jul 2011 19:15:05 +0000 (21:15 +0200)]
r300g: copy the compiler from r300c

What a beast.

r300g doesn't depend on files from r300c anymore, so r300c is now left
to its own fate. BTW 'make test' can be invoked from the gallium/r300
directory to run some compiler unit tests.

13 years agoutil: enable S3TC support when the force_s3tc_enable env var is set to "true"
Bryan Cain [Wed, 20 Jul 2011 22:35:22 +0000 (17:35 -0500)]
util: enable S3TC support when the force_s3tc_enable env var is set to "true"

NOTE: This is a candidate for the 7.10 and 7.11 branches.

13 years agost/mesa: respect force_s3tc_enable environment variable
Bryan Cain [Mon, 25 Jul 2011 18:30:17 +0000 (13:30 -0500)]
st/mesa: respect force_s3tc_enable environment variable

NOTE: This is a candidate for the 7.10 and 7.11 branches.

13 years agomesa: Make _mesa_get_compressed_formats match the texture compression specs
Ian Romanick [Fri, 22 Jul 2011 23:45:50 +0000 (16:45 -0700)]
mesa: Make _mesa_get_compressed_formats match the texture compression specs

The implementation deviated slightly from the GL_EXT_texture_sRGB spec
and from other implementations.  A giant comment block was added to
justify the somewhat odd behavior of this function.

In addition, the interface had unnecessary cruft.  The 'all' parameter
was false at all callers, so it has been removed.

Reviewed-by: Brian Paul <brianp@vmware.com>
13 years agomesa: Return the correct internal fmt when a generic compressed fmt was used
Ian Romanick [Fri, 22 Jul 2011 22:26:24 +0000 (15:26 -0700)]
mesa: Return the correct internal fmt when a generic compressed fmt was used

If an application requests a generic compressed format for a texture
and the driver does not pick a specific compressed format, return the
generic base format (e.g., GL_RGBA) for the GL_TEXTURE_INTERNAL_FORMAT
query.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=3165
Reviewed-by: Brian Paul <brianp@vmware.com>
13 years agomesa: Add utility function to get base format from a GL compressed format
Ian Romanick [Fri, 22 Jul 2011 22:25:55 +0000 (15:25 -0700)]
mesa: Add utility function to get base format from a GL compressed format

Reviewed-by: Brian Paul <brianp@vmware.com>
13 years agoi965/fs: Fix MRT drawing since the m0->m2 move for shader debug.
Eric Anholt [Mon, 25 Jul 2011 22:39:03 +0000 (15:39 -0700)]
i965/fs: Fix MRT drawing since the m0->m2 move for shader debug.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
13 years agoglsl: Correctly return progress from lower_variable_index_to_cond_assign
Ian Romanick [Tue, 26 Jul 2011 01:33:40 +0000 (18:33 -0700)]
glsl: Correctly return progress from lower_variable_index_to_cond_assign

lower_variable_index_to_cond_assign runs until it can't make any more
progress.  It then returns the result of the last pass which will
always be false.  This caused the lowering loop in
_mesa_ir_link_shader to end before doing one last round of
lower_if_to_cond_assign.  This caused several if-statements (resulting
from lower_variable_index_to_cond_assign) to be left in the IR.

In addition to this change, lower_variable_index_to_cond_assign should
take a flag indicating whether or not it should even generate
if-statements.  This is easily controlled by
switch_generator::linear_sequence_max_length.  This would generate
much better code on architectures without any flow contol.

Fixes i915 piglit regressions glsl-texcoord-array and
glsl-fs-vec4-indexing-temp-src.

Reviewed-by: Eric Anholt <eric@anholt.net>
13 years agoconfigure.ac: do not check for llvm-config if llvm is disabled
Marek Olšák [Sat, 23 Jul 2011 13:57:51 +0000 (15:57 +0200)]
configure.ac: do not check for llvm-config if llvm is disabled

NOTE: This is a candidate for the 7.11 branch.

13 years agor300/compiler: simplify code in peephole_add_presub_add
Tobias Droste [Mon, 18 Jul 2011 05:14:06 +0000 (07:14 +0200)]
r300/compiler: simplify code in peephole_add_presub_add

Signed-off-by: Tobias Droste <tdroste@gmx.de>
Signed-off-by: Marek Olšák <maraeo@gmail.com>
13 years agowinsys/radeon: fix typos in the driver interface
Marek Olšák [Sun, 24 Jul 2011 21:59:44 +0000 (23:59 +0200)]
winsys/radeon: fix typos in the driver interface

13 years agowinsys/radeon: manage constant buffers by the cache bufmgr too
Marek Olšák [Fri, 22 Jul 2011 20:14:39 +0000 (22:14 +0200)]
winsys/radeon: manage constant buffers by the cache bufmgr too

13 years agowinsys/radeon: remove usage parameter from buffer_create
Marek Olšák [Sat, 23 Jul 2011 02:11:31 +0000 (04:11 +0200)]
winsys/radeon: remove usage parameter from buffer_create

13 years agowinsys/radeon: fix int->boolean conversion in radeon_bo_is_referenced_by_any_cs
Marek Olšák [Fri, 22 Jul 2011 17:22:50 +0000 (19:22 +0200)]
winsys/radeon: fix int->boolean conversion in radeon_bo_is_referenced_by_any_cs

13 years agowinsys/radeon: little change in radeon_bo_is_referenced_by_cs
Marek Olšák [Fri, 22 Jul 2011 17:20:25 +0000 (19:20 +0200)]
winsys/radeon: little change in radeon_bo_is_referenced_by_cs

13 years agowinsys/radeon: add R300 infix to winsys feature names
Marek Olšák [Fri, 22 Jul 2011 17:14:23 +0000 (19:14 +0200)]
winsys/radeon: add R300 infix to winsys feature names

13 years agowinsys/radeon: simplify how value queries work
Marek Olšák [Fri, 22 Jul 2011 16:58:30 +0000 (18:58 +0200)]
winsys/radeon: simplify how value queries work

This drops the get_value query and adds a function query_info, which returns
all the values in one nice structure.

13 years agoi965: Fix many of the trivial WebGL demos that broke due to IB optimization.
Eric Anholt [Fri, 22 Jul 2011 17:56:10 +0000 (10:56 -0700)]
i965: Fix many of the trivial WebGL demos that broke due to IB optimization.

The index buffer state emit only occurred if there was an IB in place
and we were in either a new batch or a new IB state.  But because we
only flagged new IB state if IB state changed from the last IB state
we calculated, we could simply never emit IB state after batchbuffer
wraps if the first draw didn't use the IB and we didn't actually
change the IB.

Fixes piglit glx-multi-context-ib-1.

13 years agoi965: Use 3D clears on gen6+ to avoid inter-ring synchronization.
Eric Anholt [Thu, 19 May 2011 18:02:14 +0000 (11:02 -0700)]
i965: Use 3D clears on gen6+ to avoid inter-ring synchronization.

Improves firefox-talos-gfx around 5%.

13 years agometa: Also save/restore clip planes for GLSL.
Eric Anholt [Thu, 21 Jul 2011 16:15:05 +0000 (09:15 -0700)]
meta: Also save/restore clip planes for GLSL.

Fixes user-clip on 965 with 3D clears enabled.  I created a separate
flag because I wanted to avoid the overhead of the matrix operations
in this path.

Reviewed-by: Brian Paul <brianp@vmware.com>
13 years agoi965: Emit texture cache flushes on gen6 along with render cache flushes.
Eric Anholt [Mon, 25 Jul 2011 18:50:27 +0000 (11:50 -0700)]
i965: Emit texture cache flushes on gen6 along with render cache flushes.

It turns out that internally the texture cache gets flushed in a
couple of cases, particularly around 2D operations mixed with 3D.  In
almost all cases one of those happens between rendering to an
FBO-attached texture and rendering from that texture.  However, as of
the next patch, glean tfbo (and the new fbo-flushing-2 test) would
manage to get stale texture values because one of those flushes didn't
occur.  The intention of this code was always to get the render cache
cleared and ready to be used from the sampler cache (and it does on <=
gen4), so this just catches gen5 up.

This patch was also tested to fix fbo-flushing on gen7.

13 years agoi965: vs optimization fix: Check val.{negate,abs} in accumulator_contains()
Paul Berry [Fri, 22 Jul 2011 21:05:52 +0000 (14:05 -0700)]
i965: vs optimization fix: Check val.{negate,abs} in accumulator_contains()

When emitting a MAC instruction in a vertex shader, brw_vs_emit()
calls accumulator_contains() to determine whether the accumulator
already contains the appropriate addend; if it does, then we can avoid
emitting an unnecessary MOV instruction.

However, accumulator_contains() wasn't checking the val.negate or
val.abs flags.  As a result, if the desired value was the negation, or
the absolute value, of what was already in the accumulator, we would
generate an incorrect shader.

Fixes piglit test vs-refract-vec4-vec4-float.

Tested on Gen5 and Gen6.

Reviewed-by: Eric Anholt <eric@anholt.net>