mesa.git
4 years agoegl/android: Fix build since the DRI fourcc removal.
Eric Anholt [Thu, 12 Sep 2019 19:52:40 +0000 (12:52 -0700)]
egl/android: Fix build since the DRI fourcc removal.

Fixes: 272f9cfe6a19 ("dri: Use DRM_FORMAT_* instead of defining our own copy.")
Reviewed-by: John Stultz <john.stultz@linaro.org>
Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
4 years agogitlab-ci/a630: Disable flappy layout_binding.ssbo.fragment_binding_array
Eric Anholt [Thu, 12 Sep 2019 21:16:21 +0000 (14:16 -0700)]
gitlab-ci/a630: Disable flappy layout_binding.ssbo.fragment_binding_array

It started showing up as unreliable post-merge.  There's a valgrind
complaint, but even fixing that doesn't make it stable.

4 years agofreedreno: fix compiler warning
Rob Clark [Wed, 11 Sep 2019 16:52:53 +0000 (09:52 -0700)]
freedreno: fix compiler warning

fd6_blitter.c:724:31: warning: passing argument 1 of ‘fd_resource_level_linear’ discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]

Signed-off-by: Rob Clark <robdclark@chromium.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
4 years agofreedreno: Introduce gitlab-based CI.
Eric Anholt [Fri, 28 Jun 2019 23:35:32 +0000 (16:35 -0700)]
freedreno: Introduce gitlab-based CI.

Since freedreno's kernel and GPU reset seem to be totally solid, we
don't need to have the complexity of the LAVA setup that panfrost has.
Instead, we can register some boards as shared gitlab runners and have
the jobs run out of a docker container just like we do for llvmpipe.
Just make sure that the DRI device node is passed through to the
containers in the gitlab config ('devices = ["/dev/dri"]' under
runners.docker).

If a runner fails (networking dies, kernel panic, etc.) it'll take out
one build but the rest can keep going since gitlab-runner is what
pulls jobs.  Since the runner pulls jobs, it also means that they can
live behind firewalls instead of needing some public address to be
accessed by gitlab.fd.o.

For now, enable it just on db410c (A307) and cheza (A630) as those are
the hardware that I have plenty of.  A307 is only testing GLES2 since
running all of GLES3 takes too long for the number of boards I've
brought up.

Acked-by: Rob Clark <robdclark@chromium.org>
Acked-by: Kenneth Graunke <kenneth@whitecape.org>
4 years agogitlab-ci: Log the driver version that got tested.
Eric Anholt [Mon, 26 Aug 2019 19:57:16 +0000 (12:57 -0700)]
gitlab-ci: Log the driver version that got tested.

Sometimes you just want confirmation that dEQP really picked up the
driver we built you thought.  This is not as good as one might like,
because git isn't present in the cross-build image.

Acked-by: Rob Clark <robdclark@chromium.org>
Acked-by: Kenneth Graunke <kenneth@whitecape.org>
4 years agogitlab-ci: Disable dEQP's watchdog timer.
Eric Anholt [Tue, 3 Sep 2019 22:52:33 +0000 (15:52 -0700)]
gitlab-ci: Disable dEQP's watchdog timer.

A handful of tests on freedreno have been close to the watchdog
timeout, and now sporadically fail since range analysis has slowed
down the compiler for them.

Acked-by: Rob Clark <robdclark@chromium.org>
Acked-by: Kenneth Graunke <kenneth@whitecape.org>
4 years agomesa/st: Fallback to name lookup when the variable have no Parameter
Caio Marcelo de Oliveira Filho [Wed, 11 Sep 2019 23:55:57 +0000 (16:55 -0700)]
mesa/st: Fallback to name lookup when the variable have no Parameter

This brings back the fallback previously present in
st_nir_lookup_parameter_index(): if there's no parameter associated
with the variable, use a parameter from a variable with the same
prefix.

We'll have to sort out something for SPIR-V, but in the meantime let's
fix GLSL.

Fixes: b6384e57f5f ("mesa/st: Lookup parameters without using names")
Reviewed-by: Eric Anholt <eric@anholt.net>
Tested-by: Eric Anholt <eric@anholt.net>
4 years agoglx: Remove unused indirection for glx_context->fillImage
Adam Jackson [Fri, 23 Aug 2019 16:51:08 +0000 (12:51 -0400)]
glx: Remove unused indirection for glx_context->fillImage

This slot is always filled in with __glFillImage.

Reviewed-by: Michel Dänzer <mdaenzer@redhat.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
4 years agomeson/v3d: replace partial list of nir dep files with idep_nir_headers
Eric Engestrom [Wed, 11 Sep 2019 14:50:32 +0000 (15:50 +0100)]
meson/v3d: replace partial list of nir dep files with idep_nir_headers

"partial" because `nir_intrinsics_h` was missing.

Signed-off-by: Eric Engestrom <eric.engestrom@intel.com>
Reviewed-by: Dylan Baker <dylan@pnwbakers.com>
4 years agomeson/iris: replace partial list of nir dep files with idep_nir_headers
Eric Engestrom [Wed, 11 Sep 2019 14:47:41 +0000 (15:47 +0100)]
meson/iris: replace partial list of nir dep files with idep_nir_headers

"partial" because `nir_intrinsics_h` was missing.

Signed-off-by: Eric Engestrom <eric.engestrom@intel.com>
Reviewed-by: Dylan Baker <dylan@pnwbakers.com>
4 years agov3d: flag dirty state when binding compute states
Jose Maria Casanova Crespo [Fri, 19 Jul 2019 14:45:58 +0000 (16:45 +0200)]
v3d: flag dirty state when binding compute states

As introduced in "v3d: flag dirty state when binding new sampler states"
we need to add support for compute states. New flag VC5_DIRTY_COMPTEX and
VC5_DIRTY_UNCOMPILED_CS are introduced.

Reaching 33 flags at the dirty field forces us to change the type to
uint_64. Flags are reordered and empty continuous bits are available
for future pipeline stages.

v2: Update flag conditions to compile cs shader. (Eric Antholt)
    Now dirty flags use uint_64t and flags are reordered.
    Added VC5_DIRTY_UNCOMPILED_CS flag.

Reviewed-by: Eric Anholt <eric@anholt.net>
4 years agotgsi_to_nir: Translate TGSI_INTERPOLATE_COLOR as INTERP_MODE_NONE
Danylo Piliaiev [Wed, 4 Sep 2019 13:43:17 +0000 (16:43 +0300)]
tgsi_to_nir: Translate TGSI_INTERPOLATE_COLOR as INTERP_MODE_NONE

Translating TGSI_INTERPOLATE_COLOR as INTERP_MODE_SMOOTH made
it for drivers impossible to have flatshaded color inputs.

Translate it to INTERP_MODE_NONE which drivers interpret as
smooth or flat depending on flatshading state.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=111467

Fixes: 770faf54 ("tgsi_to_nir: Improve interpolation modes.")
Signed-off-by: Danylo Piliaiev <danylo.piliaiev@globallogic.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
4 years agonir/lower_point_size: assume scalar PSIZ
Iago Toral Quiroga [Wed, 4 Sep 2019 09:04:13 +0000 (11:04 +0200)]
nir/lower_point_size: assume scalar PSIZ

Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
4 years agogallium/ttn: VARYING_SLOT_PSIZ and VARYING_SLOT_FOGC are scalar
Iago Toral Quiroga [Mon, 9 Sep 2019 06:42:19 +0000 (08:42 +0200)]
gallium/ttn: VARYING_SLOT_PSIZ and VARYING_SLOT_FOGC are scalar

Reviewed-by: Eric Anholt <eric@anholt.net>
4 years agoprog_to_nir: VARYING_SLOT_PSIZ is a scalar
Iago Toral Quiroga [Wed, 4 Sep 2019 09:02:19 +0000 (11:02 +0200)]
prog_to_nir: VARYING_SLOT_PSIZ is a scalar

v2: remove stray change (Erik Faye-Lund)

Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
4 years agoegl/android: Only keep BGRA EGL configs as fallback
Lepton Wu [Thu, 12 Sep 2019 06:38:59 +0000 (06:38 +0000)]
egl/android: Only keep BGRA EGL configs as fallback

Stock Android code actually doesn't support BGRA format EGL
configs. It's hard coded to use RGBA_8888 as window format
for BGRA EGL configs here:
https://android.googlesource.com/platform/frameworks/native/+/1eb32e2/opengl/libs/EGL/eglApi.cpp#608
So just remove it from EGL configs if RGBA is supported.

Signed-off-by: Lepton Wu <lepton@chromium.org>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
4 years agoegl/android: Enable HAL_PIXEL_FORMAT_RGBA_1010102 format
renchenglei [Thu, 12 Sep 2019 05:45:31 +0000 (13:45 +0800)]
egl/android: Enable HAL_PIXEL_FORMAT_RGBA_1010102 format

The patch adds support for HAL_PIXEL_FORMAT_RGBA_1010102 on
Android platform.

Fixes android.media.cts.DecoderTest#testVp9HdrStaticMetadata
which failed in egl due to "Unsupported native buffer format 0x2b"
on Android.

Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Signed-off-by: Chenglei Ren <chenglei.ren@intel.com>
4 years agoiris: trivial whitespace fixes
Kenneth Graunke [Thu, 12 Sep 2019 04:33:00 +0000 (21:33 -0700)]
iris: trivial whitespace fixes

4 years agou_format: float type for R11G11B10_FLOAT/R9G9B9E5_FLOAT
Jonathan Marek [Mon, 12 Aug 2019 20:20:21 +0000 (16:20 -0400)]
u_format: float type for R11G11B10_FLOAT/R9G9B9E5_FLOAT

Signed-off-by: Jonathan Marek <jonathan@marek.ca>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
4 years agou_format: add ETC2 to util_format_srgb/util_format_linear
Jonathan Marek [Sun, 4 Aug 2019 21:17:13 +0000 (17:17 -0400)]
u_format: add ETC2 to util_format_srgb/util_format_linear

Signed-off-by: Jonathan Marek <jonathan@marek.ca>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
4 years agomeson: Add coroutines component to llvmpipe build.
Vinson Lee [Thu, 5 Sep 2019 05:17:25 +0000 (22:17 -0700)]
meson: Add coroutines component to llvmpipe build.

Fixes: d32690b43c91 ("gallivm: add coroutine pass manager support")
Suggested-by: Gert Wollny <gert.wollny@collabora.com>
Signed-off-by: Vinson Lee <vlee@freedesktop.org>
Reviewed-by: Dylan Baker <dylan@pnwbakers.com>
4 years agodri: Use DRM_FORMAT_* instead of defining our own copy.
Eric Anholt [Fri, 30 Aug 2019 00:00:09 +0000 (17:00 -0700)]
dri: Use DRM_FORMAT_* instead of defining our own copy.

We have only two defines that aren't from DRM_FORMAT_*: SARGB and
SABGR.  Keep only those as __DRI_IMAGE_FOURCC and garbage collect the
rest.

While this header is also used from the X server, the X server doesn't
use any __DRI_IMAGE enums.

Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
4 years agouapi: Update drm_fourcc.h
Eric Anholt [Thu, 29 Aug 2019 23:57:49 +0000 (16:57 -0700)]
uapi: Update drm_fourcc.h

Taken from drm-misc-next 268de6530aa1 ("drm: mst: Fix query_payload
ack reply struct")

Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
4 years agost/mesa: Only pause queries if there are any active queries to pause.
Kenneth Graunke [Mon, 9 Sep 2019 22:36:16 +0000 (15:36 -0700)]
st/mesa: Only pause queries if there are any active queries to pause.

Previously, ReadPixels, PBO upload/download, and clears would call
cso_save_state with CSO_PAUSE_QUERIES, causing cso_context to call
pipe->set_active_query_state() twice for each operation.  This can
potentially cause driver work to enable/disable statistics counters.

But often, there are no queries happening which need to be paused.
By keeping a simple tally of active queries, we can skip this work.

Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
4 years agoFix missing dri2_load_driver on platform_drm
Jean Hertel [Tue, 10 Sep 2019 19:00:07 +0000 (21:00 +0200)]
Fix missing dri2_load_driver on platform_drm

Signed-off-by: Jean Hertel <jean.hertel@hotmail.com>
Acked-by: Eric Engestrom <eric.engestrom@intel.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
4 years agointel/gen11+: Enable Hardware filtering of Semi-Pipelined State in WM
Anuj Phogat [Mon, 9 Sep 2019 18:17:19 +0000 (11:17 -0700)]
intel/gen11+: Enable Hardware filtering of Semi-Pipelined State in WM

Initial benchmarking didn't show any performance benefits. But it might eventually.

Signed-off-by: Anuj Phogat <anuj.phogat@gmail.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
4 years agogenxml/gen11+: Add COMMON_SLICE_CHICKEN4 register
Anuj Phogat [Mon, 9 Sep 2019 18:32:35 +0000 (11:32 -0700)]
genxml/gen11+: Add COMMON_SLICE_CHICKEN4 register

Signed-off-by: Anuj Phogat <anuj.phogat@gmail.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
4 years agoegl/dri2: Refuse to add EGLConfigs with no supported surface types
Adam Jackson [Tue, 10 Sep 2019 16:07:07 +0000 (12:07 -0400)]
egl/dri2: Refuse to add EGLConfigs with no supported surface types

For example, the surfaceless platform only supports pbuffers. If the
driver supports MSAA, we would still create a config, but it would have
no supported surface types. That's meaningless, so don't do it.

Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
4 years agogallium: Require LLVM >= 3.9
Adam Jackson [Fri, 6 Sep 2019 07:50:32 +0000 (09:50 +0200)]
gallium: Require LLVM >= 3.9

To go any further than this would be to break the current version of
Android.

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
4 years agogallium: Require LLVM >= 3.8
Adam Jackson [Fri, 6 Sep 2019 07:50:27 +0000 (09:50 +0200)]
gallium: Require LLVM >= 3.8

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
4 years agogallium: Require LLVM >= 3.7
Adam Jackson [Fri, 6 Sep 2019 07:50:22 +0000 (09:50 +0200)]
gallium: Require LLVM >= 3.7

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
4 years agogallium: Require LLVM >= 3.6
Adam Jackson [Fri, 6 Sep 2019 07:50:16 +0000 (09:50 +0200)]
gallium: Require LLVM >= 3.6

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
4 years agogallium: Require LLVM >= 3.5
Adam Jackson [Fri, 6 Sep 2019 07:29:32 +0000 (09:29 +0200)]
gallium: Require LLVM >= 3.5

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
[ Michel Dänzer: Dropped jessie line from debian-install.sh again ]

4 years agogitlab-ci: Keep g++ from stretch when installing foreign toolchains
Michel Dänzer [Fri, 6 Sep 2019 08:39:19 +0000 (10:39 +0200)]
gitlab-ci: Keep g++ from stretch when installing foreign toolchains

Upgrading to a newer g++ causes older LLVM/clang packages to be
removed.

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
4 years agogitlab-ci: Explicitly install linux-libc-dev for foreign architectures
Michel Dänzer [Fri, 6 Sep 2019 07:47:59 +0000 (09:47 +0200)]
gitlab-ci: Explicitly install linux-libc-dev for foreign architectures

Something seems to have changed in Debian buster causing installation
of the other foreign packages to fail without this.

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
4 years agogallium: Require LLVM >= 3.4
Adam Jackson [Fri, 6 Sep 2019 07:29:23 +0000 (09:29 +0200)]
gallium: Require LLVM >= 3.4

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
4 years agoDocs: mark that 19.2.0-rc3 has been released
Dylan Baker [Wed, 11 Sep 2019 16:47:45 +0000 (09:47 -0700)]
Docs: mark that 19.2.0-rc3 has been released

Also update -rc4 to me.

4 years agost/nir: fix illegal designated initializer in st_glsl_to_nir.cpp
Brian Paul [Wed, 11 Sep 2019 05:51:23 +0000 (23:51 -0600)]
st/nir: fix illegal designated initializer in st_glsl_to_nir.cpp

IIRC, designated initializers are not legal C++.
Fixes the MSVC build.

Fixes: 83fd1e58 ("glsl/nir: Add and use a gl_nir_link() function")
Reviewed-by: Neha Bhende <bhenden@vmware.com>
4 years agomeson: don't generate file into subdirs
Dylan Baker [Tue, 10 Sep 2019 20:35:08 +0000 (13:35 -0700)]
meson: don't generate file into subdirs

This is unsupported by meson and may become a hard error in the future.

Fixes: 5adfc8602c639827af0ba9a1059bd165a3ae49e7
       ("lima/ppir: move sin/cos input scaling into NIR")
Reviewed-by: Vasily Khoruzhick <anarsoul@gmail.com>
4 years agoiris: Set bo->reusable = false in iris_bo_make_external_locked
Kenneth Graunke [Wed, 11 Sep 2019 06:57:57 +0000 (23:57 -0700)]
iris: Set bo->reusable = false in iris_bo_make_external_locked

This fixes a missing bo->reusable = false in iris_bo_export_gem_handle.

Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
4 years agoiris: Finish initializing the BO before stuffing it in the hash table
Kenneth Graunke [Wed, 11 Sep 2019 06:56:10 +0000 (23:56 -0700)]
iris: Finish initializing the BO before stuffing it in the hash table

Other threads may pick it up once it's in the hash table.  Not known
to fix anything currently.

Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
4 years agoradeonsi/gfx9: honor user stride for imported buffers
Marek Olšák [Fri, 30 Aug 2019 21:55:27 +0000 (17:55 -0400)]
radeonsi/gfx9: honor user stride for imported buffers

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
4 years agoprog_to_nir, tgsi_to_nir: make sure kill doesn't discard NaNs
Marek Olšák [Fri, 6 Sep 2019 18:01:51 +0000 (14:01 -0400)]
prog_to_nir, tgsi_to_nir: make sure kill doesn't discard NaNs

Reviewed-by: Connor Abbott <cwabbott0@gmail.com>
4 years agoac: replace HAVE_LLVM with LLVM_VERSION_MAJOR for atomic-optimizations
Marek Olšák [Wed, 11 Sep 2019 14:56:07 +0000 (10:56 -0400)]
ac: replace HAVE_LLVM with LLVM_VERSION_MAJOR for atomic-optimizations

trivial

4 years agolima: set .out_sync field of req in lima_submit_start()
Vasily Khoruzhick [Wed, 11 Sep 2019 03:06:15 +0000 (20:06 -0700)]
lima: set .out_sync field of req in lima_submit_start()

Looks like .out_sync wasn't set in lima_submit_start(), as result
submit completion fence was never signalled.

Reviewed-by: Qiang Yu <yuq825@gmail.com>
Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
4 years agointel: Add few Ice Lake brand strings
Anuj Phogat [Fri, 16 Aug 2019 19:45:52 +0000 (12:45 -0700)]
intel: Add few Ice Lake brand strings

Signed-off-by: Anuj Phogat <anuj.phogat@gmail.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
4 years agogallium: Fix util_format_get_depth_only
Kenneth Graunke [Mon, 9 Sep 2019 14:23:22 +0000 (07:23 -0700)]
gallium: Fix util_format_get_depth_only

This is a pipe format, not a boolean.

Fixes: 5849e0612cc ("gallium/auxiliary: Add util_format_get_depth_only() helper.")
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
4 years agofreedreno/a6xx: fix 3d tex layout
Rob Clark [Tue, 10 Sep 2019 18:28:31 +0000 (19:28 +0100)]
freedreno/a6xx: fix 3d tex layout

Fixes dEQP-GLES3.functional.texture.specification.texstorage3d.size.3d_2x2x2_2_levels

Signed-off-by: Rob Clark <robdclark@chromium.org>
Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
4 years agofreedreno/a6xx: don't tile things that are too small
Rob Clark [Mon, 9 Sep 2019 23:19:40 +0000 (16:19 -0700)]
freedreno/a6xx: don't tile things that are too small

If the lowest (largest) mipmap level is too small to tile, then don't
bother pretending.

Note that this requires initializing pipe->screen before
fd_resource_level_linear() is called.

Signed-off-by: Rob Clark <robdclark@chromium.org>
Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
4 years agoiris: Enable ARB_gl_spirv and ARB_spirv_extensions
Caio Marcelo de Oliveira Filho [Mon, 5 Aug 2019 23:56:42 +0000 (16:56 -0700)]
iris: Enable ARB_gl_spirv and ARB_spirv_extensions

This will also "unlock" OpenGL 4.6 for Iris!

v2: Also enable PIPE_CAP_GL_SPIRV_VARIABLE_POINTERS.

Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com> [v1]
4 years agoglsl/nir: Add and use a gl_nir_link() function
Caio Marcelo de Oliveira Filho [Fri, 23 Aug 2019 13:50:11 +0000 (06:50 -0700)]
glsl/nir: Add and use a gl_nir_link() function

Perform all the NIR linking steps in order.  Change iris and i965 to
use it.  Suggested by Alejandro.

v2: Add gl_nir_linker_options struct.

Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com> [v1]
4 years agogallium: Add ARB_gl_spirv support
Caio Marcelo de Oliveira Filho [Mon, 5 Aug 2019 23:25:11 +0000 (16:25 -0700)]
gallium: Add ARB_gl_spirv support

The PIPE_CAP_GL_SPIRV capability enables ARB_gl_spirv and
ARB_spirv_extensions, and will make sure the corresponding SPIR-V
capabilities and extensions lists are initialized.

The additional PIPE_CAP_GL_SPIRV_VARIABLE_POINTERS capability enables
the support for Variable Pointers in SPIR-V shaders.  This depends on
the driver and is not mandatory for ARB_gl_spirv support.

v2: Add a PIPE_CAP for Variable Pointers.  (Marek)

Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com> [v1]
4 years agomesa/spirv: Set a few more extensions
Caio Marcelo de Oliveira Filho [Thu, 22 Aug 2019 17:19:49 +0000 (10:19 -0700)]
mesa/spirv: Set a few more extensions

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
4 years agomesa/st: Don't expect prog->nir to already exist
Caio Marcelo de Oliveira Filho [Thu, 22 Aug 2019 18:23:51 +0000 (11:23 -0700)]
mesa/st: Don't expect prog->nir to already exist

There's no such case, if we load prog->nir from the shader cache, we
shouldn't hit this path.

Suggested-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
4 years agomesa/st: Add support for SPIR-V shaders
Caio Marcelo de Oliveira Filho [Thu, 22 Aug 2019 13:43:28 +0000 (06:43 -0700)]
mesa/st: Add support for SPIR-V shaders

The SPIR-V codepath uses NIR linking, so we have to preprocess after
the linking steps, which makes things slightly different than GLSL.
To make more clear when the preprocess is happening, I've ended up
inlining st_nir_get_mesa_program() into its caller.

The goal was to make both GLSL and SPIR-V to use the same preprocess
function, the exceptions are:

- SPIR-V codepath don't support NIR state slots yet;
- GLSL lowers shared memory early, so we don't do the deref lowering
  for those.

For now I didn't bother to rename other functions and files (now that
many of them apply to both GLSL and SPIR-V), but we should do this in
further patches.

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
4 years agomesa/st: Extract preprocessing NIR steps
Caio Marcelo de Oliveira Filho [Thu, 22 Aug 2019 14:10:32 +0000 (07:10 -0700)]
mesa/st: Extract preprocessing NIR steps

Refactor to split the glsl_to_nir conversion from the preprocessing
NIR passes into separate functions, so we can use them in SPIR-V.
Unlike in GLSL, there we'll need to perform a few passes with the NIR
linker before doing the individual preprocess calls.

No behavior should change with this patch.

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
4 years agomesa/st: Lookup parameters without using names
Caio Marcelo de Oliveira Filho [Thu, 22 Aug 2019 04:04:27 +0000 (21:04 -0700)]
mesa/st: Lookup parameters without using names

Use the new MainUniformStorageIndex field in Parameter instead.  It
was added so we could match those in the SPIR-V case, where names are
optional.

v2: Use MainUniformStorageIndex for all cases.

Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com> [v1]
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
4 years agomesa/program: Associate uniform storage without using names
Caio Marcelo de Oliveira Filho [Wed, 21 Aug 2019 19:16:29 +0000 (12:16 -0700)]
mesa/program: Associate uniform storage without using names

Use the new UniformStorageIndex field in Parameter instead.  This
mechanism was added so we could match those in the SPIR-V case, where
names are optional.

v2: Use UniformStorageIndex for all cases.  (Timothy)

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
4 years agomesa: Fill Parameter storage indices even when not using SPIR-V
Caio Marcelo de Oliveira Filho [Wed, 4 Sep 2019 16:28:54 +0000 (09:28 -0700)]
mesa: Fill Parameter storage indices even when not using SPIR-V

When creating Parameters, fill in the associated uniform storage
indices, like it is done with the NIR linker used for SPIR-V.  This
will allow later code to not rely on names (which would never work for
SPIR-V where names are optional).

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
4 years agoglsl/nir: Fill in the Parameters in NIR linker
Caio Marcelo de Oliveira Filho [Wed, 21 Aug 2019 18:08:48 +0000 (11:08 -0700)]
glsl/nir: Fill in the Parameters in NIR linker

The parameter lists were not being created nor filled since i965
doesn't use them.  In Gallium they are used for uniform handling, so
add a way to fill them.

The gl_uniform_storage struct got two new fields that let us go

- from a Parameter to the matching UniformStorage and,
- from the variable to the *first* UniformStorage

without relying on names -- since they are optional for ARB_gl_spirv.
Later patches will make use of them.

v2: Do not fill parameters for i965.  (Timothy)
    Use uint32_t for the new attributes.  (Marek)

v3: Serialize the new fields.  (Timothy)

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
4 years agomesa: Pack gl_program_parameter struct
Caio Marcelo de Oliveira Filho [Wed, 4 Sep 2019 00:10:52 +0000 (17:10 -0700)]
mesa: Pack gl_program_parameter struct

The gl_register_file doesn't need 16 bits, so shorten it and use the
extra room for 'Padded' (also mark it as a single bit).  This shrinks
the struct size from 32 bytes to 24 bytes.

See also 4794fbc86e3 ("mesa: reduce the size of gl_program_parameter")
that shrinked from 40 to 24 and later 7536af670b7 ("glsl: fix shader
cache for packed param list") that added `Padded`.

v2: Use just 5 bits for gl_register_file.  (Timothy)

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
4 years agocompiler: Add glsl_contains_opaque() helper
Caio Marcelo de Oliveira Filho [Wed, 21 Aug 2019 16:06:14 +0000 (09:06 -0700)]
compiler: Add glsl_contains_opaque() helper

Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
4 years agomesa/st: Do not rely on name to identify special uniforms
Caio Marcelo de Oliveira Filho [Wed, 21 Aug 2019 16:38:10 +0000 (09:38 -0700)]
mesa/st: Do not rely on name to identify special uniforms

Every uniform that have the "gl_" name also have some state slots.  So
use the state_slots like we did in 57b61849310 ("i965: account for NIR
uniforms without name").

This removes the dependency on names, which are optional when using
ARB_gl_spirv.

Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
4 years agoglsl/nir: Avoid overflow when setting max_uniform_location
Caio Marcelo de Oliveira Filho [Wed, 21 Aug 2019 17:04:56 +0000 (10:04 -0700)]
glsl/nir: Avoid overflow when setting max_uniform_location

Don't use the UNMAPPED_UNIFORM_LOC (-1) to set the unsigned
max_uniform_location.  Those unmapped uniforms don't have to be
accounted at this point.

Fixes: 7a9e5cdfbb9 ("nir/linker: Add gl_nir_link_uniforms()")
Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
4 years agomeson: don't allow glvnd on windows
Dylan Baker [Wed, 18 Apr 2018 20:19:20 +0000 (13:19 -0700)]
meson: don't allow glvnd on windows

Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
4 years agomeson: don't build glx or dri by default on windows
Dylan Baker [Wed, 18 Apr 2018 20:17:50 +0000 (13:17 -0700)]
meson: don't build glx or dri by default on windows

v5: - Move is windows check down to make code more robust

Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
4 years agomeson: Add a platform for windows
Dylan Baker [Wed, 18 Apr 2018 20:17:20 +0000 (13:17 -0700)]
meson: Add a platform for windows

This mirrors the haiku build which uses a platform.

v2: - Fix some rebase problems

Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
4 years agomeson: build getopt when using msvc
Dylan Baker [Thu, 8 Feb 2018 21:10:12 +0000 (13:10 -0800)]
meson: build getopt when using msvc

v4: - Don't wrap a single file in a list to match mesa style
    - Use null_dep instead of empty list

Reviewed-by: Eric Anholt <eric@anholt.net> (v3)
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
4 years agomeson: fix dl detection on non cygwin windows
Dylan Baker [Thu, 5 Apr 2018 23:12:51 +0000 (16:12 -0700)]
meson: fix dl detection on non cygwin windows

v4: - Don't run checks on Windows that will always fail

Reviewed-by: Eric Anholt <eric@anholt.net> (v3)
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
4 years agoglapi: export glapi_destroy_multithread when building shared-glapi on windows
Dylan Baker [Wed, 18 Apr 2018 15:33:03 +0000 (08:33 -0700)]
glapi: export glapi_destroy_multithread when building shared-glapi on windows

Which will allow meson to build a shared glapi build with mingw.

v2: - Add symbol to symbol check test

Reviewed-by: Eric Anholt <eric@anholt.net> (v1)
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
4 years agomeson: add a expat subproject
Dylan Baker [Wed, 18 Apr 2018 20:01:09 +0000 (13:01 -0700)]
meson: add a expat subproject

For Windows

Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
4 years agomeson: add a zlib subproject
Dylan Baker [Thu, 5 Apr 2018 23:14:07 +0000 (16:14 -0700)]
meson: add a zlib subproject

To help windows build

Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
4 years agoadd a git ignore for subprojects
Dylan Baker [Fri, 6 Apr 2018 21:10:00 +0000 (14:10 -0700)]
add a git ignore for subprojects

Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
4 years agomeson: don't build glapi_static_check_table on windows
Dylan Baker [Fri, 31 May 2019 23:20:35 +0000 (16:20 -0700)]
meson: don't build glapi_static_check_table on windows

It doesn't compile due to undefined symbols, which are in
libglapi_static, so I don't understand the problem.

Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
4 years agomeson: Make shared-glapi a combo
Dylan Baker [Fri, 31 May 2019 23:16:22 +0000 (16:16 -0700)]
meson: Make shared-glapi a combo

So it can auto off for windows, but on elsewhere.

Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
4 years agomeson: don't try to generate i18n translations on windows
Dylan Baker [Fri, 31 May 2019 23:13:11 +0000 (16:13 -0700)]
meson: don't try to generate i18n translations on windows

Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
4 years agoglsl/tests: Handle windows \r\n new lines
Dylan Baker [Fri, 31 May 2019 17:13:55 +0000 (10:13 -0700)]
glsl/tests: Handle windows \r\n new lines

Currently the praser for s expressions assumes that newlines will be \n,
resulting in incorrect parsing on windows, where the newline is \r\n.
This patch just adds \r? to the regular expression used to parse the s
expressions, which fixes at 1 test on windows.

Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
4 years agoiris: Fix constant buffer sizes for non-UBOs
Kenneth Graunke [Tue, 10 Sep 2019 16:04:20 +0000 (09:04 -0700)]
iris: Fix constant buffer sizes for non-UBOs

Since the system value refactor, we've accidentally only been setting
cbuf->buffer_size in the UBO case, and not in the uploaded-constants
case.  We use cbuf->buffer_size to fill out the SURFACE_STATE entry,
so it needs to be initialized in both cases.

Fixes: 3b6d787e404 ("iris: move sysvals to their own constant buffer")
4 years agointel: update product names for WHL
Lionel Landwerlin [Tue, 10 Sep 2019 09:45:50 +0000 (12:45 +0300)]
intel: update product names for WHL

Documentation list all of those as "UHD".

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=111629
BSpec: 33266
Acked-by: Tapani Pälli <tapani.palli@intel.com>
4 years agoradv/gfx10: declare a LDS symbol for the NGG emit space
Samuel Pitoiset [Tue, 3 Sep 2019 11:01:54 +0000 (13:01 +0200)]
radv/gfx10: declare a LDS symbol for the NGG emit space

This fixes some interactions when NGG GS is enabled. It fixes:

- dEQP-VK.clipping.user_defined.clip_cull_distance_dynamic_index.*geom*
- dEQP-VK.tessellation.geometry_interaction.passthrough.*

For some reasons, using the computed ESGS ring size randomly hangs
with CTS. For now, just use the maximum LDS size for ESGS.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
4 years agoradv: calculate GFX9 GS and GFX10 NGG states before compiling shader variants
Samuel Pitoiset [Tue, 3 Sep 2019 10:46:55 +0000 (12:46 +0200)]
radv: calculate GFX9 GS and GFX10 NGG states before compiling shader variants

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
4 years agoradv: store the ESGS ring size as part of gfx10_ngg_info
Samuel Pitoiset [Tue, 3 Sep 2019 09:34:42 +0000 (11:34 +0200)]
radv: store the ESGS ring size as part of gfx10_ngg_info

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
4 years agoradv: store GFX10 NGG state as part of the shader info
Samuel Pitoiset [Tue, 3 Sep 2019 09:20:54 +0000 (11:20 +0200)]
radv: store GFX10 NGG state as part of the shader info

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
4 years agoradv: store GFX9 GS state as part of the shader info
Samuel Pitoiset [Tue, 3 Sep 2019 09:14:18 +0000 (11:14 +0200)]
radv: store GFX9 GS state as part of the shader info

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
4 years agoradv: fill shader info for all stages in the pipeline
Samuel Pitoiset [Tue, 3 Sep 2019 08:29:19 +0000 (10:29 +0200)]
radv: fill shader info for all stages in the pipeline

This shouldn't be in NIR->LLVM because ACO also needs the shader
info. This will also help for computing some NGG values that are
necessary for declaring LDS symbols.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
4 years agoradv: do not pass all compiler options to the shader info pass
Samuel Pitoiset [Tue, 3 Sep 2019 07:49:14 +0000 (09:49 +0200)]
radv: do not pass all compiler options to the shader info pass

Only the pipeline layout and the shader keys are needed.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
4 years agoradeonsi: remove redundant si_texture offset and size fields
Marek Olšák [Thu, 29 Aug 2019 01:27:05 +0000 (21:27 -0400)]
radeonsi: remove redundant si_texture offset and size fields

Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
4 years agoradeonsi: move texture storage allocation outside of radeonsi
Marek Olšák [Wed, 28 Aug 2019 01:18:20 +0000 (21:18 -0400)]
radeonsi: move texture storage allocation outside of radeonsi

possible code sharing with radv

Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
4 years agoradeonsi: move HTILE allocation outside of radeonsi
Marek Olšák [Wed, 28 Aug 2019 01:07:41 +0000 (21:07 -0400)]
radeonsi: move HTILE allocation outside of radeonsi

ac_surface computes it for amdgpu.
radeon_drm_surface computes it for radeon.

Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
4 years agoradeonsi: handle NO_DCC early
Marek Olšák [Wed, 28 Aug 2019 00:32:46 +0000 (20:32 -0400)]
radeonsi: handle NO_DCC early

Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
4 years agoac/surface: add RADEON_SURF_NO_FMASK
Marek Olšák [Wed, 28 Aug 2019 00:29:11 +0000 (20:29 -0400)]
ac/surface: add RADEON_SURF_NO_FMASK

This controls FMASK and CMASK computation for MSAA.

Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
4 years agor300,r600,radeonsi: set winsys_handle::stride,offset in drivers, not winsyses
Marek Olšák [Tue, 27 Aug 2019 23:35:25 +0000 (19:35 -0400)]
r300,r600,radeonsi: set winsys_handle::stride,offset in drivers, not winsyses

Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
4 years agor300,r600,radeonsi: read winsys_handle::stride,offset in drivers, not winsyses
Marek Olšák [Tue, 27 Aug 2019 23:35:25 +0000 (19:35 -0400)]
r300,r600,radeonsi: read winsys_handle::stride,offset in drivers, not winsyses

Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
4 years agoradeonsi/gfx10: fix wave occupancy computations
Marek Olšák [Wed, 28 Aug 2019 21:38:50 +0000 (17:38 -0400)]
radeonsi/gfx10: fix wave occupancy computations

Cc: 19.2 <mesa-stable@lists.freedesktop.org>
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
4 years agoradeonsi: only support at most 1024 threads per block
Marek Olšák [Tue, 27 Aug 2019 21:39:02 +0000 (17:39 -0400)]
radeonsi: only support at most 1024 threads per block

LLVM 10 won't support 2048.

Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
4 years agoradeonsi: disable DCC when importing a texture from an incompatible driver
Marek Olšák [Tue, 27 Aug 2019 18:37:24 +0000 (14:37 -0400)]
radeonsi: disable DCC when importing a texture from an incompatible driver

and unify the code.

Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
4 years agoradeonsi/gfx10: don't call gfx10_destroy_query with compute-only contexts
Marek Olšák [Fri, 23 Aug 2019 23:17:05 +0000 (19:17 -0400)]
radeonsi/gfx10: don't call gfx10_destroy_query with compute-only contexts

This fixes a crash.

Cc: 19.2 <mesa-stable@lists.freedesktop.org>
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
4 years agoradeonsi/gfx10: use fma for TGSI_OPCODE_FMA
Marek Olšák [Mon, 26 Aug 2019 20:20:44 +0000 (16:20 -0400)]
radeonsi/gfx10: use fma for TGSI_OPCODE_FMA

Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
4 years agoac: use fma on gfx10
Marek Olšák [Mon, 26 Aug 2019 20:19:31 +0000 (16:19 -0400)]
ac: use fma on gfx10

Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
4 years agoac: enable LLVM atomic optimizations
Marek Olšák [Thu, 15 Aug 2019 20:53:34 +0000 (16:53 -0400)]
ac: enable LLVM atomic optimizations