platform/upstream/mesa.git
2 years agomesa/st: don't guess the internal format if it's known
Pierre-Eric Pelloux-Prayer [Fri, 20 May 2022 15:31:46 +0000 (17:31 +0200)]
mesa/st: don't guess the internal format if it's known

This fixes tests using imageLoad/imageStore on texture
created using glEGLImageTargetTexture2DOES.

Before this change, the format was guessed as GL_RGBA,
which would be rejected by _mesa_get_shader_image_format.

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

2 years agodri: store internal_format when known
Pierre-Eric Pelloux-Prayer [Fri, 20 May 2022 15:30:00 +0000 (17:30 +0200)]
dri: store internal_format when known

For images created from textures or renderbuffer, the internal
format is known so store it.

This will be used in the next commit to replaces guessing it.

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

2 years agointel/nir: temporarly disable opt_uniform_atomics for RT/CL
Lionel Landwerlin [Thu, 21 Apr 2022 14:32:23 +0000 (07:32 -0700)]
intel/nir: temporarly disable opt_uniform_atomics for RT/CL

Not had time to investiguate what is going is on but it's definitely a
contributor to failures.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Acked-by: Caio Oliveira <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16104>

2 years agovirgl: Submit the TGSI_PROPERTY_SEPARABLE_PROGRAM when the host understands it
Gert Wollny [Sat, 2 Jul 2022 08:06:27 +0000 (10:06 +0200)]
virgl: Submit the TGSI_PROPERTY_SEPARABLE_PROGRAM when the host understands it

We can't unconditionally support separable shader objects on the host,
so submit the property only if the shader is actually separable, the
host knows about the property, and supports SSO.

Without support for SSOs, the  host can still compile and link the shaders,
it needs to do more  work on interface matching though.

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17344>

2 years agotgsi: Don't bother setting the TGSI_PROPERTY_SEPARABLE_PROGRAM
Gert Wollny [Sat, 2 Jul 2022 08:02:16 +0000 (10:02 +0200)]
tgsi: Don't bother setting the TGSI_PROPERTY_SEPARABLE_PROGRAM

Most drivers don't care about the property, and virgl should only handle
it if the host supports it.

This is a partial revert of b634030, i.e. we keep the definition of the
property, but we don't set it only based on the shader info.

Fixes: b63403054237c3e408f2662beb52ec65db0aee30
  tgsi: Add SEPARABLE_PROGRAM property

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

2 years agov3dv: remove obsolete comment
Iago Toral Quiroga [Thu, 7 Jul 2022 06:33:00 +0000 (08:33 +0200)]
v3dv: remove obsolete comment

multop + umul24 can only be used to implement 32-bit multiplies,
so for a full 64-bit result we always need to lower.

Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17372>

2 years agov3dv: don't lower uadd_carry and usub_borrow
Iago Toral Quiroga [Wed, 6 Jul 2022 09:29:41 +0000 (11:29 +0200)]
v3dv: don't lower uadd_carry and usub_borrow

We can produce slightly better code for these in the backend, so
do that. For this we need to:

1. Fix our implementation of uadd_carry (which wasn't used) to return
   an integer instead of a boolean value.
2. Add an implementation of usub_borrow.

Notice these are only used in Vulkan. In GL these instructions are
always unconditionally lowered by the state tracker in GLSL IR so
we never get to see them in the backend.

Shader-db stats from a collection of Vulkan samples:

total instructions in shared programs: 122351 -> 122345 (<.01%)
instructions in affected programs: 196 -> 190 (-3.06%)
helped: 2
HURT: 0

total uniforms in shared programs: 18670 -> 18672 (0.01%)
uniforms in affected programs: 59 -> 61 (3.39%)
helped: 0
HURT: 2

total max-temps in shared programs: 13145 -> 13147 (0.02%)
max-temps in affected programs: 27 -> 29 (7.41%)
helped: 0
HURT: 2

total inst-and-stalls in shared programs: 123052 -> 123046 (<.01%)
inst-and-stalls in affected programs: 197 -> 191 (-3.05%)
helped: 2
HURT: 0

Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17372>

2 years agonir: fix documentation for uadd_carry and usub_borry opcodes
Iago Toral Quiroga [Thu, 7 Jul 2022 09:13:51 +0000 (11:13 +0200)]
nir: fix documentation for uadd_carry and usub_borry opcodes

These opcodes where fixed to return an integer instead of a boolean
value some time ago but the documentation for them was not updated
and still talked about a boolean result.

Fixes: b0d4ee520 ('nir/opcodes: Fix up uadd_carry and usub_borrow')
Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17372>

2 years agointel/fs: make sure memory writes have landed for thread dispatch
Lionel Landwerlin [Tue, 5 Apr 2022 13:23:13 +0000 (13:23 +0000)]
intel/fs: make sure memory writes have landed for thread dispatch

The thread dispatch SEND instructions will dispatch new threads
immediately even before the caller of the SEND instruction has reached
EOT. So we really need to make sure all the memory writes are visible
to other threads within the DSS before the SEND.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Caio Oliveira <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15755>

2 years agovenus: implement VK_EXT_physical_device_drm
Clément Guérin [Wed, 6 Jul 2022 23:04:32 +0000 (16:04 -0700)]
venus: implement VK_EXT_physical_device_drm

Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17387>

2 years agovenus: enabled iub in physical device
Dawn Han [Mon, 27 Jun 2022 19:29:23 +0000 (19:29 +0000)]
venus: enabled iub in physical device

Signed-off-by: Dawn Han <dawnhan@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16699>

2 years agoRefactor and add template support for iub
Dawn Han [Thu, 30 Jun 2022 00:39:45 +0000 (00:39 +0000)]
Refactor and add template support for iub

Signed-off-by: Dawn Han <dawnhan@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16699>

2 years agoAdd the iub binding count tracking
Dawn Han [Thu, 30 Jun 2022 00:33:33 +0000 (00:33 +0000)]
Add the iub binding count tracking

Signed-off-by: Dawn Han <dawnhan@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16699>

2 years agoAdd iub type to vn_descriptor_type
Dawn Han [Wed, 29 Jun 2022 20:37:03 +0000 (20:37 +0000)]
Add iub type to vn_descriptor_type
Verified the pNext VkWriteDescriptorSet is not NULL on iub type

Signed-off-by: Dawn Han <dawnhan@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16699>

2 years agoRefactor the descriptor enums to be extensible
Dawn Han [Mon, 27 Jun 2022 19:23:22 +0000 (19:23 +0000)]
Refactor the descriptor enums to be extensible

Signed-off-by: Dawn Han <dawnhan@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16699>

2 years agoAdd iub features and properties passthrough
Dawn Han [Wed, 29 Jun 2022 18:14:01 +0000 (18:14 +0000)]
Add iub features and properties passthrough

Signed-off-by: Dawn Han <dawnhan@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16699>

2 years agoci/lava: Update license header
Guilherme Gallo [Wed, 6 Jul 2022 00:34:01 +0000 (21:34 -0300)]
ci/lava: Update license header

Use SPDX to indicate the license.
Update authors of lava_job_submitter.py

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

2 years agoci/lava: Rename console color names
Guilherme Gallo [Wed, 6 Jul 2022 00:33:30 +0000 (21:33 -0300)]
ci/lava: Rename console color names

Use FG to indicate foreground colors

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

2 years agoci/lava: Flexibilize section marker regexes
Guilherme Gallo [Mon, 4 Jul 2022 20:34:17 +0000 (17:34 -0300)]
ci/lava: Flexibilize section marker regexes

In some jobs, such as
https://gitlab.freedesktop.org/gallo/mesa/-/jobs/24904100, the kmsg is
interleaved with stderr/stdout in serial console, making it difficult to
confidently find the log messages to detect when the DUT is booting,
when the DUT is running etc.

Luckily, LAVA sends redundant messages about their signals. We can use
them to mitigate the chance of missing an interleaved message by being
more open to different messages, using the regex on both `debug` and
`target` LAVA log levels.

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

2 years agoci/lava: Stop printing after the result line
Guilherme Gallo [Thu, 30 Jun 2022 22:46:40 +0000 (19:46 -0300)]
ci/lava: Stop printing after the result line

There are some leftovers in the jobs logs after the result log line.
Only print until the init-stage2.sh output, to raise the chance to check
for the test script results at the first glance in the Gitlab logs.

Extra changes:
- Add `hung` status for jobs considered hanging in the Gitlab
- print them after the retry loop

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

2 years agoci/lava: Highlight job retrying message
Guilherme Gallo [Thu, 30 Jun 2022 21:49:26 +0000 (18:49 -0300)]
ci/lava: Highlight job retrying message

It should be clear to the developer that the job was not successful in
the first run.

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

2 years agoci/lava: Highlight kernel messages in bold
Guilherme Gallo [Thu, 30 Jun 2022 21:43:05 +0000 (18:43 -0300)]
ci/lava: Highlight kernel messages in bold

This will serve to warn the user that those messages are processed
differently, e.g. the kmsgs does not trigger heartbeats and maybe
eventual targets of hint to retry the job immediately.

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

2 years agoci/lava: Don't print LAVA debug messages
Guilherme Gallo [Thu, 30 Jun 2022 21:41:14 +0000 (18:41 -0300)]
ci/lava: Don't print LAVA debug messages

Remove debug messages from the output in order to unclutter the log a
little more for the developers.

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

2 years agoci/lava: Add an integration test for LAVA jobs
Guilherme Gallo [Thu, 30 Jun 2022 21:16:51 +0000 (18:16 -0300)]
ci/lava: Add an integration test for LAVA jobs

test_full_yaml_log is a test that will look for a LAVA log YAML file at
`/tmp/log.yaml` and consume it as it was a realtime CI job.
It is useful for debugging issues related with LAVA.

Let's keep it skipped by default, to avoid introducing entire logs into
the codebase.

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

2 years agoci/lava: Wrap job definition dump into a collapsed section
Guilherme Gallo [Thu, 30 Jun 2022 21:05:36 +0000 (18:05 -0300)]
ci/lava: Wrap job definition dump into a collapsed section

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

2 years agoci/lava: Wrap job info into a collapsed section
Guilherme Gallo [Thu, 30 Jun 2022 21:04:49 +0000 (18:04 -0300)]
ci/lava: Wrap job info into a collapsed section

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

2 years agoci/lava: heartbeat: don't consider kernel message logs
Guilherme Gallo [Thu, 30 Jun 2022 20:58:17 +0000 (17:58 -0300)]
ci/lava: heartbeat: don't consider kernel message logs

Currently, the submitter consider that every new log that comes from the
DUT console is a signal that the device is healthy, but maybe that is
not the case, since in some kernel hangs/failures, no output is
presented except from some kernel messages.

This commit bypass the heartbeat when the LogFollower detect a kernel
message. Any log line that does follow the kmsg pattern will make the
job labeled as healthy again.

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

2 years agoci/lava: Follow job execution via LogFollower
Guilherme Gallo [Mon, 4 Apr 2022 14:26:17 +0000 (11:26 -0300)]
ci/lava: Follow job execution via LogFollower

Now LogFollower is used to deal with the LAVA logs.

Moreover, this commit adds timeouts per Gitlab section, if a section
takes longer than expected, cancel the job and retry again.

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

2 years agoci/lava: Create LogFollower and move logging methods
Guilherme Gallo [Fri, 24 Jun 2022 00:43:00 +0000 (21:43 -0300)]
ci/lava: Create LogFollower and move logging methods

- Create LogFollower to capture LAVA log and process it adding some
- GitlabSection and color treatment to it
- Break logs further, make new gitlab sections between testcases
- Implement LogFollower as ContextManager to deal with incomplete LAVA
  jobs.
- Use template method to simplify gitlab log sections management
- Fix sections timestamps

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

2 years agoci/lava: Create Gitlab log sections handler
Guilherme Gallo [Thu, 24 Mar 2022 23:32:06 +0000 (20:32 -0300)]
ci/lava: Create Gitlab log sections handler

Gitlab has support for collapsible sections, so it would be good to
create collapsed log sections for the LAVA setup logs. This way, the
Mesa developers to see only the execution of the scripts, instead of
LAVA messages clutter.

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

2 years agovulkan/device_select: remove get_pdevice_proc_addr
Chia-I Wu [Tue, 3 May 2022 17:55:03 +0000 (10:55 -0700)]
vulkan/device_select: remove get_pdevice_proc_addr

It is optional and is needed only when a layer has physical device
extensions that may be unknown to the loader.

This simplifies the layer a bit, but more importantly, it works around a
bug in the loader when there is another layer in the layer chain that
wraps VkInstance.

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

2 years agodocs: Bump 22.2 branchpoint by two weeks
Dylan Baker [Wed, 6 Jul 2022 22:10:04 +0000 (15:10 -0700)]
docs: Bump 22.2 branchpoint by two weeks

There's been several requests to push the release back a bit to allow
more time in the 22.2 cycle, so we'll bump by two weeks. This adds an
extra 22.1 release to the schedule as well, due to the move.

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

2 years agoradv: Implement VK_EXT_shader_module_identifier.
Hans-Kristian Arntzen [Fri, 1 Jul 2022 10:02:35 +0000 (12:02 +0200)]
radv: Implement VK_EXT_shader_module_identifier.

Passes dEQP-VK.pipeline.*.shader_module_identifier.*

Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17332>

2 years agovulkan: Add common code for VK_EXT_shader_module_identifier.
Hans-Kristian Arntzen [Fri, 1 Jul 2022 09:44:55 +0000 (11:44 +0200)]
vulkan: Add common code for VK_EXT_shader_module_identifier.

Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17332>

2 years agovulkan: Update Vulkan XML and headers to 1.3.219.
Hans-Kristian Arntzen [Fri, 1 Jul 2022 09:36:59 +0000 (11:36 +0200)]
vulkan: Update Vulkan XML and headers to 1.3.219.

Acked-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17332>

2 years agomesa: remove incomplete texture warning
Mike Blumenkrantz [Tue, 5 Jul 2022 13:24:26 +0000 (09:24 -0400)]
mesa: remove incomplete texture warning

ETOOSPAMMY

Reviewed-by: Emma Anholt <emma@anholt.net>
Reviewed-by: Yusuf Khan <yusisamerican@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17362>

2 years agovirgl: Add support for passing the supported number of components from virgl
Corentin Noël [Mon, 9 May 2022 14:21:17 +0000 (16:21 +0200)]
virgl: Add support for passing the supported number of components from virgl

Return the capabilities reported by the host. No functional change in case the
host virgl implementation doesn't implement it.

Signed-off-by: Corentin Noël <corentin.noel@collabora.com>
Reviewed-by: Italo Nicola <italonicola@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16401>

2 years agovirgl/ci: Update virglrenderer
Corentin Noël [Tue, 28 Jun 2022 15:57:33 +0000 (17:57 +0200)]
virgl/ci: Update virglrenderer

Update virglrenderer to the latest version on time.

Signed-off-by: Corentin Noël <corentin.noel@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16401>

2 years agokmsro: add 'imx-lcdif' driver support
Lucas Stach [Thu, 12 May 2022 11:10:54 +0000 (13:10 +0200)]
kmsro: add 'imx-lcdif' driver support

This is the scanout engine found on the NXP i.MX8MP SoC.

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

2 years agodzn: Add ABI helpers for D3D12 functions returning structs
Jesse Natalie [Sat, 2 Jul 2022 14:34:07 +0000 (07:34 -0700)]
dzn: Add ABI helpers for D3D12 functions returning structs

The currently available D3D12 API headers have incorrect C function
prototypes for these functions when compiling for non-Windows platforms.

Future changes here will move these helpers into the DirectX-Headers
project, but:
* The process of getting a fix into the headers is still ongoing
* I'd prefer to avoid taking an immediate dependency on just-published
  headers again

So, for now add some helpers to work around this problem in Dozen

Acked-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Bill Kristiansen <billkris@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17340>

2 years agodzn: Add a DXCore enumeration path
Jesse Natalie [Fri, 1 Jul 2022 20:38:14 +0000 (13:38 -0700)]
dzn: Add a DXCore enumeration path

WSL doesn't have DXGI, but it does have DXCore. DXCore also has a nice
property that it filters to only D3D12-capable adapters. We can rely
on DXCore as a first option even for Windows, because we'll be able
to let the Vulkan loader do preference sorting, instead of having to
rely on DXGI to do it for us.

Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Bill Kristiansen <billkris@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17340>

2 years agodzn: Move DXGI code to a separate file and only build it on Windows
Jesse Natalie [Fri, 1 Jul 2022 16:39:03 +0000 (09:39 -0700)]
dzn: Move DXGI code to a separate file and only build it on Windows

The prototypes for physical device enumeration are moved to a new
dedicated header so that it can be included from a DXCore path,
which will C++, in the next commit

Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Bill Kristiansen <billkris@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17340>

2 years agodzn: Use a custom adapter desc instead of DXGI adapter desc
Jesse Natalie [Tue, 5 Jul 2022 20:44:45 +0000 (13:44 -0700)]
dzn: Use a custom adapter desc instead of DXGI adapter desc

Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Bill Kristiansen <billkris@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17340>

2 years agodzn: Don't hash adapter LUID as part of device UUID
Jesse Natalie [Tue, 5 Jul 2022 20:43:17 +0000 (13:43 -0700)]
dzn: Don't hash adapter LUID as part of device UUID

Per the Vulkan spec, the device UUID should be identical between reboots.
It should also uniquely identify different instances of the same device,
e.g. 2 identical GPUs connected to different PCI ports, but D3D doesn't
currently expose a way to do both of these things. Prefer persistence
over uniqueness here.

Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Bill Kristiansen <billkris@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17340>

2 years agodzn: Use IUnknown instead of IDXGIAdapter1 as the stored adapter
Jesse Natalie [Fri, 1 Jul 2022 16:01:03 +0000 (09:01 -0700)]
dzn: Use IUnknown instead of IDXGIAdapter1 as the stored adapter

WSL doesn't support DXGI, and DirectX-Headers used to build for WSL
doesn't have the DXGI headers, so we need to isolate DXGI usage
and only build it on Windows

Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Bill Kristiansen <billkris@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17340>

2 years agodzn: Skip dxil validator and some Windows-only debug flags for Linux
Jesse Natalie [Fri, 1 Jul 2022 16:06:55 +0000 (09:06 -0700)]
dzn: Skip dxil validator and some Windows-only debug flags for Linux

Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Bill Kristiansen <billkris@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17340>

2 years agodzn: Fix maybe-uninitialized warning
Jesse Natalie [Fri, 1 Jul 2022 16:05:39 +0000 (09:05 -0700)]
dzn: Fix maybe-uninitialized warning

Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Bill Kristiansen <billkris@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17340>

2 years agodzn: Add an eventfd sync implementation
Jesse Natalie [Fri, 1 Jul 2022 16:05:25 +0000 (09:05 -0700)]
dzn: Add an eventfd sync implementation

Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Bill Kristiansen <billkris@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17340>

2 years agodzn: Use u_dl to load D3D12
Jesse Natalie [Fri, 1 Jul 2022 16:05:01 +0000 (09:05 -0700)]
dzn: Use u_dl to load D3D12

Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Bill Kristiansen <billkris@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17340>

2 years agodzn: Use os_time_sleep instead of Win32 Sleep
Jesse Natalie [Fri, 1 Jul 2022 16:04:02 +0000 (09:04 -0700)]
dzn: Use os_time_sleep instead of Win32 Sleep

Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Bill Kristiansen <billkris@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17340>

2 years agodzn: Define COBJMACROS before any includes
Jesse Natalie [Fri, 1 Jul 2022 16:28:52 +0000 (09:28 -0700)]
dzn: Define COBJMACROS before any includes

Otherwise the IUnknown definition might get included before it.

Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Bill Kristiansen <billkris@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17340>

2 years agodzn: Annotate sometimes-unused variables.
Jesse Natalie [Fri, 1 Jul 2022 03:49:43 +0000 (20:49 -0700)]
dzn: Annotate sometimes-unused variables.

Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Bill Kristiansen <billkris@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17340>

2 years agonir: Use util_mask_sign_extend when serializing constants
Jason Ekstrand [Fri, 1 Jul 2022 18:50:58 +0000 (13:50 -0500)]
nir: Use util_mask_sign_extend when serializing constants

Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17214>

2 years agopanfrost,asahi: Use util_sign_extend for unpacking
Jason Ekstrand [Thu, 23 Jun 2022 18:19:12 +0000 (13:19 -0500)]
panfrost,asahi: Use util_sign_extend for unpacking

Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Kristian H. Kristensen <hoegsberg@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17214>

2 years agointel/decoder: Use util_mask_sign_extend()
Jason Ekstrand [Thu, 23 Jun 2022 18:05:14 +0000 (13:05 -0500)]
intel/decoder: Use util_mask_sign_extend()

Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Kristian H. Kristensen <hoegsberg@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17214>

2 years agoisl: Use util_sign_extend
Jason Ekstrand [Thu, 23 Jun 2022 18:00:36 +0000 (13:00 -0500)]
isl: Use util_sign_extend

Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Kristian H. Kristensen <hoegsberg@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17214>

2 years agoutil,nir: Move mask_sign_extend from opt_load_store_vectorize to util
Jason Ekstrand [Thu, 23 Jun 2022 17:55:40 +0000 (12:55 -0500)]
util,nir: Move mask_sign_extend from opt_load_store_vectorize to util

While we're moving it, reformat a bit to make it match util_sign_extend
better.

Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Kristian H. Kristensen <hoegsberg@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17214>

2 years agomesa/bptc: Use util_sign_extend
Jason Ekstrand [Thu, 23 Jun 2022 17:52:27 +0000 (12:52 -0500)]
mesa/bptc: Use util_sign_extend

Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Kristian H. Kristensen <hoegsberg@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17214>

2 years agoutil: Use util_sign_extend in fast_idiv_by_const
Jason Ekstrand [Thu, 23 Jun 2022 17:34:51 +0000 (12:34 -0500)]
util: Use util_sign_extend in fast_idiv_by_const

Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Kristian H. Kristensen <hoegsberg@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17214>

2 years agoutil: Use shifts in util_sign_extend
Jason Ekstrand [Thu, 23 Jun 2022 17:30:48 +0000 (12:30 -0500)]
util: Use shifts in util_sign_extend

As long as we left-shift the unsigned version, this has no undefined
behavior and is fewer instructions.  The only tricky bit is that a right
shift of a negative number is technically implementation-defined (not
undefined) behavior in C.  However, if it's ever anything other than an
arithmatic right-shift, there's lots of other places where Mesa will
break today.

Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Kristian H. Kristensen <hoegsberg@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17214>

2 years agoutil: Re-indent util_sign_extend, comment, and add asserts
Jason Ekstrand [Thu, 23 Jun 2022 17:23:24 +0000 (12:23 -0500)]
util: Re-indent util_sign_extend, comment, and add asserts

The current implementation depends on both of these things for
correctness.  If width > 64, you get UB wrap-around and, if
val >= (1 << width), the subtract trick won't work.

Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Kristian H. Kristensen <hoegsberg@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17214>

2 years agoanv: Replace an assert() with unreachable()
Jason Ekstrand [Fri, 1 Jul 2022 17:10:49 +0000 (12:10 -0500)]
anv: Replace an assert() with unreachable()

Also move it to the end of the switch as is more conventional.  For some
reason, later patches in the series make ANV fail to build because GCC
stops detecting the assert(!"str") as not returning.

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

2 years agoaco/optimizer: Optimize SOPC with literal to SOPK.
Georg Lehmann [Sun, 17 Apr 2022 20:14:30 +0000 (22:14 +0200)]
aco/optimizer: Optimize SOPC with literal to SOPK.

Signed-off-by: Georg Lehmann <dadschoorse@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15999>

2 years agoaco/optimizer: Convert s_add_u32 with literals to s_add_i32 if carry is not used.
Georg Lehmann [Sun, 17 Apr 2022 12:32:34 +0000 (14:32 +0200)]
aco/optimizer: Convert s_add_u32 with literals to s_add_i32 if carry is not used.

To allow further optimizations to s_addk_i32.

Signed-off-by: Georg Lehmann <dadschoorse@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15999>

2 years agoaco/ra: Optimize some SOP2 instructions with literal to SOPK.
Georg Lehmann [Sun, 17 Apr 2022 11:17:20 +0000 (13:17 +0200)]
aco/ra: Optimize some SOP2 instructions with literal to SOPK.

Signed-off-by: Georg Lehmann <dadschoorse@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15999>

2 years agoaco/ir: Pad SOP2 and SOPC to the same size as SOPK.
Georg Lehmann [Sun, 17 Apr 2022 19:09:15 +0000 (21:09 +0200)]
aco/ir: Pad SOP2 and SOPC to the same size as SOPK.

Being able to directly cast instructions simplifies optimizations.

Signed-off-by: Georg Lehmann <dadschoorse@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15999>

2 years agoaco/ra: Move mac encoding optimization to its own function.
Georg Lehmann [Thu, 19 May 2022 13:50:30 +0000 (15:50 +0200)]
aco/ra: Move mac encoding optimization to its own function.

Signed-off-by: Georg Lehmann <dadschoorse@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15999>

2 years agoaco/ra: Static assert that changing instruction type to VOP2 is valid.
Georg Lehmann [Sun, 17 Apr 2022 19:17:18 +0000 (21:17 +0200)]
aco/ra: Static assert that changing instruction type to VOP2 is valid.

It's not obvious that this is correct.

Signed-off-by: Georg Lehmann <dadschoorse@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15999>

2 years agoradv/ci: update list of failures against CTS 1.3.3.0
Samuel Pitoiset [Wed, 6 Jul 2022 05:49:54 +0000 (07:49 +0200)]
radv/ci: update list of failures against CTS 1.3.3.0

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17370>

2 years agozink/ci: update list of failures
Samuel Pitoiset [Wed, 6 Jul 2022 05:52:22 +0000 (07:52 +0200)]
zink/ci: update list of failures

These regressions aren't related to LLVM at all and they are fixed
with recent 16-bit related fixes for ACO.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17370>

2 years agoetnaviv: drop scanout assumption for resources allocated via modifier interface
Lucas Stach [Tue, 5 Jul 2022 16:15:27 +0000 (18:15 +0200)]
etnaviv: drop scanout assumption for resources allocated via modifier interface

Now that usage flags can be specified even when using the modifier path for
allocation and frontends like GBM and EGL wayland do this properly, we can
drop the assumption that all resources allocated through the modifier
enabled path need to be SCANOUT capable.

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

2 years agodzn: Take VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT into account
Boris Brezillon [Thu, 30 Jun 2022 13:55:23 +0000 (06:55 -0700)]
dzn: Take VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT into account

Use a typeless format when VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT is
set, so we can cast to compatible types at least. Still doesn't
work when formats are of the same size but from incompatible
types (like R32_FLOAT and RGBA8_UNORM), which Vulkan considers
as compatible while D3D12 doesn't, but it gets us closer to what
the Vulkan API wants.

D3D12_FEATURE_DATA_D3D12_OPTIONS12::RelaxedFormatCastingSupported
should address the remaining limitations.

Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17368>

2 years agodzn: Support native image copies when formats are compatible
Boris Brezillon [Thu, 30 Jun 2022 11:17:12 +0000 (04:17 -0700)]
dzn: Support native image copies when formats are compatible

CopyTextureRegion() works fine if the formats belong to the
same group (matching the same _TYPELESS type), so let's avoid
creating a temporary resource in that case.

Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17368>

2 years agodzn: Provide a helper to check if 2 formats are compatible
Boris Brezillon [Thu, 30 Jun 2022 11:12:45 +0000 (04:12 -0700)]
dzn: Provide a helper to check if 2 formats are compatible

D3D12 supports fomat casting through optional features. Let's
add a helper to query whether 2 formats are compatible or not.
The compatibility depends on the formats+usage pair
(CopyTextureRegion() is less strict than the texture sampling
logic).

Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17368>

2 years agodzn: Query D3D12_FEATURE_D3D12_OPTIONS3 features
Boris Brezillon [Thu, 30 Jun 2022 08:13:25 +0000 (01:13 -0700)]
dzn: Query D3D12_FEATURE_D3D12_OPTIONS3 features

Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17368>

2 years agov3dv: fix merge jobs
Iago Toral Quiroga [Tue, 5 Jul 2022 07:04:41 +0000 (09:04 +0200)]
v3dv: fix merge jobs

This only works if the framebuffer config is exactly the same so
testing both subpasses have the same attachments is not enough,
they also need to be exactly in the same order.

Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17358>

2 years agoanv: use the right helper to invalidate memory
Lionel Landwerlin [Sun, 12 Jun 2022 19:18:45 +0000 (22:18 +0300)]
anv: use the right helper to invalidate memory

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Caio Oliveira <caio.oliveira@intel.com>
Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17001>

2 years agozink: use a std430 interface for bo types
Mike Blumenkrantz [Wed, 29 Jun 2022 23:23:45 +0000 (19:23 -0400)]
zink: use a std430 interface for bo types

no functional changes but is technically more correct

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

2 years agozink: use std430 packing by default
Mike Blumenkrantz [Fri, 24 Jun 2022 16:16:29 +0000 (12:16 -0400)]
zink: use std430 packing by default

this reduces bo size a bit

Reviewed-by: Dave Airlie <airlied@redhat.com>
fixes:
spec@!opengl es 3.0@gles-3.0-transform-feedback-uniform-buffer-object

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

2 years agozink: add an optimizer pass to enforce bo bounds
Mike Blumenkrantz [Fri, 24 Jun 2022 15:23:16 +0000 (11:23 -0400)]
zink: add an optimizer pass to enforce bo bounds

this eliminates (some) out-of-bounds bo access and will ensure that
bo sizing is always accurate by breaking all the cases where it isn't

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

2 years agozink: pass zink_shader to optimize_nir during final optimize pass
Mike Blumenkrantz [Fri, 24 Jun 2022 15:22:45 +0000 (11:22 -0400)]
zink: pass zink_shader to optimize_nir during final optimize pass

no functional changes

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

2 years agozink: don't run nir_lower_uniforms_to_ubo repeatedly
Mike Blumenkrantz [Sun, 26 Jun 2022 13:06:51 +0000 (09:06 -0400)]
zink: don't run nir_lower_uniforms_to_ubo repeatedly

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

2 years agozink: handle bitsizes in get_bo_vars() analysis
Mike Blumenkrantz [Sun, 26 Jun 2022 13:06:26 +0000 (09:06 -0400)]
zink: handle bitsizes in get_bo_vars() analysis

this allows it to be run repeatedly

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

2 years agozink: move/refactor bo_vars struct creation in compiler
Mike Blumenkrantz [Fri, 24 Jun 2022 15:22:07 +0000 (11:22 -0400)]
zink: move/refactor bo_vars struct creation in compiler

no functional changes

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

2 years agozink: force unsized array in bo creation using the last block member type
Mike Blumenkrantz [Fri, 24 Jun 2022 15:20:33 +0000 (11:20 -0400)]
zink: force unsized array in bo creation using the last block member type

if the last member of a block is an unsized array then the bo needs to have
an unsized array

cc: mesa-stable

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

2 years agozink: further improve bo sizing
Mike Blumenkrantz [Fri, 24 Jun 2022 15:19:14 +0000 (11:19 -0400)]
zink: further improve bo sizing

using the attribute slot size isn't sufficient in this case, as the layout
rules may have additional effects upon sizing

instead, just use the explicit size

cc: mesa-stable

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

2 years agozink: size uniform_0 ubo accurately
Mike Blumenkrantz [Fri, 24 Jun 2022 12:51:20 +0000 (08:51 -0400)]
zink: size uniform_0 ubo accurately

this one is always identifiable from lower_uniforms_to_ubo, so the
info should always be reliable

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

2 years agottn: Set nir->info.separate_shader
Alyssa Rosenzweig [Tue, 21 Jun 2022 17:00:42 +0000 (13:00 -0400)]
ttn: Set nir->info.separate_shader

TGSI has no legitimate[1] notion of linked shaders, which means tgsi_to_nir
should conservatively assume everything all shaders are separable. This requires
setting nir->info.separate_shader to warn drivers that shader CSOs might be
mixed and matched. Otherwise, the driver might enable optimizations that
are invalid for separate shaders, causing issues when the shaders are
later treated as separable.

This will fix varying linking with u_blitter's shaders on Panfrost (Bifrost and
older), when util_blitter_clear is used with Panfrost.

[1] There was a TGSI property added recently to forward
nir->info.separate_shader up to virglrenderer, but it's not actually used for
anything in virglrenderer and I am still struggling to understand what the use
case would be. My gut says we should revert b63403054237 ("tgsi: Add
SEPARABLE_PROGRAM property"), but I'm not interested in fighting that yak right
now. Notably, the u_blitter and hud shaders are separable but are not marked
with this property.

Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17282>

2 years agoci/llvmpipe: Skip ssbo.layout.random.all_shared_buffer.36
Emma Anholt [Tue, 5 Jul 2022 04:50:17 +0000 (21:50 -0700)]
ci/llvmpipe: Skip ssbo.layout.random.all_shared_buffer.36

This became too slow with the llvm uprev and now flakes as a timeout.

Fixes: 4d7c11aa8d73 ("ci/x86: update to llvm 13")
Acked-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17304>

2 years agoci: Uprev deqp to 1.3.3.0.
Emma Anholt [Wed, 29 Jun 2022 05:24:44 +0000 (22:24 -0700)]
ci: Uprev deqp to 1.3.3.0.

New tests, dEQP line rasterization test fix that lets Intel pass.

Clears out bogus xfails from 1.3.2.0 uprev on a630, which I suspect were
"we lost the device twice on a full run once, and those fails got pasted
in without checking if it happened a full run again" (since we haven't
seen them in other full run attempts).

Also clears out the a630 vk asan xfails (essentially all tests run) by
turning off leak detection which was just catching leaks in vkcts.

Acked-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17304>

2 years agoaco/tests: add vop3p constant combine tests
Rhys Perry [Mon, 2 May 2022 17:21:56 +0000 (18:21 +0100)]
aco/tests: add vop3p constant combine tests

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16296>

2 years agoaco: don't use 32-bit fp inline constants for fp16 vop3p literals
Rhys Perry [Mon, 2 May 2022 13:21:21 +0000 (14:21 +0100)]
aco: don't use 32-bit fp inline constants for fp16 vop3p literals

If we're applying the literal 0x3f800000 to a fp16 vop3p instruction, we
shouldn't use the 1.0 inline constant, because the hardware will use the
16-bit 1.0: 0x00003c00.

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16296>

2 years agoaco: try sign-extending or shifting constants in propagate_constants_vop3p
Rhys Perry [Mon, 2 May 2022 13:07:03 +0000 (14:07 +0100)]
aco: try sign-extending or shifting constants in propagate_constants_vop3p

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16296>

2 years agoaco: fix redirect combine in propagate_constants_vop3p() with negatives
Rhys Perry [Mon, 2 May 2022 12:16:54 +0000 (13:16 +0100)]
aco: fix redirect combine in propagate_constants_vop3p() with negatives

This previously didn't correctly consider negative integers when bits=16
(which sign-extend) and would have combined 0xfffe0000.xy as -2.yx. Now it
combines 0xfffeffff.xy as that instead. It was also skipped when bits=32.

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16296>

2 years agoaco: don't use opsel to fold constants into dot accumulation sources
Rhys Perry [Mon, 2 May 2022 12:19:45 +0000 (13:19 +0100)]
aco: don't use opsel to fold constants into dot accumulation sources

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16296>

2 years agoaco: fix propagate_constants_vop3p with integer vop3p and 16-bit constants
Rhys Perry [Mon, 2 May 2022 12:10:47 +0000 (13:10 +0100)]
aco: fix propagate_constants_vop3p with integer vop3p and 16-bit constants

This would have created a 1.0.xx operand from 0x3c00.xx or 0x3c003c00.xy
for vop3p instructions which have 32-bit operands.

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16296>

2 years agoaco: fix single-alignbyte do_pack_2x16() path with fp inline constants
Rhys Perry [Fri, 29 Apr 2022 16:37:51 +0000 (17:37 +0100)]
aco: fix single-alignbyte do_pack_2x16() path with fp inline constants

We were using a 16-bit inline constant with a 32-bit instruction and the
test would have created
"v1: %_:v[0] = v_alignbyte_b32 0.5, %_:v[1][16:32], 2" instead.

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16296>

2 years agoaco: ignore precise flag when optimizing integer clamps
Rhys Perry [Fri, 29 Apr 2022 16:23:20 +0000 (17:23 +0100)]
aco: ignore precise flag when optimizing integer clamps

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16296>

2 years agoaco: include _e64 variants of 16-bit min/max in minmax optimizations
Rhys Perry [Fri, 29 Apr 2022 16:19:09 +0000 (17:19 +0100)]
aco: include _e64 variants of 16-bit min/max in minmax optimizations

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16296>

2 years agoaco: don't accept med3 opcodes in get_minmax_info()
Rhys Perry [Fri, 29 Apr 2022 16:21:01 +0000 (17:21 +0100)]
aco: don't accept med3 opcodes in get_minmax_info()

I don't think the presence of med3 here breaks anything, but it shouldn't
be here anyway.

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16296>