Commit graph

2238 commits

Author SHA1 Message Date
Faith Ekstrand
e6f77defec nvk/wsi: Advertise modifier support
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24795>
2024-05-14 04:04:34 +00:00
Faith Ekstrand
cd428e01d7 nvk: Advertise VK_EXT_image_drm_format_modifier
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/9636
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/9480
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24795>
2024-05-14 04:04:34 +00:00
Faith Ekstrand
d8e200c0d9 nvk: Advertise VK_EXT_queue_family_foreign
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24795>
2024-05-14 04:04:34 +00:00
Mohamed Ahmed
bca2f13dd8 nvk: enable rendering to DRM_FORMAT_MOD_LINEAR images
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24795>
2024-05-14 04:04:34 +00:00
Faith Ekstrand
224d9a514a nvk: Implement DRM format modifier queries
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24795>
2024-05-14 04:04:34 +00:00
Faith Ekstrand
4ad79bfef4 nvk: Set tile mode and PTE kind on dedicated dma-buf BOs
This is our compromise to make NVK and nouveau GL play nice when it
comes to modifiers.  The old GL driver depends heavily on the PTE kind
and tile mode, even for images with modifiers.  While it correctly
encodes the PTE kind and tile mode in the modifiers it advertises, it
may ignore the modifier and just trust what's set on the BO when it
imports a dma-buf image.  This is partly because it doesn't support
VM_BIND and partly because of preexisting bugs in the modifiers
implementation.  In either case, we can't fix it retroactively.

To work around this, NVK also sets the PTE kind and tile mode on the BO
when it's a dedicated allocation created for a DRM format modifiers
image.  If DRM format modifiers are used without dedicated allocations,
things may still break but that's getting into vanishingly unlikely
scenarios.

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24795>
2024-05-14 04:04:34 +00:00
Faith Ekstrand
f1fdffa1b2 nvk: Support image creation with modifiers
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24795>
2024-05-14 04:04:34 +00:00
Faith Ekstrand
3bb531d245 nouveau/winsys: Add back nouveau_ws_bo_new_tiled()
This reverts commit ce1cccea98.  In this
new version, we also add a query for whether or not tiled BOs are
supported by nouveau.ko.

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24795>
2024-05-14 04:04:34 +00:00
Faith Ekstrand
8cce121da4 nvk: Allow VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24795>
2024-05-14 04:04:34 +00:00
Mohamed Ahmed
6063f96c61 nil: Support creating images with DRM modifiers
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24795>
2024-05-14 04:04:34 +00:00
Mohamed Ahmed
e1bd4127f3 nil: Add some helpers for DRM format modifiers
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24795>
2024-05-14 04:04:34 +00:00
Faith Ekstrand
b7773f96f9 nil: Default to NV_MMU_PTE_KIND_GENERIC_MEMORY on Turing+
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24795>
2024-05-14 04:04:34 +00:00
Faith Ekstrand
603389f7a3 nvk: Set color/Z compression based on nil_image::compressed
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24795>
2024-05-14 04:04:34 +00:00
Mohamed Ahmed
873a044cb3 nil: Add a nil_image::compressed bit
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24795>
2024-05-14 04:04:34 +00:00
Faith Ekstrand
73c87dbc0c nil: Use the right PTE kind for Z32 pre-Turing
This got lost in the Rust rewrite.

Fixes: 426553d61d ("nil: Re-implement nil_image in Rust")
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24795>
2024-05-14 04:04:34 +00:00
Faith Ekstrand
71d1fa129a nvk: Allow GART for dma-bufs
We also allow dma-bufs to be imported into arbitrary heaps because we
relly don't know where they'll come from.

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24795>
2024-05-14 04:04:34 +00:00
Faith Ekstrand
6cd58de4eb nouveau/winsys: Make BO_LOCAL and BO_GART separate flags
It's sometimes useful to specify both to allow migration.

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24795>
2024-05-14 04:04:34 +00:00
Faith Ekstrand
19b143b7bc nouveau/winsys: Take a reference to BOs found in the cache
Fixes: c370260a8f ("nouveau/winsys: Add dma-buf import support")
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24795>
2024-05-14 04:04:33 +00:00
Faith Ekstrand
d63f015d0b nvk: Improve the GetMemoryFdKHR error
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24795>
2024-05-14 04:04:33 +00:00
Faith Ekstrand
756cbb41a2 nvk: Use the upload queue for NVK_DEBUG=zero_memory
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/10800
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29183>
2024-05-14 03:40:24 +00:00
Faith Ekstrand
22e44d54fd nvk/upload_queue: Add a _fill method
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29183>
2024-05-14 03:40:24 +00:00
Faith Ekstrand
3132a49eb0 nvk/upload_queue: Add some useful asserts
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29183>
2024-05-14 03:40:24 +00:00
Faith Ekstrand
9b098209b9 nvk/upload_queue: Only upload one line of data
This only doesn't blow up beause we set multi_line_enable = FALSE.

Fixes: 2074e28a0d ("nvk: Add an upload queue")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29183>
2024-05-14 03:40:24 +00:00
Mary Guillemard
db2f2ee078 nvk, nak: Wire up conservative rasterization underestimate
bit 611 in SPH actually control underestimate, let's wire that and
expose it.

Signed-off-by: Mary Guillemard <mary.guillemard@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28937>
2024-05-14 00:03:36 +00:00
Arthur Huillet
715f2f1425 nvk: implement VK_EXT_conservative_rasterization
This change is built on top of work originally done by Benjamin Lee.

Implement conservative rasterization on GPUs that support it.  This is done
through a MME method on pre-Volta, and through SET_CONSERVATIVE_RASTER* (newly
published) on more recent GPUs.

primitiveUnderestimation and fullyCoveredFragmentShaderInputVariable will be
supported later as they require SPH and compiler work.

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/9627
Signed-off-by: Arthur Huillet <ahuillet@nvidia.com>
Reviewed-by: Mary Guillemard <mary.guillemard@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28937>
2024-05-14 00:03:36 +00:00
Arthur Huillet
a875598d9e nvk: update 3d classes for conservative raster
Signed-off-by: Arthur Huillet <ahuillet@nvidia.com>
Reviewed-by: Mary Guillemard <mary.guillemard@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28937>
2024-05-14 00:03:36 +00:00
Faith Ekstrand
4842bbb200 nouveau/headers: Add a bool for whether or not to dump offsets
It's occasionally useful to shut them off.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29147>
2024-05-11 04:34:15 +00:00
Faith Ekstrand
99b0117243 nvk: Don't rely on push_dirty for which push sets exist
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29147>
2024-05-11 04:34:15 +00:00
Faith Ekstrand
53737b9d5b nvk: Get rid of sets_dirty
We're not using it for anything

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29147>
2024-05-11 04:34:15 +00:00
Faith Ekstrand
c834644c4e nvk/meta: Restore set_sizes[0]
Fixes: af3e7ba105 ("nvk: Stash descriptor set sizes")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29147>
2024-05-11 04:34:15 +00:00
Faith Ekstrand
a160c2a14e nvk: Re-emit sample locations when rasterization samples changes
We need them for the case where explicit sample locations are not
enabled.  While we're at it, fix the case where rasterization_samples=0.
This can happen when rasterizer discard is enabled.  This fixes MSAA
resolves with NVK+Zink.  In particular, it fixes MSAA for the Unigine
Heaven and Valley benchmark.

This also fixes all of the spec@arb_texture_float@multisample-formats
piglit tests.

Fixes: 41d094c2cc ("nvk: Support dynamic state for enabling sample locations")
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/10786
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29147>
2024-05-11 04:34:15 +00:00
Alyssa Rosenzweig
cd6dfd6c2d nvk: use common stype debug
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Faith Ekstrand <faith.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29009>
2024-05-10 18:49:38 +00:00
Faith Ekstrand
ce2946ae0f vulkan: Set SPIR-V caps from supported features
Any drivers which use vk_spirv_to_nir() now no longer need to build a
caps table manually.

Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Iván Briano <ivan.briano@intel.com>
Acked-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28905>
2024-05-09 01:14:23 +00:00
Faith Ekstrand
c1eaa03904 spirv: Drop the SubgroupUniformControlFlow check
It's just a vtn_fail_if() and there's no actual cap for it.  It's not
really gaining us much to have the check.

Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Iván Briano <ivan.briano@intel.com>
Acked-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28905>
2024-05-09 01:14:22 +00:00
Echo J
928dd386fa nvk: Add sha1_h as a dependency
This should make the NVK build process more reliable

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29080>
2024-05-07 16:29:57 +00:00
Faith Ekstrand
d2e5ff0585 nouveau/headers: Clean up the meson a bit
The classes don't need the _push prefix and the depend files is
pointless since we already include the python script as an input file to
the custom_target().

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29028>
2024-05-07 03:15:02 +00:00
Yusuf Khan
a6036033f0 nouveau/headers: Make nvk_cl**** turn to nv_push_cl****
Signed-off-by: Yusuf Khan <yusisamerican@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29028>
2024-05-07 03:15:02 +00:00
Faith Ekstrand
8a0afd1276 nvk: Advertise VK_EXT_pipeline_robustness
The common pipeline cache implementaiton gives us this for free.

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/9643
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28655>
2024-05-06 22:59:54 +00:00
Faith Ekstrand
cda0d6331b nouveau/class_parser.py: Fix the docs for --out-rs
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28655>
2024-05-06 22:59:54 +00:00
Thomas H.P. Andersen
42ed28a726 nvk: advertise EXT_depth_range_unrestricted
This enables EXT_depth_range_unrestricted from VOLTA_A

Test of dEQP-VK.*depth_range_unrestricted* on TU104 shows:

Test run totals:
  Passed:        14212/14212 (100.0%)
  Failed:        0/14212 (0.0%)
  Not supported: 0/14212 (0.0%)
  Warnings:      0/14212 (0.0%)
  Waived:        0/14212 (0.0%)

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28958>
2024-05-02 20:21:00 +00:00
Faith Ekstrand
5d37a5c7b6 nvk: Only clip Z with the guardband
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28958>
2024-05-02 20:21:00 +00:00
Faith Ekstrand
14d749f13d nak: Don't saturate depth writes
This is unnecessary in Vulkan and prevents unrestricted depth.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28958>
2024-05-02 20:21:00 +00:00
Mary Guillemard
40422927dc nak: Pass has_mod to all form of src2 requiring it
This was missing from the original changes and was causing HFMA2 to
misbehave with an immediate value.

Also fix inverted value passed around for cbuf and ureg forms.

Fixes: bad23ddb48 ("nak: Add F16 and F16v2 sources")
Signed-off-by: Mary Guillemard <mary.guillemard@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28828>
2024-04-25 11:19:00 +00:00
Karol Herbst
d22f936019 nir: remove workgroup_id_zero_base
This removes the need for drivers to handle both versions. The base will
get added once in nir_lower_system_values when converting from deref to
intrinsic and will be replaced by a zero for users not supporting it.

Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Signed-off-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26800>
2024-04-24 20:18:49 +00:00
Yonggang Luo
1de805e986 nouveau: Fixes error: unused import: crate::nvh_classes_cl906f::*
Full error message:
error: unused import: `crate::nvh_classes_cl906f::*`
   --> src/nouveau/headers/lib.rs:184:9
    |
184 | pub use crate::nvh_classes_cl906f::*;
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = note: `-D unused-imports` implied by `-D warnings`
    = help: to override `-D warnings` add `#[allow(unused_imports)]`

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28855>
2024-04-24 06:37:39 +00:00
Samuel Pitoiset
e4f945cd4a vulkan: pass cmdbuf level to vk_command_buffer_ops::create()
RADV needs to know the command buffer level in the create() helper.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28861>
2024-04-23 06:33:31 +00:00
Echo J
d184808124 nvk: Don't advertise residencyAlignedMipSize on MaxwellB+
DXVK/vkd3d-proton require this feature to be advertised as VK_FALSE for FL12 support:
https://github.com/doitsujin/dxvk/blob/v2.3.1/src/d3d11/d3d11_features.cpp#L305
https://github.com/HansKristian-Work/vkd3d-proton/blob/v2.12/libs/vkd3d/device.c#L7426

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28850>
2024-04-22 20:11:49 +00:00
Echo J
be940a7dc6 nvk: Use implicit pipeline cache
Reviewed-by: Faith Ekstrand <faith.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28851>
2024-04-22 14:37:59 -05:00
Faith Ekstrand
59bba821ef nvk: Hash ycbcr conversions in the descriptor set layout hash
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28851>
2024-04-22 14:37:59 -05:00
M Henning
6b22fff658 nvk: Don't use a descriptor cbuf if it's too large
This fixes a test on vkd3d-proton commit 836446ce25
VKD3D_TEST_FILTER=test_typed_buffers_many_objects_dxil build/tests/d3d12

Fixes: f1c909edd5 ("nvk/nir: Add cbuf analysis to nvi_nir_lower_descriptors()")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28844>
2024-04-22 08:45:37 +00:00