platform/upstream/mesa.git
2 years agoiris: Use the new I915_USERPTR_PROBE API
Kenneth Graunke [Wed, 21 Jul 2021 19:02:54 +0000 (12:02 -0700)]
iris: Use the new I915_USERPTR_PROBE API

We need to raise an error when importing a user pointer as a BO if the
supplied pointer can't actually be used on the GPU.  Previously, we were
(ab)using the SET_DOMAIN ioctl for this, but it's not really intended
for that purpose, and is going away on discrete.

Fortunately, there's a new kernel API for this: the I915_USERPTR_PROBE
flag tries to perform basic sanity checking of the supplied pointer so
that we can at least reject obvious misuse of this API up front.

Use the new API where available.  Fall back to SET_DOMAIN if it isn't.

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12044>

2 years agoanv: Use I915_USERPTR_PROBE when available
Jason Ekstrand [Fri, 23 Jul 2021 17:45:47 +0000 (12:45 -0500)]
anv: Use I915_USERPTR_PROBE when available

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

2 years agoiris: Use I915_MMAP_OFFSET_FIXED for LMEM platforms
Jason Ekstrand [Wed, 14 Jul 2021 18:26:22 +0000 (13:26 -0500)]
iris: Use I915_MMAP_OFFSET_FIXED for LMEM platforms

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

2 years agoiris: Add a new IRIS_MMAP_NONE map type
Jason Ekstrand [Thu, 22 Jul 2021 20:29:16 +0000 (15:29 -0500)]
iris: Add a new IRIS_MMAP_NONE map type

This indicates that the buffer can never be mapped.  We use this
primarily for imported BOs.

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

2 years agoiris: Don't try to CPU read imported clear color BOs
Kenneth Graunke [Mon, 26 Jul 2021 19:59:42 +0000 (12:59 -0700)]
iris: Don't try to CPU read imported clear color BOs

Previously, when importing a resource with modifiers that include
clear color as auxiliary data, we were mapping the clear color BO
on the CPU in order to set res->aux.clear_color to the value stored
there.

We are generally trying to avoid CPU mapping imported buffers, because
in hybrid setups, they could be from a different device, and may not be
mappable.  So we'd like to avoid that here.

This CPU-side knowledge of the clear color is only used in a few cases:

1. Avoiding a resolve due to a partial clear with a changing clear color

2. Avoiding disabling CCS when rendering to a texture view of a resource
   where the only format difference is sRGB vs. linear and the clear
   color is 0/1.

Instead of mapping the clear color BO on the CPU, we instead set a flag
indicating that we don't know the clear color, and reset it to known on
our first clear.

In the first case, the first partial fast clear of a resource would eat
an extra resolve (there is no penalty if we clear the whole resource).

The second case doesn't seem that critical, as it's someone rendering
to an imported BO - when the common case is to texture from it.

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11888>

2 years agoiris: Add an assert to iris_bo_gem_mmap_legacy()
Jason Ekstrand [Fri, 16 Jul 2021 14:39:56 +0000 (09:39 -0500)]
iris: Add an assert to iris_bo_gem_mmap_legacy()

It only supports two caching modes so we should assert that the only
mode we ever see is one of them.

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

2 years agoiris: Use a tiny table to map mmap modes to offsets
Jason Ekstrand [Wed, 14 Jul 2021 18:17:03 +0000 (13:17 -0500)]
iris: Use a tiny table to map mmap modes to offsets

This is a little more obvious than the if-ladder.

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

2 years agoiris: SMEM buffers on discrete platforms are coherent
Jason Ekstrand [Fri, 23 Jul 2021 17:03:32 +0000 (12:03 -0500)]
iris: SMEM buffers on discrete platforms are coherent

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

2 years agoanv: Use I915_MMAP_OFFSET_FIXED for LMEM platforms
Jason Ekstrand [Wed, 14 Jul 2021 18:11:01 +0000 (13:11 -0500)]
anv: Use I915_MMAP_OFFSET_FIXED for LMEM platforms

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

2 years agoinclude/drm-uapi: Bump headers
Jason Ekstrand [Tue, 27 Jul 2021 21:24:08 +0000 (16:24 -0500)]
include/drm-uapi: Bump headers

From drm-next at the following commit:

    commit a22c074fd1dd52a8b41dd6789220409b64093e9c
    Merge: cb22f12f3025 3bfa7d40ce73
    Author: Dave Airlie <airlied@redhat.com>
    Date:   Thu Aug 12 11:20:16 2021 +1000

        Merge tag 'drm-intel-next-2021-08-10-1' of git://anongit.freedesktop.org/drm/drm-intel into drm-next

Acked-by: Kenneth Graunke <kenneth@whitecape.org>
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11888>

2 years agodocs/panfrost: Update llvm option
Alyssa Rosenzweig [Thu, 12 Aug 2021 15:05:26 +0000 (11:05 -0400)]
docs/panfrost: Update llvm option

meson complains that =false is deprecated and that we should use
=disabled instead.

Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Reviewed-by: Dylan Baker <dylan@pnwbakers.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12344>

2 years agoradv: enable DCC with signedness reinterpretation
Rhys Perry [Tue, 2 Mar 2021 16:34:59 +0000 (16:34 +0000)]
radv: enable DCC with signedness reinterpretation

It seems we can enable DCC if the possible formats differ in signedness
and are otherwise compatible. We just need a fast-clear eliminate for
certain clear colors.

Improves Trine 4 performance.

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9387>

2 years agoci: skip minio login if PIGLIT_REPLAY_UPLOAD_TO_MINIO is not set
Italo Nicola [Tue, 10 Aug 2021 15:58:07 +0000 (12:58 -0300)]
ci: skip minio login if PIGLIT_REPLAY_UPLOAD_TO_MINIO is not set

Signed-off-by: Italo Nicola <italonicola@collabora.com>
Reviewed-by: Rohan Garg <rohan.garg@collabora.com>
Reviewed-by: Daniel Stone <daniels@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12309>

2 years agobroadcom/compiler: set current block on incrementing unifa
Juan A. Suarez Romero [Thu, 12 Aug 2021 08:50:09 +0000 (10:50 +0200)]
broadcom/compiler: set current block on incrementing unifa

When incrementing unifa address in DCE optimization, ensure that we
setup correctly the current block, so the ldfunif optimization is also
executed correctly.

This fixes
dEQP-VK.graphicsfuzz.cov-struct-float-array-mix-uniform-vectors
heap-buffer overflow with address sanitizer enabled.

v2 (Iago):
 - Save and restore current block

Signed-off-by: Juan A. Suarez Romero <jasuarez@igalia.com>
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12339>

2 years agov3dv: add API entry points for sampler Ycbcr conversions
Iago Toral Quiroga [Thu, 12 Aug 2021 09:50:12 +0000 (11:50 +0200)]
v3dv: add API entry points for sampler Ycbcr conversions

While this feature is optional in Vulkan 1.1 and we don't currently
expose it, the CTS still requires that the entry points exist.

From the Vulkan 1.1 spec:

   "If the VK_KHR_sampler_ycbcr_conversion extension is not supported,
    support for the samplerYcbcrConversion feature is optional."
   (...)
   "samplerYcbcrConversion specifies whether the implementation supports
    sampler YCBCR conversion. If samplerYcbcrConversion is VK_FALSE,
    sampler YCBCR conversion is not supported, and samplers using sampler
    YCBCR conversion must not be used."

Fixes (with Vulkan 1.1 exposed):
dEQP-VK.api.version_check.entry_points

Reviewed-by: Juan A. Suarez <jasuarez@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12338>

2 years agov3dv: don't try to access pColorBlendState if rasterization is disabled
Iago Toral Quiroga [Thu, 12 Aug 2021 07:26:40 +0000 (09:26 +0200)]
v3dv: don't try to access pColorBlendState if rasterization is disabled

Fixes:
dEQP-VK.api.pipeline.pipeline_invalid_pointers_unused_structs.graphics

Reviewed-by: Juan A. Suarez <jasuarez@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12337>

2 years agoradeonsi/test: add Sienna Cichlid expected results
Pierre-Eric Pelloux-Prayer [Tue, 10 Aug 2021 14:59:32 +0000 (16:59 +0200)]
radeonsi/test: add Sienna Cichlid expected results

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

2 years agoradeonsi/test: prettier output
Pierre-Eric Pelloux-Prayer [Tue, 10 Aug 2021 13:30:40 +0000 (15:30 +0200)]
radeonsi/test: prettier output

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

2 years agoradeonsi/test: allow to pass a filename as a test filter value
Pierre-Eric Pelloux-Prayer [Tue, 10 Aug 2021 13:25:22 +0000 (15:25 +0200)]
radeonsi/test: allow to pass a filename as a test filter value

This allows this pattern:

   $ radeonsi-run-tests.py /tmp/foo
   ... reports that some piglit tests regressed ...
   $ radeonsi-run-tests.py -t /tmp/foo/new_baseline/sienna_cichlid-piglit-quick-fail.csv
   ... this only runs the test that regressed ...

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

2 years agoradeonsi/test: format radeonsi-run-test.py with black
Pierre-Eric Pelloux-Prayer [Tue, 10 Aug 2021 13:15:38 +0000 (15:15 +0200)]
radeonsi/test: format radeonsi-run-test.py with black

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

2 years agoradeonsi/test: fix test script args handling
Pierre-Eric Pelloux-Prayer [Tue, 10 Aug 2021 12:04:02 +0000 (14:04 +0200)]
radeonsi/test: fix test script args handling

Fixes: 20055a307df ("radeonsi: add -t option to the test script")
Acked-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12306>

2 years agotu: enable VK_EXT_extended_dynamic_state2
Danylo Piliaiev [Tue, 10 Aug 2021 03:33:18 +0000 (03:33 +0000)]
tu: enable VK_EXT_extended_dynamic_state2

Signed-off-by: Danylo Piliaiev <dpiliaiev@igalia.com>
Reviewed-by: Hyunjun Ko <zzoon@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10434>

2 years agotu: implement dynamic rasterizer discard enable
Danylo Piliaiev [Tue, 10 Aug 2021 03:32:15 +0000 (03:32 +0000)]
tu: implement dynamic rasterizer discard enable

The state which could be omitted with rasterization discard
enabled - is unconditionally emitted when discard is a dynamic
state. It's not an optimal way, but does not intruduce much complexity.

Signed-off-by: Danylo Piliaiev <dpiliaiev@igalia.com>
Reviewed-by: Hyunjun Ko <zzoon@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10434>

2 years agotu: implement dynamic primitive restart enable
Danylo Piliaiev [Tue, 10 Aug 2021 03:30:07 +0000 (03:30 +0000)]
tu: implement dynamic primitive restart enable

Signed-off-by: Danylo Piliaiev <dpiliaiev@igalia.com>
Reviewed-by: Hyunjun Ko <zzoon@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10434>

2 years agotu: implement dynamic depth bias enable
Danylo Piliaiev [Thu, 22 Apr 2021 16:10:42 +0000 (19:10 +0300)]
tu: implement dynamic depth bias enable

Signed-off-by: Danylo Piliaiev <dpiliaiev@igalia.com>
Reviewed-by: Hyunjun Ko <zzoon@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10434>

2 years agotu: declare VK_EXT_extended_dynamic_state2 but leave it disabled
Danylo Piliaiev [Tue, 10 Aug 2021 03:27:10 +0000 (03:27 +0000)]
tu: declare VK_EXT_extended_dynamic_state2 but leave it disabled

Signed-off-by: Danylo Piliaiev <dpiliaiev@igalia.com>
Reviewed-by: Hyunjun Ko <zzoon@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10434>

2 years agoaux/cso: try harder to keep cso state in sync on cso context unbind
Roland Scheidegger [Fri, 6 Aug 2021 15:23:19 +0000 (17:23 +0200)]
aux/cso: try harder to keep cso state in sync on cso context unbind

Before a73cb106a677, cso contexts were never reused, but now that they
are we need to be extra careful that the state in the cso context and
in the pipe context matches even after an unbind, since when the cso
context is reused the state might otherwise get out of sync (as there is
no concept of "initial state", basically cso always relied on the default
values being the same both in cso and the drivers).
This fixes some errors we've seen internally with lavapipe.

Fixes: a73cb106a677 ("aux/cso: split cso_destroy_context into unbind and a destroy functions")
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12261>

2 years agotu: allow dynamic primitive topology with tessellation
Hyunjun Ko [Tue, 10 Aug 2021 05:06:36 +0000 (05:06 +0000)]
tu: allow dynamic primitive topology with tessellation

This allows to set VK_PRIMITIVE_TOPOLOGY_PATCH_LIST dynamically when
tessellation used.

If other values are set via vkCmdSetPrimitiveTopologyEXT for the case,
the validation layer can detect the issue.

Fixes dEQP-VK.pipeline.extended_dynamic_state.*.topology_patch*

Signed-off-by: Hyunjun Ko <zzoon@igalia.com>
Reviewed-by: Danylo Piliaiev <dpiliaiev@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12299>

2 years agoci: Build ANV on Android
Jason Ekstrand [Tue, 10 Aug 2021 15:51:08 +0000 (10:51 -0500)]
ci: Build ANV on Android

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/5211
Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12308>

2 years agoanv/android: Drop unused device variables
Jason Ekstrand [Wed, 11 Aug 2021 01:46:31 +0000 (20:46 -0500)]
anv/android: Drop unused device variables

Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12308>

2 years agoanv/android: Pass the correct pointer type to vk_errorf
Jason Ekstrand [Tue, 10 Aug 2021 22:48:32 +0000 (17:48 -0500)]
anv/android: Pass the correct pointer type to vk_errorf

Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12308>

2 years agointel/perf: Use a char array for OA perf query data
Jason Ekstrand [Tue, 10 Aug 2021 20:09:51 +0000 (15:09 -0500)]
intel/perf: Use a char array for OA perf query data

drm_i915_query_perf_config::data is an unsized array and declaring a
struct containing an unsized array that isn't at the end is a GNU
extension which trips up Android builds.  Instead, stuff both into a
char array of the appropriate size.  This emulates what you'd normally
do to allocate one of these with malloc only on the stack.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12308>

2 years agointel/vec4: Don't override emit_urb_write_opcode for SNB GS
Jason Ekstrand [Tue, 10 Aug 2021 19:33:08 +0000 (14:33 -0500)]
intel/vec4: Don't override emit_urb_write_opcode for SNB GS

The gfx6_gs_visitor overrides emit_urb_write_opcode but with a different
function signature.  This causes warnings with -Woverloaded-virtual.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12308>

2 years agomeson/glsl: Only run GLSL tests if can_run_host_binaries()
Jason Ekstrand [Wed, 11 Aug 2021 02:05:30 +0000 (21:05 -0500)]
meson/glsl: Only run GLSL tests if can_run_host_binaries()

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12308>

2 years agomeson: Intel drivers don't require expat on Android
Jason Ekstrand [Tue, 10 Aug 2021 17:43:00 +0000 (12:43 -0500)]
meson: Intel drivers don't require expat on Android

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12308>

2 years agomeson/intel: Don't build genxml tests on Android
Jason Ekstrand [Tue, 10 Aug 2021 22:37:31 +0000 (17:37 -0500)]
meson/intel: Don't build genxml tests on Android

They require expat which we don't have on Android.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12308>

2 years agost/mesa: fix pbo download store image type
Ilia Mirkin [Wed, 11 Aug 2021 01:02:43 +0000 (21:02 -0400)]
st/mesa: fix pbo download store image type

There's generally not too big of a difference between 1D (default) and
buffer, but can't hurt to be accurate.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12319>

2 years agoiris: use add_bo_to_batch() when adding batch->bo
Paulo Zanoni [Mon, 2 Aug 2021 20:41:46 +0000 (13:41 -0700)]
iris: use add_bo_to_batch() when adding batch->bo

Again, we don't need all the dependency checking, seqno incrementing
and duplicate tracking for batch->bo. Just use the unchecked version.

This commit is not particularly significant since it really just saves
us a check in the iris_use_pinned_bo() hot path, but since we already
have the helper function, why not?

v2:
 - (turns out the answer to "why not?" is because the patch had a bug)
 - Call ensure_exec_obj_space() since batch batch chaining can happen
   and doesn't guarantee pre-reserved space (Ken).

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12194>

2 years agoiris: add the workaround_bo directly to the batch
Paulo Zanoni [Mon, 2 Aug 2021 20:32:20 +0000 (13:32 -0700)]
iris: add the workaround_bo directly to the batch

Don't use iris_use_pinned_bo(), go directly with add_bo_to_batch(),
skipping every check. This allows us to early return from
iris_use_pinned_bo when the workaround bo is used, saving us the call
to find_validation_entry() which ends up doing nothing except
iterating over every bo in the batch. Also don't bother with
ensure_exec_obj_space() since we just reset the batch and this is the
second BO we're adding to it.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12194>

2 years agoiris: extract the code that adds BOs to the batch lists
Paulo Zanoni [Fri, 11 Jun 2021 23:25:01 +0000 (16:25 -0700)]
iris: extract the code that adds BOs to the batch lists

We want to add a new caller, so extract this first.

v2: kflags can never contain EXEC_OBJECT_WRITE (Ken).
v3: Rebase after s/gtt_offset/address/.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12194>

2 years agoiris: assign bo->index to the aux map BOs too
Paulo Zanoni [Fri, 11 Jun 2021 22:53:19 +0000 (15:53 -0700)]
iris: assign bo->index to the aux map BOs too

I don't see these BOs being searched for in the benchmarks I tested so
I don't think this should improve anything. On the other hand, it
shouldn't hurt either since it's just an extra assignment.

I want to unify both places where we have this code into a single
function and the lack of the bo->index assignment was the only
difference between the two places. So first we make both functions the
same and in the next commit we'll unify things. This should make
bisecting easier in case I'm wrong.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12194>

2 years agoiris: don't bump the seqno for the workaround_bo
Paulo Zanoni [Mon, 2 Aug 2021 20:13:13 +0000 (13:13 -0700)]
iris: don't bump the seqno for the workaround_bo

The last_seqnos list is used by iris_emit_buffer_barrier_for() and as
far as I can understand we don't emit barriers for the workaround bo,
so don't even bother doing the atomic operations required to bump the
workaround_bo seqno list.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12194>

2 years agodocs: update calendar and link releases notes for 21.1.7
Eric Engestrom [Wed, 11 Aug 2021 20:41:10 +0000 (21:41 +0100)]
docs: update calendar and link releases notes for 21.1.7

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

2 years agodocs: add release notes for 21.1.7
Eric Engestrom [Wed, 11 Aug 2021 19:20:54 +0000 (20:20 +0100)]
docs: add release notes for 21.1.7

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

2 years agointel/vec4: sel.cond writes the flags on Gfx4 and Gfx5
Dave Airlie [Wed, 4 Aug 2021 07:38:12 +0000 (17:38 +1000)]
intel/vec4: sel.cond writes the flags on Gfx4 and Gfx5

This is the equivalent of idr's
intel/fs: sel.cond writes the flags on Gfx4 and Gfx5

except for the vec4 backend.

This fixes buggy rendering seen with crocus on a qt trace.

v2 (idr): Trivial whitespace change.  Add unit tests.

v3: Fix type in comment in unit tests.  Noticed by Jason and Priit.

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Iron Lake
total instructions in shared programs: 8183077 -> 8184543 (0.02%)
instructions in affected programs: 198990 -> 200456 (0.74%)
helped: 0
HURT: 1355
HURT stats (abs)   min: 1 max: 8 x̄: 1.08 x̃: 1
HURT stats (rel)   min: 0.29% max: 6.00% x̄: 0.99% x̃: 0.70%
95% mean confidence interval for instructions value: 1.04 1.12
95% mean confidence interval for instructions %-change: 0.96% 1.03%
Instructions are HURT.

total cycles in shared programs: 238967672 -> 238962784 (<.01%)
cycles in affected programs: 4666014 -> 4661126 (-0.10%)
helped: 406
HURT: 314
helped stats (abs) min: 4 max: 54 x̄: 22.46 x̃: 18
helped stats (rel) min: <.01% max: 12.80% x̄: 1.82% x̃: 0.65%
HURT stats (abs)   min: 2 max: 112 x̄: 13.48 x̃: 12
HURT stats (rel)   min: <.01% max: 7.82% x̄: 0.81% x̃: 0.16%
95% mean confidence interval for cycles value: -8.60 -4.98
95% mean confidence interval for cycles %-change: -0.87% -0.49%
Cycles are helped.

GM45
total instructions in shared programs: 4986888 -> 4988354 (0.03%)
instructions in affected programs: 198990 -> 200456 (0.74%)
helped: 0
HURT: 1355
HURT stats (abs)   min: 1 max: 8 x̄: 1.08 x̃: 1
HURT stats (rel)   min: 0.29% max: 6.00% x̄: 0.99% x̃: 0.70%
95% mean confidence interval for instructions value: 1.04 1.12
95% mean confidence interval for instructions %-change: 0.96% 1.03%
Instructions are HURT.

total cycles in shared programs: 153577826 -> 153572938 (<.01%)
cycles in affected programs: 4666014 -> 4661126 (-0.10%)
helped: 406
HURT: 314
helped stats (abs) min: 4 max: 54 x̄: 22.46 x̃: 18
helped stats (rel) min: <.01% max: 12.80% x̄: 1.82% x̃: 0.65%
HURT stats (abs)   min: 2 max: 112 x̄: 13.48 x̃: 12
HURT stats (rel)   min: <.01% max: 7.82% x̄: 0.81% x̃: 0.16%
95% mean confidence interval for cycles value: -8.60 -4.98
95% mean confidence interval for cycles %-change: -0.87% -0.49%
Cycles are helped.

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

2 years agointel/fs: sel.cond writes the flags on Gfx4 and Gfx5
Ian Romanick [Tue, 3 Aug 2021 04:33:17 +0000 (21:33 -0700)]
intel/fs: sel.cond writes the flags on Gfx4 and Gfx5

On Gfx4 and Gfx5, sel.l (for min) and sel.ge (for max) are implemented
using a separte cmpn and sel instruction.  This lowering occurs in
fs_vistor::lower_minmax which is called very, very late... a long, long
time after the first calls to opt_cmod_propagation.  As a result,
conditional modifiers can be incorrectly propagated across sel.cond on
those platforms.

No tests were affected by this change, and I find that quite shocking.
After just changing flags_written(), all of the atan tests started
failing on ILK.  That required the change in cmod_propagatin (and the
addition of the prop_across_into_sel_gfx5 unit test).

Shader-db results for ILK and GM45 are below.  I looked at a couple
before and after shaders... and every case that I looked at had
experienced incorrect cmod propagation.  This affected a LOT of apps!
Euro Truck Simulator 2, The Talos Principle, Serious Sam 3, Sanctum 2,
Gang Beasts, and on and on... :(

I discovered this bug while working on a couple new optimization
passes.  One of the passes attempts to remove condition modifiers that
are never used.  The pass made no progress except on ILK and GM45.
After investigating a couple of the affected shaders, I noticed that
the code in those shaders looked wrong... investigation led to this
cause.

v2: Trivial changes in the unit tests.

v3: Fix type in comment in unit tests.  Noticed by Jason and Priit.

v4: Tweak handling of BRW_OPCODE_SEL special case.  Suggested by Jason.

Fixes: df1aec763eb ("i965/fs: Define methods to calculate the flag subset read or written by an fs_inst.")
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Tested-by: Dave Airlie <airlied@redhat.com>
Iron Lake
total instructions in shared programs: 8180493 -> 8181781 (0.02%)
instructions in affected programs: 541796 -> 543084 (0.24%)
helped: 28
HURT: 1158
helped stats (abs) min: 1 max: 1 x̄: 1.00 x̃: 1
helped stats (rel) min: 0.35% max: 0.86% x̄: 0.53% x̃: 0.50%
HURT stats (abs)   min: 1 max: 3 x̄: 1.14 x̃: 1
HURT stats (rel)   min: 0.12% max: 4.00% x̄: 0.37% x̃: 0.23%
95% mean confidence interval for instructions value: 1.06 1.11
95% mean confidence interval for instructions %-change: 0.31% 0.38%
Instructions are HURT.

total cycles in shared programs: 239420470 -> 239421690 (<.01%)
cycles in affected programs: 2925992 -> 2927212 (0.04%)
helped: 49
HURT: 157
helped stats (abs) min: 2 max: 284 x̄: 62.69 x̃: 70
helped stats (rel) min: 0.04% max: 6.20% x̄: 1.68% x̃: 1.96%
HURT stats (abs)   min: 2 max: 48 x̄: 27.34 x̃: 24
HURT stats (rel)   min: 0.02% max: 2.91% x̄: 0.31% x̃: 0.20%
95% mean confidence interval for cycles value: -0.80 12.64
95% mean confidence interval for cycles %-change: -0.31% <.01%
Inconclusive result (value mean confidence interval includes 0).

GM45
total instructions in shared programs: 4985517 -> 4986207 (0.01%)
instructions in affected programs: 306935 -> 307625 (0.22%)
helped: 14
HURT: 625
helped stats (abs) min: 1 max: 1 x̄: 1.00 x̃: 1
helped stats (rel) min: 0.35% max: 0.82% x̄: 0.52% x̃: 0.49%
HURT stats (abs)   min: 1 max: 3 x̄: 1.13 x̃: 1
HURT stats (rel)   min: 0.12% max: 3.90% x̄: 0.34% x̃: 0.22%
95% mean confidence interval for instructions value: 1.04 1.12
95% mean confidence interval for instructions %-change: 0.29% 0.36%
Instructions are HURT.

total cycles in shared programs: 153827268 -> 153828052 (<.01%)
cycles in affected programs: 1669290 -> 1670074 (0.05%)
helped: 24
HURT: 84
helped stats (abs) min: 2 max: 232 x̄: 64.33 x̃: 67
helped stats (rel) min: 0.04% max: 4.62% x̄: 1.60% x̃: 1.94%
HURT stats (abs)   min: 2 max: 48 x̄: 27.71 x̃: 24
HURT stats (rel)   min: 0.02% max: 2.66% x̄: 0.34% x̃: 0.14%
95% mean confidence interval for cycles value: -1.94 16.46
95% mean confidence interval for cycles %-change: -0.29% 0.11%
Inconclusive result (value mean confidence interval includes 0).

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

2 years agocrocus: align staging resource pitch on gen4/5 to allow BLT usage.
Dave Airlie [Wed, 11 Aug 2021 17:34:26 +0000 (13:34 -0400)]
crocus: align staging resource pitch on gen4/5 to allow BLT usage.

Aligning the pitch to 4 bytes allows the BLT engine to be used for
transfers to/from these surfaces.

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

2 years agocrocus/blt: add pitch/offset checks to fix blt corruption
Dave Airlie [Wed, 11 Aug 2021 17:32:41 +0000 (13:32 -0400)]
crocus/blt: add pitch/offset checks to fix blt corruption

I lost these in my conversion from i965 but they are necessary.

This should fix corruption in qt fonts at seen in the minecraft
launcher.

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

2 years agopan/bi: Unit test DISCARD+FCMP fusing
Alyssa Rosenzweig [Wed, 4 Aug 2021 22:21:34 +0000 (18:21 -0400)]
pan/bi: Unit test DISCARD+FCMP fusing

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

2 years agopan/bi: Fuse DISCARD with conditions
Alyssa Rosenzweig [Tue, 3 Aug 2021 21:56:31 +0000 (17:56 -0400)]
pan/bi: Fuse DISCARD with conditions

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

2 years agopan/bi: Add fclamp unit tests
Alyssa Rosenzweig [Wed, 4 Aug 2021 16:12:31 +0000 (12:12 -0400)]
pan/bi: Add fclamp unit tests

The negative cases here did not pass before this series, showing the bug
in the clamp optimization. By introducing the FCLAMP pseudo op, the bug
is fixed. Let's ensure we don't regress.

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

2 years agopan/bi: Use FCLAMP pseudo op for clamp prop
Alyssa Rosenzweig [Wed, 4 Aug 2021 18:49:30 +0000 (14:49 -0400)]
pan/bi: Use FCLAMP pseudo op for clamp prop

Map nir_op_fsat/etc to FCLAMP pseudo ops, instead of FADD. There are
significantly fewer knobs on FCLAMP, meaning significantly fewer things
to get wrong.

This fixes two(!) classes of bugs:

* Swizzles (failing to lower/compose swizzles on clamps)
* Numerical bugs (incorrectly treating +0.0 as an additive identity)

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

2 years agopan/bi: Add optimizer unit tests
Alyssa Rosenzweig [Tue, 3 Aug 2021 22:39:13 +0000 (18:39 -0400)]
pan/bi: Add optimizer unit tests

Writing these tests brought to light the cluster of bugs fixed in the
previous commits. Now that things work, let's ensure they stay working.

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

2 years agopan/bi: Use FABSNEG pseudo ops for modifier prop
Alyssa Rosenzweig [Tue, 3 Aug 2021 23:16:52 +0000 (19:16 -0400)]
pan/bi: Use FABSNEG pseudo ops for modifier prop

Simplifies pattern matching. This commit by itself fixes multiple
numerical issues -- the previous fabsneg check failed to check the round
mode or the sign of the zero. That will break Vulkan/OpenCL.

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

2 years agopan/bi: Add shader equality helper for unit tests
Alyssa Rosenzweig [Tue, 3 Aug 2021 22:38:46 +0000 (18:38 -0400)]
pan/bi: Add shader equality helper for unit tests

Optimizer tests really are global.

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

2 years agopan/bi: Fuse abs/neg more on Valhall
Alyssa Rosenzweig [Tue, 3 Aug 2021 22:09:56 +0000 (18:09 -0400)]
pan/bi: Fuse abs/neg more on Valhall

Some of these Bifrost restrictions may be skipped on Valhall.

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

2 years agopan/bi: Simplify bi_compose_clamp
Alyssa Rosenzweig [Tue, 3 Aug 2021 17:47:59 +0000 (13:47 -0400)]
pan/bi: Simplify bi_compose_clamp

Realized this trick when reversing Valhall.

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

2 years agopan/bi: Unit test new constant folding patterns
Alyssa Rosenzweig [Tue, 10 Aug 2021 19:49:47 +0000 (15:49 -0400)]
pan/bi: Unit test new constant folding patterns

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

2 years agopan/bi: Constant fold texturing lowerings
Alyssa Rosenzweig [Tue, 3 Aug 2021 15:19:11 +0000 (11:19 -0400)]
pan/bi: Constant fold texturing lowerings

This ensures we can constant fold the ALU ops used to lower:

* explicit LOD calculations
* array textures
* texture offsets
* multisample indices

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

2 years agopan/va: Document IEEE 754 conformance of clamps
Alyssa Rosenzweig [Wed, 4 Aug 2021 16:21:06 +0000 (12:21 -0400)]
pan/va: Document IEEE 754 conformance of clamps

These rules are not obvious. But they turn out to be exactly what's
required by the spec.

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

2 years agopanfrost: Test src*dst + dst*src blending
Alyssa Rosenzweig [Fri, 30 Jul 2021 23:30:05 +0000 (19:30 -0400)]
panfrost: Test src*dst + dst*src blending

Validates the prior commit.

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

2 years agopanfrost: Leverage Bifrost's 2*src blend factor
Alyssa Rosenzweig [Fri, 30 Jul 2021 23:28:37 +0000 (19:28 -0400)]
panfrost: Leverage Bifrost's 2*src blend factor

Bifrost adds a value for the C factor equaling 2*src. This does not
correspond directly to API blend modes so it is not too useful in
general. However, it's required for src*dest + dest*src blending to be
done in hardware instead of a blend shader. GFXbench uses that blend
mode, so it must be important ;-)

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

2 years agopanfrost: Add basic fixed-function blending tests
Alyssa Rosenzweig [Fri, 30 Jul 2021 22:43:48 +0000 (18:43 -0400)]
panfrost: Add basic fixed-function blending tests

Add unit tests for the fixed-function blending helpers in pan_blend.c.
Each test consists of a Porter-Duff blend mode and the associated
hardware state. In this commit, we add tests for the most common modes.

For motivation, this code has NOT been properly tested in CI. True,
functional correctness of the blend module as a whole is tested by
dEQP-GLES3.functional.fragment_ops.blend.* among other integration
tests. However, this testing is insufficient to check for regressions.
Crucially, the following broken patch would clear CI:

   bool pan_can_fixed_function(...) {
      return false;
   }

In that case, blend shaders are used 100% of the time, which will
regress performance horribly but still pass dEQP. The only clue
something went wrong would be some traces changing checksum due to the
fixed-function blender producing slightly different output than
equivalent blend shaders. By unit testing the fixed blend path, we
ensure we always use the fixed-function path when we expect it to.

Similarly, using incorrect values for the blend metadata may not affect
functional correctness but will increase power consumption. Let's check
all the data we export to drivers.

Note: due to additive commutativity, there are many pairs of equivalent
Mali blend modes. Unfortunately, the vendor is... inconsistent about how
to resolve ambiguous modes. Our algorithm for computing modes is
correct; the "preferred" values are left in comments since otherwise our
tests fail despite correct code. I want to blame Bifrost for this, but
Midgard was patient zero.

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

2 years agopanfrost: Simplify blend_factor_constant_mask
Alyssa Rosenzweig [Fri, 30 Jul 2021 22:19:46 +0000 (18:19 -0400)]
panfrost: Simplify blend_factor_constant_mask

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

2 years agopanfrost: Fix is_opaque when blend_enable=false
Alyssa Rosenzweig [Fri, 30 Jul 2021 22:04:05 +0000 (18:04 -0400)]
panfrost: Fix is_opaque when blend_enable=false

Needed to pass the "replace" unit test.

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

2 years agopanfrost: Add blend helper packing the equation
Alyssa Rosenzweig [Fri, 30 Jul 2021 21:46:21 +0000 (17:46 -0400)]
panfrost: Add blend helper packing the equation

This is more convenient for the Gallium driver and easier to test.

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

2 years agopanfrost: Use _PU for non-dithered formats
Alyssa Rosenzweig [Tue, 10 Aug 2021 16:58:56 +0000 (12:58 -0400)]
panfrost: Use _PU for non-dithered formats

This is required to disable dithering on a per-draw basis when OPAQUE
output is used (bypassing the blender which normally uses the
round_to_framebuffer_precision flag to do the same).

This functionally reverts:

   ebc07f4b2f3 ("panfrost: Remove padded unorm blendable formats")
   fae90a79404 ("panfrost: Always pick dithered tb formats")

while adding the functionality to make them useful.

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

2 years agopanfrost: Remove unused #defines
Alyssa Rosenzweig [Wed, 11 Aug 2021 14:58:26 +0000 (10:58 -0400)]
panfrost: Remove unused #defines

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

2 years agopanfrost: Add LINEAR debug option
Alyssa Rosenzweig [Wed, 11 Aug 2021 14:50:44 +0000 (10:50 -0400)]
panfrost: Add LINEAR debug option

Useful to cross off CPU texture tiling as the source of bugs.

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

2 years agopan/bi: Add a noopt debug option
Alyssa Rosenzweig [Wed, 11 Aug 2021 14:31:48 +0000 (10:31 -0400)]
pan/bi: Add a noopt debug option

To rule out buggy optimization passes when debugging.

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

2 years agopan/bi: Make bi_opt_push_ubo optional
Alyssa Rosenzweig [Wed, 11 Aug 2021 14:03:13 +0000 (10:03 -0400)]
pan/bi: Make bi_opt_push_ubo optional

It's an optimization pass -- omitting it should not cause MMU faults
(!). Make sure the UBO push mask is set regardless of whether the pass
is called, and just call the pass when required.

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

2 years agonir/lower_shader_calls: remove empty phis
Lionel Landwerlin [Mon, 19 Jul 2021 16:33:12 +0000 (19:33 +0300)]
nir/lower_shader_calls: remove empty phis

This is confusing opt_cse.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Fixes: 8dfb240b1f0633 ("nir: Add raytracing shader call lowering pass.")
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11953>

2 years agozink: use nir_shader_instructions_pass in nir_lower_dynamic_bo_access
Marcin Ślusarz [Tue, 10 Aug 2021 11:53:40 +0000 (13:53 +0200)]
zink: use nir_shader_instructions_pass in nir_lower_dynamic_bo_access

Changes:
- nir_metadata_preserve(..., nir_metadata_dominance)
  is called only when pass makes progress
- nir_metadata_preserve(..., nir_metadata_all) is called when pass doesn't
  make progress

Signed-off-by: Marcin Ślusarz <marcin.slusarz@intel.com>
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12324>

2 years agozink: use nir_shader_instructions_pass in lower_discard_if
Marcin Ślusarz [Tue, 10 Aug 2021 11:49:05 +0000 (13:49 +0200)]
zink: use nir_shader_instructions_pass in lower_discard_if

Changes:
- nir_metadata_preserve(..., nir_metadata_dominance)
  is called only when pass makes progress
- nir_metadata_preserve(..., nir_metadata_all) is called when pass doesn't
  make progress

Signed-off-by: Marcin Ślusarz <marcin.slusarz@intel.com>
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12324>

2 years agomicrosoft/compiler: use nir_shader_instructions_pass in dxil_nir_lower_double_math
Marcin Ślusarz [Tue, 10 Aug 2021 11:36:47 +0000 (13:36 +0200)]
microsoft/compiler: use nir_shader_instructions_pass in dxil_nir_lower_double_math

No functional changes.

Signed-off-by: Marcin Ślusarz <marcin.slusarz@intel.com>
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12324>

2 years agomicrosoft/compiler: use nir_shader_instructions_pass in dxil_nir_split_clip_cull_distance
Marcin Ślusarz [Tue, 10 Aug 2021 11:30:56 +0000 (13:30 +0200)]
microsoft/compiler: use nir_shader_instructions_pass in dxil_nir_split_clip_cull_distance

No functional changes.

v2: fix build

Signed-off-by: Marcin Ślusarz <marcin.slusarz@intel.com>
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12324>

2 years agomicrosoft/compiler: preserve all metadata when upcast_phi doesn't make progress
Marcin Ślusarz [Tue, 10 Aug 2021 11:15:25 +0000 (13:15 +0200)]
microsoft/compiler: preserve all metadata when upcast_phi doesn't make progress

Signed-off-by: Marcin Ślusarz <marcin.slusarz@intel.com>
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12324>

2 years agomicrosoft/clc: use nir_shader_instructions_pass in clc_nir_dedupe_const_samplers
Marcin Ślusarz [Tue, 10 Aug 2021 11:03:51 +0000 (13:03 +0200)]
microsoft/clc: use nir_shader_instructions_pass in clc_nir_dedupe_const_samplers

Changes:
- nir_metadata_preserve(..., nir_metadata_all) is called when pass doesn't
  make progress

v2: fix build

Signed-off-by: Marcin Ślusarz <marcin.slusarz@intel.com>
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12324>

2 years agomicrosoft/clc: preserve only valid metadata in clc_lower_printf_base
Marcin Ślusarz [Tue, 10 Aug 2021 10:59:29 +0000 (12:59 +0200)]
microsoft/clc: preserve only valid metadata in clc_lower_printf_base

Signed-off-by: Marcin Ślusarz <marcin.slusarz@intel.com>
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12324>

2 years agod3d12: use nir_metadata_none instead of its value
Marcin Ślusarz [Tue, 10 Aug 2021 10:53:52 +0000 (12:53 +0200)]
d3d12: use nir_metadata_none instead of its value

Signed-off-by: Marcin Ślusarz <marcin.slusarz@intel.com>
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12324>

2 years agointel/compiler: use nir_shader_instructions_pass in brw_nir_apply_attribute_workarounds
Marcin Ślusarz [Fri, 6 Aug 2021 11:06:04 +0000 (13:06 +0200)]
intel/compiler: use nir_shader_instructions_pass in brw_nir_apply_attribute_workarounds

Changes:
- removal of attr_wa_state (it's passed directly)
- nir_metadata_preserve(..., nir_metadata_all) is called when pass doesn't
  make progress

Signed-off-by: Marcin Ślusarz <marcin.slusarz@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12324>

2 years agonir/builder: invalidate metadata per function
Marcin Ślusarz [Fri, 6 Aug 2021 10:14:38 +0000 (12:14 +0200)]
nir/builder: invalidate metadata per function

Fixes: a62098fff20 ("nir: Add a helper for general instruction-modifying passes.")
Signed-off-by: Marcin Ślusarz <marcin.slusarz@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12324>

2 years agofreedreno/decode: print estimated crash location without colored output
Danylo Piliaiev [Tue, 10 Aug 2021 09:24:04 +0000 (12:24 +0300)]
freedreno/decode: print estimated crash location without colored output

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

2 years agonir: add a pass to optimize "gl_FragDepth = gl_FragCoord.z" away
Pierre-Eric Pelloux-Prayer [Fri, 7 May 2021 14:36:47 +0000 (16:36 +0200)]
nir: add a pass to optimize "gl_FragDepth = gl_FragCoord.z" away

gl_FragDepth default value is gl_FragCoord.z so if a shader does:

   gl_FragDepth = gl_FragCoord.z

we can drop this assignment.

v2: use nir_ssa_scalar_resolved and don't do this is gl_FragDepth
    is wrote multiple times (Jason)
v3: - move to its own pass (Jason)
    - handle var = NULL (Rhys)
v4: refactoring (Jason)

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10697>

2 years agoiris: Drop dead drm_ioctl prototype
Kenneth Graunke [Thu, 22 Jul 2021 05:44:43 +0000 (22:44 -0700)]
iris: Drop dead drm_ioctl prototype

We now use intel_ioctl instead.

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

2 years agoiris: Improve the memory layout of iris_bo by fixing pahole issues
Kenneth Graunke [Tue, 20 Jul 2021 04:30:21 +0000 (21:30 -0700)]
iris: Improve the memory layout of iris_bo by fixing pahole issues

We had a 4 byte hole and a 4-byte field breaking up a run of bools.

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

2 years agoiris: Rename bo->gtt_offset to bo->address
Kenneth Graunke [Tue, 20 Jul 2021 04:23:18 +0000 (21:23 -0700)]
iris: Rename bo->gtt_offset to bo->address

This is the virtual memory address of the buffer object.  Calling it the
BO's address is a lot more obvious than calling it an offset in one of
the now many graphics translation tables.

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

2 years agov3d,v3dv: add options to force 32-bit or 16-bit TMU precision
Iago Toral Quiroga [Tue, 10 Aug 2021 09:32:50 +0000 (11:32 +0200)]
v3d,v3dv: add options to force 32-bit or 16-bit TMU precision

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

2 years agoanv/android: fix build error due refactoring
Tapani Pälli [Tue, 10 Aug 2021 08:08:35 +0000 (11:08 +0300)]
anv/android: fix build error due refactoring

Fixes: e08370dc37e ("anv: disable aux for exportable images without modifiers")
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/5208
Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12300>

2 years agodocs: add llvmpipe host memory extensions
Dave Airlie [Wed, 11 Aug 2021 00:06:22 +0000 (10:06 +1000)]
docs: add llvmpipe host memory extensions

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

2 years agolavapipe: add host ptr support.
Dave Airlie [Tue, 10 Aug 2021 19:18:10 +0000 (05:18 +1000)]
lavapipe: add host ptr support.

This actually doesn't need any backend support.

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

2 years agollvmpipe: add support for user memory pointers
Dave Airlie [Tue, 10 Aug 2021 06:21:10 +0000 (16:21 +1000)]
llvmpipe: add support for user memory pointers

This is useful for clover, but throw it at CI at least

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

2 years agopan/bi: Use the computed scale for fexp NaN propagation
Icecream95 [Sun, 8 Aug 2021 08:57:30 +0000 (20:57 +1200)]
pan/bi: Use the computed scale for fexp NaN propagation

This makes pow(NaN, x) return NaN rather than 1.0.

Fixes: 499397700c1 ("pan/bi: Don't lower fpow")
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/5189
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12269>

2 years agoRevert "nir/algebraic: Convert some f2u to f2i"
Ian Romanick [Fri, 6 Aug 2021 21:20:25 +0000 (14:20 -0700)]
Revert "nir/algebraic: Convert some f2u to f2i"

Per https://gitlab.freedesktop.org/mesa/mesa/-/issues/5178#note_1019666,
the assumption fundamental to this optimization is false.  Section
2.4.1 (Float to Integer) of Ivy Bridge PRMs describes the situation.
The wording of the section is somewhat confusing (because it doesn't
clearly delineate between signed and unsigned integers), but the last
two rows of the table make it clear that F->UD conversion clamps
negative float values to 0.

All other hardware mentioned in that thread seems to behave the same
way.

The real problem is that, with hardware that behaves in this ways,
converting f2u(2147483648.0) to f2i(2147483648.0) changes the bit pattern
that would be produced from 0x80000000 to 0x7fffffff.

This reverts commit ad059202583e8c86bbccf0d65c5ce35bc4ab20f1.

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12297>

2 years agonir/opcodes: Use u_intN_(min|max)
Ian Romanick [Fri, 6 Aug 2021 21:16:24 +0000 (14:16 -0700)]
nir/opcodes: Use u_intN_(min|max)

uadd_sat was updated using sed, so I didn't even notice the surrounding
opcodes.  Oops.

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12297>

2 years agoclover: only return CLC version as 1.2 (even for 3.0)
Dave Airlie [Mon, 9 Aug 2021 03:24:34 +0000 (13:24 +1000)]
clover: only return CLC version as 1.2 (even for 3.0)

Fixes CTS compiler opencl_c_versions

Reviewed-by: Karol Herbst <kherbst@redhat.com>
Acked-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12286>

2 years agoclover/nir: don't convert to NIR on library link
Dave Airlie [Mon, 9 Aug 2021 01:36:58 +0000 (11:36 +1000)]
clover/nir: don't convert to NIR on library link

If just creating a library, just link the spir-v and store it.

Reviewed-by: Karol Herbst <kherbst@redhat.com>
Acked-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12286>

2 years agoclover: fix compilation with clang + llvm 12.
Dave Airlie [Wed, 11 Nov 2020 01:33:33 +0000 (11:33 +1000)]
clover: fix compilation with clang + llvm 12.

clang in llvm 12 no longer accepts "-cl-denorms-are-zero" as a cc1
options which is how this code uses it.

For now just pick the correct cc1 equivalent.

This fixes a crash with llvm master and CL conversions tests

Reviewed-by: Karol Herbst <kherbst@redhat.com>
Acked-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12286>

2 years agopick-ui: show commit date
Eric Engestrom [Mon, 9 Aug 2021 20:44:21 +0000 (21:44 +0100)]
pick-ui: show commit date

With our ff-only merge setup, the commit date ends up being when the
commit actually landed (as opposed to when it was first written).

Signed-off-by: Eric Engestrom <eric@engestrom.ch>
Reviewed-by: Dylan Baker <dylan@pnwbakers.com>
Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12289>

2 years agopick-ui: show nomination type in the UI
Eric Engestrom [Mon, 9 Aug 2021 20:23:08 +0000 (21:23 +0100)]
pick-ui: show nomination type in the UI

Signed-off-by: Eric Engestrom <eric@engestrom.ch>
Reviewed-by: Dylan Baker <dylan@pnwbakers.com>
Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12289>