mesa.git
4 years agofreedreno/decode: move dependencies up a level
Rob Clark [Sun, 2 Aug 2020 19:17:28 +0000 (12:17 -0700)]
freedreno/decode: move dependencies up a level

This is mainly for the benefit of automated syncing of changes from mesa
back to envytools, where the same subdir meson.build's are used, but the
toplevel meson.build is different.  In the envytools case, we want these
depenendencies to be required.

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

4 years agofreedreno/registers: install gzip'd register database
Rob Clark [Sun, 2 Aug 2020 18:55:43 +0000 (11:55 -0700)]
freedreno/registers: install gzip'd register database

The decode tools aren't too useful to install without the xml.  But
since libxml2 can read compressed xml, we'll gzip them for installation.

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

4 years agofreedreno/registers: split header build into subdirs
Rob Clark [Sun, 2 Aug 2020 18:35:48 +0000 (11:35 -0700)]
freedreno/registers: split header build into subdirs

Instead of building the adreno/foo.xml headers from the toplevel, split
out a subdir().  This fits better with how meson likes things to be
structured.  But it does require fixing a bit about how gen_header.py
resolves imports, ie. it cannot assume the src file is at the root of
the $RNN_PATH.

This is needed for the next patch, to add support for installing the
register database for use with installed tools.

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

4 years agofreedreno/registers: add .gitignore
Rob Clark [Sun, 2 Aug 2020 17:20:38 +0000 (10:20 -0700)]
freedreno/registers: add .gitignore

Testing headergen2 will create .xml.h in the same location as the .xml.
But we don't want this to get accidentially committed.

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

4 years agofreedreno/rnn: rework RNN_DEF_PATH construction
Rob Clark [Sun, 2 Aug 2020 17:16:47 +0000 (10:16 -0700)]
freedreno/rnn: rework RNN_DEF_PATH construction

No need for rnn_path.h, just construct the whole thing in meson and pass
via c_args.  Also move where the path is constructed up one level.  This
will be needed for syncing back to envytools, where the path will be
different.

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

4 years agofreedreno/rnn: also look for .xml.gz
Rob Clark [Sun, 2 Aug 2020 17:00:02 +0000 (10:00 -0700)]
freedreno/rnn: also look for .xml.gz

libxml2 can load gzip compressed files, so lets look for these too.
This will be useful for installing the register database so that an
installed cffdump/crashdec can use them.  But it isn't too useful
to be able to edit the installed register database, so we can gzip
them to use less disk space.

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

4 years agoradv: Implement VK_EXT_4444_formats
Joshua Ashton [Wed, 15 Jul 2020 10:21:23 +0000 (11:21 +0100)]
radv: Implement VK_EXT_4444_formats

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6160>

4 years agoanv: Implement VK_EXT_4444_formats
Jason Ekstrand [Tue, 14 Jul 2020 22:59:49 +0000 (17:59 -0500)]
anv: Implement VK_EXT_4444_formats

We only support the ARGB format, not the ABGR one.  Fortunately, the
ARGB is the one required by D3D11.

Reviewed-by: Joshua Ashton <joshua@froggi.es>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6158>

4 years agovulkan: Update Vulkan XML and headers to 1.2.149
Jason Ekstrand [Mon, 3 Aug 2020 14:40:54 +0000 (09:40 -0500)]
vulkan: Update Vulkan XML and headers to 1.2.149

Reviewed-by Joshua Ashton <joshua@froggi.es>

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6158>

4 years agou_prim_restart: add inline function for getting restart index based on index size
Mike Blumenkrantz [Fri, 31 Jul 2020 15:08:04 +0000 (11:08 -0400)]
u_prim_restart: add inline function for getting restart index based on index size

handy to have this available for drivers to reuse

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

4 years agoiris: Zero the add-on clear color BO on import
Nanley Chery [Fri, 10 Jul 2020 22:48:36 +0000 (15:48 -0700)]
iris: Zero the add-on clear color BO on import

When iris imports an I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS surface, it
allocates a buffer to hold the indirect clear color. When the import is
complete, iris_resource::aux::clear_color is set to zero but the
indirect buffer is filled with garbage values. This could break certain
texture view use-cases, so zero the allocated buffer to fix those.

Fixes: c19492bcdb9 ("iris: Handle importing aux-enabled surfaces on TGL")
Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6092>

4 years agoci: Build-test Panfrost tools
Tomeu Vizoso [Mon, 3 Aug 2020 14:19:38 +0000 (16:19 +0200)]
ci: Build-test Panfrost tools

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3348
Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6157>

4 years agozink: implement handling for VK_EXT_calibrated_timestamps
Mike Blumenkrantz [Fri, 10 Jul 2020 18:42:08 +0000 (14:42 -0400)]
zink: implement handling for VK_EXT_calibrated_timestamps

just the extension setup; we need this to handle device timestamp
queries outside of batches

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

4 years agozink: store valid timestamp bits onto zink_screen
Mike Blumenkrantz [Fri, 10 Jul 2020 18:40:01 +0000 (14:40 -0400)]
zink: store valid timestamp bits onto zink_screen

we need this for converting timestamp ticks to nonoseconds

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

4 years agozink: handle VK_EXT_vertex_attribute_divisor setup
Mike Blumenkrantz [Thu, 9 Jul 2020 20:34:41 +0000 (16:34 -0400)]
zink: handle VK_EXT_vertex_attribute_divisor setup

this just enables the extension

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

4 years agozink: clamp PIPE_SHADER_CAP_MAX_SHADER_BUFFERS to PIPE_MAX_SHADER_BUFFERS
Mike Blumenkrantz [Thu, 2 Jul 2020 19:41:51 +0000 (15:41 -0400)]
zink: clamp PIPE_SHADER_CAP_MAX_SHADER_BUFFERS to PIPE_MAX_SHADER_BUFFERS

this value gets split between ssbos and abos, so clamping to 8 here causes
a number of tests to fail just because there's not enough buffers available

other gallium drivers return 32 here, so this seems pretty safe

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

4 years agozink: implement VK_EXT_robustness2
Mike Blumenkrantz [Thu, 2 Jul 2020 18:53:45 +0000 (14:53 -0400)]
zink: implement VK_EXT_robustness2

this adds support for null descriptors, which is necessary for full
compliance with ARB_texture_buffer_object

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

4 years agopan/mdg: Test for SSA before chasing addresses
Alyssa Rosenzweig [Fri, 31 Jul 2020 14:43:55 +0000 (10:43 -0400)]
pan/mdg: Test for SSA before chasing addresses

It's possible an SSA value depends on a register; in this case, chasing
the source would result in a crash as the chase helper in NIR asserts
is_ssa. Instead we should check a priori that all the argments are in
fact SSA, bailing otherwise.

In the piglit shader exhibiting this bug (by looping over the index),
bailing on the ishl instruction is -necessary-. This is not merely us
being cowardly to avoid seeing through the registers; indeed, if we
wrote away the ishl instruction, the shift itself would have to be
stored in a load/store register (r26/r27) which would preclude reading
it in the loop, creating a register allocation failure later in the
compile. So this is the correct solution due to the restricted
semantics.

Closes #3286

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reported-by: Icecream95 <ixn@keemail.me>
Fixes: f5401cb8866 ("pan/midgard: Add address analysis framework")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6144>

4 years agopan/mdg: Mask spills from texture write
Alyssa Rosenzweig [Fri, 31 Jul 2020 14:31:50 +0000 (10:31 -0400)]
pan/mdg: Mask spills from texture write

This prevents RA failures the results of reading multiple textures that
require less than 4 channels, as seen in a number of GL 3 WebRender shaders.

Closes: #3342
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reported-by: Icecream95 <ixn@keemail.me>
Tested-by: Icecream95 <ixn@keemail.me>
Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6144>

4 years agoswr: Bump maximum 2D texture size to 16kx16k
jzielins [Wed, 29 Jul 2020 11:27:00 +0000 (13:27 +0200)]
swr: Bump maximum 2D texture size to 16kx16k

This may be required by some applications, even though
not all texture formats will be below 2GB limit.

This change also increases the maximum size of render target,
that was inadvertently lowered some time ago.

Reviewed-by: Krzysztof Raszkowski <krzysztof.raszkowski@intel.com>
Reviewed-by: Bruce Cherniak <bruce.cherniak@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6139>

4 years agomesa/st: Actually free the driver part of memory objects on destruction.
Bas Nieuwenhuizen [Sat, 1 Aug 2020 01:13:55 +0000 (03:13 +0200)]
mesa/st: Actually free the driver part of memory objects on destruction.

_mesa_delete_memory_object(ctx, obj) == free(obj) but doesn't free the
part of the gallium driver.

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/1206
Fixes: 49f4ecc6777 "mesa/st: start adding memory object support"
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6148>

4 years agogallivm/nir: Lower uniforms to UBOs in llvm draw if the driver didn't request this...
Gert Wollny [Sun, 28 Jun 2020 16:18:19 +0000 (18:18 +0200)]
gallivm/nir: Lower uniforms to UBOs in llvm draw if the driver didn't request this already

When the llvm draw engine is used for draw shaders in st_program the driver
may not enable the cap PIPE_CAP_PACKED_UNIFORMS, so uniforms are not
be lowered to UBOs. However, llvm doesn't support nir_load_uniform, so lower
the uniforms to UBO now. The multiplier is set to 16 to be the same like in
the TGSI code path.

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

4 years agoandroid: freedreno: move a2xx disasm out of gallium
Mauro Rossi [Fri, 31 Jul 2020 07:19:56 +0000 (09:19 +0200)]
android: freedreno: move a2xx disasm out of gallium

Fixes the following building errors:

clang: error: no such file or directory: 'external/mesa/src/gallium/drivers/freedreno/a2xx/disasm-a2xx.c'
clang: error: no input files

FAILED: out/target/product/x86_64/obj/SHARED_LIBRARIES/gallium_dri_intermediates/LINKED/gallium_dri.so
ld.lld: error: undefined symbol: disasm_a2xx
>>> referenced by ir2_assemble.c:546 (external/mesa/src/gallium/drivers/freedreno/a2xx/ir2_assemble.c:546)
>>>               ir2_assemble.o:(assemble) in archive out/target/product/x86_64/obj/STATIC_LIBRARIES/libmesa_pipe_freedreno_intermediates/libmesa_pipe_freedreno.a
clang-9: error: linker command failed with exit code 1 (use -v to see invocation)

Fixes: f39afda1a7a ("freedreno: move a2xx disasm out of gallium")
Signed-off-by: Mauro Rossi <issor.oruam@gmail.com>
Acked-by: Rob Clark <robdclark@gmail.com>
Acked-by: Eric Engestrom <eric@engestrom.ch>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6151>

4 years agoandroid: freedreno/common: add support for libfreedreno_common static
Mauro Rossi [Thu, 30 Jul 2020 21:18:51 +0000 (23:18 +0200)]
android: freedreno/common: add support for libfreedreno_common static

Porting of meson build rules to Android

Fixes: 9623debf48a ("freedreno: Centralize UUID generation into new files freedreno_uuid.c/h")
Signed-off-by: Mauro Rossi <issor.oruam@gmail.com>
Acked-by: Rob Clark <robdclark@gmail.com>
Acked-by: Eric Engestrom <eric@engestrom.ch>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6151>

4 years agoandroid: freedreno/ir3: fix include paths
Mauro Rossi [Thu, 30 Jul 2020 20:38:17 +0000 (22:38 +0200)]
android: freedreno/ir3: fix include paths

Fixes the following building error:

external/mesa/src/freedreno/ir3/disasm-a3xx.c:33:10: fatal error: 'disasm.h' file not found
#include "disasm.h"
         ^~~~~~~~~~
1 error generated.

Fixes: f7bd3456d79 ("freedreno: deduplicate a3xx+ disasm")
Signed-off-by: Mauro Rossi <issor.oruam@gmail.com>
Acked-by: Rob Clark <robdclark@gmail.com>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6151>

4 years agoandroid: freedreno/registers: fix generated headers rules
Mauro Rossi [Thu, 30 Jul 2020 20:21:43 +0000 (22:21 +0200)]
android: freedreno/registers: fix generated headers rules

Fixes the following building errors:

FAILED: ninja: 'external/mesa/src/freedreno/registers/a2xx.xml',
needed by 'out/target/product/x86_64/gen/STATIC_LIBRARIES/libfreedreno_registers_intermediates/registers/a2xx.xml.h',
missing and no known rule to make it
...
FAILED: ninja: 'external/mesa/src/freedreno/registers/adreno-pm4-pack.xml.h',
needed by 'out/target/product/x86_64/gen/STATIC_LIBRARIES/libfreedreno_registers_intermediates/registers/adreno-pm4-pack.xml.h',
missing and no known rule to make it

Fixes: b721d336da9 ("freedreno: slurp in rnndb")
Signed-off-by: Mauro Rossi <issor.oruam@gmail.com>
Acked-by: Rob Clark <robdclark@gmail.com>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6151>

4 years agoanv: toggle on VK_EXT_extended_dynamic_state
Tapani Pälli [Wed, 10 Jun 2020 10:07:25 +0000 (13:07 +0300)]
anv: toggle on VK_EXT_extended_dynamic_state

Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5604>

4 years agoanv: dynamic vertex input binding stride and size support
Tapani Pälli [Tue, 2 Jun 2020 07:02:25 +0000 (10:02 +0300)]
anv: dynamic vertex input binding stride and size support

If pStrides or Psizes are NULL we should use the values defined by the
pipeline.

v2: fix commit message and fix the code to set explicitly if we are
    using dynamic stride/size

Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5604>

4 years agoanv: depth/stencil dynamic state support
Tapani Pälli [Mon, 1 Jun 2020 09:28:30 +0000 (12:28 +0300)]
anv: depth/stencil dynamic state support

v2: code cleanup, remove extra spaces (Lionel)

Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5604>

4 years agoanv: add support for dynamic primitive topology change
Tapani Pälli [Tue, 16 Jun 2020 05:37:26 +0000 (08:37 +0300)]
anv: add support for dynamic primitive topology change

This is done using 3DSTATE_VF_TOPOLOGY packet that overrides topology
used in subsequent 3DPRIMITIVE commands. For gen7[5] we override the
pipeline topology when emitting draw commands.

v2: fix the way gen7[5] is handled (Lionel)

Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5604>

4 years agoanv: add support for dynamic viewport and scissor with count
Tapani Pälli [Sun, 31 May 2020 10:54:47 +0000 (13:54 +0300)]
anv: add support for dynamic viewport and scissor with count

Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5604>

4 years agoanv: add support for dynamic cull mode and winding order
Tapani Pälli [Fri, 29 May 2020 07:20:18 +0000 (10:20 +0300)]
anv: add support for dynamic cull mode and winding order

v2: cleanup, white space issues (Lionel)

Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5604>

4 years agoanv: handle dynamic viewport count
Tapani Pälli [Wed, 10 Jun 2020 07:52:29 +0000 (10:52 +0300)]
anv: handle dynamic viewport count

Emit 3DSTATE_CLIP during cmd_buffer_flush_state so that we can change
the max viewport count dynamically.

v2: use one common clip state as size is the same for all gens (Lionel)

Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5604>

4 years agoanv: consider dynamic state when creating pipeline
Tapani Pälli [Tue, 9 Jun 2020 11:16:37 +0000 (14:16 +0300)]
anv: consider dynamic state when creating pipeline

Leave default state values as zero so that when we OR them later
it is only the dynamic state value that matters.

v2: code cleanup + skip topology emit in base batch
    when topology is dynamic (Lionel)

Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5604>

4 years agoanv: add new dynamic states
Tapani Pälli [Fri, 29 May 2020 06:43:55 +0000 (09:43 +0300)]
anv: add new dynamic states

Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5604>

4 years agoanv: add VK_EXT_extended_dynamic_state but leave it disabled
Tapani Pälli [Fri, 29 May 2020 08:57:07 +0000 (11:57 +0300)]
anv: add VK_EXT_extended_dynamic_state but leave it disabled

This is needed to ensure the function prototypes are declared.

v2: tweak commit message (Jason)

Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5604>

4 years agomeson: fix `-D xlib-lease=auto` detection
Eric Engestrom [Sat, 1 Aug 2020 11:41:30 +0000 (13:41 +0200)]
meson: fix `-D xlib-lease=auto` detection

This is used by Vulkan, not EGL, and depends on having DRM/KMS, not GBM.

Reported-by: Oschowa <oschowa@web.de>
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3346
Fixes: e00adef34a5ce485e2c9 ("egl: automatically compile the `drm` platform when available")
Signed-off-by: Eric Engestrom <eric@engestrom.ch>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6150>

4 years agoegl: consistently use dri2_egl_display() helper macro
Eric Engestrom [Tue, 10 Sep 2019 13:18:47 +0000 (14:18 +0100)]
egl: consistently use dri2_egl_display() helper macro

Signed-off-by: Eric Engestrom <eric.engestrom@intel.com>
Reviewed-by: Frank Binns <frank.binns@imgtec.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6133>

4 years agofreedreno/afuc: Fix PM4 enum parsing
Connor Abbott [Fri, 31 Jul 2020 09:07:17 +0000 (11:07 +0200)]
freedreno/afuc: Fix PM4 enum parsing

We were open-coding it, and getting variant parsing wrong for things
like "A4XX-" which don't explicitly include the version being
disassembled. Use the rnn function instead. This makes CP_INDIRECT show
up again. Also propagate const-ness to users.

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

4 years agofreedreno/afuc: Add missing rnn_prepdb()
Connor Abbott [Fri, 31 Jul 2020 10:11:16 +0000 (12:11 +0200)]
freedreno/afuc: Add missing rnn_prepdb()

It's totally not obvious, but this runs extra error checking and is
necessary for correct variant handling, and variant handling will
silently not work if it's not enabled. Add it asm.c even though it's not
strictly necessary, to prevent anyone from missing this in the future.

Missing this really should be an error.

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

4 years agofreedreno/cffdec: Stop open-coding enum parsing
Connor Abbott [Fri, 31 Jul 2020 09:45:09 +0000 (11:45 +0200)]
freedreno/cffdec: Stop open-coding enum parsing

Now that rnndec_decode_enum() has been fixed, it does the same thing as
this function.

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

4 years agofreedreno/rnn: Make rnn_decode_enum() respect variants
Connor Abbott [Fri, 31 Jul 2020 09:41:24 +0000 (11:41 +0200)]
freedreno/rnn: Make rnn_decode_enum() respect variants

We'll need this for afuc, and we're currently also open-coding the same
thing in rnnutils. It seems this function was added to decode pm4 packet
names, but it currently has no users, so make it useful for what it
was intended to do.

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

4 years agoegl/haiku: drop overwritten preset of EGL version
Eric Engestrom [Wed, 29 Jul 2020 14:57:33 +0000 (16:57 +0200)]
egl/haiku: drop overwritten preset of EGL version

`init_haiku()` is called by `eglInitialize()`, which then calls
`_eglComputeVersion()` (without even anything in between). The latter
sets the EGL version based on the extensions supported, and since Haiku
doesn't support any it will end up overwriting the same `1.4` value.

Signed-off-by: Eric Engestrom <eric@engestrom.ch>
Reviewed-by: Frank Binns <frank.binns@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6131>

4 years agoegl: const _eglDriver
Eric Engestrom [Thu, 30 Jul 2020 23:38:41 +0000 (01:38 +0200)]
egl: const _eglDriver

Converted using `s/_EGLDriver/const _EGLDriver/g` and dropped a couple
of irrelevant changes in comments, in the `_EGL_DRIVER_TYPECAST()` macro
and the typedef itself.

Signed-off-by: Eric Engestrom <eric@engestrom.ch>
Reviewed-by: Frank Binns <frank.binns@imgtec.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6129>

4 years agoegl: Allow software rendering for vgem/virtio_gpu in platform_device
Lepton Wu [Thu, 9 Jul 2020 18:49:33 +0000 (11:49 -0700)]
egl: Allow software rendering for vgem/virtio_gpu in platform_device

Then user could explicitly choose the underlying device for software
rendering when both vgem/virtio_vga are there.

Signed-off-by: Lepton Wu <lepton@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5830>

4 years agointel/tools: Test notification subregisters
Matt Turner [Thu, 16 Jul 2020 06:05:30 +0000 (23:05 -0700)]
intel/tools: Test notification subregisters

Reviewed-by: Sagar Ghuge <sagar.ghuge@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5956>

4 years agointel/tools: Simplify notification register handling
Matt Turner [Thu, 16 Jul 2020 05:55:35 +0000 (22:55 -0700)]
intel/tools: Simplify notification register handling

Reviewed-by: Sagar Ghuge <sagar.ghuge@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5956>

4 years agointel/tools: Don't hardcode notification register
Matt Turner [Thu, 16 Jul 2020 05:33:25 +0000 (22:33 -0700)]
intel/tools: Don't hardcode notification register

Previously we parsed a src non-terminal but did nothing with it. Since
the WAIT instruction is kind of weird, in that you have to give it the
same notification subregister for both destination and source, and it
always has an exec size of 1, let's parse a destination instead of a
source. This way, we can parse a writemask rather than a swizzle in
align16 mode, and easily convert the writemask to a swizzle to create
the source register.

Reviewed-by: Sagar Ghuge <sagar.ghuge@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5956>

4 years agointel/tools: Manually set ARF register file/nr/subnr
Matt Turner [Thu, 16 Jul 2020 05:21:09 +0000 (22:21 -0700)]
intel/tools: Manually set ARF register file/nr/subnr

brw_reg::subnr is in bytes, like the subnr field in the instruction
word, but we disassemble the subregister number in units of the type.
For example g0.3<1>F would have a subnr=12.

These non-terminals produce a brw_reg and feed into other non-terminals
that call brw_reg(), where they are passed the subnr that we set here.
brw_reg()'s subnr parameter is expected to be in terms of the register
type, and it is multiplied by the type size to calculate the subnr in
bytes.

In these non-terminals, we don't know the register type yet, so we
must store the subregister number as it was given to us in the .subnr
field and let the brw_reg() constructor handle the conversion to the
canonical byte-based subnr form when it knows the type.

Before this patch, subregister numbers applied to these registers would
be multiplied with the type size twice.

Reviewed-by: Sagar Ghuge <sagar.ghuge@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5956>

4 years agointel/tools: Pass integers, not enums, to stride()
Matt Turner [Wed, 8 Jul 2020 20:55:21 +0000 (13:55 -0700)]
intel/tools: Pass integers, not enums, to stride()

Reviewed-by: Sagar Ghuge <sagar.ghuge@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5956>

4 years agointel/compiler: Relax SENDS regioning assertions
Matt Turner [Wed, 15 Jul 2020 22:12:57 +0000 (15:12 -0700)]
intel/compiler: Relax SENDS regioning assertions

The next commit fixes a mistake in the assembler and ends up running
afoul of this assertion.

Reviewed-by: Sagar Ghuge <sagar.ghuge@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5956>

4 years agointel/tools: Simplify dstregion
Matt Turner [Wed, 15 Jul 2020 23:32:37 +0000 (16:32 -0700)]
intel/tools: Simplify dstregion

Reviewed-by: Sagar Ghuge <sagar.ghuge@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5956>

4 years agointel/tools: Simplify immediate handling
Matt Turner [Wed, 15 Jul 2020 23:23:13 +0000 (16:23 -0700)]
intel/tools: Simplify immediate handling

Reviewed-by: Sagar Ghuge <sagar.ghuge@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5956>

4 years agointel/tools: Make writemask an integer
Matt Turner [Wed, 15 Jul 2020 23:15:39 +0000 (16:15 -0700)]
intel/tools: Make writemask an integer

Reviewed-by: Sagar Ghuge <sagar.ghuge@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5956>

4 years agointel/tools: Make swizzle an integer
Matt Turner [Wed, 15 Jul 2020 23:13:27 +0000 (16:13 -0700)]
intel/tools: Make swizzle an integer

Reviewed-by: Sagar Ghuge <sagar.ghuge@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5956>

4 years agointel/tools: Simplify register type handling
Matt Turner [Wed, 8 Jul 2020 20:26:21 +0000 (13:26 -0700)]
intel/tools: Simplify register type handling

Produce a brw_reg_type rather than a whole brw_reg and rename a few
non-terminals.

Reviewed-by: Sagar Ghuge <sagar.ghuge@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5956>

4 years agointel/tools: Don't allow empty type specifier
Matt Turner [Wed, 8 Jul 2020 20:15:19 +0000 (13:15 -0700)]
intel/tools: Don't allow empty type specifier

It's preferable to require an explicit type.

Reviewed-by: Sagar Ghuge <sagar.ghuge@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5956>

4 years agointel/tools: Remove stray newline
Matt Turner [Wed, 8 Jul 2020 20:33:13 +0000 (13:33 -0700)]
intel/tools: Remove stray newline

Reviewed-by: Sagar Ghuge <sagar.ghuge@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5956>

4 years agointel/tools: Fix typos
Matt Turner [Wed, 8 Jul 2020 20:10:13 +0000 (13:10 -0700)]
intel/tools: Fix typos

Reviewed-by: Sagar Ghuge <sagar.ghuge@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5956>

4 years agopan/bit: Remove BI_SHIFT stub
Alyssa Rosenzweig [Fri, 31 Jul 2020 14:13:14 +0000 (10:13 -0400)]
pan/bit: Remove BI_SHIFT stub

Fixes compile error with -Dtools=panfrost

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Fixes: 946ff9b4396 ("bifrost: Add support for nir_op_ishl")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6142>

4 years agopan/bit: Update f32->f16 convert test
Alyssa Rosenzweig [Fri, 31 Jul 2020 00:22:56 +0000 (20:22 -0400)]
pan/bit: Update f32->f16 convert test

Needs a second argument to be consistent with the real IR and the
hardware instruction.

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Fixes: 8a4efe2d730 ("pan/bi: Pack second argument of F32_TO_F16")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6142>

4 years agoci: Set date in LAVA DUTs from NTP servers
Tomeu Vizoso [Fri, 31 Jul 2020 04:51:47 +0000 (06:51 +0200)]
ci: Set date in LAVA DUTs from NTP servers

The MinIO server is sometimes complaining about the submitted date being
too off.

Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Reviewed-by: Daniel Stone <daniels@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6135>

4 years agodocs: Explain how to set up a personal gitlab runner.
Eric Anholt [Mon, 20 Jul 2020 16:32:16 +0000 (09:32 -0700)]
docs: Explain how to set up a personal gitlab runner.

I'm not the only one doing it, so document it, especially since there's a
new trick as of
https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5669

Reviewed-by: Andres Gomez <agomez@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5988>

4 years agofreedreno/a6xx: Fix CP_BIN_SIZE_ADDRESS name
Connor Abbott [Thu, 30 Jul 2020 10:36:30 +0000 (12:36 +0200)]
freedreno/a6xx: Fix CP_BIN_SIZE_ADDRESS name

Also document some other registers gleaned from looking at the context
switch save/restore routines and fix CP_SDS_REM_SIZE, and make the names
line up with the CP perfcntr names. Note that the CP reads the draw
stream size in CP_SET_BIN_DATA5 using MEM_READ_ADDR, which is probably
why this was mistaken for the draw stream size address.

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

4 years agoi965/i915: Add colorspace support to YUV sampling
David Stevens [Thu, 30 Jul 2020 09:44:41 +0000 (18:44 +0900)]
i965/i915: Add colorspace support to YUV sampling

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

4 years agonir: Add colorspace support to YUV lowering pass
David Stevens [Wed, 8 Jul 2020 04:23:22 +0000 (13:23 +0900)]
nir: Add colorspace support to YUV lowering pass

This change adds support for BT709 and BT2020 colorspace to the YUV
lowering pass. The default remains BT601.

This change also fixes minor imprecision in the last digits of the BT601
offsets due to computation from rounded values when the math was
simplified.

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

4 years agozink: add extension loading framework for spirv builder
Mike Blumenkrantz [Fri, 17 Jul 2020 13:50:35 +0000 (09:50 -0400)]
zink: add extension loading framework for spirv builder

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

4 years agopan/mdg: emit REGISTER_UNUSED on unused ALU src2
Italo Nicola [Thu, 30 Jul 2020 23:24:06 +0000 (23:24 +0000)]
pan/mdg: emit REGISTER_UNUSED on unused ALU src2

This saves power and time by skipping a roundtrip to the register file.

Signed-off-by: Italo Nicola <italonicola@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6128>

4 years agomapi: Return NULL function pointers for GL_EXT_debug_marker
Lepton Wu [Thu, 25 Jun 2020 20:52:24 +0000 (13:52 -0700)]
mapi: Return NULL function pointers for GL_EXT_debug_marker

Mesa returns a stub function pointer to glAnything for years.
Android framework till API level 30 just uses function pointers
returned from eglGetProcAddress without checking if the underlying
extension is supported. If we return stub pointers for functions
in GL_EXT_debug_marker, Android just uses our stub functions instead
of its own stubs and then fail the dEQP. In the past, the issue
didn't show up because mesa only has limited slots and run out of slots
before Android calls eglGetProcAddress on functions inside
GL_EXT_debug_marker.

Signed-off-by: Lepton Wu <lepton@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5652>

4 years agoegl: drop left-over function prototype
Eric Engestrom [Tue, 21 Jul 2020 23:26:02 +0000 (01:26 +0200)]
egl: drop left-over function prototype

Signed-off-by: Eric Engestrom <eric@engestrom.ch>
Reviewed-by: Marcin Ślusarz <marcin.slusarz@intel.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6037>

4 years agoegl: rename _eglMatchDriver() to _eglInitializeDisplay()
Eric Engestrom [Tue, 21 Jul 2020 23:19:03 +0000 (01:19 +0200)]
egl: rename _eglMatchDriver() to _eglInitializeDisplay()

... and fix the comment to better reflect what this really does.

The whole "match a driver at runtime" thing has been gone for years.

Signed-off-by: Eric Engestrom <eric@engestrom.ch>
Reviewed-by: Marcin Ślusarz <marcin.slusarz@intel.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6037>

4 years agoegl: inline _eglMatchAndInitialize() and refactor _eglMatchDriver()
Eric Engestrom [Tue, 21 Jul 2020 23:13:13 +0000 (01:13 +0200)]
egl: inline _eglMatchAndInitialize() and refactor _eglMatchDriver()

Signed-off-by: Eric Engestrom <eric@engestrom.ch>
Reviewed-by: Marcin Ślusarz <marcin.slusarz@intel.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6037>

4 years agoegl: fix _eglMatchDriver() return type
Eric Engestrom [Tue, 21 Jul 2020 22:51:51 +0000 (00:51 +0200)]
egl: fix _eglMatchDriver() return type

The one caller only ever checks if the return value is NULL or not, so
let's simplify the function by only returning that information.

Signed-off-by: Eric Engestrom <eric@engestrom.ch>
Reviewed-by: Marcin Ślusarz <marcin.slusarz@intel.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6037>

4 years agoegl: drop unnecessary _eglGetDriver()
Eric Engestrom [Tue, 21 Jul 2020 23:09:56 +0000 (01:09 +0200)]
egl: drop unnecessary _eglGetDriver()

Signed-off-by: Eric Engestrom <eric@engestrom.ch>
Reviewed-by: Marcin Ślusarz <marcin.slusarz@intel.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6037>

4 years agoegl: replace _eglInitDriver() with a simple variable
Eric Engestrom [Tue, 21 Jul 2020 23:06:05 +0000 (01:06 +0200)]
egl: replace _eglInitDriver() with a simple variable

Signed-off-by: Eric Engestrom <eric@engestrom.ch>
Reviewed-by: Marcin Ślusarz <marcin.slusarz@intel.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6037>

4 years agopan/mdg: remove ins->br_compact and ins->branch_extended
Italo Nicola [Wed, 29 Jul 2020 20:37:15 +0000 (20:37 +0000)]
pan/mdg: remove ins->br_compact and ins->branch_extended

Signed-off-by: Italo Nicola <italonicola@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5933>

4 years agopan/mdg: defer branch packing
Italo Nicola [Wed, 29 Jul 2020 20:14:55 +0000 (20:14 +0000)]
pan/mdg: defer branch packing

Signed-off-by: Italo Nicola <italonicola@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5933>

4 years agopan/mdg: refactor emit_alu_bundle
Italo Nicola [Wed, 29 Jul 2020 20:50:21 +0000 (20:50 +0000)]
pan/mdg: refactor emit_alu_bundle

This refactor prepares emit_alu_bundle() for the next commit that
reconstructs branch instructions right before emission.
It also simplifies the code since the previous control flow was only
better when we had the prepacked fields in midgard_instruction.

Signed-off-by: Italo Nicola <italonicola@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5933>

4 years agopan/mdg: remove ins->alu
Italo Nicola [Thu, 23 Jul 2020 14:02:55 +0000 (14:02 +0000)]
pan/mdg: remove ins->alu

This commit removes the `ins->alu` field from midgard_instruction,
simplifying the code by just recreating midgard_vector_alu later when we
have to emit it.

Signed-off-by: Italo Nicola <italonicola@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5933>

4 years agopan/mdg: externalize mir_pack_mod
Italo Nicola [Thu, 30 Jul 2020 16:20:26 +0000 (16:20 +0000)]
pan/mdg: externalize mir_pack_mod

midgard_print.c requires mir_pack_mod to remove references to ins->alu.

Signed-off-by: Italo Nicola <italonicola@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5933>

4 years agopan/mdg: defer register packing
Italo Nicola [Thu, 30 Jul 2020 16:57:55 +0000 (16:57 +0000)]
pan/mdg: defer register packing

This commit moves the packing of registers and other things from
install_registers_instr() to midgard_emit.c, right before emitting the
binary.

Signed-off-by: Italo Nicola <italonicola@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5933>

4 years agopan/mdg: eliminate references to ins->load_store.op
Italo Nicola [Thu, 23 Jul 2020 19:24:39 +0000 (19:24 +0000)]
pan/mdg: eliminate references to ins->load_store.op

This commit makes `ins->op` the correct field to use with load_store
instructions.

Signed-off-by: Italo Nicola <italonicola@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5933>

4 years agopan/mdg: eliminate references to ins->texture.op
Italo Nicola [Wed, 29 Jul 2020 19:10:25 +0000 (19:10 +0000)]
pan/mdg: eliminate references to ins->texture.op

This commit makes the `ins->op` the correct field to use with texture
instructions.

Signed-off-by: Italo Nicola <italonicola@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5933>

4 years agopan/mdg: apply float outmods to textures
Italo Nicola [Wed, 15 Jul 2020 18:48:42 +0000 (18:48 +0000)]
pan/mdg: apply float outmods to textures

Texture instructions in midgard support float outmods, this commit makes
it so these instructions are emitted when the conditions are met.

Signed-off-by: Italo Nicola <italonicola@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5933>

4 years agopan/mdg: eliminate references to ins->alu.outmod
Italo Nicola [Wed, 15 Jul 2020 18:43:18 +0000 (18:43 +0000)]
pan/mdg: eliminate references to ins->alu.outmod

In an effort to simplify MIR by not prepacking instructions, this commit
removes references to `ins->alu.outmod` so that we can later remove the
`ins->alu` field from midgard_instruction.
Every place that was using `ins->alu.outmod` was changed to now use the
generic `ins->outmod` field instead.
We then reconstruct the outmod field right before emission.

Signed-off-by: Italo Nicola <italonicola@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5933>

4 years agopan/mdg: fix comment
Italo Nicola [Wed, 15 Jul 2020 09:23:18 +0000 (09:23 +0000)]
pan/mdg: fix comment

Signed-off-by: Italo Nicola <italonicola@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5933>

4 years agopan/mdg: eliminate references to ins->alu.reg_mode
Italo Nicola [Fri, 10 Jul 2020 09:36:58 +0000 (09:36 +0000)]
pan/mdg: eliminate references to ins->alu.reg_mode

In an effort to simplify MIR by not prepacking instructions, this commit
removes references to `ins->alu.reg_mode` so that we can later remove
the `ins->alu` field from midgard_instruction.
Every place that was using reg_mode was changed to now use the generic
`ins->src_type` field instead.
We then reconstruct the reg_mode field right before emission.

Signed-off-by: Italo Nicola <italonicola@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5933>

4 years agopan/mdg: eliminate references to ins->alu.op
Italo Nicola [Thu, 9 Jul 2020 12:02:57 +0000 (12:02 +0000)]
pan/mdg: eliminate references to ins->alu.op

In an effort to simplify MIR by not prepacking instructions, this commit
removes references to `ins->alu.op` so that we can later remove the
`ins->alu` field from midgard_instruction.
Every place that was using ins->op was changed to now use the generic
`ins->op` field instead.
We then reconstruct the `alu.op` field right before emission.
This new field is generic and can contain opcodes for ALU, texture or
load/store instructions. It should be used in conjunction with
`ins->type`, just like the current prepacked `op` field.

Signed-off-by: Italo Nicola <italonicola@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5933>

4 years agopan/mdg: prepare effective_writemask()
Italo Nicola [Fri, 10 Jul 2020 16:07:06 +0000 (16:07 +0000)]
pan/mdg: prepare effective_writemask()

In the next commits we will be removing the `alu` field from
midgard_instruction in order to simplify the code.
effective_writemask() doesn't actually use `alu` for anything, it only
needs to know the opcode.

Signed-off-by: Italo Nicola <italonicola@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5933>

4 years agopan/mdg: fix src_type in instructions that need a implicit zero
Italo Nicola [Fri, 10 Jul 2020 14:51:52 +0000 (14:51 +0000)]
pan/mdg: fix src_type in instructions that need a implicit zero

We were incorrectly assuming uint32 for src_type[1] regardless of
src_type[0].

Signed-off-by: Italo Nicola <italonicola@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5933>

4 years agodrm-shim: Return -EINVAL instead of abort()ing on unknown ioctls.
Eric Anholt [Mon, 20 Jul 2020 18:21:36 +0000 (11:21 -0700)]
drm-shim: Return -EINVAL instead of abort()ing on unknown ioctls.

I had this as abort() in my original implementation since I was doing
drm-shim and my kernel driver in parallel based around using a SW
simulator, and I wanted to always update both, but it means that people's
new feature detection code can easily end up breaing their drm-shim
shader-db runs (such as intel's kernel_has_dynamic_config_support()
checking for -ENOENT instead of -EINVAL for a feature, which showed up on
my personal runner but not fd.o's for reasons I'm unclear on).

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

4 years agou_prim_restart: handle indirect draws
Mike Blumenkrantz [Sat, 11 Jul 2020 15:19:43 +0000 (11:19 -0400)]
u_prim_restart: handle indirect draws

this is pretty gross, but we need to map the indirect buffer to get the
index info and then use that for mapping the index buffer and translating
the restart index

Reviewed-by: Dave Airlie <airlied@redhat.com>
Acked-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5886>

4 years agopanfrost: Android build fixes 2020 week 31
Roman Stratiienko [Tue, 28 Jul 2020 21:01:39 +0000 (00:01 +0300)]
panfrost: Android build fixes 2020 week 31

Signed-off-by: Roman Stratiienko <r.stratiienko@gmail.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6109>

4 years agoaco: optimize swizzled SALU 8/16-bit conversions
Rhys Perry [Fri, 29 May 2020 13:26:50 +0000 (14:26 +0100)]
aco: optimize swizzled SALU 8/16-bit conversions

We only need one s_bfe for a conversion with a swizzled source.

shader-db (parallel-rdp, Navi):
Totals from 487 (71.30% of 683) affected shaders:
SpillSGPRs: 3284 -> 3233 (-1.55%); split: -2.71%, +1.16%
SpillVGPRs: 2174 -> 2150 (-1.10%); split: -1.24%, +0.14%
CodeSize: 2497864 -> 2445544 (-2.09%); split: -2.11%, +0.01%
Instrs: 450613 -> 445104 (-1.22%); split: -1.27%, +0.05%

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

4 years agoradv: fix build on Android 7 (v2)
Mauro Rossi [Thu, 23 Jul 2020 20:50:32 +0000 (22:50 +0200)]
radv: fix build on Android 7 (v2)

Fixes the following building error:

external/mesa/src/amd/vulkan/radv_android.c:28:10: fatal error:
'vndk/hardware_buffer.h' file not found
         ^~~~~~~~~~~~~~~~~~~~~~~~

(v2) use the existing preprocessor condition #if ANDROID_API_LEVEL >= 26

Fixes: f36b527 "radv/android: Add android hardware buffer queries."
Reported-and-tested-by: youling 257 <youling257@gmail.com>
Signed-off-by: Mauro Rossi <issor.oruam@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6051>

4 years agonir: Get rid of __[u]int64_to_fp32() and __fp32_to_[u]int64()
Boris Brezillon [Tue, 21 Jul 2020 12:30:41 +0000 (14:30 +0200)]
nir: Get rid of __[u]int64_to_fp32() and __fp32_to_[u]int64()

Those are now handled by nir_lower_int64() which has native NIR
implementations.

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Acked-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5588>

4 years agointel: Set int64_options to ~0 when lowering 64b ops
Boris Brezillon [Mon, 13 Jul 2020 18:57:04 +0000 (20:57 +0200)]
intel: Set int64_options to ~0 when lowering 64b ops

That's more future proof than setting each bit manually. Looks like we
already miss nir_lower_ufind_msb64 because of that.

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Acked-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5588>

4 years agonir: Extend nir_lower_int64() to support i2f/f2i lowering
Boris Brezillon [Fri, 19 Jun 2020 15:28:09 +0000 (17:28 +0200)]
nir: Extend nir_lower_int64() to support i2f/f2i lowering

That's an attempt at replacing the complex __int64_to_float() and
__float_to_int64() implementations found in float64.glsl by a simpler
native NIR equivalent.

Thanks to that, we can have lower those conversion without having to
compile a GLSL shader, which would be quite annoying for OpenCL
kernels.

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Acked-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5588>

4 years agonir: Stop passing an options arg to nir_lower_int64()
Boris Brezillon [Mon, 13 Jul 2020 18:28:16 +0000 (20:28 +0200)]
nir: Stop passing an options arg to nir_lower_int64()

This information is exposed through shader->options->lower_int64_options.
Removing the extra arg forces drivers to initialize this field correctly.

This also allows us to check the int64 lowering options from each int64
lowering helper and decide if we should lower the instructions we
introduce.

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Rob Clark <robdclark@chromium.org>
Acked-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5588>

4 years agofreedreno: Initialize lower_int64_options to a proper value
Boris Brezillon [Tue, 28 Jul 2020 08:26:54 +0000 (10:26 +0200)]
freedreno: Initialize lower_int64_options to a proper value

We're trying to get rid of the options argument passed to
nir_lower_int64() and use the nir_options.lower_int64_options instead.
But before we can do that we must patch nir_lower_int64() callers
that don't have this field properly set.

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Rob Clark <robdclark@chromium.org>
Acked-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5588>