platform/upstream/mesa.git
2 years agonir: add 16 and 64 bit fisnormal lowering
Karol Herbst [Sun, 24 Apr 2022 19:55:34 +0000 (21:55 +0200)]
nir: add 16 and 64 bit fisnormal lowering

Signed-off-by: Karol Herbst <kherbst@redhat.com>
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16206>

2 years agokopper: implement texture-from-pixmap for software (non-dmabuf)
Mike Blumenkrantz [Wed, 27 Apr 2022 12:48:16 +0000 (08:48 -0400)]
kopper: implement texture-from-pixmap for software (non-dmabuf)

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

2 years agokopper: rename a confusing variable
Mike Blumenkrantz [Thu, 28 Apr 2022 16:47:13 +0000 (12:47 -0400)]
kopper: rename a confusing variable

is_pixmap is defined in kopper_allocate_textures() as being (!window && x11),
which is very different from this check, which determines whether the drawable
is a window

so rename it to keep things consistent

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

2 years agokopper: check whether zink is using sw
Mike Blumenkrantz [Wed, 27 Apr 2022 21:20:03 +0000 (17:20 -0400)]
kopper: check whether zink is using sw

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

2 years agozink/kopper: add a function for determining if running on software
Mike Blumenkrantz [Wed, 27 Apr 2022 21:19:44 +0000 (17:19 -0400)]
zink/kopper: add a function for determining if running on software

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

2 years agokopper: check for modifiers to use modifier functionality
Mike Blumenkrantz [Wed, 27 Apr 2022 21:07:53 +0000 (17:07 -0400)]
kopper: check for modifiers to use modifier functionality

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

2 years agokopper: add some error logging for pixmap->texture failure
Mike Blumenkrantz [Wed, 27 Apr 2022 21:06:57 +0000 (17:06 -0400)]
kopper: add some error logging for pixmap->texture failure

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

2 years agod3d12: Don't block DISPLAY based on format for non-Windows
Jesse Natalie [Mon, 25 Apr 2022 20:38:40 +0000 (13:38 -0700)]
d3d12: Don't block DISPLAY based on format for non-Windows

On platforms where we're not using DXGI swapchains, there's no reason
to disallow DISPLAY for formats like B5G6R5. In fact, on Android,
we need to support this format as BIND_DISPLAY.

Reviewed-by: Bill Kristiansen <billkris@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16154>

2 years agoac: remove gallivm header include
Mike Blumenkrantz [Wed, 27 Apr 2022 13:13:18 +0000 (09:13 -0400)]
ac: remove gallivm header include

this doesn't seem to be used

Acked-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16192>

2 years agozink: radv ci updates
Mike Blumenkrantz [Thu, 28 Apr 2022 16:30:01 +0000 (12:30 -0400)]
zink: radv ci updates

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

2 years agoutil: change util_format_snorm8_to_sint8 -> snorm_to_sint for radeonsi
Marek Olšák [Mon, 25 Apr 2022 02:42:10 +0000 (22:42 -0400)]
util: change util_format_snorm8_to_sint8 -> snorm_to_sint for radeonsi

Convert all SNORM formats to SINT.

This fixes SNORM blits for radeonsi.

Reviewed-by: Emma Anholt <emma@anholt.net>
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16132>

2 years agoutil: add pipe formats R10G10B10X2_SINT, B10G10R10X2_SINT, G16R16_SINT
Marek Olšák [Mon, 25 Apr 2022 02:40:58 +0000 (22:40 -0400)]
util: add pipe formats R10G10B10X2_SINT, B10G10R10X2_SINT, G16R16_SINT

needed by radeonsi

Reviewed-by: Emma Anholt <emma@anholt.net>
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16132>

2 years agoetnaviv: reinstate accidentially commented assert
Lucas Stach [Thu, 28 Apr 2022 10:26:14 +0000 (12:26 +0200)]
etnaviv: reinstate accidentially commented assert

I added this hack to my tree when testing another MR and ended up
squashing it into c2a3236d1a (etnaviv: clean up tiling setup in
etna_compile_rs_state) by accident when doing some changes to this
commit. Reinstate the assert.

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16212>

2 years agodrm-uapi/i915_drm.h: Update from drm-next (2022-04-28)
Jordan Justen [Tue, 26 Apr 2022 20:19:01 +0000 (13:19 -0700)]
drm-uapi/i915_drm.h: Update from drm-next (2022-04-28)

git://anongit.freedesktop.org/drm/drm 9bda072a7bec278c424ad660373e69d8e4a3385d

Among other changes, this provides DRM_I915_QUERY_HWCONFIG_BLOB and
DRM_I915_QUERY_GEOMETRY_SUBSLICES, which are needed for DG2 support.

Cc: 22.1 <mesa-stable>
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16174>

2 years agovulkan/device_select: force default device if environment variable set
prashanth [Fri, 25 Mar 2022 18:31:44 +0000 (00:01 +0530)]
vulkan/device_select: force default device if environment variable set

Force default device if MESA_VK_DEVICE_SELECT_FORCE_DEFAULT_DEVICE
environment variable set. This will not give multiple device
options to app. There are apps that selects gpu to use based on its
own criteria, this patch can force default behaviour for these apps
by giving only one gpu device to select from.

v2: return 0 if no physical device present (Mihai Preda)
v3: document environment variables (Mihai Preda)(Marek Olšák)

Signed-off-by: Yogesh Mohan Marimuthu <yogesh.mohanmarimuthu@amd.com>
Reviewed-by: Mihai Preda <mhpreda@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15585>

2 years agoci/lava: Retry when data fetching log RPC call is corrupted
Guilherme Gallo [Wed, 20 Apr 2022 23:55:47 +0000 (20:55 -0300)]
ci/lava: Retry when data fetching log RPC call is corrupted

Rarely the jobs.logs RPC call can return corrupted data, such as
mal-formed YAML data. As this is expected and very rare to occur, let's
retry this RPC call several times to give it a chance to fix itself.

Retrying would not swallow the log lines since we keep track of how many
log lines each job has.

Signed-off-by: Guilherme Gallo <guilherme.gallo@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15938>

2 years agoci/lava: Improve exception handling
Guilherme Gallo [Thu, 31 Mar 2022 18:42:49 +0000 (15:42 -0300)]
ci/lava: Improve exception handling

Move exceptions to its own file.
Create MesaCITimeoutError and MesaCIRetryError with specific exception
data for better exception classification.
Avoid the use of `fatal_err` in favor of raising a proper exception.
Make _call_proxy exception handling exhaustive, add missing
ResponseError treatment.

Also, detect JobError during job result parsing. So when a LAVA timeout error
happens, it is probably cause by some boot/network issues with a
specific device, we can retry the same job in other device with the same
device_type.

Signed-off-by: Guilherme Gallo <guilherme.gallo@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15938>

2 years agoci/lava: Cancel the job if the script is interrupted
Guilherme Gallo [Fri, 8 Apr 2022 14:52:50 +0000 (11:52 -0300)]
ci/lava: Cancel the job if the script is interrupted

During development, we may want to test lava_job_submitter.py locally,
sometimes one can find what one is been looking for before the LAV job
is done. Let's respond to SIGINT signal and cancel the LAVA job, as we
can't follow what is happening anymore via script.

Signed-off-by: Guilherme Gallo <guilherme.gallo@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15938>

2 years agoci/lava: Reduce LAVA boot phase timeout to 3 minutes
Guilherme Gallo [Fri, 25 Mar 2022 12:55:09 +0000 (09:55 -0300)]
ci/lava: Reduce LAVA boot phase timeout to 3 minutes

A normal boot on LAVA device would take less than 1 minute. Sometimes
the depthcharge freezes and LAVA waits until the current timeout (25
minutes) to kick in and fail the job.
With this lower timeout value, the job could fail faster and eventually
LAVA will be able to retry it.

Furthermore, set a default timeout for all actions to fix an undesired
behavior with some LAVA job subactions, such as depthcharge-action.

Signed-off-by: Guilherme Gallo <guilherme.gallo@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15938>

2 years agoci/lava: Let LAVA job submitter run without JWT file
Guilherme Gallo [Thu, 24 Mar 2022 21:22:49 +0000 (18:22 -0300)]
ci/lava: Let LAVA job submitter run without JWT file

Make jwt-file argument optional, this means that this submitter could
deal with more generic use cases, such as running it locally, since the
MINIO JWT is a sensitive information, which is not really required to
test if the submitter is working well.

Signed-off-by: Guilherme Gallo <guilherme.gallo@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15938>

2 years agoci/lava: Parse all test cases from 0_mesa suite
Guilherme Gallo [Thu, 24 Mar 2022 01:10:51 +0000 (22:10 -0300)]
ci/lava: Parse all test cases from 0_mesa suite

LAVA can filter which test suite to show the results from, let's list
all testcases possible in the mesa test suite, to be able to divide more
complex jobs into test_cases.
Another advantage is that the test case can vary its name.

Signed-off-by: Guilherme Gallo <guilherme.gallo@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15938>

2 years agoci/lava: Fix shebang in deqp-runner.sh
Guilherme Gallo [Mon, 11 Apr 2022 18:26:13 +0000 (15:26 -0300)]
ci/lava: Fix shebang in deqp-runner.sh

Now, every rootfs based device has bash installed, so we can use bash
shebang instead of dash to enforce the use of bash's echo, not dash's
one.

Signed-off-by: Guilherme Gallo <guilherme.gallo@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15938>

2 years agoci/lava: Trap init-stage2.sh background processes
Guilherme Gallo [Thu, 7 Apr 2022 19:01:27 +0000 (16:01 -0300)]
ci/lava: Trap init-stage2.sh background processes

Any daemon executed in init-stage2.sh may interfere with LAVA signals,
since any threaded output to console may clutter the signals, which are
based on the log output.
E.g: This job
https://gitlab.freedesktop.org/gallo/mesa/-/jobs/20779120#L2102
has failed because capture-devcoredump.sh was alive and emitting kernel
messages to the console during the LAVA signal handling, mangling the
output and making the LAVA to fail to check the results of the job.

Another problem is that CONFIG_DEBUG_STACK_USAGE Kconfig is enabled.
This causes process exit to dump a `RESULT=[  246.756067] lava-test-case
(156) used greatest stack depth: ... bytes left` kernel message to the
logs corrupting LAVA signal message. Empirically, it happens one in
every 280 jobs. To solve that, compose the lava-test-case custom script
with a short sleep to give time for kernel to dump the message clearly
and a exit command to keep the return code from init-stage2.sh script.

Signed-off-by: Guilherme Gallo <guilherme.gallo@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15938>

2 years agoci/lava: Use lava-test-case to run custom scripts in LAVA
Guilherme Gallo [Wed, 23 Mar 2022 01:39:31 +0000 (22:39 -0300)]
ci/lava: Use lava-test-case to run custom scripts in LAVA

The exit code is automatically parsed to fail/pass the job, so this
commit removes the `hwci.*pass|fail` regex and printings.

Add mesa-job-name parameter to get the CI_JOB_NAME easily to serve as
test name.

Besides, there is the treatment for the mesa job naeme, as LAVA does not
like whitespace character inside the test case/suite name, since it
interprets it as a LAVA signal parameter and it can make the job fail
when the script looks for the results from the LAVA RPC.

And the slash character seems to break gitlab log sectioning, so
removing every character after the first whitespace.

Signed-off-by: Guilherme Gallo <guilherme.gallo@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15938>

2 years agoci/lava: Always validate the lava job
Guilherme Gallo [Wed, 23 Mar 2022 01:02:59 +0000 (22:02 -0300)]
ci/lava: Always validate the lava job

Signed-off-by: Guilherme Gallo <guilherme.gallo@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15938>

2 years agoci/lava: Set lava-signal to kmsg
Guilherme Gallo [Wed, 13 Apr 2022 22:23:23 +0000 (19:23 -0300)]
ci/lava: Set lava-signal to kmsg

By default, LAVA emit signals as specific lines of message to the
console serial for subsequent parsing. However, this is prone to be
interleaved with the dmesg messages, particularly with debug messages
that can happen just after the process exit, such as the ones set by
CONFIG_STACK_DEBUG_USAGE Kconfig.

Setting the `lava-signal` to `kmsg` will make those special messages to
be dumped to /dev/kmsg, where the each line is printed atomically

Signed-off-by: Guilherme Gallo <guilherme.gallo@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15938>

2 years agoci/lava: Fix LAVA job validation
Guilherme Gallo [Wed, 23 Mar 2022 22:26:47 +0000 (19:26 -0300)]
ci/lava: Fix LAVA job validation

When jobs.validate returns something, it means that there is a dict
filled with the error message, so we were running the job with some
validation errors for a quite while

Signed-off-by: Guilherme Gallo <guilherme.gallo@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15938>

2 years agoci/lava: Return test-suite result as exit code
Guilherme Gallo [Thu, 17 Feb 2022 01:11:49 +0000 (01:11 +0000)]
ci/lava: Return test-suite result as exit code

Makes it easier for external observers.

Signed-off-by: Guilherme Gallo <guilherme.gallo@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15938>

2 years agoci/lava: Filter log lines from LAVA return
Guilherme Gallo [Thu, 14 Apr 2022 17:58:55 +0000 (14:58 -0300)]
ci/lava: Filter log lines from LAVA return

Start to differentiate between the different types of LAVA log message;
the only visible change right now is that we make warnings and errors
bold and red to match bare-metal, but it comes in useful later as we
will use the results markers to watch us step through the different
stages of job execution.

Signed-off-by: Guilherme Gallo <guilherme.gallo@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15938>

2 years agoci/lava: Encapsulate job data in a class
Guilherme Gallo [Wed, 16 Feb 2022 18:06:20 +0000 (18:06 +0000)]
ci/lava: Encapsulate job data in a class

Less free-form passing stuff around, and also makes it easier to
implement log-based following in future.

The new class has:
- job log polling: This allows us to get rid of some more function-local
  state; the job now contains where we are, and the timeout etc is
  localised within the thing polling it.
- has-started detection into job class
- heartbeat logic to update the job instance state with the start time
  when the submitter begins to track the logs from the LAVA device

Besides:

- Split LAVA jobs and Mesa CI policy
- Update unit tests with LAVAJob class

Signed-off-by: Guilherme Gallo <guilherme.gallo@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15938>

2 years agoci/lava: Sleep before, not after, API calls
Daniel Stone [Wed, 16 Feb 2022 17:52:23 +0000 (17:52 +0000)]
ci/lava: Sleep before, not after, API calls

We rate-limit LAVA API calls as they are standard polling calls rather
than blocking for changes. However when we sleep after making the calls
rather than before, we can block when we want to exit - e.g. after
getting the final logs, we will still sleep even though we can drop out.

Fix this by moving the calls to before the API calls, rather than after.
This means that the first calls (when we're waiting to be scheduled, or
haven't got our first log lines yet), will be delayed compared to
previously, but that's not going to slow us down as even in the best
case we won't be executing in a device within the first 15 seconds.

Signed-off-by: Daniel Stone <daniels@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15938>

2 years agoisl: disable mcs (and mcs+ccs) for color msaa on DG2
Tapani Pälli [Sat, 23 Apr 2022 06:29:08 +0000 (09:29 +0300)]
isl: disable mcs (and mcs+ccs) for color msaa on DG2

Fixes lots of various test failures in:
   dEQP-VK.pipeline.multisample.min_sample_shading_disabled.*
   dEQP-GLES3.functional*multisample.*
   KHR-GL*sample_variables.*

Cc: mesa-stable
Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Acked-by: Kenneth Graunke <kenneth@whitecape.org>
Acked-by: Nanley Chery <nanley.g.chery@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13991>

2 years agovulkan/wsi/x11: Use atomic_int with sent_image_count
Jordan Justen [Tue, 12 Apr 2022 21:46:39 +0000 (14:46 -0700)]
vulkan/wsi/x11: Use atomic_int with sent_image_count

Without this being atomically incremented and decremented, I observed
this assert triggering in debug builds:

  src/vulkan/wsi/wsi_common_x11.c:x11_present_to_x11_dri3():

  assert(chain->sent_image_count <= chain->base.image_count);

I think this was happening since,

  src/vulkan/wsi/wsi_common_x11.c:x11_handle_dri3_present_event()

which decrements chain->sent_image_count may be run in a separate
thread.

Fixes: d0bc1ad3776 ("vulkan/wsi/x11: add sent image counter")
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15908>

2 years agollvmpipe: add user memory resources to the debug global list.
Dave Airlie [Thu, 28 Apr 2022 00:43:45 +0000 (10:43 +1000)]
llvmpipe: add user memory resources to the debug global list.

Otherwise things will crash on destruction.

Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Fixes: 9a57dceeb760 ("llvmpipe: add support for user memory pointers")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16207>

2 years agofreedreno: Use staging transfer if mmap fails
Rob Clark [Wed, 20 Apr 2022 17:07:14 +0000 (10:07 -0700)]
freedreno: Use staging transfer if mmap fails

With externaly imported resources, we can have situations where we can't
mmap and directly access linear buffers.  So use the staging blit path
for this case.

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

2 years agofreedreno: Split out helper for staging blit
Rob Clark [Wed, 20 Apr 2022 16:41:31 +0000 (09:41 -0700)]
freedreno: Split out helper for staging blit

We are also going to want to use this for fallback when mmap fails.

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

2 years agofreedreno/a6xx: A couple more FD_BO_NOMAP
Rob Clark [Wed, 20 Apr 2022 16:40:49 +0000 (09:40 -0700)]
freedreno/a6xx: A couple more FD_BO_NOMAP

A couple other buffers that we don't need to mmap.

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

2 years agofreedreno/drm/virtio: Split up large uploads
Rob Clark [Mon, 18 Apr 2022 23:18:48 +0000 (16:18 -0700)]
freedreno/drm/virtio: Split up large uploads

Might be useful if host cached mmaps.. but OTOH we don't want to burn up
address space.

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

2 years agofreedreno/drm/virtio: Async ccmd batching
Rob Clark [Mon, 18 Apr 2022 21:23:13 +0000 (14:23 -0700)]
freedreno/drm/virtio: Async ccmd batching

This could be a bit more clever an avoid extra memcpy.. but that seems
to be in the noise at this point.

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

2 years agofreedreno/drm/virtio: Pass guest handles to execbuf
Rob Clark [Tue, 12 Apr 2022 21:09:03 +0000 (14:09 -0700)]
freedreno/drm/virtio: Pass guest handles to execbuf

This is needed for the VIRTGPU_WAIT ioctl to work.

TODO we could perhaps limit this, since it is not needed for residency,
but only fencing.  Ie. we could omit cmdstream, and probably anything
that has FD_BO_NOMAP flag.

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

2 years agofreedreno/drm/virtio: Protocol updates
Rob Clark [Sat, 16 Apr 2022 19:11:31 +0000 (12:11 -0700)]
freedreno/drm/virtio: Protocol updates

This syncs up with the protocol of what eventually landed in virglrender.

1) Move all static params to capset to avoid having to query host
   (reduce synchronous round trips at startup)
2) Use res_id instead of host_handle.. costs extra hashtable lookups in
   host during submit, but this lets us (with userspace allocated IOVA)
   make bo alloc and import completely async.
3) Require userspace allocated IOVA to simplify the protocol and not
   have to deal with GEM_NEW/GEM_INFO potentially being synchronous.

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

2 years agofreedreno/drm/virtio: Fix SHAREABLE+MAPPABLE
Rob Clark [Tue, 12 Apr 2022 17:24:16 +0000 (10:24 -0700)]
freedreno/drm/virtio: Fix SHAREABLE+MAPPABLE

A shareable bo should also be mappable if FD_BO_NOMAP is not set.

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

2 years agofreedreno/drm/virtio: Drop blocking in host
Rob Clark [Fri, 8 Apr 2022 21:48:03 +0000 (14:48 -0700)]
freedreno/drm/virtio: Drop blocking in host

These paths should be corner cases, but still it is a bad idea to block
in the host (because it is single threaded), so instead just turn waits
in the host into polling in the guest.

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

2 years agofreedreno/drm/virtio: Use userspace IOVA allocation
Rob Clark [Tue, 22 Mar 2022 23:14:19 +0000 (16:14 -0700)]
freedreno/drm/virtio: Use userspace IOVA allocation

If supported by host virglrenderer and host kernel, use userspace
allocated GPU virtual addresses.  This lets us avoid stalling on
waiting for response from host kernel until we need to know the
host handle (which is usually not until submit time).

Handling the async response from host to get host_handle is done
thru the submit_queue, so that in the submit path (hot) we do not
need any additional synchronization to know that the host_handle
is valid.

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

2 years agofreedreno/drm/virtio: Support ring_idx
Rob Clark [Tue, 5 Apr 2022 16:21:14 +0000 (09:21 -0700)]
freedreno/drm/virtio: Support ring_idx

ring_idx zero is the CPU ring, others map to the priority level, as each
priority level for a given drm_file on the host kernel side maps to a
single fence timeline.

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

2 years agofreedreno/drm: Move bo common init
Rob Clark [Sun, 27 Mar 2022 23:22:29 +0000 (16:22 -0700)]
freedreno/drm: Move bo common init

We'll need this to happen before virtio_bo_new() returns in the next
patch.

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

2 years agofreedreno/drm: Close bo handle after bo->destroy()
Rob Clark [Fri, 25 Mar 2022 16:29:41 +0000 (09:29 -0700)]
freedreno/drm: Close bo handle after bo->destroy()

For userspace allocated iova, we want to give the backend a chance to
release the iova before the handle is closed.

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

2 years agofreedreno/drm: Drop FD_PP_PGTABLE
Rob Clark [Sat, 16 Apr 2022 18:56:06 +0000 (11:56 -0700)]
freedreno/drm: Drop FD_PP_PGTABLE

Unused.

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

2 years agofreedreno/drm/virtio: Appease valgrind
Rob Clark [Thu, 21 Apr 2022 18:39:08 +0000 (11:39 -0700)]
freedreno/drm/virtio: Appease valgrind

Valgrind isn't seeing that the kernel is initializing the caps (or
returning an error).

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

2 years agofreedreno: Misc indent fixes
Rob Clark [Thu, 21 Apr 2022 18:11:59 +0000 (11:11 -0700)]
freedreno: Misc indent fixes

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

2 years agoglx/kopper: Wire up a way for SwapBuffers to fail
Adam Jackson [Tue, 26 Apr 2022 20:01:20 +0000 (16:01 -0400)]
glx/kopper: Wire up a way for SwapBuffers to fail

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

2 years agozink/kopper: add a mechanism for checking swapchain status
Mike Blumenkrantz [Wed, 27 Apr 2022 13:56:29 +0000 (09:56 -0400)]
zink/kopper: add a mechanism for checking swapchain status

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

2 years agozink: flag swapchain resources as swapchains
Mike Blumenkrantz [Tue, 19 Apr 2022 20:44:02 +0000 (16:44 -0400)]
zink: flag swapchain resources as swapchains

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

2 years agozink: handle swapchain acquire failures more directly
Mike Blumenkrantz [Tue, 19 Apr 2022 14:57:30 +0000 (10:57 -0400)]
zink: handle swapchain acquire failures more directly

if acquire fails, the pending operation cannot be completed, so just
drop it

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

2 years agozink: fix return for zink_kopper_acquire
Mike Blumenkrantz [Tue, 19 Apr 2022 14:51:36 +0000 (10:51 -0400)]
zink: fix return for zink_kopper_acquire

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

2 years agozink: rework swapchain object check for acquires
Mike Blumenkrantz [Tue, 19 Apr 2022 14:06:40 +0000 (10:06 -0400)]
zink: rework swapchain object check for acquires

this is more accurate

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

2 years agozink: unset image layout when killing swapchain
Mike Blumenkrantz [Tue, 19 Apr 2022 14:48:33 +0000 (10:48 -0400)]
zink: unset image layout when killing swapchain

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

2 years agozink: handle dead swapchains in acquire
Mike Blumenkrantz [Tue, 19 Apr 2022 15:21:44 +0000 (11:21 -0400)]
zink: handle dead swapchains in acquire

this is a no-op failure

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

2 years agozink: flag swapchains when updating fails
Mike Blumenkrantz [Tue, 19 Apr 2022 14:50:23 +0000 (10:50 -0400)]
zink: flag swapchains when updating fails

these are dead, they just don't know it yet

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

2 years agozink: add a util function for finding swapchain resource
Mike Blumenkrantz [Tue, 19 Apr 2022 20:35:12 +0000 (16:35 -0400)]
zink: add a util function for finding swapchain resource

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

2 years agodraw: fix double free of NIR IR
Charmaine Lee [Wed, 27 Apr 2022 01:56:32 +0000 (18:56 -0700)]
draw: fix double free of NIR IR

Check the shader IR type first before freeing the NIR IR in
draw_delete_xxx_shader() in case the IR has been converted to TGSI
and the NIR IR has already been freed.

Reviewed-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Neha Bhende <bhenden@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16199>

2 years agoanv: reemit 3DSTATE_STREAMOUT after memcpy
Lionel Landwerlin [Wed, 27 Apr 2022 12:24:28 +0000 (15:24 +0300)]
anv: reemit 3DSTATE_STREAMOUT after memcpy

This doesn't fix anything because memcpy is only used before secondary
buffer execution and we dirty everything after that.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16189>

2 years agoradeon/vcn: skip create and destroy message for jpeg
Sathishkumar S [Wed, 20 Apr 2022 10:35:06 +0000 (16:05 +0530)]
radeon/vcn: skip create and destroy message for jpeg

JPEG does not require create and destroy codec messages.
It is not firmware based, so these messages are redundant.

Signed-off-by: Sathishkumar S <sathishkumar.sundararaju@amd.com>
Reviewed-by: Leo Liu <leo.liu@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16160>

2 years agozink: add supported present modes to kopper displaytarget
Mike Blumenkrantz [Wed, 27 Apr 2022 13:33:32 +0000 (09:33 -0400)]
zink: add supported present modes to kopper displaytarget

for use later

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

2 years agoci: Limit Intel CPU scaling frequency for performance tests
Cristian Ciocaltea [Mon, 25 Apr 2022 11:02:38 +0000 (14:02 +0300)]
ci: Limit Intel CPU scaling frequency for performance tests

As an additional measure to mitigate thermal throttling, set the upper
limit for the CPU scaling frequency to 65% of maximum allowed by the
hardware.

The impact on the overall tests duration should be minimal since the
performance tests do not really put high load on the CPU.

Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
Reviewed-by: Guilherme Gallo <guilherme.gallo@collabora.com>
Acked-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16164>

2 years agoci: Add CPU frequency adjustment capability
Cristian Ciocaltea [Wed, 20 Apr 2022 23:56:40 +0000 (02:56 +0300)]
ci: Add CPU frequency adjustment capability

Update intel-gpu-freq.sh script to offer the possibility to adjust CPU
operating frequencies in addition to GPU.

Note this is currently limited to just setting the maximum scaling
frequency as percentage of the maximum frequency allowed by the
hardware.

Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
Reviewed-by: Guilherme Gallo <guilherme.gallo@collabora.com>
Acked-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16164>

2 years agopanfrost: Fix pack_32_2x16 implementation
Icecream95 [Tue, 26 Apr 2022 22:31:14 +0000 (10:31 +1200)]
panfrost: Fix pack_32_2x16 implementation

Fixes: 6f0eff548c1 ("pan/bi: Implement packing ops between 32-bit vec1 and 16-bit vec2")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16181>

2 years agoradv: use correct push constants range for internal operations
Samuel Pitoiset [Mon, 25 Apr 2022 06:40:28 +0000 (08:40 +0200)]
radv: use correct push constants range for internal operations

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

2 years agov3d/simulator: add support for AMD cards
Juan A. Suarez Romero [Wed, 27 Apr 2022 09:32:00 +0000 (11:32 +0200)]
v3d/simulator: add support for AMD cards

Dumb buffers do not work with AMD gpus. So use AMD ioctl to create
proper buffers.

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

2 years agov3dv: store device_id on device init
Juan A. Suarez Romero [Wed, 27 Apr 2022 09:30:06 +0000 (11:30 +0200)]
v3dv: store device_id on device init

Instead of calling later an ioctl to get the device id, let's store it
while initializing the physical device.

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

2 years agopanvk: Eliminate unused vertex attributes
Jason Ekstrand [Wed, 27 Apr 2022 00:52:28 +0000 (19:52 -0500)]
panvk: Eliminate unused vertex attributes

We use nir_assign_io_var_locations() which compacts the varyings and
eliminates any unused input slots.  We need to do the same thing when
processing pVertexAttributeDescriptions[] or else we'll end up with
mismatches between the shader and the state setup code.

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

2 years agopanvk: Take buffer offsets into account in BindVertexBuffers
Jason Ekstrand [Tue, 26 Apr 2022 22:43:59 +0000 (17:43 -0500)]
panvk: Take buffer offsets into account in BindVertexBuffers

Found by inspection.  No idea what all it fixes.

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

2 years agoci/iris: Enable SKQP on Tiger Lake boards
David Heidelberg [Mon, 18 Apr 2022 14:15:11 +0000 (16:15 +0200)]
ci/iris: Enable SKQP on Tiger Lake boards

 - SKQP gets included now in all amd64 LAVA builds.
 - add test job for Tiger Lake (tgl)
 - add manual test job for Whiskey Lake (whl), because all runners are
   already used
 - document that we have 13 tgl machines

Tests failed (on tgl):
 - gl_simpleaaclip_aaclip, 1 pixel off : https://okias.pages.freedesktop.org/-/mesa/-/jobs/21790629/artifacts///results/gl/report.html

Reviewed-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Signed-off-by: David Heidelberg <david.heidelberg@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16048>

2 years agoci: intel: Merge anv and iris into src/intel/ci
David Heidelberg [Mon, 18 Apr 2022 14:15:11 +0000 (16:15 +0200)]
ci: intel: Merge anv and iris into src/intel/ci

This commit make simple adding tests which use both GL(ES) and VK.

Reviewed-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Signed-off-by: David Heidelberg <david.heidelberg@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16048>

2 years agovulkan: drop empty vulkan_wsi_args
Erik Faye-Lund [Tue, 26 Apr 2022 10:20:07 +0000 (12:20 +0200)]
vulkan: drop empty vulkan_wsi_args

This is always empty, so let's just get rid of it.

Reviewed-by: Alyssa Rosenzweig <alyssa@collabora.com>
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16162>

2 years agovulkan: use c_msvc_compat_args for shared code
Erik Faye-Lund [Tue, 26 Apr 2022 10:10:35 +0000 (12:10 +0200)]
vulkan: use c_msvc_compat_args for shared code

Due to both Lavapipe on Windows and Dozen, we need to support MSVC in
the shared Vulkan code. So let's make sure we compile with the
compatibility flags for it.

Techinically speaking, we also need this in the wsi subdir, because we
also compile wsi_common_win32.c with MSVC. But wsi_common_wayland.c
contains void-pointer arithmetic, causing compiler errors if we do.

Fixing that properly is a bit more involved, because Meson doesn't love
passing different compiler arguments per source-file. The alternative is
to remove the void-pointer arithmetic, but that seems a bit pointless as
this code will never be compiled on MSVC.

So, let's leave that one out for now. We can probably do better in the
future, but this gets us a step further.

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/6386
Reviewed-by: Alyssa Rosenzweig <alyssa@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16162>

2 years agoradv: enable radv_disable_sinking_load_input_fs for Grid Autosport
Samuel Pitoiset [Tue, 26 Apr 2022 12:23:36 +0000 (14:23 +0200)]
radv: enable radv_disable_sinking_load_input_fs for Grid Autosport

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

2 years agoradv: allow to disable sinking of load inputs for FS via drirc
Samuel Pitoiset [Tue, 26 Apr 2022 12:20:56 +0000 (14:20 +0200)]
radv: allow to disable sinking of load inputs for FS via drirc

To workaround game bugs where partial derivatives are used in
non-uniform control flow. A proper solution needs to be implemented,
but as a quick fix disabling nir_opt_sink() works.

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

2 years agoetnaviv: add tile size helper
Lucas Stach [Sun, 10 Apr 2022 11:30:35 +0000 (13:30 +0200)]
etnaviv: add tile size helper

On older GPUs a color tile was always 64 Byte. On new GPUs with
CACHE128B256BPERLINE support the tile size is either 128 Byte or
256 Byte depending on the TS mode. Add a helper to return the
color tile size and use in in places that use hard-coded tile
size values or do their own calculation.

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9255>

2 years agoetnaviv: use feature bit to check for big tile support
Lucas Stach [Sun, 10 Apr 2022 11:14:09 +0000 (13:14 +0200)]
etnaviv: use feature bit to check for big tile support

128B/256B tile support is not a HALTI5 property, but has its own
separate feature bit.

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9255>

2 years agoetnaviv: properly set additional DEC400 compression states
Lucas Stach [Fri, 8 Apr 2022 13:14:39 +0000 (15:14 +0200)]
etnaviv: properly set additional DEC400 compression states

With access to HALTI5 GPUs with and without DEC400 compression it's
obvious that the previous compression state setup only worked when
DEC400 was present. Properly set up the compression state bits.

This is only the second part of the fix, first part is moving the
compression state to the correct bit location, which has already
happened via the import of new rnndb headers.

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9255>

2 years agoetnaviv: add support for big tile RS states
Lucas Stach [Sun, 10 Apr 2022 10:59:34 +0000 (12:59 +0200)]
etnaviv: add support for big tile RS states

On GPUs with the CACHE128B256BPERLINE feature the RS gained some
new state bits to deal with the new additional information required
for this big tile support.

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9255>

2 years agoetnaviv: clean up tiling setup in etna_compile_rs_state
Lucas Stach [Sun, 10 Apr 2022 10:47:21 +0000 (12:47 +0200)]
etnaviv: clean up tiling setup in etna_compile_rs_state

Using the raw layout bits in the tiling setup makes this function harder
to read than necessary. Use the tiling bit defines and assign them to
some local bools with a proper name to make this easier to read.

No functional change.

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9255>

2 years agoetnaviv: use feature bit for one const src per instuction limitation
Lucas Stach [Sat, 9 Apr 2022 17:00:12 +0000 (19:00 +0200)]
etnaviv: use feature bit for one const src per instuction limitation

Support for multiple constant sources per instruction is not a HALTI5
capability, there is a separate feature bit to signal the availability
of this shader core enhancement.

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9255>

2 years agoetnaviv: use feature flag to determine which RS states to use
Lucas Stach [Wed, 20 Jan 2021 12:39:05 +0000 (13:39 +0100)]
etnaviv: use feature flag to determine which RS states to use

We used the number of pipes to determine which state registers to use
for the RS pipe address configuration, as the dual pipe GPUs were the
first one where the new states were used. This isn't correct though,
as now there are single pipe GPUs which also use the new state
addresses.
There actually is a feature flag telling us to use the new RS pipe
address states, use it. As this feature flag is not available on early
GPUs using the new base address (mostly because we don't have HWDB
entries for them), still check for more than a single pipe as an
additional clue to use new states.

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9255>

2 years agoetnaviv: use new PE pipe address states on >= HALTI0
Lucas Stach [Wed, 20 Jan 2021 12:51:41 +0000 (13:51 +0100)]
etnaviv: use new PE pipe address states on >= HALTI0

We used the number of pipes to determine which state registers to use
for the PE pipe address configuration, as the dual pipe GPUs were the
first one where those new states were used. Now there are some new
single pipe GPUs where this logic breaks. HALTI0 added the new PE
address states and all GPUs with at least this feature level are using
the new states exclusively, even if they only have a single PE pipe.

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9255>

2 years agoetnaviv: correct bits per tile and clear value for HALTI5
Lucas Stach [Thu, 21 Jan 2021 14:56:18 +0000 (15:56 +0100)]
etnaviv: correct bits per tile and clear value for HALTI5

Bits per tile and the tile clear value are not determined by the
HALTI version, but by two separate feature bits that are not always
present on HALTI5 GPUs. With big 128B/256B tile support the bits
per tile are always 4.

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9255>

2 years agoetnaviv: update headers from rnndb
Lucas Stach [Sat, 9 Apr 2022 21:14:16 +0000 (23:14 +0200)]
etnaviv: update headers from rnndb

Update to rnndb commit ad665b720421.

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9255>

2 years agoetnaviv: fill all minor GPU features from the kernel
Lucas Stach [Wed, 20 Jan 2021 11:58:53 +0000 (12:58 +0100)]
etnaviv: fill all minor GPU features from the kernel

The kernel exposes more minor GPU feature registers. Fill them
all into our internal feature struct.

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9255>

2 years agoetnaviv: don't supertile textures if supertiling is disabled via debug option
Lucas Stach [Thu, 21 Jan 2021 14:50:38 +0000 (15:50 +0100)]
etnaviv: don't supertile textures if supertiling is disabled via debug option

The debug option only disables the general can_supertile spec of the GPU, so
we should also take this into account when deciding about the layout of a
sampler resource.

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9255>

2 years agoradv: fix handling divisor == 0 with dynamic vertex input state
Samuel Pitoiset [Mon, 18 Apr 2022 12:46:09 +0000 (14:46 +0200)]
radv: fix handling divisor == 0 with dynamic vertex input state

When the divisor is 0, the compiler should generate a different VS
prolog instead of re-using a previous prolog that uses nontrivial
divisors. This is because divisor == 0 and divisor > 1 should use
a different path to guarantee that the index is correctly computed.

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

2 years agor600: Add support for TGSI_OPCODE_ATOMIMIN and IMAX
Gert Wollny [Mon, 25 Apr 2022 06:41:47 +0000 (08:41 +0200)]
r600: Add support for TGSI_OPCODE_ATOMIMIN and IMAX

With NTT these opcodes are now emitted and need to be handled.

Fixes: a4840e15ab77b44a72cabd7d503172e8357477eb
   r600: Use nir-to-tgsi instead of TGSI when the NIR debug opt is disabled.

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16130>

2 years agor600: tune nir options
Gert Wollny [Sun, 24 Apr 2022 12:25:45 +0000 (14:25 +0200)]
r600: tune nir options

* Don't lower fp64 to software when on Cayman but
* lower fpow only when on native NIR, the TGSI backend handles
  TGSI_OPCODE_POW

Fixes: a4840e15ab77b44a72cabd7d503172e8357477eb
  r600: Use nir-to-tgsi instead of TGSI when the NIR debug opt is disabled.

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16130>

2 years agor600/sb: Don't optimize float GT and GE
Gert Wollny [Sun, 24 Apr 2022 11:24:44 +0000 (13:24 +0200)]
r600/sb: Don't optimize float GT and GE

Sine NAN's can be involved the result can't be deducted like this.
Also with NTT inplace now we can assume that most possible
arithmetic optimizations have already been applied.

Piglit: spec@glsl-1.30@execution@range_analysis_fsat_of_nan

Fixes: a4840e15ab77b44a72cabd7d503172e8357477eb
  r600: Use nir-to-tgsi instead of TGSI when the NIR debug opt is disabled.

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16130>

2 years agontt: remove dead input variables before lowering FS IO
Gert Wollny [Sun, 24 Apr 2022 15:03:42 +0000 (17:03 +0200)]
ntt: remove dead input variables before lowering FS IO

Because for fragment shaders we still use the variables, and
lower_io_to_vector may leave dead variables that duplicate inputs
that are now vectorized, we have to call this pass, because otherwise
we will may hit the assertion

src/gallium/auxiliary/tgsi/tgsi_ureg.c:318:
  ureg_DECL_fs_input_centroid_layout:
   Assertion `(ureg->input[i].usage_mask & usage_mask) == 0'

This is relevant for
  spec@arb_enhanced_layouts@execution@component-layout@*
on r600/ntt

Fixes: a4840e15ab77b44a72cabd7d503172e8357477eb
  r600: Use nir-to-tgsi instead of TGSI when the NIR debug opt is disabled

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16130>

2 years agonir: Don't optimize to 64 bit fsub if the driver doesn't support it
Gert Wollny [Sun, 24 Apr 2022 12:25:01 +0000 (14:25 +0200)]
nir: Don't optimize to 64 bit fsub if the driver doesn't support it

Fixes: a4840e15ab77b44a72cabd7d503172e8357477eb
  r600: Use nir-to-tgsi instead of TGSI when the NIR debug opt is disabled.

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16130>

2 years agovenus: flush when batched draw calls reach a threshold
Yiwei Zhang [Tue, 26 Apr 2022 19:25:54 +0000 (19:25 +0000)]
venus: flush when batched draw calls reach a threshold

Add VN_DRAW_CMD_BATCH_LIMIT option

e.g. for Android
adb shell setprop mesa.vn.draw.cmd.batch.limit 100

Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16110>

2 years agovenus: refactor vn_cmd_submit
Yiwei Zhang [Tue, 26 Apr 2022 18:10:05 +0000 (18:10 +0000)]
venus: refactor vn_cmd_submit

The caller checks cmd->state instead.

Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16110>

2 years agovenus: add VN_PERF option no_async_queue_submit
Yiwei Zhang [Fri, 22 Apr 2022 22:06:23 +0000 (22:06 +0000)]
venus: add VN_PERF option no_async_queue_submit

Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16110>

2 years agovenus: add VN_PERF option no_async_buffer_create
Yiwei Zhang [Fri, 22 Apr 2022 21:47:38 +0000 (21:47 +0000)]
venus: add VN_PERF option no_async_buffer_create

Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16110>