platform/upstream/mesa.git
2 years agopanvk: Implement descriptor copies properly
Jason Ekstrand [Tue, 3 May 2022 22:36:04 +0000 (17:36 -0500)]
panvk: Implement descriptor copies properly

All we were doing was copying panvk_descriptor structs around which
don't actually contain data that's used by anything interesting.  We
need to copy the actual data arround.  Annoyingly, that means we need a
descriptor copy function per descriptor type.  Woo!

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

2 years agopanvk: Set immutable samplers properly up-front
Jason Ekstrand [Tue, 3 May 2022 22:31:59 +0000 (17:31 -0500)]
panvk: Set immutable samplers properly up-front

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

2 years agopanvk: Rewrite the write portion of vkUpdateDescriptorSets
Jason Ekstrand [Tue, 3 May 2022 21:25:25 +0000 (16:25 -0500)]
panvk: Rewrite the write portion of vkUpdateDescriptorSets

The new design is based on the ANV code which I massively cleaned up
some time ago.  Each descriptor type has a write function and they have
consistent prototypes.  This makes it all much easier to read and figure
out what's going on.  It also makes it easier to make changes going
forward because you aren't re-plumbing function arguments if you ever
change the type of data in any given descriptor type.  You just change
the write function.

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

2 years agopanvk: Re-arrange descriptor set functions
Jason Ekstrand [Tue, 3 May 2022 21:03:06 +0000 (16:03 -0500)]
panvk: Re-arrange descriptor set functions

Put them in the order we call them which is also roughly descriptor type
enum order.

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

2 years agoFIXUP: Use 16-bit things for texture sizes
Jason Ekstrand [Thu, 5 May 2022 22:18:36 +0000 (17:18 -0500)]
FIXUP: Use 16-bit things for texture sizes

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

2 years agopanvk: Implement texture/image queries
Jason Ekstrand [Fri, 29 Apr 2022 23:31:11 +0000 (18:31 -0500)]
panvk: Implement texture/image queries

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

2 years agopavnk: Pass bind layouts to texture and image descriptor helpers
Jason Ekstrand [Fri, 29 Apr 2022 23:29:40 +0000 (18:29 -0500)]
pavnk: Pass bind layouts to texture and image descriptor helpers

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

2 years agopanvk: Add an elems field to panvk_buffer_view
Jason Ekstrand [Fri, 29 Apr 2022 22:35:50 +0000 (17:35 -0500)]
panvk: Add an elems field to panvk_buffer_view

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

2 years agopanvk: Advertise VK_KHR_variable_pointers
Jason Ekstrand [Fri, 29 Apr 2022 20:28:42 +0000 (15:28 -0500)]
panvk: Advertise VK_KHR_variable_pointers

Now that our SSBO descriptor handling code no longer craws deref chains
back to the variable, we should be handling variable pointers properly.

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

2 years agopanvk: Enable robustBufferAccess
Jason Ekstrand [Thu, 5 May 2022 03:59:10 +0000 (22:59 -0500)]
panvk: Enable robustBufferAccess

It should already work for UBOs.  This should do everything we need for
SSBOs.  Not sure about vertex and index buffers but we can deal with
those later.

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

2 years agovulkan: Start collecting enabled features in vk_device
Jason Ekstrand [Thu, 5 May 2022 03:55:26 +0000 (22:55 -0500)]
vulkan: Start collecting enabled features in vk_device

We're not trying to make this 100% complete.  For now, all we care about
is robustBufferAccess.

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

2 years agopanvk: Put SSBO addresses in the descriptor buffer
Jason Ekstrand [Wed, 27 Apr 2022 22:58:03 +0000 (17:58 -0500)]
panvk: Put SSBO addresses in the descriptor buffer

Instead of storing SSBO pointers in the very limited sysval space, store
them in the UBO we've attached to the descriptor set.  This gives us a
virtually unlimited number of SSBOs.  Dynamic SSBOs still live in the
sysval space so we can update them as part of vkCmdBindDescriptorSets().
Also, the new code (based on the code in ANV) loads those SSBO addresses
in a way that never chases the deref chain back to the variable so we
should now be able to handle all of variable pointers.  The code as
written in this patch is a bit overly generic because it switches on
address modes a bit more than panvk needs but we ended up needing all
that flexibility in ANV so we may as well leave hooks for it in panvk.

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

2 years agopanvk: Interleave UBOs with multiple descriptor sets
Jason Ekstrand [Fri, 29 Apr 2022 15:38:36 +0000 (10:38 -0500)]
panvk: Interleave UBOs with multiple descriptor sets

The original intention was to put all the non-dynamic UBOs first
followed by all the dynamic ones.  However, we got the calculations
wrong and, once you went above one descriptor set, things start stomping
each other.

Also, the whole strategy is a bit busted.  Vulkan pipeline layout
compatability rules say that it's ok to create a pipeline with one
layout and then bind with another so long as the bottom N descriptor set
layouts match and the pipeline uses at most N descriptors.  This means
that, while it's safe to have each subsequent set add onto a given pool
of descriptors, if you're going to combine two of those pools, you need
to be careful that the position of descriptors in set N only depends on
the layouts of sets M <= N.  The easy way to do this is to interleve
where we do the UBOs for set 0 then dynamic for set 0 then UBOs for set
1 then dynamic for set 1, etc.

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

2 years agopanvk: Put the sysval and push const UBOs at fixed indices
Jason Ekstrand [Fri, 29 Apr 2022 15:20:18 +0000 (10:20 -0500)]
panvk: Put the sysval and push const UBOs at fixed indices

In theory, this may cost us a tiny bit of descriptor space but in
practice, given that the viewport transform is a sysval, we'll always
need it for 3D and given that SSBO pointers live there, we'll basically
always need it for compute.  It also makes a lot of things simpler.
We're about to start using the sysval UBO directly in our descriptor set
code and knowing the index up-front is really nice.

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

2 years agopanvk: Stop calling lower_uniforms_to_ubo
Jason Ekstrand [Fri, 29 Apr 2022 20:01:29 +0000 (15:01 -0500)]
panvk: Stop calling lower_uniforms_to_ubo

We don't need it because Vulkan doesn't have GL-style uniforms.  It
*shouldn't* be doing anything but sometimes it inserts an extra UBO
binding and adds 1 to all our UBO indices for no good reason.

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

2 years agopanvk: Use a flat sysvals struct
Jason Ekstrand [Thu, 28 Apr 2022 22:02:20 +0000 (17:02 -0500)]
panvk: Use a flat sysvals struct

PanVK uses fewer sysvals than the GLES driver, as some data that would
be a data in GLES is instead part of the descriptor set or the pipeline
state in Vulkan. Therefore, it is simpler and more efficient to use a
flat, fixed layout provided by the driver for our sysvals, rather than
the compiler choosing a layout.

This commit switches to a flat sysval layout.

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

2 years agopanvk: Get rid of the per-pipeline sysvals BO
Jason Ekstrand [Thu, 28 Apr 2022 20:51:51 +0000 (15:51 -0500)]
panvk: Get rid of the per-pipeline sysvals BO

This is a micro-optimization and probably not a correct one at that.
The cost involved in re-uploading the viewport is tiny compared to the
mental overhead from trying to do this juggle.

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

2 years agobifrost,midgard: Allow providing a fixed sysval layout
Jason Ekstrand [Thu, 28 Apr 2022 20:46:00 +0000 (15:46 -0500)]
bifrost,midgard: Allow providing a fixed sysval layout

Vulkan doesn't need nearly as many system values and would like to bake
its layout up-front instead of having it provided by the back-end
compiler.

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

2 years agopanfrost: Add some sanity checking for sysvals
Jason Ekstrand [Thu, 28 Apr 2022 22:52:41 +0000 (17:52 -0500)]
panfrost: Add some sanity checking for sysvals

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

2 years agopanfrost,panvk: Make fixed_sysval_ubo < 0 mean compiler-assigned
Jason Ekstrand [Wed, 4 May 2022 16:25:33 +0000 (11:25 -0500)]
panfrost,panvk: Make fixed_sysval_ubo < 0 mean compiler-assigned

In 3559efb9bf5c ("panfrost: Allow passing an explicit UBO index for the
sysval UBO"), an explicit UBO index was added and it was implicitly
assumed that it would be > num_ubos.  This was convenient because it
meant 0, the default for designated initializers, implicitly meant
compiler-assigned.  However, we're about to move the sysval UBO to 0
which breaks this assumption.   Also, we don't want the back-end
compiler to even look at num_ubos since it's meaningless in Vulkan.

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

2 years agopanvk: Add a buffer to each descriptor set
Jason Ekstrand [Wed, 27 Apr 2022 21:03:52 +0000 (16:03 -0500)]
panvk: Add a buffer to each descriptor set

Later in the series, we will map descriptor sets to driver-internal
buffers bound as UBOs. These buffers will contain various internal data,
like buffer and texture sizes. Resource access will be lowered to pull
from this UBO in the shader. To prepare, create a backing buffer when
creating descriptor set and emit a UBO record so we can bind it.

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

2 years agopanvk: Break descriptor lowering into its own file
Jason Ekstrand [Wed, 27 Apr 2022 19:44:35 +0000 (14:44 -0500)]
panvk: Break descriptor lowering into its own file

It's about to get a lot more complicated so let's split it out.

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

2 years agopanvk: Move CreateDescriptorSetLayout to per-arch
Jason Ekstrand [Wed, 27 Apr 2022 19:53:38 +0000 (14:53 -0500)]
panvk: Move CreateDescriptorSetLayout to per-arch

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

2 years agointel/dev: Enable first set of DG2 PCI IDs
Jordan Justen [Sat, 30 Apr 2022 09:01:52 +0000 (02:01 -0700)]
intel/dev: Enable first set of DG2 PCI IDs

Mostly Matt Roper's kernel patch commit message:

The IDs added here are the subset reserved for 'motherboard down'
designs of DG2. We have all the necessary support upstream to enable
these now.

The remaining DG2 IDs for add-in cards will be enabled in a future
patch once some additional required functionality has fully landed.

Ref: https://patchwork.freedesktop.org/patch/msgid/20220425211251.77154-3-matthew.d.roper@intel.com
Cc: 22.1 <mesa-stable>
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16449>

2 years agointel/dev: Add DG2 G12 PCI IDs
Jordan Justen [Sat, 30 Apr 2022 08:48:40 +0000 (01:48 -0700)]
intel/dev: Add DG2 G12 PCI IDs

Ref: https://patchwork.freedesktop.org/patch/483381/?series=103098&rev=1
Ref: https://patchwork.freedesktop.org/patch/msgid/20220425211251.77154-3-matthew.d.roper@intel.com
Cc: 22.1 <mesa-stable>
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16449>

2 years agointel/dev: Add INTEL_PLATFORM_DG2_G12
Jordan Justen [Mon, 8 Nov 2021 22:18:49 +0000 (14:18 -0800)]
intel/dev: Add INTEL_PLATFORM_DG2_G12

Cc: 22.1 <mesa-stable>
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16449>

2 years agoradv/winsys: allow to use RADV_FORCE_FAMILY=gfx1100
Samuel Pitoiset [Thu, 5 May 2022 13:26:45 +0000 (15:26 +0200)]
radv/winsys: allow to use RADV_FORCE_FAMILY=gfx1100

The bare minimum to play with fossils.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16446>

2 years agor600: Elide downloads for discarded and immutable compute memories.
Jason Volk [Fri, 22 Apr 2022 01:12:53 +0000 (18:12 -0700)]
r600: Elide downloads for discarded and immutable compute memories.

Compute memory item demotion invokes a device to host transfer unconditionally,
but there are at least two cases where this is not necessary:

1. The item is mapped for discarding with PIPE_MAP_DISCARD_RANGE (e.g.
CL_MAP_WRITE_INVALIDATE_REGION).

2. The item cannot be written to by the device.

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

2 years agor600: Improve compute memory pool performance; reduce fragmentation.
Jason Volk [Thu, 21 Apr 2022 21:40:09 +0000 (14:40 -0700)]
r600: Improve compute memory pool performance; reduce fragmentation.

The compute memory pool forced a defragmentation (a left-packing relocation)
of items prior to promoting (adding) items to the tail end of the pool.

This patch instead makes an initial pass over the fragmented pool intent on
promoting items back to where they may have been recently demoted, filling
in the gaps first before conducting the defragmentation (if at all).

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

2 years agor600: Fix userspace pointer support for evergreen compute.
Jason Volk [Wed, 9 Mar 2022 20:34:08 +0000 (12:34 -0800)]
r600: Fix userspace pointer support for evergreen compute.

Resources returned by r600_buffer_from_user_memory() are not compatible
with the evergreen compute memory pool, though they're added to it anyway.

This results in a segfault reproducible from Clover when the user passes
CL_MEM_USE_HOST_PTR.

This patch allows user_ptr resources to participate in the compute global
memory pool as intended. The result appears to finally allow for zero-copy
DMA out of userspace for anonymous pages.

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

2 years agoamd: fix ac_build_mbcnt_add in wave32 mode
Pierre-Eric Pelloux-Prayer [Wed, 11 May 2022 12:57:13 +0000 (14:57 +0200)]
amd: fix ac_build_mbcnt_add in wave32 mode

add_src was ignored and i32_0 was always used.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Fixes: 1e49018cedf ("amd: Add extra source to the mbcnt_amd NIR intrinsic.")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16427>

2 years agoradeonsi: don't use wave32 for GE on gfx10 if culling is used
Pierre-Eric Pelloux-Prayer [Mon, 9 May 2022 20:20:12 +0000 (22:20 +0200)]
radeonsi: don't use wave32 for GE on gfx10 if culling is used

This is a workaround for issue #6457: it fixes the rendering and
prevent the hang but I can't explain why.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/6457
Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16427>

2 years agoradeonsi: fix gs_invocation query with NGG
Pierre-Eric Pelloux-Prayer [Mon, 2 May 2022 14:10:35 +0000 (16:10 +0200)]
radeonsi: fix gs_invocation query with NGG

When NGG is active, the GS invocation counter is always incremented, even
if there's no explicit GS.

Implementing the counter manually fixes it:
  * in emit_gs_epilogue for the legacy path
  * in gfx10_ngg_gs_emit_prologue for the ngg path

This fixes piglit's arb_query_buffer_object-qbo test.

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

2 years agoradeonsi/ngg: reuse the pipeline stats buffer when using atomics
Pierre-Eric Pelloux-Prayer [Tue, 19 Apr 2022 11:13:51 +0000 (13:13 +0200)]
radeonsi/ngg: reuse the pipeline stats buffer when using atomics

To support PIPE_STAT_QUERY_GS_INVOCATIONS and PIPE_STAT_QUERY_GS_PRIMITIVES
being used at the same time we have to reuse the same buffer.

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

2 years agoradeonsi/query: use the qbo correct size
Pierre-Eric Pelloux-Prayer [Fri, 15 Apr 2022 14:11:10 +0000 (16:11 +0200)]
radeonsi/query: use the qbo correct size

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

2 years agoradeonsi/test: update sienna_cichlid results
Pierre-Eric Pelloux-Prayer [Fri, 15 Apr 2022 14:48:16 +0000 (16:48 +0200)]
radeonsi/test: update sienna_cichlid results

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

2 years agoradeonsi: implement GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB in shaders
Pierre-Eric Pelloux-Prayer [Fri, 15 Apr 2022 13:12:39 +0000 (15:12 +0200)]
radeonsi: implement GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB in shaders

Statistics only work in non-NGG mode. If screen->use_ngg is true, we can't
know if the draw will actually use NGG or not, so this commit switch
to a shader based implementation of this counter.

To avoid modifying si_query, the shader implementation behaves like the hw
one: it uses the same buffer size and offset.

The emulation path activation in the shader is controlled by vs_state_bit[31].

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

2 years agoradeonsi: store the pipeline stats index
Pierre-Eric Pelloux-Prayer [Mon, 2 May 2022 13:16:29 +0000 (15:16 +0200)]
radeonsi: store the pipeline stats index

Will be used in later commits.

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

2 years agoradeonsi: deduplicate query offsets
Pierre-Eric Pelloux-Prayer [Tue, 19 Apr 2022 08:27:30 +0000 (10:27 +0200)]
radeonsi: deduplicate query offsets

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

2 years agogallium: deduplicate target -> stats index code
Pierre-Eric Pelloux-Prayer [Tue, 19 Apr 2022 08:31:07 +0000 (10:31 +0200)]
gallium: deduplicate target -> stats index code

Now that target_to_index returns the correct index for
PIPE_QUERY_PIPELINE_STATISTICS we can use it in store_query_result instead
of duplicating the switch statement.

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

2 years agogallium: always return the correct pipeline stats index
Pierre-Eric Pelloux-Prayer [Fri, 15 Apr 2022 13:11:58 +0000 (15:11 +0200)]
gallium: always return the correct pipeline stats index

Drivers with PIPE_CAP_QUERY_PIPELINE_STATISTICS_SINGLE = 0 shouldn't care
about the value of index, but radeonsi actually needs it in some situations.

So return the correct index instead of 0.

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

2 years agogallium: add a union to access queries counters
Pierre-Eric Pelloux-Prayer [Tue, 19 Apr 2022 08:28:05 +0000 (10:28 +0200)]
gallium: add a union to access queries counters

This allows to loop over counters easily.

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

2 years agoradeonsi: implement pipeline stats workaround
Pierre-Eric Pelloux-Prayer [Thu, 14 Apr 2022 11:32:03 +0000 (13:32 +0200)]
radeonsi: implement pipeline stats workaround

DISABLE_INSTANCE_PACKING needs to be enabled when stats queries are
active to fix incorrect results.

We need to emit this for indexed and non-indexed draws.

Based on PAL's waDisableInstancePacking.

This fixes:
  KHR-GL46.pipeline_statistics_query_tests_ARB.functional_primitives_vertices_submitted_and_clipping_input_output_primitives

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

2 years agoradeonsi: flush VGT streamout like PAL
Pierre-Eric Pelloux-Prayer [Mon, 11 Apr 2022 14:25:01 +0000 (16:25 +0200)]
radeonsi: flush VGT streamout like PAL

Ported from 165b016bbeedd4e8d1517a5e95949871cc55a123.

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

2 years agozink: fix sparse texture depth calcs for arrayed textures
Mike Blumenkrantz [Wed, 11 May 2022 20:59:31 +0000 (16:59 -0400)]
zink: fix sparse texture depth calcs for arrayed textures

use the array, not the depth

cc: mesa-stable

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

2 years agozink: remove misleading sparse comment
Mike Blumenkrantz [Wed, 11 May 2022 20:59:21 +0000 (16:59 -0400)]
zink: remove misleading sparse comment

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

2 years agozink: set sparse flag in cubemap lowering
Mike Blumenkrantz [Wed, 11 May 2022 14:05:03 +0000 (10:05 -0400)]
zink: set sparse flag in cubemap lowering

Fixes: 2d745904ca7 ("zink: add a gently mangled version of the d3d12 cubemap -> array compiler pass")

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

2 years agozink: fix sparse binding for arrayed textures
Mike Blumenkrantz [Wed, 11 May 2022 20:03:16 +0000 (16:03 -0400)]
zink: fix sparse binding for arrayed textures

this needs to set the arrayLayer, not the z offset

big thanks to Piers Daniell for catching this

cc: mesa-stable

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

2 years agozink: clamp out min_lod operands for explicit lod ops
Mike Blumenkrantz [Wed, 11 May 2022 20:02:51 +0000 (16:02 -0400)]
zink: clamp out min_lod operands for explicit lod ops

this is illegal (and nonsensical)

cc: mesa-stable

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

2 years agozink: fix up sparse texture sampling for shadow samplers
Mike Blumenkrantz [Wed, 11 May 2022 13:26:22 +0000 (09:26 -0400)]
zink: fix up sparse texture sampling for shadow samplers

the problem here is that this returns a vec2 instead of a vec5, which
throws all the existing calculations off

given that the shader is (still) expecting a vec2 return from this,
and there's no way to sanely rewrite with nir to be valid for both
sampler types as well as spirv translation, just pad out to a vec2
here and be done with it

Fixes: 73ef54e3424 ("zink: handle residency return value from sparse texture instructions")

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

2 years agonir: remove unreachable loop terminators
Timothy Arceri [Mon, 9 May 2022 10:20:26 +0000 (20:20 +1000)]
nir: remove unreachable loop terminators

Remove the conditional break statements associated with all
terminators that are associated with a fixed iteration count,
except for the one associated with the limiting terminator.

This logic matches similiar functionality that exists in the
old GLSL IR unrolling code.

This change helps a piglit test pass on the r300 driver once
we switch off the old GLSL IR unrolling code.

Shader-db results IRIS (BDW):

total instructions in shared programs: 17538619 -> 17538595 (<.01%)
instructions in affected programs: 216 -> 192 (-11.11%)
helped: 3
HURT: 0
helped stats (abs) min: 7 max: 10 x̄: 8.00 x̃: 7
helped stats (rel) min: 10.00% max: 12.07% x̄: 11.38% x̃: 12.07%

total cycles in shared programs: 858674910 -> 858672810 (<.01%)
cycles in affected programs: 79540 -> 77440 (-2.64%)
helped: 3
HURT: 0
helped stats (abs) min: 620 max: 800 x̄: 700.00 x̃: 680
helped stats (rel) min: 2.45% max: 2.83% x̄: 2.63% x̃: 2.62%

Reviewed-by: Emma Anholt <emma@anholt.net>
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16399>

2 years agonir: always set the exact_trip_count_unknown loop terminator property
Timothy Arceri [Mon, 9 May 2022 08:20:34 +0000 (18:20 +1000)]
nir: always set the exact_trip_count_unknown loop terminator property

Previously we only cared if this was set for the limiting
terminator. However in the following patch we will make use of this
information on other terminators to decide if we can eliminate them.

Reviewed-by: Emma Anholt <emma@anholt.net>
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16399>

2 years agontt: make use of new samplers_used field
Karol Herbst [Thu, 5 May 2022 09:45:28 +0000 (11:45 +0200)]
ntt: make use of new samplers_used field

Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16435>

2 years agontt: Don't gather samplers_declared twice
Jason Ekstrand [Tue, 10 May 2022 13:57:50 +0000 (08:57 -0500)]
ntt: Don't gather samplers_declared twice

Prior to scanning instrucitons, we initialize it based on variables.  If
this is adding anything, we have a bug somewhere.

Reviewed-by: Emma Anholt <emma@anholt.net>
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16435>

2 years agolavapipe: Set images_used in lvp_lower_pipeline_layout
Jason Ekstrand [Tue, 10 May 2022 18:29:00 +0000 (13:29 -0500)]
lavapipe: Set images_used in lvp_lower_pipeline_layout

This mirrors what we do for textures.  Also, the current code is busted
because it sets it based on var->data.binding which
lvp_lower_pipeline_layout will change so it can get out-of-sync.

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

2 years agollvmpipe: Fill out samplers even if nr_samplers = 0
Jason Ekstrand [Tue, 10 May 2022 18:33:07 +0000 (13:33 -0500)]
llvmpipe: Fill out samplers even if nr_samplers = 0

Coming in from Vulkan or OpenCL, it's possible for nr_samplers to be
zero if all we ever use is texelFetch().  Annoyingly, samplers and
sampler views are handled by the same function.  Fortunately, it will
work if some of the samplers or sampler views are missing so we can just
pass the maximum.

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

2 years agogallium/draw: Properly handle nr_samplers != nr_sampler_views in keys
Jason Ekstrand [Tue, 10 May 2022 20:58:36 +0000 (15:58 -0500)]
gallium/draw: Properly handle nr_samplers != nr_sampler_views in keys

First, make all key_size functions take nr_samplers and nr_sampler_views
separately so we ensure both get passed in.  Second, rework the offset
helpers to take MAX(nr_samplers, nr_sampler_views) so we get the image
param offset correct if nr_samplers < nr_sampler_views.  While we're
here, also re-order the size calculations to be in the same order as the
things land in memory.

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

2 years agomesa/st: Set samplers_used in lower_tex_src_plane
Jason Ekstrand [Tue, 10 May 2022 16:27:49 +0000 (11:27 -0500)]
mesa/st: Set samplers_used in lower_tex_src_plane

Reviewed-by: Emma Anholt <emma@anholt.net>
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16435>

2 years agottn: Set shader_info::samplers_used
Jason Ekstrand [Tue, 10 May 2022 16:14:37 +0000 (11:14 -0500)]
ttn: Set shader_info::samplers_used

Reviewed-by: Emma Anholt <emma@anholt.net>
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16435>

2 years agogallium: Set shader_info::samplers_used in pstipple_fs
Jason Ekstrand [Tue, 10 May 2022 16:12:18 +0000 (11:12 -0500)]
gallium: Set shader_info::samplers_used in pstipple_fs

Reviewed-by: Emma Anholt <emma@anholt.net>
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16435>

2 years agolavapipe: Set shader_info::samplers_used
Jason Ekstrand [Tue, 10 May 2022 15:52:53 +0000 (10:52 -0500)]
lavapipe: Set shader_info::samplers_used

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

2 years agoclover: Set images/samplers_used when lowering images
Jason Ekstrand [Tue, 10 May 2022 15:00:14 +0000 (10:00 -0500)]
clover: Set images/samplers_used when lowering images

Also, stop using BITSET_SET_RANGE_INSIDE_WORD for textures so we can
handle more than 32 of them.

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

2 years agoturnip: Add a TU_DEBUG=perf debug option.
Emma Anholt [Mon, 18 Apr 2022 17:10:10 +0000 (10:10 -0700)]
turnip: Add a TU_DEBUG=perf debug option.

For doing performance investigation, I often find it useful to have a "are
we tripping over any of our performance TODOs?" flag, so add it and use it
in a few of the TODOs.

This also greatly cleans up the deqp-vk logs.

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

2 years agoradv: Print task shader stage name before disasm.
Timur Kristóf [Thu, 27 Jan 2022 09:08:12 +0000 (10:08 +0100)]
radv: Print task shader stage name before disasm.

Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14929>

2 years agoradv: Lower shared and task_payload variables in task/mesh shaders.
Timur Kristóf [Thu, 27 Jan 2022 09:07:55 +0000 (10:07 +0100)]
radv: Lower shared and task_payload variables in task/mesh shaders.

Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14929>

2 years agoradv: Allow linking task shaders.
Timur Kristóf [Tue, 18 Jan 2022 15:39:10 +0000 (16:39 +0100)]
radv: Allow linking task shaders.

Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14929>

2 years agoradv: Postprocess task shader configuration.
Timur Kristóf [Tue, 18 Jan 2022 15:38:49 +0000 (16:38 +0100)]
radv: Postprocess task shader configuration.

Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14929>

2 years agoradv: Use I/O lowering for task and mesh shaders.
Timur Kristóf [Tue, 8 Feb 2022 10:27:24 +0000 (11:27 +0100)]
radv: Use I/O lowering for task and mesh shaders.

We set the number of task shader ring entries in radv_device
based on the generous assumption that each CU can run task/mesh
shaders with maximum occupancy.

Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14929>

2 years agoradv: Enable nir_opt_offsets for task shaders.
Timur Kristóf [Tue, 18 Jan 2022 15:37:53 +0000 (16:37 +0100)]
radv: Enable nir_opt_offsets for task shaders.

Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14929>

2 years agoradv: Implement task shader intrinsics in the ABI.
Timur Kristóf [Wed, 11 May 2022 10:38:02 +0000 (12:38 +0200)]
radv: Implement task shader intrinsics in the ABI.

Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14929>

2 years agoradv: Add task ring entry argument for mesh shaders.
Timur Kristóf [Mon, 24 Jan 2022 10:33:55 +0000 (11:33 +0100)]
radv: Add task ring entry argument for mesh shaders.

Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14929>

2 years agoradv: Add task shader arguments.
Timur Kristóf [Sun, 23 Jan 2022 17:35:12 +0000 (18:35 +0100)]
radv: Add task shader arguments.

Mostly the same as for compute shaders, but with a few extras:

task_ring_offsets:
Same as what ring_offsets is to graphics shaders.
Contains an address that points to a buffer that contains
the ring buffer descriptors.

task_ring_entry:
Index that can be used to address the draw and payload rings.

draw_id:
Same meaning as in graphics shaders.

task_ib_addr/task_ib_stride:
Indirect buffer address and stride from the draw calls.
These are used to emulate the firstTask feature of NV_mesh_shader.

Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14929>

2 years agoradv: Fill task shader info.
Timur Kristóf [Tue, 18 Jan 2022 15:37:34 +0000 (16:37 +0100)]
radv: Fill task shader info.

Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14929>

2 years agoradv: Set wave size for task shaders.
Timur Kristóf [Tue, 18 Jan 2022 15:37:16 +0000 (16:37 +0100)]
radv: Set wave size for task shaders.

Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14929>

2 years agoradv: Set user data register for task shaders.
Timur Kristóf [Tue, 18 Jan 2022 15:36:42 +0000 (16:36 +0100)]
radv: Set user data register for task shaders.

Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14929>

2 years agoradv: Add radv_pipeline_has_task helper.
Timur Kristóf [Tue, 18 Jan 2022 15:39:53 +0000 (16:39 +0100)]
radv: Add radv_pipeline_has_task helper.

Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14929>

2 years agoac: Add task ring entry shader argument.
Timur Kristóf [Sat, 15 Jan 2022 13:09:12 +0000 (14:09 +0100)]
ac: Add task ring entry shader argument.

This is going to be used by both task and mesh shaders for
accessing the draw and payload ring buffers.

Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14929>

2 years agoac/nir: Add I/O lowering for task and mesh shaders.
Timur Kristóf [Sat, 15 Jan 2022 12:56:13 +0000 (13:56 +0100)]
ac/nir: Add I/O lowering for task and mesh shaders.

Task shaders store their output payload to VRAM where mesh
shaders read from. There are two ring buffers:

1. Draw ring: this is where mesh dispatch sizes and
the ready bit are stored.

2. Payload ring: this is where the optional payload
is stored (up to 16K per task workgroup).

Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14929>

2 years agonir: Mark negative re-distribution on fadd as imprecise
Jason Ekstrand [Tue, 19 Apr 2022 16:05:45 +0000 (11:05 -0500)]
nir: Mark negative re-distribution on fadd as imprecise

Otherwise, it would mutate `fneg(fadd(-0, 0))` into `fadd(0, -0)` which
isn't correct since -0 + (+0) = +0 + (-0) = +0.

This fixes the OpenCL contraction tests on Iris.

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

2 years agoiris: Set BindingTableEntryCount for compute shaders
Jason Ekstrand [Tue, 5 Apr 2022 21:42:55 +0000 (16:42 -0500)]
iris: Set BindingTableEntryCount for compute shaders

This may slightly increase perf somewhere because the hardware can now
pre-cache binding tables.  The real feature is that INTEL_DEBUG=bat now
dumps out surface states for compute.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15759>

2 years agosvga: workaround for unexpected double swizzle
Charmaine Lee [Wed, 11 May 2022 05:23:13 +0000 (22:23 -0700)]
svga: workaround for unexpected double swizzle

SM5 requires swizzles for 64 bits alu source to be either .xyzw,
.xyxy, .zwxy, or .zwzw. If the swizzles are not in the valid pattern,
move the source according to the specified swizzle to a temporary register
first.

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

2 years agopan/bi: Ensure the end NOP isn't eliminated
Alyssa Rosenzweig [Mon, 2 May 2022 19:28:38 +0000 (15:28 -0400)]
pan/bi: Ensure the end NOP isn't eliminated

Otherwise the lowering doesn't work.

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

2 years agopan/bi: Support atomics on Valhall
Alyssa Rosenzweig [Wed, 23 Mar 2022 01:53:20 +0000 (21:53 -0400)]
pan/bi: Support atomics on Valhall

Atomics on Valhall work basically the same as on Bifrost, however the
instruction selection is simplified as there are no clauses. Support the
simplified set of atomic instructions.

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

2 years agopan/bi: Handle shared/scratch on Valhall
Alyssa Rosenzweig [Tue, 22 Mar 2022 23:43:59 +0000 (19:43 -0400)]
pan/bi: Handle shared/scratch on Valhall

There's no .seg modifier, so we have some easy lowering to do ourselves.

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

2 years agopan/bi: Handle shared atomic exchange on Valhall
Alyssa Rosenzweig [Wed, 30 Mar 2022 20:18:06 +0000 (16:18 -0400)]
pan/bi: Handle shared atomic exchange on Valhall

Need to lower the WLS into a segment addition, since the .seg modifier was
dropped on Valhall.

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

2 years agopan/bi: Preserve AXCHG.i32 destination
Alyssa Rosenzweig [Wed, 30 Mar 2022 19:56:41 +0000 (15:56 -0400)]
pan/bi: Preserve AXCHG.i32 destination

dEQP-GLES31.functional.image_load_store.2d.atomic.exchange_r32f_result

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

2 years agopan/bi: Support image loads on Valhall
Alyssa Rosenzweig [Wed, 30 Mar 2022 19:52:22 +0000 (15:52 -0400)]
pan/bi: Support image loads on Valhall

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

2 years agopan/bi: Emit LEA_TEX on Valhall
Alyssa Rosenzweig [Wed, 30 Mar 2022 18:12:06 +0000 (14:12 -0400)]
pan/bi: Emit LEA_TEX on Valhall

As opposed to LEA_ATTR_TEX. In principle we could do this for Bifrost too, but
let's keep the Midgard compatible path for now.

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

2 years agopan/bi: Don't analyze td on Valhall
Alyssa Rosenzweig [Fri, 23 Jul 2021 22:04:24 +0000 (18:04 -0400)]
pan/bi: Don't analyze td on Valhall

The implementation is based on clauses, so it won't work on Valhall.

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

2 years agolavapipe: enable subgroup quad operations
Autumn on Tape [Thu, 5 May 2022 00:45:22 +0000 (17:45 -0700)]
lavapipe: enable subgroup quad operations

Signed-off-by: Autumn on Tape <autumn@cyfox.net>
Acked-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16340>

2 years agomesa: Make sure to fallback to handling the original choose texture format
Corentin Noël [Tue, 10 May 2022 15:23:24 +0000 (17:23 +0200)]
mesa: Make sure to fallback to handling the original choose texture format

It is possible for st_ChooseTextureFormat to return MESA_FORMAT_NONE when
samples is forced to 2. Always allow to fallback to the original case.

Fixes: 89c94502b6650fed222abd3588e9c927811580aa
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/6441
Signed-off-by: Corentin Noël <corentin.noel@collabora.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16432>

2 years agoaco: drop unused radv include
Dave Airlie [Mon, 9 May 2022 01:24:59 +0000 (11:24 +1000)]
aco: drop unused radv include

Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16342>

2 years agoaco: remove radv vs prolog key from aco internals.
Dave Airlie [Thu, 5 May 2022 04:27:01 +0000 (14:27 +1000)]
aco: remove radv vs prolog key from aco internals.

This creates an aco specific key, and converts radv to it.

Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16342>

2 years agoaco/radv: convert to aco shader info at the radv level.
Dave Airlie [Thu, 5 May 2022 03:34:41 +0000 (13:34 +1000)]
aco/radv: convert to aco shader info at the radv level.

This removes the radv shader info type from aco completely.

Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16342>

2 years agoaco/info: add some more fields.
Dave Airlie [Thu, 5 May 2022 02:42:03 +0000 (12:42 +1000)]
aco/info: add some more fields.

These fields are also used in aco.

Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16342>

2 years agoaco: convert vs and so info over to aco structs.
Dave Airlie [Thu, 5 May 2022 02:22:13 +0000 (12:22 +1000)]
aco: convert vs and so info over to aco structs.

This renames the vs to vp (vertex pipeline) on the way past.

Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16342>

2 years agoaco: remove radv specific streamout info
Dave Airlie [Thu, 5 May 2022 02:17:15 +0000 (12:17 +1000)]
aco: remove radv specific streamout info

Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16342>

2 years agoaco/info: reduce the gs ring info to what is needed.
Dave Airlie [Thu, 5 May 2022 02:11:53 +0000 (12:11 +1000)]
aco/info: reduce the gs ring info to what is needed.

Only one member was being used.

Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16342>

2 years agoaco: move to a minimal aco shader info struct.
Dave Airlie [Thu, 5 May 2022 01:51:50 +0000 (11:51 +1000)]
aco: move to a minimal aco shader info struct.

This should be kept to only things aco uses, and expanded when
radeonsi support is added. Things should be removed if lowered in NIR.

Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16342>

2 years agoaco: move info pointer to a copy.
Dave Airlie [Thu, 5 May 2022 01:32:53 +0000 (11:32 +1000)]
aco: move info pointer to a copy.

This is just setup to move this to a different struct later.

Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16342>