platform/upstream/mesa.git
2 years agoradv: Advertise VK_KHR_ray_tracing_maintenance1
Konstantin Seurer [Tue, 10 May 2022 13:51:30 +0000 (15:51 +0200)]
radv: Advertise VK_KHR_ray_tracing_maintenance1

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

2 years agoradv: vkCmdTraceRaysIndirect2KHR
Konstantin Seurer [Thu, 12 May 2022 18:22:59 +0000 (20:22 +0200)]
radv: vkCmdTraceRaysIndirect2KHR

This changes the trace rays logic to always use
VkTraceRaysIndirectCommand2KHR and implements
vkCmdTraceRaysIndirect2KHR. I renamed the
load_sbt_amd to sbt_base_amd and moved the SBT
load lowering from ACO to NIR.

Note that we can not just upload one pointer to
all the trace parameters because that would
be incompatible with traceRaysIndirect.

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

2 years agonir: Handle ray_launch_size_addr in opt_preamble
Konstantin Seurer [Thu, 12 May 2022 18:13:40 +0000 (20:13 +0200)]
nir: Handle ray_launch_size_addr in opt_preamble

Found this while working on traceRaysIndirect2.
I don't think this is relevant for now at least
since we don't use the pass in RADV.

Fixes: 938c9d9 ("nir: Add a ray launch size addr intrinsic")
Signed-off-by: Konstantin Seurer <konstantin.seurer@gmail.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16430>

2 years agoradv: PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY
Konstantin Seurer [Tue, 10 May 2022 14:30:46 +0000 (16:30 +0200)]
radv: PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY

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

2 years agoradv: ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR
Konstantin Seurer [Tue, 10 May 2022 14:26:38 +0000 (16:26 +0200)]
radv: ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR

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

2 years agoradv: Add accel struct queries for maintenance1
Konstantin Seurer [Tue, 10 May 2022 14:21:46 +0000 (16:21 +0200)]
radv: Add accel struct queries for maintenance1

Implements the new
VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR
and
VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR
query types.

The documentation is a bit lacking for now but
the fist type probably refers to the instance
count and the second type refers to the
acceleration structure size which we already
store in radv_acceleration_structure. To support
size queries, this commit adds a size member
to the acceleration structure header.

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

2 years agoradv: ray cull mask
Konstantin Seurer [Tue, 10 May 2022 14:15:02 +0000 (16:15 +0200)]
radv: ray cull mask

Lower the cull_mask system value to rt variable
load and advertise the corresponding capability.

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

2 years agospirv: Add plumbing for ray_cull_mask
Konstantin Seurer [Tue, 10 May 2022 14:10:31 +0000 (16:10 +0200)]
spirv: Add plumbing for ray_cull_mask

Add a new cull_mask system value that is exposed
by the ray_cull_mask capability of
SPV_KHR_ray_cull_mask.

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

2 years agovulkan: Spec update to 1.3.216
Konstantin Seurer [Thu, 2 Jun 2022 15:19:23 +0000 (17:19 +0200)]
vulkan: Spec update to 1.3.216

Update the vulkan headers and xml to 1.3.216
including the spirv headers. The new spirv spec
added new OpAlias*INTEL ops, which we ignore in
vtn_gather_types_c.py.

Signed-off-by: Konstantin Seurer <konstantin.seurer@gmail.com>
Acked-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16430>

2 years agou_transfer_helper: flush temporary transfer first for MSAA
Vasily Khoruzhick [Wed, 8 Jun 2022 05:18:12 +0000 (22:18 -0700)]
u_transfer_helper: flush temporary transfer first for MSAA

vtbl->transfer_map may return staging buffer and not real one and it
exposes a problem in MSAA resolve path, since u_transfer_helper does
blit from a resource that is still mapped and it's not flushed yet.

Add explicit flush_region() for a temporary transfer before doing flush
for MSAA resolve.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16923>

2 years agoaux/tc: handle link_shader
Mike Blumenkrantz [Mon, 6 Jun 2022 13:25:56 +0000 (09:25 -0400)]
aux/tc: handle link_shader

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

2 years agoaux/trace: add pipe_context::link_shader
Mike Blumenkrantz [Mon, 6 Jun 2022 13:25:41 +0000 (09:25 -0400)]
aux/trace: add pipe_context::link_shader

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

2 years agopanvk: Drop support for Midgard
Alyssa Rosenzweig [Tue, 7 Jun 2022 16:02:58 +0000 (12:02 -0400)]
panvk: Drop support for Midgard

We've discussed this at length and have agreed that Midgard + Vulkan is DOA, but
have let the code linger. Now it's getting in the way of forward progress for
PanVK... That means it's time to drop the code paths and commit t to not
supporting it.

Midgard is only *barely* Vulkan 1.0 capable, Arm's driver was mainly
experimental. Today, there are no known workloads today for hardware of that
class, given the relatively weak CPU and GPU, Linux, and arm64. Even with a
perfect Vulkan driver, FEX + DXVK on RK3399 won't be performant.

There is a risk here: in the future, 2D workloads (like desktop compositors)
might hard depend on Vulkan. It seems this is bound to happen but about a decade
out. I worry about contributing to hardware obsolescence due to missing Vulkan
drivers, however such a change would obsolete far more than Midgard v5...
There's plenty of GL2 hardware that's still alive and well, for one. It doesn't
look like Utgard will be going anywhere, even then.

For the record: I think depending on Vulkan for 2D workloads is a bad idea. It's
unfortunately on brand for some compositors.

Getting conformant Vulkan 1.0 on Midgard would be a massive amount of work on
top of conformant Bifrost/Valhall PanVK, and the performance would make it
useless for interesting 3D workloads -- especially by 2025 standards.

If there's a retrocomputing urge in the future to build a Midgard + Vulkan
driver, that could happen later. But it would be a lot more work than reverting
this commit. The compiler would need significant work to be appropriate for
anything newer than OpenGL ES 3.0, even dEQP-GLES31 tortures it pretty bad.
Support for non-32bit types is lacklustre. Piles of basic shader features in
Vulkan 1.0 are missing or broken in the Midgard compiler. Even if you got
everything working, basic extensions like subgroup ops are architecturally
impossible to implement.

On the core driver side, we would need support for indirect draws -- on Vulkan,
stalling and doing it on the CPU is a nonoption. In fact, the indirect draw code
is needed for plain indexed draws in Vulkan, meaning Zink + PanVK can be
expected to have terrible performance on anything older than Valhall. (As far as
workloads to justify building a Vulkan driver, Zink/ANGLE are the worst
examples. The existing GL driver works well and is not much work to maintain. If
it were, sticking it in Amber branch would still be less work than trying to
build a competent Vulkan driver for that hardware.)

Where does PanVK fit in? Android, for one. High end Valhall devices might run
FEX + DXVK acceptably. For whatever it's worth, Valhall is the first Mali
hardware that can support Vulkan properly, even Bifrost Vulkan is a slow mess
that you wouldn't want to use for anything if you had another option.

In theory Arm ships Vulkan drivers for this class of hardware. In practice,
Arm's drivers have long sucked on Linux, assuming you could get your hands on a
build.  It didn't take much for Panfrost to win the Linux/Mali market.

The highest end Midgard getting wide use with Panfrost is the RK3399 with the
Mali-T860, as in the Pinebook Pro. Even by today's standards, RK3399 is showing
its limits. It seems unlikely that its users in 10 years from now will also be
using Vulkan-required 2030 desktop environment eye candy. Graphically, the
nicest experience on RK3399 is sway or weston, with GLES2 renderers.
Realistically, sway won't go Vulkan-only for a long-time.

Making ourselves crazy trying to support Midgard poorly in PanVK seems like
letting perfect (Vulkan support) be the enemy of good (Vulkan support). In that
light, future developers making core 2D software Vulkan-only (forcing software
rasterization instead of using the hardware OpenGL) are doing a lot more
e-wasting than us simply not providing Midgard Vulkan drivers because we don't
have the resources to do so, and keeping the broken code in-tree will just get
in the way of forward progress for shipping PanVK at all.

There are good reasons, after all, that turnip starts with a6xx.

(If proper Vulkan support only began with Valhall, will we support Bifrost
long term? Unclear. There are some good arguments on both sides here.)

Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Acked-by: Jason Ekstrand <jason.ekstrand@collabora.com>
Acked-by: Boris Brezillon <boris.brezillon@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16915>

2 years agolavapipe: allow null handleTypes
Michel Zou [Tue, 7 Jun 2022 19:31:54 +0000 (21:31 +0200)]
lavapipe: allow null handleTypes

handleTypes is allowed to be null with VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO

Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com>
Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Closes #6501

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

2 years agomicrosoft/compiler: Drop the auto_link parameter passed to nir_to_dxil()
Boris Brezillon [Fri, 29 Apr 2022 15:21:13 +0000 (08:21 -0700)]
microsoft/compiler: Drop the auto_link parameter passed to nir_to_dxil()

Now that all nir_to_dxil() have transitioned to explicit linking, we
can drop the auto_link parameter and simplify the signature logic along
the way.

Reviewed-by: Enrico Galli <enrico.galli@intel.com>
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16221>

2 years agomicrosoft/spirv_to_dxil: Let spirv_to_dxil() handle the linking
Boris Brezillon [Fri, 29 Apr 2022 15:15:17 +0000 (08:15 -0700)]
microsoft/spirv_to_dxil: Let spirv_to_dxil() handle the linking

That's still a dummy linking we do here, and it's likely to be
incorrect for complex scenarios. Not sure the previous situation
was any better though, and at least, doing that allows us to
get rid of the special cases we have in dxil_signature.c.

Reviewed-by: Enrico Galli <enrico.galli@intel.com>
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16221>

2 years agodzn: Fix vertex input handling
Boris Brezillon [Wed, 8 Jun 2022 10:42:16 +0000 (03:42 -0700)]
dzn: Fix vertex input handling

Vertex shaders are allowed to define input variables pointing to the
same location but a different, or even variables that overlap other
variables, as long as only one of them is used in a shader invocation.

One way to support that case would be to merge overlapping variables,
but we can also declare one input element per variable, and make those
point to the same input slot/offset. The only limitation with the
second approach is the maximum number of VS input registers, meaning
that only (32 - num_sysvals) input variables can be defined.

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

2 years agodzn: Fix unitialized var access in dzn_meta_compile_shader()
Boris Brezillon [Tue, 7 Jun 2022 14:20:23 +0000 (07:20 -0700)]
dzn: Fix unitialized var access in dzn_meta_compile_shader()

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

2 years agodzn: Handle varying linking explicitly
Boris Brezillon [Thu, 28 Apr 2022 10:14:58 +0000 (03:14 -0700)]
dzn: Handle varying linking explicitly

Now that dxil_spirv_nir.h exposes an helper to run the
DXIL-SPIRV specific passes, we can handle the varying linking
on our side and tell nir_to_dxil() we don't want automatic
varying index/register assignment, which should fix a bunch
of compiler errors.

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

2 years agodzn: Fix maxVertexInputAttributes limit
Boris Brezillon [Fri, 29 Apr 2022 13:22:17 +0000 (15:22 +0200)]
dzn: Fix maxVertexInputAttributes limit

The current implementation doesn't allow more than
MAX_VERTEX_GENERIC_ATTRIBS vertex attributes.

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

2 years agomicrosoft/spirv_to_dxil: vectorize IOs
Boris Brezillon [Wed, 8 Jun 2022 07:39:23 +0000 (00:39 -0700)]
microsoft/spirv_to_dxil: vectorize IOs

DXIL doesn't like when 2 different variables occupy the same slot, so
let's vectorize IOs to avoid that.

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

2 years agomicrosoft/compiler: Allow vulkan users to handle varyings linking
Boris Brezillon [Thu, 28 Apr 2022 13:05:18 +0000 (15:05 +0200)]
microsoft/compiler: Allow vulkan users to handle varyings linking

Letting the compiler decide which slot should be used for varyings when
it doesn't know about the varyings written/read by the previous/next
stage doesn't work well. So let's the caller decide when it wants
automatic index/register assignment through a dedicated parameter,
instead of assuming Vulkan users always want that.

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

2 years agomicrosoft/spirv_to_dxil: Add a linking helper
Boris Brezillon [Fri, 29 Apr 2022 13:21:35 +0000 (15:21 +0200)]
microsoft/spirv_to_dxil: Add a linking helper

Linking should be done in reverse order, starting from the last
pipeline stage and going backward, so we can eliminate outputs from the
previous stage that are never used by the next stage, and possibly
kill some instructions and input variables too.

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

2 years agomicrosoft/spirv_to_dxil: Remove dead IO vars at the end of dxil_spirv_nir_passes()
Boris Brezillon [Wed, 8 Jun 2022 07:23:12 +0000 (00:23 -0700)]
microsoft/spirv_to_dxil: Remove dead IO vars at the end of dxil_spirv_nir_passes()

No need to keep them around if they're unused. Moreover, this should
allow the linking step to get rid of outputs when the next stage
doesn't use them.

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

2 years agomicrosoft/compiler: Make input_mappings immune to driver_location holes
Boris Brezillon [Thu, 28 Apr 2022 17:27:17 +0000 (10:27 -0700)]
microsoft/compiler: Make input_mappings immune to driver_location holes

Right now, nir_to_dxil() assumes driver_location on inputs will be
contiguous, which is true for GL, and also true for Vulkan shaders
with the current implementation. But we are trying to delegate
the varying linking step to Dozen, and that means the driver will
assign the driver_location field.

For everything except vertex shaders this works fine, because we
are in control of the ID we assign to each variable, and can make
sure no holes exists in this assignment, but vertex inputs expect
the index value (which is directly extracted from the
driver_location field) to match the input index defined at pipeline
creation time. The compiler has a hack to treat Vulkan differently
and extract the index from the var->data.location field instead,
but that's a bit confusing.

Moreover, the input_mappings[] array is already indexed with
the var->data.driver_location field in the input load emission
path, so it makes sense to index it with the same field when
emitting signatures.

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

2 years agomicrosoft/spirv_to_dxil: Constify the descriptor binding mapping fields
Boris Brezillon [Fri, 29 Apr 2022 13:08:07 +0000 (06:08 -0700)]
microsoft/spirv_to_dxil: Constify the descriptor binding mapping fields

spirv_to_dxil() doesn't modify those, so let's constify them.

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

2 years agomicrosoft/spirv_to_dxil: Extract NIR passes out of spirv_to_dxil()
Boris Brezillon [Thu, 28 Apr 2022 08:10:54 +0000 (01:10 -0700)]
microsoft/spirv_to_dxil: Extract NIR passes out of spirv_to_dxil()

Extract NIR passes out of spirv_to_dxil() so we can re-use them
without separately and do the varying linking in Dozen. This way
we will also be able to use vk_shader_module_to_nir() which
takes care of the SPIRV -> NIR translation, plus a bunch of
common lowering passes.

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

2 years agomicrosoft/compiler: Make sure all SV_Position components are written
Boris Brezillon [Tue, 7 Jun 2022 12:49:45 +0000 (05:49 -0700)]
microsoft/compiler: Make sure all SV_Position components are written

Not entirely sure if writing to only some components of
gl_Position/SPIRV-PositionBuiltin from a vertex-processing stage is
allowed, but
https://github.com/dneto0/spirv-samples/blob/main/spvasm/SpvModuleScopeVarParserTest_BuiltinPosition_StorePositionMember_OneAccessChain.spvasm
does exactly that.

Let's make sure all SV_Position components are written, otherwise the
DXIL validator complains.

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

2 years agomicrosoft/spirv2dxil: Add a debug option
Boris Brezillon [Tue, 7 Jun 2022 08:57:59 +0000 (01:57 -0700)]
microsoft/spirv2dxil: Add a debug option

So we can dump NIR shaders.

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

2 years agoci/windows: Bump spirv-samples commit-ID
Boris Brezillon [Tue, 7 Jun 2022 10:00:42 +0000 (03:00 -0700)]
ci/windows: Bump spirv-samples commit-ID

We need the fix adding a Block decoration to the BuiltIn struct in
SpvModuleScopeVarParserTest_BuiltinPosition_BuiltIn_Position_Initializer.spvasm.

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

2 years agogitlab: ask that reporters don't include long logs in descriptions
Rhys Perry [Wed, 26 Jan 2022 14:17:33 +0000 (14:17 +0000)]
gitlab: ask that reporters don't include long logs in descriptions

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

2 years agogitlab: ask for useful titles
Rhys Perry [Wed, 26 Jan 2022 14:17:12 +0000 (14:17 +0000)]
gitlab: ask for useful titles

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

2 years agoasahi,agx: Don't set PIPE_CAP_POINT_COORD_ORIGIN_UPPER_LEFT
Alyssa Rosenzweig [Sun, 22 May 2022 03:22:27 +0000 (23:22 -0400)]
asahi,agx: Don't set PIPE_CAP_POINT_COORD_ORIGIN_UPPER_LEFT

Tell the state tracker our point coordinates have a lower left origin
instead of an upper left origin, and remove our point coordinate
flipping code. Saves an instruction in any shader that reads
gl_PointCoord.y

Note: the OpenGL blob also emits an "fadd $y', ^y.neg, 1.0" to flip
point coordinates, so this isn't just a Metal weirdness.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16829>

2 years agomesa,gallium: Make point coord origin a CAP
Alyssa Rosenzweig [Thu, 2 Jun 2022 00:41:58 +0000 (20:41 -0400)]
mesa,gallium: Make point coord origin a CAP

When lower_wpos_pntc is used, the state tracker inserts code to
transform gl_PointCoord.y according to a uniform, to account for
API-requested point coordinate origin and framebuffer orientation. With
the transformation, driver-supplied point coordinates are expected to
have an upper left origin.

If the hardware point coordinate supports (only) a lower left origin,
the backend has to use lower_wpos_pntc and then lower *again* to flip
back. This ends up transforming twice, which is wasteful:

   a = load point coord Y with lower left origin
   a' = 1.0 - a
   a'' = uniform_transform(a')

However, lower_wpos_pntc is quite capable of transforming for a lower
left origin too, it just needs to flip the transformation. Add a CAP
specifying the point coordinate origin convention, rather than assuming
upper-left. This simplifies the Asahi code greatly.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16829>

2 years agopan/perf: Fix performance counters on G57
Alyssa Rosenzweig [Mon, 6 Jun 2022 17:56:50 +0000 (13:56 -0400)]
pan/perf: Fix performance counters on G57

The performance counter layout depends on the number of L2 blocks and the number
of shader cores. It doesn't make a ton of sense to hardcode these into the XML
files. Instead, let's make the coutner offsets in the XML files relative to the
categories (blocks), so we can calculate the offsets of the categories
themselves at runtime based on the computed layout. This fixes performance
counters on Mali-G57 as implemented on MT8192.

There is little code change here, mainly churn from changing the XML definition.
Postprocessing for the XML to make it suitable for Mesa uses Antonio Caggiano's
https://gitlab.freedesktop.org/panfrost/hwc-helper tool.

Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Reviewed-by: Antonio Caggiano <antonio.caggiano@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16803>

2 years agopanfrost: Add panfrost_query_l2_slices helper
Alyssa Rosenzweig [Wed, 25 May 2022 18:34:39 +0000 (14:34 -0400)]
panfrost: Add panfrost_query_l2_slices helper

The number of L2 performance counter blocks equals the number of L2 slices, so
add a query to get this. This information isn't needed by the Mesa driver, so
don't get it in the default device initialization path.

Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Reviewed-by: Antonio Caggiano <antonio.caggiano@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16803>

2 years agopanfrost: Remove is_64b assignments
Alyssa Rosenzweig [Tue, 7 Jun 2022 20:10:43 +0000 (16:10 -0400)]
panfrost: Remove is_64b assignments

These are redundant with GenXML defaults, they're just noise.

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

2 years agopanfrost: Remove redundant first_tag access
Alyssa Rosenzweig [Tue, 7 Jun 2022 20:03:47 +0000 (16:03 -0400)]
panfrost: Remove redundant first_tag access

This already happens in the common prepare_rsd call.

Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16916>

2 years agopanfrost: Deduplicate indirect dispatch structs
Alyssa Rosenzweig [Tue, 7 Jun 2022 19:45:56 +0000 (15:45 -0400)]
panfrost: Deduplicate indirect dispatch structs

The input is specified in two identical structs, tear that apart.

Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16916>

2 years agopanvk: Use push constants for copy shaders
Alyssa Rosenzweig [Tue, 7 Jun 2022 19:17:02 +0000 (15:17 -0400)]
panvk: Use push constants for copy shaders

Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16916>

2 years agopanvk: Use push constants for clear
Alyssa Rosenzweig [Tue, 7 Jun 2022 19:16:51 +0000 (15:16 -0400)]
panvk: Use push constants for clear

Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16916>

2 years agopanfrost: Use push constants for indirect draws
Alyssa Rosenzweig [Tue, 7 Jun 2022 19:16:41 +0000 (15:16 -0400)]
panfrost: Use push constants for indirect draws

Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16916>

2 years agopanfrost: Use push constants for indirect dispatch
Alyssa Rosenzweig [Tue, 7 Jun 2022 19:15:51 +0000 (15:15 -0400)]
panfrost: Use push constants for indirect dispatch

Much simpler than creating a UBO and relying on it getting optimized to a push
constant, with possible reordering.

Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16916>

2 years agopan/bi: Don't reorder push with no_ubo_to_push
Alyssa Rosenzweig [Tue, 7 Jun 2022 19:15:04 +0000 (15:15 -0400)]
pan/bi: Don't reorder push with no_ubo_to_push

Otherwise, load_push_constant won't work properly. This could probably be made
to work if we tried hard enough, but we still don't want reordering for internal
(meta) shaders which are layed out deliberately.

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

2 years agopan/bi: Implement load_push_constant
Alyssa Rosenzweig [Tue, 7 Jun 2022 19:13:11 +0000 (15:13 -0400)]
pan/bi: Implement load_push_constant

Bifrost supports "fast access uniforms" loaded from a single contiguous buffer.
This maps directly to Vulkan push constants, with some caveats:

* No indirect access. Indirects need to be lowered to a UBO pull.
* Strict alignment requirements. These will be met in practice.

Implement the NIR intrinsic and map it to the native hardware construct.

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

2 years agopanfrost: Fix inverted indirect dispatch condition
Alyssa Rosenzweig [Mon, 6 Jun 2022 20:48:57 +0000 (16:48 -0400)]
panfrost: Fix inverted indirect dispatch condition

Inverted condition -- indirect dispatch gets disabled when WLS is in use, not
the other way around. Not sure how this worked before...

Fixes: fd7b44882ce ("panfrost: Use direct dispatch with shared memory")
Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16916>

2 years agoturnip: consider render pass costs in autotune
Chia-I Wu [Thu, 26 May 2022 21:40:49 +0000 (14:40 -0700)]
turnip: consider render pass costs in autotune

To be able to sum drawcall cost and render pass cost, the units of costs
are changed to bytes.  With that, tu_autotune_use_bypass can make
decisions by comparing the costs of sysmem rendering and gmem rendering.

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

2 years agoturnip: estimate render pass costs
Chia-I Wu [Thu, 26 May 2022 16:22:40 +0000 (09:22 -0700)]
turnip: estimate render pass costs

They will be used by autotuner.

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

2 years agoturnip: include stencil test for drawcall costs
Chia-I Wu [Thu, 26 May 2022 21:32:17 +0000 (14:32 -0700)]
turnip: include stencil test for drawcall costs

Stencil test reads from and writes to the stencil buffer.

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

2 years agoturnip: base pipeline draw costs on colorWriteMask
Chia-I Wu [Thu, 26 May 2022 21:18:02 +0000 (14:18 -0700)]
turnip: base pipeline draw costs on colorWriteMask

drawcall_base_cost estimates the memory bandwidth per sample.
colorWriteMask should be more accurate than fs outputs.

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

2 years agoturnip: if-checks autotune debug macros
Chia-I Wu [Thu, 26 May 2022 21:14:54 +0000 (14:14 -0700)]
turnip: if-checks autotune debug macros

This avoids bitrot while the compiler can easily optimize away those
checks.

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

2 years agoradeonsi: set the max UBO size same as the max SSBO size
Marek Olšák [Mon, 6 Jun 2022 01:13:20 +0000 (21:13 -0400)]
radeonsi: set the max UBO size same as the max SSBO size

Reviewed-by: Mihai Preda <mhpreda@gmail.com>
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16901>

2 years agoradeonsi: compute PIPE_CAP_MAX_TEXEL_BUFFER_ELEMENTS_UINT correctly
Marek Olšák [Mon, 6 Jun 2022 00:26:30 +0000 (20:26 -0400)]
radeonsi: compute PIPE_CAP_MAX_TEXEL_BUFFER_ELEMENTS_UINT correctly

Reviewed-by: Mihai Preda <mhpreda@gmail.com>
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16901>

2 years agoradeonsi: change max TBO/SSBO sizes again and rework max alloc size
Marek Olšák [Sun, 5 Jun 2022 21:32:27 +0000 (17:32 -0400)]
radeonsi: change max TBO/SSBO sizes again and rework max alloc size

Allow 1/4 of the max heap size, but maximum of 512 MB on 32-bit
architectures.

Reviewed-by: Mihai Preda <mhpreda@gmail.com>
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16901>

2 years agoradeonsi: clamp against MAX_TEXEL_BUFFER_ELEMENTS correctly
Marek Olšák [Mon, 6 Jun 2022 00:24:49 +0000 (20:24 -0400)]
radeonsi: clamp against MAX_TEXEL_BUFFER_ELEMENTS correctly

Reviewed-by: Mihai Preda <mhpreda@gmail.com>
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16901>

2 years agoradeonsi: report correct maximum compute grid sizes
Marek Olšák [Mon, 6 Jun 2022 01:46:14 +0000 (21:46 -0400)]
radeonsi: report correct maximum compute grid sizes

Reviewed-by: Mihai Preda <mhpreda@gmail.com>
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16901>

2 years agoradeonsi: increase the max compute LDS size to 64KB for gfx7+
Marek Olšák [Mon, 6 Jun 2022 01:45:43 +0000 (21:45 -0400)]
radeonsi: increase the max compute LDS size to 64KB for gfx7+

Reviewed-by: Mihai Preda <mhpreda@gmail.com>
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16901>

2 years agopvr: debug: Implement PVR_DEBUG variable
Matt Coster [Thu, 5 May 2022 10:10:53 +0000 (11:10 +0100)]
pvr: debug: Implement PVR_DEBUG variable

Signed-off-by: Matt Coster <matt.coster@imgtec.com>
Reviewed-by: Frank Binns <frank.binns@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16907>

2 years agopvr: csbgen: Add *_unpack() functions for all generated struct types
Matt Coster [Thu, 12 May 2022 11:00:44 +0000 (12:00 +0100)]
pvr: csbgen: Add *_unpack() functions for all generated struct types

Signed-off-by: Matt Coster <matt.coster@imgtec.com>
Reviewed-by: Frank Binns <frank.binns@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16884>

2 years agopvr: csbgen: Fix "local variable may be undefined" lints
Matt Coster [Fri, 13 May 2022 09:47:33 +0000 (10:47 +0100)]
pvr: csbgen: Fix "local variable may be undefined" lints

Signed-off-by: Matt Coster <matt.coster@imgtec.com>
Reviewed-by: Frank Binns <frank.binns@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16884>

2 years agopvr: csbgen: Replace map() and filter() with list comprehension
Matt Coster [Thu, 12 May 2022 10:16:53 +0000 (11:16 +0100)]
pvr: csbgen: Replace map() and filter() with list comprehension

Guido originally wanted to drop these (along with reduce()) in 3.0, but
compromised to just recommending list comprehension instead [1].

[1]: https://www.artima.com/weblogs/viewpost.jsp?thread=98196

Signed-off-by: Matt Coster <matt.coster@imgtec.com>
Reviewed-by: Frank Binns <frank.binns@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16884>

2 years agopvr: csbgen: Isolate "main" function with __name__ check
Matt Coster [Thu, 12 May 2022 09:27:31 +0000 (10:27 +0100)]
pvr: csbgen: Isolate "main" function with __name__ check

Signed-off-by: Matt Coster <matt.coster@imgtec.com>
Reviewed-by: Frank Binns <frank.binns@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16884>

2 years agopvr: csbgen: Add typing information
Matt Coster [Thu, 12 May 2022 09:26:39 +0000 (10:26 +0100)]
pvr: csbgen: Add typing information

This is generally PEP-484 stuff, but there is one functional change.
The base class Node needed to have an add() method to allow typed
dynamic dispatch. This could have been decorated @abstractmethod, but
that would require an error-raising implementation on all leaf-type
nodes. Instead, I added a base implementation that just errors out with
information from the subclass instance.

As a simple optimization, subclass implementations of add() (instead of
raising the same (or similar) error) now call super().add() in the
case of invalid child nodes.

Signed-off-by: Matt Coster <matt.coster@imgtec.com>
Reviewed-by: Frank Binns <frank.binns@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16884>

2 years agopvr: csbgen: Remove unused function parameters
Matt Coster [Fri, 13 May 2022 09:43:36 +0000 (10:43 +0100)]
pvr: csbgen: Remove unused function parameters

Signed-off-by: Matt Coster <matt.coster@imgtec.com>
Reviewed-by: Frank Binns <frank.binns@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16884>

2 years agopvr: csbgen: Remove "dim" functionality from Group
Matt Coster [Fri, 13 May 2022 09:19:51 +0000 (10:19 +0100)]
pvr: csbgen: Remove "dim" functionality from Group

This allowed for nested groups rendered as arrays. Support for this had
mostly been removed already; this removes the additional value to make
typing easier.

Signed-off-by: Matt Coster <matt.coster@imgtec.com>
Reviewed-by: Frank Binns <frank.binns@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16884>

2 years agopvr: csbgen: Cleanup imports
Matt Coster [Fri, 13 May 2022 09:34:35 +0000 (10:34 +0100)]
pvr: csbgen: Cleanup imports

Signed-off-by: Matt Coster <matt.coster@imgtec.com>
Reviewed-by: Frank Binns <frank.binns@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16884>

2 years agopvr: csbgen: Make some loops more pythonic
Matt Coster [Fri, 13 May 2022 09:31:37 +0000 (10:31 +0100)]
pvr: csbgen: Make some loops more pythonic

Signed-off-by: Matt Coster <matt.coster@imgtec.com>
Reviewed-by: Frank Binns <frank.binns@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16884>

2 years agopvr: csbgen: Add a missing @staticmethod decorator
Matt Coster [Mon, 23 May 2022 08:48:39 +0000 (09:48 +0100)]
pvr: csbgen: Add a missing @staticmethod decorator

Signed-off-by: Matt Coster <matt.coster@imgtec.com>
Reviewed-by: Frank Binns <frank.binns@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16884>

2 years agopvr: csbgen: Formatting pass (PEP-8 plus other minor changes)
Matt Coster [Fri, 13 May 2022 09:30:05 +0000 (10:30 +0100)]
pvr: csbgen: Formatting pass (PEP-8 plus other minor changes)

Signed-off-by: Matt Coster <matt.coster@imgtec.com>
Reviewed-by: Frank Binns <frank.binns@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16884>

2 years agoradv: Implement mesh shader scratch ring.
Timur Kristóf [Fri, 20 May 2022 16:12:36 +0000 (18:12 +0200)]
radv: Implement mesh shader scratch ring.

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

2 years agoac/nir/ngg: Use variables for outputs without cross-invocation access.
Timur Kristóf [Thu, 26 May 2022 17:54:48 +0000 (19:54 +0200)]
ac/nir/ngg: Use variables for outputs without cross-invocation access.

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

2 years agoac/nir/ngg: Use mesh shader scratch ring when outputs don't fit LDS.
Timur Kristóf [Fri, 20 May 2022 16:09:12 +0000 (18:09 +0200)]
ac/nir/ngg: Use mesh shader scratch ring when outputs don't fit LDS.

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

2 years agoac/nir/ngg: Clean up mesh shader output LDS layout.
Timur Kristóf [Fri, 20 May 2022 13:27:03 +0000 (15:27 +0200)]
ac/nir/ngg: Clean up mesh shader output LDS layout.

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

2 years agonir: Introduce new intrinsics for AMD specific mesh shader task ring.
Timur Kristóf [Wed, 1 Jun 2022 12:32:39 +0000 (14:32 +0200)]
nir: Introduce new intrinsics for AMD specific mesh shader task ring.

The mesh shader task ring is a buffer in VRAM which we will use to
store some mesh shader outputs that don't fit into LDS.

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

2 years agoradv: Implement task shader draw and payload rings.
Timur Kristóf [Wed, 11 May 2022 22:40:39 +0000 (00:40 +0200)]
radv: Implement task shader draw and payload rings.

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

2 years agoac: Add task shader ring information.
Timur Kristóf [Tue, 31 May 2022 11:20:23 +0000 (13:20 +0200)]
ac: Add task shader ring information.

Similarly to tessellation rings information, move the task
rings info to ac_gpu_info.

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

2 years agoac: Add RDNA2 task+mesh shader draw packet opcodes.
Timur Kristóf [Tue, 31 May 2022 16:43:52 +0000 (18:43 +0200)]
ac: Add RDNA2 task+mesh shader draw packet opcodes.

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

2 years agopvr: Fix incorrect samples to cr_isp_aa_mode conversion.
Karmjit Mahil [Mon, 30 May 2022 10:30:07 +0000 (11:30 +0100)]
pvr: Fix incorrect samples to cr_isp_aa_mode conversion.

This commit fixes the use of 'case 3' where 'case 4' should have
been.

Reported-by: Matt Coster <matt.coster@imgtec.com>
Signed-off-by: Karmjit Mahil <Karmjit.Mahil@imgtec.com>
Reviewed-by: Frank Binns <frank.binns@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16883>

2 years agopvr: Write immutable descriptor words in vkAllocateDescriptorSets().
Karmjit Mahil [Fri, 25 Feb 2022 17:06:38 +0000 (17:06 +0000)]
pvr: Write immutable descriptor words in vkAllocateDescriptorSets().

Signed-off-by: Karmjit Mahil <Karmjit.Mahil@imgtec.com>
Reviewed-by: Frank Binns <frank.binns@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16883>

2 years agopvr: Add csb enum helper funciton header.
Karmjit Mahil [Thu, 26 May 2022 13:22:08 +0000 (14:22 +0100)]
pvr: Add csb enum helper funciton header.

A new header is introduced which groups all vk, uint, rogue types
to csb enum type conversions.

Signed-off-by: Karmjit Mahil <Karmjit.Mahil@imgtec.com>
Reviewed-by: Frank Binns <frank.binns@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16883>

2 years agoradv, aco: Lower txf offset in NIR.
Georg Lehmann [Sat, 4 Jun 2022 18:04:13 +0000 (20:04 +0200)]
radv, aco: Lower txf offset in NIR.

Foz-DB Navi21:
Totals from 384 (0.28% of 134913) affected shaders:
VGPRs: 29736 -> 29536 (-0.67%)
CodeSize: 2455796 -> 2452652 (-0.13%); split: -0.13%, +0.01%
MaxWaves: 6350 -> 6358 (+0.13%)
Instrs: 457743 -> 456273 (-0.32%); split: -0.33%, +0.01%
Latency: 6680266 -> 6730612 (+0.75%); split: -0.03%, +0.78%
InvThroughput: 1562936 -> 1599375 (+2.33%); split: -0.05%, +2.38%
VClause: 9258 -> 9291 (+0.36%); split: -0.14%, +0.50%
SClause: 15713 -> 15707 (-0.04%); split: -0.08%, +0.04%
Copies: 26878 -> 27021 (+0.53%); split: -0.03%, +0.56%
PreVGPRs: 27259 -> 27230 (-0.11%); split: -0.11%, +0.01%

Signed-off-by: Georg Lehmann <dadschoorse@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16869>

2 years agoradeonsi: set size in si_texture_get_handle
Pierre-Eric Pelloux-Prayer [Wed, 1 Jun 2022 08:48:58 +0000 (10:48 +0200)]
radeonsi: set size in si_texture_get_handle

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

2 years agova/surface: set the correct size in vaExportSurfaceHandle
Pierre-Eric Pelloux-Prayer [Wed, 1 Jun 2022 08:46:11 +0000 (10:46 +0200)]
va/surface: set the correct size in vaExportSurfaceHandle

The size must be the size of the total object, not the size
of the resource.
For instance, when using a single object for a multi-plane
format, the size of each plane should be equal to the size
of the underlying object to match libva's documentation:

        /** Total size of this object (may include regions which are
         *  not part of the surface). */
        uint32_t size;

Fixes: 13b79266e47 ("frontend/va: Setting the size of VADRMPRIMESurfaceDescriptor")
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16813>

2 years agogallium: add size attribute to winsys_handle
Pierre-Eric Pelloux-Prayer [Wed, 1 Jun 2022 08:45:09 +0000 (10:45 +0200)]
gallium: add size attribute to winsys_handle

This is needed at least for the VA-API frontend where the exporter
needs to know the total size of the object.

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

2 years agogallium: update winsys_handle documentation
Pierre-Eric Pelloux-Prayer [Wed, 1 Jun 2022 08:45:01 +0000 (10:45 +0200)]
gallium: update winsys_handle documentation

The function names are resource_***_handle, not textures_***_handles.

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

2 years agozink: only update layout when doing mixed zs attachment renderpass check
Mike Blumenkrantz [Tue, 7 Jun 2022 00:54:53 +0000 (20:54 -0400)]
zink: only update layout when doing mixed zs attachment renderpass check

avoid doing any sort of extra work here and avoid multi-context weirdness

cc: mesa-stable

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

2 years agozink: break out of zs mixed layout update loop when work is done
Mike Blumenkrantz [Tue, 7 Jun 2022 00:54:25 +0000 (20:54 -0400)]
zink: break out of zs mixed layout update loop when work is done

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

2 years agointel: Build mi_builder_test whenever build-tests is set
Jordan Justen [Tue, 7 Jun 2022 06:15:27 +0000 (23:15 -0700)]
intel: Build mi_builder_test whenever build-tests is set

Previously `install-intel-gpu-tests` controlled this, but now
`install-intel-gpu-tests` will only be used to decide if it should be
installed.

Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16902>

2 years agolavapipe: Use vk_image_buffer_copy_layout
Jason Ekstrand [Mon, 6 Jun 2022 13:52:24 +0000 (08:52 -0500)]
lavapipe: Use vk_image_buffer_copy_layout

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

2 years agopanvk: Use vk_image_buffer_copy_layout
Jason Ekstrand [Mon, 6 Jun 2022 13:27:41 +0000 (08:27 -0500)]
panvk: Use vk_image_buffer_copy_layout

Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16873>

2 years agoradv: Use vk_image_buffer_copy_layout
Jason Ekstrand [Mon, 6 Jun 2022 13:22:12 +0000 (08:22 -0500)]
radv: Use vk_image_buffer_copy_layout

Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16873>

2 years agovulkan,radv: Steal some image offset/extent helpers from radv
Jason Ekstrand [Sun, 5 Jun 2022 04:30:21 +0000 (23:30 -0500)]
vulkan,radv: Steal some image offset/extent helpers from radv

Reviewed-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16873>

2 years agoanv: Use the common image<->buffer copy helper
Jason Ekstrand [Sun, 5 Jun 2022 04:07:51 +0000 (23:07 -0500)]
anv: Use the common image<->buffer copy helper

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

2 years agovulkan: Add a helper for image<->buffer copies
Jason Ekstrand [Sun, 5 Jun 2022 04:00:51 +0000 (23:00 -0500)]
vulkan: Add a helper for image<->buffer copies

Reviewed-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16873>

2 years agovulkan/format: Add a vk_format_get_aspect_format helper
Jason Ekstrand [Mon, 6 Jun 2022 16:32:43 +0000 (11:32 -0500)]
vulkan/format: Add a vk_format_get_aspect_format helper

Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16873>

2 years agovulkan,radv: Move vk_format_get_plane_format to common code
Jason Ekstrand [Mon, 6 Jun 2022 16:25:45 +0000 (11:25 -0500)]
vulkan,radv: Move vk_format_get_plane_format to common code

Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16873>

2 years agoradv: Use the common image offset/extent sanitize helpers
Jason Ekstrand [Sun, 5 Jun 2022 03:33:37 +0000 (22:33 -0500)]
radv: Use the common image offset/extent sanitize helpers

Reviewed-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16873>

2 years agovulkan,anv: Move the image offset/extent sanitize helpers to common code
Jason Ekstrand [Sun, 5 Jun 2022 03:22:15 +0000 (22:22 -0500)]
vulkan,anv: Move the image offset/extent sanitize helpers to common code

Reviewed-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16873>

2 years agottn: Populate the images/textures/samplers_used fields in shader_info
Jason Ekstrand [Tue, 7 Jun 2022 15:59:23 +0000 (10:59 -0500)]
ttn: Populate the images/textures/samplers_used fields in shader_info

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/6630
Fixes: 625b352f14b7 ("nir: Set image_buffers and msaa_images in lower_samplers_as_deref")
Tested-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16910>

2 years agod3d12: Report PIPE_CAP_ACCELERATED as 0 on WARP
Jesse Natalie [Mon, 6 Jun 2022 16:30:59 +0000 (09:30 -0700)]
d3d12: Report PIPE_CAP_ACCELERATED as 0 on WARP

Acked-by: Qiang Yu <yuq825@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16892>