platform/upstream/mesa.git
23 months agointel/fs: Use canonical form for "work around" tags
Ian Romanick [Tue, 21 Jun 2022 17:37:53 +0000 (10:37 -0700)]
intel/fs: Use canonical form for "work around" tags

Trivial.  Also clean up some weird whitespace.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17605>

23 months agointel/fs: Eliminate "masked" and "per slot offset" URB messages
Ian Romanick [Tue, 12 Jul 2022 22:52:31 +0000 (15:52 -0700)]
intel/fs: Eliminate "masked" and "per slot offset" URB messages

All of this information can be inferred from the sources.

v2: Fix "error: unused variable 'opcode'" detected by marge-bot.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17605>

23 months agointel/fs: Don't pass flags to lower_urb_read_logical_send or lower_urb_write_logical_send
Ian Romanick [Tue, 12 Jul 2022 22:34:23 +0000 (15:34 -0700)]
intel/fs: Don't pass flags to lower_urb_read_logical_send or lower_urb_write_logical_send

...because the flags can be inferred from the sources.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17605>

23 months agointel/fs: Make logical URB read instructions more like other logical instructions
Ian Romanick [Thu, 14 Jul 2022 18:57:03 +0000 (11:57 -0700)]
intel/fs: Make logical URB read instructions more like other logical instructions

No shader-db changes on any Intel platform

Fossil-db results:

Tiger Lake
Instructions in all programs: 156926440 -> 156926470 (+0.0%)
Instructions hurt: 15

Cycles in all programs: 7513099349 -> 7513099402 (+0.0%)
Cycles hurt: 15

Ice Lake and Skylake had similar results. (Ice Lake shown)
Cycles in all programs: 9099036492 -> 9099036489 (-0.0%)
Cycles helped: 1

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17605>

23 months agointel/fs: Make logical URB write instructions more like other logical instructions
Ian Romanick [Tue, 12 Jul 2022 22:32:01 +0000 (15:32 -0700)]
intel/fs: Make logical URB write instructions more like other logical instructions

The changes to fs_visitor::validate() helped track down a place where I
initially forgot to convert a message to the new sources layout.  This
had caused a different validation failure in
dEQP-GLES31.functional.tessellation.tesscoord.triangles_equal_spacing,
but this were not detected until after SENDs were lowered.

Tiger Lake, Ice Lake, and Skylake had similar results. (Ice Lake shown)
total instructions in shared programs: 19951145 -> 19951133 (<.01%)
instructions in affected programs: 2429 -> 2417 (-0.49%)
helped: 8 / HURT: 0

total cycles in shared programs: 858904152 -> 858862331 (<.01%)
cycles in affected programs: 5702652 -> 5660831 (-0.73%)
helped: 2138 / HURT: 1255

Broadwell
total cycles in shared programs: 904869459 -> 904835501 (<.01%)
cycles in affected programs: 7686744 -> 7652786 (-0.44%)
helped: 2861 / HURT: 2050

Tiger Lake, Ice Lake, and Skylake had similar results. (Ice Lake shown)
Instructions in all programs: 141442369 -> 141442032 (-0.0%)
Instructions helped: 337

Cycles in all programs: 9099270231 -> 9099036492 (-0.0%)
Cycles helped: 40661
Cycles hurt: 28606

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17605>

23 months agoaco: Add a note about G16 without A16 to README-ISA.md.
Georg Lehmann [Tue, 26 Jul 2022 11:56:29 +0000 (13:56 +0200)]
aco: Add a note about G16 without A16 to README-ISA.md.

Signed-off-by: Georg Lehmann <dadschoorse@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16979>

23 months agoradv: Fold 16bit tex sources.
Georg Lehmann [Wed, 6 Jul 2022 15:13:30 +0000 (17:13 +0200)]
radv: Fold 16bit tex sources.

Signed-off-by: Georg Lehmann <dadschoorse@gmail.com>
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16979>

23 months agoaco: Support 16bit sources for texture ops.
Georg Lehmann [Mon, 6 Jun 2022 15:04:14 +0000 (17:04 +0200)]
aco: Support 16bit sources for texture ops.

Signed-off-by: Georg Lehmann <dadschoorse@gmail.com>
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16979>

23 months agoaco: Add G16 opcodes.
Georg Lehmann [Sat, 4 Jun 2022 17:50:00 +0000 (19:50 +0200)]
aco: Add G16 opcodes.

Signed-off-by: Georg Lehmann <dadschoorse@gmail.com>
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16979>

23 months agotu: Fix resolving d32s8 into s8 on fast path
Connor Abbott [Thu, 21 Jul 2022 15:25:41 +0000 (17:25 +0200)]
tu: Fix resolving d32s8 into s8 on fast path

The code assumed that if the source was d32s8 then the destination would
also be d32s8, in particular that depth_base_addr/stencil_base_addr
would also be filled out. Move the destination and source handling into
two different ifs with different conditions.

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

23 months agotu: Support resolving D24S8 -> S8
Connor Abbott [Wed, 20 Jul 2022 15:33:09 +0000 (17:33 +0200)]
tu: Support resolving D24S8 -> S8

This was missed when we added support for VK_KHR_depth_stencil_resolve.
There is a similar feature where the stencil aspect of a D24S8 can be
copied "tightly" in CopyImageToBuffer, but it used the texture swizzle
and so required the 3d path. To get it to work with the 2D path, which
is required for resolves, we have to instead use the A8_UNORM format,
which works for texture sampling even for tiled images. We also have to
reuse the pre-existing image views because subpass resolves work on
image views rather than images, whereas before the fixup was applied
while creating the image view. This means threading through the
corresponding "opposite" format through setup, src, and dst functions,
doing the fixup there (through some shared helpers), and then getting
every user to specify the right format. As a bonus, we no longer need to
force the 3d path for the CopyImageToBuffer and CopyBufferToImage
special cases.

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

23 months agollvmpipe: remove unused function
Erik Faye-Lund [Mon, 25 Jul 2022 14:09:08 +0000 (16:09 +0200)]
llvmpipe: remove unused function

Fixes: a1846e39269 ("llvmpipe: merge all rasterizer-bind functions")
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17735>

23 months agoir3: fix tess param allocation
Chia-I Wu [Fri, 15 Jul 2022 21:21:38 +0000 (14:21 -0700)]
ir3: fix tess param allocation

primitive_param takes up 2 vec4's.  Remove an align that I don't
understand.

The align upset

  Test case 'dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_vec4'..
  deqp-vk: ../src/freedreno/ir3/ir3_nir.c:1039:
  void ir3_setup_const_state(nir_shader *, struct ir3_shader_variant *, struct ir3_const_state *):
  Assertion `constoff <= ir3_max_const(v)' failed.

with an older version (android11-tests-dev branch) of deqp-vk.  This is
because ir3_nir_opt_preamble uses the function for the worst case but
the function fails to replace the align by the worst case.

No regression with dEQP-VK.*tess*.

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

23 months agoir3: increment constoff right after it is assigned
Chia-I Wu [Fri, 15 Jul 2022 21:18:58 +0000 (14:18 -0700)]
ir3: increment constoff right after it is assigned

Minor improvement to readability.  No real change.

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

23 months agoir3: remove unused patch_vertices_in
Chia-I Wu [Fri, 15 Jul 2022 21:17:47 +0000 (14:17 -0700)]
ir3: remove unused patch_vertices_in

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

23 months agoir3: fix output_loc size
Chia-I Wu [Sat, 23 Jul 2022 01:17:44 +0000 (18:17 -0700)]
ir3: fix output_loc size

It was off-by-one.

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

23 months agoir3: copy req_local_mem for MESA_SHADER_KERNEL
Chia-I Wu [Fri, 22 Jul 2022 23:51:35 +0000 (16:51 -0700)]
ir3: copy req_local_mem for MESA_SHADER_KERNEL

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

23 months agoir3: update ir3_const_state comment
Chia-I Wu [Fri, 22 Jul 2022 20:49:59 +0000 (13:49 -0700)]
ir3: update ir3_const_state comment

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

23 months agolavapipe: Use the vk_graphics_pipeline_state
Jason Ekstrand [Wed, 20 Jul 2022 02:33:41 +0000 (21:33 -0500)]
lavapipe: Use the vk_graphics_pipeline_state

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

23 months agolavapipe: Use shader_info::uses_sample_shading
Jason Ekstrand [Wed, 20 Jul 2022 16:44:21 +0000 (11:44 -0500)]
lavapipe: Use shader_info::uses_sample_shading

This is more accurate because it's computed directly in spirv_to_nir and
takes even unused SampleID and SamplePos builtings into account.

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

23 months agolavapipe: advertise VK_EXT_multisampled_render_to_single_sampled
Mike Blumenkrantz [Fri, 22 Jul 2022 05:05:21 +0000 (01:05 -0400)]
lavapipe: advertise VK_EXT_multisampled_render_to_single_sampled

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

23 months agolavapipe: VK_EXT_multisampled_render_to_single_sampled
Mike Blumenkrantz [Fri, 22 Jul 2022 05:04:41 +0000 (01:04 -0400)]
lavapipe: VK_EXT_multisampled_render_to_single_sampled

this works by doing a replicate at renderpass start and an in-place
resolve on renderpass end

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

23 months agovulkan: hook up VK_EXT_multisampled_render_to_single_sampled
Mike Blumenkrantz [Fri, 22 Jul 2022 05:03:34 +0000 (01:03 -0400)]
vulkan: hook up VK_EXT_multisampled_render_to_single_sampled

this adds support for the extension to common renderpass

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

23 months agollvmpipe: add a shortcut for blitter resolves
Mike Blumenkrantz [Fri, 22 Jul 2022 04:34:46 +0000 (00:34 -0400)]
llvmpipe: add a shortcut for blitter resolves

if this is only going to do a sample0 resolve, the functionality is
equivalent to just copying the first sample, and in llvmpipe terms,
this just means doing a direct copy at offset=0

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

23 months agolavapipe: fix stencil clears
Mike Blumenkrantz [Fri, 22 Jul 2022 04:34:23 +0000 (00:34 -0400)]
lavapipe: fix stencil clears

this uses the value from the stencil attachment

Fixes: 8068c68b1ff ("lavapipe: Delete render passes")

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

23 months agollvmpipe: allow resource_copy_region to perform replicate operations
Mike Blumenkrantz [Tue, 22 Feb 2022 17:28:45 +0000 (12:28 -0500)]
llvmpipe: allow resource_copy_region to perform replicate operations

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

23 months agollvmpipe: remove weird clamping for format support with sample counts
Mike Blumenkrantz [Tue, 22 Feb 2022 17:28:10 +0000 (12:28 -0500)]
llvmpipe: remove weird clamping for format support with sample counts

this breaks u_blitter

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

23 months agolavapipe: set image access on pipeline bind, not descriptor bind
Mike Blumenkrantz [Mon, 25 Jul 2022 15:32:02 +0000 (11:32 -0400)]
lavapipe: set image access on pipeline bind, not descriptor bind

this is where the access originates, so set it here

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

23 months agolavapipe: use 64bit masks for shader access
Mike Blumenkrantz [Mon, 25 Jul 2022 19:30:48 +0000 (15:30 -0400)]
lavapipe: use 64bit masks for shader access

ensure that all descriptors are tracked for this

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

23 months agolavapipe: use correct offset calculation for flagging ssbo/image write access
Mike Blumenkrantz [Mon, 25 Jul 2022 13:42:44 +0000 (09:42 -0400)]
lavapipe: use correct offset calculation for flagging ssbo/image write access

var->data.binding has no relation to the actual index of the resource,
which must be separately calculated based on the layout

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

23 months agolavapipe: make binding/layout helper functions static inline
Mike Blumenkrantz [Mon, 25 Jul 2022 13:42:16 +0000 (09:42 -0400)]
lavapipe: make binding/layout helper functions static inline

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

23 months agomesa: Remove Purgeable fields from texture/buffer/renderbuffer objects
Adam Jackson [Mon, 25 Jul 2022 18:20:03 +0000 (14:20 -0400)]
mesa: Remove Purgeable fields from texture/buffer/renderbuffer objects

These are unused since !17425.

Reviewed-by: Alyssa Rosenzweig <alyssa@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17745>

23 months agogallium/hud: do not use texture-rect for font
Erik Faye-Lund [Fri, 22 Jul 2022 07:14:09 +0000 (09:14 +0200)]
gallium/hud: do not use texture-rect for font

RECT textures used to be required to be supported by drivers. But since
the state-tracker learned how to lower these to 2D textures, some
drivers no longer support them.

While we have lowering in place for this, lowering it involves some
needless overhead. So let's just use a 2D texture instead of a RECT
texture.

Because having two versions and switching between them is more
complicated than it needs to be, let's just always use a 2D texture.
Similarly, let's just always multiply the reciprocal here, so we don't
have to test for PIPE_CAP_TGSI_DIV first.

Cc: mesa-stable
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17707>

23 months agolavapipe: move vertex input dynamic states into vertex input block
Mike Blumenkrantz [Mon, 25 Jul 2022 16:41:36 +0000 (12:41 -0400)]
lavapipe: move vertex input dynamic states into vertex input block

these states were erroneously assigned to the pre-rasterization stage
for pipeline libraries when they instead belong to the vertex input stage

cc: mesa-stable

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17738>

23 months agozink: add a ci flake
Mike Blumenkrantz [Mon, 25 Jul 2022 16:16:33 +0000 (12:16 -0400)]
zink: add a ci flake

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

23 months agolavapipe: remove some skips
Mike Blumenkrantz [Fri, 22 Jul 2022 20:38:55 +0000 (16:38 -0400)]
lavapipe: remove some skips

these should all be fast enough now

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

23 months agolavapipe: implement extreme uniform inlining
Mike Blumenkrantz [Mon, 27 Jun 2022 18:02:46 +0000 (14:02 -0400)]
lavapipe: implement extreme uniform inlining

this adds a mangled variation on nir_inline_uniforms that enables inlining
from any uniform buffer in order to try inlining every possible load

if the shader is too small or the ssa_alloc delta from inlining is too small,
then inlining is disabled for that shader to avoid pointlessly churning
the same shaders for no gain

with certain types of shaders, the speedup is astronomical

before:
dEQP-VK.graphicsfuzz.cov-int-initialize-from-multiple-large-arrays (4750.76s)

after:
dEQP-VK.graphicsfuzz.cov-int-initialize-from-multiple-large-arrays (0.505s)

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

23 months agoci/freedreno: 3 pixel change in Raven restricted trace
David Heidelberg [Mon, 25 Jul 2022 08:21:36 +0000 (10:21 +0200)]
ci/freedreno: 3 pixel change in Raven restricted trace

Acked-by: Rob Clark <robdclark@chromium.org>
Signed-off-by: David Heidelberg <david.heidelberg@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17732>

23 months agowsi/x11: Synchronously check for error from xcb_present_pixmap
Adam Jackson [Thu, 21 Jul 2022 16:32:59 +0000 (12:32 -0400)]
wsi/x11: Synchronously check for error from xcb_present_pixmap

Yes this is a round trip, but X_PresentPixmap is not itself a blocking
operation, it just instructs the server to do the next presentation at
some time. More importantly, if _we_ don't catch the presentation error,
xlib's error queue will, and the calling code is certainly not prepared
to handle errors from Present.

Forcing the round trip here is also a bit more correct semantically.
This is the end of the Vulkan client part of the present queue, and the
X_PresentPixmap request transfers the queue operation to the server, so
we should not return until we are sure the handoff has happened.

Fixes some flakiness with piglit@glx-visuals-* with zink+radv.

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

23 months agozink: fix EXT_color_write_enable check
Erik Faye-Lund [Fri, 22 Jul 2022 10:55:37 +0000 (12:55 +0200)]
zink: fix EXT_color_write_enable check

Checking for the extension isn't enough, we also need to check for the
feature-bit.

Fixes: 49a20e0981c ("zink: start a unified driver workarounds struct")
Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17709>

23 months agozink: warn about missing image2DViewOf3D feature
Erik Faye-Lund [Fri, 22 Jul 2022 10:20:22 +0000 (12:20 +0200)]
zink: warn about missing image2DViewOf3D feature

While we're at it, let's store zink_screen in a temp varaible for reuse.

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

23 months agodocs/zink: document required VK_EXT_border_color_swizzle
Erik Faye-Lund [Fri, 22 Jul 2022 10:42:35 +0000 (12:42 +0200)]
docs/zink: document required VK_EXT_border_color_swizzle

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

23 months agodocs/zink: document required VK_KHR_swapchain_mutable_format
Erik Faye-Lund [Fri, 22 Jul 2022 10:39:14 +0000 (12:39 +0200)]
docs/zink: document required VK_KHR_swapchain_mutable_format

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

23 months agodocs/zink: correct name of extension
Erik Faye-Lund [Fri, 22 Jul 2022 10:19:27 +0000 (12:19 +0200)]
docs/zink: correct name of extension

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

23 months agoradeonsi/vcn/enc: enable cabac entropy mode
Boyuan Zhang [Sat, 23 Apr 2022 02:31:07 +0000 (22:31 -0400)]
radeonsi/vcn/enc: enable cabac entropy mode

Set cabac entropy mode if enabled.

v2: add extra check on radeon driver side, disable cabac if profile is
baseline or extended.

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

23 months agofrontends/va: get entropy mode info for h264 encode
Boyuan Zhang [Sat, 16 Jul 2022 03:41:40 +0000 (23:41 -0400)]
frontends/va: get entropy mode info for h264 encode

Get entropy mode and cabac init idc from VAAPI interface.

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

23 months agovl: add cabac init idc for h264 encode
Boyuan Zhang [Fri, 22 Apr 2022 23:00:45 +0000 (19:00 -0400)]
vl: add cabac init idc for h264 encode

Add interface to store cabac init idc value.

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

23 months agopvr: Add support for input attachment descriptor.
Rajnesh Kanwal [Mon, 4 Jul 2022 12:47:53 +0000 (13:47 +0100)]
pvr: Add support for input attachment descriptor.

Signed-off-by: Rajnesh Kanwal <rajnesh.kanwal@imgtec.com>
Reviewed-by: Karmjit Mahil <Karmjit.Mahil@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17719>

23 months agopvr: Add support for storage and uniform texel descriptor.
Rajnesh Kanwal [Mon, 4 Jul 2022 11:37:44 +0000 (12:37 +0100)]
pvr: Add support for storage and uniform texel descriptor.

Signed-off-by: Rajnesh Kanwal <rajnesh.kanwal@imgtec.com>
Reviewed-by: Karmjit Mahil <Karmjit.Mahil@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17719>

23 months agopvr: Add support for image descriptor.
Rajnesh Kanwal [Fri, 1 Jul 2022 22:26:41 +0000 (23:26 +0100)]
pvr: Add support for image descriptor.

Signed-off-by: Rajnesh Kanwal <rajnesh.kanwal@imgtec.com>
Reviewed-by: Karmjit Mahil <Karmjit.Mahil@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17719>

23 months agopvr: Add support for combined image and sampler descriptor.
Rajnesh Kanwal [Fri, 1 Jul 2022 14:19:31 +0000 (15:19 +0100)]
pvr: Add support for combined image and sampler descriptor.

Signed-off-by: Rajnesh Kanwal <rajnesh.kanwal@imgtec.com>
Reviewed-by: Karmjit Mahil <Karmjit.Mahil@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17719>

23 months agopvr: Add support for sampler descriptor.
Rajnesh Kanwal [Thu, 30 Jun 2022 18:29:00 +0000 (19:29 +0100)]
pvr: Add support for sampler descriptor.

Signed-off-by: Rajnesh Kanwal <rajnesh.kanwal@imgtec.com>
Reviewed-by: Karmjit Mahil <Karmjit.Mahil@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17719>

23 months agopvr: Move binding related checks in common code.
Rajnesh Kanwal [Tue, 19 Jul 2022 14:21:28 +0000 (15:21 +0100)]
pvr: Move binding related checks in common code.

Signed-off-by: Rajnesh Kanwal <rajnesh.kanwal@imgtec.com>
Reviewed-by: Karmjit Mahil <Karmjit.Mahil@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17719>

23 months agopvr: Implement vkCreateBufferView and vkDestroyBufferView.
Rajnesh Kanwal [Mon, 4 Jul 2022 11:34:27 +0000 (12:34 +0100)]
pvr: Implement vkCreateBufferView and vkDestroyBufferView.

Signed-off-by: Rajnesh Kanwal <rajnesh.kanwal@imgtec.com>
Reviewed-by: Karmjit Mahil <Karmjit.Mahil@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17719>

23 months agopvr: Use common vk_buffer implementation.
Rajnesh Kanwal [Mon, 4 Jul 2022 17:00:18 +0000 (18:00 +0100)]
pvr: Use common vk_buffer implementation.

Signed-off-by: Rajnesh Kanwal <rajnesh.kanwal@imgtec.com>
Reviewed-by: Karmjit Mahil <Karmjit.Mahil@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17719>

23 months agopvr: Init and store default sampler in pvr_device.
Rajnesh Kanwal [Mon, 4 Jul 2022 13:04:57 +0000 (14:04 +0100)]
pvr: Init and store default sampler in pvr_device.

Signed-off-by: Rajnesh Kanwal <rajnesh.kanwal@imgtec.com>
Reviewed-by: Karmjit Mahil <Karmjit.Mahil@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17719>

23 months agollvmpipe: clean up bresenham implementation
Erik Faye-Lund [Thu, 8 Jul 2021 13:52:03 +0000 (15:52 +0200)]
llvmpipe: clean up bresenham implementation

This moves some common code into shared locations, limits the scope of
some variables, switches some booleans for bools, and cleans up some
whitespace.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17653>

23 months agollvmpipe: consolidate legacy_points and multisample state
Erik Faye-Lund [Fri, 9 Jul 2021 15:02:45 +0000 (17:02 +0200)]
llvmpipe: consolidate legacy_points and multisample state

This just makes the code a bit easier to follow.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17653>

23 months agollvmpipe: merge all rasterizer-bind functions
Erik Faye-Lund [Fri, 9 Jul 2021 14:45:47 +0000 (16:45 +0200)]
llvmpipe: merge all rasterizer-bind functions

This makes it more obivous when what state changes, and they are always
just called in order.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17653>

23 months agolavapipe: accurately set image/ssbo access based on shader usage
Mike Blumenkrantz [Thu, 3 Mar 2022 18:37:51 +0000 (13:37 -0500)]
lavapipe: accurately set image/ssbo access based on shader usage

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

23 months agocrocus: fix leak in query code.
Dave Airlie [Mon, 25 Jul 2022 00:49:30 +0000 (10:49 +1000)]
crocus: fix leak in query code.

Fixes: f3630548f1da ("crocus: initial gallium driver for Intel gfx 4-7")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17731>

23 months agolavapipe: EXT_non_seamless_cube_map
Mike Blumenkrantz [Tue, 5 Jul 2022 17:47:12 +0000 (13:47 -0400)]
lavapipe: EXT_non_seamless_cube_map

Reviewed-by: Alyssa Rosenzweig <alyssa@collabora.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17711>

23 months agozink: avoid crashing when bindless texture updates aren't used
Mike Blumenkrantz [Mon, 18 Jul 2022 18:05:40 +0000 (14:05 -0400)]
zink: avoid crashing when bindless texture updates aren't used

some apps trigger the texture update path far in advance of when the
texture will be used, so don't crash and wait to do the update

cc: mesa-stable

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

23 months agozink: assert !rp_changed after renderpass has started
Mike Blumenkrantz [Wed, 20 Jul 2022 19:27:42 +0000 (15:27 -0400)]
zink: assert !rp_changed after renderpass has started

avoid weirdness

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

23 months agozink: only flag fbfetch as rp update if fbfetch wasn't already configured
Mike Blumenkrantz [Wed, 20 Jul 2022 19:26:15 +0000 (15:26 -0400)]
zink: only flag fbfetch as rp update if fbfetch wasn't already configured

otherwise this is probably just a swapchain acquire which needs to update
the descriptor during begin_renderpass

cc: mesa-stable

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

23 months agor600/dri-tweak: Disable ARB_shader_image_load_store for "Tomb Raider 2013"
Gert Wollny [Sun, 24 Jul 2022 10:45:15 +0000 (12:45 +0200)]
r600/dri-tweak: Disable ARB_shader_image_load_store for "Tomb Raider 2013"

When "Depth of Field" is set to Ultra, a compute shader is emitted that
results in Hardware hangs when OpenGL > 4.3 is available.

If the option is enabled, the game will hang at the menu screen so that
it is no longer possible to simply change the option back. To avoid this
disable the extension for this game until the shader emission can be fixed.

Related: https://gitlab.freedesktop.org/mesa/mesa/-/issues/6857

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17728>

23 months agor600ß/sfn: Don't fall through with VS outputs
Gert Wollny [Sun, 24 Jul 2022 12:01:36 +0000 (14:01 +0200)]
r600ß/sfn: Don't fall through with VS outputs

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17729>

23 months agor600: don't clone the nir shader, just use it
Gert Wollny [Sun, 24 Jul 2022 11:58:42 +0000 (13:58 +0200)]
r600: don't clone the nir shader, just use it

The nir shader passed in with the shader state has to be released by
the backe-end, so don't clone it, just use it.

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17729>

23 months agor600: Delete possible old NIR variant when translating from TGSI
Gert Wollny [Sun, 24 Jul 2022 11:49:37 +0000 (13:49 +0200)]
r600: Delete possible old NIR variant when translating from TGSI

With shader variants it may happen that we already translated a TGSI
shader for the current selector, so delete the old nir shader if we
already had one.

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17729>

23 months agor600/sfn: lower the right shader variant
Gert Wollny [Sun, 24 Jul 2022 11:38:36 +0000 (13:38 +0200)]
r600/sfn: lower the right shader variant

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17729>

23 months agor600/sfn: make sure the memory pool is released after shader translation
Gert Wollny [Sun, 24 Jul 2022 11:37:31 +0000 (13:37 +0200)]
r600/sfn: make sure the memory pool is released after shader translation

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17729>

23 months agoanv: set image_read_without_format NIR option on Vulkan 1.3
Constantine Shablya [Sat, 9 Jul 2022 13:09:28 +0000 (16:09 +0300)]
anv: set image_read_without_format NIR option on Vulkan 1.3

VK_KHR_format_feature_flags2 is core and implicitly enabled in 1.3.

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

23 months agoradv: Fix out of bounds access in RTPSO creation
Konstantin Seurer [Fri, 22 Jul 2022 20:17:05 +0000 (22:17 +0200)]
radv: Fix out of bounds access in RTPSO creation

Signed-off-by: Konstantin Seurer <konstantin.seurer@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17723>

23 months agotu: increase maxPushConstantsSize to 256.
Hyunjun Ko [Wed, 15 Jun 2022 00:08:31 +0000 (09:08 +0900)]
tu: increase maxPushConstantsSize to 256.

Now there are two paths for push constants.

When it's range is under 128b, we can use shared consts.
When it's over 128b, we can instead do loading data through
regular path, which is same as the previous way.

Now we can satisfy emulations like vkd3d that requires 256b for
its root signatures and we think it fairly maps to push constants
rather than inline uniform blocks that requires one indirection.

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

23 months agoturnip: Change to use shared consts for PushConstants
Hyunjun Ko [Wed, 15 Jun 2022 00:07:28 +0000 (09:07 +0900)]
turnip: Change to use shared consts for PushConstants

Follow the way blob is doing for PushConstants though it supports only
128b, same as previous.

v1. Rename tu_push_constant_range.count into dwords to redue confusion.
( Danylo Piliaiev <dpiliaiev@igalia.com> )

v2. Enable shared constants only if necessary.

v3. Merge the two draw states TU_DRAW_STATE_SHADER_GEOM_CONST and
TU_DRAW_STATE_FS_CONST as shared constants are used.

Note that this leaves tu_push_constant_range in tu_shader so we could
use it again in the following patch.

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

23 months agoturnip: clean up unused parameters for user consts.
Hyunjun Ko [Fri, 8 Jul 2022 01:29:31 +0000 (10:29 +0900)]
turnip: clean up unused parameters for user consts.

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

23 months agoir3: handle shared consts.
Hyunjun Ko [Wed, 18 May 2022 01:09:22 +0000 (10:09 +0900)]
ir3: handle shared consts.

Adds a shared consts base offset and a size of it(dwords) to ir3_compiler
since they might be depending on gpu generations. (Danylo Piliaiev <dpiliaiev@igalia.com> )

Adds a flag to present whether shared consts are enabled to
ir3_shader_options and then it sets to ir3_const_state when creating
an ir3 variant. Although this state is not per-shader state, this is
necessary when figureing out real constlens.

v1. Define a hw quirk for geometry shared const files and use it when
calculating const length.

v2. Don't hardcode when calculating a safe const length.

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

23 months agoir3: change maximum size of const files.
Hyunjun Ko [Fri, 29 Apr 2022 04:52:35 +0000 (13:52 +0900)]
ir3: change maximum size of const files.

According to the observation on a630/a650/a660, max_const_pipeline has
to be 512 when all geometry stages are present. Otherwise a gpu hang
happens. Acoordingly maximum safe size for each stage should be under
(max_const_pipeline / 5 (stages)).

Only when VS and FS stages are present, the limit is 640.

v1. Align max_const_safe to 4 vec4's.

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

23 months agogallium: add pipe_blit_info::dst_sample, update u_blitter to write that sample
Marek Olšák [Tue, 19 Jul 2022 04:19:34 +0000 (00:19 -0400)]
gallium: add pipe_blit_info::dst_sample, update u_blitter to write that sample

A new radeonsi blit test will use it to upload different sample values
into MSAA textures.

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

23 months agoradeonsi: check last_dirty_buf_counter and dirty_tex_counter
Pierre-Eric Pelloux-Prayer [Thu, 7 Jul 2022 09:07:03 +0000 (11:07 +0200)]
radeonsi: check last_dirty_buf_counter and dirty_tex_counter

Check both counters in draw and compute, otherwise compute dispatches may
miss buffers invalidation.
This fixes the test case from https://gitlab.freedesktop.org/mesa/piglit/-/merge_requests/702
(both with and without GALLIUM_THREAD=0).

cc: mesa-stable

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

23 months agogallivm: push LLVM version guard into assert
Mihai Preda [Sat, 23 Jul 2022 05:45:55 +0000 (08:45 +0300)]
gallivm: push LLVM version guard into assert

The asserts that check the pointer element type can't be used on LLVM >= 15.
Instead of using precompiler #if, use boolean shortcut in assert.

Reviewed-by: Brian Paul <brianp@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17650>

23 months agogallivm: add lp_build_struct_get() variants that take the LLVM type
Mihai Preda [Tue, 12 Jul 2022 20:21:49 +0000 (23:21 +0300)]
gallivm: add lp_build_struct_get() variants that take the LLVM type

This is needed for LLVM-15 opaque pointers.
The new variants taking the type are named with the suffix "2", using
the same naming pattern LLVM (e.g. LLVMBuildGEP2 vs. LLVMBuildGEP).

Reviewed-by: Brian Paul <brianp@vmware.com>
Acked-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17650>

23 months agogallivm: refactor a bit the cache access in view of LLVM opaque pointers
Mihai Preda [Fri, 1 Jul 2022 09:52:25 +0000 (12:52 +0300)]
gallivm: refactor a bit the cache access in view of LLVM opaque pointers

LLVM 15 requires transition to opaque pointers; factorize a bit the cache
memthods to help this transition.

Reviewed-by: Brian Paul <brianp@vmware.com>
Acked-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17650>

23 months agogallivm: fix a few llvm non-opaque pointers
Mihai Preda [Thu, 30 Jun 2022 06:14:02 +0000 (09:14 +0300)]
gallivm: fix a few llvm non-opaque pointers

As LLVM 15 transitions to opaque pointers, we need to update
the deprecated methods dealing with non-opaque pointers.

Reviewed-by: Brian Paul <brianp@vmware.com>
Acked-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17650>

23 months agodzn: Retrieve validator version
Jesse Natalie [Sun, 17 Jul 2022 18:10:29 +0000 (11:10 -0700)]
dzn: Retrieve validator version

For platforms where there's no validator available, leave the field zero-initialized
to let the DXIL backend choose whatever target validator version it wants.

Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17603>

23 months agod3d12: Retrieve validator version
Jesse Natalie [Sun, 17 Jul 2022 18:08:13 +0000 (11:08 -0700)]
d3d12: Retrieve validator version

For platforms where there's no validator available, leave the field zero-initialized
to let the DXIL backend choose whatever target validator version it wants.

Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17603>

23 months agomicrosoft/compiler: Blacklist DXIL validator 1.6 from 20348 SDK
Jesse Natalie [Mon, 18 Jul 2022 17:37:03 +0000 (10:37 -0700)]
microsoft/compiler: Blacklist DXIL validator 1.6 from 20348 SDK

This version claims to support validator version 1.6, but doesn't
actually have the 1.6 changes (PSV v2, PSV resource v1, barycentrics).

Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17603>

23 months agomicrosoft/compiler: Add a getter for a validator version from DXIL.dll
Jesse Natalie [Sun, 17 Jul 2022 18:08:04 +0000 (11:08 -0700)]
microsoft/compiler: Add a getter for a validator version from DXIL.dll

Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17603>

23 months agomicrosoft/compiler: Support DXIL validator 1.7
Jesse Natalie [Sun, 17 Jul 2022 17:50:00 +0000 (10:50 -0700)]
microsoft/compiler: Support DXIL validator 1.7

Reviewed-by: Enrico Galli <enrico.galli@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17603>

23 months agomicrosoft/compiler: Support DXIL validator 1.6
Jesse Natalie [Sun, 17 Jul 2022 17:26:49 +0000 (10:26 -0700)]
microsoft/compiler: Support DXIL validator 1.6

Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17603>

23 months agomicrosoft/compiler: DXIL validator 1.6 uses a new PSV resource struct
Jesse Natalie [Sun, 17 Jul 2022 17:26:36 +0000 (10:26 -0700)]
microsoft/compiler: DXIL validator 1.6 uses a new PSV resource struct

This is a huge pain because it's an array, meaning that accessing
an entry in the array now depends on the validator version to use
the right element stride.

We could always just store the v1 and downconvert if needed... but
this isn't *that* bad that I felt I had to do it that way.

Reviewed-by: Enrico Galli <enrico.galli@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17603>

23 months agomicrosoft/compiler: DXIL validator 1.6 uses a new PSV struct version
Jesse Natalie [Sun, 17 Jul 2022 17:24:39 +0000 (10:24 -0700)]
microsoft/compiler: DXIL validator 1.6 uses a new PSV struct version

Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17603>

23 months agomicrosoft/compiler: Set the barycentrics flag for attribute_at_vertex
Jesse Natalie [Sun, 17 Jul 2022 17:22:02 +0000 (10:22 -0700)]
microsoft/compiler: Set the barycentrics flag for attribute_at_vertex

Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17603>

23 months agomicrosoft/compiler: DXIL validator 1.6 counts UAVs differently
Jesse Natalie [Sun, 17 Jul 2022 17:21:28 +0000 (10:21 -0700)]
microsoft/compiler: DXIL validator 1.6 counts UAVs differently

Instead of counting the number of UAV arrays, it counts the
number of actual UAVs declared. This is more correct, but we
need to do the same accounting to set the 64 UAVs flag.

Reviewed-by: Enrico Galli <enrico.galli@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17603>

23 months agomicrosoft/compiler: Correctly compute dynamic indexing I/O masks
Jesse Natalie [Sun, 17 Jul 2022 12:30:37 +0000 (05:30 -0700)]
microsoft/compiler: Correctly compute dynamic indexing I/O masks

Reviewed-by: Enrico Galli <enrico.galli@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17603>

23 months agomicrosoft/compiler: Compute correct usage masks
Jesse Natalie [Sun, 17 Jul 2022 12:15:11 +0000 (05:15 -0700)]
microsoft/compiler: Compute correct usage masks

This starts actually updating the always-read/never-written
masks while processing the shader. Note that we follow DXC's
lead here and treat "always read" as "sometimes read."

This isn't strictly required, but might help drivers out.

Reviewed-by: Enrico Galli <enrico.galli@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17603>

23 months agomicrosoft/compiler: Support DXIL validator version 1.5
Jesse Natalie [Sun, 17 Jul 2022 12:13:44 +0000 (05:13 -0700)]
microsoft/compiler: Support DXIL validator version 1.5

This version of the validator starts adding usage masks into
the DXIL, which then are expected to match the PSV and signature
data. The usage masks are "correct" meaning that the never-writes
mask no longer includes bits outside of components 0-3.

A future change will actually compute useful masks.

Reviewed-by: Enrico Galli <enrico.galli@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17603>

23 months agomicrosoft/compiler: Lower I/O to scalar
Jesse Natalie [Sun, 17 Jul 2022 12:07:34 +0000 (05:07 -0700)]
microsoft/compiler: Lower I/O to scalar

A future change will start computing component masks while
processing I/O instructions, and only having to compute
a mask for one component per instruction simplifies things.

Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17603>

23 months agomicrosoft/compiler: Ensure 4-component position writes via NIR
Jesse Natalie [Sun, 17 Jul 2022 12:02:14 +0000 (05:02 -0700)]
microsoft/compiler: Ensure 4-component position writes via NIR

We're about to lower I/O to scalar, which means we'll end up with
multiple writes to position, and none of them has enough info to
fill in the blanks.

This causes a test that previously crashed on WARP (due to
StoreOutput with an undef not being handled) to fail more
gracefully - but that failure means that the test spends
forever just outputting errors, so explicitly skip it.

Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17603>

23 months agomicrosoft/compiler: Split signature processing into two parts
Jesse Natalie [Mon, 14 Feb 2022 17:40:08 +0000 (09:40 -0800)]
microsoft/compiler: Split signature processing into two parts

First, preprocess the signatures, strictly based on the variables
in the nir shader. Then, later, after the actual shader contents
have been processed, we emit the metadata.

This lets shader processing rely on the pre-processed data (e.g.
the row -> ID mapping needed for large VS inputs) while also allowing
the signature data to rely on data gathered during the shader traversal
(e.g. which components are actually used).

Reviewed-by: Enrico Galli <enrico.galli@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17603>