platform/upstream/mesa.git
3 years agov3d: do not report alpha-test as supported
Erik Faye-Lund [Mon, 7 Oct 2019 10:18:09 +0000 (12:18 +0200)]
v3d: do not report alpha-test as supported

This triggers lowering in the state-tracker, which makes things a bit
simpler.

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

3 years agoci: Add jobs running ci-fairy checks
Michel Dänzer [Thu, 6 Aug 2020 15:37:33 +0000 (17:37 +0200)]
ci: Add jobs running ci-fairy checks

These can catch various common issues in MR settings and Git commit
logs.

The "check mr" job only exists in pre-merge pipelines for MRs, and runs
automatically.

The "check commits" job only exists in pre-merge pipelines for MRs and
in pipelines for forked branches. It runs automatically in the former
case and can be manually triggered in the latter.

v2:
* Use git_archive docker image (Daniel Stone)
* Use a single sanity stage for both jobs (Tomeu Vizoso)

Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6209>

3 years agoci: Add empty needs: to pages job
Michel Dänzer [Thu, 6 Aug 2020 15:12:11 +0000 (17:12 +0200)]
ci: Add empty needs: to pages job

So it doesn't need to wait for jobs in earlier stages.

Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6209>

3 years agoci: Move test-docs job to deploy stage
Michel Dänzer [Thu, 6 Aug 2020 15:10:08 +0000 (17:10 +0200)]
ci: Move test-docs job to deploy stage

We put it in the first container stage to prevent it from waiting for
jobs in previous stages, but empty needs: works for that as well.

Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6209>

3 years agost/mesa: make sure prog->info is up to date for NIR (v2)
Marek Olšák [Mon, 28 Sep 2020 22:18:43 +0000 (18:18 -0400)]
st/mesa: make sure prog->info is up to date for NIR (v2)

so that info changes from pipe_screem::finalize_nir are reflected
in gl_program

v2: don't call nir_shader_gather_info again, because it crashes with freedreno

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

3 years agoRevert "st/mesa: don't pass NIR to draw module if IO is lowered"
Marek Olšák [Mon, 28 Sep 2020 17:12:14 +0000 (13:12 -0400)]
Revert "st/mesa: don't pass NIR to draw module if IO is lowered"

This reverts commit 493fdcf44647ee471e934de3e63d193c6a3b6ff0.

The lowered IO support has been added to Draw recently:
    https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6698

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

3 years agonir: consider load_color intrinsics as both inputs and sysval in gathering
Marek Olšák [Tue, 29 Sep 2020 01:09:40 +0000 (21:09 -0400)]
nir: consider load_color intrinsics as both inputs and sysval in gathering

src/mesa expects this somewhere.

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

3 years agoamd: update addrlib
Marek Olšák [Fri, 16 Oct 2020 12:14:11 +0000 (08:14 -0400)]
amd: update addrlib

All Mesa-specific includes and definitions have been moved to addrcommon.h.

Instead of suppressing warnings in the code, they are suppressed
in meson.build.

Acked-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7188>

3 years agoglx: Move glXGet{ScreenDriver,DriverConfig} to common code
Adam Jackson [Fri, 16 Oct 2020 21:32:25 +0000 (17:32 -0400)]
glx: Move glXGet{ScreenDriver,DriverConfig} to common code

These no longer reference anything specific to a particular DRI
protocol.

Reviewed-by: Michel Dänzer <mdaenzer@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7219>

3 years agoglx: Delegate the core of glXGetScreenDriver to the GLX screen vtable
Adam Jackson [Fri, 16 Oct 2020 21:18:18 +0000 (17:18 -0400)]
glx: Delegate the core of glXGetScreenDriver to the GLX screen vtable

This is a minor bugfix, in that the prior code required that the server
expose either XFree86-DRI or DRI2 to get the name; Xwayland exposed
neither, just DRI3. Now, for DRI2 and DRI3, we just ask the loader. It
also means we report "swrast" for the driver name when that's what we're
using, which is probably a good thing.

v2: Trust the driver name from the server for DRI2 (Michel Dänzer)

Reviewed-by: Michel Dänzer <mdaenzer@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7219>

3 years agoglx: move __glXGetUST into the DRI1 code
Adam Jackson [Fri, 16 Oct 2020 20:17:54 +0000 (16:17 -0400)]
glx: move __glXGetUST into the DRI1 code

This is only used from the __DRI_SYSTEM_TIME loader extension, which
only the DRI1 drivers ever looked for.

Reviewed-by: Michel Dänzer <mdaenzer@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7219>

3 years agoradv,aco: fix use of texop_samples_identical in the resolve meta path
Samuel Pitoiset [Tue, 20 Oct 2020 14:56:29 +0000 (16:56 +0200)]
radv,aco: fix use of texop_samples_identical in the resolve meta path

The return value of this texture intrinsic should be a NIR 1-bit bool.

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/7236>

3 years agoac/nir: do not sign-extend the result of texop_samples_identical
Samuel Pitoiset [Tue, 20 Oct 2020 14:54:45 +0000 (16:54 +0200)]
ac/nir: do not sign-extend the result of texop_samples_identical

The return value should be a NIR 1-bit bool.

This fixes a regression with piglit
ext_shader_samples_identical-simple-fs 2 on RadeonSI.

Fixes: e690a1b78bf ("ac/llvm: don't lower bool to int32, switch to native i1 bool")
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7236>

3 years agodocs/features: add v3dv driver
Alejandro Piñeiro [Wed, 14 Oct 2020 07:48:44 +0000 (09:48 +0200)]
docs/features: add v3dv driver

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

3 years agofrontends/va/postproc: Un-break field flag
Thong Thai [Thu, 15 Oct 2020 19:32:47 +0000 (15:32 -0400)]
frontends/va/postproc: Un-break field flag

Fixes an issue where deinterlaced videos would play at half the
framerate, since only one field was repeated, instead of using both
fields. Reverts a change I made previously which broke this.

Fixes: 78786a219ea ("frontends/va: Fix deinterlace bottom field first flag")
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3621
Signed-off-by: Thong Thai <thong.thai@amd.com>
Reviewed-by: Leo Liu <leo.liu@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7194>

3 years agoaco/isel: Miscellaneous cleanups using the new Stage API
Tony Wasserka [Tue, 6 Oct 2020 20:52:02 +0000 (22:52 +0200)]
aco/isel: Miscellaneous cleanups using the new Stage API

Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Acked-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7094>

3 years agoaco: Clean up symbol names and comments related to NGG
Tony Wasserka [Wed, 7 Oct 2020 16:21:48 +0000 (18:21 +0200)]
aco: Clean up symbol names and comments related to NGG

Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Acked-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7094>

3 years agoaco: Use strong typing to model SW<->HW stage mappings
Tony Wasserka [Mon, 5 Oct 2020 15:50:37 +0000 (17:50 +0200)]
aco: Use strong typing to model SW<->HW stage mappings

Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Acked-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7094>

3 years agonir: Only validate in passes that might have changed things.
Eric Anholt [Tue, 20 Oct 2020 20:43:03 +0000 (13:43 -0700)]
nir: Only validate in passes that might have changed things.

If a pass returning boolean progress reports no change, we shouldn't need
to re-validate.  If a pass breaks the NIR but also fails to report
progress correctly, it would be up to the next pass to catch that.

This should hopefully help with test timeouts on
KHR-GL33.texture_swizzle.functional since switching softpipe to
nir-to-tgsi and enabling NIR validation in CI (27s to 20s on my system).

Suggested-by: Rob Clark <robdclark@chromium.org>
Reviewed-by: Rob Clark <robdclark@chromium.org>
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7239>

3 years agoglsl: relax rule on varying matching for shaders older than 4.00
Timothy Arceri [Fri, 16 Oct 2020 08:26:51 +0000 (19:26 +1100)]
glsl: relax rule on varying matching for shaders older than 4.00

Please see new code commment for full justification.

Fixes: 18004c338f6b ("glsl: fail when a shader's input var has not an equivalent out var in previous")

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3648

Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7184>

3 years agopanfrost: Only enable occlusion queries when active
Icecream95 [Wed, 14 Oct 2020 11:08:36 +0000 (00:08 +1300)]
panfrost: Only enable occlusion queries when active

Fixes piglit tests:
 - occlusion_query_meta_fragments
 - occlusion_query_meta_save

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

3 years agopanfrost: Precise occlusion query support
Icecream95 [Fri, 9 Oct 2020 07:01:16 +0000 (20:01 +1300)]
panfrost: Precise occlusion query support

In the "counter" occlusion query mode, each shader core has a separate
counter.

When MSAA is disabled, counter values need to be divided by four.

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

3 years agost/mesa: Drop the TGSI paths for drawpixels and use nir-to-tgsi if needed.
Eric Anholt [Wed, 26 Aug 2020 19:51:15 +0000 (12:51 -0700)]
st/mesa: Drop the TGSI paths for drawpixels and use nir-to-tgsi if needed.

Now that we have a NIR translator in gallium, we can drop this duplicated
code in the API implementation.

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

3 years agost/mesa: Drop the TGSI paths for PBOs and use nir-to-tgsi if needed.
Eric Anholt [Wed, 26 Aug 2020 19:42:36 +0000 (12:42 -0700)]
st/mesa: Drop the TGSI paths for PBOs and use nir-to-tgsi if needed.

Now that we have a NIR translator in gallium, we can drop this duplicated
code in the API implementation.

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

3 years agogallium/ntt: Add default compiler options for non-native-NIR drivers.
Eric Anholt [Wed, 26 Aug 2020 19:14:42 +0000 (12:14 -0700)]
gallium/ntt: Add default compiler options for non-native-NIR drivers.

For using NIR internally in mesa/st, we need some compiler options.  This
is the options wrote for softpipe, which should be enough for whatever NTT
we do.

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

3 years agov3dv: Fix assert using assign instead of compare.
Vinson Lee [Thu, 15 Oct 2020 00:20:14 +0000 (17:20 -0700)]
v3dv: Fix assert using assign instead of compare.

Fix defect reported by Coverity Scan.

Assign instead of compare (PW.ASSIGN_WHERE_COMPARE_MEANT)
assign_where_compare_meant: use of "=" where "==" may have been intended

Fixes: ca86c7c65a82 ("v3dv: assert command buffers are executable when submitting to a queue")
Signed-off-by: Vinson Lee <vlee@freedesktop.org>
Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7156>

3 years agoradv: Advertise VK_KHR_shader_terminate_invocation.
Bas Nieuwenhuizen [Fri, 18 Sep 2020 01:11:18 +0000 (03:11 +0200)]
radv: Advertise VK_KHR_shader_terminate_invocation.

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

3 years agoamd/llvm: Add VK_KHR_shader_terminate_invocation support.
Bas Nieuwenhuizen [Fri, 18 Sep 2020 01:09:19 +0000 (03:09 +0200)]
amd/llvm: Add VK_KHR_shader_terminate_invocation support.

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

3 years agoaco: Add VK_KHR_shader_terminate_invocation support.
Bas Nieuwenhuizen [Fri, 18 Sep 2020 01:08:43 +0000 (03:08 +0200)]
aco: Add VK_KHR_shader_terminate_invocation support.

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

3 years agoci: Enable Werror on meson-arm64-build-test.
Eric Anholt [Mon, 19 Oct 2020 18:54:24 +0000 (11:54 -0700)]
ci: Enable Werror on meson-arm64-build-test.

I found that it was warnings-clean already, let's make sure it stays that
way.

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

3 years agoturnip: Add error path handling for descriptor pool init.
Eric Anholt [Mon, 19 Oct 2020 19:17:38 +0000 (12:17 -0700)]
turnip: Add error path handling for descriptor pool init.

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

3 years agoturnip: Handle the error path for tu/drm's vkResetFences().
Eric Anholt [Mon, 19 Oct 2020 19:14:26 +0000 (12:14 -0700)]
turnip: Handle the error path for tu/drm's vkResetFences().

OUT_OF_MEMORY is the only valid error code from this function, but this
error is more of a "things went horribly wrong, you can't talk to the GPU"
case.  Set the device to be in error.

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

3 years agoturnip: Handle some error paths in allocating CS space from a command buffer.
Eric Anholt [Mon, 19 Oct 2020 19:03:33 +0000 (12:03 -0700)]
turnip: Handle some error paths in allocating CS space from a command buffer.

Fixes some release-build warnings.

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

3 years agofreedreno/fdperf: Silence a compiler warning about current counter.
Eric Anholt [Mon, 19 Oct 2020 18:56:17 +0000 (11:56 -0700)]
freedreno/fdperf: Silence a compiler warning about current counter.

It seems like selecting the first here is a fine choice if we can't
find the counter.

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

3 years agofreedreno/tools: Fix compiler warnings about using sz in the error paths.
Eric Anholt [Mon, 19 Oct 2020 18:46:43 +0000 (11:46 -0700)]
freedreno/tools: Fix compiler warnings about using sz in the error paths.

If we don't check for a NULL str, then sz might be undefined (as was
happening in the match_compatible path, and returning 0 makes us not match
as we should).

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

3 years agofreedreno/cffdec: Fix format overflow warning.
Eric Anholt [Mon, 19 Oct 2020 18:41:57 +0000 (11:41 -0700)]
freedreno/cffdec: Fix format overflow warning.

../src/freedreno/decode/cffdec.c: In function ‘reg_disasm_gpuaddr’:
../src/freedreno/decode/cffdec.c:404:29: error: ‘sprintf’ writing a
terminating nul past the end of the destination [-Werror=format-overflow=]
  404 |   sprintf(filename, "%04d.%s", n++, ext);
../src/freedreno/decode/cffdec.c:404:3: note: ‘sprintf’ output between
9 and 16 bytes into a destination of size 8
  404 |   sprintf(filename, "%04d.%s", n++, ext);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

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

3 years agollvmpipe: enable CL images
Karol Herbst [Sun, 11 Oct 2020 21:17:20 +0000 (23:17 +0200)]
llvmpipe: enable CL images

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

3 years agollvmpipe: fix sampler/image binding for clover.
Dave Airlie [Sun, 11 Oct 2020 23:45:40 +0000 (09:45 +1000)]
llvmpipe: fix sampler/image binding for clover.

Clover uses these APIs a bit different, avoid crashes

Reviewed-by: Francisco Jerez <currojerez@riseup.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7069>

3 years agonvc0/CL: enable images
Karol Herbst [Thu, 8 Oct 2020 11:18:07 +0000 (13:18 +0200)]
nvc0/CL: enable images

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

3 years agonouveau: hide SVM support behing a variable for now as kernel space is broken
Karol Herbst [Sat, 15 Aug 2020 10:57:03 +0000 (12:57 +0200)]
nouveau: hide SVM support behing a variable for now as kernel space is broken

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

3 years agoclover/nir: set kernel_image cap
Karol Herbst [Thu, 8 Oct 2020 11:20:16 +0000 (13:20 +0200)]
clover/nir: set kernel_image cap

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Francisco Jerez <currojerez@riseup.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7069>

3 years agoclover/nir: Add an image lowering pass
Jason Ekstrand [Mon, 31 Aug 2020 23:09:44 +0000 (18:09 -0500)]
clover/nir: Add an image lowering pass

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

3 years agoclover/nir: Calculate sizes of images and samplers properly
Jason Ekstrand [Wed, 2 Sep 2020 23:19:35 +0000 (18:19 -0500)]
clover/nir: Calculate sizes of images and samplers properly

Clover uses very specific sizes and alignments for images and samplers
to pass various bits of data.  We need to add a new size/align helper
for inputs which matches the standard CL size/align for most types but
also has the right size/align for images and samplers.

v2 (Karol): use sizeof(cl_mem) instead of 8 to fix 32 bit runtimes.

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

3 years agoclover/device: use PIPE_MAX_SHADER_SAMPLER_VIEWS for max_images_read
Karol Herbst [Thu, 15 Oct 2020 14:31:10 +0000 (16:31 +0200)]
clover/device: use PIPE_MAX_SHADER_SAMPLER_VIEWS for max_images_read

Read images are really just normal textures and OpenCL requires 128 anyway.

Reviewed-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Francisco Jerez <currojerez@riseup.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7069>

3 years agoclover: clCreateImage: calculate image row_pitch and slice_pitch when not provided
Serge Martin [Sun, 11 Oct 2020 18:12:12 +0000 (20:12 +0200)]
clover: clCreateImage: calculate image row_pitch and slice_pitch when not provided

Reviewed-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Reviewed-by: Francisco Jerez <currojerez@riseup.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7069>

3 years agoclover: support custom driver strides
Karol Herbst [Wed, 14 Oct 2020 23:19:57 +0000 (01:19 +0200)]
clover: support custom driver strides

This is required by llvmpipe as it sets explicit strides on buffers and
textures.

Reviewed-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Francisco Jerez <currojerez@riseup.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7069>

3 years agoclover: validate image_row_pitch and image_slice_pitch in clEnqueueMapImage
Serge Martin [Sun, 11 Oct 2020 20:24:26 +0000 (22:24 +0200)]
clover: validate image_row_pitch and image_slice_pitch in clEnqueueMapImage

v2 (Karol Herbst): remove filling values as it was incorrect.

Reviewed-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Reviewed-by: Francisco Jerez <currojerez@riseup.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7069>

3 years agoclover: Fix incorrect error check in clGetSupportedImageFormats
Aaron Watry [Wed, 6 Nov 2019 04:26:58 +0000 (22:26 -0600)]
clover: Fix incorrect error check in clGetSupportedImageFormats

From CL1.2 Section 5.3.2:
  returns CL_INVALID_VALUE ... if num_entries is 0 and image_formats is not NULL.

We were checking the num_image_formats param, not num_entries.

Signed-off-by: Aaron Watry <awatry@gmail.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Reviewed-by: Francisco Jerez <currojerez@riseup.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7069>

3 years agoclover: use pipe_image_view for images instead of set_compute_resources
Karol Herbst [Wed, 7 Oct 2020 21:08:43 +0000 (23:08 +0200)]
clover: use pipe_image_view for images instead of set_compute_resources

Long term we want to git rid of set_compute_resources, this is just one
piece. The other bit would be to use the proper const buffer interfaces,
but because that path is only hit with r600/radeonsi I won't touch it.

Reviewed-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Francisco Jerez <currojerez@riseup.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7069>

3 years agocompiler/types: Allow images and samplers in get_explicit_type_for_size_align
Jason Ekstrand [Tue, 6 Oct 2020 17:40:45 +0000 (12:40 -0500)]
compiler/types: Allow images and samplers in get_explicit_type_for_size_align

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

3 years agocompiler/types: Assert non-zero alignments in get_explicit_type_for_size_align
Jason Ekstrand [Thu, 8 Oct 2020 07:14:47 +0000 (02:14 -0500)]
compiler/types: Assert non-zero alignments in get_explicit_type_for_size_align

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

3 years agonir/lower_io: Assert non-zero power-of-two alignments
Jason Ekstrand [Thu, 8 Oct 2020 07:27:24 +0000 (02:27 -0500)]
nir/lower_io: Assert non-zero power-of-two alignments

The way the ALIGN_POT macro works, an alignment of 0 may cause
ALIGN_POT(x, 0) to return 0 for any x.  Throw in an assert to guard
against this case.

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

3 years agospirv: Add 0.5 to integer coordinates for OpImageSampleExplicitLod
Jason Ekstrand [Tue, 1 Sep 2020 00:33:51 +0000 (19:33 -0500)]
spirv: Add 0.5 to integer coordinates for OpImageSampleExplicitLod

Just casting to a float is insufficient because that gives us the upper-left corner
of the texel rather than the center.

Fixes: 701cb9d60c03 "nir/vtn: Handle integer sampling coordinates"

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

3 years agoanv,iris: Use the data cache for UBO pulls on Gen12+
Jason Ekstrand [Tue, 20 Oct 2020 03:36:07 +0000 (22:36 -0500)]
anv,iris: Use the data cache for UBO pulls on Gen12+

Now that we have the HDC, using the data cache for UBO pulls seems to
help things quite a bit:

    GTA V DXVK              104.0%
    Talos Principle GL      102.8%
    Rise of Tomb Raider VK  102.8%
    Dark Souls 3 DXVK       101.4%
    Witcher3 DXVK           101.3%
    Bioshock Infinite GL    100.5%
    Doom 2016 VK            97.7%

Doom is a bit of a loss but it helps enough other stuff, it's probably
worth the hit.

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

3 years agoiris: Flush caches based on brw_compiler::indirect_ubos_use_sampler
Jason Ekstrand [Tue, 20 Oct 2020 03:33:05 +0000 (22:33 -0500)]
iris: Flush caches based on brw_compiler::indirect_ubos_use_sampler

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

3 years agoandroid: gallium/auxiliary: Deduplicate nir_to_tgsi.c inclusion
Marijn Suijten [Tue, 20 Oct 2020 18:00:18 +0000 (20:00 +0200)]
android: gallium/auxiliary: Deduplicate nir_to_tgsi.c inclusion

Both commits add nir_to_tgsi.c to a different variable, causing a
build-time error when compiling in an AOSP tree:

    build/make/core/binary.mk:970: error: overriding commands for target `..../obj/STATIC_LIBRARIES/libmesa_gallium_intermediates/nir/nir_to_tgsi.o', previously defined at build/make/core/binary.mk:970

Move all sources into NIR_SOURCES to resolve this issue.

Fixes: d0f8fe59091 ("softpipe: Switch to using NIR as the shader format from mesa/st.")
Fixes: 34cc6a804ec ("gallium: Add a nir-to-TGSI pass.")

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

3 years agodocs: Document how to build and install Android drivers.
Eric Anholt [Fri, 16 Oct 2020 22:50:40 +0000 (15:50 -0700)]
docs: Document how to build and install Android drivers.

This is what I've been using so far.

Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7227>

3 years agomeson: Don't enable libunwind by in 'auto' mode on Android.
Eric Anholt [Mon, 19 Oct 2020 20:47:58 +0000 (13:47 -0700)]
meson: Don't enable libunwind by in 'auto' mode on Android.

On Android we're expected to use their backtrace library.

Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7227>

3 years agomeson: Don't try to build GLX by default on Android.
Eric Anholt [Mon, 19 Oct 2020 20:46:11 +0000 (13:46 -0700)]
meson: Don't try to build GLX by default on Android.

Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7227>

3 years agofreedreno: Use Android's libsync instead of libdrm's.
Eric Anholt [Mon, 19 Oct 2020 21:19:27 +0000 (14:19 -0700)]
freedreno: Use Android's libsync instead of libdrm's.

This should be equivalent, given that we only support the DRM backend so
far, but we'll want to have the compatibility for future KGSL freedreno.

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

3 years agomeson: Only require libexpat when a part of the build needs it.
Eric Anholt [Mon, 19 Oct 2020 19:28:17 +0000 (12:28 -0700)]
meson: Only require libexpat when a part of the build needs it.

Now that xmlconfig can be built without libexpat on Android, we can make
android builds not require the presence of libexpat for many drivers.

Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7223>

3 years agomeson.build: xxf86vm is not needed for -Dglx-direct=false
Michael Olbrich [Sun, 8 Sep 2019 11:14:40 +0000 (13:14 +0200)]
meson.build: xxf86vm is not needed for -Dglx-direct=false

It is only used in src/glx/glxcmds.c and when GLX_DIRECT_RENDERING is
defined.
So only depend on it if GLX direct rendering is actually enabled.

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

3 years agosoftpipe: Switch to using NIR as the shader format from mesa/st.
Eric Anholt [Wed, 1 Jan 2020 00:20:52 +0000 (16:20 -0800)]
softpipe: Switch to using NIR as the shader format from mesa/st.

This causes our TGSI to use far more temps, since NTT is currently not
releasing temps from registers.  On the other hand, this interpreter is
already spectacularly slow, and if we wanted to go fast we should probably
write a scalar NIR intrepeter.

For now, using NTT means that we test that codepath in preparation for
switching TGSI-consuming HW drivers over, so that we can eventually
garbage collect st_glsl_to_tgsi.

As this is a major restructuring, there are some impacts on piglit:

- Several tests start assert failing about 64-bit NIR registers for temp
  arrays not getting split to vec2s:
  - fs-frexp-dvec4-variable-index.shader_test
  - arb_gpu_shader_fp64/uniform_buffers/{vs,fs,gs}-array-copy.shader_test
  - arb_gpu_shader_int64/execution/indirect-array-two-accesses.shader_test
- dEQP-GLES31.functional.primitive_bounding_box.wide_points.global_state.vertex_geometry_fragment.fbo_bbox_larger
  starts crashing depending on various bits of state (previous tests run
  before it, presence of valgrind, presence of glib's memcheck).  Doesn't
  seem really NTT-specific, added to flakes list with other GS flakes.
- Almost 200 fp64/int64-related tests start passing, mostly around i/o loayout.

shader-db:
total instructions in shared programs: 3492656 -> 3081674 (-11.77%)
total loops in shared programs: 1418 -> 1387 (-2.19%)
total temps in shared programs: 340041 -> 615527 (81.02%)
total const in shared programs: 3158970 -> 1528630 (-51.61%)
total imm in shared programs: 117586 -> 101349 (-13.81%)
Total CPU time (seconds): 430.36 -> 900.94 (109.35%)

FPS results:
glmark2 texture               +7.32484% +/- 3.76528% (n=10)
glmark2 desktop:effect=shadow +20%      +/- 0% (n=10)
glmark2 shadow                +6.49351% +/- 3.65335% (n=7)
glmark2 conditionals          +18.75%   +/- 2.74658% (n=9)

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

3 years agosoftpipe: Fix buffer overflows in SSBO atomics.
Eric Anholt [Wed, 26 Aug 2020 03:58:27 +0000 (20:58 -0700)]
softpipe: Fix buffer overflows in SSBO atomics.

SSBO atomics are always to the .x channel, but we were doing reads on
.xyzw and writes to whatever the writemask was.

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

3 years agogallium: Add a nir-to-TGSI pass.
Eric Anholt [Wed, 5 Nov 2014 20:41:08 +0000 (12:41 -0800)]
gallium: Add a nir-to-TGSI pass.

The goal is to replace glsl_to_tgsi.cpp and its supporting code (~10k
LOC).  This code ends up being smaller because NIR has many lowering
passes that help it map better to TGSI than GLSL IR does.

As a benefit, this brings NIR optimizations to TGSI-only drivers.
Many of the softpipe shaders I've looked at end up being significantly
shorter.  Some potentially relevant changes to TGSI consumers:

- All immediates are now UINT typed.  This means they're less legible
  in printouts, but means that they get deduplicated better (no more
  multiple copies of 0x0!)
- Sampler views are not currently declared.
- nir_registers don't have their live ranges tracked, so TGSI temp usage
  may go up with a lot of control flow.
- nir_lower_vec_to_mov naively inserts movs instead of trying to coalesce
  the movs with the generators of the ssa values, sometimes increasing
  instruction count.

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

3 years agonir: Add an option to not lower source mods for f64/u64/i64.
Eric Anholt [Fri, 24 Jul 2020 22:13:40 +0000 (15:13 -0700)]
nir: Add an option to not lower source mods for f64/u64/i64.

TGSI can't handle them, but we want to use this pass for nir-to-tgsi.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3395>

3 years agonir: Add a call to get a struct describing SSA liveness per instruction.
Eric Anholt [Wed, 22 Jul 2020 16:06:48 +0000 (09:06 -0700)]
nir: Add a call to get a struct describing SSA liveness per instruction.

nir-to-tgsi will use this to release release temporaries for SSA storage
back to ureg's linear register allocation once they're dead.

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

3 years agonir: Add a block start/end ip to live instr index metadata.
Eric Anholt [Wed, 14 Oct 2020 19:11:20 +0000 (12:11 -0700)]
nir: Add a block start/end ip to live instr index metadata.

I wanted it for the per-instruction live intervals metadata, and it's not
much to store in general.  Make the ip explicitly 32-bit, on suggestion by
jekstrand.

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

3 years agonir: Replace nir_ssa_def->live_index with nir_instr->index.
Eric Anholt [Tue, 29 Sep 2020 22:44:57 +0000 (15:44 -0700)]
nir: Replace nir_ssa_def->live_index with nir_instr->index.

live_index had two things going on: 0 meant the instr was an undef and
always dead, and otherwise ssa defs had increasing numbers by instruction
order.  We already have a field in the instruction for storing instruction
order, and ssa defs don't need that number to be contiguous (if you want a
compact per-ssa-def number, use ssa->index after reindexing).

We don't use ssa->index for this, because reindexing those would change
nir_print, and that would be rude to people trying to track what's
happening in optimization passes.

This openend up a hole in nir_ssa_def, so we move nir_ssa_def->index
toward the end to shrink the struct from 64 bytes to 56.

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

3 years agonir: Introduce nir_metadata_instr_index for nir_index_instr() being current.
Eric Anholt [Tue, 29 Sep 2020 22:33:39 +0000 (15:33 -0700)]
nir: Introduce nir_metadata_instr_index for nir_index_instr() being current.

This will be useful to remove the live_index field from nir_ssa_def.

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

3 years agoci: Enable NIR_VALIDATE everywhere.
Eric Anholt [Sat, 17 Oct 2020 00:20:11 +0000 (17:20 -0700)]
ci: Enable NIR_VALIDATE everywhere.

I wasted a bunch of time today tracking down a spurious test results
change due to a driver invoking UB by running tests where NIR validation
had failed (instruction reading from components beyond vector size).  If
we need to shrink our coverage to get runtimes down, it will still be
better to be catching validation errors in CI.

To keep the test jobs runtime under 10 minutes, I've split a530's gles2 to
two different jobs.

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

3 years agoradv: move all NIR pass outside of ACO
Samuel Pitoiset [Thu, 8 Oct 2020 06:11:30 +0000 (08:11 +0200)]
radv: move all NIR pass outside of ACO

This has several advantages:
- it generates roughly the same NIR for both compiler backends
  (this might help for debugging purposes)
- it might allow to move around some NIR pass to improve compile time
- it might help for RadeonSI support
- it improves fossils-db stats for RADV/LLVM (this shouldn't matter
  much but it's a win for free)

fossil-db (Navi/LLVM):
Totals from 80732 (59.18% of 136420) affected shaders:
SGPRs: 5390036 -> 5382843 (-0.13%); split: -3.38%, +3.24%
VGPRs: 3910932 -> 3890320 (-0.53%); split: -2.38%, +1.85%
SpillSGPRs: 319212 -> 283149 (-11.30%); split: -17.69%, +6.39%
SpillVGPRs: 14668 -> 14324 (-2.35%); split: -7.53%, +5.18%
CodeSize: 265360860 -> 267572132 (+0.83%); split: -0.47%, +1.30%
Scratch: 5338112 -> 6134784 (+14.92%); split: -2.65%, +17.57%
MaxWaves: 1077230 -> 1086902 (+0.90%); split: +2.79%, -1.90%

No fossils-db changes on RADV/ACO.

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/7077>

3 years agoac/nir: handle non-const offset with txf/txf_ms
Samuel Pitoiset [Fri, 9 Oct 2020 06:43:46 +0000 (08:43 +0200)]
ac/nir: handle non-const offset with txf/txf_ms

It might be a vec2. If it's a constant, LLVM will fold it.

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/7077>

3 years agoac/llvm: don't lower bool to int32, switch to native i1 bool
Marek Olšák [Tue, 8 Sep 2020 08:40:02 +0000 (04:40 -0400)]
ac/llvm: don't lower bool to int32, switch to native i1 bool

Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7077>

3 years agoutil: Fix rwlock Windows include for MinGW
James Park [Mon, 19 Oct 2020 10:51:46 +0000 (03:51 -0700)]
util: Fix rwlock Windows include for MinGW

MinGW uses windows.h, and not Windows.h.

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

3 years agogenxml: drop gen10
Lionel Landwerlin [Fri, 16 Oct 2020 09:46:26 +0000 (12:46 +0300)]
genxml: drop gen10

Finishing off the job started in !6899

v2: Remove remaining gen10_pack.h include (Sagar)

v3: Forgot isl gen10 removal (Lionel)

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Sagar Ghuge <sagar.ghuge@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7185>

3 years agoRevert "radv/aco: disable NGG GS support because it randomly hangs the GPU"
Samuel Pitoiset [Fri, 16 Oct 2020 08:41:49 +0000 (10:41 +0200)]
Revert "radv/aco: disable NGG GS support because it randomly hangs the GPU"

This reverts commit b84d1a0c42c5a1973ebc53a49fd941590e540a82.

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

3 years agoaco/ngg: Add assertion to make sure we always know the vertex count.
Timur Kristóf [Mon, 19 Oct 2020 09:49:05 +0000 (11:49 +0200)]
aco/ngg: Add assertion to make sure we always know the vertex count.

Just a sanity check to avoid hangs caused by missing this
in the future.

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

3 years agonir: Emit set_vertex_and_primitive_count for inactive streams.
Timur Kristóf [Mon, 19 Oct 2020 09:45:35 +0000 (11:45 +0200)]
nir: Emit set_vertex_and_primitive_count for inactive streams.

This fixes issues in backends such as ACO which rely on always
getting this intrinsic to know the correct vertex and primitive
count.

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

3 years agoradv: add missing 'discardtodemote' option in the debug list
Samuel Pitoiset [Mon, 19 Oct 2020 16:42:22 +0000 (18:42 +0200)]
radv: add missing 'discardtodemote' option in the debug list

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/7220>

3 years agovulkan/wsi: fix possible random stalls in wsi_display_wait_for_event
Marcin Ślusarz [Fri, 16 Oct 2020 18:07:28 +0000 (20:07 +0200)]
vulkan/wsi: fix possible random stalls in wsi_display_wait_for_event

pthread_cond_broadcast man page says this:
"The pthread_cond_broadcast() or pthread_cond_signal() functions may
 be called by a thread whether or not it currently owns the mutex that
 threads calling pthread_cond_wait() or pthread_cond_timedwait() have
 associated with the condition variable during their waits; however,
 if predictable scheduling behavior is required, then that mutex shall
 be locked by the thread calling pthread_cond_broadcast() or
 pthread_cond_signal()."

Found by reading the code.
Compile tested only.

Fixes: da997ebec92 ("vulkan: Add KHR_display extension using DRM [v10]")

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

3 years agopanfrost: Fix stride for AFBC_FORMAT_MOD_BLOCK_SIZE_32x8.
Vinson Lee [Thu, 15 Oct 2020 23:14:16 +0000 (16:14 -0700)]
panfrost: Fix stride for AFBC_FORMAT_MOD_BLOCK_SIZE_32x8.

Fix defect reported by Coverity Scan.

Identical code for different branches (IDENTICAL_BRANCHES)
identical_branches: Ternary expression on condition width has
identical then and else expressions: 32. Should one of the
expressions be modified, or the entire ternary expression
replaced?

Fixes: 8bb1d61f276c ("panfrost: Add panfrost_block_dim helper")
Signed-off-by: Vinson Lee <vlee@freedesktop.org>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Daniel Stone <daniels@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7177>

3 years agoanv: Advertise VK_KHR_shader_terminate_invocation
Caio Marcelo de Oliveira Filho [Thu, 7 May 2020 04:56:29 +0000 (21:56 -0700)]
anv: Advertise VK_KHR_shader_terminate_invocation

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

3 years agovulkan: Update XML and headers to 1.2.158
Caio Marcelo de Oliveira Filho [Mon, 19 Oct 2020 17:04:32 +0000 (10:04 -0700)]
vulkan: Update XML and headers to 1.2.158

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

3 years agoclover/nir: add a constant folding pass before lowering mem const
Dave Airlie [Mon, 19 Oct 2020 00:38:16 +0000 (10:38 +1000)]
clover/nir: add a constant folding pass before lowering mem const

If we lower mem constants first, then direct array accesses to
constants never get lowered, so do a constant fold pass first to
remove direct const array accesses.

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

3 years agoisl: Enable Tigerlake HDC:L1 caches via MOCS in various cases.
Kenneth Graunke [Wed, 7 Oct 2020 16:45:35 +0000 (09:45 -0700)]
isl: Enable Tigerlake HDC:L1 caches via MOCS in various cases.

Thanks to Felix Degrood for discovering that we missed enabling this
additional caching on Tigerlake!  Felix also benchmarked the changes.

We now use MOCS 48 (HDC:L1 + L3 + LLC) for render targets, textures,
and pull constant buffers.  We leave storage buffers & images, as well
as stateless messages, using the previous MOCS 2 value.  We can't use
HDC:L1 with atomics, and we don't know a priori whether storage buffers
will be used with atomics or not.  Similarly, the Vulkan buffer device
address feature allows atomics to be performed on buffers via stateless
messages, and we only can control MOCS at the base address level, so
we can't do much there.

This is closer to what the Windows Vulkan and OpenGL drivers do,
though it isn't quite the same - they also disable LLC in some cases,
but we observed this to have noticable performance regressions when
we tried (though a couple titles benefited).  We may try experiment
with that in the future.

Improves performance in a number of titles:

- Unreal Engine 4 Shooter Demo   [VK]: 11.8%
- Witcher 3                    [DXVK]:  3.9%
- Rise of the Tomb Raider        [VK]:  1.5%
- Shadow of the Tomb Raider      [VK]:  1.0%
- Grand Theft Auto V           [DXVK]:  0.8%

We did not observe any performance regressions.

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

3 years agoisl, anv, iris: Add a centralized helper to select MOCS based on usage
Kenneth Graunke [Wed, 7 Oct 2020 14:44:56 +0000 (07:44 -0700)]
isl, anv, iris: Add a centralized helper to select MOCS based on usage

On Gen12+, we can enable additional caches in certain usage situations.
This routes that decision making to a central place in ISL, based on
surface usage flags, and updates both drivers to use it.  (i965 doesn't
need to change because it doesn't support Gen12.)

We continue handling the "external" decision via an anv_mocs() wrapper
for now, since we store that flag in anv_bo, which isl doesn't know
about.  (We could introduce an ISL_SURF_USAGE_EXTERNAL, but I'm not
actually sure that would be cleaner.)

This patch should not have any functional nor performance effects, as
we continue selecting the exact same MOCS values for now.

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

3 years agoanv: Set only one ISL usage bit (RT/texture) for CopyBuffer sources
Kenneth Graunke [Wed, 30 Sep 2020 22:05:54 +0000 (15:05 -0700)]
anv: Set only one ISL usage bit (RT/texture) for CopyBuffer sources

Most uses of this function deal with destination buffers, but for
copy_buffer_to_image, the buffer is the source, and isn't rendered
to.  We should avoid setting ISL_SURF_USAGE_RENDER_TARGET_BIT.
Also, we should avoid setting ISL_SURF_USAGE_TEXTURE_BIT for the
destination, which isn't sampled from.

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

3 years agoturnip: Only link libdrm in the DRM case, not KGSL.
Eric Anholt [Fri, 18 Sep 2020 19:43:18 +0000 (12:43 -0700)]
turnip: Only link libdrm in the DRM case, not KGSL.

libvulkan's not a fan of opening my libdrm.so.2 from /vendor/lib64 or
/vendor/lib64/hw, but then we shouldn't need it, anyway.

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

3 years agoturnip: Don't link the WSI code if we don't have a WSI extension.
Eric Anholt [Fri, 18 Sep 2020 21:36:36 +0000 (14:36 -0700)]
turnip: Don't link the WSI code if we don't have a WSI extension.

I don't like the TU_HAS_SURFACE duplication, but this is a step to having
a non-libdrm-dependent turnip on Android with KGSL (which doesn't have
drm for rendering).

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

3 years agoturnip: Use Mesa's libsync.h instead of libdrm's libsync.h.
Eric Anholt [Fri, 18 Sep 2020 20:16:23 +0000 (13:16 -0700)]
turnip: Use Mesa's libsync.h instead of libdrm's libsync.h.

Given that we already link to Android's libsync, use it instead of using a
build-time dependency on libdrm for the KGSL path.  This also would help
for older kernel compat with KGSL.

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

3 years agoturnip: Drop a dead error checking path in device init.
Eric Anholt [Wed, 16 Sep 2020 02:18:12 +0000 (19:18 -0700)]
turnip: Drop a dead error checking path in device init.

The only result != SUCCESS setters above all jump across to the fail
label.

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

3 years agoandroid: Add pre-4.7 Android kernel compatibility to our libsync header.
Eric Anholt [Tue, 22 Sep 2020 20:02:37 +0000 (13:02 -0700)]
android: Add pre-4.7 Android kernel compatibility to our libsync header.

The downstream Android kernels had a different API than was merged
upstream, and libsync on Android abstracts over that for us.  Use their
sync_merge() and sync_wait(), at the cost of linking against libsync
(which Android.mk and meson both do).

Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6821>

3 years agoutil: Import a copy of drm's libsync.h
Eric Anholt [Tue, 22 Sep 2020 19:59:24 +0000 (12:59 -0700)]
util: Import a copy of drm's libsync.h

libsync.h is one of the common dependencies on libdrm from drivers that
otherwise don't want libdrm.  Given that it's header-only code, just
import it to Mesa instead of forcing library dependencies on our users.

Copied from libdrm commit a84caff71be9 (" intel: Add PCI ID support to RKL
platform")

Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6821>

3 years agoci/android: Switch build to using platform SDK version 26.
Eric Anholt [Thu, 24 Sep 2020 23:44:50 +0000 (16:44 -0700)]
ci/android: Switch build to using platform SDK version 26.

In SDK 25 (Android 7, 2016), the kernel only went up to around 4.4, so
the upstreamed sync API didn't exist, and libsync didn't expose
sync_merge().

In SDK 26 (Android 8, 2017), the kernel is sometimes bumped to 4.9 or
4.14, but libsync has a sync_merge() that operates on either the
downstream or the upstream API.

Since our android-targeting drivers in general use sync objects (requiring
a kernel newer than 7 got) and sync_merge() (suggesting interaction with
external fencing that started in Android 8), make CI build against an SDK
version with the sync API.  I think really doing SDK 25 right at this
point would involve backporting mesa with some #ifdefs to not expose sync
APIs that wouldn't work.

Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Acked-by: Tapani Pälli <tapani.palli@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6821>

3 years agoandroid_stub: Update platform headers to include gralloc1.h.
Eric Anholt [Tue, 22 Sep 2020 17:55:53 +0000 (10:55 -0700)]
android_stub: Update platform headers to include gralloc1.h.

This header is used in anv and radv, and soon turnip.  Since the script
just checks out master, this also bumps the headers to upstream
02dfcc7c1562 ("Merge "Merge Android R"")

Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6821>

3 years agoradv: report latest extension spec versions
Samuel Pitoiset [Thu, 15 Oct 2020 09:08:26 +0000 (11:08 +0200)]
radv: report latest extension spec versions

Found with the vulkan extension checker tool.

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/7158>

3 years agomeson: Add xcb-fixes to loader when using x11 and dri3. Fixes undefined symbol for...
Duncan Hopkins [Thu, 15 Oct 2020 11:14:57 +0000 (12:14 +0100)]
meson: Add xcb-fixes to loader when using x11 and dri3. Fixes undefined symbol for xcb_xfixes_create_region in loader_dri3_helper.c

loader_dr3_helper.c uses xcb_xfixes_create_region() that requires dep_xcb_xfixes to link. This is dependent on with_platform_x11 and with_dri3.
But the source meson file does not set this up dependent on with_dri3.
The build was initialsed using platforms=x11 and gallium-drivers=zink,swrast.

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

3 years agomesa: Pass the correct caller string to _mesa_lookup_or_create_texture
Ian Romanick [Mon, 12 Oct 2020 23:53:37 +0000 (16:53 -0700)]
mesa: Pass the correct caller string to _mesa_lookup_or_create_texture

An actual bug found by the 'unused parameter' warning. :D

Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7167>

3 years agomesa/st: Silence unused parameter warnings in st_context.c
Ian Romanick [Mon, 12 Oct 2020 23:18:13 +0000 (16:18 -0700)]
mesa/st: Silence unused parameter warnings in st_context.c

src/mesa/state_tracker/st_context.c: In function ‘st_Enable’:
src/mesa/state_tracker/st_context.c:101:57: warning: unused parameter ‘state’ [-Wunused-parameter]
  101 | st_Enable(struct gl_context *ctx, GLenum cap, GLboolean state)
      |                                               ~~~~~~~~~~^~~~~

Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7167>