platform/upstream/mesa.git
3 years agonir: Two shared memory *blocks* may alias each other
Caio Marcelo de Oliveira Filho [Wed, 8 Jul 2020 00:38:03 +0000 (17:38 -0700)]
nir: Two shared memory *blocks* may alias each other

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8699>

3 years agospirv: Update headers and metadata from latest Khronos commit
Caio Marcelo de Oliveira Filho [Fri, 5 Jun 2020 20:35:29 +0000 (13:35 -0700)]
spirv: Update headers and metadata from latest Khronos commit

This corresponds to faa570afbc91ac73d594d787486bcf8f2df1ace0
("Merge pull request #192 from cmarcelo/SPV_KHR_workgroup_memory_explicit_layout") in
https://github.com/KhronosGroup/SPIRV-Headers.

Acked-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8699>

3 years agovulkan: Update XML and headers to 1.2.168
Caio Marcelo de Oliveira Filho [Fri, 5 Jun 2020 17:15:50 +0000 (10:15 -0700)]
vulkan: Update XML and headers to 1.2.168

This brings in the following extensions:

- VK_KHR_workgroup_memory_explicit_layout
- VK_KHR_zero_initialize_workgroup_memory

Acked-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8699>

3 years agoci/freedreno: Ban more flaky clip-enables tests.
Eric Anholt [Wed, 27 Jan 2021 17:51:46 +0000 (09:51 -0800)]
ci/freedreno: Ban more flaky clip-enables tests.

Same cause as vs-clip-vertex-enable, presumably.

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

3 years agoegl: Fix error string returned by eglQueryDeviceAttribEXT
Adam Jackson [Tue, 26 Jan 2021 16:14:18 +0000 (11:14 -0500)]
egl: Fix error string returned by eglQueryDeviceAttribEXT

Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8725>

3 years agolavapipe: add support for external memory/fd/sempahore extensions
Dave Airlie [Tue, 22 Dec 2020 05:07:08 +0000 (15:07 +1000)]
lavapipe: add support for external memory/fd/sempahore extensions

These are just dummy versions of these but enough to pass CTS

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

3 years agost/mesa: don't enable smoothing if multisampling is enabled
Marek Olšák [Tue, 12 Jan 2021 08:23:23 +0000 (03:23 -0500)]
st/mesa: don't enable smoothing if multisampling is enabled

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

3 years agoiris: Move the URB size checks into iris_update_compiled_xs
Kenneth Graunke [Tue, 26 Jan 2021 08:47:08 +0000 (00:47 -0800)]
iris: Move the URB size checks into iris_update_compiled_xs

Instead of looping over all stages and re-accessing prog_data at the
end, we can just move the URB size check into iris_update_compiled_xs,
in the new != old block, where we know the shader changed - plus where
we're disabling tessellation.  We already have the prog_data handy in
these cases, with a bit less pointer chasing.

Improves performance in Piglit's drawoverhead microbenchmark
(#63: DrawArrays, no state change) by 4.07856% +/- 0.540517% (n=850).

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

3 years agoiris: Reconfigure the URB only if it's necessary or possibly useful
Kenneth Graunke [Tue, 26 Jan 2021 06:25:51 +0000 (22:25 -0800)]
iris: Reconfigure the URB only if it's necessary or possibly useful

Reconfiguring the URB partitioning is likely to cause shader stalls,
as the dividing line between each stage's section of memory is moving.
(Technically, 3DSTATE_URB_* are pipelined commands, but that mostly
means that the command streamer doesn't need to stall.)  So it should
be beneficial to update the URB configuration less often.

If the previous URB configuration already has enough space for our
current shader's needs, we can just continue using it, assuming we
are able to allocate the maximum number of URB entries per stage.
However, if we ran out of URB space and had to limit the number of
URB entrties for a stage, and the per-entry size is larger than we
need, we should reconfigure it to try and improve concurrency.

So, we begin tracking the last URB configuration in the context,
and compare against that when updating shader variants.

Cuts 36% of the URB reconfigurations (excluding BLORP) from a
Shadow of Mordor trace, and 46% from a GFXBench Manhattan 3.0 trace.

One nice thing is that this removes the need to look at the old
prog_data when updating shaders, which should make it possible to
unbind shader variants without causing spurious URB updates.

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

3 years agointel: Produce a "constrained" output from gen_get_urb_config()
Kenneth Graunke [Tue, 26 Jan 2021 05:41:48 +0000 (21:41 -0800)]
intel: Produce a "constrained" output from gen_get_urb_config()

When calculating a URB configuration, we start with a notion of how
much space each stage /wants/ (to achieve the maximum amount of
concurrency), but sometimes fall back to giving it less than that,
because we don't have enough space.  (Typically, this happens when
the per-stage size is large, or there are many stages, or both.)

We now output a "constrained" boolean which is true if we weren't
able to satisfy all the "wants" due to a lack of space.

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

3 years agozink: don't export PIPE_CAP_MAX_COMBINED_SHADER_BUFFERS value
Mike Blumenkrantz [Wed, 27 Jan 2021 14:58:13 +0000 (09:58 -0500)]
zink: don't export PIPE_CAP_MAX_COMBINED_SHADER_BUFFERS value

gallium automatically sums up the per-stage buffers if this isn't set,
and some drivers (e.g., amdvlk) export UINT_MAX here which breaks the universe

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

3 years agoaco: implement non-uniform get_ssbo_size
Rhys Perry [Mon, 7 Dec 2020 15:05:40 +0000 (15:05 +0000)]
aco: implement non-uniform get_ssbo_size

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3711
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7969>

3 years agoradv,ac/nir: implement non-uniform get_ssbo_size
Rhys Perry [Mon, 12 Oct 2020 14:07:39 +0000 (15:07 +0100)]
radv,ac/nir: implement non-uniform get_ssbo_size

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Gitlab: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3711
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7969>

3 years agonir,spirv: allow non-uniform OpArrayLength
Rhys Perry [Mon, 12 Oct 2020 14:03:28 +0000 (15:03 +0100)]
nir,spirv: allow non-uniform OpArrayLength

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

3 years agopanfrost: advertise images for midgard
Italo Nicola [Thu, 21 Jan 2021 23:25:05 +0000 (23:25 +0000)]
panfrost: advertise images for midgard

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

3 years agopan/mdg: implement nir_intrinsic_image_size
Italo Nicola [Wed, 16 Dec 2020 03:52:15 +0000 (03:52 +0000)]
pan/mdg: implement nir_intrinsic_image_size

To implement it in midgard, we just need to read the image_size sysval.

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

3 years agopan/mdg: implement shader image instructions
Italo Nicola [Fri, 11 Dec 2020 23:35:21 +0000 (23:35 +0000)]
pan/mdg: implement shader image instructions

Implements load store opreations as midgard_op_ld_image_* and
midgard_op_st_image_*.

Implements midgard_op_lea_tex, which takes an image coordinate and
returns it's memory address.

Image atomics are implemented as a combination of midgard_op_lea_tex and
the usual midgard atomic opcodes.

Currently we don't support multisampled shader images.

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

3 years agopan/mdg: rename st_image opcodes and add float16 versions
Italo Nicola [Fri, 25 Sep 2020 21:35:38 +0000 (21:35 +0000)]
pan/mdg: rename st_image opcodes and add float16 versions

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

3 years agopan/mdg: add ld_image opcodes
Italo Nicola [Fri, 25 Sep 2020 21:10:54 +0000 (21:10 +0000)]
pan/mdg: add ld_image opcodes

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

3 years agopan/mdg: enable image bitsize lowering pass
Italo Nicola [Fri, 11 Dec 2020 23:36:45 +0000 (23:36 +0000)]
pan/mdg: enable image bitsize lowering pass

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

3 years agopan/mdg: create nir pass to lower image coord bitsize
Italo Nicola [Fri, 11 Dec 2020 07:35:10 +0000 (07:35 +0000)]
pan/mdg: create nir pass to lower image coord bitsize

Image coordinates are 16-bit long in midgard, so we must lower them
before emitting image opcodes.

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

3 years agopanfrost: implement image_size sysval
Italo Nicola [Wed, 16 Dec 2020 20:13:36 +0000 (20:13 +0000)]
panfrost: implement image_size sysval

Since there's no hardware support for it, we use a sysval to implement
nir_intrinsic_image_size.

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

3 years agopanfrost: emit shader image attribute descriptors
Italo Nicola [Fri, 11 Dec 2020 20:55:14 +0000 (20:55 +0000)]
panfrost: emit shader image attribute descriptors

Each shader image attribute buffer descriptor needs a continuation,
meaning that each image attribute buffer is double the size of a common
attribute buffer.

For compute and fragment shaders, we allocate a single buffer with
enough space for all the attribute descriptors and attribute buffer
descriptors.

For vertex shaders, we do it separately to acomodate for the way
descriptors are currently allocated there.

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

3 years agopanfrost: implement gallium->set_shader_images
Italo Nicola [Fri, 11 Dec 2020 16:47:35 +0000 (16:47 +0000)]
panfrost: implement gallium->set_shader_images

Implements gallium images endpoint.
If an AFBC resource is bound to an image, we convert it to tiled, since
images need pixel-level granularity and AFBC doesn't allow for that.

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

3 years agopanfrost: add resource modifier conversion
Italo Nicola [Wed, 16 Dec 2020 14:15:28 +0000 (14:15 +0000)]
panfrost: add resource modifier conversion

Adds a helper function to convert a resource to a chosen modifier.

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

3 years agopanfrost: decode 3d attribute continuation
Italo Nicola [Fri, 11 Dec 2020 07:58:41 +0000 (07:58 +0000)]
panfrost: decode 3d attribute continuation

Adds 3D attribute buffer continuations to pandecode and a message to
keep track of which buffer continuations we aren't decoding yet.

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

3 years agopanfrost: add 3d attribute buffer continuation to XML
Italo Nicola [Thu, 22 Oct 2020 16:59:50 +0000 (16:59 +0000)]
panfrost: add 3d attribute buffer continuation to XML

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

3 years agopanfrost: fix attribute continuation decoding
Italo Nicola [Fri, 11 Dec 2020 07:57:23 +0000 (07:57 +0000)]
panfrost: fix attribute continuation decoding

Because attribute continuations aren't considered whole attributes, we
need to increase the total number of attributes for each continuation
when decoding, otherwise we will end up missing a buffer for every
continuation we have.

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

3 years agointel/perf: export information about units of performance counters
Marcin Ślusarz [Tue, 19 Jan 2021 19:04:13 +0000 (20:04 +0100)]
intel/perf: export information about units of performance counters

Signed-off-by: Marcin Ślusarz <marcin.slusarz@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8580>

3 years agoaco/ra: Remove preprocessor guards for print_regs
Tony Wasserka [Tue, 26 Jan 2021 15:05:32 +0000 (16:05 +0100)]
aco/ra: Remove preprocessor guards for print_regs

This debug helper isn't used anywhere by default, but compiling it anyway
ensures future refactors don't break it.

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

3 years agoaco/ra: Fix build with print_regs enabled
Tony Wasserka [Tue, 26 Jan 2021 15:05:01 +0000 (16:05 +0100)]
aco/ra: Fix build with print_regs enabled

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

3 years agoaco/ra: Fix print_regs using the wrong constant to check for blocked slots
Tony Wasserka [Tue, 26 Jan 2021 14:55:18 +0000 (15:55 +0100)]
aco/ra: Fix print_regs using the wrong constant to check for blocked slots

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

3 years agointel: change urb max shader geometry for KBL GT1
Abhishek Kumar [Tue, 26 Jan 2021 18:20:13 +0000 (23:50 +0530)]
intel: change urb max shader geometry for KBL GT1

Below Deqp CTS failure is seen on KBL GT1(tested on 0x5906) only ,
GT2 all test passes, changing the max shader geometry to 256
(previous 640) fixes all failure tests.Similar issues on
CML GT1 (Gen9) is fixed
https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8550

dEQP-GLES31.functional.geometry_shading.layered.
 render_with_default_layer_cubemap
 render_with_default_layer_3d
 render_with_default_layer_2d_array

Signed-off-by: Abhishek Kumar <abhishek4.kumar@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8731>

3 years agoradv: enable TC-compat HTILE for mipmaps on GFX10+
Samuel Pitoiset [Wed, 16 Dec 2020 08:58:52 +0000 (09:58 +0100)]
radv: enable TC-compat HTILE for mipmaps on GFX10+

Mipmaps+layers should be investigated and mipmaps support added
for previous gens (GFX8-9).

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8124>

3 years agoradv: teach radv_htile_enabled() about the number of HTILE levels
Samuel Pitoiset [Wed, 16 Dec 2020 08:48:11 +0000 (09:48 +0100)]
radv: teach radv_htile_enabled() about the number of HTILE levels

This is the main function that enables/disables HTILE for mipmaps.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8124>

3 years agoradv: add support for fast clearing levels of the HTILE buffer
Samuel Pitoiset [Wed, 16 Dec 2020 08:33:28 +0000 (09:33 +0100)]
radv: add support for fast clearing levels of the HTILE buffer

This can probably be optimized further by checking if the levels
are contiguous in memory.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8124>

3 years agoradv: remove mipmaps related assertions when initializing HTILE
Samuel Pitoiset [Wed, 16 Dec 2020 07:57:20 +0000 (08:57 +0100)]
radv: remove mipmaps related assertions when initializing HTILE

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8124>

3 years agoradv: do not decompress/resummarize levels without HTILE
Samuel Pitoiset [Tue, 15 Dec 2020 16:09:01 +0000 (17:09 +0100)]
radv: do not decompress/resummarize levels without HTILE

It's completely useless to decompress or resummarize levels that
are not compressed using HTILE.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8124>

3 years agoradv: check if HTILE is enabled per-level instead of the entire image
Samuel Pitoiset [Tue, 15 Dec 2020 17:37:48 +0000 (18:37 +0100)]
radv: check if HTILE is enabled per-level instead of the entire image

With HTILE mipmaps support, we should check if the base level
currently in use supports compression.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8124>

3 years agoradv: use the image view range when fast clearing depth
Samuel Pitoiset [Wed, 16 Dec 2020 07:36:24 +0000 (08:36 +0100)]
radv: use the image view range when fast clearing depth

This doesn't change behevior since the driver currently doesn't
support HTILE for mipmaps and also because we can only clear the
whole array layers at once. This improves consistency regarding
the fast clear color path.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8124>

3 years agoac/surface: store HTILE mip info into the surface
Samuel Pitoiset [Tue, 15 Dec 2020 17:59:18 +0000 (18:59 +0100)]
ac/surface: store HTILE mip info into the surface

GFX10 can only compress the first level in the mip tail.
GFX9+ is not yet supported because mips are interleaved.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8124>

3 years agoCI: add lavapipe to llvmpipe rules.
Dave Airlie [Wed, 27 Jan 2021 02:08:19 +0000 (12:08 +1000)]
CI: add lavapipe to llvmpipe rules.

I've noticed that that llvmpipe tests don't all get run,
it's probably good enough to just run them on lavapipe
changes as well

Reviewed-by: Eric Anholt <eric@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8732>

3 years agolavapipe: add VK_EXT_conditional_rendering support.
Dave Airlie [Fri, 4 Dec 2020 06:41:17 +0000 (16:41 +1000)]
lavapipe: add VK_EXT_conditional_rendering support.

This passes all the CTS tests.

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

3 years agollvmpipe: handle vulkan conditional rendering
Dave Airlie [Fri, 4 Dec 2020 07:03:11 +0000 (17:03 +1000)]
llvmpipe: handle vulkan conditional rendering

This implements the new hook to conditionialise rendering
on memory contents

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

3 years agogallium: add a cond rendering hook for vulkan.
Dave Airlie [Fri, 4 Dec 2020 07:27:16 +0000 (17:27 +1000)]
gallium: add a cond rendering hook for vulkan.

The vulkan cond rendering hook is quite different than the
traditional gallium one so add a new interface for it.

This just conditionalises rendering on the memory location.

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

3 years agolavapipe: rewrite attachment clearing for conditional rendering.
Dave Airlie [Mon, 21 Dec 2020 04:54:58 +0000 (14:54 +1000)]
lavapipe: rewrite attachment clearing for conditional rendering.

Attachment clears have to respect cond rendering, so they can't
call clear texture directly, they have to create temporary
surfaces and clear via those.

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

3 years agolavapipe: refactor image surface creation
Dave Airlie [Mon, 21 Dec 2020 04:49:50 +0000 (14:49 +1000)]
lavapipe: refactor image surface creation

There is a need to create arbitrary surfaces for clearing,
so split out the templating from the storing to img->vk_surface
so temporary surfaces can be created for clearing.

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

3 years agoaco: don't affect isPrecise() after applying output modifiers
Rhys Perry [Tue, 26 Jan 2021 14:24:48 +0000 (14:24 +0000)]
aco: don't affect isPrecise() after applying output modifiers

fossil-db (GFX10.3):
Totals from 26679 (19.14% of 139391) affected shaders:
SGPRs: 1757155 -> 1757059 (-0.01%); split: -0.05%, +0.04%
VGPRs: 1175932 -> 1173556 (-0.20%); split: -0.21%, +0.01%
CodeSize: 86203592 -> 85572480 (-0.73%); split: -0.73%, +0.00%
MaxWaves: 315513 -> 315805 (+0.09%); split: +0.10%, -0.00%
Instrs: 16297785 -> 16143745 (-0.95%); split: -0.95%, +0.00%

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

3 years agoiris: Disable aux as needed in iris_flush_resource
Nanley Chery [Wed, 13 Jan 2021 22:34:13 +0000 (14:34 -0800)]
iris: Disable aux as needed in iris_flush_resource

Disable compression in iris_flush_resource if the resource lacks a
modifier. When a caller wants to prepare such a resource for sharing
(via eglCreateImage for example), this change enables all reference
holders to access the resource in a common manner - without compression.

This fixes misrendering with 3D-accelerated qemu. A piglit test which
reproduces qemu's behavior, ext_image_dma_buf_import-export-tex, is also
enabled to pass.

Cc: mesa-stable
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/2678
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8663>

3 years agogallium: Flush GL API resources in eglCreateImage
Nanley Chery [Wed, 13 Jan 2021 22:31:05 +0000 (14:31 -0800)]
gallium: Flush GL API resources in eglCreateImage

Some drivers need to be able to remove compression from resources before
they are handed to consumers that wouldn't understand or expect it.

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

3 years agogallium: Map _DRI_IMAGE_FORMAT_NONE to NULL
Nanley Chery [Thu, 21 Jan 2021 20:21:16 +0000 (12:21 -0800)]
gallium: Map _DRI_IMAGE_FORMAT_NONE to NULL

Many entries in the dri2_format_table have _DRI_IMAGE_FORMAT_NONE as the
dri_format. Make the result of dri2_get_mapping_by_format a tad more
well-defined by returning NULL when this format is passed into it.

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

3 years agost/drawpixels: use GL_CLAMP_TO_EDGE instead of GL_CLAMP for samplers
Mike Blumenkrantz [Tue, 26 Jan 2021 12:42:59 +0000 (07:42 -0500)]
st/drawpixels: use GL_CLAMP_TO_EDGE instead of GL_CLAMP for samplers

no border colors here either

Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Drive-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8714>

3 years agost/bitmap: use GL_CLAMP_TO_EDGE for bitmap samplers
Mike Blumenkrantz [Tue, 26 Jan 2021 12:39:10 +0000 (07:39 -0500)]
st/bitmap: use GL_CLAMP_TO_EDGE for bitmap samplers

we aren't using border colors here, so this should be fine (and more compatible)

Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Drive-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8714>

3 years agoaco: fix nir_intrinsic_ballot with wave32
Daniel Schürmann [Mon, 25 Jan 2021 17:37:29 +0000 (18:37 +0100)]
aco: fix nir_intrinsic_ballot with wave32

Found by inspection.

Fixes: 21db083504fde3100f0b528f683a087357f5aaff ('aco/wave32: Allow setting the subgroup ballot size to 64-bit.')

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

3 years agoci: Add nouveau chipset 162 to shader-db runs
Caio Marcelo de Oliveira Filho [Wed, 20 Jan 2021 17:24:45 +0000 (09:24 -0800)]
ci: Add nouveau chipset 162 to shader-db runs

Suggested-by: Karol Herbst <kherbst@redhat.com>
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8585>

3 years agocompiler: Use util/bitset.h for system_values_read
Caio Marcelo de Oliveira Filho [Wed, 20 Jan 2021 01:14:28 +0000 (17:14 -0800)]
compiler: Use util/bitset.h for system_values_read

It is currently a bitset on top of a uint64_t but there are already
more than 64 values.  Change to use BITSET to cover all the
SYSTEM_VALUE_MAX bits.

Cc: mesa-stable
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Acked-by: Jesse Natalie <jenatali@microsoft.com>
Acked-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Acked-by: Alejandro Piñeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8585>

3 years agonir/linking: Remove system_value handling from helper
Caio Marcelo de Oliveira Filho [Wed, 20 Jan 2021 01:10:11 +0000 (17:10 -0800)]
nir/linking: Remove system_value handling from helper

All uses are passing variables of either nir_var_shader_in or
nir_var_shader_out modes.  Note that currently there are more than 64
system values, so the uint64_t wouldn't be enough anyway.

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8585>

3 years agoci/freedreno: Ban vs-clip-vertex-enables which flakes in CI.
Eric Anholt [Tue, 26 Jan 2021 17:10:32 +0000 (09:10 -0800)]
ci/freedreno: Ban vs-clip-vertex-enables which flakes in CI.

It's reliably failing on its own, but has shown up as the top flake in CI.

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

3 years agoci/freedreno: Detect cheza HFI errors and restart the run.
Eric Anholt [Tue, 26 Jan 2021 16:47:50 +0000 (08:47 -0800)]
ci/freedreno: Detect cheza HFI errors and restart the run.

These are intermittent (~1/day), seem to be around GPU faults (so
hopefully will go away once we clean up piglit's fault errors), and are
probably also related to our vintage firmware.  Until we can get new
hardware in the farm, just restart the flaked job.

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

3 years agonir/algebraic: mark more optimization with fsat(NaN) as inexact
Samuel Pitoiset [Tue, 26 Jan 2021 13:25:32 +0000 (14:25 +0100)]
nir/algebraic: mark more optimization with fsat(NaN) as inexact

These optimizations are duplicated from the main optimization table
to the late one... And I missed some in the original fix.

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3368
Fixes: bc123c396a9 ("nir/algebraic: mark some optimizations with fsat(NaN) as inexact")
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8716>

3 years agoradv: Only enable sparse features on Polaris and newer.
Timur Kristóf [Thu, 21 Jan 2021 07:46:17 +0000 (08:46 +0100)]
radv: Only enable sparse features on Polaris and newer.

On Fiji, the CTS image can cause a hang when these are enabled.
Let's enable them for Polaris and newer only, for now.

Gitlab: #4136
Fixes: 9f43b44bf06c61735dbab7e8e508642315bd93d1
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/8646>

3 years agoradv: remove unused EMPTY constant in radv_descript_set.c
Samuel Pitoiset [Tue, 19 Jan 2021 17:34:12 +0000 (18:34 +0100)]
radv: remove unused EMPTY constant in radv_descript_set.c

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8711>

3 years agoradv: remove stub() macros
Samuel Pitoiset [Tue, 19 Jan 2021 17:32:47 +0000 (18:32 +0100)]
radv: remove stub() macros

They are unused since sparse texture is implemented.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8711>

3 years agoradv: remove radv_util.h
Samuel Pitoiset [Tue, 19 Jan 2021 17:32:00 +0000 (18:32 +0100)]
radv: remove radv_util.h

util_bitcount() is already defined in src/util/bitscan.h.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8711>

3 years agocompiler/nir: Add support for lowering stores with nir_lower_instruction
Gert Wollny [Wed, 9 Dec 2020 08:50:11 +0000 (09:50 +0100)]
compiler/nir: Add support for lowering stores with nir_lower_instruction

The function is very convenient for lowering any type of instruction
that can be easily filtered, but so far instructions that didn't return
a value were siletly ignored.

Fix this by
  - not requiring a return value in the instruction
  - add a new special return value from the lowering implementation
    function to indicated that an instruction that doesn't have a
    return value must be removed, and
  - don't try to collect and replace uses in this case.

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8177>

3 years agoradv: fix divide by zero with no tesselation params
David McFarland [Tue, 1 Dec 2020 00:48:50 +0000 (20:48 -0400)]
radv: fix divide by zero with no tesselation params

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

3 years agoaco: fix VCC hint on boolean subgroup operations
Daniel Schürmann [Tue, 26 Jan 2021 10:39:21 +0000 (11:39 +0100)]
aco: fix VCC hint on boolean subgroup operations

Found by inspection.

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

3 years agonir/algebraic: eliminate exact a*0.0 if float execution mode allow it
Rhys Perry [Wed, 15 Jul 2020 10:19:56 +0000 (11:19 +0100)]
nir/algebraic: eliminate exact a*0.0 if float execution mode allow it

fossil-db (GFX10):
Totals from 611 (0.44% of 139391) affected shaders:
SGPRs: 40528 -> 40288 (-0.59%)
VGPRs: 16136 -> 16152 (+0.10%); split: -0.15%, +0.25%
CodeSize: 970192 -> 951036 (-1.97%)
MaxWaves: 10561 -> 10557 (-0.04%); split: +0.08%, -0.11%
Instrs: 174874 -> 172879 (-1.14%); split: -1.18%, +0.04%

fossil-db (GFX10.3):
Totals from 611 (0.44% of 139391) affected shaders:
SGPRs: 40680 -> 40488 (-0.47%)
VGPRs: 18368 -> 18276 (-0.50%); split: -0.57%, +0.07%
CodeSize: 1050712 -> 1033624 (-1.63%); split: -1.64%, +0.02%
MaxWaves: 8658 -> 8674 (+0.18%)
Instrs: 205364 -> 201220 (-2.02%)

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

3 years agonir/algebraic: optimize out exact a+0.0 if it's used only as a float
Rhys Perry [Wed, 15 Jul 2020 10:16:33 +0000 (11:16 +0100)]
nir/algebraic: optimize out exact a+0.0 if it's used only as a float

fossil-db (GFX10):
Totals from 133 (0.10% of 139391) affected shaders:
SGPRs: 7864 -> 7856 (-0.10%); split: -0.20%, +0.10%
VGPRs: 4884 -> 4836 (-0.98%)
CodeSize: 288932 -> 287084 (-0.64%)
MaxWaves: 1973 -> 1979 (+0.30%)
Instrs: 53899 -> 53550 (-0.65%)

fossil-db (GFX10.3):
Totals from 133 (0.10% of 139391) affected shaders:
SGPRs: 7832 -> 7835 (+0.04%); split: -0.06%, +0.10%
VGPRs: 5144 -> 5088 (-1.09%)
CodeSize: 318912 -> 316696 (-0.69%)
MaxWaves: 1735 -> 1746 (+0.63%)
Instrs: 65367 -> 64853 (-0.79%)

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

3 years agoaco: optimize out a*1.0 if it's used as a float
Rhys Perry [Wed, 17 Jun 2020 14:02:30 +0000 (15:02 +0100)]
aco: optimize out a*1.0 if it's used as a float

fossil-db (GFX10):
Totals from 370 (0.27% of 139391) affected shaders:
CodeSize: 641436 -> 634156 (-1.13%); split: -1.14%, +0.00%
Instrs: 117668 -> 115739 (-1.64%); split: -1.64%, +0.00%

fossil-db (GFX10.3):
Totals from 370 (0.27% of 139391) affected shaders:
SGPRs: 26888 -> 26912 (+0.09%)
VGPRs: 13964 -> 13916 (-0.34%)
CodeSize: 692008 -> 679008 (-1.88%)
MaxWaves: 4779 -> 4783 (+0.08%)
Instrs: 134265 -> 132026 (-1.67%); split: -1.67%, +0.00%

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

3 years agoaco: optimize a*0.0
Rhys Perry [Wed, 17 Jun 2020 13:57:57 +0000 (14:57 +0100)]
aco: optimize a*0.0

fossil-db (GFX10):
Totals from 1943 (1.39% of 139391) affected shaders:
SGPRs: 99952 -> 99544 (-0.41%); split: -0.44%, +0.03%
VGPRs: 60880 -> 60272 (-1.00%); split: -1.02%, +0.02%
CodeSize: 5138488 -> 5107500 (-0.60%); split: -0.61%, +0.01%
MaxWaves: 32193 -> 32380 (+0.58%)
Instrs: 983178 -> 975684 (-0.76%); split: -0.77%, +0.01%

fossil-db (GFX10.3):
Totals from 1943 (1.39% of 139391) affected shaders:
SGPRs: 99832 -> 99648 (-0.18%); split: -0.25%, +0.06%
VGPRs: 64708 -> 63944 (-1.18%); split: -1.27%, +0.09%
CodeSize: 5196732 -> 5157632 (-0.75%); split: -0.76%, +0.00%
MaxWaves: 27478 -> 27486 (+0.03%); split: +0.06%, -0.03%
Instrs: 1007222 -> 998737 (-0.84%); split: -0.84%, +0.00%

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

3 years agonir/algebraic: optimize out exact a*1.0 if it's used only as a float
Rhys Perry [Wed, 17 Jun 2020 13:46:55 +0000 (14:46 +0100)]
nir/algebraic: optimize out exact a*1.0 if it's used only as a float

fossil-db (GFX10):
Totals from 10180 (7.30% of 139391) affected shaders:
SGPRs: 549392 -> 549448 (+0.01%); split: -0.00%, +0.01%
VGPRs: 243228 -> 243008 (-0.09%); split: -0.11%, +0.02%
CodeSize: 12939080 -> 12603996 (-2.59%); split: -2.59%, +0.00%
MaxWaves: 186948 -> 186976 (+0.01%)
Instrs: 2497266 -> 2414648 (-3.31%)

fossil-db (GFX10.3):
Totals from 10180 (7.30% of 139391) affected shaders:
SGPRs: 549672 -> 549280 (-0.07%); split: -0.23%, +0.16%
VGPRs: 289296 -> 283672 (-1.94%); split: -2.83%, +0.88%
CodeSize: 13920180 -> 13255560 (-4.77%); split: -4.77%, +0.00%
MaxWaves: 151789 -> 153165 (+0.91%)
Instrs: 2756978 -> 2671517 (-3.10%); split: -3.10%, +0.00%

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

3 years agoaco: disable a*1.0 optimization if the instruction is precise
Rhys Perry [Wed, 17 Jun 2020 13:56:55 +0000 (14:56 +0100)]
aco: disable a*1.0 optimization if the instruction is precise

fossil-db (GFX10):
Totals from 10370 (7.44% of 139391) affected shaders:
SGPRs: 564072 -> 564016 (-0.01%); split: -0.01%, +0.00%
VGPRs: 248312 -> 248532 (+0.09%); split: -0.02%, +0.11%
CodeSize: 12866732 -> 13208904 (+2.66%); split: -0.00%, +2.66%
MaxWaves: 190198 -> 190170 (-0.01%)
Instrs: 2460818 -> 2545351 (+3.44%)

fossil-db (GFX10.3):
Totals from 10370 (7.44% of 139391) affected shaders:
SGPRs: 563904 -> 564272 (+0.07%); split: -0.16%, +0.22%
VGPRs: 289344 -> 295016 (+1.96%); split: -0.88%, +2.84%
CodeSize: 13519204 -> 14197020 (+5.01%); split: -0.00%, +5.01%
MaxWaves: 155946 -> 154566 (-0.88%)
Instrs: 2719177 -> 2806919 (+3.23%); split: -0.00%, +3.23%

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

3 years agoci: make piglit runner less noisy and show a better failure message
Andres Gomez [Thu, 21 Jan 2021 20:24:51 +0000 (22:24 +0200)]
ci: make piglit runner less noisy and show a better failure message

v2:
  - Do not silence piglit run (Michel).

Signed-off-by: Andres Gomez <agomez@igalia.com>
Reviewed-by: Eric Anholt <eric@anholt.net> [v1]
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8632>

3 years agoci/vc4: Add piglit job
Juan A. Suarez Romero [Mon, 25 Jan 2021 11:34:35 +0000 (12:34 +0100)]
ci/vc4: Add piglit job

This adds a couple of jobs to execute piglit testsuite in VC4
(quick_shader and quick_gl profiles).

It is defined as a manual test as it takes time to execute them.

v2:
 - Add more excluded tests (Eric)

Signed-off-by: Juan A. Suarez Romero <jasuarez@igalia.com>
Acked-by: Andres Gomez <agomez@igalia.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8702>

3 years agoci/vc4: rename stage to Broadcom
Juan A. Suarez Romero [Mon, 25 Jan 2021 11:33:52 +0000 (12:33 +0100)]
ci/vc4: rename stage to Broadcom

It fits better with what other drivers has done.

Signed-off-by: Juan A. Suarez Romero <jasuarez@igalia.com>
Acked-by: Andres Gomez <agomez@igalia.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8702>

3 years agoci/vc4: allow custom timeout values for activity
Juan A. Suarez Romero [Mon, 25 Jan 2021 11:28:05 +0000 (12:28 +0100)]
ci/vc4: allow custom timeout values for activity

The script that monitors activity in the serial assumes that something
was wrong if it does not detect activity in 60 seconds, rebooting the
device and re-trying the test again.

While this timeout is enough for most cases, in some cases it is not
enough. For instance, when executing piglit testsuite it takes quite a
few time to generate the results after the test is done.

This allow to setup a custom timeout (`BM_POE_TIMEOUT`) in the proper
jobs.

Signed-off-by: Juan A. Suarez Romero <jasuarez@igalia.com>
Acked-by: Andres Gomez <agomez@igalia.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8702>

3 years agoradv: add support for emitting PS_DONE/CS_DONE on GFX6-8
Samuel Pitoiset [Fri, 22 Jan 2021 15:41:39 +0000 (16:41 +0100)]
radv: add support for emitting PS_DONE/CS_DONE on GFX6-8

On GFX6, EOS events are always emitted with EVENT_WRITE_EOS.
On GFX7+, EOS events are emitted with EVENT_WRITE_EOS on the
graphics queue, and with RELEASE_MEM on the compute queue.

Fixes: 9c65f1f1111 ("radv: synchronize Cmd{Set,Write}Event() using PS_DONE/CS_DONE events")
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8710>

3 years agoradv: Fix struct initialization for MSVC
James Park [Mon, 14 Dec 2020 18:33:22 +0000 (10:33 -0800)]
radv: Fix struct initialization for MSVC

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

3 years agoradv: Use typed outarray API
James Park [Mon, 14 Dec 2020 18:33:03 +0000 (10:33 -0800)]
radv: Use typed outarray API

MSVC cannot perform GCC __typeof__ for C code. (C++ has decltype.)

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

3 years agoradv: Disable calibrated timestamps on Windows
James Park [Fri, 4 Dec 2020 05:27:42 +0000 (21:27 -0800)]
radv: Disable calibrated timestamps on Windows

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

3 years agoradv: Pointer arithmetic on char/uint8_t, not void
James Park [Fri, 27 Nov 2020 03:32:48 +0000 (19:32 -0800)]
radv: Pointer arithmetic on char/uint8_t, not void

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

3 years agoradv: Modify radv_descriptor_set for MSVC legality
James Park [Fri, 27 Nov 2020 03:26:56 +0000 (19:26 -0800)]
radv: Modify radv_descriptor_set for MSVC legality

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

3 years agoradv: Stub sections that don't have _WIN32 support
James Park [Thu, 3 Dec 2020 10:15:50 +0000 (02:15 -0800)]
radv: Stub sections that don't have _WIN32 support

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

3 years agoradv: Remove unnecessary headers
James Park [Thu, 3 Dec 2020 10:15:25 +0000 (02:15 -0800)]
radv: Remove unnecessary headers

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

3 years agoradv: Use linker pragma to simulate weak functions
James Park [Fri, 27 Nov 2020 03:18:35 +0000 (19:18 -0800)]
radv: Use linker pragma to simulate weak functions

MSVC has an undocumented feature that can act as GCC weak functions.

Also fix warnings about returning a value from void functions.

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

3 years agospirv: Don't remove variables used by resource indexing intrinsics
Caio Marcelo de Oliveira Filho [Thu, 21 Jan 2021 18:14:36 +0000 (10:14 -0800)]
spirv: Don't remove variables used by resource indexing intrinsics

In Vulkan, for some variable modes, the generated NIR will have derefs
pointing to resource index intrinsics instead of the variable.  This
was letting nir_remove_dead_variables pass remove those variables,
which would lose information relevant for later passes after
spirv2nir.

Add a set to keep track of such variables and prevent them to be
removed when producing the NIR output.

Issue reported by Rhys.

Fixes: c4c9c780b13 ("spirv: Remove more dead variables")
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8706>

3 years agonir: Add a data pointer to the callback in nir_remove_dead_variables
Caio Marcelo de Oliveira Filho [Thu, 21 Jan 2021 16:41:15 +0000 (08:41 -0800)]
nir: Add a data pointer to the callback in nir_remove_dead_variables

Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8706>

3 years agoclover: Add constructor for global_argument.
Vinson Lee [Thu, 21 Jan 2021 22:00:50 +0000 (14:00 -0800)]
clover: Add constructor for global_argument.

Fix defects reported by Coverity Scan.

member_not_init_in_gen_ctor: The compiler-generated constructor for this class does not initialize buf.
member_not_init_in_gen_ctor: The compiler-generated constructor for this class does not initialize svm.

Signed-off-by: Vinson Lee <vlee@freedesktop.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8623>

3 years agoanv: Skip CCS ambiguate which preceed fast-clears
Sagar Ghuge [Mon, 25 Jan 2021 21:23:32 +0000 (13:23 -0800)]
anv: Skip CCS ambiguate which preceed fast-clears

We can skip CCS ambiguate if followed by a fast clear within render
pass.

v2: (Jason)
- Check array layer as well since we only fast clear first layer and
  first LOD.
- Don't drop fast clear check while doing resolve operation.

Fixes: d5849bc840e "anv: Skip HiZ and CCS ambiguates which preceed fast-clears"
Signed-off-by: Sagar Ghuge <sagar.ghuge@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6988>

3 years agointel/gen12: Fix memory corruption issues in fused Gen12 parts.
Francisco Jerez [Thu, 21 Jan 2021 22:21:50 +0000 (14:21 -0800)]
intel/gen12: Fix memory corruption issues in fused Gen12 parts.

According to the BSpec page for MEDIA_VFE_STATE, on Gen12 platforms
"if a fused configuration has fewer threads than the native POR
configuration, the scratch space allocation is based on the number of
threads in the base native POR configuration".  However we currently
use the subslice count from devinfo->num_subslices[0], which only
includes the subslices currently enabled by the platform fusing.  This
leads to scratch space underallocation and occasional hangs.

The problem is likely to affect most Gen12 GPUs with less than 96 EUs.
GFXBench5 Aztec Ruins is able to reproduce the issue fairly reliably.

Fixes: 9e5ce30da7fa3f1cc3badf "intel: fix the gen 12 compute shader scratch IDs"
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8636>

3 years agopanfrost: Use normal malloc/free instead of ralloc for surfaces
Icecream95 [Sun, 24 Jan 2021 07:53:36 +0000 (20:53 +1300)]
panfrost: Use normal malloc/free instead of ralloc for surfaces

Fixes a double-free in some Qt5 WebEngine apps (e.g. ghostwriter).

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

3 years agofreedreno/a6xx: Fix 3dmark misrendering with unwritten MRTs
Rob Clark [Sun, 24 Jan 2021 20:35:18 +0000 (12:35 -0800)]
freedreno/a6xx: Fix 3dmark misrendering with unwritten MRTs

Fixes an issue with 3dmark caused by a shader that only writes mrt0 in a
renderpass that has two color buffers bound, resulting in mrt1 getting
random/undefined values.

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

3 years agofreedreno: Skip some batch dependency tracking if !ctx->dirty.
Eric Anholt [Wed, 20 Jan 2021 22:20:46 +0000 (14:20 -0800)]
freedreno: Skip some batch dependency tracking if !ctx->dirty.

drawoverhead test 1 perf 4.37618% +/- 0.933261% (n=57)

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

3 years agofreedreno: Move framebuffer state checks under a ctx->dirty flag.
Eric Anholt [Fri, 22 Jan 2021 18:38:09 +0000 (10:38 -0800)]
freedreno: Move framebuffer state checks under a ctx->dirty flag.

Anything changing this should have flagged FD_DIRTY_FRAMEBUFFER.

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

3 years agofreedreno: Move blend gmem checks to a blend dirty state check.
Eric Anholt [Fri, 22 Jan 2021 18:24:40 +0000 (10:24 -0800)]
freedreno: Move blend gmem checks to a blend dirty state check.

We don't need to do this every draw call.  We do now consider the blend
enable field of a non-present color buffer, because it's not worth
filtering that case out.

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

3 years agofreedreno/a6xx: Skip the body of emit_state if we're clean.
Eric Anholt [Wed, 20 Jan 2021 22:08:32 +0000 (14:08 -0800)]
freedreno/a6xx: Skip the body of emit_state if we're clean.

drawoverhead test 1 (no state change) perf +5.43864% +/- 1.28466% (n=10).

Part of #4106.

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

3 years agozink: guarantee surface lifetimes for shader images
Mike Blumenkrantz [Fri, 7 Aug 2020 14:00:13 +0000 (10:00 -0400)]
zink: guarantee surface lifetimes for shader images

these may be unset from the ctx before the draw command has completed,
so we need (more) references to prevent that

Fixes: 3f9a6d333b3 ("zink: export shader image caps using features")

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

3 years agoanv: Invalidate the correct AUX-TT entry
Sagar Ghuge [Sun, 24 Jan 2021 01:21:17 +0000 (17:21 -0800)]
anv: Invalidate the correct AUX-TT entry

While invalidating the AUX-TT entries, we have to consider the surface
offset as well otherwise, we will end up invalidating another surface's
CCS portion.

For eg. when we have HiZ+CCS and STC_CCS enabled, both will use the CCS
portion allocated at the end of BO. While invalidating the CCS portion
of stencil buffer, we will end up invalidating the CCS portion that
belongs to the depth main surface and vice-versa, if the surface offset
is not considered.

Cc: mesa-stable
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/4123
Signed-off-by: Sagar Ghuge <sagar.ghuge@intel.com>
Acked-by: Nanley Chery <nanley.g.chery@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8677>

3 years agoanv: fix invalid programming of BLEND_STATE
Lionel Landwerlin [Mon, 25 Jan 2021 11:23:08 +0000 (13:23 +0200)]
anv: fix invalid programming of BLEND_STATE

We can't enable Logic Op & Color Buffer Blend. The Vulkan spec seems
to say Logic Op discards blending.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Cc: mesa-stable@lists.freedesktop.org
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3767
Reviewed-by: Sagar Ghuge <sagar.ghuge@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8691>