platform/upstream/mesa.git
21 months agoradv/rra: Continue dumping accel structs if validation fails
Konstantin Seurer [Sat, 15 Oct 2022 09:53:21 +0000 (11:53 +0200)]
radv/rra: Continue dumping accel structs if validation fails

Reviewed-by: Friedrich Vock <friedrich.vock@gmx.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19089>

21 months agoradv/rra: Add basic header validation
Konstantin Seurer [Sat, 15 Oct 2022 09:52:41 +0000 (11:52 +0200)]
radv/rra: Add basic header validation

Reviewed-by: Friedrich Vock <friedrich.vock@gmx.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19089>

21 months agoradv/rra: Validate before gathering bvh info
Konstantin Seurer [Sat, 15 Oct 2022 08:59:20 +0000 (10:59 +0200)]
radv/rra: Validate before gathering bvh info

Reviewed-by: Friedrich Vock <friedrich.vock@gmx.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19089>

21 months agoradv/rra: Fix dumps in the case of aliasing
Konstantin Seurer [Fri, 14 Oct 2022 16:50:30 +0000 (18:50 +0200)]
radv/rra: Fix dumps in the case of aliasing

Reviewed-by: Friedrich Vock <friedrich.vock@gmx.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19089>

22 months agoCI: Igalia farm is down
Jose Maria Casanova Crespo [Sun, 16 Oct 2022 10:05:02 +0000 (12:05 +0200)]
CI: Igalia farm is down

It seems a power outage affected the Raspberry Pi farm nodes.

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

22 months agoutil: Turn -DWINDOWS_NO_FUTEX to be pre_args
Yonggang Luo [Sat, 15 Oct 2022 10:50:09 +0000 (18:50 +0800)]
util: Turn -DWINDOWS_NO_FUTEX to be pre_args

Turn -DWINDOWS_NO_FUTEX to be pre_args for not need add direct dependencies
to dep_futex for libraries and executables.
So only add dependencies to idep_mesautil is enough.

And this will make sure all source code are either using Windows futex,
or use mtx_t consistently across different sources, other than mixed usage of
futex and mtx_t before this commit.

If -DWINDOWS_NO_FUTEX is not globally available, that would cause
/src/util/simple_mtx.h:116: undefined reference to `futex_wait'

This error is raised when
 * compiled with -D min-windows-version=7
 * moved futex_wait from futex.h to futex.c
 * used simple_mtx_t in more codes

Or linkage error:
src/compiler/libcompiler.a.p/glsl_types.cpp.obj: in function `futex_wake':
/../../src/util/futex.h:154: undefined reference to `WaitOnAddress'
When:
 * compiled with -D min-windows-version=7
 * used simple_mtx_t in more codes

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/7494
Fixes: c002bbeb2f7 ("util: Add a Win32 futex impl")

Signed-off-by: Yonggang Luo <luoyonggang@gmail.com>
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19087>

22 months agomesa,gallium: Revert "Make point coord origin a CAP"
Alyssa Rosenzweig [Fri, 14 Oct 2022 17:45:48 +0000 (13:45 -0400)]
mesa,gallium: Revert "Make point coord origin a CAP"

This reverts commit e749f67f8989874f6795d95422c1f3eb4d2706ba, which added a CAP
to support drivers that can only do upside-down point coordinates. That was
added specifically for Asahi, since Metal's point coordinate convention is
opposite Mesa's. Since then, additional reverse-engineering aided by the PowerVR
headers led me to the bit doing the flip in hardware, so Asahi does not use the
CAP since baadc1ec13f ("asahi: Don't use lower_wpos_pntc"). Garbage collect it.

[If it's needed for future hardware, we can revive it. But the plan is Vulkan
anyway.]

Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Suggested-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19078>

22 months agointel: Add and use intel_engines_class_to_string()
José Roberto de Souza [Wed, 5 Oct 2022 20:27:08 +0000 (13:27 -0700)]
intel: Add and use intel_engines_class_to_string()

Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18975>

22 months agointel: Convert i915 engine type to intel in tools/ common/ and ds/
José Roberto de Souza [Wed, 5 Oct 2022 19:52:05 +0000 (12:52 -0700)]
intel: Convert i915 engine type to intel in tools/ common/ and ds/

This ones were left to be done after initial conversion.

Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18975>

22 months agointel: Convert missing i915 engine types to intel
José Roberto de Souza [Wed, 5 Oct 2022 19:46:31 +0000 (12:46 -0700)]
intel: Convert missing i915 engine types to intel

This convertions were missed due to bad rebased in my end, sorry.

Fixes: 03b959286e2c ("intel: Make engine related functions and types not i915 dependent")
Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18975>

22 months agonir: Be smarter fusing ffma
Alyssa Rosenzweig [Sat, 15 Oct 2022 17:39:26 +0000 (13:39 -0400)]
nir: Be smarter fusing ffma

If there is a single use of fmul, and that single use is fadd, it makes
sense to fuse ffma, as we already do. However, if there are multiple
uses, fusing may impede code gen. Consider the source fragment:

   a = fmul(x, y)
   b = fadd(a, z)
   c = fmin(a, t)
   d = fmax(b, c)

The fmul has two uses. The current ffma fusing is greedy and will
produce the following "optimized" code.

   a = fmul(x, y)
   b = ffma(x, y, z)
   c = fmin(a, t)
   d = fmax(b, c)

Actually, this code is worse! Instead of 1 fmul + 1 fadd, we now have 1
fmul + 1 ffma. In effect, two multiplies (and a fused add) instead of
one multiply and an add. Depending on the ISA, that could impede
scheduling or increase code size. It can also increase register
pressure, extending the live range.

It's tempting to gate on is_used_once, but that would hurt in cases
where we really do fuse everything, e.g.:

   a = fmul(x, y)
   b = fadd(a, z)
   c = fadd(a, t)

For ISAs that fuse ffma, we expect that 2 ffma is faster than 1 fmul + 2
fadd. So what we really want is to fuse ffma iff the fmul will get
deleted. That occurs iff all uses of the fmul are fadd and will
themselves get fused to ffma, leaving fmul to get dead code eliminated.
That's easy to implement with a new NIR search helper, checking that all
uses are fadd.

shader-db results on Mali-G57 [open shader-db + subset of closed]:

total instructions in shared programs: 179491 -> 178991 (-0.28%)
instructions in affected programs: 36862 -> 36362 (-1.36%)
helped: 190
HURT: 27

total cycles in shared programs: 10573.20 -> 10571.75 (-0.01%)
cycles in affected programs: 72.02 -> 70.56 (-2.02%)
helped: 28
HURT: 1

total fma in shared programs: 1590.47 -> 1582.61 (-0.49%)
fma in affected programs: 319.95 -> 312.09 (-2.46%)
helped: 194
HURT: 1

total cvt in shared programs: 812.98 -> 813.03 (<.01%)
cvt in affected programs: 118.53 -> 118.58 (0.04%)
helped: 65
HURT: 81

total quadwords in shared programs: 98968 -> 98840 (-0.13%)
quadwords in affected programs: 2960 -> 2832 (-4.32%)
helped: 20
HURT: 4

total threads in shared programs: 4693 -> 4697 (0.09%)
threads in affected programs: 4 -> 8 (100.00%)
helped: 4
HURT: 0

v2: Update trace checksums for virgl due to numerical differences.

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

22 months agoglthread: fix buffer allocation size with non-signed buffer offset path
Mike Blumenkrantz [Fri, 7 Oct 2022 04:42:08 +0000 (00:42 -0400)]
glthread: fix buffer allocation size with non-signed buffer offset path

this needs to always add the start_offset to avoid creating
buffers that are too small

Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18994>

22 months agogallium/vl: Add opaque rgb pixel formats
Andri Yngvason [Tue, 4 Oct 2022 20:33:01 +0000 (20:33 +0000)]
gallium/vl: Add opaque rgb pixel formats

Signed-off-by: Andri Yngvason <andri@yngvason.is>
Reviewed-by: Simon Ser <contact@emersion.fr>
Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18959>

22 months agomesa/main: remove driver-cap for ARB_point_sprite
Erik Faye-Lund [Wed, 12 Oct 2022 11:09:08 +0000 (13:09 +0200)]
mesa/main: remove driver-cap for ARB_point_sprite

It's always supported, no need for checks here.

Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Begrudgingly-reviewed-by: Alyssa Rosenzweig <alyssa@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19049>

22 months agomesa/st: rip out point-sprite cap
Erik Faye-Lund [Wed, 12 Oct 2022 10:54:30 +0000 (12:54 +0200)]
mesa/st: rip out point-sprite cap

All current drivers reports supporting this cap, let's just assume
it's always supported.

It seems better to lower this in the drivers, like we already do for
etnaviv, panfrost and zink...

Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Begrudgingly-reviewed-by: Alyssa Rosenzweig <alyssa@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19049>

22 months agorusticl: correctly check global argument size
Italo Nicola [Thu, 6 Oct 2022 12:32:03 +0000 (12:32 +0000)]
rusticl: correctly check global argument size

As the spec that is quoted in the comment says, if the argument is a
memory object, arg_size should be different than sizeof(cl_mem). The
previous verification only worked if the underlying type has the same
size as sizeof(cl_mem).

Signed-off-by: Italo Nicola <italonicola@collabora.com>
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18985>

22 months agorusticl: use 32-bit address format for 32-bit devices
Italo Nicola [Thu, 6 Oct 2022 12:20:44 +0000 (12:20 +0000)]
rusticl: use 32-bit address format for 32-bit devices

Signed-off-by: Italo Nicola <italonicola@collabora.com>
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18985>

22 months agoclc: add 32-bit target
Italo Nicola [Thu, 6 Oct 2022 12:18:45 +0000 (12:18 +0000)]
clc: add 32-bit target

Signed-off-by: Italo Nicola <italonicola@collabora.com>
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18985>

22 months agopanfrost/ci: Disable t720 jobs
Alyssa Rosenzweig [Sat, 15 Oct 2022 00:19:48 +0000 (20:19 -0400)]
panfrost/ci: Disable t720 jobs

They're dead, Jim!

Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Suggested-by: Daniel Stone <daniels@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19084>

22 months agozink: use util_dynarray_clear
Erik Faye-Lund [Fri, 14 Oct 2022 06:25:31 +0000 (08:25 +0200)]
zink: use util_dynarray_clear

We already have a helper for this, let's use it.

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

22 months agozink: fixup dynarray-type
Erik Faye-Lund [Thu, 13 Oct 2022 19:01:23 +0000 (21:01 +0200)]
zink: fixup dynarray-type

This doesn't make a functional difference, because the size here ends up
being the same; the size of a pointer. But let's use the right type for
consistency.

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

22 months agozink: fix broken pool-alloc consolidation
Erik Faye-Lund [Thu, 13 Oct 2022 18:44:12 +0000 (20:44 +0200)]
zink: fix broken pool-alloc consolidation

When appending the content of a util_dynarray to another util_dynarray, we
need to copy the content to the *end* of the util_dynarray, not the
beginning.

As we've already resized the dynarray, We also shouldn't add to the size
once more at the end, otherwise we'll end up with garbage.

Fixes: 43dcdf33654 ("zink: rework/improve descriptor pool overflow handling on batch reset")
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/7485
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19068>

22 months agoanv: reduce BT emissions & surface state writes with push descriptors
Lionel Landwerlin [Sun, 2 Oct 2022 16:24:40 +0000 (19:24 +0300)]
anv: reduce BT emissions & surface state writes with push descriptors

Zink on Anv running Gfxbench gl_driver2 is significantly slower than
Iris.

The reason is simple, whereas Iris implements uniform updates using
push constants and only has to emit 3DSTATE_CONSTANT_* packets, Zink
uses push descriptors with a uniform buffer, which on our
implementation use both push constants & binding tables.

Anv ends up doing the following for each uniform update :
   - allocate 2 surface states :
      - one for the uniform buffer as the offset specify by zink
      - one for the descriptor set buffer
   - pack the 2 RENDER_SURFACE_STATE
   - re-emit binding tables
   - re-emit push constants

Of all of those operations, only the last one ends up being useful in
this benchmark because all the uniforms have been promoted to push
constants.

This change defers the 3 first operations at draw time and executes
them only if the pipeline needs them.

Vkoverhead before / after :
  descriptor_template_1ubo_push:                      40670 / 85786
  descriptor_template_12ubo_push:                      4050 / 13820
  descriptor_template_1combined_sampler_push,         34410 / 34043
  descriptor_template_16combined_sampler_push,         2746 / 2711
  descriptor_template_1sampled_image_push,            34765 / 34089
  descriptor_template_16sampled_image_push,            2794 / 2649
  descriptor_template_1texelbuffer_push,             108537 / 111342
  descriptor_template_16texelbuffer_push,             20619 / 20166
  descriptor_template_1ssbo_push,                     41506 / 85976
  descriptor_template_8ssbo_push,                      6036 / 18703
  descriptor_template_1image_push,                    88932 / 89610
  descriptor_template_16image_push,                   20937 / 20959
  descriptor_template_1imagebuffer_push,             108407 / 113240
  descriptor_template_16imagebuffer_push,             32661 / 34651

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19050>

22 months agoanv: add analysis for push descriptor uses and store it in shader cache
Lionel Landwerlin [Tue, 11 Oct 2022 23:00:41 +0000 (02:00 +0300)]
anv: add analysis for push descriptor uses and store it in shader cache

We'll use this information to avoid :
   - binding table emission
   - allocation of surface states

v2: Fix anv_nir_push_desc_ubo_fully_promoted()

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19050>

22 months agoanv: initialization pipeline layout to 0s
Lionel Landwerlin [Tue, 11 Oct 2022 22:54:14 +0000 (01:54 +0300)]
anv: initialization pipeline layout to 0s

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Cc: mesa-stable
Reviewed-by: Emma Anholt <emma@anholt.net>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19050>

22 months agoanv: track descriptor set layout flags
Lionel Landwerlin [Tue, 11 Oct 2022 22:52:55 +0000 (01:52 +0300)]
anv: track descriptor set layout flags

To identify push descriptors.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19050>

22 months agoanv: limit push constant reemission
Lionel Landwerlin [Sat, 8 Oct 2022 16:07:16 +0000 (19:07 +0300)]
anv: limit push constant reemission

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19050>

22 months agoisl: avoid gfx version switch cases on the hot path
Lionel Landwerlin [Sun, 2 Oct 2022 16:20:30 +0000 (19:20 +0300)]
isl: avoid gfx version switch cases on the hot path

Some of the surface state packing functions are called from the hot
path in Anv. We can use function pointers to avoid repeatedly going
through switch/case.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19050>

22 months agoanv: remove multiple push descriptors
Lionel Landwerlin [Sun, 2 Oct 2022 16:17:14 +0000 (19:17 +0300)]
anv: remove multiple push descriptors

VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00293

   pSetLayouts must not contain more than one descriptor set layout
   that was created with
   VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR set

There is only one push descriptor set with all the descriptor sets, so
no need to have an array.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19050>

22 months agoanv: optimize 3DSTATE_VF emission
Lionel Landwerlin [Sun, 2 Oct 2022 11:39:52 +0000 (14:39 +0300)]
anv: optimize 3DSTATE_VF emission

We can avoid reemitting this when the index buffer index type doesn't
change.

Also we don't need to update this when the pipeline changes as we do
not pull any value from the pipeline. Instead rely on the dynamic
state to tell if dyn->ia.primitive_restart_enable changed.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19050>

22 months agoanv: limit calls into cmd_buffer_flush_dynamic_state
Lionel Landwerlin [Sun, 2 Oct 2022 08:03:29 +0000 (11:03 +0300)]
anv: limit calls into cmd_buffer_flush_dynamic_state

Avoids a bunch of checks if we can.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19050>

22 months agoanv: comment out the Gfx8/9 VB cache key workaround for newer Gens
Lionel Landwerlin [Sun, 2 Oct 2022 22:41:04 +0000 (01:41 +0300)]
anv: comment out the Gfx8/9 VB cache key workaround for newer Gens

This code shows up a little on profiling on Gfx12 and since it's only
a gfx8/9 workaround we might as well ifdef it out.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19050>

22 months agoanv: remove unused code
Lionel Landwerlin [Sat, 8 Oct 2022 16:06:48 +0000 (19:06 +0300)]
anv: remove unused code

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19050>

22 months agovulkan/runtime: don't lookup the pipeline disk cache if disabled
Lionel Landwerlin [Thu, 21 Jul 2022 12:11:20 +0000 (15:11 +0300)]
vulkan/runtime: don't lookup the pipeline disk cache if disabled

When the Anv pipeline got migrated to the runtime, we gain/lost a bit
of functionality which is that the disk cache is always read
regardless of VK_ENABLE_PIPELINE_CACHE=0.

This change brings the old behavior back.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Fixes: 591da9877900c ("vulkan: Add a common VkPipelineCache implementation")
Reviewed-by: Emma Anholt <emma@anholt.net>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19050>

22 months agoradv: Mark dEQP-VK.ray_query.misc.dynamic_indexing as crashing in CI.
Bas Nieuwenhuizen [Fri, 14 Oct 2022 13:42:40 +0000 (15:42 +0200)]
radv: Mark dEQP-VK.ray_query.misc.dynamic_indexing as crashing in CI.

Gitlab: https://gitlab.freedesktop.org/mesa/mesa/-/issues/7493
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19073>

22 months agovulkan/wsi: Add dep_libudev to idep dependencies
Ryan Houdek [Tue, 11 Oct 2022 20:04:41 +0000 (13:04 -0700)]
vulkan/wsi: Add dep_libudev to idep dependencies

Otherwise users of `idep_vulkan_wsi` won't pull in the udev dependency,
which will cause the linker to fail later on in compiling.

The user of this dependency is lavapipe which would fail to link if this
isn't provided.

Fixes: 4885e63a6d20c57f98b7b641ea3c39a8ff3ae2dd (vulkan/wsi: implement missing wsi_register_device_event)

Reviewed-by: Dylan Baker <dylan@pnwbakers.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19037>

22 months agoci/traces: Blender demo (Cube Diorama) flakes on Intel APL
David Heidelberg [Fri, 14 Oct 2022 01:49:39 +0000 (20:49 -0500)]
ci/traces: Blender demo (Cube Diorama) flakes on Intel APL

Acked-by: Karol Herbst <kherbst@redhat.com>
Signed-off-by: David Heidelberg <david.heidelberg@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19067>

22 months agonir: move fusing csel and comparisons to opt_late_algebraic
Gert Wollny [Wed, 5 Oct 2022 13:01:05 +0000 (15:01 +0200)]
nir: move fusing csel and comparisons to opt_late_algebraic

With that simple comparisons are cleaned up properly.

This helps with some tesselation shaders on r600.

Shader-db stats R600/Cayman:

--------------------------------------------------------------
total dw in shared programs: 1621806 -> 1620884 (-0.06%)
dw in affected programs: 41650 -> 40728 (-2.21%)
helped: 211
HURT: 4
helped stats (abs) min: 2 max: 26 x̄: 4.46 x̃: 4
helped stats (rel) min: 0.30% max: 9.68% x̄: 2.87% x̃: 2.52%
HURT stats (abs)   min: 2 max: 8 x̄: 5.00 x̃: 5
HURT stats (rel)   min: 0.23% max: 1.67% x̄: 1.02% x̃: 1.09%
95% mean confidence interval for dw value: -4.81 -3.77
95% mean confidence interval for dw %-change: -3.03% -2.57%
Dw are helped.

total gprs in shared programs: 41192 -> 41182 (-0.02%)
gprs in affected programs: 731 -> 721 (-1.37%)
helped: 53
HURT: 45
helped stats (abs) min: 1 max: 3 x̄: 1.23 x̃: 1
helped stats (rel) min: 5.88% max: 40.00% x̄: 16.56% x̃: 14.29%
HURT stats (abs)   min: 1 max: 2 x̄: 1.22 x̃: 1
HURT stats (rel)   min: 7.69% max: 40.00% x̄: 19.42% x̃: 20.00%
95% mean confidence interval for gprs value: -0.37 0.16
95% mean confidence interval for gprs %-change: -3.92% 3.85%
Inconclusive result (value mean confidence interval includes 0).

total alu_groups in shared programs: 203677 -> 203632 (-0.02%)
alu_groups in affected programs: 2876 -> 2831 (-1.56%)
helped: 68
HURT: 30
helped stats (abs) min: 1 max: 4 x̄: 1.46 x̃: 1
helped stats (rel) min: 0.84% max: 25.00% x̄: 7.48% x̃: 5.41%
HURT stats (abs)   min: 1 max: 6 x̄: 1.80 x̃: 1
HURT stats (rel)   min: 1.98% max: 33.33% x̄: 10.09% x̃: 5.61%
95% mean confidence interval for alu_groups value: -0.81 -0.11
95% mean confidence interval for alu_groups %-change: -4.20% <.01%
Alu_groups are helped.

total loops in shared programs: 72 -> 72 (0.00%)
loops in affected programs: 0 -> 0
helped: 0
HURT: 0

total cf in shared programs: 88230 -> 88233 (<.01%)
cf in affected programs: 71 -> 74 (4.23%)
helped: 1
HURT: 4
helped stats (abs) min: 1 max: 1 x̄: 1.00 x̃: 1
helped stats (rel) min: 33.33% max: 33.33% x̄: 33.33% x̃: 33.33%
HURT stats (abs)   min: 1 max: 1 x̄: 1.00 x̃: 1
HURT stats (rel)   min: 1.89% max: 33.33% x̄: 17.14% x̃: 16.67%
95% mean confidence interval for cf value: -0.51 1.71
95% mean confidence interval for cf %-change: -24.20% 38.29%
Inconclusive result (value mean confidence interval includes 0).

total stack in shared programs: 3827 -> 3827 (0.00%)
stack in affected programs: 0 -> 0
helped: 0
HURT: 0

LOST:   0
GAINED: 0

Total CPU time (seconds): 45.32 -> 41.69 (-8.01%)
--------------------------------------------------------------

v2: Simplify replacement pattern (Rhys Perry)
v3: fix ws (Alexander Orzechowski)
v4: move the original lowering to opt_late_algebraic and
    drop cleanup code (Alyssa)
v5: Add shader-sb stats (Alyssa)

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa@collabora.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18970>

22 months agor600/sfn: run cleanup passes after late algebraic opt
Gert Wollny [Sun, 9 Oct 2022 16:08:18 +0000 (18:08 +0200)]
r600/sfn: run cleanup passes after late algebraic opt

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18970>

22 months agohasvk: Correctly set NonPerspectiveBarycentricEnable on gfx7
Väinö Mäkelä [Sun, 9 Oct 2022 06:53:12 +0000 (09:53 +0300)]
hasvk: Correctly set NonPerspectiveBarycentricEnable on gfx7

The incorrect #else has existed since commit bfd9942cdc0, but the issue
was already present before that. NonPerspectiveBarycentricEnable must be
enabled if non-perspective interpolation is used.

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/7449
Reviewed-by: Emma Anholt <emma@anholt.net>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19004>

22 months agonir: fix NIR_DEBUG=validate_ssa_dominance
Lionel Landwerlin [Wed, 5 Oct 2022 10:08:56 +0000 (13:08 +0300)]
nir: fix NIR_DEBUG=validate_ssa_dominance

validate_ssa_def_dominance() asserts :

   validate_assert(state, !BITSET_TEST(state->ssa_defs_found, def->index));

Because the previous validation lefts bits set when it processed the
IR.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18966>

22 months agoutil/mesa/wide: Rename _SIMPLE_MTX_INITIALIZER_NP to SIMPLE_MTX_INITIALIZER
Yonggang Luo [Fri, 2 Sep 2022 16:13:15 +0000 (00:13 +0800)]
util/mesa/wide: Rename _SIMPLE_MTX_INITIALIZER_NP to SIMPLE_MTX_INITIALIZER

Signed-off-by: Yonggang Luo <luoyonggang@gmail.com>
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18393>

22 months agoci/bin: Remove whitespace from token files
Guilherme Gallo [Mon, 15 Aug 2022 20:07:21 +0000 (17:07 -0300)]
ci/bin: Remove whitespace from token files

There was a security problem with some `gitlab_gql.py` scenarios because
of `\r` and `\n` in the token file, which interrupted the requests for
Gitlab endpoints.

Stripping the token file after reading the file content solves the
problem.

Signed-off-by: Guilherme Gallo <guilherme.gallo@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18066>

22 months agoci/bin: Fix requirements.txt
Guilherme Gallo [Mon, 15 Aug 2022 19:18:53 +0000 (16:18 -0300)]
ci/bin: Fix requirements.txt

Add missing aiohttp and PyYAML packages

Signed-off-by: Guilherme Gallo <guilherme.gallo@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18066>

22 months agoagx: Reserve live-in regs at the start of block
Alyssa Rosenzweig [Sun, 25 Sep 2022 00:57:31 +0000 (20:57 -0400)]
agx: Reserve live-in regs at the start of block

...Rather than reserving the union of the registers live-out of the
predecessors. This avoids reserving registers that are killed along a
control flow edge (where the predecessor has another successor that does
use the register).

glmark2 subset of shaderdb:

total instructions in shared programs: 6442 -> 6440 (-0.03%)
instructions in affected programs: 42 -> 40 (-4.76%)
helped: 1
HURT: 0

total bytes in shared programs: 42186 -> 42174 (-0.03%)
bytes in affected programs: 270 -> 258 (-4.44%)
helped: 1
HURT: 0

total halfregs in shared programs: 1769 -> 1757 (-0.68%)
halfregs in affected programs: 75 -> 63 (-16.00%)
helped: 3
HURT: 0
helped stats (abs) min: 4.0 max: 4.0 x̄: 4.00 x̃: 4
helped stats (rel) min: 16.00% max: 16.00% x̄: 16.00% x̃: 16.00%

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18804>

22 months agoagx: Pass in max regs as a paramter to RA
Alyssa Rosenzweig [Sat, 24 Sep 2022 23:13:00 +0000 (19:13 -0400)]
agx: Pass in max regs as a paramter to RA

This will allow us to restrict max regs later.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18804>

22 months agoagx: Introduce ra_ctx data structure
Alyssa Rosenzweig [Sat, 24 Sep 2022 04:15:55 +0000 (00:15 -0400)]
agx: Introduce ra_ctx data structure

We have more parameters to pass, this will get unwieldly otherwise.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18804>

22 months agoagx: Write to r0l with a "nesting" instruction
Alyssa Rosenzweig [Sat, 24 Sep 2022 04:04:21 +0000 (00:04 -0400)]
agx: Write to r0l with a "nesting" instruction

This avoids modeling the r0l register explicitly in the IR, which would
complicate RA for little benefit at this stage. Do the simplest thing
that could possibly work in SSA.

glmark2 subset.

total instructions in shared programs: 6442 -> 6442 (0.00%)
instructions in affected programs: 701 -> 701 (0.00%)
helped: 4
HURT: 5
helped stats (abs) min: 1.0 max: 3.0 x̄: 2.00 x̃: 2
helped stats (rel) min: 1.46% max: 7.69% x̄: 4.03% x̃: 3.48%
HURT stats (abs)   min: 1.0 max: 3.0 x̄: 1.60 x̃: 1
HURT stats (rel)   min: 0.81% max: 7.41% x̄: 2.67% x̃: 1.14%
95% mean confidence interval for instructions value: -1.58 1.58
95% mean confidence interval for instructions %-change: -3.70% 3.08%
Inconclusive result (value mean confidence interval includes 0).

total bytes in shared programs: 42196 -> 42186 (-0.02%)
bytes in affected programs: 7768 -> 7758 (-0.13%)
helped: 8
HURT: 5
helped stats (abs) min: 2.0 max: 18.0 x̄: 7.25 x̃: 4
helped stats (rel) min: 0.13% max: 7.26% x̄: 2.02% x̃: 0.97%
HURT stats (abs)   min: 6.0 max: 18.0 x̄: 9.60 x̃: 6
HURT stats (rel)   min: 0.82% max: 6.32% x̄: 2.37% x̃: 1.02%
95% mean confidence interval for bytes value: -7.02 5.48
95% mean confidence interval for bytes %-change: -2.30% 1.63%
Inconclusive result (value mean confidence interval includes 0).

total halfregs in shared programs: 1926 -> 1769 (-8.15%)
halfregs in affected programs: 1395 -> 1238 (-11.25%)
helped: 71
HURT: 0
helped stats (abs) min: 1.0 max: 10.0 x̄: 2.21 x̃: 2
helped stats (rel) min: 1.92% max: 52.63% x̄: 15.33% x̃: 11.76%
95% mean confidence interval for halfregs value: -2.69 -1.73
95% mean confidence interval for halfregs %-change: -17.98% -12.68%
Halfregs are helped.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18804>

22 months agoagx: Preload vertex/instance ID only at start
Alyssa Rosenzweig [Fri, 23 Sep 2022 21:27:43 +0000 (17:27 -0400)]
agx: Preload vertex/instance ID only at start

This means we don't reserve the registers, which improves RA
considerably. Using a special preload psuedo-op instead of a regular
move allows us to constrain semantics and gaurantee coalescing.

shader-db on glmark2 subset:

total instructions in shared programs: 6448 -> 6442 (-0.09%)
instructions in affected programs: 230 -> 224 (-2.61%)
helped: 4
HURT: 0

total bytes in shared programs: 42232 -> 42196 (-0.09%)
bytes in affected programs: 1530 -> 1494 (-2.35%)
helped: 4
HURT: 0

total halfregs in shared programs: 2291 -> 1926 (-15.93%)
halfregs in affected programs: 2185 -> 1820 (-16.70%)
helped: 75
HURT: 0

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18804>

22 months agoagx: Print agx_dim appropriately
Alyssa Rosenzweig [Sat, 24 Sep 2022 03:15:10 +0000 (23:15 -0400)]
agx: Print agx_dim appropriately

Easier to read, and gets us closer to proper disasm in Mesa.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18804>

22 months agoagx: Print instructions as "dest = src"
Alyssa Rosenzweig [Fri, 23 Sep 2022 20:40:39 +0000 (16:40 -0400)]
agx: Print instructions as "dest = src"

This makes the dataflow easier to read, especially with splits and
collects (which take variable numbers of sources/destinations).

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18804>

22 months agoagx: Emit trap at pack-time, not during isel
Alyssa Rosenzweig [Fri, 23 Sep 2022 20:35:31 +0000 (16:35 -0400)]
agx: Emit trap at pack-time, not during isel

This makes the shaderdb stats make more sense.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18804>

22 months agoagx: Rename "combine" to "collect"
Alyssa Rosenzweig [Fri, 23 Sep 2022 02:35:46 +0000 (22:35 -0400)]
agx: Rename "combine" to "collect"

For consistency with ir3 and bifrost.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18804>

22 months agoagx: Dynamically size split instruction
Alyssa Rosenzweig [Fri, 23 Sep 2022 02:35:44 +0000 (22:35 -0400)]
agx: Dynamically size split instruction

This is more flexible.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18804>

22 months agoagx: Switch to dynamic allocation of srcs/dests
Alyssa Rosenzweig [Fri, 23 Sep 2022 02:35:43 +0000 (22:35 -0400)]
agx: Switch to dynamic allocation of srcs/dests

So we can handle parallel copies later.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18804>

22 months agoagx: Improve printing of immediate sources
Alyssa Rosenzweig [Fri, 23 Sep 2022 02:35:41 +0000 (22:35 -0400)]
agx: Improve printing of immediate sources

For floats, decode the float. Regardless, the size speciifer is
redundant.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18804>

22 months agoagx: Don't prefix pseudo-ops
Alyssa Rosenzweig [Fri, 23 Sep 2022 02:35:39 +0000 (22:35 -0400)]
agx: Don't prefix pseudo-ops

It's not really buying us anything and it clutters the IR.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18804>

22 months agoagx: Emit smaller combines for nir_op_vec2/3
Alyssa Rosenzweig [Fri, 23 Sep 2022 02:35:36 +0000 (22:35 -0400)]
agx: Emit smaller combines for nir_op_vec2/3

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18804>

22 months agoagx: Set PIPE_SHADER_CAP_INDIRECT_CONST_ADDR
Alyssa Rosenzweig [Thu, 22 Sep 2022 03:43:48 +0000 (23:43 -0400)]
agx: Set PIPE_SHADER_CAP_INDIRECT_CONST_ADDR

Avoids spilling in t-rex.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18804>

22 months agoagx: Add iterators for phi/non-phi instructions
Alyssa Rosenzweig [Thu, 22 Sep 2022 03:23:14 +0000 (23:23 -0400)]
agx: Add iterators for phi/non-phi instructions

We know that phi nodes are always at the start (this is asserted in
agx_validate and a fundamental invariant of SSA form). That means we can
cheaply iterate all n phi nodes forward (or n non-phi nodes backwards)
in O(n) time. We already open code this idiom in a few places, use
common iterators instead so we don't need to justify in random places.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18804>

22 months agozink: disable fbfetch when flushing clears
Mike Blumenkrantz [Thu, 13 Oct 2022 20:35:22 +0000 (16:35 -0400)]
zink: disable fbfetch when flushing clears

this ensures there's no weird perf happening, avoids using renderpass
instead of dynamic rendering, and avoids hitting an assert from broken
framebuffer construction

cc: mesa-stable

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

22 months agozink: unset rp_changed after initializing renderpass attachments
Mike Blumenkrantz [Thu, 13 Oct 2022 20:29:27 +0000 (16:29 -0400)]
zink: unset rp_changed after initializing renderpass attachments

if fbfetch is setup here, it will flag rp_changed

this is already inside renderpass setup, however, so just unset it
to avoid erroneously trigering the assert

cc: mesa-stable

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

22 months agozink: clamp line_stipple_factor to 1 if stipple is disabled
Mike Blumenkrantz [Wed, 12 Oct 2022 17:42:58 +0000 (13:42 -0400)]
zink: clamp line_stipple_factor to 1 if stipple is disabled

0 is technically an illegal value even though it won't be read in this case

cc: mesa-stable

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

22 months agozink: don't add other usage bits for transient images
Mike Blumenkrantz [Thu, 13 Oct 2022 17:51:43 +0000 (13:51 -0400)]
zink: don't add other usage bits for transient images

this is illegal

cc: mesa-stable

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

22 months agozink: check core feature for pipeline cache control
Mike Blumenkrantz [Thu, 13 Oct 2022 11:58:10 +0000 (07:58 -0400)]
zink: check core feature for pipeline cache control

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

22 months agozink: Fix dummy CB path decision for VK_EXT_cwe presence.
Emma Anholt [Wed, 12 Oct 2022 22:25:41 +0000 (15:25 -0700)]
zink: Fix dummy CB path decision for VK_EXT_cwe presence.

We have to do the dummy workaround when we *don't* have the ext.  This was
apparently a mis-sedding.

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

22 months agorusticl/mem: propper CL_MEM_ALLOC_HOST_PTR support
Karol Herbst [Sun, 2 Oct 2022 11:54:24 +0000 (13:54 +0200)]
rusticl/mem: propper CL_MEM_ALLOC_HOST_PTR support

Signed-off-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18793>

22 months agolp: claim being UMA
Karol Herbst [Sun, 25 Sep 2022 17:12:34 +0000 (19:12 +0200)]
lp: claim being UMA

Signed-off-by: Karol Herbst <kherbst@redhat.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18793>

22 months agorusticl/mem: rewrite the (un)mapping code
Karol Herbst [Fri, 23 Sep 2022 18:15:16 +0000 (20:15 +0200)]
rusticl/mem: rewrite the (un)mapping code

Signed-off-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18793>

22 months agorusticl: add helper ctx wrapper for coherent and direct mapping
Karol Herbst [Fri, 23 Sep 2022 17:46:14 +0000 (19:46 +0200)]
rusticl: add helper ctx wrapper for coherent and direct mapping

Signed-off-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18793>

22 months agorusticl: rework resource mappings a little
Karol Herbst [Fri, 23 Sep 2022 17:58:24 +0000 (19:58 +0200)]
rusticl: rework resource mappings a little

The _async variants will be removed later.

Signed-off-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18793>

22 months agorusticl/mesa: add bx() method to PipeTransfer
Karol Herbst [Fri, 23 Sep 2022 17:44:37 +0000 (19:44 +0200)]
rusticl/mesa: add bx() method to PipeTransfer

Signed-off-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18793>

22 months agorusticl: add support for coherent resources
Karol Herbst [Thu, 22 Sep 2022 13:05:14 +0000 (15:05 +0200)]
rusticl: add support for coherent resources

Signed-off-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18793>

22 months agoglthread: fix matrix stack depth tracking
Timothy Arceri [Thu, 13 Oct 2022 03:17:37 +0000 (14:17 +1100)]
glthread: fix matrix stack depth tracking

Dont bump the depth if the application attempts to overflow or
underflow the stack.

Fixes: 6febe2b880e7 ("glthread: track all matrix stack depths")

Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19059>

22 months agoasahi: Remove no-direct-packing
Alyssa Rosenzweig [Sat, 1 Oct 2022 01:17:17 +0000 (21:17 -0400)]
asahi: Remove no-direct-packing

It's weird.

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

22 months agoasahi: Use a header more like Intel's GenXML
Alyssa Rosenzweig [Sat, 1 Oct 2022 01:16:35 +0000 (21:16 -0400)]
asahi: Use a header more like Intel's GenXML

We're trying to converge on a common schema.

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

22 months agoasahi,panfrost: Remove exact attribute
Alyssa Rosenzweig [Sat, 1 Oct 2022 01:13:11 +0000 (21:13 -0400)]
asahi,panfrost: Remove exact attribute

Not used, although in the future it might be...

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

22 months agopanfrost,asahi: Remove unused function
Alyssa Rosenzweig [Sat, 1 Oct 2022 01:10:24 +0000 (21:10 -0400)]
panfrost,asahi: Remove unused function

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

22 months agopanfrost,asahi: Remove unused prepare macro
Alyssa Rosenzweig [Sat, 1 Oct 2022 01:07:18 +0000 (21:07 -0400)]
panfrost,asahi: Remove unused prepare macro

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

22 months agoasahi/genxml: Defeature uint/float
Alyssa Rosenzweig [Sat, 1 Oct 2022 01:04:11 +0000 (21:04 -0400)]
asahi/genxml: Defeature uint/float

Unused, relic from panfrost and not in upstream genxml.

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

22 months agoasahi: Eliminate "Pixel Format" type from GenXML
Alyssa Rosenzweig [Sat, 1 Oct 2022 01:03:02 +0000 (21:03 -0400)]
asahi: Eliminate "Pixel Format" type from GenXML

This is leaky and hurts compatibility with upstream GenXML. Just use the
actual hardware fields.

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

22 months agonir/lower_system_values: Fix cs_local_index_to_id with variable workgroups
Alyssa Rosenzweig [Mon, 19 Sep 2022 01:37:07 +0000 (21:37 -0400)]
nir/lower_system_values: Fix cs_local_index_to_id with variable workgroups

In that case we need to use the sysval. That sysval can be optimized anyway in
the nonvariable case. Fixes test_basic.get_linear_ids on panfrost.

Fixes: 998d84fca56 ("nir/lower_system_values: Support lowering more intrinsics")
Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com>
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18662>

22 months agointel/compiler: Vectorize gl_TessLevelInner/Outer[] writes [v2]
Kenneth Graunke [Thu, 4 Aug 2022 09:06:52 +0000 (02:06 -0700)]
intel/compiler: Vectorize gl_TessLevelInner/Outer[] writes [v2]

Setting the NIR options takes care of iris thanks to the common st/mesa
linking code, and updating brw_nir_link_shaders should handle anv.

The main effort here is updating remap_tess_levels, which needs to
handle vector stores, writemasking, and swizzling.  Unfortunately,
we also need to continue handling the existing single-component
access because it's used for TES inputs, which we don't vectorize.

We could try to vectorize TES inputs too, but they're all pushed
anyway, so it wouldn't buy us much other than deleting this code.
Also, we do have opt_combine_stores, but not one for loads.

One limitation of using nir_vectorize_tess_levels is that it works
on variables, and so isn't able to combine outer/inner writes that
happen to live in the same vec4 slot (for triangle domains).  That
said, it's still better than before.

For writes, we allow the intrinsics to supply up to the full size
of the variable (vec4 for outer, vec2 for inner) even if the domain
only requires a subset of those components (i.e. triangles needs 3).

shader-db results on Icelake:

   total instructions in shared programs: 19600314 -> 19597528 (-0.01%)
   instructions in affected programs: 65338 -> 62552 (-4.26%)
   helped: 271 / HURT: 0
   helped stats (abs) min: 6 max: 24 x̄: 10.28 x̃: 12
   helped stats (rel) min: 1.30% max: 18.18% x̄: 5.80% x̃: 7.59%
   95% mean confidence interval for instructions value: -10.71 -9.85
   95% mean confidence interval for instructions %-change: -6.17% -5.43%
   Instructions are helped.

   total cycles in shared programs: 851842332 -> 851808165 (<.01%)
   cycles in affected programs: 618577 -> 584410 (-5.52%)
   helped: 271 / HURT: 0
   helped stats (abs) min: 64 max: 540 x̄: 126.08 x̃: 111
   helped stats (rel) min: 2.57% max: 37.97% x̄: 6.12% x̃: 5.06%
   95% mean confidence interval for cycles value: -135.35 -116.80
   95% mean confidence interval for cycles %-change: -6.67% -5.57%
   Cycles are helped.

   total sends in shared programs: 1025238 -> 1024308 (-0.09%)
   sends in affected programs: 6454 -> 5524 (-14.41%)
   helped: 271 / HURT: 0
   helped stats (abs) min: 2 max: 8 x̄: 3.43 x̃: 4
   helped stats (rel) min: 5.71% max: 25.00% x̄: 14.98% x̃: 17.39%
   95% mean confidence interval for sends value: -3.57 -3.29
   95% mean confidence interval for sends %-change: -15.42% -14.54%
   Sends are helped.

According to Felix DeGrood, this results in a 10% improvement in
the draw call time for certain draw calls from Strange Brigade.

v2: Fix assertions about number of components and add more of them.
    Combine the quads and triangles handling as it's nearly identical.

Reviewed-by: Caio Oliveira <caio.oliveira@intel.com> [v1]
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19061>

22 months agohasvk: force inline more pipe flush functions
semjon00 [Tue, 4 Oct 2022 08:29:16 +0000 (11:29 +0300)]
hasvk: force inline more pipe flush functions

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18965>

22 months agohasvk: combine flushes in Draw/DrawIndexed/DrawIndirectByteCountEXT
semjon00 [Tue, 4 Oct 2022 08:27:56 +0000 (11:27 +0300)]
hasvk: combine flushes in Draw/DrawIndexed/DrawIndirectByteCountEXT

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18965>

22 months agohasvk: don't export gfx state flushing helper
semjon00 [Tue, 4 Oct 2022 07:59:50 +0000 (10:59 +0300)]
hasvk: don't export gfx state flushing helper

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18965>

22 months agohasvk: don't export flush_compute_state
semjon00 [Tue, 4 Oct 2022 07:31:32 +0000 (10:31 +0300)]
hasvk: don't export flush_compute_state

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18965>

22 months agoutil: Implement atomic operations consistently across compilers and testing for it
Yonggang Luo [Mon, 5 Sep 2022 17:02:29 +0000 (01:02 +0800)]
util: Implement atomic operations consistently across compilers and testing for it

Signed-off-by: Yonggang Luo <luoyonggang@gmail.com>
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18795>

22 months agoutil: Remove the include of windows.h when compiling with MSVC
Yonggang Luo [Sat, 3 Sep 2022 09:32:28 +0000 (17:32 +0800)]
util: Remove the include of windows.h when compiling with MSVC

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/7345

Signed-off-by: Yonggang Luo <luoyonggang@gmail.com>
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18795>

22 months agorusticl/kernel: preserve fp16 denorms to fix vload/vstore_half
Karol Herbst [Wed, 12 Oct 2022 21:43:22 +0000 (23:43 +0200)]
rusticl/kernel: preserve fp16 denorms to fix vload/vstore_half

Signed-off-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19041>

22 months agovenus: avoid accessing local var in VN_ADD_EXT_TO_PNEXT_OF
Yiwei Zhang [Thu, 6 Oct 2022 22:43:09 +0000 (22:43 +0000)]
venus: avoid accessing local var in VN_ADD_EXT_TO_PNEXT_OF

This boring refactor:
- makes it consistent for extension name alias
- shortens the line a bit to not further regress line width
- applies macro when possible to be consistent
- removes some redundant empty lines

v2: rebase

Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Chad Versace <chadversary@chromium.org> (v1)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18993>

22 months agolavapipe: store compiler options to physical device
Mike Blumenkrantz [Mon, 26 Sep 2022 13:38:44 +0000 (09:38 -0400)]
lavapipe: store compiler options to physical device

this minimizes noise in gallium trace

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18867>

22 months agozink: prevent ballooning of view object memory
Mike Blumenkrantz [Wed, 12 Oct 2022 21:35:03 +0000 (17:35 -0400)]
zink: prevent ballooning of view object memory

if a resource is in use every frame and never goes idle, it becomes
impossible to execute pruning, as there is no tracking for when views
are no longer in use

to avoid eventually ooming in this scenario, add some data to zink_resource_object
which can effectively "queue" pruning of these views if ballooning is
detected at a time when the views are guaranteed to be safe to delete

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

22 months agozink: delete view objects when unsetting resource usage in batch reset
Mike Blumenkrantz [Wed, 12 Oct 2022 19:03:55 +0000 (15:03 -0400)]
zink: delete view objects when unsetting resource usage in batch reset

if the resource has no usage, it's guaranteed to be idle, which means view
objects can be pruned to avoid memory ballooning

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

22 months agozink: rework/improve descriptor pool overflow handling on batch reset
Mike Blumenkrantz [Wed, 12 Oct 2022 14:48:14 +0000 (10:48 -0400)]
zink: rework/improve descriptor pool overflow handling on batch reset

the existing model for descriptor pools works thusly:
* allocate pool
  * when possible, reuse existing pool from overflow array
* when pool is full, append to overflow array
* on batch reset, cycle the overflow arrays to enable reuse

the problem with this is it uses two separate arrays for overflow, and these arrays
are cycled but never consolidated, leading to wasted memory allocations for whichever
array is not currently being recycled

to resolve this, make the following changes to batch resets:
* set the recycle index to whichever overflow array is smaller
* copy the elements from the smaller array to the larger array (consolidate)
* set the number of elements in the smaller array to 0

this leads to always appending to an empty array while the array containing all the
"free" pools is always the one that's available for recycled use

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

22 months agozink: fix pool overflow handling on batch reset
Mike Blumenkrantz [Wed, 12 Oct 2022 15:51:14 +0000 (11:51 -0400)]
zink: fix pool overflow handling on batch reset

this mechanism worked off the previous iteration of descriptor updating,
in which pools were stored in a set to the batch state and could be iterated
normally

now, however, they're stored as a sparse array, and so the dynarray util for getting
the number of elements cannot be used

instead, use the calculated size for the array like every other accessor for
the pools to ensure correct indexing

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

22 months agozink: handle oom better during descriptor updating
Mike Blumenkrantz [Wed, 12 Oct 2022 14:45:07 +0000 (10:45 -0400)]
zink: handle oom better during descriptor updating

in the case where a new descriptor pool cannot be allocated naturally:
* iterate free batch states and try to free up memory
* iterate in-use batch states and try to free up memory
* ???

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

22 months agozink: move descriptor function up in file
Mike Blumenkrantz [Wed, 12 Oct 2022 14:44:44 +0000 (10:44 -0400)]
zink: move descriptor function up in file

no functional changes

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

22 months agovenus: Enable Vulkan 1.3
Chad Versace [Wed, 12 Oct 2022 04:09:19 +0000 (21:09 -0700)]
venus: Enable Vulkan 1.3

Signed-off-by: Chad Versace <chadversary@chromium.org>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Ryan Neph <ryanneph@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19046>

22 months agovenus: Enable VK_KHR_synchronization2
Chad Versace [Wed, 12 Oct 2022 02:01:13 +0000 (19:01 -0700)]
venus: Enable VK_KHR_synchronization2

Signed-off-by: Chad Versace <chadversary@chromium.org>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Ryan Neph <ryanneph@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19046>