platform/upstream/mesa.git
2 years agozink: remove batch tracking/usage from view types
Mike Blumenkrantz [Thu, 1 Sep 2022 13:34:41 +0000 (09:34 -0400)]
zink: remove batch tracking/usage from view types

instead of incurring all the overhead of tracking lifetimes for these,
it makes more sense to just let them delete whenever and then store
the vk object onto its parent image/buffer to be deleted when that gets
freed, as the parent object's lifetime will always be >= the view's lifetime

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

2 years agozink: split out bind_sampler_states hook for drivers without EXT_non_seamless_cube_map
Mike Blumenkrantz [Thu, 1 Sep 2022 13:15:30 +0000 (09:15 -0400)]
zink: split out bind_sampler_states hook for drivers without EXT_non_seamless_cube_map

this incurs some overhead and is seldom used, so avoid having it in the codepath
at all if it won't be used

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

2 years agozink bump batch state limit a bit
Mike Blumenkrantz [Thu, 1 Sep 2022 13:15:06 +0000 (09:15 -0400)]
zink bump batch state limit a bit

this should yield better throughput

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

2 years agozink: rework batch tracking for resources
Mike Blumenkrantz [Wed, 31 Aug 2022 19:38:29 +0000 (15:38 -0400)]
zink: rework batch tracking for resources

this uses a revised version of radeonsi's buffer list array to track
resources for lifetime/usage management, massively improving performance
by avoiding hash table lookups

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

2 years agozink: defer more semaphore destruction
Mike Blumenkrantz [Mon, 29 Aug 2022 15:40:50 +0000 (11:40 -0400)]
zink: defer more semaphore destruction

these have noticeable overhead, so handle them in the submit thread

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

2 years agozink: rework flush_frontbuffer to always flush
Mike Blumenkrantz [Wed, 21 Sep 2022 13:07:35 +0000 (09:07 -0400)]
zink: rework flush_frontbuffer to always flush

previously this would no-op unacquired swapchains and then try to
execute a copy from the last-presented swapchain image to the current
image to avoid presenting garbage data

instead, just present garbage like the app requested

fixes #7165

Tested-By: Matti Hamalainen <ccr@tnsp.org>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18730>

2 years agozink: check format compatibility up front when creating framebuffer surface
Mike Blumenkrantz [Tue, 6 Sep 2022 16:14:01 +0000 (12:14 -0400)]
zink: check format compatibility up front when creating framebuffer surface

this avoids an assert in create_ivci while enforcing correct behavior

cc: mesa-stable

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

2 years agoegl: Rewrite eglSetBlobCacheFuncsANDROID to use the standard macros
Adam Jackson [Tue, 20 Sep 2022 18:42:23 +0000 (14:42 -0400)]
egl: Rewrite eglSetBlobCacheFuncsANDROID to use the standard macros

As the deleted comment hints, you just need the macro to expand to

    return /* void */;

for things to work.

Reviewed-by: Eric Engestrom <eric@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18713>

2 years agoegl: Factor out the eglTerminate write-lock pattern
Adam Jackson [Tue, 20 Sep 2022 18:14:51 +0000 (14:14 -0400)]
egl: Factor out the eglTerminate write-lock pattern

Reviewed-by: Eric Engestrom <eric@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18713>

2 years agoegl: Untangle some spaghetti around _eglLookupDisplay
Adam Jackson [Tue, 20 Sep 2022 17:51:00 +0000 (13:51 -0400)]
egl: Untangle some spaghetti around _eglLookupDisplay

Only eglapi needs any of this.

Reviewed-by: Eric Engestrom <eric@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18713>

2 years agoegl: Promote _eglLock/UnlockDisplay to internal API
Adam Jackson [Tue, 20 Sep 2022 17:38:04 +0000 (13:38 -0400)]
egl: Promote _eglLock/UnlockDisplay to internal API

This reads a bit more cleanly than egl_lock/egl_unlock I think.

Reviewed-by: Eric Engestrom <eric@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18713>

2 years agoegl: Fix a bunch of maybe-uninitialized warnings
Adam Jackson [Fri, 16 Sep 2022 17:06:18 +0000 (13:06 -0400)]
egl: Fix a bunch of maybe-uninitialized warnings

Fedora's gcc 12 is apparently not smart enough to deduce that these are
always initialized, so set some clear default values.

Reviewed-by: Eric Engestrom <eric@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18713>

2 years agoUpdate 22.2.0.rst
Yonggang Luo [Wed, 21 Sep 2022 18:26:44 +0000 (18:26 +0000)]
Update 22.2.0.rst

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

2 years agodocs: Add calendar entries for 22.2 release.
Dylan Baker [Wed, 21 Sep 2022 16:24:29 +0000 (09:24 -0700)]
docs: Add calendar entries for 22.2 release.

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

2 years agodocs: update calendar and link releases notes for 22.2.0
Dylan Baker [Wed, 21 Sep 2022 16:23:31 +0000 (09:23 -0700)]
docs: update calendar and link releases notes for 22.2.0

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

2 years agodocs: Add sha256 sum for 22.2.0
Dylan Baker [Wed, 21 Sep 2022 16:17:10 +0000 (09:17 -0700)]
docs: Add sha256 sum for 22.2.0

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

2 years agodocs: add release notes for 22.2.0
Dylan Baker [Wed, 21 Sep 2022 16:16:34 +0000 (09:16 -0700)]
docs: add release notes for 22.2.0

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

2 years agovenus: ensure to clear VkPipelineCreationFeedback::flags if needed
Yiwei Zhang [Thu, 22 Sep 2022 05:43:56 +0000 (05:43 +0000)]
venus: ensure to clear VkPipelineCreationFeedback::flags if needed

Fixes: d0cb99e96a2 ("venus: Enable VK_EXT_pipeline_creation_feedback")
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Ryan Neph <ryanneph@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18741>

2 years agoturnip: Fix busy-waiting on syncobjs with OS_TIMEOUT_INFINITE.
Emma Anholt [Wed, 21 Sep 2022 23:42:34 +0000 (16:42 -0700)]
turnip: Fix busy-waiting on syncobjs with OS_TIMEOUT_INFINITE.

I noticed that glmark2's glFinish()es in its offscreen rendering tests
under zink were spinning.  When we passed -1 as the timeout for
drmSyncobjWait(), the kernel would immediately return ETIME.

Fixes: 0a82a26a1854 ("turnip: Porting to common implementation for timeline semaphore")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18739>

2 years agofrontends/va: fix build error for vaSyncBuffer with older VA
Leo Liu [Thu, 22 Sep 2022 16:53:25 +0000 (12:53 -0400)]
frontends/va: fix build error for vaSyncBuffer with older VA

return VA_STATUS_ERROR_TIMEDOUT;
      |              ^~~~~~~~~~~~~~~~~~~~~~~~
      |              VA_STATUS_ERROR_UNKNOWN
../src/gallium/frontends/va/buffer.c:434:14: note: each undeclared identifier is reported only once for each function it appears in
../src/gallium/frontends/va/buffer.c:436:22: error: ‘VA_TIMEOUT_INFINITE’ undeclared (first use in this function); did you mean ‘PIPE_TIMEOUT_INFINITE’?
  436 |    if (timeout_ns != VA_TIMEOUT_INFINITE)
      |                      ^~~~~~~~~~~~~~~~~~~
      |                      PIPE_TIMEOUT_INFINITE

Fixes: 229c6f79a ("frontends/va: Implement vaSyncBuffer")

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

2 years agofreedreno: Handle xfb invalidation
Rob Clark [Tue, 20 Sep 2022 21:15:43 +0000 (14:15 -0700)]
freedreno: Handle xfb invalidation

So using the same buffer for CPU writes and GPU writes might be kinda
unusual.  But I noticed we were missing handling for the case while
debugging something unrelated.

Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18732>

2 years agolavapipe/meson: rename module_dir to icd_lib_path and swap two lines for consistence
Yonggang Luo [Thu, 22 Sep 2022 08:41:55 +0000 (16:41 +0800)]
lavapipe/meson: rename module_dir to icd_lib_path and swap two lines for consistence

Signed-off-by: Yonggang Luo <luoyonggang@gmail.com>
Reviewed-by: Eric Engestrom <eric@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18747>

2 years agodzn: rename module_dir to icd_lib_path for consistence
Yonggang Luo [Thu, 22 Sep 2022 08:42:32 +0000 (16:42 +0800)]
dzn: rename module_dir to icd_lib_path for consistence

Signed-off-by: Yonggang Luo <luoyonggang@gmail.com>
Reviewed-by: Eric Engestrom <eric@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18747>

2 years agoradv: Getting radeon_icd to be generated properly on win32
Yonggang Luo [Thu, 22 Sep 2022 03:58:57 +0000 (11:58 +0800)]
radv: Getting radeon_icd to be generated properly on win32

Signed-off-by: Yonggang Luo <luoyonggang@gmail.com>
Reviewed-by: Eric Engestrom <eric@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18747>

2 years agomesa/st: fix a set_sampler_views call parameter order
Tapani Pälli [Thu, 22 Sep 2022 08:17:21 +0000 (11:17 +0300)]
mesa/st: fix a set_sampler_views call parameter order

Fixes: e7b95619596 ("gallium: implement compute pbo download")
Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18745>

2 years agopvr: Implement vkCmdNextSubpass API.
Rajnesh Kanwal [Thu, 1 Sep 2022 12:13:12 +0000 (13:13 +0100)]
pvr: Implement vkCmdNextSubpass API.

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

2 years agopvr: Pass load-op struct instead of idx to support subpass load-ops.
Rajnesh Kanwal [Tue, 30 Aug 2022 18:58:56 +0000 (19:58 +0100)]
pvr: Pass load-op struct instead of idx to support subpass load-ops.

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

2 years agopvr: Add support to create subpass load ops.
Rajnesh Kanwal [Tue, 30 Aug 2022 14:50:15 +0000 (15:50 +0100)]
pvr: Add support to create subpass load ops.

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

2 years agopvr: Add attachment resolve support.
Rajnesh Kanwal [Fri, 2 Sep 2022 14:15:42 +0000 (15:15 +0100)]
pvr: Add attachment resolve support.

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

2 years agopvr: Add const to structs that are not supposed to be modified.
Rajnesh Kanwal [Fri, 2 Sep 2022 14:12:06 +0000 (15:12 +0100)]
pvr: Add const to structs that are not supposed to be modified.

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

2 years agopvr: Rename userpass_spawn to isp_userpass.
Rajnesh Kanwal [Tue, 23 Aug 2022 10:35:25 +0000 (11:35 +0100)]
pvr: Rename userpass_spawn to isp_userpass.

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

2 years agopvr: Add missing output register write in pvr_CreateRenderPass2.
Rajnesh Kanwal [Wed, 3 Aug 2022 16:53:32 +0000 (17:53 +0100)]
pvr: Add missing output register write in pvr_CreateRenderPass2.

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

2 years agopvr: Use ~0 for masks instead of ~0U.
Rajnesh Kanwal [Thu, 4 Aug 2022 13:05:44 +0000 (14:05 +0100)]
pvr: Use ~0 for masks instead of ~0U.

This makes code future proof in case someone changes the type
and also avoids half masks (0x00000000FFFFFFFF) in case of
64bit variables.

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

2 years agopvr: Add support for generating render pass hw setup data.
Rajnesh Kanwal [Tue, 5 Jul 2022 11:26:37 +0000 (12:26 +0100)]
pvr: Add support for generating render pass hw setup data.

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

2 years agopvr: Replace pvr_renderpass_surface_initop with VkAttachmentLoadOp.
Rajnesh Kanwal [Tue, 2 Aug 2022 12:52:03 +0000 (13:52 +0100)]
pvr: Replace pvr_renderpass_surface_initop with VkAttachmentLoadOp.

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

2 years agopvr: General reformatting and renaming some fields.
Rajnesh Kanwal [Tue, 2 Aug 2022 12:27:35 +0000 (13:27 +0100)]
pvr: General reformatting and renaming some fields.

Mainly renaming driver_id and similar fields to index to
better represent what they contain.

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

2 years agodocs: update calendar and link releases notes for 22.1.7
Eric Engestrom [Thu, 22 Sep 2022 12:33:29 +0000 (14:33 +0200)]
docs: update calendar and link releases notes for 22.1.7

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

2 years agodocs: add release notes for 22.1.7
Eric Engestrom [Thu, 22 Sep 2022 12:58:07 +0000 (14:58 +0200)]
docs: add release notes for 22.1.7

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

2 years agodocs: update calendar and link releases notes for 22.1.6
Eric Engestrom [Thu, 22 Sep 2022 12:33:27 +0000 (14:33 +0200)]
docs: update calendar and link releases notes for 22.1.6

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

2 years agodocs: add release notes for 22.1.6
Eric Engestrom [Thu, 22 Sep 2022 12:55:57 +0000 (14:55 +0200)]
docs: add release notes for 22.1.6

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

2 years agoaco/optimizer: change inverse_comparison in-place
Daniel Schürmann [Wed, 24 Aug 2022 17:13:52 +0000 (19:13 +0200)]
aco/optimizer: change inverse_comparison in-place

This avoids creating a second comparison which is more expensive
than just using the existing s_not.

Totals from 1089 (0.81% of 134913) affected shaders: (GFX10.3)
VGPRs: 50472 -> 50184 (-0.57%)
CodeSize: 4724692 -> 4760824 (+0.76%); split: -0.03%, +0.79%
MaxWaves: 23964 -> 24012 (+0.20%)
Instrs: 859588 -> 859687 (+0.01%); split: -0.11%, +0.12%
Latency: 10674653 -> 10650353 (-0.23%); split: -0.41%, +0.18%
InvThroughput: 1752987 -> 1750238 (-0.16%); split: -0.20%, +0.04%
VClause: 20921 -> 20872 (-0.23%); split: -0.68%, +0.45%
SClause: 31417 -> 31550 (+0.42%)
Copies: 69428 -> 68738 (-0.99%); split: -1.52%, +0.53%
PreSGPRs: 48033 -> 49649 (+3.36%)
PreVGPRs: 44490 -> 43699 (-1.78%)

Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18253>

2 years agoaco: Change inverse-comparison optimization to work with s_not
Timur Kristóf [Sat, 20 Aug 2022 20:55:45 +0000 (22:55 +0200)]
aco: Change inverse-comparison optimization to work with s_not

Some time ago we stopped using s_andn2 with exec for boolean NOT.
The reasoning behind that change was that those booleans will be
always ANDed with exec when necessary.

This inhibited the inverse-comparison optimization in most cases
which is fixed by this patch.

Fossil DB stats on Navi 21:

Totals from 12251 (9.08% of 134913) affected shaders:
VGPRs: 801744 -> 802016 (+0.03%); split: -0.00%, +0.04%
SpillSGPRs: 8863 -> 8893 (+0.34%)
CodeSize: 100593244 -> 100370684 (-0.22%); split: -0.22%, +0.00%
MaxWaves: 204994 -> 204948 (-0.02%); split: +0.00%, -0.02%
Instrs: 18717001 -> 18668965 (-0.26%); split: -0.26%, +0.00%
Latency: 263255046 -> 262874896 (-0.14%); split: -0.16%, +0.02%
InvThroughput: 52760249 -> 52721736 (-0.07%); split: -0.08%, +0.01%
VClause: 329631 -> 329680 (+0.01%); split: -0.03%, +0.04%
SClause: 681563 -> 681435 (-0.02%); split: -0.02%, +0.00%
Copies: 1331612 -> 1372446 (+3.07%); split: -0.03%, +3.10%
Branches: 548325 -> 548301 (-0.00%)
PreSGPRs: 911317 -> 909700 (-0.18%)
PreVGPRs: 766279 -> 767070 (+0.10%)

Signed-off-by: Timur Kristóf <timur.kristof@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/18253>

2 years agoaco/optimizer: optimize s_and(exec, s_and(x, y)) more aggressively
Daniel Schürmann [Wed, 24 Aug 2022 13:12:40 +0000 (15:12 +0200)]
aco/optimizer: optimize s_and(exec, s_and(x, y)) more aggressively

It is enough if either of the two operands is respecting the
current exec mask.

Totals from 1680 (1.25% of 134913) affected shaders: (GFX10.3)
CodeSize: 3929436 -> 3922372 (-0.18%); split: -0.18%, +0.00%
Instrs: 730305 -> 728536 (-0.24%); split: -0.24%, +0.00%
Latency: 6839314 -> 6835154 (-0.06%); split: -0.07%, +0.01%
InvThroughput: 1371351 -> 1371267 (-0.01%); split: -0.01%, +0.00%
SClause: 32819 -> 32802 (-0.05%); split: -0.09%, +0.04%
Copies: 33264 -> 33271 (+0.02%); split: -0.01%, +0.03%

Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18253>

2 years agoaco/optimizer: do can_eliminate_and_exec() optimization later
Daniel Schürmann [Wed, 24 Aug 2022 10:25:23 +0000 (12:25 +0200)]
aco/optimizer: do can_eliminate_and_exec() optimization later

This will allow to optimize s_not(v_cmp()) safely.

Totals from 1024 (0.76% of 134913) affected shaders: (GFX10.3)
CodeSize: 5695424 -> 5701860 (+0.11%); split: -0.00%, +0.11%
Scratch: 242688 -> 241664 (-0.42%)
Instrs: 1040656 -> 1041635 (+0.09%); split: -0.00%, +0.09%
Latency: 16842282 -> 16922790 (+0.48%); split: -0.06%, +0.54%
InvThroughput: 4772728 -> 4810868 (+0.80%); split: -0.10%, +0.90%
VClause: 20013 -> 20000 (-0.06%); split: -0.12%, +0.05%
Copies: 115057 -> 114384 (-0.58%); split: -1.22%, +0.63%
Branches: 34531 -> 34532 (+0.00%); split: -0.00%, +0.01%
PreSGPRs: 46263 -> 46267 (+0.01%)

Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18253>

2 years agozink: assert on unnormalized texcoords
Erik Faye-Lund [Fri, 22 Jul 2022 09:35:10 +0000 (11:35 +0200)]
zink: assert on unnormalized texcoords

We do not support PIPE_CAP_TEXRECT, so let's assert in case something
tries to use it behind our back.

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

2 years agomesa/st: always use normalized coords for samplers
Erik Faye-Lund [Tue, 20 Sep 2022 08:12:50 +0000 (10:12 +0200)]
mesa/st: always use normalized coords for samplers

Normalized samplers is the norm, and non-normalized samplers might cause
some drivers and hardware to have to bend over backwards a bit.

We're using TXF here anyway, so it doesn't really matter what we set
this state to. So let's always use normalized samplers instead of
always using non-normalized samplers. That makes things easier for
everyone.

Fixes: e7b95619596 ("gallium: implement compute pbo download")
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17708>

2 years agomesa/st: always use normalized coords for samplers
Erik Faye-Lund [Tue, 20 Sep 2022 08:12:50 +0000 (10:12 +0200)]
mesa/st: always use normalized coords for samplers

Normalized samplers is the norm, and non-normalized samplers might cause
some drivers and hardware to have to bend over backwards a bit.

We're using TXF here anyway, so it doesn't really matter what we set
this state to. So let's always use normalized samplers instead of
always using non-normalized samplers. That makes things easier for
everyone.

Fixes: 41e093fc98c ("st/pbo: add a fast pbo download code-path")
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17708>

2 years agomesa/st: always use normalized coords for samplers
Erik Faye-Lund [Tue, 20 Sep 2022 08:12:50 +0000 (10:12 +0200)]
mesa/st: always use normalized coords for samplers

Normalized samplers is the norm, and non-normalized samplers might cause
some drivers and hardware to have to bend over backwards a bit.

We're using TXF here anyway, so it doesn't really matter what we set
this state to. So let's always use normalized samplers instead of
always using non-normalized samplers. That makes things easier for
everyone.

Fixes: ed0e9862c56 ("st/mesa: implement PBO downloads for ReadPixels")
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17708>

2 years agobroadcom/compiler: increase V3D_MAX_BUFFE_RANGE to 2^30 bytes
Iago Toral Quiroga [Thu, 22 Sep 2022 09:19:07 +0000 (11:19 +0200)]
broadcom/compiler: increase V3D_MAX_BUFFE_RANGE to 2^30 bytes

This is the minimum required by KHR_maintenance4 and there is no
reason we can't support this.

The only restriction we have is that the texture state base
address (which comes into play with texel buffers) must be aligned
to 4-bits, but this doesn't restrict the size of the buffer, only
its base address, and we already have requirements for buffer
alignment that ensure this.

Fixes: dEQP-VK.api.info.vulkan1p3_limits_validation.khr_maintenance4
Fixes: 2c388c1d ('v3dv: set maxBufferSize property')
Acked-by: Eric Engestrom <eric@igalia.com>
Tested-by: Eric Engestrom <eric@igalia.com>
Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18748>

2 years agoiris: Support up to 128 textures
Jason Ekstrand [Fri, 15 Apr 2022 22:01:17 +0000 (17:01 -0500)]
iris: Support up to 128 textures

This is required for OpenCL.  I kind-of hate this patch.  I really don't
like GROUP_TEXTURE_LOW64 and GROUP_TEXTURE_HIGH64 but it was either that
or I had to make all the used bitsets 128 which would have mean making
them BITSET and that would have been a lot more churn.

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

2 years agoiris: Support up to 64 images
Jason Ekstrand [Fri, 15 Apr 2022 22:10:45 +0000 (17:10 -0500)]
iris: Support up to 64 images

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

2 years agoiris: Split max #defines for textures/samplers/images
Jason Ekstrand [Fri, 15 Apr 2022 21:29:52 +0000 (16:29 -0500)]
iris: Split max #defines for textures/samplers/images

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

2 years agoiris: Stop looking at textures_used for samplers
Jason Ekstrand [Fri, 15 Apr 2022 21:23:50 +0000 (16:23 -0500)]
iris: Stop looking at textures_used for samplers

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

2 years agoTry to fix FTBFS on kfreebsd architecture
Laurent Bigonville [Thu, 17 Feb 2022 13:49:27 +0000 (14:49 +0100)]
Try to fix FTBFS on kfreebsd architecture

Fixes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/4081

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

2 years agointel/utrace: create the callback events for xfb trace points
Iván Briano [Wed, 21 Sep 2022 23:22:12 +0000 (16:22 -0700)]
intel/utrace: create the callback events for xfb trace points

Fixes: 79c2f9e7cbf ("anv: trace xfb queries")

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

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

2 years agoanv: Set meshShaderQueries for mesh shader ext features
Iván Briano [Wed, 21 Sep 2022 21:54:49 +0000 (14:54 -0700)]
anv: Set meshShaderQueries for mesh shader ext features

v2 (Jordan): More descriptive commit message and fixes tag

Fixes: 9701b9098f2 ("anv: enable EXT_mesh_shader")

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Caio Oliveira <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18735>

2 years agod3d12: Initialize d3d12_video_encoder_references_manager_hevc::m_current_frame_idx.
Vinson Lee [Sun, 18 Sep 2022 17:45:22 +0000 (10:45 -0700)]
d3d12: Initialize d3d12_video_encoder_references_manager_hevc::m_current_frame_idx.

Fix defect reported by Coverity Scan.

Uninitialized scalar field (UNINIT_CTOR)
uninit_member: Non-static class member m_current_frame_idx is not
initialized in this constructor nor in any functions that it calls.

Fixes: da11684e9db ("d3d12: Add HEVC Decode/Encode")
Signed-off-by: Vinson Lee <vlee@freedesktop.org>
Reviewed-by: Sil Vilerino <sivileri@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18654>

2 years agoradv/r600/clover: Getting libelf to be optional
Yonggang Luo [Tue, 20 Sep 2022 15:10:22 +0000 (23:10 +0800)]
radv/r600/clover: Getting libelf to be optional

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

2 years agoutil: Remove the macro DEBUG_GET_ONCE_FILE_OPTION
Yonggang Luo [Thu, 1 Sep 2022 14:23:05 +0000 (22:23 +0800)]
util: Remove the macro DEBUG_GET_ONCE_FILE_OPTION

DEBUG_GET_ONCE_FILE_OPTION is not a truly once function, it's return a new
FILE* object when calling to it when the conditions are satisfied. And it's
functional can be replaced with DEBUG_GET_ONCE_OPTION properly.

Signed-off-by: Yonggang Luo <luoyonggang@gmail.com>
Acked-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Chia-I Wu <olvaffe@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18323>

2 years agoutil: getting get_tracefile in u_trace.c to be thread safe
Yonggang Luo [Thu, 1 Sep 2022 14:22:31 +0000 (22:22 +0800)]
util: getting get_tracefile in u_trace.c to be thread safe

Remove the usage of DEBUG_GET_ONCE_FILE_OPTION because it's not a truly
once function, it's return a new FILE* object when calling to it when
the conditions are satisfied.

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

Signed-off-by: Yonggang Luo <luoyonggang@gmail.com>
Acked-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Chia-I Wu <olvaffe@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18323>

2 years agoutil: Add util_call_once for optimize call to util_call_once_with_context out for...
Yonggang Luo [Wed, 31 Aug 2022 07:15:00 +0000 (15:15 +0800)]
util: Add util_call_once for optimize call to util_call_once_with_context out for hot path

For hot path, there is only need to a load instruction to load if initialized are true now,
So the extra cost is minimal.

Signed-off-by: Yonggang Luo <luoyonggang@gmail.com>
Acked-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Chia-I Wu <olvaffe@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18323>

2 years agozink: add stencil border color clamping
Mike Blumenkrantz [Wed, 14 Sep 2022 14:04:59 +0000 (10:04 -0400)]
zink: add stencil border color clamping

fixes (tu):
dEQP-GLES31.functional.texture.border_clamp.range_clamp.nearest_uint_stencil
dEQP-GLES31.functional.texture.border_clamp.range_clamp.nearest_float_depth_uint_stencil_sample_stencil
dEQP-GLES31.functional.texture.border_clamp.range_clamp.nearest_unorm_depth_uint_stencil_sample_stencil

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

2 years agozink: add srgb border color clamping
Mike Blumenkrantz [Wed, 14 Sep 2022 13:05:08 +0000 (09:05 -0400)]
zink: add srgb border color clamping

fixes (tu):
dEQP-GLES31.functional.texture.border_clamp.range_clamp.linear_srgb_color
dEQP-GLES31.functional.texture.border_clamp.range_clamp.nearest_srgb_color

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

2 years agozink: add border color clamping when customBorderColorWithoutFormat isn't supported
Mike Blumenkrantz [Wed, 14 Sep 2022 12:32:04 +0000 (08:32 -0400)]
zink: add border color clamping when customBorderColorWithoutFormat isn't supported

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

2 years agozink: move color channel clamping to zink_format.c
Mike Blumenkrantz [Wed, 14 Sep 2022 12:31:43 +0000 (08:31 -0400)]
zink: move color channel clamping to zink_format.c

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

2 years agozink: clamp z/s formats to aspected format for border colors
Mike Blumenkrantz [Wed, 14 Sep 2022 13:18:50 +0000 (09:18 -0400)]
zink: clamp z/s formats to aspected format for border colors

a z/s sampler with int border color is stencil and vice versa

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

2 years agoiris: Handle resource offsets in buffer copies
Jason Ekstrand [Thu, 7 Apr 2022 22:51:04 +0000 (17:51 -0500)]
iris: Handle resource offsets in buffer copies

Fixes: c5b22441f1c ("iris: Fix buffer -> buffer copy_region")
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15811>

2 years agoiris: Fix more BO alignments
Jason Ekstrand [Thu, 7 Apr 2022 23:14:34 +0000 (18:14 -0500)]
iris: Fix more BO alignments

Fixes: 32c5d6d1dca2 ("iris: Add an alignment parameter to iris_bo_alloc()")
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15811>

2 years agoiris: Use a larger alignment for buffer allocations
Jason Ekstrand [Thu, 7 Apr 2022 22:56:25 +0000 (17:56 -0500)]
iris: Use a larger alignment for buffer allocations

This is likely required for OpenGL buffer texture allocations.  It'll
also make buffer copies faster if things are generally nicely aligned.
It's definitely required for OpenCL.

Fixes: 32c5d6d1dca2 ("iris: Add an alignment parameter to iris_bo_alloc()")
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15811>

2 years agoagx: Account for mask when writing registers
Alyssa Rosenzweig [Sun, 11 Sep 2022 16:03:15 +0000 (12:03 -0400)]
agx: Account for mask when writing registers

To use fewer registers.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18687>

2 years agoagx: Pass mask into ld/st_tile instructions
Alyssa Rosenzweig [Sun, 11 Sep 2022 16:02:32 +0000 (12:02 -0400)]
agx: Pass mask into ld/st_tile instructions

Properly handle render target formats with <4 components.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18687>

2 years agoagx: Ensure that the optimizer sees legitimate SSA
Alyssa Rosenzweig [Sat, 10 Sep 2022 21:31:07 +0000 (17:31 -0400)]
agx: Ensure that the optimizer sees legitimate SSA

Expecting it to keep around unused definitions around is wishful. Add an
"anchoring" unit_test instruction to consume the results so they don't
have to be precoloured registers.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18687>

2 years agoagx: Test fsat+f2f16 together
Alyssa Rosenzweig [Sat, 10 Sep 2022 02:11:55 +0000 (22:11 -0400)]
agx: Test fsat+f2f16 together

Something I hit when mucking with this pass.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18687>

2 years agoagx: Validate immediates
Alyssa Rosenzweig [Sat, 10 Sep 2022 19:58:25 +0000 (15:58 -0400)]
agx: Validate immediates

In particular the new sizing rules.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18687>

2 years agoagx: Use 16-bit immediates
Alyssa Rosenzweig [Sat, 10 Sep 2022 19:57:43 +0000 (15:57 -0400)]
agx: Use 16-bit immediates

This is slightly more accurate in the IR, and means we instruction
select the current 16-bit size floating point instructions when all
non-immediate operands are 16-bit.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18687>

2 years agoagx: Emit fewer combines for intrinsics
Alyssa Rosenzweig [Sat, 10 Sep 2022 20:24:26 +0000 (16:24 -0400)]
agx: Emit fewer combines for intrinsics

A bunch of the emitted combines were unnecessary, or unnecessarily
large. Fix the accounting now that combines are variable size.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18687>

2 years agoagx: Fix bfi_mask packing
Alyssa Rosenzweig [Sat, 10 Sep 2022 01:26:39 +0000 (21:26 -0400)]
agx: Fix bfi_mask packing

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18687>

2 years agointel/dev: Adjust prefetch_size values for MTL engines
José Roberto de Souza [Mon, 12 Sep 2022 17:10:07 +0000 (10:10 -0700)]
intel/dev: Adjust prefetch_size values for MTL engines

MTL has different CS prefetch sizes for each CS type.
So here replacing the cs_prefetch_size in intel_device_info struct
by a function that takes as argument the i915 engine class.

Fixes:
- func.cmd-buffer.small-secondaries.q0
- dEQP-VK.multiview.secondary_cmd_buffer.*
- Several other VK CTS tests that uses secondary_cmd_buffer

v2:
- renamed to intel_device_info_get_engine_prefetch() (Jordan)

v3:
- renamed to intel_device_info_calc_engine_prefetch()
- store each engine class prefetch in intel_device_info

BSpec: 45718
Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18597>

2 years agomesa/st: check egl image and texture target match before binding
Simon Zeni [Wed, 21 Sep 2022 17:47:45 +0000 (13:47 -0400)]
mesa/st: check egl image and texture target match before binding

Signed-off-by: Simon Zeni <simon@bl4ckb0ne.ca>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18673>

2 years agomesa: simplify st_egl_image binding process for texture storage
Simon Zeni [Mon, 19 Sep 2022 15:21:32 +0000 (11:21 -0400)]
mesa: simplify st_egl_image binding process for texture storage

The dmabuf imported edge case is now properly handled.

Signed-off-by: Simon Zeni <simon@bl4ckb0ne.ca>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18673>

2 years agogallium: track if st_egl_image was created by a dmabuf
Simon Zeni [Mon, 19 Sep 2022 11:16:49 +0000 (07:16 -0400)]
gallium: track if st_egl_image was created by a dmabuf

This is required by GL_EXT_EGL_image_storage to verify if the image is valid

Signed-off-by: Simon Zeni <simon@bl4ckb0ne.ca>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18673>

2 years agomesa: fix EXT_EGL_image_storage target validation
Simon Zeni [Fri, 16 Sep 2022 18:23:50 +0000 (14:23 -0400)]
mesa: fix EXT_EGL_image_storage target validation

EXT_EGL_image_storage requires OpenGL 4.2, OpenGL ES 3.0, or
ARB_texture_storage, and EXT_direct_state_access or equivalent for
`EGLImageTargetTextureStorageEXT`.

`target` can be one of GL_TEXTURE_2D, GL_TEXTURE_2D_ARRAY, GL_TEXTURE_3D,
GL_TEXTURE_CUBE_MAP, GL_TEXTURE_CUBE_MAP_ARRAY. On non-ES GL it can also be
GL_TEXTURE_1D or GL_TEXTURE_1D_ARRAY. If OES_EGL_image_external is supported,
it can also be GL_TEXTURE_EXTERNAL_OES.

Signed-off-by: Simon Zeni <simon@bl4ckb0ne.ca>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18673>

2 years agozink: don't always set VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT with gpl
Mike Blumenkrantz [Wed, 21 Sep 2022 13:21:42 +0000 (09:21 -0400)]
zink: don't always set VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT with gpl

this is illegal

Fixes: 86e4fcd9a92 ("zink: add a graphics pipeline library implementation")

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

2 years agozink: don't call CmdBindVertexBuffers2EXT with no attributes
Mike Blumenkrantz [Wed, 21 Sep 2022 13:20:27 +0000 (09:20 -0400)]
zink: don't call CmdBindVertexBuffers2EXT with no attributes

cc: mesa-stable

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

2 years agod3d12: Make get_feedback return correctly on error when writing *size=0
Sil Vilerino [Wed, 21 Sep 2022 20:48:01 +0000 (16:48 -0400)]
d3d12: Make get_feedback return correctly on error when writing *size=0

Reviewed-by: Giancarlo Devich <gdevich@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18715>

2 years agod3d12: Extract into common variable for metadata slot calculation
Sil Vilerino [Wed, 21 Sep 2022 20:36:37 +0000 (16:36 -0400)]
d3d12: Extract into common variable for metadata slot calculation

Removes duplicated code using X modulo D3D12_VIDEO_ENC_METADATA_BUFFERS_COUNT

Reviewed-by: Giancarlo Devich <gdevich@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18715>

2 years agod3d12: Enhance get_feedback not enough buffers message
Sil Vilerino [Wed, 21 Sep 2022 20:29:55 +0000 (16:29 -0400)]
d3d12: Enhance get_feedback not enough buffers message

Indicate to increase if the env var D3D12_VIDEO_ENC_METADATA_BUFFERS_COUNT
if not enough buffers in the get_feedback function

Reviewed-by: Giancarlo Devich <gdevich@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18715>

2 years agod3d12: Fix redundant/inconsistent initializations for d3d12_video_encoder
Sil Vilerino [Wed, 21 Sep 2022 20:14:42 +0000 (16:14 -0400)]
d3d12: Fix redundant/inconsistent initializations for d3d12_video_encoder

Reviewed-by: Giancarlo Devich <gdevich@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18715>

2 years agod3d12: Add output buffer to inflight resourceset
Sil Vilerino [Tue, 20 Sep 2022 18:48:53 +0000 (14:48 -0400)]
d3d12: Add output buffer to inflight resourceset

Reviewed-by: Giancarlo Devich <gdevich@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18715>

2 years agod3d12: Make d3d12 encode operations async and do not block waiting
Sil Vilerino [Tue, 20 Sep 2022 17:41:20 +0000 (13:41 -0400)]
d3d12: Make d3d12 encode operations async and do not block waiting

Separate d3d12_video_encode flush on end_frame (ie. vaEndPicture) from fence sync in get_feedback (ie. vaSyncSurface/Buffer)

Reviewed-by: Giancarlo Devich <gdevich@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18715>

2 years agod3d12: Have d3d12_video_encoder keep separate references for enc, heap and dpb alloca...
Sil Vilerino [Tue, 20 Sep 2022 16:58:21 +0000 (12:58 -0400)]
d3d12: Have d3d12_video_encoder keep separate references for enc, heap and dpb allocations for in flight resources

Reviewed-by: Giancarlo Devich <gdevich@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18715>

2 years agod3d12: d3d12_video_encoder add reset() to prevent leaks on re-allocation
Sil Vilerino [Tue, 20 Sep 2022 16:45:02 +0000 (12:45 -0400)]
d3d12: d3d12_video_encoder add reset() to prevent leaks on re-allocation

Reviewed-by: Giancarlo Devich <gdevich@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18715>

2 years agod3d12: Encoder to use independent command allocators per in flight resource set
Sil Vilerino [Tue, 20 Sep 2022 16:28:19 +0000 (12:28 -0400)]
d3d12: Encoder to use independent command allocators per in flight resource set

Reviewed-by: Giancarlo Devich <gdevich@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18715>

2 years agod3d12: Move encode configuration and capabilities into separate structs
Sil Vilerino [Tue, 20 Sep 2022 16:05:39 +0000 (12:05 -0400)]
d3d12: Move encode configuration and capabilities into separate structs

Reviewed-by: Giancarlo Devich <gdevich@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18715>

2 years agod3d12: Change d3d12_video_encoder to not automatically flush
Sil Vilerino [Tue, 20 Sep 2022 15:21:48 +0000 (11:21 -0400)]
d3d12: Change d3d12_video_encoder to not automatically flush

With PIPE_VIDEO_CAP_REQUIRES_FLUSH_ON_END_FRAME reported as 1, the frontend will call flush()

Reviewed-by: Giancarlo Devich <gdevich@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18715>

2 years agod3d12: Keep track of feedbacks from previous encode executions
Sil Vilerino [Mon, 19 Sep 2022 22:25:57 +0000 (18:25 -0400)]
d3d12: Keep track of feedbacks from previous encode executions

Keep track of previous executed encodes with their metadata as vaSyncSurface
which queries this can be called with latency of several frames.
Fixes gstreamer encoding tearing issues

Reviewed-by: Giancarlo Devich <gdevich@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18715>

2 years agod3d12: Export some util functions from d3d12_fence for d3d12 video
Sil Vilerino [Tue, 20 Sep 2022 14:28:38 +0000 (10:28 -0400)]
d3d12: Export some util functions from d3d12_fence for d3d12 video

Reviewed-by: Giancarlo Devich <gdevich@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18715>

2 years agod3d12: Change type of m_FenceValue to uint64_t in d3d12_video_encoder
Sil Vilerino [Tue, 20 Sep 2022 14:25:05 +0000 (10:25 -0400)]
d3d12: Change type of m_FenceValue to uint64_t in d3d12_video_encoder

Reviewed-by: Giancarlo Devich <gdevich@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18715>

2 years agod3d12: Add support for PIPE_VIDEO_CAP_ENC_SUPPORTS_ASYNC_OPERATION
Sil Vilerino [Tue, 20 Sep 2022 14:18:36 +0000 (10:18 -0400)]
d3d12: Add support for PIPE_VIDEO_CAP_ENC_SUPPORTS_ASYNC_OPERATION

Add support for PIPE_VIDEO_CAP_ENC_SUPPORTS_ASYNC_OPERATION based on D3D12_VIDEO_ENC_ASYNC env variable defaulted to true

Reviewed-by: Giancarlo Devich <gdevich@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18715>

2 years agod3d12: Report PIPE_VIDEO_CAP_REQUIRES_FLUSH_ON_END_FRAME
Sil Vilerino [Tue, 20 Sep 2022 14:16:16 +0000 (10:16 -0400)]
d3d12: Report PIPE_VIDEO_CAP_REQUIRES_FLUSH_ON_END_FRAME

Reviewed-by: Giancarlo Devich <gdevich@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18715>