platform/upstream/mesa.git
2 years agovenus: reenable VK_EXT_extended_dynamic_state2
Yiwei Zhang [Sat, 16 Jul 2022 16:48:25 +0000 (16:48 +0000)]
venus: reenable VK_EXT_extended_dynamic_state2

Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Ryan Neph <ryanneph@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17582>

2 years agovenus: check dynamic state for raster enablement
Yiwei Zhang [Sat, 16 Jul 2022 16:20:48 +0000 (16:20 +0000)]
venus: check dynamic state for raster enablement

We should not scrub raster dedicated states when dynamic state includes
VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE.

Test:
- dEQP-VK.pipeline.extended_dynamic_state.*_raster
- dEQP-VK.api.pipeline.pipeline_invalid_pointers_unused_structs.graphics

Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Ryan Neph <ryanneph@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17582>

2 years agocrocus: fail query begin if upload allocation fails.
Dave Airlie [Tue, 19 Jul 2022 05:46:14 +0000 (15:46 +1000)]
crocus: fail query begin if upload allocation fails.

This is the only place I think I can see this crashing.

Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17615>

2 years agoZink: Fix clear being missed when using emulated draws in zink_blit
SoroushIMG [Tue, 19 Jul 2022 13:50:11 +0000 (14:50 +0100)]
Zink: Fix clear being missed when using emulated draws in zink_blit

zink_kopper_acquire_readback will flush any outstanding clears, this means that
the current clears need to be applied first before calling zink_kopper_acquire_readback.
This was already done for native_blit and native_resolve, also do this for the emulated draw path.
Seen as intermittent failures in cts case GTF-GL33.gtf21.GL2FixedTests.buffer_clear.buffer_clear.

Cc: mesa-stable
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17631>

2 years agozink: Fix spirv stream 0 vertex emit for multistream shaders
SoroushIMG [Wed, 13 Jul 2022 10:59:05 +0000 (11:59 +0100)]
zink: Fix spirv stream 0 vertex emit for multistream shaders

Spirv spec does not allow the use of OpEmitVertex or OpEndPrimitive when there are multiple streams.
Instead emit the multi-stream version of these with stream set to 0.
This issue was seen when testing cts case KHR-GL46.transform_feedback.draw_xfb_stream_test

Fixes: 35e346f4280 ("zink: handle vertex streams")
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17513>

2 years agoanv: Do depth/stencil optimization for dynamic depth/stencil
Jason Ekstrand [Fri, 15 Jul 2022 02:02:35 +0000 (21:02 -0500)]
anv: Do depth/stencil optimization for dynamic depth/stencil

When we made depth/stencil dynamic, we lost the optimization.  This is
particularly important for cases where the stencil test is enabled but
never writes anything as certain combinations with discard can cause
the stencil write (which doesn't do anything) to get moved late which
can be a measurable perf hit.  According to 028e1137e67b ("anv/pipeline:
Be smarter about depth/stencil state", it was a couple percent for DOTA2
on Broadwell back in the day.  No idea how it affects current titles.

This may also improve the depth/stncil PMA workarounds on Gen8 and Gen9
since they're now looking at optimized depth/stencil state.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17564>

2 years agovulkan/graphics_state: Improve the depth/stencil optimization code
Jason Ekstrand [Fri, 15 Jul 2022 01:59:38 +0000 (20:59 -0500)]
vulkan/graphics_state: Improve the depth/stencil optimization code

We now disable stencil writes when the stencil test is disabled or when
both stencil write masks are zero.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17564>

2 years agoanv: Switch to using common dynamic state tracking
Jason Ekstrand [Thu, 14 Jul 2022 20:09:46 +0000 (15:09 -0500)]
anv: Switch to using common dynamic state tracking

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17564>

2 years agoanv: Stop merging DEPTH_STENCIL state
Jason Ekstrand [Thu, 14 Jul 2022 16:55:04 +0000 (11:55 -0500)]
anv: Stop merging DEPTH_STENCIL state

Now that we've stopped trying to do dynamic stuff up-front, we're only
merging in one bit: DoubleSidedStencilEnable.  There's no point in all
the merging code for one bit which is a constant anyway.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17564>

2 years agoanv: Rework setting primitive topology
Jason Ekstrand [Thu, 14 Jul 2022 16:41:17 +0000 (11:41 -0500)]
anv: Rework setting primitive topology

For one thing, we were deceptively setting it wrong in genX_cmd_buffer.c
and then overwriting it in each of of gfx7_cmd_buffer.c and
gfx8_cmd_buffer.c.  Pull it all into genX_cmd_buffer.c so it's no longer
duplicated.  Also, stop doing the PATCHLIST conversion in anv_pipeline.c
and just store the number of patch vertices.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17564>

2 years agoanv: Convert to using vk_graphics_pipeline_state
Jason Ekstrand [Tue, 12 Jul 2022 21:16:55 +0000 (16:16 -0500)]
anv: Convert to using vk_graphics_pipeline_state

This attempts to be a pretty minimal refactor.  We just switch all the
state emit code to use the new graphics pipeline state object.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17564>

2 years agoanv: remove pipeline setting dynamic state
Lionel Landwerlin [Sat, 2 Jul 2022 11:35:10 +0000 (14:35 +0300)]
anv: remove pipeline setting dynamic state

Following our rule that anything that can be dynamic should be set
(and is this case is already) in the following files :

   - genX_cmd_buffer.c
   - gfx8_cmd_buffer.c
   - gfx7_cmd_buffer.c

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17564>

2 years agoanv: Stop recording sample locations per-sample-count
Jason Ekstrand [Tue, 12 Jul 2022 21:30:46 +0000 (16:30 -0500)]
anv: Stop recording sample locations per-sample-count

The only reason why we recorded them per-sample-count is because Intel
hardware is weird starting with Broadwell.  The API, requires that the
dynamic sample pattern be reset every time the sample count changes so
we only need to record the pattern for the current sample count.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17564>

2 years agoanv: Handle vertex buffer sizes in anv_CmdBindVertexBuffers2
Jason Ekstrand [Tue, 5 Jul 2022 10:06:27 +0000 (05:06 -0500)]
anv: Handle vertex buffer sizes in anv_CmdBindVertexBuffers2

There's no good reason to defer figuring out the size until we emit the
packet.  We know everything when the bind happens.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17564>

2 years agoanv: Add an instance multiplier to anv_pipeline
Jason Ekstrand [Thu, 7 Jul 2022 16:43:12 +0000 (11:43 -0500)]
anv: Add an instance multiplier to anv_pipeline

This lets us get rid of the view_mask and pipeline replication logic
repeated all over everywhere.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17564>

2 years agospirv: handle phis decorated with RelaxedPrecision
Daniel Schürmann [Fri, 3 Jun 2022 12:00:11 +0000 (14:00 +0200)]
spirv: handle phis decorated with RelaxedPrecision

If the driver can do 16-bit ALU ops, then store RelaxedPrecision phi
values into 16-bit NIR variables with downconverts/upconverts on the way
in/out.

This has no impact on shader-db on freedreno (not that we have a ton of
GLES content there), but it does cause an ANGLE-translated CTS shader on
vulkan to get consistent conversions between two copies of a value, and
avoid a test bug.

Reviewed-by: Emma Anholt <emma@anholt.net>
Closes: #6585
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14018>

2 years agoci/bare-metal: Add timeouts to the shell commands called in fastboot.
Emma Anholt [Mon, 18 Jul 2022 21:16:05 +0000 (14:16 -0700)]
ci/bare-metal: Add timeouts to the shell commands called in fastboot.

It seems that we sometimes stall out executing "fastboot boot", and if
that happens we want to reboot the board and try again.

Fixes: #6682
Acked-by: David Heidelberg <david.heidelberg@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17607>

2 years agoradv: don't update misaligned_mask in CmdBindVertexBuffers2
Rhys Perry [Wed, 13 Jul 2022 15:43:44 +0000 (16:43 +0100)]
radv: don't update misaligned_mask in CmdBindVertexBuffers2

This can't do it in the loop because it doesn't easily know what
attributes use a binding.

We could do it in a separate loop, but there's no point, especially since
zink does CmdSetVertexInputEXT() after CmdBindVertexBuffers2().

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Fixes: c335a4d70ed ("radv: dynamically calculate misaligned_mask for dynamic vertex input")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17521>

2 years agoradv: fix vbo_bound_mask indexing
Rhys Perry [Wed, 13 Jul 2022 15:33:04 +0000 (16:33 +0100)]
radv: fix vbo_bound_mask indexing

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/6812
Fixes: 1b8bdecf6e0 ("radv: add a mask of bound descriptor buffers for dynamic vertex input")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17521>

2 years agor300: disable PIPE_CAP_PREFER_IMM_ARRAYS_AS_CONSTBUF
Pavel Ondračka [Sat, 16 Jul 2022 05:57:33 +0000 (07:57 +0200)]
r300: disable PIPE_CAP_PREFER_IMM_ARRAYS_AS_CONSTBUF

We can't do uniform buffer objects and from the hardware
perspective constants (uniforms) and immediates are treated in
the same way. They are uploaded together and fit together into the
(rather low) total constant limit. Therefore, there is actually no
advantage in converting immediates to uniforms, and a whole lot of
disadvantages (less possible optimizations and no inlining).

Fixes the dEQP regressions from https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16770

The tests failed because when there is an indirect array access the
compiler inserts a big if ladder and converting the temp to a uniform
means more instructions because the ifs cant be lowered at least
partially to selects. It is particularly visible, because the code
NIR currently emits for the indirect access doesn't really fit the
hardware, see: https://gitlab.freedesktop.org/mesa/mesa/-/issues/6366

No change in my shader-db, so this concerns the tests only.

Signed-off-by: Pavel Ondračka <pavel.ondracka@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17576>

2 years agovulkan: Detect pNext chain loops in vk_foreach_struct() (v2)
Jason Ekstrand [Mon, 18 Jul 2022 14:05:59 +0000 (09:05 -0500)]
vulkan: Detect pNext chain loops in vk_foreach_struct() (v2)

This implements the "tortoise and the hare" algorithm for detecting
cycles in graphs.  We use the caller's iterator as the hare and our own
internal copy as the tortoise.  Conveniently, VkBaseOutStructure (and
VkBaseInStructure which is identical except the pointer type on pNext)
have a pointer we can use for the tortoise and an sType which we can use
for a counter to ensure we only increment the tortose every other loop
iteration.

There are more efficient algorithms than tortoise and hare but they
require allocating memory for something like a hash set of seen nodes.
Since this for debug purposes only, it's ok for it to be a bit
inefficient in the case where it hits the assert.  In the usual case of
no loops, it's the same runtime efficiency as the unchecked version
except that it does a tiny bit of math and 50% more pointer chases.

Version 1 worked fine with clang and with GCC 12.1 with -O0 but not with
optimizations. See https://gitlab.freedesktop.org/mesa/mesa/-/issues/6895.
Unfortunately, the first version required modifying a temporary declared
const inside the for loop and that seems to have been the problem.  This
version instead has an iterator struct which is managed by an outer for
loop and the inner for loop exists to declare the user's requested
iteration variable and manage the actual iteration.  Because the outer
for loop is effectively `for (bool done = false; !done; done = true)`,
it will execute exactly once, regardless of the inner loop, so break and
continue inside the inner loop should work the same as if it's a single
for loop.

The other major difference with the new version is that the code is the
same for debug and release except the half_iter and loop check are gone.
I've verified by hand that this produces virtually identical code to the
old simple iterators on both GCC andl clang with an optimized build.

Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17630>

2 years agoUse vk_foreach_struct_const where needed
Jason Ekstrand [Tue, 19 Jul 2022 08:39:14 +0000 (03:39 -0500)]
Use vk_foreach_struct_const where needed

We're about to make it so that the compiler warns/errors if you use the
wrong iterator macro.  Fix up a bunch of places where someone used the
wrong one before we break anything.

Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17630>

2 years agovulkan: Copy the depth/stencil state optimization code from ANV
Jason Ekstrand [Thu, 7 Jul 2022 17:09:16 +0000 (12:09 -0500)]
vulkan: Copy the depth/stencil state optimization code from ANV

Instead of having stencil writes as an out parameter of the optimization
function, we add a new write_enable field for stencil that's equivalent
to the similarly named field for depth.  This doesn't mean drivers must
actually support disabling stencil writes independently but the
information may be helpful on some hardware.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17328>

2 years agovulkan: Add a common implementation of vkCmdSet*
Jason Ekstrand [Fri, 1 Jul 2022 03:35:44 +0000 (22:35 -0500)]
vulkan: Add a common implementation of vkCmdSet*

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17328>

2 years agovulkan: Add a common data structure for dynamic states
Jason Ekstrand [Wed, 29 Jun 2022 23:26:05 +0000 (18:26 -0500)]
vulkan: Add a common data structure for dynamic states

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17328>

2 years agoutil: Constify __bitset_test_range
Jason Ekstrand [Wed, 13 Jul 2022 20:20:38 +0000 (15:20 -0500)]
util: Constify __bitset_test_range

Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17328>

2 years agovulkan: Add data structures to store all graphics state
Jason Ekstrand [Wed, 13 Jul 2022 15:02:30 +0000 (10:02 -0500)]
vulkan: Add data structures to store all graphics state

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17328>

2 years agovulkan: Add standard sample locations
Jason Ekstrand [Mon, 4 Jul 2022 14:49:02 +0000 (09:49 -0500)]
vulkan: Add standard sample locations

This looks a bit funny because we define the struct in the .c file but
that will be fixed in the next commit.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17328>

2 years agovulkan: Add an enum for all dynamic graphics states
Jason Ekstrand [Mon, 27 Jun 2022 14:03:02 +0000 (09:03 -0500)]
vulkan: Add an enum for all dynamic graphics states

Also, add a helper function to turn VkPipelineDynamicStateCreateInfo
into a bitset.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17328>

2 years agovulkan: Add a vk_limits.h file for runtime limits
Jason Ekstrand [Wed, 29 Jun 2022 18:42:26 +0000 (13:42 -0500)]
vulkan: Add a vk_limits.h file for runtime limits

Individual driver limits may be smaller than these.

Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17328>

2 years agoaco: requires Exact for p_jump_to_epilog
Samuel Pitoiset [Mon, 18 Jul 2022 08:10:26 +0000 (10:10 +0200)]
aco: requires Exact for p_jump_to_epilog

Otherwise, in presence of p_exit_early_if the main FS will always
jump to the PS epilog regardless the exact mask.

This fixes dEQP-VK.draw.renderpass.shader_invocation.helper_invocation
and few vkd3d-proton regressions when PS epilogs are forced.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17617>

2 years agov3d/v3dv/ci: update expected results
Juan A. Suarez Romero [Tue, 19 Jul 2022 14:25:21 +0000 (16:25 +0200)]
v3d/v3dv/ci: update expected results

Signed-off-by: Juan A. Suarez Romero <jasuarez@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17632>

2 years agoaco: fix assertion in insert_exec_mask
Daniel Schürmann [Thu, 7 Jul 2022 17:05:43 +0000 (19:05 +0200)]
aco: fix assertion in insert_exec_mask

The exec mask might also be of type mask_type_loop.

Fixes: d068eb53e84ca1e44ad96c31dab63476880b3c72 ('aco/insert_exec_mask: optimize top-level transition to exact before demote')
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17402>

2 years agoaco: Avoid live-range splits in Exact mode
Daniel Schürmann [Fri, 11 Mar 2022 18:12:50 +0000 (19:12 +0100)]
aco: Avoid live-range splits in Exact mode

Because the data register of atomic VMEM instructions
is shared between src and dst, it might be necessary
to create live-range splits during RA.
Make the live-range splits explicit in WQM mode.

Totals from 7 (0.01% of 134913) affected shaders: (GFX10.3)
Latency: 17209 -> 17210 (+0.01%)

Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15347>

2 years agoaco: avoid unnecessary copies in emit_wqm()
Daniel Schürmann [Fri, 11 Mar 2022 16:14:38 +0000 (17:14 +0100)]
aco: avoid unnecessary copies in emit_wqm()

No fossil-db changes.

Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15347>

2 years agoturnip: expose VK_EXT_shader_module_identifier
Hyunjun Ko [Fri, 15 Jul 2022 08:06:09 +0000 (17:06 +0900)]
turnip: expose VK_EXT_shader_module_identifier

Signed-off-by: Hyunjun Ko <zzoon@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17614>

2 years agoturnip: Remove an unnecessary assert.
Hyunjun Ko [Fri, 15 Jul 2022 08:04:17 +0000 (17:04 +0900)]
turnip: Remove an unnecessary assert.

The assertion is already in the common implementation.

Signed-off-by: Hyunjun Ko <zzoon@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17614>

2 years agoac/llvm: Remove load_vertex_id handling
Konstantin Seurer [Thu, 14 Jul 2022 12:01:19 +0000 (14:01 +0200)]
ac/llvm: Remove load_vertex_id handling

Signed-off-by: Konstantin Seurer <konstantin.seurer@gmail.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17539>

2 years agoaco: Remove dead nir_intrinsic_load_vertex_id case
Konstantin Seurer [Thu, 14 Jul 2022 11:58:54 +0000 (13:58 +0200)]
aco: Remove dead nir_intrinsic_load_vertex_id case

This intrinsic is lowered in NIR.

Signed-off-by: Konstantin Seurer <konstantin.seurer@gmail.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17539>

2 years agoradeonsi: Set vertex_id_zero_based
Konstantin Seurer [Thu, 14 Jul 2022 11:56:05 +0000 (13:56 +0200)]
radeonsi: Set vertex_id_zero_based

Let NIR lower load_vertex_id instead of LLVM.

Signed-off-by: Konstantin Seurer <konstantin.seurer@gmail.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17539>

2 years agov3dv: Use nir_gen_rect_vertices
Konstantin Seurer [Thu, 14 Jul 2022 09:16:22 +0000 (11:16 +0200)]
v3dv: Use nir_gen_rect_vertices

Signed-off-by: Konstantin Seurer <konstantin.seurer@gmail.com>
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17535>

2 years agoradv: Use nir_gen_rect_vertices
Konstantin Seurer [Thu, 14 Jul 2022 09:13:18 +0000 (11:13 +0200)]
radv: Use nir_gen_rect_vertices

Signed-off-by: Konstantin Seurer <konstantin.seurer@gmail.com>
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17535>

2 years agonir: Add a common gen_rect_vertices implementation
Konstantin Seurer [Thu, 14 Jul 2022 09:09:38 +0000 (11:09 +0200)]
nir: Add a common gen_rect_vertices implementation

Signed-off-by: Konstantin Seurer <konstantin.seurer@gmail.com>
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17535>

2 years agoradv: disable viewport depth clamping only when necessary
Samuel Pitoiset [Thu, 5 May 2022 14:53:13 +0000 (16:53 +0200)]
radv: disable viewport depth clamping only when necessary

When the application uses depth values outside of the [0.0,1.0] range
with VK_EXT_depth_range_unrestricted, or when explicitly disabled.
Otherwise, the driver can clamp to [0.0,1.0] internally for optimal
performance.

From the Vulkan spec "in 28.10.1. Depth Clamping and Range Adjustment":

    "If depth clamping is not enabled and zf is not in the range [0, 1]
    and either VK_EXT_depth_range_unrestricted is not enabled, or the
    depth attachment has a fixed-point format, then zf is undefined
    following this step."

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16349>

2 years agov3dv: implement VK_KHR_buffer_device_address
Iago Toral Quiroga [Mon, 27 Jun 2022 12:12:25 +0000 (14:12 +0200)]
v3dv: implement VK_KHR_buffer_device_address

This feature allows shaders to use pointers to buffers which may
not be bound via descriptor sets. Access to these buffers is done
via global intrinsics.

Because the buffers are not accessed through descriptor sets, any
live buffer flagged with VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR
can be accessed by any shader using global intrinsics, so the driver
needs to make sure all these buffers are mapped by the kernel when
it submits the job for execution.

We handle this by tracking if any draw call or compute dispatch in
a job uses a pipeline that has any such shaders. If so, the job is
flagged as using buffer device address and the kernel submission
for that job will add all live BOs bound to buffers flagged with the
buffer device address usage flag.

Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17275>

2 years agobroadcom/compiler: track if a shader uses global intrinsics
Iago Toral Quiroga [Mon, 27 Jun 2022 12:09:47 +0000 (14:09 +0200)]
broadcom/compiler: track if a shader uses global intrinsics

Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17275>

2 years agobroadcom/compiler: implement 2x32 global intrinsics
Iago Toral Quiroga [Mon, 27 Jun 2022 12:09:28 +0000 (14:09 +0200)]
broadcom/compiler: implement 2x32 global intrinsics

Notice we ignore the high 32-bit component of the address because
we know it must be 0.

Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17275>

2 years agonir: add nir_address_format_2x32bit_global
Iago Toral Quiroga [Wed, 22 Jun 2022 09:28:53 +0000 (11:28 +0200)]
nir: add nir_address_format_2x32bit_global

This adds support for global 64-bit GPU addresses as a pair of
32-bit values. This is useful for platforms with 32-bit GPUs
that want to support VK_KHR_buffer_device_address, which makes
GPU addresses explicitly 64-bit.

With the new format we also add new global intrinsics with 2x32
suffix that consume the new address format.

Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17275>

2 years agov3dv: remove duplicate condition
Iago Toral Quiroga [Fri, 15 Jul 2022 03:29:39 +0000 (05:29 +0200)]
v3dv: remove duplicate condition

Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17536>

2 years agov3dv: explain why we clear certain state after a draw call
Iago Toral Quiroga [Fri, 15 Jul 2022 03:27:04 +0000 (05:27 +0200)]
v3dv: explain why we clear certain state after a draw call

Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17536>

2 years agov3dv: add a dirty state for pending push constants UBO updates
Iago Toral Quiroga [Fri, 15 Jul 2022 03:01:22 +0000 (05:01 +0200)]
v3dv: add a dirty state for pending push constants UBO updates

If we have 2 pipelines that consume the same push constant data
but where one of them only uses direct access and the other has
indirect access, a draw with the first pipeline would clear the
dirty flag without updating the UBO and by the time we bind and
draw with the second pipeline we won't upload the constants either
because the first draw cleared the dirty flag.

Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17536>

2 years agov3dv: allocate more push constant buffers if needed
Iago Toral Quiroga [Thu, 14 Jul 2022 09:15:22 +0000 (11:15 +0200)]
v3dv: allocate more push constant buffers if needed

Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17536>

2 years agov3dv: stop tracking push constant buffer references
Iago Toral Quiroga [Thu, 14 Jul 2022 09:08:49 +0000 (11:08 +0200)]
v3dv: stop tracking push constant buffer references

Since we allocate this ourselves we can immediately add it to the
job at the time we allocate it.

This also fixes a bug we introduced when we implemented inline
uniforms because since that commit, if we had an inline uniform
buffer at index 1 which happend to have indirect access we would
track it in slot 0 instead of slot 1, potentially overwriting
the push constant buffer reference.

Fixes: ea3223e7a46 ('v3dv: implement VK_EXT_inline_uniform_block')
Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17536>

2 years agov3dv: don't allocate MAX_PUSH_CONSTANTS_SIZE bytes for the push constants UBO
Iago Toral Quiroga [Thu, 14 Jul 2022 06:58:06 +0000 (08:58 +0200)]
v3dv: don't allocate MAX_PUSH_CONSTANTS_SIZE bytes for the push constants UBO

We have code in there to allocate various segments of MAX_PUSH_CONSTANTS_SIZE
to handle the case of various draw calls in the same command buffer requiring
different push constants, so we are implicitly expecting it to be larger than
this. In fact, this only works now because when we allocate a BO we are always
at least allocating a full page, so the least we ever allocate is 4096 bytes,
so be explicit about it to avoid confusion.

Also, since we were always mapping MAX_PUSH_CONSTANTS_SIZE and the mapping
always starts at the beginning of the BO, it looks like after the first copy
when the resource offset is not zero, we would be writing outside the mapped
range. Always map the full size of the BO instead to ensure this doesn't
happen.

Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17536>

2 years agov3dv: limit upload of indirect push constant data
Iago Toral Quiroga [Thu, 14 Jul 2022 08:29:36 +0000 (10:29 +0200)]
v3dv: limit upload of indirect push constant data

We have been always uploading MAX_PUSH_CONSTANTS_SIZE but now that
we track the actual size of the push constant buffer we can use
this instead.

Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17536>

2 years agov3dv: move push constant data to the command buffer state
Iago Toral Quiroga [Wed, 13 Jul 2022 10:44:45 +0000 (12:44 +0200)]
v3dv: move push constant data to the command buffer state

Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17536>

2 years agov3dv: only save/restore push constant data for meta operations if needed
Iago Toral Quiroga [Wed, 13 Jul 2022 09:29:02 +0000 (11:29 +0200)]
v3dv: only save/restore push constant data for meta operations if needed

If the command buffer didn't have any push constants or the meta
operation didn't write any new constants we don't need to restore
the state.

Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17536>

2 years agoRevert "vulkan: Detect pNext chain loops in vk_foreach_struct()"
Jason Ekstrand [Tue, 19 Jul 2022 04:48:59 +0000 (23:48 -0500)]
Revert "vulkan: Detect pNext chain loops in vk_foreach_struct()"

This reverts commit 4c56b535f5b415c24805dccc8d147a60af3f03e3.

2 years agoanv: move restart index to gfx state
Lionel Landwerlin [Mon, 4 Jul 2022 07:05:21 +0000 (10:05 +0300)]
anv: move restart index to gfx state

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17601>

2 years agoanv: fix primitive topology dynamic state emission on gfx7
Lionel Landwerlin [Sat, 2 Jul 2022 19:29:41 +0000 (22:29 +0300)]
anv: fix primitive topology dynamic state emission on gfx7

This dynamic state uses the pipeline information so it needs to be
reemitted whenever the pipeline changes.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Cc: mesa-stable
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17601>

2 years agoanv: name non dynamic state fields correctly
Lionel Landwerlin [Sun, 23 Jan 2022 14:20:46 +0000 (16:20 +0200)]
anv: name non dynamic state fields correctly

Those fields have confusing names. They hold non dynamic state,
specified at pipeline creation that we copy into the dynamic state of
the command buffer whenever we bind a pipeline. This non dynamic state
might get picked up in the dynamically emitted instructions of the 3D
pipeline because our HW packets are not exactly splitted like the
Vulkan API.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17601>

2 years agoanv: reorder & document fields of anv_graphics_pipeline
Lionel Landwerlin [Sun, 23 Jan 2022 14:15:10 +0000 (16:15 +0200)]
anv: reorder & document fields of anv_graphics_pipeline

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17601>

2 years agoanv: move CreateRayTracingPipelines to common code
Lionel Landwerlin [Fri, 28 Jan 2022 11:22:26 +0000 (13:22 +0200)]
anv: move CreateRayTracingPipelines to common code

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17601>

2 years agoanv: move CreateComputePipelines to common code
Lionel Landwerlin [Sat, 22 Jan 2022 20:33:35 +0000 (22:33 +0200)]
anv: move CreateComputePipelines to common code

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17601>

2 years agoanv: move CreateGraphicsPipelines to common code
Lionel Landwerlin [Sat, 22 Jan 2022 20:26:46 +0000 (22:26 +0200)]
anv: move CreateGraphicsPipelines to common code

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17601>

2 years agoanv: rename internal function for consistency
Lionel Landwerlin [Sat, 22 Jan 2022 12:47:59 +0000 (14:47 +0200)]
anv: rename internal function for consistency

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17601>

2 years agoanv: Don't use the wrong ARRAY_SIZE
Jason Ekstrand [Fri, 15 Jul 2022 10:19:12 +0000 (05:19 -0500)]
anv: Don't use the wrong ARRAY_SIZE

Even though this doesn't change anything, it's not good to use an
ARRAY_SIZE for one array to iterate over another.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17601>

2 years agoanv: split graphics nir loading
Lionel Landwerlin [Fri, 21 Jan 2022 22:35:24 +0000 (00:35 +0200)]
anv: split graphics nir loading

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17601>

2 years agoanv: break up anv_pipeline_compile_graphics()
Lionel Landwerlin [Fri, 21 Jan 2022 12:36:34 +0000 (14:36 +0200)]
anv: break up anv_pipeline_compile_graphics()

This function is pretty overwhelming.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17601>

2 years agoanv: simplify dynamic buffer count in pipeline layout
Lionel Landwerlin [Wed, 23 Mar 2022 15:05:15 +0000 (17:05 +0200)]
anv: simplify dynamic buffer count in pipeline layout

anv_descriptor_set_layout already has the information we're gather
here.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17601>

2 years agoanv: remove local computation of dynamic states
Lionel Landwerlin [Fri, 21 Jan 2022 12:35:04 +0000 (14:35 +0200)]
anv: remove local computation of dynamic states

This bit mask is already computed in
anv_graphics_pipeline::dynamic_states in anv_graphics_pipeline_init().

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17601>

2 years agovulkan: Detect pNext chain loops in vk_foreach_struct()
Jason Ekstrand [Mon, 18 Jul 2022 14:05:59 +0000 (09:05 -0500)]
vulkan: Detect pNext chain loops in vk_foreach_struct()

This implements the "tortoise and the hare" algorithm for detecting
cycles in graphs.  We use the caller's iterator as the hare and our own
internal copy as the tortoise.  Conveniently, VkBaseOutStructure (and
VkBaseInStructure which is identical except the pointer type on pNext)
have a pointer we can use for the tortoise and an sType which we can use
for a counter to ensure we only increment the tortose every other loop
iteration.

There are more efficient algorithms than tortoise and hare but they
require allocating memory for something like a hash set of seen nodes.
Since this for debug purposes only, it's ok for it to be a bit
inefficient in the case where it hits the assert.  In the usual case of
no loops, it's the same runtime efficiency as the unchecked version
except that it does a tiny bit of math and 50% more pointer chases.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17596>

2 years agointel/fs: Simplify brw_barycentric_mode() args.
Emma Anholt [Wed, 6 Jul 2022 20:01:24 +0000 (13:01 -0700)]
intel/fs: Simplify brw_barycentric_mode() args.

Reduce a bit of mode lookup noise I was tracing through trying to resolve
the previous bug.

Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17381>

2 years agointel/fs: Set NonPerspectiveBarycentricEnable when the interpolator needs it.
Lionel Landwerlin [Thu, 7 Jul 2022 09:24:38 +0000 (12:24 +0300)]
intel/fs: Set NonPerspectiveBarycentricEnable when the interpolator needs it.

[anholt: changed to make all drivers do the right thing by moving the
payload barycentric check into the compiler]

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com>
Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17381>

2 years agoci: move apitrace instalation outside of x86_test-vk
David Heidelberg [Sat, 16 Jul 2022 13:21:38 +0000 (15:21 +0200)]
ci: move apitrace instalation outside of x86_test-vk

It'll be re-used by piglit traces.

Reviewed-by: Guilherme Gallo <guilherme.gallo@collabora.com>
Reviewed-by: Andres Gomez <agomez@igalia.com>
Signed-off-by: David Heidelberg <david.heidelberg@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17573>

2 years agofreedreno/ir3: Enable core NIR's 16-bit ALU optimizations.
Emma Anholt [Thu, 14 Jul 2022 18:33:19 +0000 (11:33 -0700)]
freedreno/ir3: Enable core NIR's 16-bit ALU optimizations.

In addition to hopefully generating shorter code, this optimizes out a
comparison of a mediump-cast value in
dEQP-GLES2.functional.shaders.algorithm.rgb_to_hsl_fragment passed
through ANGLE, and allows the test to pass.  We believe it to be a
test bug, but emitting better code like apparently everyone else does
is also a fine result.

No change on GLES gfxbench shaders.

Fixes: #6585
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17546>

2 years agovulkan: Common vk_format_get_component_bits
Konstantin Seurer [Wed, 13 Jul 2022 12:20:36 +0000 (14:20 +0200)]
vulkan: Common vk_format_get_component_bits

RADV and PowerVR use the same implementation.
Turnip does use a slightly modified version but the helper only has one
use -> just inline it and get rid of turnip's vk_format.h.

Signed-off-by: Konstantin Seurer <konstantin.seurer@gmail.com>
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17515>

2 years agobuild(glx): Fix build by adding missing deps
jheaff1 [Sun, 17 Jul 2022 22:04:23 +0000 (23:04 +0100)]
build(glx): Fix build by adding missing deps

dri3_glx.c includes xshmfence and glxcmds.c includes xf86vm, neither of
which are listed as dependencies of the glx lib in the meson.build file.
Consequently, those files would fail to compile on machines that did not
have xshmfence and xf86vm installed globally. This commit rectifies the
issue by adding the missing dependencies

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17585>

2 years agomesa/st: add implicit zeroing of clipdistance array
Mike Blumenkrantz [Tue, 12 Jul 2022 17:57:31 +0000 (13:57 -0400)]
mesa/st: add implicit zeroing of clipdistance array

GL drivers have an implicit default of "in bounds" for unwritten clipdistance
values, but some (layered) drivers have to deal with api mismatch which
prevents that implicit value from being used after the shader
gets mangled by various compiler passes

to avoid issues here, write out all members of the clipdistance array
with zeroes at the very start of the shader such that any values the
shader actually writes will naturally overwrite the implicit zero and
any unwritten values will now be written as zero

fixes #6845

Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17498>

2 years agozink: tu a630 baseline update
Mike Blumenkrantz [Wed, 13 Jul 2022 22:00:13 +0000 (18:00 -0400)]
zink: tu a630 baseline update

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17606>

2 years agozink: nv baseline update
Mike Blumenkrantz [Wed, 13 Jul 2022 22:00:04 +0000 (18:00 -0400)]
zink: nv baseline update

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17606>

2 years agokopper: Implement {EGL,GLX}_EXT_buffer_age
Adam Jackson [Tue, 12 Jul 2022 18:26:15 +0000 (14:26 -0400)]
kopper: Implement {EGL,GLX}_EXT_buffer_age

Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17527>

2 years agozink: break out tc/trace context unwrapping
Mike Blumenkrantz [Fri, 15 Jul 2022 12:26:04 +0000 (08:26 -0400)]
zink: break out tc/trace context unwrapping

Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17527>

2 years agovenus: filter out VK_EXT_physical_device_drm on the driver side
Yiwei Zhang [Mon, 18 Jul 2022 04:48:29 +0000 (04:48 +0000)]
venus: filter out VK_EXT_physical_device_drm on the driver side

Fixes: a1a22862c62 ("venus: implement VK_EXT_physical_device_drm")

Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Ryan Neph <ryanneph@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17591>

2 years agokms/dri: add mutex lock around map/unmap
Dave Airlie [Thu, 14 Jul 2022 00:34:04 +0000 (10:34 +1000)]
kms/dri: add mutex lock around map/unmap

this can get called from multiple threads with the recent llvmpipe
overlapping rendering changes, so make sure to lock around the
map/unmapping so they can't race.

This should fixes some crashes seen with kwin.

Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Tested-by: Adam Williamson (Fedora)
Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17531>

2 years agoradv: implement PS epilogs
Samuel Pitoiset [Thu, 14 Jul 2022 16:54:20 +0000 (18:54 +0200)]
radv: implement PS epilogs

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17485>

2 years agoaco: add support for compiling PS epilogs
Samuel Pitoiset [Thu, 14 Jul 2022 16:53:46 +0000 (18:53 +0200)]
aco: add support for compiling PS epilogs

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17485>

2 years agoaco: refactor export_fs_mrt_color() for PS epilogs preparation
Samuel Pitoiset [Fri, 15 Jul 2022 06:28:58 +0000 (08:28 +0200)]
aco: refactor export_fs_mrt_color() for PS epilogs preparation

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17485>

2 years agoradv,aco: rename radv_aco_build_prolog to radv_aco_build_shader_part
Samuel Pitoiset [Tue, 12 Jul 2022 09:24:23 +0000 (11:24 +0200)]
radv,aco: rename radv_aco_build_prolog to radv_aco_build_shader_part

Will be re-used for PS epilogs.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17485>

2 years agoaco: add aco_postprocess_shader() helper
Samuel Pitoiset [Fri, 24 Jun 2022 14:17:07 +0000 (16:17 +0200)]
aco: add aco_postprocess_shader() helper

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17485>

2 years agoaco: prevent adding DONE/VM to the last export if the FS has an epilog
Samuel Pitoiset [Fri, 24 Jun 2022 12:38:59 +0000 (14:38 +0200)]
aco: prevent adding DONE/VM to the last export if the FS has an epilog

If the fragment shader exports MRTZ and the epilog some color exports,
DONE/VM should be added to the last export.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17485>

2 years agoaco: do not abort if the FS doesn't export anything but has an epilog
Samuel Pitoiset [Fri, 24 Jun 2022 12:39:10 +0000 (14:39 +0200)]
aco: do not abort if the FS doesn't export anything but has an epilog

The main fragment shader can only export MRTZ (if present) and the
epilog will export colors.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17485>

2 years agoaco: emit p_jump_to_epilog if the main fragment shader has an epilog
Samuel Pitoiset [Fri, 24 Jun 2022 14:03:52 +0000 (16:03 +0200)]
aco: emit p_jump_to_epilog if the main fragment shader has an epilog

MRTZ is still exported from the main shader.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17485>

2 years agoaco: add new pseudo instruction p_jump_to_epilog
Samuel Pitoiset [Fri, 24 Jun 2022 12:17:29 +0000 (14:17 +0200)]
aco: add new pseudo instruction p_jump_to_epilog

The first operand of this new pseudo-instruction is a 64-bit SGPR for
the continue PC, followed by a variable list of fixed VGPRS for the
color exports which are the PS epilog inputs.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17485>

2 years agoradv: add a function that declares PS epilog shader arguments
Samuel Pitoiset [Fri, 17 Jun 2022 14:28:31 +0000 (16:28 +0200)]
radv: add a function that declares PS epilog shader arguments

The PS epilog would be a "normal" compiled shader using RA, etc. It
will declare up to 8x4 VGPRs for all color exports.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17485>

2 years agoradv: declare a new user SGPR arg in FS for the epilog PC
Samuel Pitoiset [Fri, 17 Jun 2022 14:22:18 +0000 (16:22 +0200)]
radv: declare a new user SGPR arg in FS for the epilog PC

The main FS would have to jump to the PC of the PS epilog. Given that
shaders are allocated in the 32-bit addr space, one user SGPR is fine.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17485>

2 years agoradv,aco: introduce {radv,aco}_ps_epilog_key
Samuel Pitoiset [Fri, 17 Jun 2022 14:27:33 +0000 (16:27 +0200)]
radv,aco: introduce {radv,aco}_ps_epilog_key

To pass the necessary pipeline information for compiling PS epilogs.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17485>

2 years agoradv,aco: track if a fragment shader needs an epilog
Samuel Pitoiset [Fri, 17 Jun 2022 14:26:32 +0000 (16:26 +0200)]
radv,aco: track if a fragment shader needs an epilog

This is currently disabled but it will be used for testing first,
and then for graphics pipeline libraries.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17485>

2 years agofrontends/va: WA for ffmpeg 10bit encoding crash
Ruijing Dong [Tue, 12 Jul 2022 18:40:19 +0000 (14:40 -0400)]
frontends/va: WA for ffmpeg 10bit encoding crash

When doing 10bit encoding in ffmpeg it uses
VaDeriveImage, and that could result in missing
mapping the chroma buffer of the input frame.

This WA to disallow ffmpeg using VaDeriveImage
function, so that VaCreateImage and VaPutImage can
be used and WA the chroma buffer mapping issue.

Reviewed-by: Leo Liu <leo.liu@amd.com>
Signed-off-by: Ruijing Dong <ruijing.dong@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17472>

2 years agofrontends/va: do texture_map when needed
Ruijing Dong [Tue, 12 Jul 2022 13:42:58 +0000 (09:42 -0400)]
frontends/va: do texture_map when needed

When map buffer, and its target is texture,
texture_map/unmap need to be used.

Reviewed-by: Leo Liu <leo.liu@amd.com>
Signed-off-by: Ruijing Dong <ruijing.dong@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17472>