Samuel Pitoiset
4096009ea1
radv: add a new dirty bit for the patch control points state
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36912 >
2025-08-25 12:17:30 +00:00
Samuel Pitoiset
0c3680bea3
radv: add a new dirty bit for the tess domain origin state
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36912 >
2025-08-25 12:17:29 +00:00
Samuel Pitoiset
99b287bde5
radv: add missing L2 invalidate cache flush for non-coherent images
...
Images aren't always coherent with L2 and AMD generations have
different rules, see radv_image_is_l2_coherent() for the full picture.
This fixes a rendering issue on GFX9 because depth/stencil images
aren't coherent, but this also affects color images.
This also fixes a cache coherency issue with an ongoing extension.
Cc: mesa-stable
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/12274
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36815 >
2025-08-25 07:28:50 +00:00
Samuel Pitoiset
772f185fc0
radv: add a new dirty bit for the scissor state
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36901 >
2025-08-22 08:12:05 +00:00
Samuel Pitoiset
54b79d0f50
radv: add a new dirty bit for the sample locations state
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36901 >
2025-08-22 08:12:04 +00:00
Samuel Pitoiset
dc3371332e
radv: add a new dirty bit for the blend constants state
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36901 >
2025-08-22 08:12:04 +00:00
Samuel Pitoiset
1be9cd43a8
radv: add a new dirty bit for the VS prolog state
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36901 >
2025-08-22 08:12:03 +00:00
Samuel Pitoiset
cc7b5ab0c9
radv: dirty more states when rendering begins
...
radv_get_ps_iter_samples() is used by :
- binning state
- rast samples state
- FS state
- MSAA state
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36901 >
2025-08-22 08:12:02 +00:00
Samuel Pitoiset
80e8cb196f
radv: dirty the cb render state when rendering begins
...
RADV_DYNAMIC_COLOR_BLEND_ENABLE trigger the cb render state, the db
shader control state and PS epilogs. Though, it's unecessary to re-emit
the db shader control and PS epilogs are already triggered when the
fb is dirty.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36901 >
2025-08-22 08:12:02 +00:00
Samuel Pitoiset
1db3d4f182
radv: dirty the depth stencil state when rendering begins
...
RADV_DYNAMIC_STENCIL_TEST_ENABLE only triggers
RADV_CMD_DIRTY_DEPTH_STENCIL_STATE but it's better to dirty the RADV
state than the dynamic one.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36901 >
2025-08-22 08:12:01 +00:00
Samuel Pitoiset
7694ad969e
radv: add a new dirty bit for the depth bias state
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36901 >
2025-08-22 08:12:00 +00:00
Samuel Pitoiset
cbe42a4c43
radv: rename RADV_CMD_DIRTY_TESS_STATE to RADV_CMD_DIRTY_TCS_TES_STATE
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36875 >
2025-08-21 18:36:35 +00:00
Samuel Pitoiset
3d1efbce98
radv: add a new dirty bit for the rast samples state
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36875 >
2025-08-21 18:36:35 +00:00
Samuel Pitoiset
ea6cb5e7bf
radv: add a new dirty bit for the FSR state
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36875 >
2025-08-21 18:36:35 +00:00
Samuel Pitoiset
604296a282
radv: add a new dirty bit for the ngg culling state
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36875 >
2025-08-21 18:36:34 +00:00
Samuel Pitoiset
d9d9052c56
radv: validate dynamic states for the db shader control state earlier
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36875 >
2025-08-21 18:36:34 +00:00
Samuel Pitoiset
02ecb70e7f
radv: validate dynamic states for the occlusion query state earlier
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36875 >
2025-08-21 18:36:33 +00:00
Samuel Pitoiset
81af123ab1
radv: optimize re-emitting the occlusion query state on GFX12
...
The number of samples is only needed on older generations.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36875 >
2025-08-21 18:36:33 +00:00
Samuel Pitoiset
5db8a16053
radv: add a new dirty bit for the binning state
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36875 >
2025-08-21 18:36:32 +00:00
Samuel Pitoiset
c4c44187f9
radv: only re-emit needed states when PS inner coverage changes
...
It's emitted as part of the MSAA state but re-emitting the NGG culling
state isn't necessary because ps.reads_fully_covered isn't used.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36875 >
2025-08-21 18:36:32 +00:00
Samuel Pitoiset
fae90ba171
radv: do not emit few RADV_CMD_DIRTY_xxx based on dynamic states
...
Like RADV_CMD_DIRTY_CB_RENDER_STATE is dirty when the custom blend mode
is updated. Shouldn't fix anything in practice because dynamic_states
is unlikely 0 but better that way.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36875 >
2025-08-21 18:36:31 +00:00
Samuel Pitoiset
d40e841cc4
radv: dirty some states from graphics pipeline earlier
...
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
This might actually fixes a couple of things because needed dynamic
states are computed before radv_emit_graphics_pipeline(), so dirtying
them too late doesn't make much sense.
This doesn't fix anything known.
Cc: mesa-stable
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36900 >
2025-08-21 15:45:48 +00:00
Samuel Pitoiset
5024c02d45
radv: precompute the depth clip enable
...
This should avoid re-emitting some states if it doesn't actually change.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36852 >
2025-08-21 08:23:04 +00:00
Samuel Pitoiset
2b5844df0e
radv: precompute the depth clamp mode
...
This should avoid re-emitting the state if it doesn't actually change.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36852 >
2025-08-21 08:23:04 +00:00
Samuel Pitoiset
413f781234
radv: add a new dirty bit for the viewport state
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36852 >
2025-08-21 08:23:03 +00:00
Samuel Pitoiset
2733b2953e
radv: emit depth clamp enable as part of the viewport state
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36852 >
2025-08-21 08:23:02 +00:00
Samuel Pitoiset
9c6f37c533
radv: get the depth clamp mode earlier when emitting viewports
...
Outside of the loop is also faster.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36852 >
2025-08-21 08:23:01 +00:00
Marek Olšák
ed246aafd8
util/set: set _mesa_set_init return type to void
...
it always returns true because it no longer allocates anything
Reviewed-by: Gert Wollny <gert.wollny@collabora.com>
Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36728 >
2025-08-21 06:13:48 +00:00
Marek Olšák
c12118decf
radv,zink,st/mesa: use _mesa_set_fini instead of ralloc_free
...
This is the correct way to free the set.
Reviewed-by: Gert Wollny <gert.wollny@collabora.com>
Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36728 >
2025-08-21 06:13:47 +00:00
Samuel Pitoiset
baaf5d643a
radv: emit inlined push constants with buffered SH regs on GFX12
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36570 >
2025-08-19 18:01:23 +00:00
Samuel Pitoiset
c710eaa443
radv: emit descriptor pointers with buffered SH regs on GFX12
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36570 >
2025-08-19 18:01:22 +00:00
Samuel Pitoiset
95d2f009a9
radv: emit compute pipeline with buffered SH regs on GFX12
...
This also includes RT, task shaders and DGC IES for compute.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36570 >
2025-08-19 18:01:21 +00:00
Samuel Pitoiset
bbf8338443
radv: rework the helper to emit buffered regs on GFX12
...
Also reserve enough space if needed.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36570 >
2025-08-19 18:01:21 +00:00
Samuel Pitoiset
1f26f93aa7
radv: emit relocation for task shaders at the same place as other stages
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36570 >
2025-08-19 18:01:21 +00:00
Samuel Pitoiset
2c26c5deb7
radv: merge two similar loops in lookup_ps_epilog()
...
Cleanup.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36778 >
2025-08-19 11:20:52 +00:00
Samuel Pitoiset
45c91edd18
radv: fix color attachment remapping with fast-GPL/ESO
...
If vkCmdSetRenderingAttachmentLocations() isn't setting all color
attachment locations (ie. MAX_RTS), the remapping might be wrong
because MESA_VK_ATTACHMENT_UNUSED is used to trim the unused locations
Found by inspection while implementing a new extension.
Cc: mesa-stable
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36778 >
2025-08-19 11:20:52 +00:00
Samuel Pitoiset
282186d4aa
radv: add a function that uploads push constants
...
Similar to indirect descriptor sets logic.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36792 >
2025-08-18 07:25:34 +00:00
Samuel Pitoiset
4e8728c4f6
radv: rework emitting push constants for less CPU overhead
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36792 >
2025-08-18 07:25:34 +00:00
Samuel Pitoiset
81ec36edb8
radv: determine if push constants need to be uploaded earlier
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36792 >
2025-08-18 07:25:34 +00:00
Samuel Pitoiset
47fd1803b2
radv: use radv_shader_need_indirect_descriptor_sets() more
...
While we are at it, move it to the appropriate header file.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36792 >
2025-08-18 07:25:33 +00:00
Samuel Pitoiset
8f0ff009c0
radv: do not emit inlined SGPRs twice for merged shaders
...
This is wasteful.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36792 >
2025-08-18 07:25:33 +00:00
Samuel Pitoiset
4bd0bf7e19
radv: invalidating push constants for compute<->rt during dispatches
...
It's similar but a bit cleaner.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36792 >
2025-08-18 07:25:32 +00:00
Samuel Pitoiset
104510aeb6
radv: slightly optimize indirect descriptor sets upload size
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36792 >
2025-08-18 07:25:32 +00:00
Samuel Pitoiset
fd5925868f
radv: tidy up radv_flush_descriptors()
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36792 >
2025-08-18 07:25:31 +00:00
Samuel Pitoiset
0d4d73a780
radv: implement an alternative workaround for HiZ on GFX12
...
This disables HiZ on-demand when both depth/stencil are enabled and
depth writes are enabled to prevent potential issues.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36739 >
2025-08-12 13:48:10 +00:00
Samuel Pitoiset
b6a9ed48c9
radv: validate dynamic states earlier
...
This will be needed to emit the GFX12 alternative HIZ wa.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36739 >
2025-08-12 13:48:10 +00:00
Samuel Pitoiset
e6c485afb0
radv: initialize HiZ metadata during image layout transitions
...
This will allow us to enable HiZ for all levels of the image.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36739 >
2025-08-12 13:48:10 +00:00
Samuel Pitoiset
b2ea120732
ac,radv,radeonsi: fix programming PA_SU_PRIM_FILTER_CNTL on GFX12
...
GFX12 seems to behave slightly differently. Setting these bits to TRUE
causes zero-area triangles to not pass the primitive clipping stage.
So, the actual number of primitives output by the primitive clipping
stage was wrong.
After digging a lot, it seems PAL doesn't set these bits either on
GFX12.
CC: mesa-stable
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36670 >
2025-08-12 07:06:36 +00:00
Samuel Pitoiset
4580293ab2
radv: implement RB+ depth-only rendering for better perf
...
For RB+ depth-only, the following registers must be configured like:
- CB_COLOR_CONTROL.MODE = CB_DISABLE
- CB_COLOR0_INFO.FORMAT = COLOR_32
- CB_COLOR0_INFO.NUMBER_TYPE = NUMBER_FLOAT
- SPI_SHADER_COL_FORMAT.COL0_EXPORT_FORMAT = SPI_SHADER_32_R
- SX_PS_DOWNCONVERT.MRT0 = SX_RT_EXPORT_32_R
This might increase performance for depth-only rendering passes on
GFX9+.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28590 >
2025-08-11 09:45:15 +00:00
Samuel Pitoiset
9648d256db
radv: remove cs parameter for gfx12 push SH reg helpers
...
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
It's also much cleaner now.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36679 >
2025-08-11 08:30:42 +00:00