mesa.git
9 years agoi915: Enable intel_render path for points
Ville Syrjälä [Mon, 23 Mar 2015 12:47:31 +0000 (14:47 +0200)]
i915: Enable intel_render path for points

The sub-pixel adjustment for points was killed off in
 commit 60d762aa625095a8c1f9597d8530bb5a6fa61b4c
 Author: Xiang, Haihao <haihao.xiang@intel.com>
 Date:   Wed Jan 2 11:38:51 2008 +0800

    i915: Needn't adjust pixel centers. fix #12944

so if we don't need it in intel_tris.c we don't need it in
intel_render.c either, which means we can allow intel_render.c to render
points.

No apparent regressions on PNV in ES1 or ES2 conformance.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
9 years agoi915: Use COPY_DWORDS for points
Ville Syrjälä [Mon, 23 Mar 2015 12:47:30 +0000 (14:47 +0200)]
i915: Use COPY_DWORDS for points

The sub-pixel adjustment for points was killed off in
 commit 60d762aa625095a8c1f9597d8530bb5a6fa61b4c
 Author: Xiang, Haihao <haihao.xiang@intel.com>
 Date:   Wed Jan 2 11:38:51 2008 +0800

    i915: Needn't adjust pixel centers. fix #12944

so we can just as well use COPY_DWORDS().

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
9 years agoi915: Use _tnl_RenderClippedPolygon and _tnl_RenderClippedLine
Ville Syrjälä [Mon, 23 Mar 2015 12:47:27 +0000 (14:47 +0200)]
i915: Use _tnl_RenderClippedPolygon and _tnl_RenderClippedLine

_tnl_RenderClippedPolygon and _tnl_RenderClippedLine already do most of
what we want so use them.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
9 years agoi915: Handle provoking vertex in intelFastRenderClippedPoly()
Ville Syrjälä [Mon, 23 Mar 2015 12:47:25 +0000 (14:47 +0200)]
i915: Handle provoking vertex in intelFastRenderClippedPoly()

intelFastRenderClippedPoly() renders the polygon using triangles. For
polygons the provoking vertex is always the first one, and currently
this function assumes that the provoking vertex for triangles is the
last one. In case the user changed the provoking vertex convention,
the hardware may be configured to treat the first vertex of triangles
as the provoking vertex. So check the convention and emit the triangles
in the appropriate order to avoid having to change the hardware
provoking vertex convention for rendering polygons.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
9 years agot_dd_dmatmp: Check provoking vertex convention when rendering quads
Ville Syrjälä [Mon, 23 Mar 2015 12:47:20 +0000 (14:47 +0200)]
t_dd_dmatmp: Check provoking vertex convention when rendering quads

When drawing quads using triangles we need to be careful to make
the provoking vertices match when flat shading.

v2: Major rebase on top of Ian's other t_dd_dmatmp.h work.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
9 years agot_dd_dmatmp: Disallow flat shading when rendering quad strips via tri strips
Ville Syrjälä [Mon, 23 Mar 2015 12:47:19 +0000 (14:47 +0200)]
t_dd_dmatmp: Disallow flat shading when rendering quad strips via tri strips

When rendering quad strips via tri strips we can't get the provoking
vertex right, so disallow flat shading.

v2: Major rebase on top of Ian's other t_dd_dmatmp.h work.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
9 years agot_dd_dmatmp: Allow flat shaded polygons with tri fans
Ville Syrjälä [Mon, 23 Mar 2015 12:47:18 +0000 (14:47 +0200)]
t_dd_dmatmp: Allow flat shaded polygons with tri fans

We can allow rendering flat shaded polygons using tri fans if we check
the provoking vertex convention.

v2 (idr): Remove _EXT suffixes from GL_FIRST_VERTEX_CONVENTION.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
9 years agot_dd_dmatmp: Replace fprintf with unreachable
Ian Romanick [Fri, 18 Sep 2015 18:56:13 +0000 (14:56 -0400)]
t_dd_dmatmp: Replace fprintf with unreachable

From http://lists.freedesktop.org/archives/mesa-dev/2015-May/084883.html:

    "There are no real error cases here, just dead code.
    validate_render() is supposed to make sure we never call these
    functions if the code can't actually render the primitives. The
    fprintf()+return branches should really just contain assert(0) or
    equivalent."

I also rearranged the if-else-block in render_quad_strip_verts to look
more like the other functions.  A future patch is going to change a
bunch of that code anyway.

v2: Make "unreachable" message more descriptive.  Suggested by Iago.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Suggested-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
9 years agoradeon: Use C99 initializers for primitive arrays
Ian Romanick [Wed, 30 Sep 2015 22:23:38 +0000 (15:23 -0700)]
radeon: Use C99 initializers for primitive arrays

Using C99 initializers for the primitive arrays makes things more
readable.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Suggested-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Matt Turner <mattst88@gmail.com>
9 years agoi965: Use C99 initializers for primitive arrays
Ian Romanick [Wed, 30 Sep 2015 22:22:38 +0000 (15:22 -0700)]
i965: Use C99 initializers for primitive arrays

Using C99 initializers for the primitive arrays makes things more
readable.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Suggested-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Matt Turner <mattst88@gmail.com>
9 years agoi915: Use C99 initializers for primitive arrays
Ville Syrjälä [Mon, 23 Mar 2015 12:47:29 +0000 (14:47 +0200)]
i915: Use C99 initializers for primitive arrays

Using C99 initializers for the primitive arrays makes things more
readable.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Matt Turner <mattst88@gmail.com>
9 years agotgsi: add const qualifier to silence warning
Brian Paul [Mon, 5 Oct 2015 13:44:36 +0000 (07:44 -0600)]
tgsi: add const qualifier to silence warning

Trivial.

9 years agoglsl: whitespace/formatting/typo fixes in link_uniforms.cpp
Brian Paul [Thu, 1 Oct 2015 19:12:57 +0000 (13:12 -0600)]
glsl: whitespace/formatting/typo fixes in link_uniforms.cpp

9 years agomain: array stride for unsized arrays of arrays are calculated like records
Samuel Iglesias Gonsalvez [Mon, 5 Oct 2015 09:06:07 +0000 (11:06 +0200)]
main: array stride for unsized arrays of arrays are calculated like records

Signed-off-by: Samuel Iglesias Gonsalvez <siglesias@igalia.com>
Reviewed-by: Timothy Arceri <t_arceri@yahoo.com.au>
9 years agoglsl: add std430 layout support for AoA
Samuel Iglesias Gonsalvez [Tue, 22 Sep 2015 14:25:46 +0000 (16:25 +0200)]
glsl: add std430 layout support for AoA

Signed-off-by: Samuel Iglesias Gonsalvez <siglesias@igalia.com>
Reviewed-by: Timothy Arceri <t_arceri@yahoo.com.au>
9 years agodocs: Mark GL_ARB_enhanced_layouts as in progress
Timothy Arceri [Sun, 4 Oct 2015 00:23:04 +0000 (11:23 +1100)]
docs: Mark GL_ARB_enhanced_layouts as in progress

9 years agoi965: add EXT_polygon_offset_clamp support to gen4/gen5
Ilia Mirkin [Fri, 19 Jun 2015 20:36:15 +0000 (13:36 -0700)]
i965: add EXT_polygon_offset_clamp support to gen4/gen5

Reviewed-by: Matt Turner <mattst88@gmail.com>
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
9 years agometa: Update comment about unsupported texture types.
Matt Turner [Fri, 14 Aug 2015 18:19:49 +0000 (11:19 -0700)]
meta: Update comment about unsupported texture types.

Ken added support for 2DArray (commit ec23d5197e) and 1DArray (commit
14ca61125) last year.

Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
9 years agoglx: Drop CRAY support.
Matt Turner [Mon, 29 Jun 2015 16:58:50 +0000 (09:58 -0700)]
glx: Drop CRAY support.

It couldn't have worked anyway. There were calls to undefined functions.

Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
9 years agoglsl: Remove CSE pass.
Matt Turner [Wed, 23 Sep 2015 19:44:44 +0000 (12:44 -0700)]
glsl: Remove CSE pass.

With NIR, it actually hurts things.

total instructions in shared programs: 6529329 -> 6528888 (-0.01%)
instructions in affected programs:     14833 -> 14392 (-2.97%)
helped:                                299
HURT:                                  1

In all affected programs I inspected (including the single hurt one) the
pass CSE'd some multiplies and caused some reassociation (e.g., caused
(A * B) * C to be A * (B * C)) when the original intermediate result was
reused elsewhere.

Acked-by: Kenneth Graunke <kenneth@whitecape.org>
9 years agoi965: Generalize predicated break pass for use in vec4 backend.
Matt Turner [Sat, 3 Oct 2015 03:30:41 +0000 (20:30 -0700)]
i965: Generalize predicated break pass for use in vec4 backend.

instructions in affected programs:     44204 -> 43762 (-1.00%)
helped:                                221

Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
9 years agoi965/fs: Use backend_instruction in predicated break peephole.
Matt Turner [Sat, 3 Oct 2015 03:23:35 +0000 (20:23 -0700)]
i965/fs: Use backend_instruction in predicated break peephole.

We're not using any fs_inst fields, and the next commit will make the
peephole used by the vec4 backend.

Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
9 years agoi965/fs: Remove SNB embedded-comparison support from optimizations.
Matt Turner [Sat, 3 Oct 2015 03:18:34 +0000 (20:18 -0700)]
i965/fs: Remove SNB embedded-comparison support from optimizations.

We never emit IF instructions with an embedded comparison (lost in the
switch to NIR), so this code is not used. If we want to readd support,
we should have a pass that merges a CMP instruction with an IF or a
WHILE instruction after other optimizations have run.

Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
9 years agomesa: Add missing _mm_mfence() before streaming loads.
Matt Turner [Thu, 1 Oct 2015 17:06:55 +0000 (10:06 -0700)]
mesa: Add missing _mm_mfence() before streaming loads.

According to the Intel Software Development Manual (Volume 1: Basic
Architecture, 12.10.3 Streaming Load Hint Instruction):

   Streaming loads may be weakly ordered and may appear to software to
   execute out of order with respect to other memory operations.
   Software must explicitly use fences (e.g. MFENCE) if it needs to
   preserve order among streaming loads or between streaming loads and
   other memory operations.

That is, a memory fence is needed to preserve the order between the GPU
writing the buffer and the streaming loads reading it back.

Reported-by: Joseph Nuzman <joseph.nuzman@intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
9 years agoi965: Fix intel_miptree_is_fast_clear_capable()
Chad Versace [Thu, 1 Oct 2015 15:06:35 +0000 (08:06 -0700)]
i965: Fix intel_miptree_is_fast_clear_capable()

There are three types of fast clears:
  a. fast depth clears
  b. fast singlesample color clears
  c. fast multisample color clears
Function intel_miptree_is_fast_clear_capable() checks if a miptree
supports fast clears of type (b).

Rename the function to disambiguate what it does:
  old: intel_miptree_is_fast_clear_capable
  new: intel_miptree_supports_non_msrt_fast_clear

The functionally accidentally rejected multisampled color surfaces
because it thought they were singlesample array surfaces. Fix that by
explicitly rejecting surfaces with samples > 1.

This fix would have been needed before we enabled layered fast
singlesample color clears (introduced in gen8), which we want to do
eventually. For now, though, this patch changes no behavior; it just
fixes how the driver chooses its behavior.

Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
9 years agoi965/mt: Declare some functions as static
Chad Versace [Thu, 1 Oct 2015 14:31:31 +0000 (07:31 -0700)]
i965/mt: Declare some functions as static

intel_tiling_supports_non_msrt_mcs() and
intel_miptree_is_fast_clear_capable() are not used outside of
intel_mipmap_tree.c.

Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
9 years agoi965: Make vec4_visitor's destructor virtual
Iago Toral Quiroga [Mon, 5 Oct 2015 07:02:54 +0000 (09:02 +0200)]
i965: Make vec4_visitor's destructor virtual

We need a virtual destructor when at least one of the class' methods is virtual.
Failure to do so might lead to undefined behavior when destructing derived classes.
Fixes the following warning:

brw_vec4_gs_visitor.cpp: In function 'const unsigned int* brw::brw_gs_emit(brw_context*, gl_shader_program*, brw_gs_compile*, void*, unsigned int*)':
brw_vec4_gs_visitor.cpp:703:11: warning: deleting object of polymorphic class type 'brw::vec4_gs_visitor' which has non-virtual destructor might cause undefined behaviour [-Wdelete-non-virtual-dtor]
    delete gs;

Curro: This shouldn't be causing any actual bugs at the moment because
gen6_gs_visitor is the only subclass of vec4_visitor destroyed through
a pointer of a base class (vec4_gs_visitor *) and its destructor is
basically the same as its parent's. Anyway it seems sensible to change
this so it doesn't bite us in the future.

Reviewed-by: Francisco Jerez <currojerez@riseup.net>
9 years agoglsl: set glsl error if binding qualifier used on global scope
Tapani Pälli [Mon, 5 Oct 2015 09:50:10 +0000 (12:50 +0300)]
glsl: set glsl error if binding qualifier used on global scope

Fixes following Piglit test:
global-scope-binding-qualifier.frag

Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
9 years agoi965: Assert on the number of combined UBO and SSBO binding table entries
Iago Toral Quiroga [Wed, 30 Sep 2015 08:24:11 +0000 (10:24 +0200)]
i965: Assert on the number of combined UBO and SSBO binding table entries

In theory we can't break this assertion since the compiler frontend checks
that we don't exceed any of the individual limits, but it does not hurt to
be extra safe.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
9 years agoi965: Reserve binding table space for SSBO surfaces
Iago Toral Quiroga [Wed, 30 Sep 2015 09:06:30 +0000 (11:06 +0200)]
i965: Reserve binding table space for SSBO surfaces

These share the space with UBO surfaces but we need to make sure we
allocate enough space for both sets (12 of each)

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
9 years agoi965: Define BRW_MAX_SSBO
Iago Toral Quiroga [Wed, 30 Sep 2015 09:05:49 +0000 (11:05 +0200)]
i965: Define BRW_MAX_SSBO

Instead of using hard-coded values.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
9 years agoi965: Define BRW_MAX_UBO
Iago Toral Quiroga [Wed, 30 Sep 2015 07:55:00 +0000 (09:55 +0200)]
i965: Define BRW_MAX_UBO

Instead of using hard-coded values.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
9 years agoi965/vec4: Remove more dead visitor/vertex program code.
Matt Turner [Sat, 3 Oct 2015 17:43:26 +0000 (10:43 -0700)]
i965/vec4: Remove more dead visitor/vertex program code.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
9 years agoi965: Don't print line numbers with INTEL_DEBUG=optimizer.
Matt Turner [Sat, 26 Sep 2015 21:40:09 +0000 (14:40 -0700)]
i965: Don't print line numbers with INTEL_DEBUG=optimizer.

The thing you want to do with the output files is diff them, which is
made more difficult by line numbers changing.

Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
9 years agonv30: always go through translate module on big-endian
Ilia Mirkin [Mon, 5 Oct 2015 01:47:33 +0000 (21:47 -0400)]
nv30: always go through translate module on big-endian

It seems like things are either coming in slighly wrong, or perhaps
uploaded incorrectly, but either way passing them through the translate
module seems to fix everything. Eventually we should figure out what's
going wrong and fix it "for real", but this should do for now.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Cc: mesa-stable@lists.freedesktop.org
9 years agonv30: pretend to have packed texture/surface formats
Ilia Mirkin [Mon, 5 Oct 2015 01:45:51 +0000 (21:45 -0400)]
nv30: pretend to have packed texture/surface formats

This puts us in line with what the DDX/DRI2 st are expecting. It also
happens to work... no idea why, but seems better to have it work than to
ask lots of questions.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Cc: mesa-stable@lists.freedesktop.org
9 years agost/dri: Use packed RGB formats
Michel Dänzer [Mon, 10 Aug 2015 09:44:18 +0000 (18:44 +0900)]
st/dri: Use packed RGB formats

Fixes Gallium based DRI drivers failing to load on big endian hosts
because they can't find any matching fbconfigs.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=71789
Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Tested-by: Ilia Mirkin <imirkin@alum.mit.edu>
9 years agoglsl: reduce memory footprint of uniform_storage struct
Timothy Arceri [Wed, 30 Sep 2015 01:00:02 +0000 (11:00 +1000)]
glsl: reduce memory footprint of uniform_storage struct

The uniform will only be of a single type so store the data for
opaque types in a single array.

Cc: Francisco Jerez <currojerez@riseup.net>
Cc: Ilia Mirkin <imirkin@alum.mit.edu>
9 years agoi965: Remove shader_prog from vec4_gs_visitor.
Kenneth Graunke [Fri, 2 Oct 2015 23:40:14 +0000 (16:40 -0700)]
i965: Remove shader_prog from vec4_gs_visitor.

Unfortunately it has to stay in gen6_gs_visitor.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Matt Turner <mattst88@gmail.com>
9 years agoi965: Use nir->has_transform_feedback_varyings to avoid shader_prog.
Kenneth Graunke [Fri, 2 Oct 2015 23:45:09 +0000 (16:45 -0700)]
i965: Use nir->has_transform_feedback_varyings to avoid shader_prog.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Matt Turner <mattst88@gmail.com>
9 years agonir: Add a nir_shader_info::has_transform_feedback_varyings flag.
Kenneth Graunke [Fri, 2 Oct 2015 22:55:05 +0000 (15:55 -0700)]
nir: Add a nir_shader_info::has_transform_feedback_varyings flag.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Matt Turner <mattst88@gmail.com>
9 years agonir: Introduce new nir_intrinsic_load_per_vertex_input intrinsics.
Kenneth Graunke [Thu, 1 Oct 2015 07:46:19 +0000 (00:46 -0700)]
nir: Introduce new nir_intrinsic_load_per_vertex_input intrinsics.

Geometry and tessellation shaders process multiple vertices; their
inputs are arrays indexed by the vertex number.  While GLSL makes
this look like a normal array, it can be very different behind the
scenes.

On Intel hardware, all inputs for a particular vertex are stored
together - as if they were grouped into a single struct.  This means
that consecutive elements of these top-level arrays are not contiguous.
In fact, they may sometimes be in completely disjoint memory segments.

NIR's existing load_input intrinsics are awkward for this case, as they
distill everything down to a single offset.  We'd much rather keep the
vertex ID separate, but build up an offset as normal beyond that.

This patch introduces new nir_intrinsic_load_per_vertex_input
intrinsics to handle this case.  They work like ordinary load_input
intrinsics, but have an extra source (src[0]) which represents the
outermost array index.

v2: Rebase on earlier refactors.
v3: Use ssa defs instead of nir_srcs, rebase on earlier refactors.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
9 years agonir/lower_io: Make get_io_offset() return a nir_ssa_def * for indirects.
Kenneth Graunke [Thu, 1 Oct 2015 07:36:25 +0000 (00:36 -0700)]
nir/lower_io: Make get_io_offset() return a nir_ssa_def * for indirects.

get_io_offset() already walks the dereference chain and discovers
whether or not we have an indirect; we can just return that rather than
computing it a second time via deref_has_indirect().  This means moving
the call a bit earlier.

By returning a nir_ssa_def *, we can pass back both an existence flag
(via NULL checking the pointer) and the value in one parameter.  It
also simplifies the code somewhat.  nir_lower_samplers works in a
similar fashion.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
9 years agoglsl: fix whitespace
Timothy Arceri [Sun, 4 Oct 2015 06:42:41 +0000 (17:42 +1100)]
glsl: fix whitespace

Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
9 years agoradeonsi: enable PIPE_CAP_FORCE_PERSAMPLE_INTERP
Marek Olšák [Mon, 28 Sep 2015 21:50:12 +0000 (23:50 +0200)]
radeonsi: enable PIPE_CAP_FORCE_PERSAMPLE_INTERP

Now st/mesa won't generate 2 variants for this state.

Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
9 years agoradeonsi: do force_persample_interp in shaders for non-trivial cases
Marek Olšák [Mon, 28 Sep 2015 21:46:04 +0000 (23:46 +0200)]
radeonsi: do force_persample_interp in shaders for non-trivial cases

Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
9 years agoradeonsi: implement the simple case of force_persample_interp
Marek Olšák [Mon, 28 Sep 2015 15:21:10 +0000 (17:21 +0200)]
radeonsi: implement the simple case of force_persample_interp

Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
9 years agoradeonsi: move SPI_PS_INPUT_ENA/ADDR registers to a separate state
Marek Olšák [Mon, 28 Sep 2015 15:01:21 +0000 (17:01 +0200)]
radeonsi: move SPI_PS_INPUT_ENA/ADDR registers to a separate state

This will be a derived state used for changing center->sample and
centroid->sample at runtime.

Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
9 years agotgsi/scan: add interpolation info into tgsi_shader_info
Marek Olšák [Mon, 28 Sep 2015 19:44:54 +0000 (21:44 +0200)]
tgsi/scan: add interpolation info into tgsi_shader_info

Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
9 years agost/mesa: automatically set per-sample interpolation if using SampleID/Pos
Marek Olšák [Sun, 27 Sep 2015 17:54:57 +0000 (19:54 +0200)]
st/mesa: automatically set per-sample interpolation if using SampleID/Pos

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
9 years agost/mesa: set force_persample_interp if ARB_sample_shading is used
Marek Olšák [Sun, 27 Sep 2015 17:43:00 +0000 (19:43 +0200)]
st/mesa: set force_persample_interp if ARB_sample_shading is used

This is only a half of the work. The next patch will handle
gl_SampleID/SamplePos, which is the other half of ARB_sample_shading.

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
9 years agogallium: add per-sample interpolation control into rasterizer statOAe
Marek Olšák [Sun, 27 Sep 2015 17:32:07 +0000 (19:32 +0200)]
gallium: add per-sample interpolation control into rasterizer statOAe

Required by ARB_sample_shading for drivers that don't want a shader variant
in st/mesa.

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Acked-by: Roland Scheidegger <sroland@vmware.com>
9 years agost/mesa: add ST_DEBUG=precompile support for tessellation shaders
Marek Olšák [Sun, 27 Sep 2015 19:08:46 +0000 (21:08 +0200)]
st/mesa: add ST_DEBUG=precompile support for tessellation shaders

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
9 years agomesa: remove Driver.BindImageTexture
Marek Olšák [Sun, 27 Sep 2015 19:28:22 +0000 (21:28 +0200)]
mesa: remove Driver.BindImageTexture

Nothing sets it.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
9 years agomesa: remove Driver.DeleteSamplerObject
Marek Olšák [Sun, 27 Sep 2015 19:28:22 +0000 (21:28 +0200)]
mesa: remove Driver.DeleteSamplerObject

Nothing overrides it.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
9 years agomesa: remove Driver.EndCallList
Marek Olšák [Sun, 27 Sep 2015 19:28:22 +0000 (21:28 +0200)]
mesa: remove Driver.EndCallList

Nothing overrides it.

Reviewed-by: Brian Paul <brianp@vmware.com>
9 years agomesa: remove Driver.BeginCallList
Marek Olšák [Sun, 27 Sep 2015 19:28:22 +0000 (21:28 +0200)]
mesa: remove Driver.BeginCallList

Nothing overrides it.

Reviewed-by: Brian Paul <brianp@vmware.com>
9 years agomesa: remove Driver.EndList
Marek Olšák [Sun, 27 Sep 2015 19:28:22 +0000 (21:28 +0200)]
mesa: remove Driver.EndList

Nothing overrides it.

Reviewed-by: Brian Paul <brianp@vmware.com>
9 years agomesa: remove Driver.NewList
Marek Olšák [Sun, 27 Sep 2015 19:28:22 +0000 (21:28 +0200)]
mesa: remove Driver.NewList

Nothing overrides it.

Reviewed-by: Brian Paul <brianp@vmware.com>
9 years agomesa: remove Driver.NotifySaveBegin
Marek Olšák [Sun, 27 Sep 2015 19:28:22 +0000 (21:28 +0200)]
mesa: remove Driver.NotifySaveBegin

Nothing overrides it.

Reviewed-by: Brian Paul <brianp@vmware.com>
9 years agomesa: remove Driver.SaveFlushVertices
Marek Olšák [Sun, 27 Sep 2015 19:28:22 +0000 (21:28 +0200)]
mesa: remove Driver.SaveFlushVertices

Nothing overrides it.

Reviewed-by: Brian Paul <brianp@vmware.com>
9 years agomesa: remove Driver.FlushVertices
Marek Olšák [Sun, 27 Sep 2015 19:28:22 +0000 (21:28 +0200)]
mesa: remove Driver.FlushVertices

Nothing overrides it.

Reviewed-by: Brian Paul <brianp@vmware.com>
9 years agomesa: remove Driver.BeginVertices
Marek Olšák [Sun, 27 Sep 2015 19:28:22 +0000 (21:28 +0200)]
mesa: remove Driver.BeginVertices

Nothing overrides it.

Reviewed-by: Brian Paul <brianp@vmware.com>
9 years agomesa: remove Driver.BindArrayObject
Marek Olšák [Sun, 27 Sep 2015 19:28:22 +0000 (21:28 +0200)]
mesa: remove Driver.BindArrayObject

Nothing sets it.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
9 years agomesa: remove Driver.DeleteArrayObject
Marek Olšák [Sun, 27 Sep 2015 19:28:22 +0000 (21:28 +0200)]
mesa: remove Driver.DeleteArrayObject

Nothing reimplements it.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
9 years agomesa: remove Driver.NewArrayObject
Marek Olšák [Sun, 27 Sep 2015 19:28:22 +0000 (21:28 +0200)]
mesa: remove Driver.NewArrayObject

Nothing reimplements it.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
9 years agomesa: remove Driver.Hint
Marek Olšák [Sun, 27 Sep 2015 19:28:22 +0000 (21:28 +0200)]
mesa: remove Driver.Hint

Nothing sets it.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
9 years agomesa: remove Driver.ColorMaskIndexed
Marek Olšák [Sun, 27 Sep 2015 19:28:22 +0000 (21:28 +0200)]
mesa: remove Driver.ColorMaskIndexed

Nothing sets it.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
9 years agomesa: remove some Driver.Blend* hooks
Marek Olšák [Sun, 27 Sep 2015 19:28:22 +0000 (21:28 +0200)]
mesa: remove some Driver.Blend* hooks

Nothing sets them.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
9 years agomesa: remove Driver.Accum
Marek Olšák [Sun, 27 Sep 2015 19:28:22 +0000 (21:28 +0200)]
mesa: remove Driver.Accum

Nothing calls it.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
9 years agomesa: remove Driver.ResizeBuffers
Marek Olšák [Sun, 27 Sep 2015 19:28:22 +0000 (21:28 +0200)]
mesa: remove Driver.ResizeBuffers

Nothing overrides it.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
9 years agomesa: remove Driver.DeleteShaderProgram
Marek Olšák [Sun, 27 Sep 2015 19:28:22 +0000 (21:28 +0200)]
mesa: remove Driver.DeleteShaderProgram

Nothing overrides it.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
9 years agomesa: remove Driver.NewShaderProgram
Marek Olšák [Sun, 27 Sep 2015 19:28:22 +0000 (21:28 +0200)]
mesa: remove Driver.NewShaderProgram

Nothing overrides it.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
9 years agomesa: remove Driver.DeleteShader
Marek Olšák [Sun, 27 Sep 2015 19:28:22 +0000 (21:28 +0200)]
mesa: remove Driver.DeleteShader

Nothing overrides it.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
9 years agoegl/dri2: don't require a context for ClientWaitSync (v2)
Marek Olšák [Fri, 25 Sep 2015 20:48:00 +0000 (22:48 +0200)]
egl/dri2: don't require a context for ClientWaitSync (v2)

The spec doesn't require it. This fixes a crash on Android.

v2: don't set any flags if ctx == NULL
v3: add the spec note

Cc: 10.6 11.0 <mesa-stable@lists.freedesktop.org>
Reviewed-by: Albert Freeman <albertwdfreeman@gmail.com>
Reviewed-by: Frank Binns <frank.binns@imgtec.com>
9 years agost/dri: don't use _ctx in client_wait_sync
Marek Olšák [Fri, 25 Sep 2015 20:44:41 +0000 (22:44 +0200)]
st/dri: don't use _ctx in client_wait_sync

Not needed and it can be NULL.

v2: fix dri2_get_fence_from_cl_event - thanks Albert

Cc: 10.6 11.0 <mesa-stable@lists.freedesktop.org>
Reviewed-by: Albert Freeman <albertwdfreeman@gmail.com>
9 years agor600g: only do depth-only or stencil-only in-place decompression
Marek Olšák [Sun, 6 Sep 2015 15:37:38 +0000 (17:37 +0200)]
r600g: only do depth-only or stencil-only in-place decompression

instead of always doing both.
Usually, only depth is needed, so stencil decompression is useless.

Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
9 years agoradeonsi: only do depth-only or stencil-only in-place decompression
Marek Olšák [Sun, 6 Sep 2015 15:37:38 +0000 (17:37 +0200)]
radeonsi: only do depth-only or stencil-only in-place decompression

instead of always doing both.
Usually, only depth is needed, so stencil decompression is useless.

Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
9 years agogallium/radeon: add separate stencil level dirty flags
Marek Olšák [Sun, 6 Sep 2015 15:35:06 +0000 (17:35 +0200)]
gallium/radeon: add separate stencil level dirty flags

We will only do depth-only or stencil-only decompress blits, whichever is
needed by textures, instead of always doing both.

Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
9 years agoradeonsi: dump buffer lists while debugging
Marek Olšák [Sat, 26 Sep 2015 23:38:48 +0000 (01:38 +0200)]
radeonsi: dump buffer lists while debugging

Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
9 years agowinsys/radeon: implement cs_get_buffer_list
Marek Olšák [Sat, 26 Sep 2015 22:58:15 +0000 (00:58 +0200)]
winsys/radeon: implement cs_get_buffer_list

This is more complicated, because tracking priority_usage needed changing
the relocs_bo type.

Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
9 years agowinsys/amdgpu: add winsys function cs_get_buffer_list
Marek Olšák [Sat, 26 Sep 2015 22:52:32 +0000 (00:52 +0200)]
winsys/amdgpu: add winsys function cs_get_buffer_list

For debugging.

Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
9 years agogallium/radeon: stop using "reloc" in a few places
Marek Olšák [Sat, 26 Sep 2015 22:10:00 +0000 (00:10 +0200)]
gallium/radeon: stop using "reloc" in a few places

Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
9 years agogallium/radeon: tell the winsys the exact resource binding types
Marek Olšák [Sat, 26 Sep 2015 21:18:55 +0000 (23:18 +0200)]
gallium/radeon: tell the winsys the exact resource binding types

Use the priority flags and expand them.
This information will be used for debugging.

Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
9 years agoradeonsi: add an option for debugging VM faults
Marek Olšák [Sat, 26 Sep 2015 01:15:40 +0000 (03:15 +0200)]
radeonsi: add an option for debugging VM faults

Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
9 years agoradeonsi: move dumping the last IB into its own function
Marek Olšák [Sat, 26 Sep 2015 01:14:43 +0000 (03:14 +0200)]
radeonsi: move dumping the last IB into its own function

v2: indentation fix

Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
9 years agoddebug: separate creation of debug files
Marek Olšák [Sat, 26 Sep 2015 01:13:11 +0000 (03:13 +0200)]
ddebug: separate creation of debug files

This will be used by radeonsi for logging.

Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
9 years agodocs: add news item and link release notes for 10.6.9
Emil Velikov [Sat, 3 Oct 2015 12:23:13 +0000 (13:23 +0100)]
docs: add news item and link release notes for 10.6.9

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
9 years agodocs: add sha256 checksums for 10.6.9
Emil Velikov [Sat, 3 Oct 2015 12:16:18 +0000 (13:16 +0100)]
docs: add sha256 checksums for 10.6.9

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
(cherry picked from commit 8957b696f9cc8a92b2c160c551c34545447ec28a)

9 years agodocs: add release notes for 10.6.9
Emil Velikov [Sat, 3 Oct 2015 11:37:15 +0000 (12:37 +0100)]
docs: add release notes for 10.6.9

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
(cherry picked from commit ab9aacce2d26a802bac81fc25748320428996692)

9 years agoegl: rework handling EGL_CONTEXT_FLAGS
Matthew Waters [Mon, 14 Sep 2015 17:35:45 +0000 (18:35 +0100)]
egl: rework handling EGL_CONTEXT_FLAGS

As of version 15 of the EGL_KHR_create_context spec, debug contexts
are allowed for ES contexts.  We should allow creation instead of
erroring.

While we're here provide a more comprehensive checking for the other two
flags - ROBUST_ACCESS_BIT_KHR and FORWARD_COMPATIBLE_BIT_KHR

v2 [Emil Velikov] Rebase. Minor tweak in commit message.

Cc: Boyan Ding <boyan.j.ding@gmail.com>
Cc: Chad Versace <chad.versace@intel.com>
Cc: "10.6 11.0" <mesa-stable@lists.freedesktop.org>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=91044
Signed-off-by: Matthew Waters <ystreet00@gmail.com>
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
9 years agoi965/wm: Make compute_barycentric_interp_modes take a nir_shader and a devinfo
Jason Ekstrand [Sat, 3 Oct 2015 01:31:17 +0000 (18:31 -0700)]
i965/wm: Make compute_barycentric_interp_modes take a nir_shader and a devinfo

Now that everything comes in through NIR, we can pick this directly out of
the shader source and don't need to reference the gl_fragment_program.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
9 years agoi965: Use nir_foreach_variable
Jason Ekstrand [Sat, 3 Oct 2015 01:16:10 +0000 (18:16 -0700)]
i965: Use nir_foreach_variable

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
9 years agonir: Add a nir_foreach_variable macro
Jason Ekstrand [Sat, 3 Oct 2015 01:15:06 +0000 (18:15 -0700)]
nir: Add a nir_foreach_variable macro

This is a common enough operation that it's nice to not have to think about
the arguments to foreach_list_typed every time.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
9 years agoi965/nir: Remove the prog parameter from brw_nir_lower_inputs
Jason Ekstrand [Fri, 2 Oct 2015 23:39:51 +0000 (16:39 -0700)]
i965/nir: Remove the prog parameter from brw_nir_lower_inputs

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
9 years agoradeon/llvm: Initialize gallivm targets when initializing the AMDGPU target v2
Tom Stellard [Thu, 24 Sep 2015 16:29:56 +0000 (16:29 +0000)]
radeon/llvm: Initialize gallivm targets when initializing the AMDGPU target v2

This fixes a race condition in the glx-multithreaded-shader-compile
test.

v2:
  - Replace gallivm_init_llvm_{begin,end}() with gallivm_init_llvm_targets().

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Mathias Fröhlich <Mathias.Froehlich@web.de>
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
CC: "10.6 11.0" <mesa-stable@lists.freedesktop.org>
9 years agogallivm: Allow drivers and state trackers to initialize gallivm LLVM targets v2
Tom Stellard [Thu, 24 Sep 2015 15:57:02 +0000 (15:57 +0000)]
gallivm: Allow drivers and state trackers to initialize gallivm LLVM targets v2

Drivers and state trackers that use LLVM for generating code, must
register the targets they use with LLVM's global TargetRegistry.
The TargetRegistry is not thread-safe, so all targets must be added
to the registry before it can be queried for target information.

When drivers and state trackers initialize their own targets, they need
a way to force gallivm to initialize its targets at the same time.
Otherwise, there can be a race condition in some multi-threaded
applications (e.g. glx-multihreaded-shader-compile in piglit),
when one thread creates a context for a driver that uses LLVM (e.g.
radeonsi) and another thread creates a gallivm context (glxContextCreate
does this).

The race happens when the driver thread initializes its LLVM targets and
then starts using the registry before the gallivm thread has a chance to
register its targets.

This patch allows users to force gallivm to register its targets by
calling the gallivm_init_llvm_targets() function.

v2:
  - Use call_once and remove mutexes and static initializations.
  - Replace gallivm_init_llvm_{begin,end}() with
    gallivm_init_llvm_targets().

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Mathias Fröhlich <Mathias.Froehlich@web.de>
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
CC: "10.6 11.0" <mesa-stable@lists.freedesktop.org>
9 years agogallium/radeon: Use call_once() when initailizing LLVM targets
Tom Stellard [Wed, 30 Sep 2015 15:00:39 +0000 (15:00 +0000)]
gallium/radeon: Use call_once() when initailizing LLVM targets

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Mathias Fröhlich <Mathias.Froehlich@web.de>
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
CC: "10.6 11.0" <mesa-stable@lists.freedesktop.org>
9 years agoi965/shader: Get rid of the shader, prog, and shader_prog fields
Jason Ekstrand [Thu, 1 Oct 2015 22:21:57 +0000 (15:21 -0700)]
i965/shader: Get rid of the shader, prog, and shader_prog fields

Unfortunately, we can't get rid of them entirely.  The FS backend still
needs gl_program for handling TEXTURE_RECTANGLE.  The GS vec4 backend still
needs gl_shader_program for handling transfom feedback.  However, the VS
needs neither and we can substantially reduce the amount they are used.
One day we will be free from their tyranny.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
9 years agoi965/fs,vec4: Get rid of the sanity_param_count
Jason Ekstrand [Fri, 2 Oct 2015 01:15:21 +0000 (18:15 -0700)]
i965/fs,vec4: Get rid of the sanity_param_count

It doesn't exist for anything other than an assert that, as far as I can
tell, isn't possible to trip.  Soon, we will remove prog from the visitor
entirely and this will become even more impossible to hit.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>