Mike Blumenkrantz
ba30adce07
radv: add a gfx10 bug workaround for NOT_EOP
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11532 >
2021-07-06 13:16:56 +00:00
Mike Blumenkrantz
d9132fcb50
radv: split indexed draw cases based on whether drawid is used
...
fewer conditionals in the draw loop = less overhead
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11532 >
2021-07-06 13:16:56 +00:00
Mike Blumenkrantz
5aaf45f5e1
radv: determine if hardware can emit NOT_EOP before emitting
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11532 >
2021-07-06 13:16:56 +00:00
Mike Blumenkrantz
d28329ed02
radv: emit drawid for multidraws
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11532 >
2021-07-06 13:16:56 +00:00
Mike Blumenkrantz
00206b1664
radv: emit NOT_EOP for multi indexed draws
...
this is never emitted currently because drawCount is always 1
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11532 >
2021-07-06 13:16:56 +00:00
Mike Blumenkrantz
72e75092a9
radv: use multidraw iteration for direct draws
...
there's still no arrays of draw info being passed, but this takes care of
all the work for it
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11532 >
2021-07-06 13:16:56 +00:00
Rhys Perry
307a4bf4ab
radv: use null vertex descriptor if num_records=0
...
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11642 >
2021-07-06 13:00:35 +00:00
Rhys Perry
a2ac660eb7
radv: adjust num_records when offset>stride
...
If an attribute's offset is larger than the stride, the compiler will
increase the vertex index and use offset%stride instead as the offset.
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/5007
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11642 >
2021-07-06 13:00:35 +00:00
Rhys Perry
e4fbb200fc
radv: don't ever convert num_records to bytes if it's zero
...
If num_records==0, this conversion doesn't work. We should just keep it at
zero.
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Gitlab: https://gitlab.freedesktop.org/mesa/mesa/-/issues/5007
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11642 >
2021-07-06 13:00:35 +00:00
Bas Nieuwenhuizen
406c87b779
radv: Support address capture and replay.
...
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10570 >
2021-07-05 17:27:51 +00:00
Bas Nieuwenhuizen
f9cc94af7b
radv/winsys: Add support for a fixed VA address for replay.
...
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10570 >
2021-07-05 17:27:51 +00:00
Bas Nieuwenhuizen
8025b4120f
radv/winsys: Return vulkan errors for buffer creation.
...
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10570 >
2021-07-05 17:27:51 +00:00
Samuel Pitoiset
e58ab64223
radv: allow more fast clears for depth surfaces without TC-compat HTILE
...
With HTILE only, all values between 0.0 and 1.0 are fetchable.
This should allow more fast clears for depth surfaces where
TC-compat HTILE is disabled.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10035 >
2021-07-02 13:23:38 +02:00
Samuel Pitoiset
269795c838
radv: prevent fast clearing HTILE depth for unrestricted ranges
...
VK_EXT_depth_range_unrestricted removes the restriction that the
clear value must be between 0.0 and 1.0.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10035 >
2021-07-02 13:23:36 +02:00
Samuel Pitoiset
0cfeb93751
radv: add support for more HTILE clear codes
...
The HTILE clear code is now computed based on the floating point value.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10035 >
2021-07-02 13:23:32 +02:00
Samuel Pitoiset
764960e16d
radv: advertise VK_EXT_color_write_enable
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11530 >
2021-07-02 10:02:02 +00:00
Samuel Pitoiset
9a95aba377
radv: implement VK_EXT_color_write_enable
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11530 >
2021-07-02 10:02:02 +00:00
Samuel Pitoiset
28e1b02a6f
radv: disable DCC for DOOM 2016 and Wolfenstein II
...
Both games perform two image layout transitions with the same image
in the same pipeline barrier with UNDEFINED and this re-initializes
DCC to the uncompressed state. No ideal solution sadly. Note that
both games declare all images as CONCURRENT.
This fixes rendering issues on GFX10+ because DCC for stores is
supported and this implicitly enables DCC for concurrent.
Fixes: da166f648f ("radv: enable DCC for concurrent images on GFX10")
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/4927
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/4607
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11656 >
2021-07-01 11:09:22 +00:00
Rhys Perry
ed123a03be
radv: enable VK_KHR_shader_subgroup_uniform_control_flow
...
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11626 >
2021-07-01 10:01:52 +00:00
Mike Blumenkrantz
c0397a42ce
radv: pre-calc vertex buffer descriptor size on pipeline object
...
util_bitcount has a nonzero cost, and calling it like this in a hotpath
generates unnecessary overhead
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11525 >
2021-06-30 13:42:42 +00:00
Samuel Pitoiset
2019014df9
radv: fix fd leak in vkAcquireImageANDROID()
...
Copied from ANV.
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/4915
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11518 >
2021-06-30 08:14:03 +02:00
Samuel Pitoiset
4a031a01ba
radv: fix RADV_FORCE_VRS for 2x1 and 1x2
...
The rates were inverted.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11578 >
2021-06-29 12:47:49 +02:00
Ishi Tatsuyuki
4f959e368c
radv: ignore redundant variable descriptor counts (v2)
...
The Vulkan specification says: "If VkDescriptorSetAllocateInfo::pSetLayouts[i]
does not include a variable count descriptor binding, then
pDescriptorCounts[i] is ignored". The previous code triggered an assertion
in such cases, and this patch fixes it.
v2: removed the offending assertion that is now always satisfied and
reworded the commit message with a reference to Vulkan spec.
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/4992
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11576 >
2021-06-29 09:29:40 +00:00
Matt Turner
ed77bf3c4e
ci: Unify on MESA_VK_IGNORE_CONFORMANCE_WARNING
...
Move and rename warn_non_conformant_implementation() to common location
of src/vulkan/util/vk_util.c as vk_warn_non_conformant_implementation().
In freedreno/ci, move MESA_VK_IGNORE_CONFORMANCE_WARNING to common
location of .baremetal-deqp-test-freedreno-vk.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11563 >
2021-06-25 19:45:38 +00:00
Simon Zeni
2fe2eb1911
radv: Implement VK_EXT_acquire_drm_display
...
Signed-off-by: Simon Zeni <simon@bl4ckb0ne.ca >
Reviewed-by: Simon Ser <contact@emersion.fr >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11014 >
2021-06-24 15:48:38 +00:00
Samuel Pitoiset
8c968b8301
radv: advertise extendedDynamicState2LogicOp
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10880 >
2021-06-22 15:32:31 +00:00
Samuel Pitoiset
8efa897168
radv: implement dynamic logic op
...
This is part of VK_EXT_extended_dynamic_state2.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10880 >
2021-06-22 15:32:31 +00:00
Timur Kristóf
25314996d0
radv/llvm: Emit s_barrier at the beginning of NGG non-GS shaders.
...
This is to fix a hang that can potentially happen when not every
wave had launched when a gs_alloc_req is executed.
Cc: mesa-stable
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com >
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10837 >
2021-06-22 14:32:27 +00:00
Simon Ser
7aaa54feb5
radv: implement VK_EXT_physical_device_drm
...
This adds support for the Vulkan extension introduced in [1]. The
extension allows to get a VkPhysicalDevice's DRM node device IDs.
[1]: https://github.com/KhronosGroup/Vulkan-Docs/pull/1356
Signed-off-by: Simon Ser <contact@emersion.fr >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8390 >
2021-06-22 13:18:18 +00:00
Charlie Turner
e9991d5ff1
radv: Provide a toggle to avoid warnings about unsupported devices.
...
In the CI, we have such devices, and this message is printed many
hundreds of times. This results in a useless spam which makes it
difficult to see real issues.
v2 from Martin:
- Reword the commit message a bit
- Add a SoB
Signed-off-by: Martin Peres <martin.peres@mupuf.org >
Reviewed-by: Eric Engestrom <eric@engestrom.ch >
Acked-by: Andres Gomez <agomez@igalia.com >
Acked-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com >
Acked-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11491 >
2021-06-22 13:59:43 +03:00
Rhys Perry
1e508777b4
radv: allow VK_FORMAT_R8G8_SRGB sampling
...
No reason why we can't do this. AMDVLK also allows this.
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11317 >
2021-06-21 18:17:09 +00:00
Rhys Perry
ea68d4a676
nir/propagate_invariant: add invariant_prim option
...
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com >
Reviewed-by: Alyssa Rosenzweig <alyssa@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11035 >
2021-06-21 15:13:05 +00:00
Bas Nieuwenhuizen
a99474fae5
radv: Add -Wpointer-arith.
...
Gives earlier indications of MSVC issues.
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11478 >
2021-06-21 09:32:00 +00:00
Bas Nieuwenhuizen
82de184c3a
radv: Enable VK_KHR_acceleration_structure with RADV_PERFTEST=rt.
...
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11078 >
2021-06-18 22:16:27 +00:00
Bas Nieuwenhuizen
c27e3a6248
radv: Add rt perftest flag.
...
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11078 >
2021-06-18 22:16:27 +00:00
Bas Nieuwenhuizen
438cb7f9a3
radv: Expose formats for acceleration structure.
...
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11078 >
2021-06-18 22:16:27 +00:00
Bas Nieuwenhuizen
9920eadf83
radv: Implement load_vulkan_descriptor for acceleration structures.
...
It always uses nir_address_format_64bit_global.
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11078 >
2021-06-18 22:16:27 +00:00
Bas Nieuwenhuizen
85e39cb325
radv: Convert lower_intrinsics to a switch statement
...
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11078 >
2021-06-18 22:16:27 +00:00
Bas Nieuwenhuizen
a4b3ce5d56
radv: Add acceleration structure descriptor set support.
...
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11078 >
2021-06-18 22:16:27 +00:00
Bas Nieuwenhuizen
0dad88b469
radv: Implement device-side BVH building.
...
Same naive algorithm as the host build.
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11078 >
2021-06-18 22:16:27 +00:00
Bas Nieuwenhuizen
d51a4b4c4b
radv: Add initial CPU BVH building.
...
The algorithm used for the BVH:
1) first create 1 leaf per primitive (triangle/aabb/instance)
2) Then create internal layers from the bottom up until we are left with
1 node in the top layer. Node i in the layer will have children
(i*4+0) ... (i*4+3) in the previous layer.
This results in a very naive algorithm but it is also very simple to implement.
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11078 >
2021-06-18 22:16:27 +00:00
Bas Nieuwenhuizen
67e949a8f8
radv: Use the global BO list for acceleration structures.
...
We have nested structures so tracking this from the descriptor
set is going to be a mess.
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11078 >
2021-06-18 22:16:27 +00:00
Samuel Pitoiset
977355c6e5
radv: fix dynamic culling and depth/stencil related dynamic states
...
To avoid overwriting previous dynamic state with default state from
the pipeline.
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/4926
Cc: 21.1 mesa-stable
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11375 >
2021-06-18 16:27:57 +00:00
Mike Blumenkrantz
651c6b16ff
radv: move pipe_misaligned and l2_coherent image checks to flags set on init
...
this should save 4-5% cpu in some cases
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11462 >
2021-06-18 16:02:26 +00:00
Samuel Pitoiset
60348360a2
radv: create only one pipeline for decompressing depth/stencil images
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11263 >
2021-06-18 14:15:30 +02:00
Samuel Pitoiset
213c4c5f44
radv: always decompress both aspects of a depth/stencil image
...
If compressed rendering is only used for the depth aspect of a
depth/stencil image, stencil might also be compressed and it needs
to be decompressed. This only happens for non-TC compatible images.
As long as the driver needs to decompress the depth aspect, I don't
think that decompressing the stencil aspect introduces extra cost.
Fixes dEQP-VK.renderpass*late_fragment_tests*.d32_sfloat_s8_uint for
chips that don't support TC-compat HTILE.
Cc: 21.1 mesa-stable
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11263 >
2021-06-18 14:15:30 +02:00
Samuel Pitoiset
50233d0daa
radv: reject binding buffer/image when the device memory is too small
...
From the Vulkan spec 1.2.181:
"The difference of the size of memory and memoryOffset must be
greater than or equal to the size member of the
VkMemoryRequirements structure returned from a call to
vkGetImageMemoryRequirements with the same image"
This is invalid usage but adding a check in the driver is safe and
might avoid spurious failures.
This is a workaround for the inventory GPU hang with Cyberpunk 2077
which is actually a game bug. Luckily the game handles this error
gracefully.
Since the addrlib change from March, addrlib now selects a better
swizzle mode (4KB instead of 64KB) which reduces image size. Though,
the game assumes that an image with 2 mips is always smaller than the
same image but with 6 mips. This is not always true if the swizzle mode
is different. Then, it creates a D312 heap that is too small for the 2
mips image and the GPU hang with a memory violation, ugh...
Note that next vkd3d-proton release should also reject this but
fixing both sides is fine.
Cc: 21.1 mesa-stable
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/4823
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/4593
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11448 >
2021-06-18 08:04:29 +00:00
Yiwei Zhang
ec1968dcc9
radv: fix build errors after commit 8b7ff784
...
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org >
Reviewed-by: Roman Stratiienko <r.stratiienko@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11373 >
2021-06-16 19:55:48 +00:00
Samuel Pitoiset
16d5939ff5
radv: fix dynamic rasterizer discard enable state
...
If a pipeline enables rasterizerDiscardEnable statically we have to
properly initialize the value, otherwise it won't be updated when a
new pipeline is bound.
Fixes few dEQP-VK.pipeline.extended_dynamic_state.*disable_raster.
Fixes: dd19bf9d7d ("radv: implement dynamic rasterizer discard enable")
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11242 >
2021-06-14 16:31:14 +00:00
Samuel Pitoiset
44e7057304
radv/winsys: remove useless errno.h includes
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11269 >
2021-06-14 15:52:48 +02:00