Commit graph

1254 commits

Author SHA1 Message Date
Simon Perretta
1c1bc876fb pvr: amend tile buffer size calculation for eot
Fixes: a67120cda3 ("pvr, pco: full support for tile buffer eot handling")
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com>
Acked-by: Frank Binns <frank.binns@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37724>
2025-10-11 20:28:16 +01:00
Simon Perretta
b0609a30b1 pco: improve early and late algebraic pass ordering
Ensures early algebraic passes aren't called again following late
algebraic passes, so that the latter's opts aren't undone (e.g.
unfusing ffmas).

Signed-off-by: Simon Perretta <simon.perretta@imgtec.com>
Acked-by: Frank Binns <frank.binns@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37724>
2025-10-11 20:28:16 +01:00
Simon Perretta
e637d01ef2 pco: tidy and commonize conversion ops
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com>
Acked-by: Frank Binns <frank.binns@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37724>
2025-10-11 20:28:16 +01:00
Simon Perretta
34b4b35ca8 pco: apply rounding mode to relevant conversion ops
The rounding behaviour on [iu]2f32 ops needs to be explicitly set in
order to match the implicit behaviour described in the
KHR_shader_float_controls properties.

Fixes: e306abc6e6 ("pvr: implement KHR_shader_float_controls")
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com>
Acked-by: Frank Binns <frank.binns@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37724>
2025-10-11 20:28:16 +01:00
Ashish Chauhan
1143363a4f pvr: Drop broken driver environment variable check for BXS-4-64
The Imagination PowerVR Vulkan driver is now conformant on BXS-4-64, so drop the
PVR_I_WANT_A_BROKEN_VULKAN_DRIVER runtime check for this GPU. This eliminates
the need for the user to explicitly opt in via an environment variable.

Signed-off-by: Ashish Chauhan <Ashish.Chauhan@imgtec.com>
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37761>
2025-10-10 15:29:04 +00:00
Frank Binns
793abd9741 pvr: advertise VK_EXT_zero_initialize_device_memory
The kernel driver zero initialises device memory allocations for us, so all that
needs to be done is to advertise support for the extension.

Signed-off-by: Frank Binns <frank.binns@imgtec.com>
Reviewed-by: Karmjit Mahil <karmjit.mahil@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37732>
2025-10-08 08:25:20 +01:00
Rhys Perry
0dd09a292b nir: add ACCESS_ATOMIC
This is so that passes and backends can tell if a coherent load/store is
atomic or not, instead of having to assume it could be either.

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Reviewed-by: Georg Lehmann <dadschoorse@gmail.com>
Reviewed-by: Faith Ekstrand <faith.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36602>
2025-10-07 17:41:30 +00:00
Erik Faye-Lund
478e8f11c4 pvr: split out rogue hw-defs to separate folder
This just carves out some space for future architectures in the source
tree.

Reviewed-by: Frank Binns <frank.binns@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37675>
2025-10-06 11:02:04 +02:00
Erik Faye-Lund
88e626b6eb pvr: kill rogue_hwdefs.h
This header is only used in a single place, which will generate macros
based on these definitions. Let's remove the header, and just include
the separate files in pvr_csb.h instead.

Reviewed-by: Frank Binns <frank.binns@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37675>
2025-10-06 11:02:00 +02:00
Erik Faye-Lund
be0c740c73 pvr: include pvr_csb.h first in implementation
This just makes sure the header file is free-standing.

Reviewed-by: Frank Binns <frank.binns@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37675>
2025-10-06 11:01:28 +02:00
Christian Gmeiner
553e4252ba pvr, pco: Set has_f2i32_rtne to true
Set the has_f2i32_rtne shader compiler option to indicate hardware
support for it. This enables NIR's late algebraic optimization pass to
generate more efficient code for float-to-int conversions.

Signed-off-by: Christian Gmeiner <cgmeiner@igalia.com>
Reviewed-by: Simon Perretta <simon.perretta@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37680>
2025-10-03 11:12:44 +02:00
Erik Faye-Lund
84db809e0a pvr: kill off pvr_private.h
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
All useful bits has been moved elsewhere, so let's remove this
mega-header and replace it with more targeted includes instead.

Reviewed-by: Frank Binns <frank.binns@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37432>
2025-10-02 05:34:09 +00:00
Erik Faye-Lund
34e9cb59e3 pvr: avoid including pvr_private.h from headers
This header contains a lot of includes, and gets everywhere. Let's make
sure we don't include it from headers, which makes this much easier to
manage.

Reviewed-by: Frank Binns <frank.binns@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37432>
2025-10-02 05:34:09 +00:00
Erik Faye-Lund
93d00bdbc1 pvr: break out macros to separate header
Reviewed-by: Frank Binns <frank.binns@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37432>
2025-10-02 05:34:09 +00:00
Erik Faye-Lund
a68d22b6ad pvr: break out wsi to separate header
Reviewed-by: Frank Binns <frank.binns@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37432>
2025-10-02 05:34:09 +00:00
Erik Faye-Lund
73a50e12cd pvr: break out descriptor sets to separate header
Reviewed-by: Frank Binns <frank.binns@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37432>
2025-10-02 05:34:08 +00:00
Erik Faye-Lund
bedb90a67e pvr: break out pipelines to separate header
Reviewed-by: Frank Binns <frank.binns@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37432>
2025-10-02 05:34:08 +00:00
Erik Faye-Lund
b51fac6212 pvr: break out queries to separate header
Reviewed-by: Frank Binns <frank.binns@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37432>
2025-10-02 05:34:07 +00:00
Erik Faye-Lund
9d2478d353 pvr: break out cmd-buffer to separate header
Reviewed-by: Frank Binns <frank.binns@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37432>
2025-10-02 05:34:07 +00:00
Erik Faye-Lund
8c043e651d pvr: break out render-pass to separate headers
To avoid some circular dependencies due to pvr_private.h, split out
pvr_framebuffer etc into their own header.

We often only need to peek into the framebuffer, so this seems like a
good idea anyway. We can reconsider this once dynamic rendering has
landed, and we know how much remains here.

Reviewed-by: Frank Binns <frank.binns@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37432>
2025-10-02 05:34:06 +00:00
Erik Faye-Lund
87193fc6ce pvr: break out buffer to separate header
Reviewed-by: Frank Binns <frank.binns@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37432>
2025-10-02 05:34:06 +00:00
Erik Faye-Lund
e0d9effa7a pvr: break out image to separate header
Reviewed-by: Frank Binns <frank.binns@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37432>
2025-10-02 05:34:05 +00:00
Erik Faye-Lund
0cf8839a3d pvr: break out instance/device to separate header
Reviewed-by: Frank Binns <frank.binns@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37432>
2025-10-02 05:34:05 +00:00
Erik Faye-Lund
af431e7495 pvr: break out queue to separate header
Reviewed-by: Frank Binns <frank.binns@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37432>
2025-10-02 05:34:04 +00:00
Erik Faye-Lund
dd296e0543 pvr: move pvr_pds_upload to pvr_common.h
This is used in a lot of places in the driver, and doesn't naturally
belong in any of the smaller modules that we're about to introduce.

Reviewed-by: Frank Binns <frank.binns@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37432>
2025-10-02 05:34:03 +00:00
Simon Perretta
61a9c4f63d pvr, pco: add primitive support for terminate,demote_to_helper}_invocation
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com>
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37512>
2025-09-30 12:15:54 +00:00
Simon Perretta
a1acd6f8d1 pvr, pco: add primitive support for VK_KHR_robustness2.nullDescriptor
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com>
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37512>
2025-09-30 12:15:54 +00:00
Simon Perretta
2a7ebf2ae0 nir/lower_alpha: extend to support dynamic a2c
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com>
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37512>
2025-09-30 12:15:53 +00:00
Simon Perretta
63c4ecfae0 pvr, pco: add remaining support for eds2 & 3
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com>
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37512>
2025-09-30 12:15:53 +00:00
James Fitzpatrick
17468aee4b pvr: add support for (EXT|KHR)_line_rasterization
Signed-off-by: James Fitzpatrick <james.fitzpatrick@imgtec.com>
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37512>
2025-09-30 12:15:52 +00:00
James Fitzpatrick
7e11ec20e4 pvr: update WClamp value to 1.0e-13f
Signed-off-by: James Fitzpatrick <james.fitzpatrick@imgtec.com>
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37512>
2025-09-30 12:15:52 +00:00
Luigi Santivetti
a48857be7b pvr: propagate image samples when doing a blit from DS surface
Enabling DS resolve attachment entails a blit for a ZLS subtile region, in such
case the TQ needs to know the number of samples in the source surface in order to
pack the texture state.

Signed-off-by: Luigi Santivetti <luigi.santivetti@imgtec.com>
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37512>
2025-09-30 12:15:51 +00:00
leonperianu
9ab273f5ab pvr: add support for VK_KHR_depth_stencil_resolve
This commit enables the VK_KHR_depth_stencil_resolve extension in the PVR
Vulkan driver. Only worth to note that this implementation is based on the
renderpass driver path and it will need a rework as part of the dynamic
rendering enablement.

Signed-off-by: leonperianu <leon.perianu@imgtec.com>
Co-authored-by: Luigi Santivetti <luigi.santivetti@imgtec.com>
Co-authored-by: Ashish Chauhan <ashish.chauhan@imgtec.com>
Co-authored-by: Simon Perretta <simon.perretta@imgtec.com>
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37512>
2025-09-30 12:15:51 +00:00
Luigi Santivetti
6c4883bc9d pvr: restrict the scope of copy_{buffer,image}_to_{image,buffer}
Do not conflate api and internal driver use of copy commands and make the
correct assumptions for the api path, according to the Vulkan spec.

Signed-off-by: Luigi Santivetti <luigi.santivetti@imgtec.com>
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37512>
2025-09-30 12:15:51 +00:00
Luigi Santivetti
2c2fdac093 pvr: improve unemitted resolve attachments readability
Signed-off-by: Luigi Santivetti <luigi.santivetti@imgtec.com>
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37512>
2025-09-30 12:15:51 +00:00
Frank Binns
2e97daec67 pvr: setup Vulkan 1.1 & 1.2 features, properties, version
Signed-off-by: Frank Binns <frank.binns@imgtec.com>
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37512>
2025-09-30 12:15:50 +00:00
Frank Binns
b1cb11337a pvr: advertise KHR_spirv_1_4
Signed-off-by: Frank Binns <frank.binns@imgtec.com>
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37512>
2025-09-30 12:15:50 +00:00
Simon Perretta
27b329eea3 pvr: add support for VK_KHR_shader_draw_parameters, drawIndirectFirstInstance
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com>
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37512>
2025-09-30 12:15:49 +00:00
Simon Perretta
0134e86375 pco: set lower_device_index_to_zero
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com>
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37512>
2025-09-30 12:15:49 +00:00
Frank Binns
80609b35e1 pvr: advertise KHR_shader_subgroup_extended_types
Signed-off-by: Frank Binns <frank.binns@imgtec.com>
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37512>
2025-09-30 12:15:49 +00:00
Simon Perretta
bd96981cad pvr, pco: add minimal support required for Vulkan 1.2 subgroups
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com>
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37512>
2025-09-30 12:15:48 +00:00
Simon Perretta
6dc5e1e109 pco: fully support Vulkan 1.2 image atomics
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com>
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37512>
2025-09-30 12:15:48 +00:00
Simon Perretta
08e3740e07 pvr, pco: support imageCubeArray feature
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com>
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37512>
2025-09-30 12:15:47 +00:00
Simon Perretta
339ba75014 pco: treat all load_consts as 32-bit
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com>
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37512>
2025-09-30 12:15:47 +00:00
Frank Binns
c0df962fa0 pvr: enable KHR_create_renderpass2
The driver already implements the regular render pass functions in terms of the
VK_KHR_create_renderpass2 functions. However, the extension couldn't be
advertised due to missing support for VK_KHR_multiview. Now multiview is
supported, renderpass2 can be advertised as well.

Signed-off-by: Frank Binns <frank.binns@imgtec.com>
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37512>
2025-09-30 12:15:46 +00:00
Simon Perretta
cb6c921502 pvr, pco: add multiview compiler support, advertise extension
- Pass view index to fragment shader via linked flat varying.
- Use view index instead of layer id for input attachments when required.

Signed-off-by: Simon Perretta <simon.perretta@imgtec.com>
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37512>
2025-09-30 12:15:46 +00:00
Peter Quayle
9d48088428 pvr: add view index support for vertex shaders
Signed-off-by: Peter Quayle <peter.quayle@imgtec.com>
Co-authored-by: Simon Perretta <simon.perretta@imgtec.com>
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37512>
2025-09-30 12:15:46 +00:00
Peter Quayle
93c7f0f9c0 pvr: various multiview fixes
- Fix ds address offset for multiview.
- Fix multiview depth/stencil address by restoring it after every kick.
- Enable empty tile processing after first subpass for multiview.

Signed-off-by: Peter Quayle <peter.quayle@imgtec.com>
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37512>
2025-09-30 12:15:45 +00:00
Luigi Santivetti
a1002a6673 pvr: add initial driver support for VK_KHR_multiview
Signed-off-by: Luigi Santivetti <luigi.santivetti@imgtec.com>
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37512>
2025-09-30 12:15:45 +00:00
Lewis Cooper
8eb26e4986 pvr: Implement VK_KHR_dedicated_allocation
Signed-off-by: Lewis Cooper <lewis.cooper@imgtec.com>
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37512>
2025-09-30 12:15:44 +00:00