platform/upstream/mesa.git
3 years agozink: move batch decl to top of draw_vbo
Mike Blumenkrantz [Tue, 11 May 2021 17:49:42 +0000 (13:49 -0400)]
zink: move batch decl to top of draw_vbo

this may still change during descriptor updating, but having the pointer
earlier is helpful

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

3 years agozink: remove unnecessary draw checks
Mike Blumenkrantz [Tue, 11 May 2021 17:49:10 +0000 (13:49 -0400)]
zink: remove unnecessary draw checks

I don't know how/why these got here but they aren't needed

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

3 years agozink: use u_live_shader_cache
Mike Blumenkrantz [Mon, 10 May 2021 10:50:49 +0000 (06:50 -0400)]
zink: use u_live_shader_cache

let the duplicated shader madness end

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

3 years agozink: unify gfx shader create callbacks
Mike Blumenkrantz [Mon, 10 May 2021 10:30:19 +0000 (06:30 -0400)]
zink: unify gfx shader create callbacks

these are identical

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

3 years agozink: mark bind_stage() as inline
Mike Blumenkrantz [Sat, 23 Jan 2021 16:03:52 +0000 (11:03 -0500)]
zink: mark bind_stage() as inline

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

3 years agozink: simplify zink_program_has_descriptors()
Mike Blumenkrantz [Tue, 11 May 2021 16:58:36 +0000 (12:58 -0400)]
zink: simplify zink_program_has_descriptors()

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

3 years agozink: remove return types from program update functions during draw
Mike Blumenkrantz [Tue, 11 May 2021 16:21:10 +0000 (12:21 -0400)]
zink: remove return types from program update functions during draw

also remove some null checks; these add overhead and the app is going to
explode anyway if they fail

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

3 years agozink: slightly refactor program updating during draw
Mike Blumenkrantz [Tue, 11 May 2021 16:18:19 +0000 (12:18 -0400)]
zink: slightly refactor program updating during draw

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

3 years agozink: destroy lazy descriptor pools during batch reset when unused
Mike Blumenkrantz [Sun, 9 May 2021 18:14:53 +0000 (14:14 -0400)]
zink: destroy lazy descriptor pools during batch reset when unused

this should keep resource usage a bit lower

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

3 years agozink: track active use counts for descriptor layouts
Mike Blumenkrantz [Sun, 9 May 2021 17:59:06 +0000 (13:59 -0400)]
zink: track active use counts for descriptor layouts

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

3 years agozink: cache descriptor update templates along with layout
Mike Blumenkrantz [Sun, 9 May 2021 17:56:45 +0000 (13:56 -0400)]
zink: cache descriptor update templates along with layout

this simplifies a bunch of code and just makes more sense given that the
lifetimes should match

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

3 years agocrocus: disable Z16
Dave Airlie [Wed, 16 Jun 2021 03:39:39 +0000 (13:39 +1000)]
crocus: disable Z16

This is disabled on i965 for all pre-gen8, so do the same here.

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

3 years agocrocus: fixup render aux usage function.
Dave Airlie [Wed, 16 Jun 2021 03:35:11 +0000 (13:35 +1000)]
crocus: fixup render aux usage function.

This got misaligned somewhere in development, should fix the
regressions vs i965 in tesseract as seen on phoronix benchmarks.

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

3 years agozink: make batch_usage_matches take a batch state param
Mike Blumenkrantz [Fri, 7 May 2021 12:57:12 +0000 (08:57 -0400)]
zink: make batch_usage_matches take a batch state param

no functional changes, just some unwinding in some cases

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

3 years agozink: make batch_usage_set take a batch state param
Mike Blumenkrantz [Fri, 7 May 2021 12:27:02 +0000 (08:27 -0400)]
zink: make batch_usage_set take a batch state param

no functional changes

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

3 years agozink: remove unnecessary conditionals in resource batch tracking
Mike Blumenkrantz [Fri, 7 May 2021 12:23:04 +0000 (08:23 -0400)]
zink: remove unnecessary conditionals in resource batch tracking

this is no longer an atomic op

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

3 years agozink: unset program batch usage on state reset
Mike Blumenkrantz [Fri, 7 May 2021 12:21:30 +0000 (08:21 -0400)]
zink: unset program batch usage on state reset

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

3 years agozink: make batch_usage_unset take a batch state param
Mike Blumenkrantz [Fri, 7 May 2021 12:21:02 +0000 (08:21 -0400)]
zink: make batch_usage_unset take a batch state param

no functional changes

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

3 years agozink: remove atomic from batch usage setting
Mike Blumenkrantz [Fri, 7 May 2021 12:15:43 +0000 (08:15 -0400)]
zink: remove atomic from batch usage setting

this shouldn't be necessary since usage can only be set from the context thread
and only needs to be accessed atomically for the cmpxchg when unsetting

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

3 years agozink: move batch usage functions to static inlines
Mike Blumenkrantz [Fri, 7 May 2021 12:14:53 +0000 (08:14 -0400)]
zink: move batch usage functions to static inlines

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

3 years agozink: optimize zink_tc_fence struct packing
Mike Blumenkrantz [Fri, 7 May 2021 13:38:45 +0000 (09:38 -0400)]
zink: optimize zink_tc_fence struct packing

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

3 years agozink: reorder has_barriers flag in batch state struct
Mike Blumenkrantz [Fri, 7 May 2021 13:37:20 +0000 (09:37 -0400)]
zink: reorder has_barriers flag in batch state struct

better struct packing

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

3 years agozink: split batch state work_count into separate vars
Mike Blumenkrantz [Fri, 7 May 2021 13:37:04 +0000 (09:37 -0400)]
zink: split batch state work_count into separate vars

this has better struct packing

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

3 years agozink: remove zink_batch_state::descs_used
Mike Blumenkrantz [Fri, 7 May 2021 13:31:45 +0000 (09:31 -0400)]
zink: remove zink_batch_state::descs_used

this is no longer used or needed

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

3 years agocrocus: fixed some missing WM dirtys.
Dave Airlie [Wed, 16 Jun 2021 00:34:05 +0000 (10:34 +1000)]
crocus: fixed some missing WM dirtys.

This fixes misrendering in ET: legacy.

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

3 years agozink: add ZINK_DESCRIPTORS env var to explicitly set a mode
Mike Blumenkrantz [Mon, 29 Mar 2021 21:22:49 +0000 (17:22 -0400)]
zink: add ZINK_DESCRIPTORS env var to explicitly set a mode

currently this supports 3 modes, with the default being a hybrid between
caching and lazy

Reviewed-by: Hoe Hao Cheng <haochengho12907@gmail.com>
Acked-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11188>

3 years agozink: unblock last_set cached descriptor reuse when safe to do so
Mike Blumenkrantz [Mon, 29 Mar 2021 20:40:52 +0000 (16:40 -0400)]
zink: unblock last_set cached descriptor reuse when safe to do so

if no changes at all have occurred to a given set since the last use,
and if the program hasn't changed, then there is no possiblility for
the set to have been invalidated, and so it can immediately be reused

Reviewed-by: Hoe Hao Cheng <haochengho12907@gmail.com>
Acked-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11188>

3 years agozink: skip hash updates for descriptor types which aren't used
Mike Blumenkrantz [Mon, 29 Mar 2021 19:51:08 +0000 (15:51 -0400)]
zink: skip hash updates for descriptor types which aren't used

this is pointless and hurts drawoverhead perf

Reviewed-by: Hoe Hao Cheng <haochengho12907@gmail.com>
Acked-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11188>

3 years agozink: add oob asserts for descriptor set ref setting
Mike Blumenkrantz [Mon, 29 Mar 2021 19:22:19 +0000 (15:22 -0400)]
zink: add oob asserts for descriptor set ref setting

Reviewed-by: Hoe Hao Cheng <haochengho12907@gmail.com>
Acked-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11188>

3 years agozink: enable templated descriptor updates in cache mode
Mike Blumenkrantz [Sun, 28 Mar 2021 16:31:11 +0000 (12:31 -0400)]
zink: enable templated descriptor updates in cache mode

this leverages the template infrastructure from the lazy manager for the
cached mode, alternatively generating a pseudo-template for updates
if real templates aren't available in order to retain 1.0 compatibility

Acked-by: Hoe Hao Cheng <haochengho12907@gmail.com>
Acked-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11188>

3 years agozink: move samplerview descset refs to base objects
Mike Blumenkrantz [Sun, 28 Mar 2021 16:50:05 +0000 (12:50 -0400)]
zink: move samplerview descset refs to base objects

this further extends the lifetimes for sets

Reviewed-by: Hoe Hao Cheng <haochengho12907@gmail.com>
Acked-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11188>

3 years agozink: add funcs for descriptor_surface refs
Mike Blumenkrantz [Sun, 28 Mar 2021 16:42:08 +0000 (12:42 -0400)]
zink: add funcs for descriptor_surface refs

this abstracts more code for the cache backend

Reviewed-by: Hoe Hao Cheng <haochengho12907@gmail.com>
Acked-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11188>

3 years agozink: move shader image descriptor set refs to underlying type
Mike Blumenkrantz [Sun, 28 Mar 2021 15:31:56 +0000 (11:31 -0400)]
zink: move shader image descriptor set refs to underlying type

this was kinda useless since it meant that the set was invalidated any
time the shader image was unbound

Reviewed-by: Hoe Hao Cheng <haochengho12907@gmail.com>
Acked-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11188>

3 years agozink: update null sampler/image descriptor surface with is_buffer during hashing
Mike Blumenkrantz [Mon, 29 Mar 2021 19:24:40 +0000 (15:24 -0400)]
zink: update null sampler/image descriptor surface with is_buffer during hashing

this is the only time it might need to be used, so it can be updated naturally here

Reviewed-by: Hoe Hao Cheng <haochengho12907@gmail.com>
Acked-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11188>

3 years agozink: add is_buffer flag to union zink_descriptor_surface
Mike Blumenkrantz [Sun, 28 Mar 2021 15:31:06 +0000 (11:31 -0400)]
zink: add is_buffer flag to union zink_descriptor_surface

Reviewed-by: Hoe Hao Cheng <haochengho12907@gmail.com>
Acked-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11188>

3 years agozink: run lazy batch descriptor functions in cache mode
Mike Blumenkrantz [Sat, 27 Mar 2021 17:19:27 +0000 (13:19 -0400)]
zink: run lazy batch descriptor functions in cache mode

Acked-by: Hoe Hao Cheng <haochengho12907@gmail.com>
Acked-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11188>

3 years agozink: unify cached descriptor update code
Mike Blumenkrantz [Thu, 25 Mar 2021 15:26:43 +0000 (11:26 -0400)]
zink: unify cached descriptor update code

this is all pretty much standardized now, so it can be combined into something
simpler

Acked-by: Hoe Hao Cheng <haochengho12907@gmail.com>
Acked-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11188>

3 years agozink: move ubo range assert to update_descriptor_state()
Mike Blumenkrantz [Thu, 25 Mar 2021 13:25:31 +0000 (09:25 -0400)]
zink: move ubo range assert to update_descriptor_state()

Acked-by: Hoe Hao Cheng <haochengho12907@gmail.com>
Acked-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11188>

3 years agozink: remove sorting for dynamic ubo offset updating
Mike Blumenkrantz [Thu, 25 Mar 2021 13:19:21 +0000 (09:19 -0400)]
zink: remove sorting for dynamic ubo offset updating

if the offsets are assigned in the right order, they don't need to be
ordered later

Acked-by: Hoe Hao Cheng <haochengho12907@gmail.com>
Acked-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11188>

3 years agozink: modernize cached image descriptor updating
Mike Blumenkrantz [Thu, 25 Mar 2021 13:08:13 +0000 (09:08 -0400)]
zink: modernize cached image descriptor updating

use the auto-updated descriptor info

Reviewed-by: Hoe Hao Cheng <haochengho12907@gmail.com>
Acked-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11188>

3 years agozink: modernize cached ssbo descriptor updating
Mike Blumenkrantz [Thu, 25 Mar 2021 12:50:12 +0000 (08:50 -0400)]
zink: modernize cached ssbo descriptor updating

use the already-updated bufferinfo structs

Reviewed-by: Hoe Hao Cheng <haochengho12907@gmail.com>
Acked-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11188>

3 years agozink: modernize cached ubo descriptor updating
Mike Blumenkrantz [Thu, 25 Mar 2021 12:50:12 +0000 (08:50 -0400)]
zink: modernize cached ubo descriptor updating

use the already-updated bufferinfo structs

Reviewed-by: Hoe Hao Cheng <haochengho12907@gmail.com>
Acked-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11188>

3 years agozink: modernize cached push ubo descriptor updating
Mike Blumenkrantz [Thu, 25 Mar 2021 12:50:12 +0000 (08:50 -0400)]
zink: modernize cached push ubo descriptor updating

use the already-updated bufferinfo structs

Reviewed-by: Hoe Hao Cheng <haochengho12907@gmail.com>
Acked-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11188>

3 years agozink: match lazy descriptor set layout in cache mode
Mike Blumenkrantz [Wed, 24 Mar 2021 13:02:52 +0000 (09:02 -0400)]
zink: match lazy descriptor set layout in cache mode

now cached descriptors also use a push set for ubo0, also reusing the
ZINK_DESCRIPTOR_TYPES for this set for enum purposes

Acked-by: Hoe Hao Cheng <haochengho12907@gmail.com>
Acked-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11188>

3 years agozink: split lazy sets based on descriptor type
Mike Blumenkrantz [Tue, 23 Mar 2021 20:12:42 +0000 (16:12 -0400)]
zink: split lazy sets based on descriptor type

this is now closer to the cached descriptor set layout, but with
the push set as the zero-indexed set (passed as ZINK_DESCRIPTOR_TYPES
for enum purposes)

Acked-by: Hoe Hao Cheng <haochengho12907@gmail.com>
Acked-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11188>

3 years agozink: add a function for creating descriptor layouts for push sets
Mike Blumenkrantz [Wed, 24 Mar 2021 13:02:09 +0000 (09:02 -0400)]
zink: add a function for creating descriptor layouts for push sets

push sets contain a single ubo at index 0 per shader stage in the set

Reviewed-by: Hoe Hao Cheng <haochengho12907@gmail.com>
Acked-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11188>

3 years agov3d: ci: Add KHR-GLES31.core.shader_image_load_store.basic-glsl-earlyFragTests to...
Ian Romanick [Tue, 15 Jun 2021 19:34:01 +0000 (12:34 -0700)]
v3d: ci: Add KHR-GLES31.core.shader_image_load_store.basic-glsl-earlyFragTests to flakes

Closes: #4934
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11386>

3 years agovenus: add debug info for experimental features during init
Yiwei Zhang [Tue, 15 Jun 2021 20:06:35 +0000 (20:06 +0000)]
venus: add debug info for experimental features during init

Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Chia-I Wu <olvaffe@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11387>

3 years agoanv: Agressively no-op Flush/InvalidateMappedMemoryRanges
Jason Ekstrand [Mon, 14 Jun 2021 20:10:17 +0000 (15:10 -0500)]
anv: Agressively no-op Flush/InvalidateMappedMemoryRanges

This has two steps.  First, for each range we look at the memory object
and see if it actually needs flushing before we start throwing CLFLUSH
instructions.  Second, we look at the whole list of types on device
initialization and decide whether or not we need CLFLUSH at all.  The
first part should speed up atom chips a bit since we're currently
CLFLUSHing everything even when we don't need to.  The second isn't
needed on most of today's parts because we base it on !has_llc but it is
needed for discrete parts.  It's also over-all cleaner.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Tested-by: Felix DeGrood <felix.j.degrood@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11364>

3 years agofreedreno: Be more strict about QUERY_AVAILABLE to simplify the code.
Emma Anholt [Mon, 14 Jun 2021 21:13:45 +0000 (14:13 -0700)]
freedreno: Be more strict about QUERY_AVAILABLE to simplify the code.

ARB_oq doesn't just say "polling in a loop will make it complete
eventually", it says "querying will make it complete in finite time."

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

3 years agofreedreno: Drop a bit of indirection around the batch cache flush path.
Emma Anholt [Mon, 14 Jun 2021 19:02:26 +0000 (12:02 -0700)]
freedreno: Drop a bit of indirection around the batch cache flush path.

Checking the flag to call separate functions which then call the same
helper with the flag is a bit silly.

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

3 years agofreedreno: Make a bunch of the batch cache take ctx as the arg.
Emma Anholt [Mon, 14 Jun 2021 18:48:14 +0000 (11:48 -0700)]
freedreno: Make a bunch of the batch cache take ctx as the arg.

As we move the batch cache from screen to context, it cleans up the diff a
ton to separate this mechanical change out, and makes the API generally
more consistent (since you usually have to pass the ctx anyway).

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

3 years agofreedreno: Drop batch-cache orphan tracking.
Emma Anholt [Mon, 14 Jun 2021 18:42:43 +0000 (11:42 -0700)]
freedreno: Drop batch-cache orphan tracking.

Let's let valgrind/asan handle leak detection.  This means you can use the
flag even on non-DEBUG builds.

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

3 years agopan/bi: Fuse abs into FCMP/FMIN/FMAX.v2f16
Alyssa Rosenzweig [Fri, 11 Jun 2021 16:43:41 +0000 (12:43 -0400)]
pan/bi: Fuse abs into FCMP/FMIN/FMAX.v2f16

Needs to be aware of an encoding restriction here.

No shader-db changes.

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

3 years agopan/bi: Schedule FCMP.v2f16 with abs modifier
Alyssa Rosenzweig [Fri, 11 Jun 2021 16:43:21 +0000 (12:43 -0400)]
pan/bi: Schedule FCMP.v2f16 with abs modifier

So many encoding restrictions, because Bifrost.

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

3 years agopan/bi: Fuse fclamp_pos and fsat_signed
Alyssa Rosenzweig [Fri, 11 Jun 2021 00:37:35 +0000 (20:37 -0400)]
pan/bi: Fuse fclamp_pos and fsat_signed

Mostly interesting now that we fuse clamps.

total instructions in shared programs: 149562 -> 148927 (-0.42%)
instructions in affected programs: 37195 -> 36560 (-1.71%)
helped: 233
HURT: 0
helped stats (abs) min: 1 max: 10 x̄: 2.73 x̃: 2
helped stats (rel) min: 0.22% max: 17.39% x̄: 2.19% x̃: 1.72%
95% mean confidence interval for instructions value: -2.97 -2.48
95% mean confidence interval for instructions %-change: -2.44% -1.94%
Instructions are helped.

total tuples in shared programs: 130487 -> 130122 (-0.28%)
tuples in affected programs: 25693 -> 25328 (-1.42%)
helped: 179
HURT: 12
helped stats (abs) min: 1 max: 10 x̄: 2.11 x̃: 2
helped stats (rel) min: 0.26% max: 25.00% x̄: 2.52% x̃: 1.70%
HURT stats (abs)   min: 1 max: 1 x̄: 1.00 x̃: 1
HURT stats (rel)   min: 0.61% max: 0.68% x̄: 0.65% x̃: 0.66%
95% mean confidence interval for tuples value: -2.15 -1.68
95% mean confidence interval for tuples %-change: -2.74% -1.91%
Tuples are helped.

total clauses in shared programs: 27827 -> 27761 (-0.24%)
clauses in affected programs: 1407 -> 1341 (-4.69%)
helped: 56
HURT: 0
helped stats (abs) min: 1 max: 4 x̄: 1.18 x̃: 1
helped stats (rel) min: 1.79% max: 14.29% x̄: 6.11% x̃: 5.26%
95% mean confidence interval for clauses value: -1.32 -1.03
95% mean confidence interval for clauses %-change: -7.00% -5.23%
Clauses are helped.

total quadwords in shared programs: 118563 -> 118248 (-0.27%)
quadwords in affected programs: 19859 -> 19544 (-1.59%)
helped: 144
HURT: 16
helped stats (abs) min: 1 max: 10 x̄: 2.30 x̃: 2
helped stats (rel) min: 0.29% max: 16.00% x̄: 2.65% x̃: 2.13%
HURT stats (abs)   min: 1 max: 1 x̄: 1.00 x̃: 1
HURT stats (rel)   min: 0.47% max: 2.00% x̄: 0.80% x̃: 0.76%
95% mean confidence interval for quadwords value: -2.27 -1.66
95% mean confidence interval for quadwords %-change: -2.67% -1.93%
Quadwords are helped.

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

3 years agopan/bi: Add back custom algebraic opts
Alyssa Rosenzweig [Fri, 11 Jun 2021 00:21:28 +0000 (20:21 -0400)]
pan/bi: Add back custom algebraic opts

Right now just do a trivial one to test the infrastructure. In the next
commit we'll use this for a more interesting optimization that's a bit
painful in BIR but trivial with nir_search.

total instructions in shared programs: 149566 -> 149562 (<.01%)
instructions in affected programs: 502 -> 498 (-0.80%)
helped: 3
HURT: 0
helped stats (abs) min: 1 max: 2 x̄: 1.33 x̃: 1
helped stats (rel) min: 0.38% max: 1.30% x̄: 0.97% x̃: 1.21%

total tuples in shared programs: 130957 -> 130487 (-0.36%)
tuples in affected programs: 54752 -> 54282 (-0.86%)
helped: 303
HURT: 2
helped stats (abs) min: 1 max: 29 x̄: 1.56 x̃: 1
helped stats (rel) min: 0.13% max: 7.14% x̄: 1.08% x̃: 0.92%
HURT stats (abs)   min: 1 max: 2 x̄: 1.50 x̃: 1
HURT stats (rel)   min: 1.89% max: 2.99% x̄: 2.44% x̃: 2.44%
95% mean confidence interval for tuples value: -1.79 -1.30
95% mean confidence interval for tuples %-change: -1.17% -0.95%
Tuples are helped.

total clauses in shared programs: 27877 -> 27827 (-0.18%)
clauses in affected programs: 1556 -> 1506 (-3.21%)
helped: 45
HURT: 0
helped stats (abs) min: 1 max: 2 x̄: 1.11 x̃: 1
helped stats (rel) min: 1.43% max: 9.52% x̄: 3.88% x̃: 3.57%
95% mean confidence interval for clauses value: -1.21 -1.02
95% mean confidence interval for clauses %-change: -4.38% -3.39%
Clauses are helped.

total quadwords in shared programs: 119058 -> 118563 (-0.42%)
quadwords in affected programs: 33777 -> 33282 (-1.47%)
helped: 250
HURT: 2
helped stats (abs) min: 1 max: 29 x̄: 1.99 x̃: 1
helped stats (rel) min: 0.23% max: 11.11% x̄: 1.67% x̃: 1.40%
HURT stats (abs)   min: 1 max: 1 x̄: 1.00 x̃: 1
HURT stats (rel)   min: 1.64% max: 2.00% x̄: 1.82% x̃: 1.82%
95% mean confidence interval for quadwords value: -2.27 -1.66
95% mean confidence interval for quadwords %-change: -1.80% -1.49%
Quadwords are helped.

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

3 years agopan/bi: Propagate fabs/neg/sat
Alyssa Rosenzweig [Thu, 10 Jun 2021 23:05:29 +0000 (19:05 -0400)]
pan/bi: Propagate fabs/neg/sat

Initial support for modifier propagation. Bifrost makes this
unreasonably hard.

total instructions in shared programs: 151604 -> 150761 (-0.56%)
instructions in affected programs: 48773 -> 47930 (-1.73%)
helped: 212
HURT: 0
helped stats (abs) min: 1 max: 28 x̄: 3.98 x̃: 1
helped stats (rel) min: 0.29% max: 12.70% x̄: 1.75% x̃: 1.26%
95% mean confidence interval for instructions value: -4.71 -3.25
95% mean confidence interval for instructions %-change: -1.97% -1.53%
Instructions are helped.

total tuples in shared programs: 131876 -> 131560 (-0.24%)
tuples in affected programs: 25393 -> 25077 (-1.24%)
helped: 104
HURT: 3
helped stats (abs) min: 1 max: 28 x̄: 3.08 x̃: 2
helped stats (rel) min: 0.34% max: 8.57% x̄: 1.55% x̃: 1.04%
HURT stats (abs)   min: 1 max: 2 x̄: 1.33 x̃: 1
HURT stats (rel)   min: 0.51% max: 2.86% x̄: 1.30% x̃: 0.53%
95% mean confidence interval for tuples value: -3.63 -2.28
95% mean confidence interval for tuples %-change: -1.73% -1.21%
Tuples are helped.

total clauses in shared programs: 28122 -> 28032 (-0.32%)
clauses in affected programs: 2720 -> 2630 (-3.31%)
helped: 58
HURT: 1
helped stats (abs) min: 1 max: 6 x̄: 1.57 x̃: 1
helped stats (rel) min: 0.88% max: 14.29% x̄: 4.06% x̃: 3.67%
HURT stats (abs)   min: 1 max: 1 x̄: 1.00 x̃: 1
HURT stats (rel)   min: 7.69% max: 7.69% x̄: 7.69% x̃: 7.69%
95% mean confidence interval for clauses value: -1.85 -1.20
95% mean confidence interval for clauses %-change: -4.60% -3.13%
Clauses are helped.

total quadwords in shared programs: 119778 -> 119509 (-0.22%)
quadwords in affected programs: 20698 -> 20429 (-1.30%)
helped: 95
HURT: 1
helped stats (abs) min: 1 max: 28 x̄: 2.85 x̃: 2
helped stats (rel) min: 0.38% max: 7.14% x̄: 1.50% x̃: 1.13%
HURT stats (abs)   min: 2 max: 2 x̄: 2.00 x̃: 2
HURT stats (rel)   min: 3.23% max: 3.23% x̄: 3.23% x̃: 3.23%
95% mean confidence interval for quadwords value: -3.49 -2.11
95% mean confidence interval for quadwords %-change: -1.71% -1.20%
Quadwords are helped.

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

3 years agopan/bi: Report tuples, not nops, in shader-db
Alyssa Rosenzweig [Thu, 10 Jun 2021 23:28:05 +0000 (19:28 -0400)]
pan/bi: Report tuples, not nops, in shader-db

More useful in practice, I find.

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

3 years agopan/bi: Handle fsat_signed and fclamp_pos
Alyssa Rosenzweig [Fri, 11 Jun 2021 00:37:12 +0000 (20:37 -0400)]
pan/bi: Handle fsat_signed and fclamp_pos

Translates to Mali-specific clamps.

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

3 years agopan/bi: Track instruction size in opcode table
Alyssa Rosenzweig [Fri, 11 Jun 2021 00:08:18 +0000 (20:08 -0400)]
pan/bi: Track instruction size in opcode table

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

3 years agopan/bi: Move typesize to common code
Alyssa Rosenzweig [Fri, 11 Jun 2021 00:07:50 +0000 (20:07 -0400)]
pan/bi: Move typesize to common code

Useful for the opcode table.

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

3 years agopan/bi: Move bi_word_node to common code
Alyssa Rosenzweig [Thu, 10 Jun 2021 23:05:14 +0000 (19:05 -0400)]
pan/bi: Move bi_word_node to common code

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

3 years agopan/bi: Include modifier info in opcode table
Alyssa Rosenzweig [Fri, 5 Mar 2021 23:10:39 +0000 (23:10 +0000)]
pan/bi: Include modifier info in opcode table

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

3 years agoutil: Consider CPU affinity when detecting number of CPUs
Ian Romanick [Mon, 7 Jun 2021 20:06:22 +0000 (13:06 -0700)]
util: Consider CPU affinity when detecting number of CPUs

A similar path can be used on at least FreeBSD using cpuset_getaffinity.
This is how Ninja determines the number of available CPUs on that
platform.  See the GetProcessorCount function in util.cc:

https://github.com/ninja-build/ninja/blob/master/src/util.cc

v2: Fix counting the number of available CPUs.  The CPU_COUNT API does
not work the way I thought it did. :face_palm: Noticed by Marek.

Reviewed-by: Adam Jackson <ajax@redhat.com> [v1]
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com> [v1]
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11228>

3 years agoutil: Use maximum number of CPUs for determining cache topology
Ian Romanick [Wed, 9 Jun 2021 16:24:45 +0000 (09:24 -0700)]
util: Use maximum number of CPUs for determining cache topology

This prevents problems when some CPUs are offline.  In a four CPU
system, if CPUs 1 and 2 are offline, the cache topology code would
only examine CPUs 0 and 1... giving incorrect information.

The types are changed to int16_t so that the offset of num_L3_caches
does not change.  This triggered a STATIC_ASSERT failure:

STATIC_ASSERT(offsetof(struct util_cpu_caps_t, num_L3_caches) == 5 * sizeof(uint32_t));

I'm assuming there's some assembly code or something that depends on
this offset, and I don't feel like messing with it.

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

3 years agoutil: Set util_cpu_caps.num_cpu_mask_bits based on total CPUs in the system
Ian Romanick [Tue, 8 Jun 2021 23:36:32 +0000 (16:36 -0700)]
util: Set util_cpu_caps.num_cpu_mask_bits based on total CPUs in the system

In the current code, this prevents a very unlikely corner case.  More
importantly, it should prevent the next commit from breaking the
universe.

Imagine a system with 64 CPUs configured, but first 32 CPUs are offline.
_SC_NPROCESSORS_CONF will return 32.  All of the surrounding code will
interpret this as meaning CPUs 0 through 31, but all of those CPUs are
offline.  Nothing good can happen then.

The problem cases require systems with more than 32 CPUs because
util_cpu_caps.num_cpu_mask_bits is always rounded up to a multiple of
32.

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

3 years agoutil: Fix setting nr_cpus on some BSD variants
Ian Romanick [Tue, 8 Jun 2021 22:39:20 +0000 (15:39 -0700)]
util: Fix setting nr_cpus on some BSD variants

Linux, FreeBSD, and DragonFly should have _SC_NOPROCESSORS_ONLN.  NetBSD
and OpenBSD should have HW_NCPUONLINE.  This is what FFmpeg uses on
those platforms.

FreeBSD sysconf(3) manual page:

https://www.freebsd.org/cgi/man.cgi?query=sysconf&sektion=3&apropos=0&manpath=freebsd

The FFmpeg patch is at:

https://patchwork.ffmpeg.org/project/ffmpeg/patch/YGi4sJx3trG3Yn7c@humpty.home.comstyle.com/

OpenBSD sysctl(2) manual page:

https://man.openbsd.org/sysctl.2

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

3 years agoutil: Trivial cleanup in the BSD code of util_cpu_detect_once
Ian Romanick [Tue, 8 Jun 2021 22:33:39 +0000 (15:33 -0700)]
util: Trivial cleanup in the BSD code of util_cpu_detect_once

This code is going to be replicated in future commits, so tidy up a bit
first.

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

3 years agoutil: Change order of PIPE_OS_UNIX code in util_cpu_detect_once
Ian Romanick [Tue, 8 Jun 2021 21:40:19 +0000 (14:40 -0700)]
util: Change order of PIPE_OS_UNIX code in util_cpu_detect_once

This makes it easier to add preferred vs. fallback paths later.

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

3 years agoutil: Zero out all of mask in util_set_thread_affinity
Ian Romanick [Tue, 8 Jun 2021 22:08:50 +0000 (15:08 -0700)]
util: Zero out all of mask in util_set_thread_affinity

memset operates in bytes, and there are 8-bits in a byte.  This is a
very easy to miss typo. :(

Fixes: 9758b1d416a1 ("util: add util_set_thread_affinity helpers including Windows support")

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

3 years agoradeonsi: Use util_cpu_caps to detect number of CPUs
Ian Romanick [Mon, 7 Jun 2021 19:15:20 +0000 (12:15 -0700)]
radeonsi: Use util_cpu_caps to detect number of CPUs

The next patch will change the way the number of CPUs is detected, and
this change prevents some code duplication.

v2: Add missing #include.  Noticed by Pierre-Eric... not sure how I
missed it. :(

Reviewed-by: Adam Jackson <ajax@redhat.com> [v1]
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11228>

3 years agovenus: moves GPU rendering off CPU timeline for Android WSI
Yiwei Zhang [Tue, 15 Jun 2021 07:00:09 +0000 (07:00 +0000)]
venus: moves GPU rendering off CPU timeline for Android WSI

When globalFencing is supported, we can export a native sync fd for
presentation to move rendering off CPU timeline.

Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Chia-I Wu <olvaffe@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11342>

3 years agovenus: refactor vn_AcquireImageANDROID with globalFencing
Yiwei Zhang [Sat, 12 Jun 2021 23:17:44 +0000 (23:17 +0000)]
venus: refactor vn_AcquireImageANDROID with globalFencing

This patch refactors to use vn_Import*FdKHR for Android WSI native sync
fence import when globalFencing is supported. Currently there's no perf
win from this, but will move the composer release fence waiting to the
GPU device side automatically when the entire Venus fencing support is
improved.

Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Chia-I Wu <olvaffe@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11342>

3 years agovenus: silence a build warning
Yiwei Zhang [Tue, 15 Jun 2021 16:33:29 +0000 (16:33 +0000)]
venus: silence a build warning

Address -Wsometimes-uninitialized

Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Chia-I Wu <olvaffe@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11342>

3 years agoaux/indices: include provoking vertex check in prim type conversion
Neha Bhende [Mon, 14 Jun 2021 22:49:15 +0000 (15:49 -0700)]
aux/indices: include provoking vertex check in prim type conversion

Include provoking vertex checking in u_index_prim_type_convert() to make sure
the right primitive type is returned from the generator function.

Fixes google earth running on VMware svga device on hw version 11.

Fixes: cad2026b72cf ("aux/indices: break out primitive type conversion to separate function")

Reviewed-by: Charmaine Lee <charmainel@vmware.com>
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11367>

3 years agofreedreno: Fallback to sw for copy_image with compressed
Rob Clark [Tue, 15 Jun 2021 14:24:54 +0000 (07:24 -0700)]
freedreno: Fallback to sw for copy_image with compressed

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

3 years agofreedreno: Flush batches on shadow/uncompress
Rob Clark [Mon, 14 Jun 2021 22:18:25 +0000 (15:18 -0700)]
freedreno: Flush batches on shadow/uncompress

Normally when we shadow a resource (whether it is changing the modifier
or not) we do not need to flush existing batches, since they reference
the original version of the resource.  There is a special case for
resources that are referenced by a batches framebuffer state, because
this state is emitted when the batch is flushed.  Because of this, we
need those batches to be flushed before we shadow the resource.

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

3 years agofreedreno/a6xx: Also validate format in blitter path
Rob Clark [Sun, 13 Jun 2021 20:34:27 +0000 (13:34 -0700)]
freedreno/a6xx: Also validate format in blitter path

Since we can be blitting using a format that is different from the
resource's native format, we also need to validate and demote if
necessary, similar to sampler-views, image-views, and fb state.

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

3 years agofreedreno/a6xx: Handle R8G8 sharp edges in validate_format()
Rob Clark [Sun, 13 Jun 2021 20:27:33 +0000 (13:27 -0700)]
freedreno/a6xx: Handle R8G8 sharp edges in validate_format()

Because R8G8 has a different layout from R16, we not only need to demote
to uncompressed to (for example) sample R8G8 as R16 (or visa versa) but
we also need to demote further to linear.

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

3 years agofreedreno: Avoid recursive re-entry of u_blitter
Rob Clark [Sun, 13 Jun 2021 18:02:59 +0000 (11:02 -0700)]
freedreno: Avoid recursive re-entry of u_blitter

Normally when demotion to uncompressed is required, it is handled when
various state is attached (sampler-view, framebuffer, etc).  But in this
one path into u_blitter we need to handle it up front, to avoid
recursing back into u_blitter for a decompress blit.

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

3 years agofreedreno: Add debugging for blitter fallback recursion
Rob Clark [Sun, 13 Jun 2021 20:37:16 +0000 (13:37 -0700)]
freedreno: Add debugging for blitter fallback recursion

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

3 years agofreedreno: Don't try staging blit for non-renderable formats
Rob Clark [Sun, 13 Jun 2021 15:21:52 +0000 (08:21 -0700)]
freedreno: Don't try staging blit for non-renderable formats

If a format is not supported as a render target, there is no point in
trying a staging blit, as it will end up in a CPU copy fallback.

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

3 years agofreedreno: Drop obsolete comment
Rob Clark [Sun, 13 Jun 2021 20:36:19 +0000 (13:36 -0700)]
freedreno: Drop obsolete comment

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

3 years agovenus: be verbose about which physical devices are skipped
Chia-I Wu [Tue, 15 Jun 2021 00:27:23 +0000 (17:27 -0700)]
venus: be verbose about which physical devices are skipped

Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11369>

3 years agovenus: fix compatibility with older host drivers
Chia-I Wu [Mon, 14 Jun 2021 23:39:54 +0000 (16:39 -0700)]
venus: fix compatibility with older host drivers

Unlike on Android, KHR_swapchain may be advertised even when the host
driver does not support EXT_image_drm_format_modifier and
EXT_queue_family_foreign.  Do not request those extensions when they are
not supported.

Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11369>

3 years agovenus: clean up vn_physical_device_get_native_extensions
Chia-I Wu [Tue, 15 Jun 2021 00:23:07 +0000 (17:23 -0700)]
venus: clean up vn_physical_device_get_native_extensions

Separate Android and non-Android paths.  No real change.

Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11369>

3 years agonir/cse: resize the instruction set
Rhys Perry [Mon, 17 Aug 2020 19:22:23 +0000 (20:22 +0100)]
nir/cse: resize the instruction set

ministat (CSE only):
Difference at 95.0% confidence
-3357.54 +/- 32.5177
-25.267% +/- 0.24098%
(Student's t, pooled s = 33.909)

ministat (entire run):
Difference at 95.0% confidence
-3414.27 +/- 270.628
-2.76477% +/- 0.217647%
(Student's t, pooled s = 282.207)

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

3 years agonir: use a single set during CSE
Rhys Perry [Mon, 17 Aug 2020 18:56:16 +0000 (19:56 +0100)]
nir: use a single set during CSE

Use a single set and ensure dominance by checking after a equivalent
instruction is found.

Besides removing the need to copy a set, this also lets us resize the set
at the start of the pass in the next commit.

ministat (CSE only):
Difference at 95.0% confidence
-984.956 +/- 28.8559
-6.90075% +/- 0.190231%
(Student's t, pooled s = 26.9052)

ministat (entire run):
Difference at 95.0% confidence
-1246.1 +/- 257.253
-0.998972% +/- 0.205094%
(Student's t, pooled s = 239.863)

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

3 years agofreedreno/registers: define REG_DSI_CPHY_MODE_CTRL
Jonathan Marek [Tue, 15 Jun 2021 16:42:12 +0000 (12:42 -0400)]
freedreno/registers: define REG_DSI_CPHY_MODE_CTRL

For use by the kernel driver.

Signed-off-by: Jonathan Marek <jonathan@marek.ca>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11381>

3 years agoiris: fix error message on I915_GEM_[GS]ET_TILING failure
Marcin Ślusarz [Mon, 14 Jun 2021 09:01:41 +0000 (11:01 +0200)]
iris: fix error message on I915_GEM_[GS]ET_TILING failure

The first problem was noticed by Coverity (CID 1485970).

Fixes: ab49063f449 ("iris: Only use SET/GET_TILING when exporting/importing BOs")
Signed-off-by: Marcin Ślusarz <marcin.slusarz@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11357>

3 years agozink: use correct type for u_bit_scan
Erik Faye-Lund [Mon, 14 Jun 2021 09:59:04 +0000 (11:59 +0200)]
zink: use correct type for u_bit_scan

Since we're going to iterate over each bit of this variable using
u_bit_scan, we should make sure we use an unsigned int for the variable.

While this works on GCC, it's not guaranteed to work, and produces a
warning on MSVC.

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

3 years agoanv: Replace DC Flush with HDC Pipeline Flush
Felix DeGrood [Thu, 18 Mar 2021 16:44:33 +0000 (09:44 -0700)]
anv: Replace DC Flush with HDC Pipeline Flush

HDC Pipeline Flush is the correct method for flushing HDC
pipeline on Gfx12+ HW. Continue using DC Flush for earlier HW.

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

3 years agoanv: Add ANV_PIPE_HDC_PIPELINE_FLUSH_BIT
Felix DeGrood [Thu, 18 Mar 2021 02:46:41 +0000 (19:46 -0700)]
anv: Add ANV_PIPE_HDC_PIPELINE_FLUSH_BIT

Gfx12+ PIPE_CONTROL bit for flushing HDC cache and memory
transactions to L3 cache.

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

3 years agoanv: Only flush Tile Cache on VK_ACCESS_HOST_R/W
Felix DeGrood [Fri, 12 Mar 2021 23:36:49 +0000 (15:36 -0800)]
anv: Only flush Tile Cache on VK_ACCESS_HOST_R/W

Tile Cache flush flushes all Color/Depth values from L3 cache
to memory in Unified Cache mode. This is only required when
CPU access is required.

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

3 years agoanv: remove unnecessary Tile Cache flushes
Felix DeGrood [Wed, 17 Mar 2021 04:02:35 +0000 (21:02 -0700)]
anv: remove unnecessary Tile Cache flushes

On Gfx12+, flushing tile cache ensures color/depth values are
globally visible, but that's expensive.  Most operations only
need values to be GT-visible which can be achieved with depth
or rt flush.  Remove a bunch of unnecessary Tile Cache flushes.
Fast clears and slow depth clears still require Tile Cache flush.

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

3 years agoanv: Remove Tile Cache flush from SBA, Pipe Select
Felix DeGrood [Wed, 17 Mar 2021 04:00:59 +0000 (21:00 -0700)]
anv: Remove Tile Cache flush from SBA, Pipe Select

Tile Cache flushing not required for State Base Address or
Pipe Select instructions.

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

3 years agoanv: Clear all pending stall after pipe flush
Felix DeGrood [Fri, 29 Jan 2021 22:40:11 +0000 (14:40 -0800)]
anv: Clear all pending stall after pipe flush

Was only clearing CS stalls after emitting pending pipe
controls.  Need to clear all stalls.

Cc: mesa-stable
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9834>

3 years agoanv: Add debug messages for DEBUG_PIPE_CONTROL
Felix DeGrood [Thu, 11 Mar 2021 16:40:56 +0000 (08:40 -0800)]
anv: Add debug messages for DEBUG_PIPE_CONTROL

Enable with INTEL_DEBUG=pc.

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

3 years agoanv: Cache VB/IB in L3$ for Gfx12
Felix DeGrood [Wed, 24 Mar 2021 16:08:58 +0000 (09:08 -0700)]
anv: Cache VB/IB in L3$ for Gfx12

Gfx12 enables caching of Vertex and Index Buffers in L3.

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