mesa.git
7 years agoi965: Port Gen6+ 3DSTATE_CLIP state to genxml.
Rafael Antognolli [Thu, 16 Mar 2017 00:08:26 +0000 (17:08 -0700)]
i965: Port Gen6+ 3DSTATE_CLIP state to genxml.

Emit clip state on Gen6+ using brw_batch_emit helper, using pack structs
from genxml.

v3:
   - Lots style fixes (Ken)
   - Do not set CullTestEnableBitMask on Gen8+ (Ken)
v4:
   - Do not include brw_defines_common.h.
v5 (Ken): s/BRW_NEW_WM_PROG_DATA/BRW_NEW_FS_PROG_DATA/

Signed-off-by: Rafael Antognolli <rafael.antognolli@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
7 years agoi965: Port Gen6+ DEPTH_STENCIL state to genxml.
Kenneth Graunke [Wed, 8 Mar 2017 05:54:24 +0000 (21:54 -0800)]
i965: Port Gen6+ DEPTH_STENCIL state to genxml.

This emits 3DSTATE_WM_DEPTH_STENCIL on Gen8+ or DEPTH_STENCIL_STATE
(and the relevant pointer packets) on Gen6-7.5 from a single function.

v3:
   - Watch for BRW_NEW_BATCH too on gen < 8 (Ken)

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Signed-off-by: Rafael Antognolli <rafael.antognolli@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
7 years agoi965: Get real per-gen atom lists
Kenneth Graunke [Mon, 13 Mar 2017 22:36:43 +0000 (15:36 -0700)]
i965: Get real per-gen atom lists

Make atoms initalization compile conditionally based on the target
platform.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Signed-off-by: Rafael Antognolli <rafael.antognolli@intel.com>
7 years agoi965: Add genxml related plumbing in a new genX_state_upload.c file.
Kenneth Graunke [Wed, 8 Mar 2017 05:42:30 +0000 (21:42 -0800)]
i965: Add genxml related plumbing in a new genX_state_upload.c file.

v3 (Rafael): Drop aub parameter
v4 (Ken): Squash in gen4/g45 automake fixes

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Signed-off-by: Rafael Antognolli <rafael.antognolli@intel.com>
7 years agoi965: Drop "Destination Element Offset" from Ironlake SGVs.
Kenneth Graunke [Fri, 28 Apr 2017 21:09:24 +0000 (14:09 -0700)]
i965: Drop "Destination Element Offset" from Ironlake SGVs.

The Ironlake documentation is terrible, so it's unclear whether or not
this field exists there.  It definitely doesn't exist on Sandybridge
and later.  It definitely does exist on G45.

We haven't been setting it for our normal vertex attributes - just
the SGVs (VertexID, InstanceID, BaseVertex, BaseInstance, DrawID).
We should be consistent.  My guess is that it isn't necessary and
doesn't exist - this patch drops it from the SGVs elements, making
them follow the behavior of most attributes.

Reviewed-by: Rafael Antognolli <rafael.antognolli@intel.com>
7 years agogenxml: Fix 3DSTATE_DEPTH_BUFFER length on gen5.
Rafael Antognolli [Thu, 4 May 2017 00:53:35 +0000 (17:53 -0700)]
genxml: Fix 3DSTATE_DEPTH_BUFFER length on gen5.

The hardware docs are wrong, but the length used in the xml is also
wrong.

Signed-off-by: Rafael Antognolli <rafael.antognolli@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
7 years agoradeonsi: constify a bunch of the perfcounter structs.
Dave Airlie [Tue, 2 May 2017 22:40:41 +0000 (08:40 +1000)]
radeonsi: constify a bunch of the perfcounter structs.

This moves the structs from the data segment to the rodata segment,
which seems like the more correct place for them.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
7 years agost/glsl_to_tgsi: remove unrequired tgsi_get_opcode_info() call
Timothy Arceri [Wed, 3 May 2017 00:48:06 +0000 (10:48 +1000)]
st/glsl_to_tgsi: remove unrequired tgsi_get_opcode_info() call

This is already set for the instruction at initialisation.

Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agomesa: make _mesa_accum() static
Timothy Arceri [Wed, 3 May 2017 03:34:42 +0000 (13:34 +1000)]
mesa: make _mesa_accum() static

Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
7 years agomesa: tidy up accum.h
Timothy Arceri [Wed, 3 May 2017 03:33:58 +0000 (13:33 +1000)]
mesa: tidy up accum.h

These were unused.

Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
7 years agomesa/varray: make use of dispatch KHR_no_error support
Timothy Arceri [Thu, 27 Apr 2017 04:56:44 +0000 (14:56 +1000)]
mesa/varray: make use of dispatch KHR_no_error support

Make use of dispatch KHR_no_error support for varray functions.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
7 years agoglapi: add KHR_no_error support to dispatch table generation
Timothy Arceri [Thu, 27 Apr 2017 03:32:43 +0000 (13:32 +1000)]
glapi: add KHR_no_error support to dispatch table generation

This will allows us to create no error versions of functions
noted by a _no_error suffix. We also need to set a no_error
attribute equal to "true" in the xml.

V3: stop the no_error attribute being overwritten when functions
    alias another.
V2: tidy up suggested by Nicolai.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
7 years agoradv: Don't use FLAT_SHADE for constants.
Bas Nieuwenhuizen [Wed, 3 May 2017 17:52:12 +0000 (19:52 +0200)]
radv: Don't use FLAT_SHADE for constants.

Setting both offset to 0x20 and flat shade results in passthrough
mode instead of the constant.

Signed-off-by: Bas Nieuwenhuizen <basni@google.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
Fixes: f205e19e4f8 "radv/ac: eliminate unused vertex shader outputs. (v2)"
7 years agoi965: Move MOCS macros to brw_context.h.
Rafael Antognolli [Fri, 28 Apr 2017 16:02:31 +0000 (09:02 -0700)]
i965: Move MOCS macros to brw_context.h.

These macros are defined in brw_defines.h, which contains a lot of
macros that conflict with autogenerated code from genxml. But we need to
use them (the MOCS macros) in some of that same genxml code.

Moving them to brw_context.h solves that problem and we don't have to
include brw_defines.h.

Signed-off-by: Rafael Antognolli <rafael.antognolli@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
7 years agoanv: Use BRW_BARYCENTRIC_NONPERSPECTIVE_BITS from common header.
Rafael Antognolli [Mon, 24 Apr 2017 18:25:07 +0000 (11:25 -0700)]
anv: Use BRW_BARYCENTRIC_NONPERSPECTIVE_BITS from common header.

In a previous patch some enums were split out from brw_eu_defines.h, so
they could be used by genxml based code. anv can also benefit from this.

Signed-off-by: Rafael Antognolli <rafael.antognolli@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
7 years agoi965: Move enums to brw_compiler.h.
Rafael Antognolli [Tue, 2 May 2017 16:20:02 +0000 (09:20 -0700)]
i965: Move enums to brw_compiler.h.

These enums live inside struct brw_wm_prog_data, so it makes sense to
keep them in the same header. It also allows to use them without
including brw_eu_defines.h.

Signed-off-by: Rafael Antognolli <rafael.antognolli@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
7 years agogenxml: Update 3DSTATE_LINE_STIPPLE xml on gen6.
Rafael Antognolli [Tue, 2 May 2017 17:01:15 +0000 (10:01 -0700)]
genxml: Update 3DSTATE_LINE_STIPPLE xml on gen6.

From the PRM, Line Stipple Inverse Repeat Count is on dw2, bits 31:16,
format U1.13.

Signed-off-by: Rafael Antognolli <rafael.antognolli@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
7 years agogenxml: Normalize xml for 3DSTATE_CC_STATE_POINTERS.
Rafael Antognolli [Wed, 19 Apr 2017 23:13:20 +0000 (16:13 -0700)]
genxml: Normalize xml for 3DSTATE_CC_STATE_POINTERS.

   - "COLOR_CALC_STATE Change" -> "Color Calc State Pointer Valid"
   - "Pointer to COLOR_CALC_STATE" -> "Color Calc State Pointer"
   - "BackFace" -> "Backface"

Signed-off-by: Rafael Antognolli <rafael.antognolli@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
7 years agogenxml: Normalize xml for 3DSTATE_MULTISAMPLE.
Rafael Antognolli [Wed, 19 Apr 2017 23:04:12 +0000 (16:04 -0700)]
genxml: Normalize xml for 3DSTATE_MULTISAMPLE.

Name the options to "Pixel Location":
   - PIXLOC_CENTER -> CENTER
   - PIXLOC_UL_CORNER -> UL_CORNER

Signed-off-by: Rafael Antognolli <rafael.antognolli@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
7 years agogenxml: Rename "Function Enable" to "Enable".
Rafael Antognolli [Fri, 31 Mar 2017 22:30:49 +0000 (15:30 -0700)]
genxml: Rename "Function Enable" to "Enable".

Rename that field name on genxml for:
   - 3DSTATE_GS - gen6+
   - 3DSTATE_DS - gen7+
   - 3DSTATE_HS - gen7+

Signed-off-by: Rafael Antognolli <rafael.antognolli@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
7 years agogenxml: Clip guardbands are float, not int.
Rafael Antognolli [Thu, 30 Mar 2017 17:36:25 +0000 (10:36 -0700)]
genxml: Clip guardbands are float, not int.

This makes genxml create the right struct types, and generate the right
batch commands.

Signed-off-by: Rafael Antognolli <rafael.antognolli@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
7 years agogenxml: 3DSTATE_VS rename Function Enable to Enable.
Rafael Antognolli [Wed, 22 Mar 2017 23:26:07 +0000 (16:26 -0700)]
genxml: 3DSTATE_VS rename Function Enable to Enable.

Signed-off-by: Rafael Antognolli <rafael.antognolli@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
7 years agogenxml: Make "Reorder Mode" fields consistent.
Kenneth Graunke [Wed, 7 Sep 2016 20:46:57 +0000 (13:46 -0700)]
genxml: Make "Reorder Mode" fields consistent.

Both GS and SOL have these fields.  Some were ReorderEnable = true,
some were ReorderMode = REORDER_TRAILING, and some were just TRAILING.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Rafael Antognolli <rafael.antognolli@intel.com>
7 years agogenxml: Add alias for MOCS.
Rafael Antognolli [Mon, 20 Mar 2017 23:27:40 +0000 (16:27 -0700)]
genxml: Add alias for MOCS.

Use an alias, so we can set the same value as the #define's.

v3:
   - Call it "SO Buffer MOCS" to follow the most common naming scheme.
   - Add alias for gen7 and gen75 too (Ken).

Signed-off-by: Rafael Antognolli <rafael.antognolli@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
7 years agogenxml: Add missing field values to 3DSTATE_SBE.
Rafael Antognolli [Mon, 24 Apr 2017 18:03:14 +0000 (11:03 -0700)]
genxml: Add missing field values to 3DSTATE_SBE.

Fill out "Attribute Active Component Format" possible values.

Signed-off-by: Rafael Antognolli <rafael.antognolli@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
7 years agogenxml: Update xml for 3DSTATE_SF.
Rafael Antognolli [Fri, 31 Mar 2017 22:25:20 +0000 (15:25 -0700)]
genxml: Update xml for 3DSTATE_SF.

 - Normalize "Anti-Aliasing Enable"
 - Add "Multisample Rasterization Mode" constants
 - Rename "Use Point Width on Vertex" to "Vertex"
 - Rename "Use Point Width from State" to "State"

Signed-off-by: Rafael Antognolli <rafael.antognolli@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
7 years agogenxml: Rename clip enable property.
Rafael Antognolli [Thu, 16 Mar 2017 00:07:10 +0000 (17:07 -0700)]
genxml: Rename clip enable property.

There are two variants:
   - Clip Enable
   - CLIP Enable (on gen6)

Rename everything to Clip Enable.

Signed-off-by: Rafael Antognolli <rafael.antognolli@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
7 years agogenxml: Fill out Gen4, Gen45 and Gen5 XML
Louis-Francis Ratté-Boulianne [Thu, 20 Apr 2017 22:21:38 +0000 (15:21 -0700)]
genxml: Fill out Gen4, Gen45 and Gen5 XML

Add some more details to Gen4 and Gen45 and add what is needed
in Gen5 XML. This commit overwrite the previous work done on Gen4
and Gen45 as it contains more instructions and fixes some mistakes.
However, comments (dword boundaries) are lost in the process.

v3:
   - Set the type of some fields, instead of prefix. Also fix the
     SAMPLER_BORDER_COLOR_STATE fields of gen5.xml.

Signed-off-by: Louis-Francis Ratté-Boulianne <lfrb@collabora.com>
Acked-by: Kenneth Graunke <kenneth@whitecape.org>
7 years agoanv: Implement VK_KHX_external_semaphore_fd
Jason Ekstrand [Thu, 16 Feb 2017 01:25:46 +0000 (17:25 -0800)]
anv: Implement VK_KHX_external_semaphore_fd

This implementation allocates a 4k BO for each semaphore that can be
exported using OPAQUE_FD and uses the kernel's already-existing
synchronization mechanism on BOs.

Reviewed-by: Chad Versace <chadversary@chromium.org>
7 years agoanv: Pull the guts of cmd_buffer_execbuf into a helper
Jason Ekstrand [Tue, 28 Feb 2017 00:41:53 +0000 (16:41 -0800)]
anv: Pull the guts of cmd_buffer_execbuf into a helper

Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
Reviewed-by: Chad Versace <chadversary@chromium.org>
7 years agoanv: Implement VK_KHX_external_semaphore
Jason Ekstrand [Thu, 16 Feb 2017 00:06:42 +0000 (16:06 -0800)]
anv: Implement VK_KHX_external_semaphore

Reviewed-by: Chad Versace <chadversary@chromium.org>
7 years agoanv: Implement VK_KHX_external_semaphore_capabilities
Jason Ekstrand [Thu, 16 Feb 2017 00:00:05 +0000 (16:00 -0800)]
anv: Implement VK_KHX_external_semaphore_capabilities

This just stubs things out.  Real external semaphore support will come
with VK_KHX_external_semaphore_fd.

Reviewed-by: Chad Versace <chadversary@chromium.org>
7 years agoanv: Add a real semaphore struct
Jason Ekstrand [Wed, 15 Feb 2017 23:35:38 +0000 (15:35 -0800)]
anv: Add a real semaphore struct

It's just a dummy for now, but we'll flesh it out as needed for external
semaphores.

Reviewed-by: Chad Versace <chadversary@chromium.org>
7 years agoradeonsi/gfx9: fix gl_ViewportIndex
Marek Olšák [Mon, 1 May 2017 15:34:41 +0000 (17:34 +0200)]
radeonsi/gfx9: fix gl_ViewportIndex

v2: remove unnecessary LLVMBuildAnd calls

Cc: 17.1 <mesa-stable@lists.freedesktop.org>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
7 years agoradeonsi/gfx9: set VGT_REUSE_OFF = 0
Marek Olšák [Tue, 2 May 2017 13:32:32 +0000 (15:32 +0200)]
radeonsi/gfx9: set VGT_REUSE_OFF = 0

same as Vulkan

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
7 years agoetnaviv: add L8A8_UNORM texture format
Christian Gmeiner [Tue, 2 May 2017 20:06:53 +0000 (22:06 +0200)]
etnaviv: add L8A8_UNORM texture format

No piglit regressions.

CC: <mesa-stable@lists.freedesktop.org>
Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
7 years agoglsl: Corrected some typos and error messages
Andres Gomez [Wed, 3 May 2017 18:35:24 +0000 (21:35 +0300)]
glsl: Corrected some typos and error messages

v2: left code style/formatting corrections out.

Signed-off-by: Andres Gomez <agomez@igalia.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
7 years agoradv: don't leak DRM devices
Grazvydas Ignotas [Tue, 2 May 2017 17:05:07 +0000 (20:05 +0300)]
radv: don't leak DRM devices

After successful drmGetDevices2() call, drmFreeDevices() needs to be called.

Fixes: 743315f2 "radv: do not open random render node(s)"
Signed-off-by: Grazvydas Ignotas <notasas@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
7 years agoradv: fix possible stack corruption
Grazvydas Ignotas [Tue, 2 May 2017 16:41:13 +0000 (19:41 +0300)]
radv: fix possible stack corruption

drmGetDevices2 takes count and not size. Probably hasn't caused problems
yet in practice and was missed as setups with more than 8 DRM devices
are not very common.

Fixes: 743315f2 "radv: do not open random render node(s)"
Signed-off-by: Grazvydas Ignotas <notasas@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
7 years agoac: eliminate duplicated VS exports
Marek Olšák [Sat, 29 Apr 2017 21:56:03 +0000 (23:56 +0200)]
ac: eliminate duplicated VS exports

Only very few shaders have them (from 48486 shaders):

shaders/private/left_4_dead_2/765.shader_test - ac: 1 matches 2
shaders/private/left_4_dead_2/877.shader_test - ac: 1 matches 6
shaders/private/left_4_dead_2/2141.shader_test - ac: 1 matches 6
shaders/private/ue4_effects_cave/11.shader_test - ac: 4 matches 5
shaders/private/ue4_effects_cave/14.shader_test - ac: 5 matches 6
shaders/private/ue4_effects_cave/46.shader_test - ac: 5 matches 6
shaders/private/ue4_effects_cave/42.shader_test - ac: 4 matches 5
shaders/private/ue4_effects_cave/104.shader_test - ac: 4 matches 5
shaders/private/f1-2015/336.shader_test - ac: 3 matches 4
shaders/private/f1-2015/948.shader_test - ac: 6 matches 7
shaders/private/f1-2015/602.shader_test - ac: 0 matches 3
shaders/private/f1-2015/600.shader_test - ac: 0 matches 3
shaders/private/f1-2015/1214.shader_test - ac: 0 matches 1
shaders/private/f1-2015/988.shader_test - ac: 4 matches 5
shaders/private/ue4_elemental/149.shader_test - ac: 3 matches 4
shaders/private/ue4_elemental/346.shader_test - ac: 4 matches 5
shaders/private/ue4_elemental/178.shader_test - ac: 3 matches 4
shaders/private/ue4_elemental/136.shader_test - ac: 4 matches 5
shaders/private/ue4_elemental/168.shader_test - ac: 4 matches 5
shaders/private/ue4_elemental/690.shader_test - ac: 3 matches 4
shaders/private/ue4_elemental/19.shader_test - ac: 5 matches 6
shaders/private/dota2/1901.shader_test - ac: 0 matches 5
shaders/private/dota2/1357.shader_test - ac: 0 matches 5
shaders/private/dota2/1375.shader_test - ac: 0 matches 5
shaders/private/dota2/1369.shader_test - ac: 0 matches 5
shaders/private/dota2/1583.shader_test - ac: 0 matches 5
shaders/private/dota2/1811.shader_test - ac: 0 matches 5
shaders/private/dota2/1893.shader_test - ac: 0 matches 5
shaders/private/dota2/1533.shader_test - ac: 0 matches 5
shaders/private/dota2/1951.shader_test - ac: 0 matches 5
shaders/private/dota2/1361.shader_test - ac: 0 matches 5
shaders/private/mad_max/2792.shader_test - ac: 0 matches 1
shaders/private/mad_max/2794.shader_test - ac: 0 matches 1
shaders/private/mad_max/2780.shader_test - ac: 0 matches 1
shaders/private/mad_max/2902.shader_test - ac: 0 matches 1
shaders/private/bioshock-infinite/3050.shader_test - ac: 3 matches 7
shaders/private/bioshock-infinite/2544.shader_test - ac: 3 matches 6
shaders/private/bioshock-infinite/3062.shader_test - ac: 3 matches 8
shaders/private/bioshock-infinite/2012.shader_test - ac: 3 matches 7
shaders/private/bioshock-infinite/3058.shader_test - ac: 3 matches 7
shaders/private/bioshock-infinite/3270.shader_test - ac: 3 matches 7
shaders/private/bioshock-infinite/732.shader_test - ac: 3 matches 7
shaders/private/bioshock-infinite/3026.shader_test - ac: 3 matches 7
shaders/private/bioshock-infinite/3258.shader_test - ac: 3 matches 6
shaders/private/bioshock-infinite/3198.shader_test - ac: 3 matches 6
shaders/private/bioshock-infinite/3046.shader_test - ac: 3 matches 7
shaders/private/bioshock-infinite/3168.shader_test - ac: 3 matches 6
shaders/private/bioshock-infinite/2550.shader_test - ac: 3 matches 6
shaders/private/bioshock-infinite/3210.shader_test - ac: 3 matches 6
shaders/private/bioshock-infinite/3032.shader_test - ac: 3 matches 6
shaders/private/bioshock-infinite/668.shader_test - ac: 3 matches 7

Reviewed-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
7 years agoac: rename ac_eliminate_const_vs_outputs -> ac_optimize_vs_outputs
Marek Olšák [Sat, 29 Apr 2017 21:53:08 +0000 (23:53 +0200)]
ac: rename ac_eliminate_const_vs_outputs -> ac_optimize_vs_outputs

Reviewed-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
7 years agoac: first parse VS exports before eliminating constant ones
Marek Olšák [Sat, 29 Apr 2017 21:47:08 +0000 (23:47 +0200)]
ac: first parse VS exports before eliminating constant ones

A later commit will make use of this.

Reviewed-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
7 years agoanv: Trivially implement multiDrawIndirect
Jason Ekstrand [Thu, 20 Apr 2017 00:37:46 +0000 (17:37 -0700)]
anv: Trivially implement multiDrawIndirect

Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
7 years agoanv: Enable VK_KHX_multiview and SPV_KHR_multiview
Jason Ekstrand [Thu, 23 Mar 2017 00:43:10 +0000 (17:43 -0700)]
anv: Enable VK_KHX_multiview and SPV_KHR_multiview

Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
7 years agoanv/cmd_buffer: Emit instanced draws for multiple views
Jason Ekstrand [Thu, 23 Mar 2017 00:15:32 +0000 (17:15 -0700)]
anv/cmd_buffer: Emit instanced draws for multiple views

Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
7 years agoanv/cmd_buffer: Pull indirect draw parameter loading into a helper
Jason Ekstrand [Wed, 22 Mar 2017 23:22:38 +0000 (16:22 -0700)]
anv/cmd_buffer: Pull indirect draw parameter loading into a helper

Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
7 years agoanv/pipeline: Add shader lowering for multiview
Jason Ekstrand [Wed, 22 Mar 2017 22:37:17 +0000 (15:37 -0700)]
anv/pipeline: Add shader lowering for multiview

v2 (Jason Ekstrand):
 - Take a view_mask rather than a whole subpass
 - Build the view mask into the VS shader key

Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
7 years agoanv/pipeline: Add a subpass field to anv_pipeline
Jason Ekstrand [Wed, 22 Mar 2017 22:36:46 +0000 (15:36 -0700)]
anv/pipeline: Add a subpass field to anv_pipeline

This simplifies the code a variety of places.

Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
7 years agoanv/pipeline: Call nir_gather_info later
Jason Ekstrand [Wed, 22 Mar 2017 22:24:06 +0000 (15:24 -0700)]
anv/pipeline: Call nir_gather_info later

We want to insert more lowering code that may insert system values and
we need to gather info after that lowering.

Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
7 years agoanv: Move shader hashing to anv_pipeline
Jason Ekstrand [Thu, 27 Apr 2017 13:25:06 +0000 (06:25 -0700)]
anv: Move shader hashing to anv_pipeline

Shader hashing is very closely related to shader compilation.  Putting
them right next to each other in anv_pipeline makes it easier to verify
that we're actually hashing everything we need to be hashing.  The only
real change (other than the order of hashing) is that we now hash in the
shader stage.

Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
7 years agoanv/pass: Store the per-subpass view mask
Jason Ekstrand [Tue, 21 Mar 2017 23:04:08 +0000 (16:04 -0700)]
anv/pass: Store the per-subpass view mask

Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
7 years agoanv: Add the KHX_multiview boilerplate
Jason Ekstrand [Tue, 21 Mar 2017 21:40:46 +0000 (14:40 -0700)]
anv: Add the KHX_multiview boilerplate

Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
7 years agoanv/nir: Delete the apply_dynamic_offsets prototype
Jason Ekstrand [Wed, 22 Mar 2017 22:10:14 +0000 (15:10 -0700)]
anv/nir: Delete the apply_dynamic_offsets prototype

That pass hasn't existed since dd4db84640bbb694f180dd50850c3388f67228be
but the prototype stuck around for no reason.

Reviewed-by: Elie Tournier <elie.tournier@collabora.com>
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
7 years agospirv: Add support for SPV_KHR_multiview
Jason Ekstrand [Tue, 21 Mar 2017 22:24:25 +0000 (15:24 -0700)]
spirv: Add support for SPV_KHR_multiview

Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
7 years agospirv: Bump the SPIR-V header to the latest public version
Jason Ekstrand [Tue, 21 Mar 2017 21:47:32 +0000 (14:47 -0700)]
spirv: Bump the SPIR-V header to the latest public version

Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
7 years agocompiler: Add a system value and varying for ViewIndex
Jason Ekstrand [Tue, 21 Mar 2017 22:22:10 +0000 (15:22 -0700)]
compiler: Add a system value and varying for ViewIndex

Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
7 years agomesa/vbo: reduce prim array size
Bartosz Tomczyk [Tue, 2 May 2017 11:19:34 +0000 (13:19 +0200)]
mesa/vbo: reduce prim array size

We always use only single element.

v2: Change single element arrays to variables

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
7 years agomesa: add const qualifier on _mesa_valid_to_render()
Brian Paul [Tue, 2 May 2017 17:32:08 +0000 (11:32 -0600)]
mesa: add const qualifier on _mesa_valid_to_render()

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoi965/vec4: don't modify regioning parameters to the sources of DF align1 instructions
Samuel Iglesias Gonsálvez [Tue, 25 Apr 2017 10:28:18 +0000 (12:28 +0200)]
i965/vec4: don't modify regioning parameters to the sources of DF align1 instructions

The regioning parameters are now properly set by convert_to_hw_regs()
and we don't need to fix them in the generator. That latter fix
previously done in the generator was strictly speaking wrong for any
non-identity regions.

Signed-off-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
Cc: "17.1" <mesa-stable@lists.freedesktop.org>
Reviewed-by: Francisco Jerez <currojerez@riseup.net>
7 years agoi965/vec4: fix register width for DF VGRF and UNIFORM
Samuel Iglesias Gonsálvez [Tue, 25 Apr 2017 10:18:17 +0000 (12:18 +0200)]
i965/vec4: fix register width for DF VGRF and UNIFORM

On gen7, the swizzles used in DF align16 instructions works for element
size of 32 bits, so we can address only 2 consecutive DFs. As we assumed that
in the rest of the code and prepare the instructions for this (scalarize_df()),
we need to set it to two again.

However, for DF align1 instructions, a width of 2 is wrong as we are not
reading the data we want. For example, an uniform would have a region of
<0, 2, 1> so it would repeat the first 2 DFs, when we wanted to access
to the first 4.

This patch sets the default one to 4 and then modifies the width of
align16 instruction's DF sources when we translate the logical swizzle
to the physical one.

v2:
- Remove conditional (Curro).

Signed-off-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
Cc: "17.1" <mesa-stable@lists.freedesktop.org>
Reviewed-by: Francisco Jerez <currojerez@riseup.net>
7 years agoi965/vec4: fix vertical stride to avoid breaking region parameter rule
Samuel Iglesias Gonsálvez [Wed, 26 Apr 2017 08:12:03 +0000 (10:12 +0200)]
i965/vec4: fix vertical stride to avoid breaking region parameter rule

From IVB PRM, vol4, part3, "General Restrictions on Regioning
Parameters":

  "If ExecSize = Width and HorzStride ≠ 0, VertStride must
   be set to Width * HorzStride."

In next patch, we are going to modify the region parameter for
uniforms and vgrf. For uniforms that are the source of
DF align1 instructions, they will have <0, 4, 1> regioning and
the execsize for those instructions will be 4, so they will break
the regioning rule. This will be the same for VGRF sources where
we use the vstride == 0 exploit.

As we know we are not going to cross the GRF boundary with that
execsize and parameters (not even with the exploit), we just fix
the vstride here.

v2:
- Move is_align1_df() (Curro)
- Refactor exec_size == width calculation (Curro)

Signed-off-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
Cc: "17.1" <mesa-stable@lists.freedesktop.org>
Reviewed-by: Francisco Jerez <currojerez@riseup.net>
7 years agoradv/ac: canonicalize the output for 32-bit float min/max.
Dave Airlie [Fri, 17 Mar 2017 03:38:41 +0000 (13:38 +1000)]
radv/ac: canonicalize the output for 32-bit float min/max.

This fixes:
dEQP-VK.glsl.builtin.precision.min.*
dEQP-VK.glsl.builtin.precision.max.*
dEQP-VK.glsl.builtin.precision.clamp.*

The problem is the hw doesn't compare denorms properly,
so we have to flush them, even though the spec says
flushing is optional, if you don't flush the results
should be correct.

The -pro driver changes the shader float mode,
it would be nice if llvm could grow that perhaps.

Acked-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
7 years agoradv: flush f32->f16 conversion denormals to zero. (v2)
Dave Airlie [Fri, 17 Mar 2017 02:11:30 +0000 (12:11 +1000)]
radv: flush f32->f16 conversion denormals to zero. (v2)

SPIR-V defines the f32->f16 operation as flushing denormals to 0,
this compares the class using amd class opcode.

Thanks to Matt Arsenault for figuring it out.

This fix is VI+ only, add a TODO for SI/CIK.

This fixes:
dEQP-VK.spirv_assembly.instruction.compute.opquantize.flush_to_zero

Acked-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
7 years agoradv: Add userspace fence buffer per context.
Bas Nieuwenhuizen [Wed, 3 May 2017 00:21:39 +0000 (02:21 +0200)]
radv: Add userspace fence buffer per context.

Having it in the winsys didn't work when multiple devices use
the same winsys, as we then have multiple contexts per queue,
and each context counts separately.

Signed-off-by: Bas Nieuwenhuizen <basni@google.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
Fixes: 7b9963a28f4 "radv: Enable userspace fence checking."
7 years agoradv: enable lower_sub to fix loop unrolling.
Dave Airlie [Tue, 2 May 2017 22:59:56 +0000 (08:59 +1000)]
radv: enable lower_sub to fix loop unrolling.

Loop unroll asserts if it hits a sub, we don't really want
to lower subs as llvm handles these things, but do this for
now, until we can fix loop unroll to work with subs.

Fixes: 14ae0bfa5 (radv: Add NIR loop unrolling)
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
7 years agoradv: Don't set dynamic state for pipelines with rasterizer dicard.
Bas Nieuwenhuizen [Tue, 2 May 2017 21:39:29 +0000 (23:39 +0200)]
radv: Don't set dynamic state for pipelines with rasterizer dicard.

All of the dynamic states apply to rasterization & fragment processing,
so we don't need to set them if we don't rasterize.

We don't clear the dirty flags for them though, so we don't miss any
updates for the next pipeline with rasterization.

Signed-off-by: Bas Nieuwenhuizen <basni@google.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
Fixes: 76603aa90b8 "radv: Drop the default viewport when 0 viewports are given."
7 years agoradv: flush more stages when semaphore are waiting.
Dave Airlie [Tue, 2 May 2017 21:13:21 +0000 (07:13 +1000)]
radv: flush more stages when semaphore are waiting.

This still doesn't give us complete pWaitDstStageMask support,
but it should provide enough to be correct if not as efficent as
possible.

If we have wait semaphores we must flush between submits and
flush the shaders as well.

This fixes the remaining fails in:
dEQP-VK.synchronization.op.single_queue.semaphore.*ssbo*

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
7 years agoglsl: set vector_elements to 1 for samplers
Samuel Pitoiset [Wed, 26 Apr 2017 11:49:13 +0000 (13:49 +0200)]
glsl: set vector_elements to 1 for samplers

I don't see any reasons why vector_elements is 1 for images and
0 for samplers. This increases consistency and allows to clean
up some code a bit.

This will also help for ARB_bindless_texture.

No piglit regressions with RadeonSI.

This time the Intel CI system doesn't report any failures.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
7 years agovc4: Use runtime CPU detection for whether NEON is available.
Eric Anholt [Thu, 13 Apr 2017 18:48:22 +0000 (11:48 -0700)]
vc4: Use runtime CPU detection for whether NEON is available.

This will allow Raspbian's ARMv6 builds to take advantage of the new NEON
code, and could prevent problems if vc4 ends up getting used on a v7 CPU
without NEON.

v2: Drop dead NEON_SUFFIX (noted by Erik Faye-Lund)

7 years agovc4: Use a wrapper file to set VC4_BUILD_NEON instead of CFLAGS.
Eric Anholt [Thu, 13 Apr 2017 22:09:16 +0000 (15:09 -0700)]
vc4: Use a wrapper file to set VC4_BUILD_NEON instead of CFLAGS.

Android.mk was setting the flag across the entire driver, so we didn't
have non-NEON versions getting built.  This was going to be a problem with
the next commit, when I start auto-detecting NEON support and use the
non-NEON version when appropriate.

Reviewed-by: Rob Herring <robh@kernel.org>
7 years agogallium: Enable ARM NEON CPU detection.
Eric Anholt [Thu, 13 Apr 2017 18:43:30 +0000 (11:43 -0700)]
gallium: Enable ARM NEON CPU detection.

I wrote this code with reference to pixman, though I've only decided to
cover Linux (what I'm testing) and Android (seems obvious enough).  Linux
has getauxval() as a cleaner interface to the /proc entry, but it's more
glibc-specific and I didn't want to add detection for that.

This will be used to enable NEON at runtime on ARMv6 builds of vc4.

v2: Actually initialize the temp vars in the Android path (noticed by
    daniels)
v3: Actually pull in the cpufeatures library (change by robher).
    Use O_CLOEXEC.  Break out of the loop when we find our feature.
v4: Drop VFP code, which was confused about what it was detecting and not
    actually used yet.

Reviewed-by: Grazvydas Ignotas <notasas@gmail.com>
7 years agoradv: fix stencil only clears.
Dave Airlie [Tue, 2 May 2017 05:29:28 +0000 (15:29 +1000)]
radv: fix stencil only clears.

If we are clearing stencil only, we still need to provide a
a valid Z output from the vertex shader, we can't rely
on the depth clear value having any meaning, as we use this
for the position output, and it could get clipped, so we
don't end up clearing anything.

Fixes:
dEQP-VK.renderpass.simple.stencil
since I added S8 support.

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
7 years agorenderonly: use drmIoctl
Philipp Zabel [Fri, 28 Apr 2017 11:14:20 +0000 (13:14 +0200)]
renderonly: use drmIoctl

To restart interrupted system calls, use drmIoctl.

Fixes: 848b49b288f ("gallium: add renderonly library")
CC: <mesa-stable@lists.freedesktop.org>
Suggested-by: Emil Velikov <emil.l.velikov@gmail.com>
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
7 years agorenderonly: drop resources on destroy
Philipp Zabel [Thu, 27 Apr 2017 16:44:02 +0000 (18:44 +0200)]
renderonly: drop resources on destroy

The renderonly_scanout holds a reference on its prime pipe resource,
which should be released when it is destroyed. If it was created by
renderonly_create_kms_dumb_buffer_for_resource, the dumb BO also has
to be destroyed.

Fixes: 848b49b288f ("gallium: add renderonly library")
CC: <mesa-stable@lists.freedesktop.org>
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
7 years agorenderonly: close transfer prime_fd
Philipp Zabel [Thu, 27 Apr 2017 16:44:01 +0000 (18:44 +0200)]
renderonly: close transfer prime_fd

prime_fd is only used to transfer the scanout buffer to the GPU inside
renderonly_create_kms_dumb_buffer_for_resource. It should be closed
immediately to avoid leaking the DMA-BUF file handle.

Fixes: 848b49b288f ("gallium: add renderonly library")
CC: <mesa-stable@lists.freedesktop.org>
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
7 years agoradv/wsi: report presentation error per image request
Dave Airlie [Tue, 2 May 2017 03:40:36 +0000 (13:40 +1000)]
radv/wsi: report presentation error per image request

This ports
0fcb92c17dee681bd39c08ddf0abc358a27337c7
anv: wsi: report presentation error per image request

This fixes:
dEQP-VK.wsi.xlib.incremental_present.scale_none.*

Reviewed-by: Daniel Stone <daniels@collabora.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
7 years agoradv: minor pahole related improvements.
Dave Airlie [Tue, 2 May 2017 00:32:02 +0000 (10:32 +1000)]
radv: minor pahole related improvements.

This just reduces the structs by 4-8 bytes each.

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
7 years agoradv/image: resize some surface members.
Dave Airlie [Tue, 2 May 2017 00:31:14 +0000 (10:31 +1000)]
radv/image: resize some surface members.

Oops meant to be part of previous series.

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
7 years agoradv: drop unused surface level members.
Dave Airlie [Tue, 2 May 2017 00:12:51 +0000 (10:12 +1000)]
radv: drop unused surface level members.

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
7 years agoradv/image: drop blk_d
Dave Airlie [Tue, 2 May 2017 00:12:36 +0000 (10:12 +1000)]
radv/image: drop blk_d

This was pretty much unused.

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
7 years agoradv: remove some members of radeon surface.
Dave Airlie [Mon, 1 May 2017 23:58:33 +0000 (09:58 +1000)]
radv: remove some members of radeon surface.

We would be storing this info twice per image, no need to,
remove it from the surface struct.

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
7 years agoradv: move some image info into a separate struct.
Dave Airlie [Mon, 1 May 2017 23:49:14 +0000 (09:49 +1000)]
radv: move some image info into a separate struct.

This is to rework the surface code like radeonsi.

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
7 years agoradv: provide a helper for comparing an image extents.
Dave Airlie [Mon, 1 May 2017 23:40:36 +0000 (09:40 +1000)]
radv: provide a helper for comparing an image extents.

This just makes it easier to do the follow in cleanups of the surface.

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
7 years agogbm/dri: Fix sign-extension in modifier query
Daniel Stone [Tue, 2 May 2017 18:44:38 +0000 (19:44 +0100)]
gbm/dri: Fix sign-extension in modifier query

When we were assembling the unsigned 64-bit query return from its
two signed 32-bit component parts, the lower half was getting
sign-extended into the top half. Be more explicit about what we want to
do.

Fixes gbm_bo_get_modifier() returning ((1 << 64) - 1) rather than
((1 << 56) - 1), i.e. DRM_FORMAT_MOD_INVALID.

Signed-off-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Ben Widawsky <ben@bwidawsk.net>
7 years agonir: Pick just the channels we want for bitmap and drawpixels lowering.
Eric Anholt [Wed, 8 Mar 2017 23:20:31 +0000 (15:20 -0800)]
nir: Pick just the channels we want for bitmap and drawpixels lowering.

NIR now validates that SSA references use the same number of channels as
are in the SSA value.

v2: Reword commit message, since the commit didn't land before the
    validation change did.

Fixes: 370d68babcbb ("nir/validate: Validate that bit sizes and components always match")
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> (v1)
Cc: <mesa-stable@lists.freedesktop.org>
7 years agoanv/tests: Create a dummy instance as well as device
Jason Ekstrand [Mon, 1 May 2017 23:48:12 +0000 (16:48 -0700)]
anv/tests: Create a dummy instance as well as device

This fixes crashes caused by 35e626bd0e59e7ce9fd97ccef66b2468c09206a4
which made us start referencing the instance in the allocators.  With
this commit, the tests now happily pass again.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=100877
Tested-by: Vinson Lee <vlee@freedesktop.org>
7 years agoradv: Use correct stage for ready bit.
Bas Nieuwenhuizen [Sun, 30 Apr 2017 15:56:24 +0000 (17:56 +0200)]
radv: Use correct stage for ready bit.

Set the bit in the same stage as the timestamp, instead always at top of pipe.

Signed-off-by: Bas Nieuwenhuizen <basni@google.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
Tested-by: Grazvydas Ignotas <notasas@gmail.com>
7 years agoradv: Add top of pipe timestamp queries.
Bas Nieuwenhuizen [Sun, 30 Apr 2017 15:49:15 +0000 (17:49 +0200)]
radv: Add top of pipe timestamp queries.

Does not fix brokenness with the ready bit.

Signed-off-by: Bas Nieuwenhuizen <basni@google.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
7 years agoradv: Add NIR loop unrolling.
Bas Nieuwenhuizen [Wed, 26 Apr 2017 20:29:01 +0000 (22:29 +0200)]
radv: Add NIR loop unrolling.

Not much effect on dota2/talos, but positive on deferred.

Signed-off-by: Bas Nieuwenhuizen <basni@google.com>
Reviewed-by: Timothy Arceri <timothy.arceri@itsqueeze.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
7 years agoi965: Solve Android native fence fd double close
Randy Xu [Tue, 18 Apr 2017 06:27:10 +0000 (14:27 +0800)]
i965: Solve Android native fence fd double close

The Android native fence in i965 has two fds: _EGLSync::SyncFd and
brw_fence::sync_fd.

The semantics of __DRI2fenceExtensionRec::create_fence_fd are unclear on
whether the DRI driver takes ownership of the incoming fd (which is the
same incoming fd from eglCreateSync).  i965 did take ownership, but all
other Mesa drivers do not; instead, they dup the incoming fd. As
a result, _EGLSync::SyncFd and brw_fence::sync_fd were the same fd, and
both egl_dri2 and i965 believed they owned it. On eglDestroySync, that
led to a double-close.

Fix the double-close by making brw_dri_create_fence_fd dup the incoming
fd, just like the other drivers do.

Signed-off-by: Randy Xu <randy.xu@intel.com>
Test: Run Vulkan and GLES stress test and no crash.
Fixes: 6403e376511 ("i965/sync: Implement fences based on Linux sync_file")
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Chad Versace <chadversary@chromium.org>
[chadv: Polish the commit message]
Cc: mesa-stable@lists.freedesktop.org
7 years agovc4: Only build the NEON code on arm32.
Eric Anholt [Fri, 14 Apr 2017 17:41:51 +0000 (10:41 -0700)]
vc4: Only build the NEON code on arm32.

NEON is sufficiently different on arm64 that we can't just reuse this
code.  Disable it on arm64 for now.

v2: Use PIPE_ARCH_ARM instead, as __ARM_ARCH may be 8 for a 32-bit build
    for a v8 CPU.

Signed-off-by: Eric Anholt <eric@anholt.net>
Cc: <mesa-stable@lists.freedesktop.org>
7 years agogm107/ir: add a missing assertion in emitISCADD()
Samuel Pitoiset [Sat, 29 Apr 2017 15:40:26 +0000 (17:40 +0200)]
gm107/ir: add a missing assertion in emitISCADD()

For consistency, similar to the other emitters.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
7 years agoi965: Don't allocate uniform space for samplers
Timothy Arceri [Sun, 30 Apr 2017 02:12:35 +0000 (12:12 +1000)]
i965: Don't allocate uniform space for samplers

Samplers are encoded into the instruction word, so there's no need to
make space in the uniform file.

Previously matrix_columns and vector_elements were set to 0, making this
else case a no-op. Commit 75a31a20af26 changed that, causing malloc
corruption in thousands of tests on i965.

Fixes: 75a31a20af26 ("glsl: set vector_elements to 1 for samplers")
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=100871

7 years agoegl: initialise dummy_thread via _eglInitThreadInfo
Emil Velikov [Tue, 25 Apr 2017 16:07:46 +0000 (17:07 +0100)]
egl: initialise dummy_thread via _eglInitThreadInfo

Considering we cannot make dummy_thread a constant we might as well,
initialise by the same function that handles the actual thread info.

This way we don't need to worry about mismatch between the initialiser
and initialising function.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com>
7 years agoegl: polish dri2_to_egl_attribute_map[]
Emil Velikov [Fri, 28 Apr 2017 16:01:03 +0000 (17:01 +0100)]
egl: polish dri2_to_egl_attribute_map[]

Annotate the array as static const and use C99 initialiser to populate
it.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Matt Turner <mattst88@gmail.com>
7 years agogallium/targets: fix bool setting on BE architectures
Ilia Mirkin [Tue, 18 Apr 2017 04:00:40 +0000 (00:00 -0400)]
gallium/targets: fix bool setting on BE architectures

val_bool and val_int are in a union. val_bool gets the first byte, which
happens to work on LE when setting via the int, but breaks on BE. By
setting the value properly, we are able to use DRI3 on BE architectures.
Tested by running glxgears with a NV34 in a G5 PPC.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Cc: mesa-stable@lists.freedesktop.org
[Emil Velikov: squash the vmwgfx hunk]
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
7 years agodocs: add release calendar page and references to it
Emil Velikov [Mon, 24 Apr 2017 16:22:19 +0000 (17:22 +0100)]
docs: add release calendar page and references to it

Add a page that has information which release is expected when and
associated information.

Reference to it from the "Releasing process" and "Release notes" pages.

v2:
 - Add Andres for 17.0.5
 - Rework table format to include the branch (Eric)

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Andres Gomez <agomez@igalia.com>
Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com>
7 years agotravis: bump MAKEFLAGS to -j4
Emil Velikov [Thu, 27 Apr 2017 16:09:12 +0000 (17:09 +0100)]
travis: bump MAKEFLAGS to -j4

The instance should have 2 cores, yet bumping the jobs to 4 should give
us a minor speed improvement.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Andres Gomez <agomez@igalia.com>
7 years agotravis: enable wayland support
Emil Velikov [Tue, 18 Apr 2017 12:57:31 +0000 (13:57 +0100)]
travis: enable wayland support

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Andres Gomez <agomez@igalia.com>
7 years agotravis: add Gallium state-tracker targets
Emil Velikov [Fri, 7 Apr 2017 13:06:25 +0000 (14:06 +0100)]
travis: add Gallium state-tracker targets

Split into OpenCL and others, since the former is quite time consuming.

v2:
 - explicitly enable/disable components
 - build libvdpau 1.1 requirement
 - enable st/vdpau
 - build libva 1.6.2 (API 0.38) requirement

v3: Drop ubuntu-toolchain-r-test from sources (Andres)

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Andres Gomez <agomez@igalia.com>