platform/upstream/mesa.git
2 years agozink: break out samplerview layout reset code
Mike Blumenkrantz [Tue, 12 Jul 2022 01:53:28 +0000 (21:53 -0400)]
zink: break out samplerview layout reset code

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17524>

2 years agozink: use sampler_bind_count to simplify some code
Mike Blumenkrantz [Tue, 12 Jul 2022 01:49:55 +0000 (21:49 -0400)]
zink: use sampler_bind_count to simplify some code

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17524>

2 years agozink: add a compiler pass to match up tex op dest types
Mike Blumenkrantz [Tue, 5 Jul 2022 17:08:25 +0000 (13:08 -0400)]
zink: add a compiler pass to match up tex op dest types

this handles bitsize conversions and depth component splatting to
enable simplifying some of the related ntv code

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17427>

2 years agozink: always use 32bit sample ops
Mike Blumenkrantz [Tue, 5 Jul 2022 17:07:01 +0000 (13:07 -0400)]
zink: always use 32bit sample ops

while some (tg4) sample ops can use different bit sizes in spirv, most
cannot, and all the shader variables are always emitted as 32bit, so
ensure the 32bit type is always what's being used for sampling

cc: mesa-stable

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17427>

2 years agozink: allow multiple tex components for depth tg4
Mike Blumenkrantz [Tue, 5 Jul 2022 17:05:43 +0000 (13:05 -0400)]
zink: allow multiple tex components for depth tg4

this returns a vec4, so don't break the return type by clamping 1 component

cc: mesa-stable

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17427>

2 years agoCI: Disable Collabora lab
Daniel Stone [Fri, 15 Jul 2022 08:41:38 +0000 (09:41 +0100)]
CI: Disable Collabora lab

It's everyone's favourite day, infrastructure maintenance Friday.

This includes manual disables for a618-vk and zink-anv-tgl, because
apparently the disable-on-variable rules don't carry through to those
jobs for ... some reason.

Signed-off-by: Daniel Stone <daniels@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17553>

2 years agoetnaviv: fix use after free in async shader compile
Lucas Stach [Thu, 14 Jul 2022 08:27:05 +0000 (10:27 +0200)]
etnaviv: fix use after free in async shader compile

When the shader state is destroyed before the async shader compile is
done, we get a use after free in the async thread, as the shader state
it is operating on is gone. Fix this by dropping any pending job from
the async queue or wait for it to finish before destroying the state
by calling util_queue_drop_job.

Also call util_queue_fence_destroy, which would have caught this issue
by asserting that the queue_fence is in signalled state when the
shader state is destroyed.

Fixes: 1141ed585901 ("etnaviv: async shader compile")
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17534>

2 years agopvr: Add helper macros for creating pvr_dev_addr_t instances
Matt Coster [Tue, 12 Jul 2022 12:37:43 +0000 (13:37 +0100)]
pvr: Add helper macros for creating pvr_dev_addr_t instances

The two macros introduced here form a (hopefully) unobjectionable
subset of those added in !17203.

Signed-off-by: Matt Coster <matt.coster@imgtec.com>
Reviewed-by: Karmjit Mahil <Karmjit.Mahil@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17488>

2 years agopvr: Split pvr_dev_addr_t into a separate header
Matt Coster [Wed, 29 Jun 2022 15:23:02 +0000 (16:23 +0100)]
pvr: Split pvr_dev_addr_t into a separate header

This type is useful beyond the scope of winsys.

It can now be used without being lumbered with a dependency on
pvr_winsys.h. Since pvr_winsys.h is used by pvr_private.h, this can be
a common cause for circular dependencies during development.

Signed-off-by: Matt Coster <matt.coster@imgtec.com>
Reviewed-by: Karmjit Mahil <Karmjit.Mahil@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17488>

2 years agopvr: Update pvrsrv build version for fixed size fw.
Karmjit Mahil [Fri, 10 Jun 2022 09:10:13 +0000 (10:10 +0100)]
pvr: Update pvrsrv build version for fixed size fw.

It's still 1.17 but the version is changed due to the fixed size
fw struct update.

Signed-off-by: Karmjit Mahil <Karmjit.Mahil@imgtec.com>
Reviewed-by: Rajnesh Kanwal <rajnesh.kanwal@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17491>

2 years agoci/lava: Add delay before calling lava-test-case
Guilherme Gallo [Thu, 14 Jul 2022 03:29:59 +0000 (00:29 -0300)]
ci/lava: Add delay before calling lava-test-case

Sleep a bit before executing `lava-test-case` to give time for bash to dump shell xtrace messages into
the console, which may cause interleaving with `LAVA_SIGNAL_STARTTC` in some
devices like a618.

The same approach worked for `LAVA_SIGNAL_STARTRUN` since
https://gitlab.freedesktop.org/mesa/mesa/-/commit/3b8d10d270413a1f49ccce5563c1e4e96e10b6ef#deafdd86b8d9d0108bc692f479c3b31c4c7d5635_161_164
was merged.

Closes: #6867

Signed-off-by: Guilherme Gallo <guilherme.gallo@collabora.com>
Reviewed-by: David Heidelberg <david.heidelberg@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17533>

2 years agoanv: Stop compacting surface state tables
Jason Ekstrand [Mon, 13 Jun 2022 21:13:07 +0000 (16:13 -0500)]
anv: Stop compacting surface state tables

Instead of trying to compact the surface state table to get rid of any
unused render targets, emit MAX(1, colorAttachmentCount) surface states
always.  This ensures that secondaries will always match with primaries
when we go to do the copy since there's no rule requiring the secondary
to have VK_FORMAT_UNDEFINED when the primary has a NULL image view.

Fixes: 3501a3f9ed92 ("anv: Convert to 100% dynamic rendering")
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17543>

2 years agoFix static glapi on Windows
Jesse Natalie [Wed, 25 May 2022 20:50:42 +0000 (13:50 -0700)]
Fix static glapi on Windows

On Linux, the static glapi path sees libGL.so implementing the static
glapi, and the drivers (libgallium_dri.so) updating/reading the TLS
vars.

On Windows, to allow libgallium_wgl.dll to be a full ICD, it's
responsible for implementing the actual static glapi. However, before
this change, OpenGL32.dll was also implementing the static glapi,
meaning that GL API calls from OpenGL32.dll didn't route to the driver
correctly because the TLS vars were never actually set - the driver set
its copy, and OpenGL32.dll read its own copy.

Now, always build a bridge and static version of glapi when not using
shared. The bridge version is linked into OpenGL32.dll, and the static
version is linked into the driver on Windows. GLES only builds with
shared glapi - but after this, shared glapi is not really needed on
Windows for GLES, since the driver has all of the data.

Fixes: f36921ef ("wgl: Refactor drivers to a libgallium_wgl.dll")
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/6560
Acked-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Dylan Baker <dylan@pnwbakers.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16713>

2 years agolavapipe: fix incorrect sv[] array size
Brian Paul [Wed, 15 Jun 2022 21:41:10 +0000 (15:41 -0600)]
lavapipe: fix incorrect sv[] array size

The sampler views array needs to be dimensioned by
PIPE_MAX_SHADER_SAMPLER_VIEWS, not PIPE_MAX_SAMPLERS.

This fixes out-of-bounds array writes when using more than 32
textures in a shader.

Also add some assertions to check array indexing elsewhere.
And change loop limits to be based on ARRAY_SIZE().

Signed-off-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17062>

2 years agollvmpipe: initialize a local var to fix compiler warning in release build
Brian Paul [Thu, 16 Jun 2022 03:29:41 +0000 (21:29 -0600)]
llvmpipe: initialize a local var to fix compiler warning in release build

Signed-off-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17062>

2 years agollvmpipe: don't allow texture/resource swizzles on linear path
Brian Paul [Tue, 14 Jun 2022 19:41:21 +0000 (13:41 -0600)]
llvmpipe: don't allow texture/resource swizzles on linear path

This fixes another VMware test (dx9-stretch-formats-copy-a8r8g8b8-x8r8g8b8).

Signed-off-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
cc: mesa-stable

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

2 years agolavapipe: fix logicop, independent blend enable/disable
Brian Paul [Thu, 9 Jun 2022 23:48:43 +0000 (17:48 -0600)]
lavapipe: fix logicop, independent blend enable/disable

The logicop_enable and independent_blend_enable vars need to always
be assigned, otherwise, once turned on, they could never be disabled.

This fixes a number of failures in VMware's test suite.

Signed-off-by: Brian Paul <brianp@vmware.com>
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
cc: mesa-stable

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

2 years agogallivm: increase LP_MAX_TGSI_SHADER_IMAGES from 16 to 32
Brian Paul [Wed, 8 Jun 2022 19:10:57 +0000 (13:10 -0600)]
gallivm: increase LP_MAX_TGSI_SHADER_IMAGES from 16 to 32

This allows a VMware test to pass.  The comments in lp_bld_limits.h
mention SM 3.0 requirements, but we're in the SM 5.0 era...

Signed-off-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
cc: mesa-stable

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

2 years agollvmpipe: replace LP_RAST_OP_ #defines with enum type
Brian Paul [Tue, 7 Jun 2022 17:06:02 +0000 (11:06 -0600)]
llvmpipe: replace LP_RAST_OP_ #defines with enum type

Signed-off-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17062>

2 years agollvmpipe: fix texcoord analysis in llvmpipe_nir_fn_is_linear_compat()
Brian Paul [Mon, 6 Jun 2022 21:19:59 +0000 (15:19 -0600)]
llvmpipe: fix texcoord analysis in llvmpipe_nir_fn_is_linear_compat()

For the linear rendering fast path, we need to know whether the
texcoord argument to tex instructions comes directly from an FS input
(swizzling OK, but no arithmetic, etc).  Use the input register info
to fill in the tex_info object.

This is part of a fix for some linear rendering bugs.

Signed-off-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
cc: mesa-stable

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

2 years agollvmpipe: fix invalid memory used in lp_fs_linear_run
Brian Paul [Mon, 6 Jun 2022 21:06:49 +0000 (15:06 -0600)]
llvmpipe: fix invalid memory used in lp_fs_linear_run

We were saving the address of the constants[] and nir_constants[]
arrays in the jit structure.  But those arrays went out of scope
before use.

This patch moves the constants[] array to the function scope and
consolidates the TGSI/NIR paths.

Signed-off-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
cc: mesa-stable

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

2 years agollvmpipe: add missing tex_info->texture_unit assignment
Brian Paul [Thu, 2 Jun 2022 18:39:13 +0000 (12:39 -0600)]
llvmpipe: add missing tex_info->texture_unit assignment

The texture_unit field needs to be set like the sampler_unit field.

Also, add a swizzle initialization and some comments.

Signed-off-by: Brian Paul <brianp@vmare.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
cc: mesa-stable

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

2 years agollvmpipe: replace GET_A0() macro w/ inline function
Brian Paul [Fri, 3 Jun 2022 15:02:18 +0000 (09:02 -0600)]
llvmpipe: replace GET_A0() macro w/ inline function

And GET_DADX(), GET_DADY(), GET_PLANES().  This is a bit more
readable, making the expected parameter types explicit.

Signed-off-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17062>

2 years agogallivm: s/0/LP_BLD_TEX_MODIFIER_NONE/
Brian Paul [Thu, 2 Jun 2022 18:41:35 +0000 (12:41 -0600)]
gallivm: s/0/LP_BLD_TEX_MODIFIER_NONE/

A minor readability improvement.

Signed-off-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17062>

2 years agollvmpipe: replace if/then with switch in llvmpipe_nir_fn_is_linear_compat()
Brian Paul [Thu, 2 Jun 2022 18:38:41 +0000 (12:38 -0600)]
llvmpipe: replace if/then with switch in llvmpipe_nir_fn_is_linear_compat()

To simplify the logic a bit.

Signed-off-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17062>

2 years agonir: add const qualifiers, move some decls in nir_to_tgsi_info.c
Brian Paul [Thu, 2 Jun 2022 18:33:01 +0000 (12:33 -0600)]
nir: add const qualifiers, move some decls in nir_to_tgsi_info.c

Signed-off-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17062>

2 years agollvmpipe: minor code re-org in lp_state_fs_analysis.c
Brian Paul [Thu, 26 May 2022 18:42:16 +0000 (12:42 -0600)]
llvmpipe: minor code re-org in lp_state_fs_analysis.c

And add comments.

Signed-off-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17062>

2 years agolavapipe: rework code to compute textures_used, samplers_used
Brian Paul [Wed, 25 May 2022 16:37:40 +0000 (10:37 -0600)]
lavapipe: rework code to compute textures_used, samplers_used

The code did not handle more than 32 textures.  We have a test that
exercises 128 textures (views) and crashed w/ memory corruption down
in the llvm code generator because of this.

Signed-off-by: Brian Paul <brianp@vmware.com>
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
cc: mesa-stable

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

2 years agoutil/bitset: add BITSET_SIZE()
Brian Paul [Wed, 25 May 2022 16:21:21 +0000 (10:21 -0600)]
util/bitset: add BITSET_SIZE()

To get the size (in bits) of a bitset.
And minor clean-up in __bitset_ffs().

Signed-off-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
cc: mesa-stable

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

2 years agollvmpipe: add simple assertion in generate_fragment()
Brian Paul [Tue, 24 May 2022 21:15:09 +0000 (15:15 -0600)]
llvmpipe: add simple assertion in generate_fragment()

Signed-off-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17062>

2 years agogallivm: s/unsigned/enum pipe_swizzle/
Brian Paul [Tue, 24 May 2022 21:14:05 +0000 (15:14 -0600)]
gallivm: s/unsigned/enum pipe_swizzle/

Signed-off-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17062>

2 years agollvmpipe: remove lp_rast_cmd_arg::state field
Brian Paul [Thu, 2 Jun 2022 16:00:11 +0000 (10:00 -0600)]
llvmpipe: remove lp_rast_cmd_arg::state field

Use the existing 'set_state' field.  Some code was using 'state'
and other code was using 'set_state'.  It didn't really matter
since lp_rast_cmd_arg is a union, but this removes some potential
confusion.

Signed-off-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17062>

2 years agollvmpipe: add minor comments in lp_rast.h, lp_setup-rect.c
Brian Paul [Tue, 7 Jun 2022 17:12:07 +0000 (11:12 -0600)]
llvmpipe: add minor comments in lp_rast.h, lp_setup-rect.c

Signed-off-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17062>

2 years agoanv: ensure tile flush before streamout writes
Lionel Landwerlin [Wed, 13 Jul 2022 00:35:06 +0000 (03:35 +0300)]
anv: ensure tile flush before streamout writes

Streamout is not L3 coherent so previous writes to the same address
might be pending and overwrite the SO writes later when they get
flushed from L3, even though the SO write happened later in the batch.

v2: Use the right flag (not COUNTER)

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Cc: mesa-stable
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/6680
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17503>

2 years agointel/compiler: Don't create vec4 reg-set for gen8+
Jordan Justen [Fri, 8 Jul 2022 18:27:13 +0000 (11:27 -0700)]
intel/compiler: Don't create vec4 reg-set for gen8+

After 60e1d0f0286, we know that vec4 will never be used for gen >= 8.

Ref: 60e1d0f0286 ("intel/compiler: Remove INTEL_SCALAR_... env variables")
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Francisco Jerez <currojerez@riseup.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17437>

2 years agotu: Use incoherent CCU write for buffer accesses
Connor Abbott [Wed, 22 Jun 2022 17:24:58 +0000 (19:24 +0200)]
tu: Use incoherent CCU write for buffer accesses

Unlike image writes, buffer writes may access the same memory in
different ways, which we've seen in the past can cause problems. Use an
incoherent access to force flush/invalidate between accesses to the same
buffer, unless we know the barrier applies to images only.

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

2 years agoradv: Use a global address for sbt_base
Konstantin Seurer [Thu, 30 Jun 2022 14:27:05 +0000 (16:27 +0200)]
radv: Use a global address for sbt_base

Required for indirect(2) ray tracing to work.
Fixes the following tests:

dEQP-VK.ray_tracing_pipeline.trace_rays_indirect2.indirect_*
dEQP-VK.ray_tracing_pipeline.trace_rays_cmds_maintenance_1.indirect2_*

Fixes: 16585664 ("radv: vkCmdTraceRaysIndirect2KHR")
Signed-off-by: Konstantin Seurer <konstantin.seurer@gmail.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17316>

2 years agoradv: Use a global address for ray_launch_size
Konstantin Seurer [Thu, 30 Jun 2022 14:19:25 +0000 (16:19 +0200)]
radv: Use a global address for ray_launch_size

Required for indirect(2) ray tracing to work.

Fixes: b30f96dd ("radv,aco: Use ray_launch_size_addr")
Signed-off-by: Konstantin Seurer <konstantin.seurer@gmail.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17316>

2 years agoradeonsi/vcn: use calculated max hierarchy depth for hevc enc
Boyuan Zhang [Tue, 12 Jul 2022 16:11:41 +0000 (12:11 -0400)]
radeonsi/vcn: use calculated max hierarchy depth for hevc enc

Certain player has hard coded max_transform_hierarchy_depth_inter and
max_transform_hierarchy_depth_intra values set through VA-API, which
doesn't work on radeon HW. Until properly fixing it on player side,
temporarily adding this workaround to use calculated values instead.

Signed-off-by: Boyuan Zhang <boyuan.zhang@amd.com>
Reviewed-by: Ruijing Dong <ruijing.dong@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17489>

2 years agosimple_mtx: Replace GCC sync intrinsics with u_atomic ops
Jesse Natalie [Fri, 8 Jul 2022 18:16:14 +0000 (11:16 -0700)]
simple_mtx: Replace GCC sync intrinsics with u_atomic ops

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

2 years agozink: Use p_atomic_fetch_add
Jesse Natalie [Fri, 8 Jul 2022 19:32:33 +0000 (12:32 -0700)]
zink: Use p_atomic_fetch_add

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

2 years agou_atomic: Add p_atomic_fetch_add which returns the old value
Jesse Natalie [Fri, 8 Jul 2022 19:30:45 +0000 (12:30 -0700)]
u_atomic: Add p_atomic_fetch_add which returns the old value

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

2 years agou_atomic: Fix MSVC p_atomic_add_return
Jesse Natalie [Fri, 8 Jul 2022 19:29:41 +0000 (12:29 -0700)]
u_atomic: Fix MSVC p_atomic_add_return

InterlockedExchangeAdd returns the *old* value, not the new one

Cc: mesa-stable
Reviewed-by: Yonggang Luo <luoyonggang@gmail.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17529>

2 years agou_atomic: Implement p_atomic_xchg for Windows
Jesse Natalie [Fri, 8 Jul 2022 18:15:13 +0000 (11:15 -0700)]
u_atomic: Implement p_atomic_xchg for Windows

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

2 years agoradeonsi: no need to call si_pm4_clear_state() in si_pm4_free_state()
Yogesh Mohan Marimuthu [Wed, 13 Jul 2022 03:21:56 +0000 (08:51 +0530)]
radeonsi: no need to call si_pm4_clear_state() in si_pm4_free_state()

the si_pm4_clear_state() initializes the variable in struct si_pm4_state which
anyway gets freed in si_pm4_free_state(). Hence no need to call
si_pm4_clear_state() in si_pm4_free_state().

Signed-off-by: Yogesh Mohan Marimuthu <yogesh.mohanmarimuthu@amd.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17504>

2 years agoradeonsi: remove tabs from code
Yogesh Mohan Marimuthu [Wed, 13 Jul 2022 03:19:52 +0000 (08:49 +0530)]
radeonsi: remove tabs from code

v2: fix indentation after if (Marek Olšák)

Signed-off-by: Yogesh Mohan Marimuthu <yogesh.mohanmarimuthu@amd.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17504>

2 years agofix(gallivm): Replace LLVMConstF* with LLVMBuild* methods.
Kai Wasserbäch [Wed, 13 Jul 2022 14:41:59 +0000 (16:41 +0200)]
fix(gallivm): Replace LLVMConstF* with LLVMBuild* methods.

LLVM 15 removed support for LLVMConstF in commit
4bb7b6fae3be02031878b2aa3be584c6627ad8ec.

Reference: https://github.com/llvm/llvm-project/commit/4bb7b6fae3be02031878b2aa3be584c6627ad8ec
Reference: https://github.com/llvm/llvm-project/blob/07146a9e647918ef1ea5fec494b6c7c2a4206037/llvm/docs/ReleaseNotes.rst#changes-to-the-c-api
Closes: mesa/mesa#6863
Signed-off-by: Kai Wasserbäch <kai@dev.carbon-project.org>
Reviewed-by: Mihai Preda <mhpreda@gmail.com>
Tested-by: Marcus Seyfarth <m.seyfarth@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17518>

2 years agospirv: switch to uint64 for rayquery internal type
Lionel Landwerlin [Fri, 8 Jul 2022 11:38:35 +0000 (14:38 +0300)]
spirv: switch to uint64 for rayquery internal type

Fixes dEQP-VK.ray_query.advanced.using_wrapper_function.comp.*

An empty struct is causing problems because when passing it as
argument the spirv parser will just drop the argument, considering it
does not hold any data.

v2: update radv CI

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Fixes: 4c703686dba5 ("spirv: handle ray query intrinsics")
Reviewed-by: Konstantin Seurer <konstantin.seurer@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17420>

2 years agolavapipe: support inlined shader spirv for compute
Mike Blumenkrantz [Tue, 5 Jul 2022 17:45:37 +0000 (13:45 -0400)]
lavapipe: support inlined shader spirv for compute

no testing, full send

Fixes: d4d5a7abba7 ("lavapipe: implement EXT_graphics_pipeline_library")

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17365>

2 years agodocs: Update features.txt and new_features.txt
Jesse Natalie [Wed, 13 Jul 2022 20:05:54 +0000 (13:05 -0700)]
docs: Update features.txt and new_features.txt

Reviewed-by: Bill Kristiansen <billkris@microsoft.com>
Reviewed-by: Giancarlo Devich <gdevich@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17446>

2 years agod3d12: Fix up resource import validation
Jesse Natalie [Mon, 11 Jul 2022 22:55:35 +0000 (15:55 -0700)]
d3d12: Fix up resource import validation

Format on buffers is irrelevant and bind flag validation needs to be disabled.

Reviewed-by: Bill Kristiansen <billkris@microsoft.com>
Reviewed-by: Giancarlo Devich <gdevich@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17446>

2 years agod3d12: Implement fence opening and value setting
Jesse Natalie [Sun, 10 Jul 2022 04:13:03 +0000 (21:13 -0700)]
d3d12: Implement fence opening and value setting

Reviewed-by: Bill Kristiansen <billkris@microsoft.com>
Reviewed-by: Giancarlo Devich <gdevich@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17446>

2 years agod3d12: Implement server signal/wait
Jesse Natalie [Sun, 10 Jul 2022 04:12:52 +0000 (21:12 -0700)]
d3d12: Implement server signal/wait

Reviewed-by: Bill Kristiansen <billkris@microsoft.com>
Reviewed-by: Giancarlo Devich <gdevich@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17446>

2 years agod3d12: Support importing fences / timeline semaphores
Jesse Natalie [Sun, 10 Jul 2022 03:58:13 +0000 (20:58 -0700)]
d3d12: Support importing fences / timeline semaphores

Reviewed-by: Bill Kristiansen <billkris@microsoft.com>
Reviewed-by: Giancarlo Devich <gdevich@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17446>

2 years agod3d12: Support opening resources and memobj by name
Jesse Natalie [Sun, 10 Jul 2022 02:27:03 +0000 (19:27 -0700)]
d3d12: Support opening resources and memobj by name

Reviewed-by: Bill Kristiansen <billkris@microsoft.com>
Reviewed-by: Giancarlo Devich <gdevich@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17446>

2 years agod3d12: Implement resource_from_memobj
Jesse Natalie [Sun, 10 Jul 2022 01:53:53 +0000 (18:53 -0700)]
d3d12: Implement resource_from_memobj

If the memobj wraps a resource, then we only succeed the
mapping operation if the gallium desc matches the D3D12
resource desc.

If the memobj wraps a heap, then we can place whatever
gallium is describing on the heap.

Reviewed-by: Bill Kristiansen <billkris@microsoft.com>
Reviewed-by: Giancarlo Devich <gdevich@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17446>

2 years agod3d12: Support creating memory objects
Jesse Natalie [Sun, 10 Jul 2022 01:51:54 +0000 (18:51 -0700)]
d3d12: Support creating memory objects

They can wrap either an opened heap or resource

Reviewed-by: Bill Kristiansen <billkris@microsoft.com>
Reviewed-by: Giancarlo Devich <gdevich@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17446>

2 years agod3d12: PIPE_BIND_SHARED doesn't mean linear and is always on opened resources
Jesse Natalie [Sun, 10 Jul 2022 01:50:01 +0000 (18:50 -0700)]
d3d12: PIPE_BIND_SHARED doesn't mean linear and is always on opened resources

Reviewed-by: Bill Kristiansen <billkris@microsoft.com>
Reviewed-by: Giancarlo Devich <gdevich@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17446>

2 years agod3d12: Get adapter LUID after device creation
Jesse Natalie [Sun, 10 Jul 2022 01:48:47 +0000 (18:48 -0700)]
d3d12: Get adapter LUID after device creation

Otherwise it's only set if the GL frontend gave us one

Reviewed-by: Bill Kristiansen <billkris@microsoft.com>
Reviewed-by: Giancarlo Devich <gdevich@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17446>

2 years agod3d12: Support B4G4R4A4 format
Jesse Natalie [Sun, 10 Jul 2022 01:48:13 +0000 (18:48 -0700)]
d3d12: Support B4G4R4A4 format

Reviewed-by: Bill Kristiansen <billkris@microsoft.com>
Reviewed-by: Giancarlo Devich <gdevich@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17446>

2 years agod3d12: Add pipe getters for Win32 and base external objects device matching
Jesse Natalie [Sat, 9 Jul 2022 21:47:25 +0000 (14:47 -0700)]
d3d12: Add pipe getters for Win32 and base external objects device matching

Reviewed-by: Bill Kristiansen <billkris@microsoft.com>
Reviewed-by: Giancarlo Devich <gdevich@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17446>

2 years agod3d12: Compute UUIDs required by external objects extension
Jesse Natalie [Sat, 9 Jul 2022 21:47:02 +0000 (14:47 -0700)]
d3d12: Compute UUIDs required by external objects extension

Reviewed-by: Bill Kristiansen <billkris@microsoft.com>
Reviewed-by: Giancarlo Devich <gdevich@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17446>

2 years agod3d12: Store the rest of the device IDs in the screen
Jesse Natalie [Sat, 9 Jul 2022 21:46:28 +0000 (14:46 -0700)]
d3d12: Store the rest of the device IDs in the screen

Reviewed-by: Bill Kristiansen <billkris@microsoft.com>
Reviewed-by: Giancarlo Devich <gdevich@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17446>

2 years agogallium, mesa: Support setting timeline semaphore values
Jesse Natalie [Sun, 10 Jul 2022 03:29:12 +0000 (20:29 -0700)]
gallium, mesa: Support setting timeline semaphore values

Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Acked-by: Marek Ol\9aák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17446>

2 years agomesa: Implement ImportSemaphoreWin32NameEXT
Jesse Natalie [Sun, 10 Jul 2022 04:15:50 +0000 (21:15 -0700)]
mesa: Implement ImportSemaphoreWin32NameEXT

Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Acked-by: Marek Ol\9aák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17446>

2 years agomesa: Support importing D3D12 fences as timeline semaphores
Jesse Natalie [Sun, 10 Jul 2022 02:58:51 +0000 (19:58 -0700)]
mesa: Support importing D3D12 fences as timeline semaphores

Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Acked-by: Marek Ol\9aák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17446>

2 years agogallium: Add a new fence type with a pipe cap to indicate it can be imported
Jesse Natalie [Sun, 10 Jul 2022 02:58:26 +0000 (19:58 -0700)]
gallium: Add a new fence type with a pipe cap to indicate it can be imported

Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Acked-by: Marek Ol\9aák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17446>

2 years agodriver_noop: Remove infinite recursion from create_fence_win32
Jesse Natalie [Wed, 13 Jul 2022 19:33:31 +0000 (12:33 -0700)]
driver_noop: Remove infinite recursion from create_fence_win32

Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Acked-by: Marek Ol\9aák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17446>

2 years agogallium: Add 'name' field to Win32 semaphore import
Jesse Natalie [Sun, 10 Jul 2022 02:44:28 +0000 (19:44 -0700)]
gallium: Add 'name' field to Win32 semaphore import

Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Acked-by: Marek Ol\9aák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17446>

2 years agomesa: Implement ImportMemoryWin32NameEXT
Jesse Natalie [Sun, 10 Jul 2022 02:20:05 +0000 (19:20 -0700)]
mesa: Implement ImportMemoryWin32NameEXT

Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Acked-by: Marek Ol\9aák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17446>

2 years agogallium: Add a 'name' field to winsys_handle
Jesse Natalie [Sun, 10 Jul 2022 02:19:10 +0000 (19:19 -0700)]
gallium: Add a 'name' field to winsys_handle

Win32 memory objects can be imported by name (const void *
that will be interpreted as const wchar_t *)

Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Acked-by: Marek Ol\9aák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17446>

2 years agomapi: Add more EXT_external_objects_win32 functions/enums
Jesse Natalie [Sun, 10 Jul 2022 02:14:17 +0000 (19:14 -0700)]
mapi: Add more EXT_external_objects_win32 functions/enums

Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Acked-by: Marek Ol\9aák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17446>

2 years agomesa: Support D3D11/D3D12 memory imports
Jesse Natalie [Sun, 10 Jul 2022 01:56:40 +0000 (18:56 -0700)]
mesa: Support D3D11/D3D12 memory imports

Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Acked-by: Marek Ol\9aák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17446>

2 years agoutil: Shut down Perfetto before driver unload
Sami Kyöstilä [Mon, 11 Jul 2022 06:36:31 +0000 (16:36 +1000)]
util: Shut down Perfetto before driver unload

Shut down Perfetto before unloading the driver to fix a crash caused by
an internal Perfetto thread that kept running after dlclose() took away
its code.

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/4909
Reviewed-by: Rob Clark <robdclark@gmail.com>
Reviewed-by: Chia-I Wu <olvaffe@gmail.com>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17454>

2 years agosubprojects: Roll Perfetto to v27.1
Sami Kyöstilä [Wed, 13 Jul 2022 09:24:03 +0000 (19:24 +1000)]
subprojects: Roll Perfetto to v27.1

Reviewed-by: Rob Clark <robdclark@gmail.com>
Reviewed-by: Chia-I Wu <olvaffe@gmail.com>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17454>

2 years agoci: uprev vkd3d-proton to 5b73139f182d86cd58a757e4b5f0d4cfad96d319
Samuel Pitoiset [Mon, 11 Jul 2022 14:48:48 +0000 (16:48 +0200)]
ci: uprev vkd3d-proton to 5b73139f182d86cd58a757e4b5f0d4cfad96d319

This contains some Device Generated Command tests that will be
useful for an experimental RADV implementation.

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/17463>

2 years agozink: reject swizzled format blits
Mike Blumenkrantz [Tue, 12 Jul 2022 23:40:38 +0000 (19:40 -0400)]
zink: reject swizzled format blits

e.g., R8G8B8A8 -> B8G8R8A8 is invalid, so use u_blitter

fixes (various gl configs):
KHR-GL46.blend_equation_advanced*

cc: mesa-stable

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17523>

2 years agopanfrost: Use early-ZS helpers
Alyssa Rosenzweig [Fri, 8 Jul 2022 17:46:49 +0000 (13:46 -0400)]
panfrost: Use early-ZS helpers

Remove the previous compile-time early-ZS implementation and replace it with the
decoupled early-ZS implementation. This uses more efficient settings in some
cases (depth/stencil tests always passes or do not write), and fixes the
settings used in another case (alpha-to-coverage enabled with an otherwise
early-ZS shader.)

Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Closes: #6206
Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17428>

2 years agopanfrost: Add zsa->zs_always_passes flag
Alyssa Rosenzweig [Tue, 12 Jul 2022 21:14:31 +0000 (17:14 -0400)]
panfrost: Add zsa->zs_always_passes flag

If we know ahead-of-time that depth/stencil testing will always pass, it's
better to use weak_early than force_early. However, if depth/stencil testing
could fail (discarding pixels), we'd rather use force_early. Determine which
case we're in at CSO create time.

Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17428>

2 years agopanfrost: Unit test early-ZS helpers
Alyssa Rosenzweig [Fri, 10 Jun 2022 20:31:35 +0000 (16:31 -0400)]
panfrost: Unit test early-ZS helpers

The new early-ZS helpers are pure functions, leaf nodes of the call graph, and
implemented with a different algorithm from the "oracle" table of correct values
for various combinations of states. Further, incorrect settings often still pass
CTS while causing game bugs or inefficiencies. That combination makes the
helpers an excellent candidate for unit tests. Add some.

Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17428>

2 years agopanfrost: Add decoupled early-ZS helpers
Alyssa Rosenzweig [Fri, 10 Jun 2022 19:28:35 +0000 (15:28 -0400)]
panfrost: Add decoupled early-ZS helpers

Bifrost (and Valhall) separate early-ZS configuration into two fields: when does
the depth/stencil buffer update happen? and when are pixels killed by the
depth/stencil tests? The driver separately configures these to occur early
(before the shader executes) or late (after the ATEST instruction executes at
the end of the shader). Early tests are generally more efficient, but various
combinations of API state and fragment shader properties can require late
updates and/or late kills for correctness. Determining how to configure these
fields is nontrivial.

Our current implementation (on Bifrost) configures these fields at fragment
shader compile time and bakes the settings into the RSD. This is both wrong
(using early testing when late testing is required) and suboptimal (using late
testing when early testing would suffice). We need to defer this configuration
until draw time, when we know rasterizer and Z/S state.

Reclassifying at draw time (as we currently do on Valhall) would be expensive,
especially with the extra terms added in here. To cope, decouple the shader
classification from the draw-time configuration. Since there are only a few bits
of draw state involved, this implementation just calculates all possible states.
Then the draw time classification is just indexing into a lookup table.

The actual algorithm used to classify is written with correctness and clarity in
mind. Unlike the current classification algorithm (which tries to match what the
DDK does, poorly), this algorithm embeds its proofs of correctness.

Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17428>

2 years agopanfrost: Fix shader_modifies_coverage on Valhall
Alyssa Rosenzweig [Sat, 18 Jun 2022 01:15:49 +0000 (21:15 -0400)]
panfrost: Fix shader_modifies_coverage on Valhall

Alpha-to-coverage should set this flag. This is a hardware change since Bifrost.

Fixes: 26d339ef8ac ("panfrost: Generate Valhall Malloc IDVS jobs")
Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17428>

2 years agopan/va: Stall after ATEST
Alyssa Rosenzweig [Sat, 18 Jun 2022 01:06:24 +0000 (21:06 -0400)]
pan/va: Stall after ATEST

In theory this wait is required for correct behaviour of discarded threads with
ATEST. Mesa usually waits before the instruction after ATEST, so this wait will
get optimized out by va_merge_flow, but as our scheduler gets more sophisticated
this could become an issue.

Let's stay on the safe side and insert the recommended wait.

No shader-db changes.

Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17428>

2 years agopan/bi: Require ATEST coverage mask input in R60
Alyssa Rosenzweig [Mon, 20 Jun 2022 17:23:14 +0000 (13:23 -0400)]
pan/bi: Require ATEST coverage mask input in R60

In theory, ATEST can take any combination of registers for inputs.
Experimentally, however, ATEST requires the coverage mask in R60. This avoids
regressing the following dEQP tests, which write their coverage mask with
pixel-frequency-shading but without writing to the depth/stencil buffer.

dEQP-GLES31.functional.shaders.sample_variables.sample_mask.discard_half_per_pixel.*

This issue is known to affect both Mali-G52 (v7) and Mali-G57 (v9). I am unsure
if this is a silicon bug or just an obscure implementation detail.

No shader-db changes.

Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17428>

2 years agopanfrost: Simplify sample_shading
Jason Ekstrand [Tue, 12 Jul 2022 18:57:08 +0000 (13:57 -0500)]
panfrost: Simplify sample_shading

Nos that glsl_to_nir is setting sample_shading_enable whenever FB fetch
is used, we don't need to duplicate it here.

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

2 years agointel/fs,anv: Rework handling of coarse and sample shading
Jason Ekstrand [Tue, 12 Jul 2022 18:53:16 +0000 (13:53 -0500)]
intel/fs,anv: Rework handling of coarse and sample shading

Now that this information is accurately gathered by spirv_to_nir, we no
longer need the hack.  We just need to fix up the way we handle some of
the key bits.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14020>

2 years agointel/fs: Simplify persample_dispatch
Jason Ekstrand [Tue, 12 Jul 2022 18:51:10 +0000 (13:51 -0500)]
intel/fs: Simplify persample_dispatch

Thanks to the previous commit, we no longer need this check.

Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14020>

2 years agoglsl/nir: Set sample_shading if a FS output ever shows up as an rvalue
Jason Ekstrand [Mon, 2 May 2022 23:19:30 +0000 (18:19 -0500)]
glsl/nir: Set sample_shading if a FS output ever shows up as an rvalue

If framebuffer fetch is used, we have to enable sample shading because
the fetched framebuffer value is per-sample.

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

2 years agonir/gather_info: Stop gathering uses_sample_shading
Jason Ekstrand [Wed, 1 Dec 2021 22:12:21 +0000 (16:12 -0600)]
nir/gather_info: Stop gathering uses_sample_shading

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14020>

2 years agospirv/nir: Set uses_sample_shading from spirv_to_nir
Jason Ekstrand [Wed, 1 Dec 2021 21:59:48 +0000 (15:59 -0600)]
spirv/nir: Set uses_sample_shading from spirv_to_nir

We don't really want to base this on a late nir_gather_info for two
reasons:

 1) The Vulkan spec says that if a sample-qualified input, SampleID, or
    SamplePosition are in the entry-point's interface, you get
    per-sample dispatch.  This means we really should gather this
    information before dead-code has a chance to delete anything.

 2) We want to be able to add nir_intrinsic_load_sample_pos intrinsics
    as part of lowering passes without causing per-sample interpolation.
    This means nir_gather_info needs to stop gathering it.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14020>

2 years agoglsl/nir: Set uses_sample_shading from glsl_to_nir
Jason Ekstrand [Wed, 1 Dec 2021 21:49:38 +0000 (15:49 -0600)]
glsl/nir: Set uses_sample_shading from glsl_to_nir

We don't really want to base this on a late nir_gather_info for two
reasons:

 1) The GL spec says that any static use of a sample-qualified input,
    gl_SampleID, or gl_SamplePosition causes per-sample dispatch.  This
    means we really should gather this information before dead-code has
    a chance to delete anything.

 2) We want to be able to add nir_intrinsic_load_sample_pos intrinsics
    as part of lowering passes without causing per-sample interpolation.
    This means nir_gather_info needs to stop gathering it.

For 1, this doesn't actually get us quite there as GLSL IR may have
deleted something already.  However, it does get us closer.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14020>

2 years agointel/fs: Use nir_lower_single_sampled
Jason Ekstrand [Fri, 19 Nov 2021 19:00:09 +0000 (13:00 -0600)]
intel/fs: Use nir_lower_single_sampled

This lets us drop demote_sample_qualifiers as well as a back-end check
for key->multisample_fbo.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14020>

2 years agonir: Add a pass for lowering shaders to single-sampled
Jason Ekstrand [Wed, 1 Dec 2021 22:30:08 +0000 (16:30 -0600)]
nir: Add a pass for lowering shaders to single-sampled

On Intel, we have to do this because we can't ask for the per-sample
barycentrics without setting the per-sample dispatch bit or the GPU will
hang.  However, nothing we're doing in this pass is Intel-specific and
it may be a useful optimization for someone else so we may as well make
it a generic NIR pass.  This version actually does a bit more than the
current brw_nir_demote_sample_qualifiers() pass as it also handles
pre-nir_lower_io interp_dref_at* as well as a couple system values which
we can easily constant-fold.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14020>

2 years agointel/fs: Use shader_info::fs::uses_sample_shading
Jason Ekstrand [Fri, 19 Nov 2021 21:06:55 +0000 (15:06 -0600)]
intel/fs: Use shader_info::fs::uses_sample_shading

NIR constructs this information for us as part of nir_gather_info these
days so we can simplify our logic a bit.  This will also let us be more
correct once we move uses_sample_shading scraping earlier.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14020>

2 years agoradv: Set uses_sample_shading for copy shaders
Jason Ekstrand [Wed, 13 Jul 2022 18:04:46 +0000 (13:04 -0500)]
radv: Set uses_sample_shading for copy shaders

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

2 years agointel/blorp: Set uses_sample_shading for MSAA blit shaders
Jason Ekstrand [Thu, 2 Dec 2021 05:15:09 +0000 (23:15 -0600)]
intel/blorp: Set uses_sample_shading for MSAA blit shaders

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14020>

2 years agopanfrost: Protect pandecode by a mutex
Alyssa Rosenzweig [Tue, 5 Jul 2022 19:21:53 +0000 (15:21 -0400)]
panfrost: Protect pandecode by a mutex

Pandecode is not thread-safe (for a large number of reasons) and does not even
try to be. This is a problem when tracing (or just using PAN_MESA_DEBUG=sync)
multithreaded applications. The most common symptom of the problem are assertion
failures deep in the red-black tree implementation, which is not thread-safe.

Just protect the whole thing by a "in pandecode?" mutex, since this is not
performance sensitive code and we don't really care about the extra
serialization incurred. As pandecode does not recurse into itself, we may simply
lock at the beginning and unlock at the end of each entrypoint in pandecode,
which is thread-safe regardless of how pandecode is used. A few entrypoints are
refactored to avoid early returns to keep the lock/unlock calls in obvious
visual pairs.

Fixes flakes when running the CL CTS with PAN_MESA_DEBUG=sync like we would in
CI (e.g: events.event_flush)

Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Tested-by: Icecream95 <ixn@disroot.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17409>

2 years agopanfrost: Use implementation-specific tile size
Alyssa Rosenzweig [Thu, 7 Jul 2022 22:39:17 +0000 (18:39 -0400)]
panfrost: Use implementation-specific tile size

The physical tile buffer size (and hence the maximum available tilebuffer size)
are implementation-defined. Track this information on the device so we can
correctly select tile sizes, instead of hardcoding the value for Midgard.

Implementation values are pulled from the "Tile bits/pixel" row of the public
Mali data sheet [1]. That row lists the maximum number of bits available for a
pixel given the maximum tile size and pipelining. For currently supported
hardware (v9 and older), that maximum tile size is 16x16. So those values should
be multiplied by (16 * 16 * 2) / 8 to get the physical size in bytes.

This may improve Bifrost/Valhall performance on workloads using multiple render
targets. It also gets us ready for the dazzling array of tile sizes available
with v10.

[1] https://developer.arm.com/documentation/102849/latest/

Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17432>

2 years agopanfrost: Make pan_select_max_tile_size O(1)
Alyssa Rosenzweig [Tue, 12 Jul 2022 20:45:09 +0000 (16:45 -0400)]
panfrost: Make pan_select_max_tile_size O(1)

Separate out "calculating the size of each pixel", "selecting a tile size", and
"calculating the colour buffer allocation". Then implement the middle (selecting
a tile size) with a simple constant time expression, rather than a loop. There's
a bit of related clean up in here.

Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17432>

2 years agopan/va: Handle BIFROST_MESA_DEBUG=nosb
Alyssa Rosenzweig [Wed, 22 Jun 2022 15:35:32 +0000 (11:35 -0400)]
pan/va: Handle BIFROST_MESA_DEBUG=nosb

For debugging flakes that might be caused due to wrong scoreboarding.

Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17223>