platform/upstream/mesa.git
2 years agoanv: remove device features handling now in runtime
Lionel Landwerlin [Tue, 28 Jun 2022 07:49:39 +0000 (10:49 +0300)]
anv: remove device features handling now in runtime

v2: Keep VkPhysicalDeviceBufferDeviceAddressFeaturesEXT (Jason)

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/17272>

2 years agolima: fix buffer overallocation for index, vertex and constant buffers
Vasily Khoruzhick [Tue, 28 Jun 2022 15:58:55 +0000 (08:58 -0700)]
lima: fix buffer overallocation for index, vertex and constant buffers

24be0119016f ("lima: wire up MSAA 4x support") switched to aligning all the
buffers to tile size and it resulted in allocating 16x more memory for
index, vertex and constant buffers.

We only want to align textures and render targets to tile size, not
other buffers, so restore old logic, but relax it.

Fixes: 24be0119016f ("lima: wire up MSAA 4x support")
Acked-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
Reviewed-by: Erico Nunes <nunes.erico@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17283>

2 years agoradv: do not emit SQTT user data packets on the SDMA queue
Samuel Pitoiset [Mon, 27 Jun 2022 15:33:36 +0000 (17:33 +0200)]
radv: do not emit SQTT user data packets on the SDMA queue

They aren't supported and lead to GPU hangs.

Reported-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17256>

2 years agoanv: disable non uniform indexing of UBOs
Lionel Landwerlin [Thu, 23 Jun 2022 07:33:33 +0000 (10:33 +0300)]
anv: disable non uniform indexing of UBOs

The feature we wanted to enable in 710393b3aa4a was
descriptorBindingUniformBufferUpdateAfterBind.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Fixes: 710393b3aa4a ("anv: enable UBO indexing")
Reviewed-by: Francisco Jerez <currojerez@riseup.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17200>

2 years agodraw/cliptest: add support for guard band + full Z
Dave Airlie [Tue, 28 Jun 2022 02:43:21 +0000 (12:43 +1000)]
draw/cliptest: add support for guard band + full Z

This is hit using lavapipe with zink on top running
dEQP-GL45-ES31.functional.primitive_bounding_box.wide_points.global_state.vertex_tessellation_fragment.default_framebuffer_bbox_equal

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17270>

2 years agolavapipe: streamline xfb shader setup
Mike Blumenkrantz [Mon, 27 Jun 2022 18:02:19 +0000 (14:02 -0400)]
lavapipe: streamline xfb shader setup

this is a bit easier to read

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17268>

2 years agolavapipe: break out part of shader optimization into function
Mike Blumenkrantz [Mon, 27 Jun 2022 18:00:59 +0000 (14:00 -0400)]
lavapipe: break out part of shader optimization into function

used in (distant) future work

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17268>

2 years agozink: set PIPE_RESOURCE_FLAG_DONT_MAP_DIRECTLY for device-local resources
Mike Blumenkrantz [Wed, 22 Jun 2022 13:35:18 +0000 (09:35 -0400)]
zink: set PIPE_RESOURCE_FLAG_DONT_MAP_DIRECTLY for device-local resources

these can't be mapped, so ensure tc doesn't try to pass UNSYNCHRONIZED
maps and break the resources

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17187>

2 years agomesa/st: Fix border color type for stencil sampling
Connor Abbott [Tue, 21 Jun 2022 22:15:44 +0000 (00:15 +0200)]
mesa/st: Fix border color type for stencil sampling

When the stencil aspect of a depth+stencil texture is sampled, it's
actually integer. Also fixup st_translate_color() that assumed it was
float. This fixes the border color on zink+turnip.

v2: Add "|| texBaseFormat == GL_STENCIL_INDEX" to catch the case where
S8 is emulated as D24S8.

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

2 years agotu: Fix stencil border color with has_z24uint_s8uint
Connor Abbott [Tue, 21 Jun 2022 22:08:49 +0000 (00:08 +0200)]
tu: Fix stencil border color with has_z24uint_s8uint

On a650+ we use the new Z24UINT_S8UINT format to sample the stencil
aspect of D24S8, which returns stencil in the second component and also
uses the second integer component for the border color. However Vulkan
mandates that the first component is used for the stencil border color.
There's no workaround we know of, so we have to fall back to the old
behavior where there is a workaround. If we know the format, we can
fixup the border color ourselves though.

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

2 years agofreedreno/a6xx: Fix border color with Z24UINT_S8UINT
Connor Abbott [Mon, 20 Jun 2022 22:14:31 +0000 (00:14 +0200)]
freedreno/a6xx: Fix border color with Z24UINT_S8UINT

With this special format the border color is in the second component of
the f16 member (that's also used for 8-bit and 16-bit integer formats).
This means we have to fix it up.

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

2 years agofreedreno/fdl: Note border color constraints
Connor Abbott [Fri, 17 Jun 2022 15:41:14 +0000 (17:41 +0200)]
freedreno/fdl: Note border color constraints

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

2 years agofreedreno/a6xx: Use fdl format swizzle
Connor Abbott [Fri, 17 Jun 2022 14:29:00 +0000 (16:29 +0200)]
freedreno/a6xx: Use fdl format swizzle

This makes sure that we use a consistent swizzle between computing the
border color and the texture descriptor, and lets us delete the gallium
version.

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

2 years agofreedreno/a6xx: Fix border color swizzling
Connor Abbott [Fri, 17 Jun 2022 13:45:18 +0000 (15:45 +0200)]
freedreno/a6xx: Fix border color swizzling

From the API's point of view, border color replacement looks like this:

       --------------------
       | API Border Color |
       --------------------
               |
-----------    |    ----------------      ----------
| API fmt |-------->| User Swizzle |----->| Shader |
-----------         ----------------      ----------

From the HW point of view, it looks like this:

                    -------------------
                    | HW Border Color |
                    -------------------
                             |
----------     -----------   |   ---------------      ----------
| HW fmt |-----| HW swap |------>| Tex Swizzle |----->| Shader |
----------     -----------       ---------------      ----------

When the HW fmt + HW swap isn't enough to represent an API format, we
need to prepend our own swizzle to the the user's swizzle, so the tex
swizzle is a "format swizzle" composed with the user swizzle. However,
we don't want this format swizzle to be applied to border colors, so
there's a workaround in freedreno which is meant to undo the format
swizzle so that the HW border color with the format swizzle applied
equals the API border color, and everything is ok. However, on a6xx at
least it was incorrectly undoing the entire tex swizzle. This broke
border color with a user swizzle, because it was now effectively not
getting applied for the border color. It also made it seem like the user
swizzle is required for the workaround, which would have implications
for VK_EXT_border_color_swizzle with turnip, but it's not.

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

2 years agofreedreno/a6xx: Document border color/swizzle interaction
Connor Abbott [Thu, 16 Jun 2022 22:55:53 +0000 (00:55 +0200)]
freedreno/a6xx: Document border color/swizzle interaction

Make it clear that the swap happens before border color replacment but
the swizzle happens after.

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

2 years agoglsl: merge lower_buffer_access with lower_shared_reference
Timothy Arceri [Tue, 28 Jun 2022 04:43:21 +0000 (14:43 +1000)]
glsl: merge lower_buffer_access with lower_shared_reference

There are no longer any other users of lower_buffer_access so here
we just merge them to make the code easier to follow.

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

2 years agod3d12: Fix debug_printf format strings for cross platform builds
Sil Vilerino [Mon, 27 Jun 2022 17:46:34 +0000 (13:46 -0400)]
d3d12: Fix debug_printf format strings for cross platform builds

Reviewed-By: Jesse Natalie <jenatali@microsoft.com>
Tested-by: Andrew Falcon <bluestang2006@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17260>

2 years agovulkan_entrypoints_gen: For Windows ARM64EC, prefix symbols with '#'
Jesse Natalie [Mon, 27 Jun 2022 18:20:25 +0000 (11:20 -0700)]
vulkan_entrypoints_gen: For Windows ARM64EC, prefix symbols with '#'

Acked-by: Jason Ekstrand <jason.ekstrand@collabora.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17267>

2 years agoci: traces: switch to brotli compressed traces
David Heidelberg [Sat, 30 Apr 2022 12:27:11 +0000 (14:27 +0200)]
ci: traces: switch to brotli compressed traces

virgl: Also drop old pre-trim glxgears trace (cached).

Acked-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Acked-by: Emma Anholt <emma@anholt.net>
Signed-off-by: David Heidelberg <david.heidelberg@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17280>

2 years agoradv: Refactor lower_rt_derefs
Konstantin Seurer [Mon, 20 Jun 2022 18:27:31 +0000 (20:27 +0200)]
radv: Refactor lower_rt_derefs

Signed-off-by: Konstantin Seurer <konstantin.seurer@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17123>

2 years agoradv: Fix the t comparison for triangles
Konstantin Seurer [Sat, 18 Jun 2022 10:22:01 +0000 (12:22 +0200)]
radv: Fix the t comparison for triangles

The accept range is defined like this:
Triangles: tmin < t < tmax
AABBs: tmin <= t <= tmax

(See https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#ray-intersection-candidate-determination)

Signed-off-by: Konstantin Seurer <konstantin.seurer@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17123>

2 years agoradv: Introduce an enum for the any hit status
Konstantin Seurer [Sat, 18 Jun 2022 09:15:12 +0000 (11:15 +0200)]
radv: Introduce an enum for the any hit status

Use enum values instead of magic constants.

Signed-off-by: Konstantin Seurer <konstantin.seurer@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17123>

2 years agoci/lava: Improve result parsing regex
Guilherme Gallo [Tue, 21 Jun 2022 19:30:34 +0000 (16:30 -0300)]
ci/lava: Improve result parsing regex

LAVA job logs have an ongoing problem of message interleaving with kmsg.
So any kernel dumps and LAVA signals (which are being printed in kmsg)
will have a chance to clutter the pattern matching for `hwci: mesa:
(pass|fail)` line.

v2:
- Add an 1 second sleep before exiting the test script, to give enough
  time to print the result message without conflicting with LAVA ENDTC
  signal from kmsg

Closes: #6714

Signed-off-by: Guilherme Gallo <guilherme.gallo@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17175>

2 years agoetnaviv: switch depth mode when linear PE is used
Lucas Stach [Thu, 23 Jun 2022 18:17:54 +0000 (20:17 +0200)]
etnaviv: switch depth mode when linear PE is used

Early depth test is broken when the linear render target mode is used
and depth is written from the PE stage. It seems RA and PE disagree
about the cache layout in that case, so the RA sees unwritten/invalid
depth cache lines leading to random depth test fails. Early test works
fine if depth is written from the RA stage.

To work around this issue, detect the combination of linear RT, early
test and late write and switch to late test in that case.

Fixes: 53445284a427 ("etnaviv: add linear PE support")
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17215>

2 years agotu: Overhaul LRZ, implement on-GPU dir tracking and LRZ fast-clear
Danylo Piliaiev [Mon, 16 May 2022 10:41:02 +0000 (13:41 +0300)]
tu: Overhaul LRZ, implement on-GPU dir tracking and LRZ fast-clear

On-GPU LRZ direction tracking allows LRZ to support secondary cmdbufs,
reusing LRZ between renderpasses, and in future to support LRZ when
VK_KHR_dynamic_rendering is used.

With on-gpu tracking we have to be careful keeping LRZ state in sync
with underlying depth image, which means we should invalidate LRZ
when underlying image is changed or the view of image is different
from previous renderpass.

All of this resulted in LRZ logic being thinly spread through the code,
making it hard to understand. So most of it was moved to tu_lrz.c.

For more details on past and new LRZ features see comment at the
top of tu_lrz.c.

Note about blob:
- Blob is much more happy to do LRZ_FLUSH, it flushes at the start
  of the renderpass, after binning, and at the end of the renderpass.
- Blob seem not to care about changes in depth image done via
  vkCmdCopyImage.

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/6347

Signed-off-by: Danylo Piliaiev <dpiliaiev@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16251>

2 years agofreedreno: document GRAS_UNKNOWN_810A
Danylo Piliaiev [Thu, 19 May 2022 17:32:57 +0000 (20:32 +0300)]
freedreno: document GRAS_UNKNOWN_810A

Signed-off-by: Danylo Piliaiev <dpiliaiev@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16251>

2 years agofreedreno: Document a650-specific CP_REG_WRITE flag
Connor Abbott [Fri, 13 Nov 2020 18:15:54 +0000 (19:15 +0100)]
freedreno: Document a650-specific CP_REG_WRITE flag

v2: Danylo: clarified previously unknown GRAS_LRZ_CNTL field.

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

2 years agofreedreno: Document rest of GRAS_LRZ_CNTL, clarify UNK_25 event
Danylo Piliaiev [Fri, 13 May 2022 14:10:36 +0000 (17:10 +0300)]
freedreno: Document rest of GRAS_LRZ_CNTL, clarify UNK_25 event

Signed-off-by: Danylo Piliaiev <dpiliaiev@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16251>

2 years agomeson: drop dladdr check on win32
Michel Zou [Mon, 27 Jun 2022 19:08:40 +0000 (21:08 +0200)]
meson: drop dladdr check on win32

since !17208 there are 2 paths for disk_cache_get_function_identifier
on mingw: DETECT_OS_WINDOWS or HAVE_DLADDR (if dlfcn shims is present)

../src/util/disk_cache_os.c:47:1: error: redefinition of 'disk_cache_get_function_identifier'
   47 | disk_cache_get_function_identifier(void *ptr, struct mesa_sha1 *ctx)
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../src/util/disk_cache_os.c:36:
../src/util/disk_cache.h:121:1: note: previous definition of 'disk_cache_get_function_identifier' with type '_Bool(void *, struct _SHA1_CTX *)'
  121 | disk_cache_get_function_identifier(void *ptr, struct mesa_sha1 *ctx)

here we disable the dladdr path from meson for consistency with msvc

fixes: 2dcbe8727

Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Reviewed-by: Yonggang Luo <luoyonggang@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17261>

2 years agoci/dzn: Add pipeline cache tests to the include list
Boris Brezillon [Wed, 22 Jun 2022 09:01:19 +0000 (11:01 +0200)]
ci/dzn: Add pipeline cache tests to the include list

Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17140>

2 years agodzn: Cache pipeline info
Boris Brezillon [Wed, 22 Jun 2022 08:43:04 +0000 (10:43 +0200)]
dzn: Cache pipeline info

We are already caching DXIL shaders individually, but that forces us
to retrieve the NIR shader, do the linking and binding translation
steps, to finally query the cache for each DXIL shader. This pipeline
caching is about skipping those steps when we can.

Note that a graphics/compute pipeline cache entry doesn't contain the
DXIL shaders, but hashes to retrieve those shaders from the same cache.

Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17140>

2 years agodzn: Cache DXIL shaders
Boris Brezillon [Wed, 22 Jun 2022 08:32:41 +0000 (10:32 +0200)]
dzn: Cache DXIL shaders

This way we avoid the NIR -> DXIL translation when we have a cache hit.

Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17140>

2 years agodzn: Caculate a binding translation hash
Boris Brezillon [Wed, 22 Jun 2022 07:46:49 +0000 (09:46 +0200)]
dzn: Caculate a binding translation hash

Binding translation has an impact on the final DXIL shader, and this
binding translation depends on the pipeline layout. Let's extend the
adjust_var_bindings() pass to caculate a hash we can then use in the
DXIL shader hash caculation.

Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17140>

2 years agodzn: Cache NIR shaders
Boris Brezillon [Wed, 22 Jun 2022 07:12:51 +0000 (09:12 +0200)]
dzn: Cache NIR shaders

Saves us the SPIRV -> NIR translation, and all the lowering passes run
in dxil_spirv_nir_passes().

Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17140>

2 years agodzn: Move the compute shader compilation logic to a sub-function
Boris Brezillon [Wed, 22 Jun 2022 07:19:04 +0000 (09:19 +0200)]
dzn: Move the compute shader compilation logic to a sub-function

Will make things easier when we introduce shader caching.

Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17140>

2 years agodzn: Drop unneeded goto statement in dzn_compute_pipeline_create()
Boris Brezillon [Wed, 22 Jun 2022 07:33:12 +0000 (09:33 +0200)]
dzn: Drop unneeded goto statement in dzn_compute_pipeline_create()

The 'out' label is placed just after the if () block, we can thus
remove the 'goto out;' statement.

Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17140>

2 years agodzn: Add a generic cached blob wrapper
Boris Brezillon [Tue, 21 Jun 2022 15:12:17 +0000 (17:12 +0200)]
dzn: Add a generic cached blob wrapper

Basically what vk_pipeline_cache's raw_data_object abstraction provides,
but I'm not sure it makes sense to make it generic so I copied it here.
Might be more appropriate to make raw_data_object public.

Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17140>

2 years agodzn: Hash pipeline layout stages
Boris Brezillon [Tue, 21 Jun 2022 15:09:27 +0000 (17:09 +0200)]
dzn: Hash pipeline layout stages

DXIL shaders depend on the vulkan -> d3d12 binding translation done in
adjust_var_bindings(). In order to maximize our chances to re-use those
shaders, we need to hash the binding translation information and take
this hash into account when computing the DXIL shader hash.

Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17140>

2 years agodzn: Don't delegate binding translation to dxil_spirv_nir_passes()
Boris Brezillon [Tue, 21 Jun 2022 09:53:05 +0000 (02:53 -0700)]
dzn: Don't delegate binding translation to dxil_spirv_nir_passes()

We will need to hash var bindings if we want to cache DXIL shaders.
Let's move this pass to dzn_pipeline.c to prepare this transition.

Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17140>

2 years agodzn: Save a few indentation levels in graphics_pipeline_compile_shaders()
Boris Brezillon [Mon, 20 Jun 2022 10:43:46 +0000 (03:43 -0700)]
dzn: Save a few indentation levels in graphics_pipeline_compile_shaders()

We can compute the yz_flip_mode and force_sample_rate_shading outside
of the foreach_shader loop.

Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17140>

2 years agodzn: Use vk_to_mesa_shader_stage()
Boris Brezillon [Mon, 20 Jun 2022 10:33:32 +0000 (03:33 -0700)]
dzn: Use vk_to_mesa_shader_stage()

Use vk_to_mesa_shader_stage() to convert a VkShaderStageFlagBits into
its gl_shader_stage counterpart.

Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17140>

2 years agodzn: Fix potential nir_shader leak
Boris Brezillon [Mon, 20 Jun 2022 10:08:52 +0000 (03:08 -0700)]
dzn: Fix potential nir_shader leak

We leak the nir_shader object f a failure happens between the NIR
shader creation and the DXIL compilation. Let's drop the local
nir_shader pointer and use the one in the graphics_pipeline object
to avoid that.

Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17140>

2 years agodzn: Let dzn_pipeline_init() initialize the root signature in the stream
Boris Brezillon [Fri, 17 Jun 2022 17:51:59 +0000 (10:51 -0700)]
dzn: Let dzn_pipeline_init() initialize the root signature in the stream

Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17140>

2 years agodzn: Drop unused allocator passed to dzn_graphics_pipeline_create()
Boris Brezillon [Fri, 17 Jun 2022 17:45:17 +0000 (19:45 +0200)]
dzn: Drop unused allocator passed to dzn_graphics_pipeline_create()

Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17140>

2 years agodzn: Drop useless while(link_mask != 0)
Boris Brezillon [Fri, 17 Jun 2022 17:43:53 +0000 (19:43 +0200)]
dzn: Drop useless while(link_mask != 0)

That's not a `do {} while();`, just a simple `while() {}`, the second
while statement is a NOP.

Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17140>

2 years agodzn: Pass the maximum stream size to d3d12_pipeline_state_stream_new_desc()
Boris Brezillon [Fri, 17 Jun 2022 17:34:19 +0000 (10:34 -0700)]
dzn: Pass the maximum stream size to d3d12_pipeline_state_stream_new_desc()

This way we can use d3d12_pipeline_state_stream_new_desc() directly
without doing

   if (type == GRAPHICS)
      d3d12_gfx_pipeline_state_stream_new_desc()
   else
      d3d12_compute_pipeline_state_stream_new_desc()

Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17140>

2 years agodzn: Use d3d12_compute_pipeline_state_stream_new_desc() in the compute path
Boris Brezillon [Fri, 17 Jun 2022 17:28:14 +0000 (10:28 -0700)]
dzn: Use d3d12_compute_pipeline_state_stream_new_desc() in the compute path

Fixes: 9feda65a83c ("dzn: Use CreatePipelineState()")
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17140>

2 years agodzn: Fix assertion in d3d12_pipeline_state_stream_new_desc()
Boris Brezillon [Fri, 17 Jun 2022 17:26:46 +0000 (10:26 -0700)]
dzn: Fix assertion in d3d12_pipeline_state_stream_new_desc()

Fixes: 9feda65a83c ("dzn: Use CreatePipelineState()")
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17140>

2 years agodzn: Add missing D3D12_CACHED_PIPELINE_STATE to MAX_COMPUTE_PIPELINE_STATE_STREAM_SIZE
Boris Brezillon [Fri, 17 Jun 2022 17:08:36 +0000 (19:08 +0200)]
dzn: Add missing D3D12_CACHED_PIPELINE_STATE to MAX_COMPUTE_PIPELINE_STATE_STREAM_SIZE

Fixes: 9feda65a83c ("dzn: Use CreatePipelineState()")
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17140>

2 years agodzn: Drop dzn_pipeline_cache.c
Boris Brezillon [Tue, 14 Jun 2022 09:39:24 +0000 (02:39 -0700)]
dzn: Drop dzn_pipeline_cache.c

The core provides a conformant pipeline cache implementation, let's
use it.

Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17140>

2 years agodzn: Initialize UUIDs
Boris Brezillon [Thu, 23 Jun 2022 11:06:54 +0000 (04:06 -0700)]
dzn: Initialize UUIDs

Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17140>

2 years agodzn: Fix indentation
Boris Brezillon [Mon, 20 Jun 2022 11:52:14 +0000 (13:52 +0200)]
dzn: Fix indentation

Replace tabs by spaces

Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17140>

2 years agopytracediff: implement pager ('less') invocation internally
Matti Hamalainen [Mon, 20 Jun 2022 11:20:09 +0000 (14:20 +0300)]
pytracediff: implement pager ('less') invocation internally

In order to get rid of the ntracediff.sh wrapper script, implement
invocation of 'less' internally, if the stdout is determined to
be a tty. Otherwise just print out normally.

Signed-off-by: Matti Hamalainen <ccr@tnsp.org>
Acked-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Reviewed-by: Dylan Baker <dylan@pnwbakers.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17135>

2 years agopytracediff: change how 'junk' calls are handled
Matti Hamalainen [Sun, 19 Jun 2022 18:28:42 +0000 (21:28 +0300)]
pytracediff: change how 'junk' calls are handled

Instead of discarding them at parsing phase, let the difflib
SequenceMatcher always ignore them, and optionally suppress
them from output if -I/--ignore-junk option is given.

Signed-off-by: Matti Hamalainen <ccr@tnsp.org>
Acked-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Reviewed-by: Dylan Baker <dylan@pnwbakers.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17135>

2 years agopytracediff: make -M ("method only") option print arguments for differing calls
Matti Hamalainen [Tue, 25 Jan 2022 13:27:34 +0000 (15:27 +0200)]
pytracediff: make -M ("method only") option print arguments for differing calls

Basically implement the last item on the original feature request list of #4609.

Example: ./pytracediff.py good.xml bad.xml -NM

Or suppress common calls completely via -C, e.g. -NC etc.

Signed-off-by: Matti Hamalainen <ccr@tnsp.org>
Acked-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Reviewed-by: Dylan Baker <dylan@pnwbakers.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17135>

2 years agopytracediff: add per-line difference highlighting for blocks
Matti Hamalainen [Mon, 24 Jan 2022 21:02:48 +0000 (23:02 +0200)]
pytracediff: add per-line difference highlighting for blocks

Highlight differing _lines_ in the differing blocks, with somewhat
different ANSI colors.

Signed-off-by: Matti Hamalainen <ccr@tnsp.org>
Acked-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Reviewed-by: Dylan Baker <dylan@pnwbakers.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17135>

2 years agogallium/tools: reimplement tracediff completely in Python
Matti Hamalainen [Fri, 21 Jan 2022 21:43:25 +0000 (23:43 +0200)]
gallium/tools: reimplement tracediff completely in Python

The limitations of current approach for Gallium trace diffing via
'tracediff.sh' are becoming all too apparent, as we are first dumping
both trace to text and performing plain line-based sdiff on them.

This obviously loses the context of calls and sometimes results in
confusing diffs when subsequent calls are similar enough. It also
prevents us from formatting the diff output in ways that would
benefit readability.

In attempt to rectify the situation, reimplement the diffing completely
in Python, using difflib and adding the necessary plumbing into the trace
model objects etc.

Signed-off-by: Matti Hamalainen <ccr@tnsp.org>
Acked-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Reviewed-by: Dylan Baker <dylan@pnwbakers.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17135>

2 years agogallium/tools: add option for ignoring junk calls in trace dumper
Matti Hamalainen [Fri, 21 Jan 2022 21:35:33 +0000 (23:35 +0200)]
gallium/tools: add option for ignoring junk calls in trace dumper

Previously tracediff.sh used postprocessing sed-script to remove unwanted
calls from the dump output. Instead of that, add option to parse.py to
ignore a list of calls at parsing phase. Currently this list is hardcoded
in parse.py.

Also clean up the trace model code and pointer tracking a bit to avoid
static state in Pointer class.

Signed-off-by: Matti Hamalainen <ccr@tnsp.org>
Acked-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Reviewed-by: Dylan Baker <dylan@pnwbakers.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17135>

2 years agotrace: Allow to control nir dumping via an environment variable.
Jose Fonseca [Mon, 27 Jun 2022 18:38:19 +0000 (19:38 +0100)]
trace: Allow to control nir dumping via an environment variable.

As requested by Mike Blumenkrantz.

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

2 years agotrace: Bring state dump up to speed.
Jose Fonseca [Thu, 16 Jun 2022 10:06:31 +0000 (11:06 +0100)]
trace: Bring state dump up to speed.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17107>

2 years agotrace: Parse character data more efficiently.
Jose Fonseca [Thu, 16 Jun 2022 10:06:12 +0000 (11:06 +0100)]
trace: Parse character data more efficiently.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17107>

2 years agotrace: Dump NIR.
Jose Fonseca [Thu, 16 Jun 2022 10:05:48 +0000 (11:05 +0100)]
trace: Dump NIR.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17107>

2 years agolavapipe: Prevent mapping buffers beyond their size.
Jose Fonseca [Thu, 16 Jun 2022 08:28:34 +0000 (09:28 +0100)]
lavapipe: Prevent mapping buffers beyond their size.

This was breaking trace driver serialization, since it relies upon the
transfer box to know what to serialize.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17107>

2 years agotrace: Fix framebuffer state serialization.
Jose Fonseca [Thu, 16 Jun 2022 08:27:33 +0000 (09:27 +0100)]
trace: Fix framebuffer state serialization.

Ensure the argument name is serialized "state" not, "&tr_ctx->unwrapped_state".

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17107>

2 years agodzn: Hook-up device-lost detection
Boris Brezillon [Mon, 27 Jun 2022 08:23:10 +0000 (10:23 +0200)]
dzn: Hook-up device-lost detection

Provide a vk_device::check_status() implementation so the code can
call it at key moments to detect when a device-lost event (device-removed
in D3D12) has been received.

Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17249>

2 years agoradv: Use vk_pipeline_hash_shader_stage()
Boris Brezillon [Wed, 22 Jun 2022 17:02:44 +0000 (19:02 +0200)]
radv: Use vk_pipeline_hash_shader_stage()

Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17186>

2 years agoradv: Kill unused fs_m local var in radv_create_shaders()
Boris Brezillon [Wed, 22 Jun 2022 21:27:43 +0000 (23:27 +0200)]
radv: Kill unused fs_m local var in radv_create_shaders()

Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17186>

2 years agotu: Use vk_pipeline_hash_shader_stage()
Boris Brezillon [Wed, 22 Jun 2022 16:10:12 +0000 (18:10 +0200)]
tu: Use vk_pipeline_hash_shader_stage()

Acked-by: Emma Anholt <emma@anholt.net>
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17186>

2 years agov3dv: Use vk_pipeline_hash_shader_stage()
Boris Brezillon [Wed, 22 Jun 2022 16:08:03 +0000 (18:08 +0200)]
v3dv: Use vk_pipeline_hash_shader_stage()

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

2 years agov3dv: Fix nir_shader leaks in v3dv_meta_{clear,copy}()
Boris Brezillon [Wed, 22 Jun 2022 23:45:03 +0000 (01:45 +0200)]
v3dv: Fix nir_shader leaks in v3dv_meta_{clear,copy}()

Reported-by: Jesse Natalie <jenatali@microsoft.com>
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17186>

2 years agoanv: Use vk_pipeline_hash_shader_stage()
Boris Brezillon [Wed, 22 Jun 2022 16:07:40 +0000 (18:07 +0200)]
anv: Use vk_pipeline_hash_shader_stage()

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

2 years agovulkan: Add a vk_pipeline_hash_shader_stage() helper
Boris Brezillon [Wed, 22 Jun 2022 11:14:38 +0000 (04:14 -0700)]
vulkan: Add a vk_pipeline_hash_shader_stage() helper

All drivers implement some sort of shader hashing, but each of
them does it slightly differently. Let's provide a generic helper
to avoid new copies of the same logic and encourage new drivers
to use one of the already implemented function.

Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17186>

2 years agonir/serialize: Silence integer-overflow false positive
Boris Brezillon [Thu, 23 Jun 2022 12:39:34 +0000 (14:39 +0200)]
nir/serialize: Silence integer-overflow false positive

Use util_sign_extend() to silence the following integer-overflow
error.

src/compiler/nir/nir_serialize.c:1333:40: runtime error: left shift of 1000165000 by 13 places cannot be represented in type 'int'

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

2 years agonir/serialize: Support texop >= 16
Boris Brezillon [Thu, 23 Jun 2022 14:32:12 +0000 (16:32 +0200)]
nir/serialize: Support texop >= 16

Extend the packed_instr struct to support texops above
nir_texop_fragment_fetch_amd.

Fixes: 603e6ba972da ("nir: add two new texture ops for multisample fragment color/mask fetches")
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17186>

2 years agobroadcom/compiler: don't predicate postponed spills
Iago Toral Quiroga [Wed, 22 Jun 2022 07:43:30 +0000 (09:43 +0200)]
broadcom/compiler: don't predicate postponed spills

The postponed spill is predicated using the condition from the
last write, but this is only correct if the register was only
written once in the TMU sequence, or if it is always written with
the same predication.

While we could try to track whether this is the case or not, it
would make the postponed spill path even more complex than it
already is, so let's just avoid predicating these. We are already
discouraging TMU spilling of registers in the middle of TMU
sequences, so this should not be a very common case.

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

2 years agobroadcom/compiler: fix postponed TMU spills with multiple writes
Iago Toral Quiroga [Wed, 22 Jun 2022 06:29:42 +0000 (08:29 +0200)]
broadcom/compiler: fix postponed TMU spills with multiple writes

If we are spilling a register that is used in the middle of a TMU
sequence, we postpone the spill until the TMU sequence finishes,
at which point we inject the spill and rewrite the original
instruction to write to the new temp.

However, this doesn't work if the register is written multiple
times during the TMU sequence. In that scenario, we need to ensure
that all writes are rewritten to use the new temp, not just the last
one.

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

2 years agov3dv: fix leak
Iago Toral Quiroga [Wed, 22 Jun 2022 09:44:12 +0000 (11:44 +0200)]
v3dv: fix leak

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

2 years agozink: delete zink_resource_object::dt_has_data
Mike Blumenkrantz [Wed, 22 Jun 2022 17:24:33 +0000 (13:24 -0400)]
zink: delete zink_resource_object::dt_has_data

this should be on the swapchain image

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

2 years agozink: use kopper_displaytarget type directly
Mike Blumenkrantz [Wed, 22 Jun 2022 16:02:14 +0000 (12:02 -0400)]
zink: use kopper_displaytarget type directly

casting this all over is super annoying and unnecessary

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

2 years agozink: acquire swapchain images on image map
Mike Blumenkrantz [Tue, 21 Jun 2022 20:35:36 +0000 (16:35 -0400)]
zink: acquire swapchain images on image map

this is a weird one

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

2 years agozink: no-op pixmap frontbuffer flush calls
Mike Blumenkrantz [Tue, 21 Jun 2022 20:32:17 +0000 (16:32 -0400)]
zink: no-op pixmap frontbuffer flush calls

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

2 years agozink: delete zink_resource_object::acquire
Mike Blumenkrantz [Tue, 21 Jun 2022 20:25:32 +0000 (16:25 -0400)]
zink: delete zink_resource_object::acquire

this was duplicated from the swapchain object for convenience, but really
it just leads to desync if a swapchain is shared, so use the swapchain
one instead

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

2 years agozink: ensure pending present flushes are handled during frontbuffer flush
Mike Blumenkrantz [Tue, 21 Jun 2022 20:24:25 +0000 (16:24 -0400)]
zink: ensure pending present flushes are handled during frontbuffer flush

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

2 years agozink: flag batch as having work during frontbuffer flush
Mike Blumenkrantz [Tue, 21 Jun 2022 19:16:14 +0000 (15:16 -0400)]
zink: flag batch as having work during frontbuffer flush

avoids having the flush deferred

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

2 years agozink: improve no-op acquire detection
Mike Blumenkrantz [Tue, 21 Jun 2022 15:22:41 +0000 (11:22 -0400)]
zink: improve no-op acquire detection

the swapchain may have successfully completed the acquire in a previous
batch, in which case a new acquire is not needed

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

2 years agozink: remove unnecessary code in kopper readback acquire
Mike Blumenkrantz [Tue, 21 Jun 2022 01:46:21 +0000 (21:46 -0400)]
zink: remove unnecessary code in kopper readback acquire

this used to be important but no longer is, so modify the loop
code to handle this case implicitly

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

2 years agozink: remove broken kopper assert
Mike Blumenkrantz [Tue, 21 Jun 2022 01:36:58 +0000 (21:36 -0400)]
zink: remove broken kopper assert

in a single-buffered scenario this can and does happen

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

2 years agozink: use better determination for handling swapchain acquire submits
Mike Blumenkrantz [Mon, 20 Jun 2022 16:33:27 +0000 (12:33 -0400)]
zink: use better determination for handling swapchain acquire submits

if the swapchain has data, it has already passed through this function and
thus does not need to attempt to synchronize another swapchain acquire
for the same image

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

2 years agozink: move 'acquired' flag onto swapchain struct
Mike Blumenkrantz [Tue, 21 Jun 2022 14:59:55 +0000 (10:59 -0400)]
zink: move 'acquired' flag onto swapchain struct

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

2 years agozink: move to AoS for storing swapchain struct data
Mike Blumenkrantz [Wed, 22 Jun 2022 15:46:35 +0000 (11:46 -0400)]
zink: move to AoS for storing swapchain struct data

this is a bit less cumbersome

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

2 years agozink: track whether current swapchain has data
Mike Blumenkrantz [Mon, 20 Jun 2022 16:30:23 +0000 (12:30 -0400)]
zink: track whether current swapchain has data

duplicated from resource object since swapchains can be shared

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

2 years agozink: fix kopper_acquire return value
Mike Blumenkrantz [Mon, 20 Jun 2022 16:29:19 +0000 (12:29 -0400)]
zink: fix kopper_acquire return value

this should be a VkResult

Fixes: ab1941fc0e9 ("zink: handle zombie swapchains")

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

2 years agolima: wire up MSAA 4x support
Vasily Khoruzhick [Fri, 26 Nov 2021 07:56:41 +0000 (23:56 -0800)]
lima: wire up MSAA 4x support

Utgard supports MSAA 4x, so wire it up.

RSW bits were already REd by Luc, the only remaining part was storing
non-resolved buffers, reloading them (including for depth/stencil) and
doing MSAA resolve.

To store non-resolved buffer we need to set mrt_pitch and mrt_bits
registers in WB, and to resolve non-resolved buffer we need to reload
it into individual samples and then write out with mrt_bits = 0, it's
now done by lima blitter.

We also need to do resolve on transfer_map() of multi-sampled buffers,
so utilize u_transfer_helper for that.

As a side fix, it turns out that our wb_reg definition wasn't correct,
'zero' isn't always zero, it's set if we need to swap channels, and
it goes before mrt_bits. mrt_bits actually enables multiple MRTs,
so this commit renames 'zero' to 'flags' and changes its position.

If mrt_bits == 0 and MSAA is enabled, GPU does resolve
in place, to expose this functionality we set PIPE_CAP_SURFACE_SAMPLE_COUNT.

Fixes dEQP-GLES2.functional.multisample.*

Reviewed-by: Erico Nunes <nunes.erico@gmail.com>
Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13963>

2 years agoci/turnip: Trim the a630 VK run a bit.
Emma Anholt [Tue, 21 Jun 2022 21:37:48 +0000 (14:37 -0700)]
ci/turnip: Trim the a630 VK run a bit.

We have a lot of spilling coverage in a618 pre-merge, don't do it all (~2
minutes) here.  Also, force-gmem touch testing should probably test less than
the default run does!

This should help make up for having added the tu-zink run.

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

2 years agoci/turnip: Test traces on turnip using zink.
Emma Anholt [Tue, 13 Jul 2021 23:41:07 +0000 (16:41 -0700)]
ci/turnip: Test traces on turnip using zink.

Reviewed-by: David Heidelberg <david.heidelberg@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17125>

2 years agoci/freedreno: Add vulkan+gl integration testing in piglit.
Emma Anholt [Mon, 20 Jun 2022 16:48:11 +0000 (09:48 -0700)]
ci/freedreno: Add vulkan+gl integration testing in piglit.

The libvulkan-dev was needed for building zink, which ended up turning on
the vulkan tests in piglit.  Split them out here.

Reviewed-by: David Heidelberg <david.heidelberg@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17125>

2 years agoci/traces: Drop ZINK_USE_LAVAPIPE ICD override.
Emma Anholt [Thu, 2 Jun 2022 22:24:03 +0000 (15:24 -0700)]
ci/traces: Drop ZINK_USE_LAVAPIPE ICD override.

Not set in the tree any more.

Reviewed-by: David Heidelberg <david.heidelberg@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17125>

2 years agoci/traces: GC unused code for DXVK trace replay.
Emma Anholt [Thu, 2 Jun 2022 22:23:11 +0000 (15:23 -0700)]
ci/traces: GC unused code for DXVK trace replay.

I haven't found any use of it since it was introduced, and it got in the
way of zink trace testing.

Reviewed-by: David Heidelberg <david.heidelberg@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17125>

2 years agolavapipe: always set point_tri_clip
Mike Blumenkrantz [Mon, 27 Jun 2022 17:56:23 +0000 (13:56 -0400)]
lavapipe: always set point_tri_clip

this invokes GLES-compatible point clipping, which is more consistent
with vulkan expectations and fixes a number of zink tests

Acked-by: Emma Anholt <emma@anholt.net>
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17259>

2 years agolima,panfrost: Do not ralloc contexts against the screen
Alyssa Rosenzweig [Fri, 24 Jun 2022 14:42:00 +0000 (10:42 -0400)]
lima,panfrost: Do not ralloc contexts against the screen

ralloc is not thread-safe. While a given context can only be accessed from a
single thread at once, multiple contexts can be created against the same screen
at once. The ralloc allocations against the shared screens will race. Depending
on the result of the race, the same block of memory can be returned as the two
new contexts in two different threads, causing a use-after-free when the context
is freed later.

We free the context explicitly when it's destroyed anyway. If screens are
getting destroyed without the contexts getting destroyed first, that's a state
tracker bug, not a Panfrost one.

This matches what Iris does.

Fixes crash in test_integer_ops.int_math on Panfrost.

Fixes: 0fcf73bc2d4 ("panfrost: Move to use ralloc for some allocations")
Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Reviewed-by: Vasily Khoruzhick <anarsoul@gmail.com>
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17234>