mesa.git
18 months agodrm-shim: return device platform as specified
Lionel Landwerlin [Mon, 10 Feb 2020 14:15:58 +0000 (16:15 +0200)]
drm-shim: return device platform as specified

v2: Embed the libdrm dependency inside the drm-shim dependency

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Acked-by: Eric Anholt <eric@anholt.net> (v1)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4429>

18 months agospirv: Rewrite CFG construction
Jason Ekstrand [Thu, 13 Feb 2020 05:30:58 +0000 (23:30 -0600)]
spirv: Rewrite CFG construction

This commit completely rewrites the way we extract a structured CFG from
SPIR-V.  The new approach is different in a few ways:

 1. It does a breadth-first search instead of depth-first.  This means
    that we've visited the merge node for a construct before we visit
    any of the nodes inside the construct.  This makes it easier to
    validate things like loop and switch nesting.

 2. We record more information in the CFG.  Earlier commits added a
    parent pointer to vtn_cf_node but we now record all of the merge and
    other special blocks for each CFG node.  This lets us validate
    things more precisely.

 3. It makes heavy use of merge blocks for walking the CFG.  Previously,
    we sort of used them as hints for trying to guess the CFG structure
    but things got dicey whenever a merge was missing.  We had some
    heuristics for how to handle short-circuiting if statements but it
    was a bunch of special cases.

    Now, we make them a fundamental part of walking the CFG.  When we
    encounter a control-flow construct, we add the body components of
    the construct to the BFS work list and then jump to the merge block
    if one exists to continue scanning the current CFG nesting level.
    If no merge block exists, we assume that means that control-flow
    never re-converges in a normal way and that the only way to get back
    to normality is with a direct jump such as a loop break or continue.
    This should make things far more robust when trying to deal with the
    more creative placement (or lack thereof) of merge instructions.

Reviewed-by: Alan Baker <alanbaker@google.com>
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3820>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3820>

18 months agospirv: Add a parent field to vtn_cf_node
Jason Ekstrand [Wed, 12 Feb 2020 21:31:50 +0000 (15:31 -0600)]
spirv: Add a parent field to vtn_cf_node

This makes it easier to crawl up the CF tree when trying to validate the
incoming SPIR-V control-flow.

Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3820>

18 months agospirv: Make vtn_function a vtn_cf_node
Jason Ekstrand [Wed, 12 Feb 2020 21:28:46 +0000 (15:28 -0600)]
spirv: Make vtn_function a vtn_cf_node

Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3820>

18 months agospirv: Make vtn_case a vtn_cf_node
Jason Ekstrand [Wed, 12 Feb 2020 21:19:20 +0000 (15:19 -0600)]
spirv: Make vtn_case a vtn_cf_node

Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3820>

18 months agospirv: Add cast and loop helpers for vtn_cf_node
Jason Ekstrand [Wed, 12 Feb 2020 21:00:30 +0000 (15:00 -0600)]
spirv: Add cast and loop helpers for vtn_cf_node

Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3820>

18 months agospirv: Add a vtn_block() helper
Jason Ekstrand [Wed, 12 Feb 2020 20:00:23 +0000 (14:00 -0600)]
spirv: Add a vtn_block() helper

Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3820>

18 months agointel/nir: Enable load/store vectorization
Jason Ekstrand [Sat, 14 Dec 2019 16:44:39 +0000 (10:44 -0600)]
intel/nir: Enable load/store vectorization

This commit enables the I/O vectorization pass that was originally
written for ACO for Intel drivers.  We enable it for UBOs, SSBOs, global
memory, and SLM.  We only enable vectorization for the scalar back-end
because it vec4 makes certain alignment assumptions.

Shader-db results with iris on ICL:

    total instructions in shared programs: 16077927 -> 16068236 (-0.06%)
    instructions in affected programs: 199839 -> 190148 (-4.85%)
    helped: 324
    HURT: 0
    helped stats (abs) min: 2 max: 458 x̄: 29.91 x̃: 4
    helped stats (rel) min: 0.11% max: 38.94% x̄: 4.32% x̃: 1.64%
    95% mean confidence interval for instructions value: -37.02 -22.80
    95% mean confidence interval for instructions %-change: -5.07% -3.58%
    Instructions are helped.

    total cycles in shared programs: 336806135 -> 336151501 (-0.19%)
    cycles in affected programs: 16009735 -> 15355101 (-4.09%)
    helped: 458
    HURT: 154
    helped stats (abs) min: 1 max: 77812 x̄: 1542.50 x̃: 75
    helped stats (rel) min: <.01% max: 34.46% x̄: 5.16% x̃: 2.01%
    HURT stats (abs)   min: 1 max: 22800 x̄: 336.55 x̃: 20
    HURT stats (rel)   min: <.01% max: 17.11% x̄: 2.12% x̃: 1.00%
    95% mean confidence interval for cycles value: -1596.83 -542.49
    95% mean confidence interval for cycles %-change: -3.83% -2.82%
    Cycles are helped.

    total sends in shared programs: 814177 -> 809049 (-0.63%)
    sends in affected programs: 15422 -> 10294 (-33.25%)
    helped: 324
    HURT: 0
    helped stats (abs) min: 1 max: 256 x̄: 15.83 x̃: 2
    helped stats (rel) min: 1.33% max: 67.90% x̄: 21.21% x̃: 15.38%
    95% mean confidence interval for sends value: -19.67 -11.98
    95% mean confidence interval for sends %-change: -23.03% -19.39%
    Sends are helped.

    LOST:   7
    GAINED: 2

Most of the helped shaders were in the following titles:

 - Doom
 - Deus Ex: Mankind Divided
 - Aztec Ruins
 - Shadow of Mordor
 - DiRT Showdown
 - Tomb Raider (Rise, I think)

Five of the lost programs are SIMD16 shaders we lost from dirt showdown.
The other two are compute shaders in Aztec Ruins which switched from
SIMD8 to SIMD16.

Vulkan pipeline-db stats on ICL:

    Instructions in all programs: 296780486 -> 293493363 (-1.1%)
    Loops in all programs: 149669 -> 149669 (+0.0%)
    Cycles in all programs: 90999206722 -> 88513844563 (-2.7%)
    Spills in all programs: 1710217 -> 1730691 (+1.2%)
    Fills in all programs: 1931235 -> 1958138 (+1.4%)

By far the most help was in the Tomb Raider games.  A couple of Batman
games with DXVK were also helped.  In Shadow of the Tomb Raider:

    Instructions in all programs: 41614336 -> 39408023 (-5.3%)
    Loops in all programs: 32200 -> 32200 (+0.0%)
    Cycles in all programs: 1875498485 -> 1667034831 (-11.1%)
    Spills in all programs: 196307 -> 214945 (+9.5%)
    Fills in all programs: 282736 -> 307113 (+8.6%)

Benchmarks of real games I've done on this patch:

 - Rise of the Tomb Raider: +3%
 - Shadow of the Tomb Raider: +10%

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4367>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4367>

18 months agonir/load_store_vectorize: Add support for nir_var_mem_global
Jason Ekstrand [Tue, 31 Mar 2020 08:22:57 +0000 (03:22 -0500)]
nir/load_store_vectorize: Add support for nir_var_mem_global

Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4367>

18 months agonir/load_store_vectorize: Use nir_iadd_imm for offsets
Jason Ekstrand [Tue, 31 Mar 2020 17:40:36 +0000 (12:40 -0500)]
nir/load_store_vectorize: Use nir_iadd_imm for offsets

This makes it capable of handling 64-bit offsets

Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4367>

18 months agonir/load_store_vectorize: Fix shared atomic info
Jason Ekstrand [Tue, 31 Mar 2020 08:19:39 +0000 (03:19 -0500)]
nir/load_store_vectorize: Fix shared atomic info

These were clearly copied and pasted from SSBOs.  The shared atomics
don't have an SSBO index so their offset is src0 and data is src1.

Fixes: ce9205c03bd20 "nir: add a load/store vectorization pass"
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4367>

18 months agointel/nir: Lower memory access bit sizes later
Jason Ekstrand [Sat, 28 Mar 2020 04:33:27 +0000 (23:33 -0500)]
intel/nir: Lower memory access bit sizes later

We're about to do load/store vectorization right before this but we need
that to happen after we've done a round of optimization.  Otherwise,
we'll be getting unoptimized NIR in from ANV and the vectorizer won't be
able to do anything with it.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4367>

18 months agoiris: Set alignments on cbuf0 and constant reads
Jason Ekstrand [Tue, 31 Mar 2020 04:00:15 +0000 (23:00 -0500)]
iris: Set alignments on cbuf0 and constant reads

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4367>

18 months agoanv: Improve brw_nir_lower_mem_access_bit_sizes
Jason Ekstrand [Fri, 27 Mar 2020 01:10:40 +0000 (20:10 -0500)]
anv: Improve brw_nir_lower_mem_access_bit_sizes

This commit makes us take both bit size and alignment into account so
that we can properly handle cases such as when we have a 32-bit store
to an 8-bit-aligned address.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4367>

18 months agointel/fs: Choose memory message type based on bit size
Jason Ekstrand [Thu, 26 Mar 2020 22:06:52 +0000 (17:06 -0500)]
intel/fs: Choose memory message type based on bit size

Thanks to the NIR vectorizing pass, we're about to see alignments that
are higher than the bit size.  Previously, we could use either and we
just happened to choose alignment (probably the wrong choice) so it's
harmless to switch to detecting based on bit size.  This commit changes
things to take both into account which is more accurate to what the
messages we're using do.  We also beef up the asserts and make them more
consistent, more accurate, and more complete.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4367>

18 months agoir3: Disable copy prop for immediate ldlw offsets
Brian Ho [Fri, 3 Apr 2020 18:53:55 +0000 (11:53 -0700)]
ir3: Disable copy prop for immediate ldlw offsets

Immediate offsets are currently collapsed for ldlw, but ldlw does
behave correctly with immediate values. For example,
`ldlw.u32 r0.x, l[4], 1` actually means to use the value of
regid 4 (r1.x) as the offset when we actually want it to use the
imm value of 4 as the offset.

This commit disables copy prop for ldlw offsets so the same
intrinsic gets compiled to:
  mov.u32u32 r0.y, 0x00000004
  ldlw.u32 r0.x, l[r0.y], 1

Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4439>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4439>

18 months agoradv: fix null winsys gpu_info array
Rhys Perry [Fri, 3 Apr 2020 16:32:24 +0000 (17:32 +0100)]
radv: fix null winsys gpu_info array

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Fixes: de550805c5d ('radv/winsys: spoof some values for num_render_backends in the null winsys')
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4437>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4437>

18 months agopan/midgard: Fix a divide by zero in emit_alu_bundle
Icecream95 [Wed, 1 Apr 2020 02:32:19 +0000 (15:32 +1300)]
pan/midgard: Fix a divide by zero in emit_alu_bundle

util_dynarray_grow_bytes divides by eltsize, but it's possible for
bundle->padding to be zero.

I changed the other call to util_dynarray_grow_bytes for consistency.

Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4397>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4397>

18 months agoturnip: Advertise 8 bit subpixel precision
Brian Ho [Thu, 12 Mar 2020 21:27:29 +0000 (14:27 -0700)]
turnip: Advertise 8 bit subpixel precision

Previously, turnip advertised 4-bit subpixel precision when in
practice, a6xx seems to render with 8-bit precision. This caused
dEQP-VK.renderpass2.suballocation.subpass_dependencies.late_fragment_tests.*
to fail because they compare images rendered with turnip against
ones rendered via a software reference implementation parameterized
by turnip's VkPhysicalDeviceLimits.subPixelPrecisionBits value.

Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4172>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4172>

18 months agomesa: update pipeline when re-linking a program in use
Pierre-Eric Pelloux-Prayer [Wed, 1 Apr 2020 12:23:53 +0000 (14:23 +0200)]
mesa: update pipeline when re-linking a program in use

Updating was only done for bound program, so add the
same logic for existing pipelines.

This fixes piglit test arb_shader_storage_buffer_object-issue1258.
It might also help the following issue:
  https://gitlab.freedesktop.org/mesa/mesa/-/issues/1258

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
Acked-by: Marek Olšák <marek.olsak@amd.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4404>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4404>

18 months agonv50: don't try to upload MSAA settings for BUFFER textures
Ilia Mirkin [Fri, 3 Apr 2020 01:53:02 +0000 (21:53 -0400)]
nv50: don't try to upload MSAA settings for BUFFER textures

We need the MSAA scaling parameters to properly fetch samples from MSAA
textures. These are stored in the miptree which wraps all regular
textures. However it does not wrap buffer textures, so make sure to skip
them rather than accessing out-of-bounds or unmapped memory.

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/2727
Fixes: 3bd40073b98 ("nv50: add support for texelFetch'ing MS textures")
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Cc: mesa-stable@lists.freedesktop.org
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4424>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4424>

18 months agointel/aub_viewer: fix access to freed memory
Lionel Landwerlin [Wed, 17 Jul 2019 11:42:49 +0000 (14:42 +0300)]
intel/aub_viewer: fix access to freed memory

Windows closed while we're displaying them might lead to invalid
memory accessed, so use the safe iterators on the list of windows.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4430>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4430>

18 months agoradv, aco: collect statistics if requested but executables are not
Rhys Perry [Thu, 19 Mar 2020 15:09:31 +0000 (15:09 +0000)]
radv, aco: collect statistics if requested but executables are not

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/2965>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/2965>

18 months agoaco: add vmem/smem score statistic
Rhys Perry [Wed, 4 Dec 2019 14:41:18 +0000 (14:41 +0000)]
aco: add vmem/smem score statistic

This isn't perfect (for example, changes might not be too meaningful when
comparing shaders with different control flow) but it should be useful for
evaluating scheduler changes.

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Acked-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/2965>

18 months agoaco: add various compiler statistics
Rhys Perry [Wed, 4 Dec 2019 15:19:56 +0000 (15:19 +0000)]
aco: add various compiler statistics

Adds these statistics:
- hash of code and constant data
- number of instructions
- number of copies from pseudo-instructions
- number of branches
- estimate of cycles spent not waiting in s_waitcnt
- number of vmem/smem "clauses"
- sgpr/vgpr usage before scheduling

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Acked-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/2965>

18 months agoradv: add code for exposing compiler statistics
Rhys Perry [Wed, 4 Dec 2019 14:46:31 +0000 (14:46 +0000)]
radv: add code for exposing compiler statistics

Statistics will be added to ACO in later commits.

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/2965>

18 months agoEGL: Add eglSetDamageRegionKHR to GLVND dispatch list
Daniel Stone [Wed, 1 Apr 2020 11:43:51 +0000 (12:43 +0100)]
EGL: Add eglSetDamageRegionKHR to GLVND dispatch list

This was missed in the original conversion, which added support for
eglSetDamageRegionKHR to local EGL exports, but forgot to generate
updated dispatch for GLVND.

Signed-off-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
Fixes: 9827547313c7 ("egl/android: support for EGL_KHR_partial_update")
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4403>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4403>

18 months agodocs: update calendar, add news item, and link releases notes for 20.0.4
Eric Engestrom [Fri, 3 Apr 2020 11:12:10 +0000 (13:12 +0200)]
docs: update calendar, add news item, and link releases notes for 20.0.4

Note that the next 20.0.x releases numbers have been shifted as this was
not one of the planned releases.

Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4428>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4428>

18 months agodocs/relnotes: add sha256sum for 20.0.4
Eric Engestrom [Fri, 3 Apr 2020 10:28:20 +0000 (12:28 +0200)]
docs/relnotes: add sha256sum for 20.0.4

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4428>

18 months agodocs: add release notes for 20.0.4
Eric Engestrom [Fri, 3 Apr 2020 09:24:56 +0000 (11:24 +0200)]
docs: add release notes for 20.0.4

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4428>

18 months agoutil/xmlconfig: fix sha1 comparison code
Pierre-Eric Pelloux-Prayer [Fri, 3 Apr 2020 07:25:05 +0000 (09:25 +0200)]
util/xmlconfig: fix sha1 comparison code

Fixes: 8f48e7b1e99 ("util/xmlconfig: add new sha1 application attribute")
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/2730
Reviewed-by: Dave Airlie <airlied@redhat.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4426>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4426>

18 months agoradv/llvm: enable 16-bit storage features on GFX6-GFX7
Samuel Pitoiset [Wed, 29 Jan 2020 13:40:17 +0000 (14:40 +0100)]
radv/llvm: enable 16-bit storage features on GFX6-GFX7

Should allow to play Doom Eternal on GFX6-GFX7 because the
driver now supports storageBuffer16BitAccess.

It's now supported and all CTS tests pass.

Closes: https://gitlab.freedesktop.org/mesa/mesa/issues/857
Cc: 20.0 <mesa-stable@lists.freedesktop.org>
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4339>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4339>

18 months agoac/nir: split 16-bit SSBO stores on GFX6
Samuel Pitoiset [Thu, 26 Mar 2020 13:14:45 +0000 (14:14 +0100)]
ac/nir: split 16-bit SSBO stores on GFX6

Due to possible alignment issues, make sure to split stores of
16-bit vectors.

Doom Eternal requires storageBuffer16BitAccess.

Cc: 20.0 <mesa-stable@lists.freedesktop.org>
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4339>

18 months agoac/nir: split 16-bit load/store to global memory on GFX6
Samuel Pitoiset [Thu, 26 Mar 2020 13:14:27 +0000 (14:14 +0100)]
ac/nir: split 16-bit load/store to global memory on GFX6

Due to possible alignment issues, make sure to split loads/stores
of 16-bit vectors.

Doom Eternal requires storageBuffer16BitAccess.

Cc: 20.0 <mesa-stable@lists.freedesktop.org>
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4339>

18 months agoradv/llvm: enable 8-bit storage features on GFX6-GFX7
Samuel Pitoiset [Wed, 29 Jan 2020 09:45:40 +0000 (10:45 +0100)]
radv/llvm: enable 8-bit storage features on GFX6-GFX7

It's now supported and all CTS tests pass.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4339>

18 months agoac/nir: split 8-bit SSBO stores on GFX6
Samuel Pitoiset [Wed, 29 Jan 2020 13:38:55 +0000 (14:38 +0100)]
ac/nir: split 8-bit SSBO stores on GFX6

Due to possible alignment issues, make sure to split stores of
8-bit vectors.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4339>

18 months agoac/nir: split 8-bit load/store to global memory on GFX6
Samuel Pitoiset [Wed, 29 Jan 2020 13:37:49 +0000 (14:37 +0100)]
ac/nir: split 8-bit load/store to global memory on GFX6

Due to possible alignment issues, make sure to split loads/stores
of 8-bit vectors.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4339>

18 months agoaco: always optimize v_mad to v_madak in presence of literals
Samuel Pitoiset [Wed, 1 Apr 2020 16:09:43 +0000 (18:09 +0200)]
aco: always optimize v_mad to v_madak in presence of literals

v_mad and v_madak are both 64-bit instructions, so it doesn't
increase code size to always apply a 32-bit literal instead of
using v_mad and a sgpr which contains that literal.

Found with some Youngblood shaders but help some other games.

vkpipeline-db (VEGA10):
Totals from affected shaders:
SGPRS: 46168 -> 46016 (-0.33 %)
VGPRS: 45576 -> 45564 (-0.03 %)
Code Size: 5187208 -> 5179584 (-0.15 %) bytes
Max Waves: 3297 -> 3297 (0.00 %)

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4410>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4410>

18 months agoglsl/lower_precision: Use vector.back() instead of vector.end()[-1]
Neil Roberts [Thu, 2 Apr 2020 14:25:18 +0000 (16:25 +0200)]
glsl/lower_precision: Use vector.back() instead of vector.end()[-1]

The use of vector.end()[-1] seems to generate warnings in Coverity about
not allowing a negative argument to a parameter. The intention with the
code snippet is just to access the last element of the vector. The
vector.back() call acheives the same thing, is clearer and will
hopefully fix the Coverity warning.

I’m not exactly sure why Coverity thinks the array index can’t be
negative. cplusplus.com says that vector::end() returns a random access
iterator and that the type of the array index operator argument to that
should be the difference type for the container. It then also says that
difference_type for a vector is "a signed integral type".

Reviewed-by: Eric Anholt <eric@anholt.net>
18 months agoclover: fix build with single library clang build
Karol Herbst [Thu, 2 Apr 2020 11:00:14 +0000 (13:00 +0200)]
clover: fix build with single library clang build

Closes: #2560
Signed-off-by: Karol Herbst <kherbst@redhat.com>
Reviewed-by: Michel Dänzer <mdaenzer@redhat.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4417>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4417>

18 months agoradv: Filter extensions not whitelisted for Android
Drew Davenport [Tue, 10 Mar 2020 20:14:33 +0000 (14:14 -0600)]
radv: Filter extensions not whitelisted for Android

Android enforces through CTS a whitelist of Vulkan extensions that are
allowed in each Android version. When building radv for Android, disable
extensions that are unknown to the version of Android for which
radv is being built.

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4398>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4398>

18 months agost/vdpau: make query test for 2D support
Ilia Mirkin [Sat, 7 Mar 2020 23:49:01 +0000 (18:49 -0500)]
st/vdpau: make query test for 2D support

The 3D check has been there since the dawn of time, but I see no reason
for it, most likely a typo. When the surfaces are actually created, they
use the 2D resource type (as expected).

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4108>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4108>

18 months agost/vdpau: avoid asserting on new VDP_YCBCR_* formats
Ilia Mirkin [Sat, 7 Mar 2020 21:18:26 +0000 (16:18 -0500)]
st/vdpau: avoid asserting on new VDP_YCBCR_* formats

Depending on user's vdpau headers, not all of those defines may exist.
Eventually we may want a private copy of these, but this is simple
enough for now.

Fixes asserts when running vdpauinfo which supports these recently added
formats.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4108>

18 months agonir/from_ssa: Only chain movs when a src is also a dest
Jason Ekstrand [Wed, 1 Apr 2020 20:05:18 +0000 (15:05 -0500)]
nir/from_ssa: Only chain movs when a src is also a dest

The algorithm we use for resolving parallel copy instructions plays this
little shell game with the values.  The reason for this is that it lets
us handle cases where, for instance we have a -> b and b -> a and we
need to use a temporary to do a swap.  One result of this algorithm is
that it tends to emit a lot of mov chains which are typcially really bad
for GPUs where a mov is far from free.  For instance, it's likely to
turn this:

    r16 = ssa_0; r17 = ssa_0; r18 = ssa_0; r15 = ssa_0

into this:

    r15 = mov ssa_0
    r18 = mov r15
    r17 = mov r18
    r16 = mov r17

which, if it's the only thing in a block (this is common for phis) is
impossible for a scheduler to fix because of the dependencies and you
end up with significant stalling.  If, on the other hand, we only do the
chaining in the actual case where we need to free up a so that it can be
used as a destination, we can emit this:

    r15 = mov ssa_0
    r18 = mov ssa_0
    r17 = mov ssa_0
    r16 = mov ssa_0

which is far nicer to the scheduler.  On Intel, our copy propagation
pass will undo the chain for us so this has no shader-db impact.
However, for less intelligent back-ends, it's probably a lot better.

Reviewed-by: Rob Clark <robdclark@chromium.org>
Reviewed-by: Connor Abbott <cwabbott0@gmail.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4412>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4412>

18 months agofreedreno: Rename RB_DONE_TS
Connor Abbott [Thu, 5 Mar 2020 16:35:55 +0000 (17:35 +0100)]
freedreno: Rename RB_DONE_TS

This makes the various cache_flush implementations make more sense.

Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4065>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4065>

18 months agofreedreno: Cleanup event names
Connor Abbott [Thu, 5 Mar 2020 16:10:47 +0000 (17:10 +0100)]
freedreno: Cleanup event names

It turns out that every *_TS event, i.e. every event which requires a
seqno pointer, also allows generating an interrupt in the kernel, at
least since a3xx. And furthermore these interrupts are named by the kgsl
kernel driver and already in envytools. Therefore it's possible to map
out what the *_TS events are with 100% certainty, given access to the
hardware, by sending a CP_EVENT_WRITE with bit 31 set, unmasking all
interrupts in the kernel, and logging which ones get hit. I've done this
for a6xx, and I've also looked at the a5xx firmware, and the list of TS
interrupts is the same as a6xx, so I have a pretty good idea of what the
a5xx events are. I also fixed a few related things along the way:

- VIZQUERY_END overlaps with WT_DONE_TS, but VIZQUERY_START was also a
mess, with neither VIZQUERY_START nor HLSQ_FLUSH using variants. I added
what seems like reasonable variants, based on the existing comment
and the fact that HLSQ_FLUSH is only used in Mesa with a3xx and a4xx.
- CACHE_FLUSH_AND_INVALIDATE seems to come straight from R600, and I
have no idea if it's actually valid with a2xx, but given that RB_DONE_TS
exists in the interrupt mask since a3xx, I guessed that RB_DONE_TS
hasn't changed position since then and put it down as a3xx+ and limited
CACHE_FLUSH_AND_INVALIDATE to a2xx. Someone with the relevant hardware
should be able to confirm.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4065>

18 months agogallivm: fix stream id fetch
Roland Scheidegger [Thu, 2 Apr 2020 05:09:50 +0000 (07:09 +0200)]
gallivm: fix stream id fetch

Fetching the stream id directly can crash since bld->immediates may not
exist (if there's too many immediates or we use the array due to indirect
accesses). So just call emit_fetch_immediate instead.

v2: fix the swizzle

Reviewed-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4416>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4416>

18 months agogallivm: switch the mask6/mask7 cases for signed rgtc formats
Roland Scheidegger [Thu, 2 Apr 2020 02:19:51 +0000 (04:19 +0200)]
gallivm: switch the mask6/mask7 cases for signed rgtc formats

This fixes some regressions where -1.0/1.0 results got flipped, but it's still
broken in some cases.

Reviewed-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4416>

18 months agogallivm: fix rgtc2 format
Roland Scheidegger [Thu, 2 Apr 2020 00:51:03 +0000 (02:51 +0200)]
gallivm: fix rgtc2 format

In some cases, there can be garbage in the upper bits after the channel
decode - for dxt5 this didn't matter (as the upper bits are shifted out
anyway) but for rgtc2 formats it does.

Reviewed-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4416>

18 months agoanv/image: Use align_u64 for image offsets
Jason Ekstrand [Wed, 1 Apr 2020 22:24:10 +0000 (17:24 -0500)]
anv/image: Use align_u64 for image offsets

The ALIGN functions in util/u_math.h work on uintptr_t whose size
changes depending on your platform.  Use ones which take an explicit
64-bit type instead to avoid 32-bit platform issues.

Cc: mesa-stable@lists.freedesktop.org
Reported-by: Mark Janes <mark.a.janes@intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4414>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4414>

18 months agogallium: enable EGL_EXT_image_dma_buf_import_modifiers unconditionally
Adam Jackson [Tue, 24 Mar 2020 09:55:26 +0000 (10:55 +0100)]
gallium: enable EGL_EXT_image_dma_buf_import_modifiers unconditionally

This is a re-do of [1].

Enable EGL_EXT_image_dma_buf_import_modifiers with
EXT_image_dma_buf_import. This allows users to use queryDmaBufFormats to
query the list of supported formats even if modifiers are not supported.

With this change, queryDmaBufModifiers always returns zero modifiers. A
compositor survey reveals that this should be fine: wlroots [2],
Weston [3], Mutter [4] [5], kwin [6] and xorg-xserver [7] seem to all
support this case gracefully.

Tested with Sway and wlroots by running weston-info and checking the
list of formats advertised by zwp_linux_dmabuf_v1. Also ran weston-simple-egl
and checked zwp_linux_dmabuf_v1 was used instead of wl_drm.

[1]: https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/1812
[2]: https://github.com/swaywm/wlroots/blob/8707a9b7ecbba0321804604d9ea954a46ecced21/render/egl.c#L629
[3]: https://gitlab.freedesktop.org/wayland/weston/-/blob/786490cb53439624fd3c20b9e19d3ea5ec316c00/libweston/renderer-gl/gl-renderer.c#L2337
[4]: https://gitlab.gnome.org/GNOME/mutter/-/blob/f0df07cba3ca308b47c9aefcc8112e8880fd9950/src/wayland/meta-wayland-dma-buf.c#L486
[5]: https://gitlab.gnome.org/GNOME/mutter/-/blob/0a6034ef3a745c25ab63c2ca8d4ae08bc5e09d88/src/backends/native/meta-renderer-native.c#L399
[6]: https://cgit.kde.org/kwin.git/tree/platformsupport/scenes/opengl/egl_dmabuf.cpp?id=9b7ab4d16a8ee0cb35108362ee5aa046f4ae20b7#n473
[7]: https://gitlab.freedesktop.org/xorg/xserver/-/blob/26004df63c25061586a967f3586795a75280acc2/glamor/glamor_egl.c#L682

Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4298>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4298>

18 months agodriconf: whilelist more games for glthread
Marek Olšák [Wed, 1 Apr 2020 10:22:03 +0000 (06:22 -0400)]
driconf: whilelist more games for glthread

Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4402>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4402>

18 months agotracie: Switch to using shutil.move for cross filesystem moves
Rohan Garg [Mon, 30 Mar 2020 17:12:00 +0000 (19:12 +0200)]
tracie: Switch to using shutil.move for cross filesystem moves

When running tracie in a docker container, renaming files from
inside the container to a bind-mounted folder on the host causes
a invalid cross-device link due to os.rename limitations.

Switching to shutil allows us to overcome this.

Signed-off-by: Rohan Garg <rohan.garg@collabora.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Alexandros Frantzis <alexandros.frantzis@collabora.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4377>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4377>

18 months agowgl: do not create screen from DllMain
Erik Faye-Lund [Sun, 26 May 2019 08:42:58 +0000 (10:42 +0200)]
wgl: do not create screen from DllMain

There's a lot of operations that aren't allowed from DllMain, so we
shouldn't create a driver-screen from there. So let's instead delay this
until it's needed from a normal function call.

See https://docs.microsoft.com/en-us/windows/win32/dlls/dllmain for
details about what is allowed and isn't from DllMain.

Reviewed-by: Neha Bhende <bhenden@vmware.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4307>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4307>

18 months agowgl: move screen-init to a helper
Erik Faye-Lund [Sun, 26 May 2019 08:42:51 +0000 (10:42 +0200)]
wgl: move screen-init to a helper

This will be useful in the next commit.

Reviewed-by: Neha Bhende <bhenden@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4307>

18 months agowgl: drop unused member
Erik Faye-Lund [Sun, 26 May 2019 08:42:39 +0000 (10:42 +0200)]
wgl: drop unused member

While we're at it, drop trying to re-calculate the max-size from the
max-level. It's not accurate on any drivers where the max-size isn't a
power of two anyway.

Reviewed-by: Neha Bhende <bhenden@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4307>

18 months agowgl: drop pointless debug_printf
Erik Faye-Lund [Sun, 26 May 2019 08:42:32 +0000 (10:42 +0200)]
wgl: drop pointless debug_printf

Reviewed-by: Neha Bhende <bhenden@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4307>

18 months agoradeonsi: dump shader stats when hitting the live cache
Pierre-Eric Pelloux-Prayer [Fri, 27 Mar 2020 12:45:08 +0000 (13:45 +0100)]
radeonsi: dump shader stats when hitting the live cache

With the introduction of the live shader cache, when a shader is
fetched from the cache no stats are printed for shaderdb.
So in a sequence like this: vs1, fs1, vs1, fs2, shaderdb may see
3 or 4 lines, depending on the threads being used.
If one run produces 3 lines while the other produces 4 lines, it
would compare vs1 stats with fs2 stats.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4355>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4355>

18 months agogallium/util: let shader live cache users know if a hit occured
Pierre-Eric Pelloux-Prayer [Wed, 1 Apr 2020 08:47:14 +0000 (10:47 +0200)]
gallium/util: let shader live cache users know if a hit occured

This will be used in next commit.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4355>

18 months agoglsl_to_nir: remove dead code
Timothy Arceri [Thu, 2 Apr 2020 00:33:48 +0000 (11:33 +1100)]
glsl_to_nir: remove dead code

This code was made unused by the changes described in be2990d8fbcd.

NIR based Gallium drivers switched to the NIR based lowering in
efa4fc0ebd96.

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4415>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4415>

18 months agoanv/pipeline: allow more than 16 FS inputs
Juan A. Suarez Romero [Tue, 31 Mar 2020 10:59:20 +0000 (10:59 +0000)]
anv/pipeline: allow more than 16 FS inputs

A fragment shader can have more than 16 inputs, so SBE emission should
deal with all of them.

This fixes dEQP-VK.pipeline.max_varyings.*

Cc: mesa-stable@lists.freedesktop.org
Signed-off-by: Juan A. Suarez Romero <jasuarez@igalia.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Ivan Briano <ivan.briano@intel.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/2010>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/2010>

18 months agointel/compiler: store the FS inputs in WM prog data
Juan A. Suarez Romero [Tue, 31 Mar 2020 10:45:26 +0000 (10:45 +0000)]
intel/compiler: store the FS inputs in WM prog data

Store the fragment shader inputs in the program data so we can use them
later when required without needing the NIR shader.

Cc: mesa-stable@lists.freedesktop.org
Signed-off-by: Juan A. Suarez Romero <jasuarez@igalia.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Ivan Briano <ivan.briano@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/2010>

18 months agoanv: use urb_setup_attribs in SBE
Juan A. Suarez Romero [Wed, 11 Mar 2020 10:35:13 +0000 (10:35 +0000)]
anv: use urb_setup_attribs in SBE

Avoid looping over all VARYING_SLOT_MAX urb_setup arrray entries.

Cc: mesa-stable@lists.freedesktop.org
Signed-off-by: Juan A. Suarez Romero <jasuarez@igalia.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Ivan Briano <ivan.briano@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/2010>

18 months agodocs: update calendar, add news item, and link releases notes for 20.0.3
Eric Engestrom [Wed, 1 Apr 2020 22:04:19 +0000 (00:04 +0200)]
docs: update calendar, add news item, and link releases notes for 20.0.3

Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4413>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4413>

18 months agodocs/relnotes: add sha256sum for 20.0.3
Eric Engestrom [Wed, 1 Apr 2020 21:40:37 +0000 (23:40 +0200)]
docs/relnotes: add sha256sum for 20.0.3

(cherry picked from commit a68048153260fe33f2ec5df48f772f4d1ceaed03)

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4413>

18 months agodocs: add release notes for 20.0.3
Eric Engestrom [Wed, 1 Apr 2020 21:24:57 +0000 (23:24 +0200)]
docs: add release notes for 20.0.3

(cherry picked from commit b04ae1f964c977035d9c8fd4144424387e0d868e)

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4413>

18 months agogallium/llvmpipe: add an optimised 32-bit memset
Dave Airlie [Tue, 31 Mar 2020 22:44:08 +0000 (08:44 +1000)]
gallium/llvmpipe: add an optimised 32-bit memset

This might have other users beyond filling/clearing buffers,

increase a fullscreen 4k gears from 68->74 fps on my Ryzen
since gears is really just a clear benchmark, and this helps
clearing.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4394>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4394>

18 months agonir: place aligned members after bitfields in shader_info.tess
Mark Janes [Tue, 31 Mar 2020 23:41:28 +0000 (16:41 -0700)]
nir: place aligned members after bitfields in shader_info.tess

The placement of new shader_info.tess members unnecessarily wastes
space by interspersing 64bit members between bitfields.

Fixes: f1dd81ae104 ("nir: Collect if shader uses cross-invocation or indirect I/O.")
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4408>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4408>

18 months agonir: check shader type before writing to shaderinfo.tess union
Mark Janes [Tue, 31 Mar 2020 23:40:57 +0000 (16:40 -0700)]
nir: check shader type before writing to shaderinfo.tess union

If the shader is not a tesselation shader, then writing to the tess
member of the shaderinfo union will overwrite other members and crash.

Closes: #2722
Fixes: f1dd81ae104 ("nir: Collect if shader uses cross-invocation or indirect I/O.")
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4408>

18 months agoanv: Do not sample from 3d depth image with HiZ
Danylo Piliaiev [Wed, 1 Apr 2020 15:41:03 +0000 (18:41 +0300)]
anv: Do not sample from 3d depth image with HiZ

For Gen8-11, there are some restrictions around sampling from HiZ.
The Skylake PRM docs for RENDER_SURFACE_STATE::AuxiliarySurfaceMode
say:

    "If this field is set to AUX_HIZ, Number of Multisamples must
    be MULTISAMPLECOUNT_1, and Surface Type cannot be SURFTYPE_3D."

Fixes: dEQP-VK.geometry.layered.3d.*.readback
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/2720
Signed-off-by: Danylo Piliaiev <danylo.piliaiev@globallogic.com>
Reviewed-by: Arcady Goldmints-Orlov <agoldmints@igalia.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4409>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4409>

18 months agogallium/swr: Re-enable scratch space for client-memory buffers
Krzysztof Raszkowski [Wed, 1 Apr 2020 15:02:06 +0000 (17:02 +0200)]
gallium/swr: Re-enable scratch space for client-memory buffers

Commit 7d33203b446cdfa11c2aaea18caf05b120a16283 fixed race condition
in freeing scratch memory mechanism but that approach creates
performance regression in some cases. This change revert previous
changes and fix freeing scratch memory mechanism.

Reviewed-by: Bruce Cherniak <bruce.cherniak@intel.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4406>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4406>

18 months agogallium/swr: Fix array stride problem.
Krzysztof Raszkowski [Wed, 1 Apr 2020 14:57:20 +0000 (16:57 +0200)]
gallium/swr: Fix array stride problem.

Reviewed-by: Bruce Cherniak <bruce.cherniak@intel.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4405>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4405>

18 months agoci: Consistently use -j4 across x86 build jobs and -j8 on ARM.
Eric Anholt [Tue, 11 Feb 2020 23:44:56 +0000 (15:44 -0800)]
ci: Consistently use -j4 across x86 build jobs and -j8 on ARM.

Our shared runners are set up for concurrent jobs ~= CPUs / 4 (x86) or 8
(ARM).  If you use more build processes than that, then jobs may be
fighting each other for shared system resources, possibly to the point of
failure (we've seen one of the runners OOM on some jobs before, though I'm
not sure if this was the cause).

To try to systematically prevent the problem, we make a ninja wrapper in
the containers that passes the -j flags, and set MAKEFLAGS in the
container builds.  This doesn't cover make in non-container builds, but I
believe we don't have any of those.

Reviewed-by: Michel Dänzer <mdaenzer@redhat.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3782>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3782>

18 months agoaco: only break SMEM clauses if XNACK is enabled (mostly APUs)
Samuel Pitoiset [Fri, 27 Mar 2020 14:16:39 +0000 (15:16 +0100)]
aco: only break SMEM clauses if XNACK is enabled (mostly APUs)

According to LLVM, it seems only required for APUs like RAVEN, but
we still ensure that SMEM stores are in their own clause.

pipeline-db (VEGA10):
Totals from affected shaders:
SGPRS: 1775364 -> 1775364 (0.00 %)
VGPRS: 1287176 -> 1287176 (0.00 %)
Spilled SGPRs: 725 -> 725 (0.00 %)
Spilled VGPRs: 0 -> 0 (0.00 %)
Code Size: 65386620 -> 65107460 (-0.43 %) bytes
Max Waves: 287099 -> 287099 (0.00 %)

pipeline-db (POLARIS10):
Totals from affected shaders:
SGPRS: 1797743 -> 1797743 (0.00 %)
VGPRS: 1271108 -> 1271108 (0.00 %)
Spilled SGPRs: 730 -> 730 (0.00 %)
Spilled VGPRs: 0 -> 0 (0.00 %)
Code Size: 64046244 -> 63782324 (-0.41 %) bytes
Max Waves: 254875 -> 254875 (0.00 %)

This only affects GFX6-GFX9 chips because the compiler uses a
different pass for GFX10.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4349>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4349>

18 months agoRevert "spirv: Implement OpCopyObject and OpCopyLogical as blind copies"
Jason Ekstrand [Wed, 1 Apr 2020 17:40:34 +0000 (12:40 -0500)]
Revert "spirv: Implement OpCopyObject and OpCopyLogical as blind copies"

This reverts commit 7a53e67816ed9baf7d825ed60ee59f0c05f9df48.

18 months agoloader: fallback to kernel name, if PCI fails
Emil Velikov [Thu, 5 Mar 2020 14:41:25 +0000 (14:41 +0000)]
loader: fallback to kernel name, if PCI fails

Currently, if the PCI machinery fails, we return a NULL driver name.
In the past this has resulted in various workarounds.

To avoid those, fallback to loader_get_kernel_driver_name(). It's not
perfect, yet perfectly reasonable.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4084>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4084>

18 months agoloader: move "using driver..." message to loader_get_kernel_driver_name
Emil Velikov [Thu, 5 Mar 2020 14:30:51 +0000 (14:30 +0000)]
loader: move "using driver..." message to  loader_get_kernel_driver_name

Move the message to the function which fetches the name.

While here use the same DEBUG/WARNING approach like in the PCI case. The
current method spam a tad much, plus isn't consistent.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4084>

18 months agoloader: simplify codeflow in drm_get_pci_id_for_fd
Emil Velikov [Thu, 5 Mar 2020 13:50:46 +0000 (13:50 +0000)]
loader: simplify codeflow in drm_get_pci_id_for_fd

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4084>

18 months agoloader: simplify loader_get_user_preferred_fd()
Emil Velikov [Tue, 19 Feb 2019 15:30:40 +0000 (15:30 +0000)]
loader: simplify loader_get_user_preferred_fd()

Reoder the function a bit to make the code-flow more obvious and short.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4084>

18 months agoloader: use a maximum of 64 drmDevices
Emil Velikov [Tue, 19 Feb 2019 15:30:38 +0000 (15:30 +0000)]
loader: use a maximum of 64 drmDevices

Currently that's the hard-coded maximum in the kernel, even though the
libdrm API allows for more. Latter is done with extendability in mind.

Allocate 64 pointers^Wdevices on stack for now. Making for shorter and
ever-so-slightly faster code.

v2: Use single MAX_DRM_DEVICES #define (Eric)

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Adam Jackson <ajax@redhat.com> (v1)
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4084>

18 months agoRevert "egl/dri2: Don't dlclose() the driver on dri2_load_driver_common failure"
Emil Velikov [Thu, 5 Mar 2020 13:05:36 +0000 (13:05 +0000)]
Revert "egl/dri2: Don't dlclose() the driver on dri2_load_driver_common failure"

This reverts commit 1b87f4058de84d7a0bb4ead0c4f4b024d4cce8fb.

dlclose() of the handle is perfectly reasonable, a follow-up NULL
assignment is missing.

As-is this causes a leak for nearly every platform, since they call
dri2_load_driver* initially, followed by a second swrast fallback call.

Some platforms even loop through the existing drivers probing.

Revert the commit and add the NULL check.

Fixes: 1b87f4058de ("egl/dri2: Don't dlclose() the driver on dri2_load_driver_common failure")
Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4084>

18 months agoegl/drm: reinstate (kms_)swrast support
Emil Velikov [Wed, 4 Mar 2020 18:33:09 +0000 (18:33 +0000)]
egl/drm: reinstate (kms_)swrast support

With earlier commit we've added a generic LIBGL_ALWAYS_SOFTWARE handling
yet did not consider that the existing codebase unconditionally errors
out when set. That was fixed with a latter commit, while the fix itself
added erroneous restriction for egl/drm.

As mentioned in the report - the feature was working for ages. It was a
Gnome developer who added kms_swrast support for gbm in the first place.

Admittedly kms_swrast is somewhat in the middle between traditional
swrast and HW drivers, regardless - reinstate support.

Fixes: 47273d7312c ("egl: set UseFallback if LIBGL_ALWAYS_SOFTWARE is set")
Closes: https://gitlab.freedesktop.org/mesa/mesa/issues/165
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Acked-by: Eric Engestrom <eric@engestrom.ch>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4084>

18 months agoglx: set the loader_logger early and for everyone
Emil Velikov [Wed, 4 Mar 2020 17:52:04 +0000 (17:52 +0000)]
glx: set the loader_logger early and for everyone

Currently we set the logger only for DRI3. Even though it's used nearly
everywhere. For platforms where we don't the function is effectively a
no-op.

With this in place, LIBGL_DEBUG=verbose works across the board.

Fixes: d971a4230d5 ("loader: Factor out the common driver opening logic from each loader.")
Cc: Eric Anholt <eric@anholt.net>
Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4084>

18 months agomeson: glx: drop with_glx == dri check
Emil Velikov [Wed, 4 Mar 2020 17:46:54 +0000 (17:46 +0000)]
meson: glx: drop with_glx == dri check

We can get into src/glx only with with_glx == dri. Thus there's no point
in the secondary, nested, check - it's always true.

Cc: Dylan Baker <dylan@pnwbakers>
Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4084>

18 months agomesa/main: remove unused macro
Erik Faye-Lund [Mon, 25 Feb 2019 12:30:30 +0000 (13:30 +0100)]
mesa/main: remove unused macro

This macro is no longer used, so let's get rid of it.

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/329>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/329>

18 months agomesa/main: clean up extension-check for GL_TEXTURE_EXTERNAL
Erik Faye-Lund [Mon, 25 Feb 2019 12:20:35 +0000 (13:20 +0100)]
mesa/main: clean up extension-check for GL_TEXTURE_EXTERNAL

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/329>

18 months agomesa/main: clean up extension-check for GL_RASTERIZER_DISCARD
Erik Faye-Lund [Mon, 25 Feb 2019 12:01:58 +0000 (13:01 +0100)]
mesa/main: clean up extension-check for GL_RASTERIZER_DISCARD

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/329>

18 months agomesa/main: clean up extension-check for GL_TEXTURE_CUBE_MAP_SEAMLESS
Erik Faye-Lund [Mon, 25 Feb 2019 12:00:47 +0000 (13:00 +0100)]
mesa/main: clean up extension-check for GL_TEXTURE_CUBE_MAP_SEAMLESS

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/329>

18 months agomesa/main: clean up extension-check for GL_FRAGMENT_SHADER_ATI
Erik Faye-Lund [Mon, 25 Feb 2019 12:00:07 +0000 (13:00 +0100)]
mesa/main: clean up extension-check for GL_FRAGMENT_SHADER_ATI

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/329>

18 months agomesa/main: clean up extension-check for AMD_depth_clamp_separate
Erik Faye-Lund [Mon, 25 Feb 2019 11:58:35 +0000 (12:58 +0100)]
mesa/main: clean up extension-check for AMD_depth_clamp_separate

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/329>

18 months agomesa/main: clean up extension-check for GL_DEPTH_BOUNDS_TEST
Erik Faye-Lund [Mon, 25 Feb 2019 11:57:22 +0000 (12:57 +0100)]
mesa/main: clean up extension-check for GL_DEPTH_BOUNDS_TEST

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/329>

18 months agomesa/main: clean up extension-check for GL_STENCIL_TEST_TWO_SIDE
Erik Faye-Lund [Mon, 25 Feb 2019 11:54:13 +0000 (12:54 +0100)]
mesa/main: clean up extension-check for GL_STENCIL_TEST_TWO_SIDE

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/329>

18 months agomesa/main: clean up extension-check for GL_TEXTURE_RECTANGLE
Erik Faye-Lund [Mon, 25 Feb 2019 11:52:37 +0000 (12:52 +0100)]
mesa/main: clean up extension-check for GL_TEXTURE_RECTANGLE

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/329>

18 months agomesa/main: clean up extension-check for GL_VERTEX_PROGRAM_POINT_SIZE
Erik Faye-Lund [Mon, 25 Feb 2019 11:50:08 +0000 (12:50 +0100)]
mesa/main: clean up extension-check for GL_VERTEX_PROGRAM_POINT_SIZE

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/329>

18 months agomesa/main: clean up extension-check for GL_VERTEX_PROGRAM_TWO_SIDE
Erik Faye-Lund [Mon, 25 Feb 2019 11:44:55 +0000 (12:44 +0100)]
mesa/main: clean up extension-check for GL_VERTEX_PROGRAM_TWO_SIDE

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/329>

18 months agomesa/main: clean up extension-check for GL_VERTEX_PROGRAM
Erik Faye-Lund [Mon, 25 Feb 2019 11:25:04 +0000 (12:25 +0100)]
mesa/main: clean up extension-check for GL_VERTEX_PROGRAM

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/329>

18 months agomesa/main: clean-up extension-checks for point-sprites
Erik Faye-Lund [Mon, 25 Feb 2019 10:52:59 +0000 (11:52 +0100)]
mesa/main: clean-up extension-checks for point-sprites

This is the only user of the CHECK_EXTENSION2 macro, so let's remove
that while we're at it.

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/329>

18 months agomesa/main: correct extension-checks for GL_BLACKHOLE_RENDER_INTEL
Erik Faye-Lund [Wed, 19 Feb 2020 11:12:27 +0000 (12:12 +0100)]
mesa/main: correct extension-checks for GL_BLACKHOLE_RENDER_INTEL

KHR_blend_equation_advanced_coherent isn't exposed on OpenGL ES 1.x
nor OpenGL versions prior to 30, so we shouldn't allow to query its
enum-states there either.

Fixes: 74ec39f66d5 ("mesa: add INTEL_blackhole_render")
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/329>

18 months agoloader: Warn when we fail to open a device node due to permissions.
Eric Anholt [Wed, 5 Feb 2020 01:31:28 +0000 (17:31 -0800)]
loader: Warn when we fail to open a device node due to permissions.

This is definitely not the first time I've debugged why I'm getting swrast
on a device only to find out I'm not a member of the render node's group.

This does mean that you'll get a warning print even without EGL_LOG_LEVEL
set.  This may be an issue if we expect people outside of the DRI node's
group to actually be using swrast instead of getting their permissions
fixed.  Right now surfaceless throws a "libEGL warning: No hardware driver
found, falling back to software rendering" in that case anyway, so this is
just more informative.

Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3703>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3703>

18 months agosvga: Treat forced coherent maps as maps of persistent memory
Thomas Hellstrom [Tue, 31 Mar 2020 07:10:17 +0000 (09:10 +0200)]
svga: Treat forced coherent maps as maps of persistent memory

A previous commit made sure we sent a BindGBSurface command at map time
rather than at unmap time for persistent memory. To be consistent, do the
same for forced coherent maps. This makes it possible to avoid the
explicit UpdateGBSurface at unmap time for discard maps and to instead rely
on the kernel's dirty-tracking mechanism at the cost of an additional flush.

Tested with SVGA_FORCE_COHERENT=1, piglit run quick. No regressions.

Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Charmaine Lee <charmainel@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4399>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4399>