Jesse Natalie
8875a2fb25
d3d12: Compute transform UBO0 is actually binding 1
...
Since lower_uniforms_to_ubo will unconditionally increment UBO indices
from 0 to 1.
Reviewed-by: Sil Vilerino <sivileri@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14787 >
2022-01-31 13:32:10 -08:00
Jesse Natalie
317c870f0f
d3d12: Implement DrawAuto aka DrawTransformFeedback
...
Reviewed-by: Sil Vilerino <sivileri@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14787 >
2022-01-31 13:32:02 -08:00
Jesse Natalie
7009d23865
d3d12: Move "fake" SO buffer handling to compute transforms instead of CPU readback
...
Reviewed-by: Sil Vilerino <sivileri@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14787 >
2022-01-31 13:31:41 -08:00
Jesse Natalie
c1b52d8c3a
d3d12: Move compute transform state save/restore to compute_transforms.cpp
...
Reviewed-by: Sil Vilerino <sivileri@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14787 >
2022-01-31 13:31:22 -08:00
Jesse Natalie
2668eb8089
d3d12: Add a compute transform for draw auto
...
Reviewed-by: Sil Vilerino <sivileri@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14787 >
2022-01-31 13:31:22 -08:00
Jesse Natalie
371d237ba5
d3d12: Add a couple compute transforms for "fake" SO buffers
...
This solves 2 problems with the CPU readback we're doing for this now:
1. It's not on the CPU
2. It handles gaps, leaving the destination buffer intact in those gaps
Reviewed-by: Sil Vilerino <sivileri@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14787 >
2022-01-31 13:31:22 -08:00
Jesse Natalie
57f6eeb3fb
d3d12: Add a comment for what the existing compute transform does
...
Reviewed-by: Sil Vilerino <sivileri@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14787 >
2022-01-31 13:31:21 -08:00
Jesse Natalie
396205b0d6
d3d12: SO buffer filled size is only 32-bit
...
Reviewed-by: Sil Vilerino <sivileri@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14787 >
2022-01-31 13:31:19 -08:00
Jesse Natalie
5f48e6d7a2
d3d12: Move indirect compute to real indirect dispatches
...
Reviewed-by: Sil Vilerino <sivileri@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14787 >
2022-01-31 13:30:49 -08:00
Jesse Natalie
cab0ed52e8
d3d12: Support transform feedback pause/resume
...
Don't unconditionally reallocate/zero the fill buffer count, only
when a specific value is to be assigned.
Reviewed-by: Sil Vilerino <sivileri@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14787 >
2022-01-31 13:30:45 -08:00
Jesse Natalie
b2aa21362d
d3d12: Include SO buffer count as a PSO dirty bit
...
ctx->gfx_pipeline_state::num_so_targets is used when compiling PSOs,
so make sure that changes to that value result in PSO recompiles.
Reviewed-by: Sil Vilerino <sivileri@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14787 >
2022-01-31 13:13:43 -08:00
Jesse Natalie
1d43e75228
d3d12: Add UAV barriers for UAVs that are being used by compute transforms
...
If an indirect arg buffer is being produced by a compute shader, then when
we go to consume it as an SSBO in a compute transform pass, we need to insert
a UAV barrier to prevent the two dispatches from overlapping. For app dispatches,
this is the app's responsibility via explicit barrier APIs, and if they don't,
then they're allowed to overlap.
Reviewed-by: Sil Vilerino <sivileri@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14787 >
2022-01-31 13:13:33 -08:00
Jesse Natalie
31aaf92b7d
d3d12: Fix compute transform for multi-draw indirect with dynamic count + state vars
...
NIR validation will complain on the UBO range not being set.
Fixes: 3a8c8d25 ("d3d12: Add a compute transformation to handle indirect draws that need draw params")
Reviewed-by: Sil Vilerino <sivileri@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14787 >
2022-01-31 13:13:22 -08:00
Jesse Natalie
2d4ee41df0
microsoft/compiler: Fix UAV resource ID counting for static indexed handles
...
Skip resource space 2 after computing the ID it would've used.
Fixes: e5f353f2 ("microsoft/compiler: Emit statically-indexed resource handles and scratch later")
Reviewed-by: Sil Vilerino <sivileri@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14787 >
2022-01-31 13:13:12 -08:00
Mike Blumenkrantz
6f38ea4ac7
zink: use SpvScopeDevice over SpvScopeWorkgroup for atomic shader ops
...
Workgroup is only allowed in compute shaders, and Device should be more
in line with the intended use here
the alternative would be to keep using Workgroup for compute and use Device
otherwise, but this would effectively make atomic ops non-atomic, which seems
like it isn't desirable
cc: mesa-stable
Reviewed-by: Dave Airlie <airlied@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14690 >
2022-01-31 20:34:07 +00:00
Mike Blumenkrantz
2361c52b5e
zink: cast image atomic op params/results based on image type
...
according to spec, these must match the texel pointer type
cc: mesa-stable
fixes (nvidia):
dEQP-GLES31.functional.image_load_store.2d.atomic.exchange_r32f_return_value
dEQP-GLES31.functional.image_load_store.2d_array.atomic.exchange_r32f_return_value
dEQP-GLES31.functional.image_load_store.cube.atomic.exchange_r32f_return_value
Reviewed-by: Dave Airlie <airlied@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14690 >
2022-01-31 20:34:07 +00:00
Mike Blumenkrantz
58e201c66e
zink: add warning printf for drivers missing VK_EXT_shader_atomic_float
...
Reviewed-by: Dave Airlie <airlied@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14690 >
2022-01-31 20:34:07 +00:00
Mike Blumenkrantz
7e8d609f6e
zink: enable VK_EXT_shader_atomic_float
...
this is needed for atomic ops, but we can let drivers that don't support
it have some warning messages instead of gating features
Reviewed-by: Dave Airlie <airlied@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14690 >
2022-01-31 20:34:07 +00:00
Mike Blumenkrantz
8e97f51c67
zink: handle swizzled offset/count values for shader bitfield ops
...
glsl/nir automatically swizzle the value if a vecN is being used, but spirv
requires a single scalar, so this has to be detected and unswizzled to avoid
violating spec and crashing shader compilers that are less permissive than mesa's
fixes (nvidia):
dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract*
KHR-GL46.shader_bitfield_operation.bitfieldExtract*
Reviewed-by: Dave Airlie <airlied@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14690 >
2022-01-31 20:34:07 +00:00
Boris Brezillon
11e2c4b502
microsoft/spirv_to_dxil: Define idep_libspirv_to_dxil
...
So we can re-use it when we need to define a dependency on spirv_to_dxil.
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com >
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14765 >
2022-01-31 20:21:25 +00:00
Boris Brezillon
ef47a6800b
microsoft/spirv_to_dxil: Make sure the SampleMask is a uint
...
DXIL doesn't like when SV_Coverage (AKA SampleMask in DXIL) is a
signed integer. Fix the type while we're in the NIR domain.
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com >
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14765 >
2022-01-31 20:21:25 +00:00
Boris Brezillon
7e56d8c393
microsoft/spirv_to_dxil: Lower atomics to their dxil variants
...
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com >
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14765 >
2022-01-31 20:21:25 +00:00
Boris Brezillon
c2eeba04c3
microsoft/spirv_to_dxil: Discard PSIZ accesses
...
D3D12 doesn't support gl_PointSize, so let's consider PointSize is
always 1.0 and discard any PointSize access.
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com >
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14765 >
2022-01-31 20:21:25 +00:00
Louis-Francis Ratté-Boulianne
5cd2bf837d
microsoft/spirv_to_dxil: Allow passing a vulkan -> d3d12 binding mapping table
...
Vulkan bindings take only one slot per variable, but d3d12 ones take one
slot per entry when the variable is an array. This forces us to pass
an explicit vulkan -> d3d12 mapping table when dealing with vulkan
shaders.
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14765 >
2022-01-31 20:21:25 +00:00
Louis-Francis Ratté-Boulianne
de1e941c59
microsoft/spirv_to_dxil: Lower push constant loads to UBO loads
...
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14765 >
2022-01-31 20:21:25 +00:00
Louis-Francis Ratté-Boulianne
d11a417ded
microsoft/spirv_to_dxil: lower input attachments
...
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14765 >
2022-01-31 20:21:25 +00:00
Louis-Francis Ratté-Boulianne
e65303c6e6
microsoft/spirv_to_dxil: check for variables r/w access
...
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14765 >
2022-01-31 20:21:25 +00:00
Boris Brezillon
39592f8ad4
microsoft/spirv_to_dxil: Support [un]conditional YZ-flip
...
The unconditional Y-flip is needed for Vulkan 1.0 since D3D12 and
Vulkan coordinate systems differ. Conditional YZ-flip is needed if
we want to support negative viewport height/depth.
Prepare spirv_to_dxil() to support that, and while at it, prepare
things for multi-viewport: the Y/Z flips are per-viewport and encoded
in a 32bit bitmask, with the upper 16bits reserved for Z flips, and the
lower 16bits reserved for Y flips.
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com >
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14765 >
2022-01-31 20:21:25 +00:00
Boris Brezillon
225867684a
microsoft/spirv_to_dxil: Allow dumping NIR
...
Dumping NIR shaders is a useful debug feature. Let's tweak the
spirv_to_nir() helper so we can pass debugging options and
add one to allow dumping NIR.
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com >
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14765 >
2022-01-31 20:21:25 +00:00
Boris Brezillon
27790c4a7a
microsoft/spirv_to_dxil: Remove dead variables after the struct split pass
...
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com >
Reviewed-by: Jesse Natalie <jenatali@microsoft.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14765 >
2022-01-31 20:21:25 +00:00
Jason Ekstrand
d85a9d658f
anv/image: Call into WSI to create swapchain images
...
This guarantees that we get an image that's created with exactly the
swapchain image creation parameters instead of trying to emulate it
inside the driver. Ideally, we'd use the fancy new bind helper too but
our magic ANV_IMAGE_MEMORY_BINDING_PRIVATE gets in the way and we really
do want to re-bind ourself.
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12031 >
2022-01-31 19:46:55 +00:00
Jason Ekstrand
a2e986b6d9
anv/image: Add some asserts when binding swapchain images
...
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12031 >
2022-01-31 19:46:55 +00:00
Jason Ekstrand
27042d135e
vulkan/wsi: Add image create and bind helpers
...
These are needed to properly implement the Vulkan 1.1 swapchain image
create/bind functionality.
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12031 >
2022-01-31 19:46:55 +00:00
Jason Ekstrand
ca791f5c5d
wsi/common: Set VK_IMAGE_CREATE_ALIAS_BIT
...
With Vulkan 1.1, we have a VkImageSwapchainCreateInfoKHR struct which
lets you create a new VkImage which aliases a swapchain image. However,
there is no corresponding swapchain create flag so we have to set
VK_IMAGE_CREATE_ALIAS_BIT all the time.
We need to do a bit of work in ANV to prevent it from asserting the
moment it sees one of these. Fortunately, they're already safe because
WSI images go through a different bind path for
VkBindImageMemorySwapchainInfoKHR.
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12031 >
2022-01-31 19:46:55 +00:00
Jason Ekstrand
1abab1a28f
vulkan/wsi/drm: Drop wsi_create_native/prime_image
...
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12031 >
2022-01-31 19:46:55 +00:00
Jason Ekstrand
ed391d2a46
vulkan/wsi/win32: Break create_win32_image in pieces
...
This is similar to the previous two commits that we did for DRM native
images. It breaks it into configure/create/bind and calls
wsi_create_image to walk through the three-step process.
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12031 >
2022-01-31 19:46:55 +00:00
Jason Ekstrand
d7ad73d6b7
vulkan/wsi/win32: Delete unnecessary copy+paste from DRM
...
The Win32 WSI just does a copy into the window on the CPU. There's no
need for external memory or modifiers or implicit sync or any of that.
While we're at it, rename to create_win32_image.
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12031 >
2022-01-31 19:46:55 +00:00
Jason Ekstrand
d95e3fd98c
vulkan/wsi/display: Split image creation
...
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12031 >
2022-01-31 19:46:55 +00:00
Jason Ekstrand
b626a5be43
vulkan/wsi/wayland: Split image creation
...
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12031 >
2022-01-31 19:46:55 +00:00
Jason Ekstrand
d67250d444
vulkan/wsi/x11: Split image creation
...
Store the wsi_image_create_info in the swapchain and call
wsi_configure_*_image once per swapchain and then use wsi_create_image
for each image.
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12031 >
2022-01-31 19:46:54 +00:00
Jason Ekstrand
579578f10a
vulkan/wsi/drm: Break create_prime_image in pieces
...
This is similar to the previous two commits that we did for DRM native
images. It breaks it into configure/create/bind/finish and calls
wsi_create_image to walk through the process. The primary difference is
that prime images need fifth step in the process to set up the blit
command buffer.
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12031 >
2022-01-31 19:46:54 +00:00
Jason Ekstrand
830d9967db
vulkan/wsi: Add a helper for the configure/create/bind pattern
...
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12031 >
2022-01-31 19:46:54 +00:00
Jason Ekstrand
5b13d74583
vulkan/wsi/drm: Break create_native_image in pieces
...
Instead of making create_native_image one monolithic function, break it
into a configure stage and a create stage. The configure stage is
further broken up, first into a common piece that constructs a simple
VkImageCreateInfo and a couple chain-ins. The second adds the extra
stuff for create_native_image. This is to prepare for eventually
storing those structs in the swapchain itself.
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12031 >
2022-01-31 19:46:54 +00:00
Jason Ekstrand
8299d5f37f
vulkan/wsi: Set MUTABLE_FORMAT_BIT in the prime path
...
Fixes: 4bdf8547f4 "vulkan/wsi: Implement VK_KHR_swapchain_mutable_format"
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12031 >
2022-01-31 19:46:54 +00:00
Caleb Callaway
7483c40ba0
vulkan/overlay: revise and reformat README
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14784 >
2022-01-31 19:09:56 +00:00
Chia-I Wu
9eb1592e57
turnip: respect buf->bo_offset in transform feedback
...
buf->bo->iova should always be offset by buf->bo_offset.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14786 >
2022-01-31 18:31:54 +00:00
Georg Lehmann
cbe4943ae9
vulkan/wsi/wayland: Fix add_drm_format_modifier aplha/opaqueness.
...
This had the opposite problem of the shm path. R8G8B8A8 was always support if
either DRM_FORMAT_XBGR8888 or DRM_FORMAT_ABGR8888 was supported, but we need
both.
Fixes: d944136f36 ("vulkan/wsi/wayland: don't expose surface formats not fully supported")
Signed-off-by: Georg Lehmann <dadschoorse@gmail.com >
Reviewed-by: Simon Ser <contact@emersion.fr >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14588 >
2022-01-31 17:50:01 +00:00
Georg Lehmann
9843fddfff
vulkan/wsi/wayland: Add modifiers for RGB formats.
...
These formats get overwritten after the FALLTHROUGH, so no modifers got added
to them at all.
Fixes: 151b65b211 ("vulkan/wsi/wayland: generalize modifier handling")
Signed-off-by: Georg Lehmann <dadschoorse@gmail.com >
Reviewed-by: Simon Ser <contact@emersion.fr >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14588 >
2022-01-31 17:50:01 +00:00
Georg Lehmann
a881b6ac1f
vulkan/wsi/wayland: Convert missing vulkan formats to shm formats.
...
Fixes: 6b36f35734 ("vulkan/wsi/wl: add wl_shm support for lavapipe.")
Signed-off-by: Georg Lehmann <dadschoorse@gmail.com >
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Reviewed-by: Simon Ser <contact@emersion.fr >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14588 >
2022-01-31 17:50:01 +00:00
Georg Lehmann
4ae4e04e18
vulkan/wsi/wayland: Fix add_wl_shm_format alpha/opaqueness.
...
We need both the SHM format with alpha and the opaque format to fully support
a vulkan format with alpha. Previously no surface format was reported because
the vulkan formats with aplha were never added as opaque.
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/5879
Fixes: d944136f36 ("vulkan/wsi/wayland: don't expose surface formats not fully supported")
Signed-off-by: Georg Lehmann <dadschoorse@gmail.com >
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Reviewed-by: Simon Ser <contact@emersion.fr >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14588 >
2022-01-31 17:50:01 +00:00