Lionel Landwerlin
259cdc5496
nir: add additional flag to resource_intel for embedded samplers
...
This will enable specific lowering of embedded samplers.
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Reviewed-by: Ivan Briano <ivan.briano@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22151 >
2024-02-29 07:05:06 +00:00
Lionel Landwerlin
99047451c9
intel/fs: add plumbing for embedded samplers
...
We can address samplers from 3 different locations :
- binding table
- dynamic state base address
- bindless sampler base address (only Gfx11+)
Here we allow samplers to be address from the dynamic state base
address with the embedded sampler flag.
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Reviewed-by: Ivan Briano <ivan.briano@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22151 >
2024-02-29 07:05:06 +00:00
Lionel Landwerlin
3f25b2826f
anv: add embedded sampler parameters in descriptor set layout hash
...
The way we implement embedded samplers will be to have the sampler
handle as a relocated constant in the shader.
This implies that 2 identical shaders with different embedded sampler
parameters must have different hash as we cannot reuse the final
shader binary.
So add the sampler hash to the descriptor set layout hash when the set
has embedded samplers.
This has the effect of creating multiple shader entries in the cache
unfortunately. An improvement over this would be to have a anv_device
map of (embedded samplers hash + shader hash) to shader in instruction
heap, so that pipeline caches only have a single entry regardless of
embedded sampler parameters.
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Reviewed-by: Ivan Briano <ivan.briano@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22151 >
2024-02-29 07:05:06 +00:00
Lionel Landwerlin
6d59168dc9
anv: compute a sampler hash based on parameters
...
To be used for embedded samplers.
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Reviewed-by: Ivan Briano <ivan.briano@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22151 >
2024-02-29 07:05:06 +00:00
Lionel Landwerlin
9506d3f338
anv: implement data write entry points for EXT_descriptor_buffer
...
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Reviewed-by: Ivan Briano <ivan.briano@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22151 >
2024-02-29 07:05:06 +00:00
Lionel Landwerlin
ec73db3b8c
anv: allocate fsr states for descriptor buffer
...
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Reviewed-by: Ivan Briano <ivan.briano@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22151 >
2024-02-29 07:05:06 +00:00
Lionel Landwerlin
44bf552704
anv: allocate border colors for descriptor buffers
...
Because we have 2 dynamic state heaps, we need to duplicate values.
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Reviewed-by: Ivan Briano <ivan.briano@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22151 >
2024-02-29 07:05:06 +00:00
Lionel Landwerlin
271f0b8b9c
anv: allocate slice_hash for descriptor buffer
...
Reviewed-by: Ivan Briano <ivan.briano@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22151 >
2024-02-29 07:05:06 +00:00
Lionel Landwerlin
859f087c0b
anv: move aux-tt to general state pool
...
We're about to use 2 different location for the dynamic state heap.
Which means at least on i915 we need 2 copies of all the fixed
(CPS_STATE, border colors, slice hash) stuff on the dynamic state
heap.
Let's avoid having the aux-tt tables in there too.
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Reviewed-by: Ivan Briano <ivan.briano@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22151 >
2024-02-29 07:05:06 +00:00
Lionel Landwerlin
226c519f28
anv: add a second dynamic state heap for descriptor buffers
...
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Reviewed-by: Ivan Briano <ivan.briano@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22151 >
2024-02-29 07:05:06 +00:00
Lionel Landwerlin
82d772fa9b
anv: create new helper for small allocations
...
A number of allocations during command buffer building are sourced
from the dynamic state heap. They're not actually access using an
offset in the dynamic state heap, it just happens to be a conveninent
place.
Use different helpers for thoses so we dynamically change the dynamic
state heap location in the next commits.
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Reviewed-by: Ivan Briano <ivan.briano@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22151 >
2024-02-29 07:05:06 +00:00
Lionel Landwerlin
c6a91f1695
anv: add new heap/pool for descriptor buffers
...
We'll use a new heap & a new pool for descriptor buffers. The heap
will hold descriptor buffers, while the pool will only be used on
Gfx12.5+ for push descriptors.
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Reviewed-by: Ivan Briano <ivan.briano@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22151 >
2024-02-29 07:05:05 +00:00
Lionel Landwerlin
fc1aeb57bb
anv: optimize push descriptor updates
...
vkd3d-proton uses a descriptor set with a single descriptor, so we
don't even need to copy the old data where there is an update.
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Reviewed-by: Ivan Briano <ivan.briano@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22151 >
2024-02-29 07:05:05 +00:00
Mike Blumenkrantz
3d38c9597f
zink: hook up KHR_partial_update
...
this just requires clamping the renderArea to the passed damage rect,
which is composed by merging all the passed rects into a single large
region
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27867 >
2024-02-29 03:26:14 +00:00
Mike Blumenkrantz
e0131cd371
zink: use VK_KHR_incremental_present to propagate damage rects
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27867 >
2024-02-29 03:26:14 +00:00
Mike Blumenkrantz
4fe88170ce
zink: hook up VK_KHR_incremental_present
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27867 >
2024-02-29 03:26:14 +00:00
Mike Blumenkrantz
738fbddca8
zink: use a slab allocator for zink_kopper_present_info
...
this improves perf slightly at extremely high fps
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27867 >
2024-02-29 03:26:14 +00:00
Mike Blumenkrantz
cdd1ce140d
zink: make zink_kopper_present_info public
...
no functional changes
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27867 >
2024-02-29 03:26:14 +00:00
Faith Ekstrand
4c73e52933
nvk: Advertise VK_KHR_pipeline_library
...
This is required by VK_EXT_graphics_pipeline_library
Fixes: fb564040a7 ("nvk: Advertise VK_KHR_graphics_pipeline_library")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27860 >
2024-02-29 02:49:42 +00:00
Faith Ekstrand
bb8b11d806
vulkan/pipeline: Handle fully compiled library shaders properly
...
In the fast-link case, we should just use the library shader and assume
that it's correct. We have to do this because we may not have a
precompiled shader in this case so we can't even generate the shader
hash.
In the link optimization case, we could still have a library shader
coming in from some library pipeline. That shader may happen to be
correct, in which case we can just use it and not even bother digging
around in the cache. In the more likely case, the keys won't match and
we should throw it away before we look up a different shader in the
cache and leak our reference.
Fixes: 9308e8d90d ("vulkan: Add generic graphics and compute VkPipeline implementation")
Acked-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27860 >
2024-02-29 02:49:42 +00:00
Faith Ekstrand
d9908af9d2
vulkan/pipeline: Whitespace fix
...
Acked-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27860 >
2024-02-29 02:49:42 +00:00
José Roberto de Souza
283d8ca98a
iris: Force lmem cpu accessible for bos with clear-color
...
KMD needs to be able to read and write the clear-color from CPU.
i915 can workaround it but Xe KMD will reject page flips with
clear-color bos that can be read from CPU.
So here it make sure that bos with the clear color information
are placed in a lmem portion that is CPU-visible, that is important in
PCIe small bar systems.
And as CCS in discrete GPUs are only supported in lmem this bo can't
become a IRIS_HEAP_DEVICE_LOCAL_PREFERRED(lmem + smem).
So here the IRIS_HEAP_DEVICE_LOCAL_CPU_VISIBLE_SMALL_BAR heap is selected.
Reviewed-by: Nanley Chery <nanley.g.chery@intel.com >
Signed-off-by: José Roberto de Souza <jose.souza@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26700 >
2024-02-29 02:20:43 +00:00
José Roberto de Souza
8a9168584c
iris: Add IRIS_HEAP_DEVICE_LOCAL_CPU_VISIBLE_SMALL_BAR heap type
...
This is intented to be used in cases where BOs can only be placed in
lmem but needs to accesible from CPU side.
Actual usage will be added in the next patch, here just adding the
heap type and all the handling.
Reviewed-by: Nanley Chery <nanley.g.chery@intel.com >
Signed-off-by: José Roberto de Souza <jose.souza@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26700 >
2024-02-29 02:20:43 +00:00
Mike Blumenkrantz
f55ed175eb
zink: fix stencil-only blitting with stencil fallback
...
these shouldn't do extra depth blits
fixes (nvidia):
dEQP-GLES3.functional.fbo.blit.depth_stencil.depth24_stencil8_stencil_only,Fail
dEQP-GLES3.functional.fbo.blit.depth_stencil.depth32f_stencil8_stencil_only,Fail
spec@arb_framebuffer_object@arb_framebuffer_object-depth-stencil-blit stencil gl_depth24_stencil8,Fail
cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27859 >
2024-02-29 01:53:38 +00:00
Mike Blumenkrantz
f0430b095b
egl/wayland: delete swrast references to zink
...
this is an entirely separate path now
Acked-by: Daniel Stone <daniels@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27703 >
2024-02-29 01:15:23 +00:00
Mike Blumenkrantz
17355e737d
egl/wayland: split out kopper update_buffers
...
no functional changes
Acked-by: Daniel Stone <daniels@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27703 >
2024-02-29 01:15:23 +00:00
Mike Blumenkrantz
1959691033
egl/wayland/kopper: actually call kopper swapbuffer functions
...
this allows passing through the zsbuf discard flag
Acked-by: Daniel Stone <daniels@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27703 >
2024-02-29 01:15:23 +00:00
Mike Blumenkrantz
2a8c6cf7ac
kopper: set drawable buffer age
...
this fixes buffer age reporting with lavapipe
Acked-by: Daniel Stone <daniels@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27703 >
2024-02-29 01:15:23 +00:00
Mike Blumenkrantz
9cf22c5fd0
egl/kopper: call swrast buffer age query for kopper+swrast
...
with zink+lavapipe, this is actually how it works since the vtable is
different
Acked-by: Daniel Stone <daniels@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27703 >
2024-02-29 01:15:23 +00:00
Mike Blumenkrantz
1bd28d62e4
egl/wayland: split out kopper swapbuffers functions
...
no functional changes
Acked-by: Daniel Stone <daniels@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27703 >
2024-02-29 01:15:23 +00:00
Mike Blumenkrantz
76f74f55a4
egl/wayland: add a separate hook for kopper buffer age
...
this otherwise hits the swrast one which is wrong
Acked-by: Daniel Stone <daniels@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27703 >
2024-02-29 01:15:23 +00:00
Mike Blumenkrantz
4345c415d7
egl/wayland: split out kopper vtable
...
no functional changes
Acked-by: Daniel Stone <daniels@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27703 >
2024-02-29 01:15:23 +00:00
Mike Blumenkrantz
1188178811
egl/kopper: advertise EXT_swap_buffers_with_damage only in non-sw mode
...
this isn't actually damage-ful otherwise
Acked-by: Daniel Stone <daniels@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27703 >
2024-02-29 01:15:23 +00:00
Mike Blumenkrantz
ad8794884c
egl/kopper: plumb through SwapBuffersWithDamage
...
Acked-by: Daniel Stone <daniels@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27703 >
2024-02-29 01:15:23 +00:00
Mike Blumenkrantz
0c82a67ea6
drisw: pass all frontend swapbuffer damage rects through
...
this is really stupid because EGLRect is int[4] but pipe_box is not,
requiring conversion from one to the other
Acked-by: Daniel Stone <daniels@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27703 >
2024-02-29 01:15:23 +00:00
Mike Blumenkrantz
cda627eb48
drisw/winsys: loop over all the boxes in display()
...
Acked-by: Daniel Stone <daniels@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27703 >
2024-02-29 01:15:23 +00:00
Mike Blumenkrantz
389e83c4fe
drisw/xlib: loop over all the boxes in display() hook
...
Acked-by: Daniel Stone <daniels@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27703 >
2024-02-29 01:15:23 +00:00
Mike Blumenkrantz
c83768c76c
egl/wayland/sw: clamp putimage geometry to surface size
...
this otherwise writes oob
Acked-by: Daniel Stone <daniels@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27703 >
2024-02-29 01:15:23 +00:00
Mike Blumenkrantz
fa465e34ca
egl/wayland/sw: pass damage region through from put_image2 to wl_surface_damage
...
this propagates damage from drisw to wayland; y inversion matches protocol
Acked-by: Daniel Stone <daniels@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27703 >
2024-02-29 01:15:23 +00:00
Mike Blumenkrantz
d90b14c768
egl/wayland/sw: fix no-op updating of current backbuffer
...
if the frontbuffer is the backbuffer then its contents are up-to-date
Acked-by: Daniel Stone <daniels@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27703 >
2024-02-29 01:15:23 +00:00
Mike Blumenkrantz
75cf82005d
egl/wayland/sw: move partial->full copy promotion to swapbuffers
...
this will ensure that the wl_buffer data is always fully updated
Acked-by: Daniel Stone <daniels@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27703 >
2024-02-29 01:15:23 +00:00
Mike Blumenkrantz
425d919b0a
egl/wayland/sw: trigger damage from put_image2
...
no functional changes currently
Acked-by: Daniel Stone <daniels@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27703 >
2024-02-29 01:15:23 +00:00
Mike Blumenkrantz
e4db8c6e8d
egl/wayland/sw: call dri2_wl_swrast_attach_backbuffer() before swap
...
should be no functional changes
Acked-by: Daniel Stone <daniels@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27703 >
2024-02-29 01:15:23 +00:00
Mike Blumenkrantz
448cd2cd37
egl/wayland/sw: split out surface attach from dri2_wl_swrast_commit_backbuffer()
...
no functional changes
Acked-by: Daniel Stone <daniels@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27703 >
2024-02-29 01:15:23 +00:00
Mike Blumenkrantz
cce12981e4
egl/wayland: unify back/current swapping between zink and swrast
...
these are functionally the same, they just happened in different places
Acked-by: Daniel Stone <daniels@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27703 >
2024-02-29 01:15:23 +00:00
Mike Blumenkrantz
73a3a1c646
egl/wayland/sw: move dri2_wl_swrast_commit_backbuffer() directly into swapbuffers
...
no functional changes
Acked-by: Daniel Stone <daniels@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27703 >
2024-02-29 01:15:23 +00:00
Mike Blumenkrantz
81e5f9c398
egl/wayland/sw: move swrast_update_buffers() directly into swapbuffers
...
no functional changes
Acked-by: Daniel Stone <daniels@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27703 >
2024-02-29 01:15:23 +00:00
Mike Blumenkrantz
fd6f7e3f16
drisw: plumb through a swapBuffersWithDamage interface
...
currently the same as regular swap
Acked-by: Daniel Stone <daniels@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27703 >
2024-02-29 01:15:23 +00:00
Mike Blumenkrantz
3aea0e31a4
winsys/sw: propagate nboxes to displaytarget_display()
...
only a single box region is used
Acked-by: Daniel Stone <daniels@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27703 >
2024-02-29 01:15:22 +00:00
Mike Blumenkrantz
3cca761934
gallium: add a nboxes param to flush_frontbuffer
...
this allows conveying damage regions through the sw presentation interface
Acked-by: Daniel Stone <daniels@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27703 >
2024-02-29 01:15:22 +00:00