mesa.git
19 months agoglx/drisw: fix shm put image fallback
Dave Airlie [Mon, 24 Feb 2020 00:29:46 +0000 (10:29 +1000)]
glx/drisw: fix shm put image fallback

The fallback to the non-shm put path used the wrong width here
as the pixmap is still allocated in a shared segment, so the
width needs to reflect that.

Fixes: 02c3dad0f3b4 ("Call shmget() with permission 0600 instead of 0777")
Reviewed-by: Michel Dänzer <mdaenzer@redhat.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3823>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3823>

19 months agoglx/drisw: return false if shmid == -1
Dave Airlie [Mon, 24 Feb 2020 00:19:51 +0000 (10:19 +1000)]
glx/drisw: return false if shmid == -1

If an attempt to create an shm pixmap in XCreateDrawable fails
then it ends up with the shmid == -1. This means the get image
path needs to fallback so return false in this case to use the
non-shm get image path.

Fixes: 02c3dad0f3b4 ("Call shmget() with permission 0600 instead of 0777")
Reviewed-by: Michel Dänzer <mdaenzer@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3823>

19 months agoglx/drisw: add getImageShm2 path
Dave Airlie [Fri, 14 Feb 2020 05:03:24 +0000 (15:03 +1000)]
glx/drisw: add getImageShm2 path

This adds return values to the get image path, so the caller can fallback.

Fixes: 02c3dad0f3b4 ("Call shmget() with permission 0600 instead of 0777")
Reviewed-by: Michel Dänzer <mdaenzer@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3823>

19 months agodri: add another get shm variant.
Dave Airlie [Fri, 14 Feb 2020 05:00:13 +0000 (15:00 +1000)]
dri: add another get shm variant.

When Brian in 02c3dad0f3b4d26e0faa5cc51d06bc50d693dcdc restricted
the shm permissions it means we hit the fallback paths in some
scenarios we hadn't before.

When you use Xephyr to xdmcp from one user to another the new perms
stop the X server (running as user a) attaching to the SHM segments
from gnome-shell (running as user b).

In this case however only the GLX side of the code had insight into this,
and the dri could was meant of fall back, and it worked for put image
fine but the get image path was broken, since there was no indication
in the broken case of the need to fallback.

This adds a return type to a new interface member that lets the
caller know it has to fallback.

Fixes: 02c3dad0f3b4 ("Call shmget() with permission 0600 instead of 0777")
Reviewed-by: Michel Dänzer <mdaenzer@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3823>

19 months agoci: Blacklist another freedreno flaky test.
Eric Anholt [Mon, 24 Feb 2020 23:57:31 +0000 (15:57 -0800)]
ci: Blacklist another freedreno flaky test.

This is the recurring flake from the last week, including spuriously
failing a pipeline once.

Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3937>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3937>

19 months agointel/isl: Add isl_aux_info.c to Makefile.sources
Jason Ekstrand [Mon, 24 Feb 2020 23:46:29 +0000 (17:46 -0600)]
intel/isl: Add isl_aux_info.c to Makefile.sources

This should fix the Android build.

Fixes: 58d4749e56 "isl: Add a module which manages aux resolves"
Reviewed-by: Nanley Chery <nanley.g.chery@intel.com>
Reported-by: Clayton Craft <clayton.a.craft@intel.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3934>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3934>

19 months agointel/blorp: Implement GEN:BUG:1605967699.
Rafael Antognolli [Wed, 19 Feb 2020 17:15:49 +0000 (09:15 -0800)]
intel/blorp: Implement GEN:BUG:1605967699.

v2:
 - Update comments and refactor code (Lionel).
 - Only apply workaround to stencil resolves.

Acked-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3909>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3909>

19 months agogallium/util: remove unused debug_print_foo helpers
Erik Faye-Lund [Wed, 19 Feb 2020 11:46:25 +0000 (12:46 +0100)]
gallium/util: remove unused debug_print_foo helpers

These are unused, so let's just get rid of them.

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

19 months agogallium/util: do not use debug_print_format
Erik Faye-Lund [Wed, 19 Feb 2020 11:42:38 +0000 (12:42 +0100)]
gallium/util: do not use debug_print_format

These are the only two places we use this macro, and it's no longer very
gallium-specific. So let's get rid of this, and just use debug_printf
and util_format_name directly instead.

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

19 months agoutil: move debug_memory_{begin,end} to os_memory_debug.h
Erik Faye-Lund [Wed, 19 Feb 2020 11:51:08 +0000 (12:51 +0100)]
util: move debug_memory_{begin,end} to os_memory_debug.h

This is where the other debug_memory_* functions are declared, so let's
move it here for symmetry.

This allows us to drop an include of u_debug_gallium.h, which makes us
depend on gallium-headers in non-gallium code.

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

19 months agohud: add GALLIUM_HUD_SCALE
Jonathan Marek [Tue, 21 Jan 2020 02:16:13 +0000 (21:16 -0500)]
hud: add GALLIUM_HUD_SCALE

Scale hud by an integer factor, for high DPI displays.

Signed-off-by: Jonathan Marek <jonathan@marek.ca>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3931>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3931>

19 months agoturnip: move tile_load_ib/sysmem_clear_ib into draw_cs
Jonathan Marek [Mon, 24 Feb 2020 15:56:50 +0000 (10:56 -0500)]
turnip: move tile_load_ib/sysmem_clear_ib into draw_cs

Avoids having to calculate reserved sizes for substream cs, also matches
what the blob does.

Signed-off-by: Jonathan Marek <jonathan@marek.ca>
Reviewed-by: Eric Anholt <eric@anholt.net>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3925>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3925>

19 months agoturnip: make cond_exec helper easier to use
Jonathan Marek [Mon, 24 Feb 2020 14:40:56 +0000 (09:40 -0500)]
turnip: make cond_exec helper easier to use

Signed-off-by: Jonathan Marek <jonathan@marek.ca>
Reviewed-by: Eric Anholt <eric@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3925>

19 months agoturnip: remove marker seqno
Jonathan Marek [Mon, 24 Feb 2020 14:14:07 +0000 (09:14 -0500)]
turnip: remove marker seqno

Use robclark's new crashdec/devcoredump thing instead.

Note: not sure this ever really worked because it didn't WFI.

Signed-off-by: Jonathan Marek <jonathan@marek.ca>
Reviewed-by: Eric Anholt <eric@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3925>

19 months agoturnip: automatically reserve cmdstream space in emit_pkt4/emit_pkt7
Jonathan Marek [Mon, 24 Feb 2020 14:02:41 +0000 (09:02 -0500)]
turnip: automatically reserve cmdstream space in emit_pkt4/emit_pkt7

Signed-off-by: Jonathan Marek <jonathan@marek.ca>
Reviewed-by: Eric Anholt <eric@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3925>

19 months agoturnip: add tu_device pointer to tu_cs
Jonathan Marek [Mon, 24 Feb 2020 13:57:00 +0000 (08:57 -0500)]
turnip: add tu_device pointer to tu_cs

Signed-off-by: Jonathan Marek <jonathan@marek.ca>
Reviewed-by: Eric Anholt <eric@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3925>

19 months agoturnip: fix COND_EXEC reserved size in tu_query
Jonathan Marek [Mon, 24 Feb 2020 15:26:02 +0000 (10:26 -0500)]
turnip: fix COND_EXEC reserved size in tu_query

Conditionally executed dwords must be in the same bo.

Signed-off-by: Jonathan Marek <jonathan@marek.ca>
Reviewed-by: Eric Anholt <eric@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3925>

19 months agofreedreno/computerator: add computerator
Rob Clark [Sun, 23 Feb 2020 19:53:32 +0000 (11:53 -0800)]
freedreno/computerator: add computerator

A standalone tool to compile and run compute shaders from ir3 assembly.
Mostly to have an easy way to experiment with instructions.

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

19 months agofreedreno/ir3: allow block->predecessors to be null
Rob Clark [Sun, 23 Feb 2020 19:52:02 +0000 (11:52 -0800)]
freedreno/ir3: allow block->predecessors to be null

This way we can also use ir3_print from computerator, which mostly
bypasses the ir3_block construct (since it doesn't need to do
scheduling, etc)

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

19 months agofreedreno/computerator: rename prefix asm->ir3
Rob Clark [Sun, 23 Feb 2020 19:51:17 +0000 (11:51 -0800)]
freedreno/computerator: rename prefix asm->ir3

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

19 months agofreedreno/computerator: polish out some of the rust
Rob Clark [Sun, 23 Feb 2020 19:47:01 +0000 (11:47 -0800)]
freedreno/computerator: polish out some of the rust

Updates for differences between fdre-a3xx's early version of ir3, and
what we have now in mesa.  And updates for instruction name and syntax
changes.

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

19 months agofreedreno/computerator: import parser/lexer from fdre-a3xx
Rob Clark [Fri, 21 Feb 2020 22:31:39 +0000 (14:31 -0800)]
freedreno/computerator: import parser/lexer from fdre-a3xx

Import the rusty old parser from freedreno.git

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

19 months agolima: remove its hash table entry when invalidating a resource
Icenowy Zheng [Sat, 22 Feb 2020 08:54:56 +0000 (16:54 +0800)]
lima: remove its hash table entry when invalidating a resource

When a resouce is already invalidated, its hash table entry becomes
useless. In addition, the lima_job_free() function won't remove the hash
table entry for invalidated resource. So the hash entry should be
removed when invalidating the resource, otherwise bogus hash entry might
be left in the table, and when the resource is reused in another job,
the code will find the freed job when invalidating and thus result in crash.

Fixes: c64994433c0d ("lima: track write submits of context (v3)")
Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
Reviewed-by: Vasily Khoruzhick <anarsoul@gmail.com>
Reviewed-by: Qiang Yu <yuq825@gmail.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3917>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3917>

19 months agonir, intel: Move use_scoped_memory_barrier to nir_options
Caio Marcelo de Oliveira Filho [Sat, 11 Jan 2020 00:25:02 +0000 (16:25 -0800)]
nir, intel: Move use_scoped_memory_barrier to nir_options

This option will be used later by GLSL, so move to a common struct.

Because nir_options is filled in the compiler instead of the Vulkan
driver, fix that up.  GLSL will ignore that for now.

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

19 months agonir/tests: Use nir_scoped_memory_barrier() helper
Caio Marcelo de Oliveira Filho [Thu, 9 Jan 2020 18:05:31 +0000 (10:05 -0800)]
nir/tests: Use nir_scoped_memory_barrier() helper

Most of the vars tests already had a local helper, so just drop it in
favor of the one in nir_builder.  Remaining two tests changed to use
the helper.

The load_store_vectorizer tests were using the specific memory
barriers, but since scoped barriers are also handled, prefer that.

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

19 months agonir: Add the alias NIR_MEMORY_ACQ_REL
Caio Marcelo de Oliveira Filho [Thu, 9 Jan 2020 18:03:12 +0000 (10:03 -0800)]
nir: Add the alias NIR_MEMORY_ACQ_REL

This will help upcoming C++ code that will have to combine those two
semantics.  In C++ it is not possible to do this without a cast or
adding an operator| to the enum.  Since having the short form will
also be convient to C, we picked the former solution.

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

19 months agonir/builder: Add nir_scoped_memory_barrier()
Caio Marcelo de Oliveira Filho [Thu, 9 Jan 2020 18:01:53 +0000 (10:01 -0800)]
nir/builder: Add nir_scoped_memory_barrier()

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

19 months agofreedreno: Switch to using lowered image intrinsics.
Eric Anholt [Wed, 5 Feb 2020 22:54:42 +0000 (14:54 -0800)]
freedreno: Switch to using lowered image intrinsics.

This cuts out a bunch of deref chain walking that the compiler can do for
us.

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

19 months agonir: Move intel's intrinsic_image_coordinate_components() to core nir.
Eric Anholt [Wed, 5 Feb 2020 23:46:40 +0000 (15:46 -0800)]
nir: Move intel's intrinsic_image_coordinate_components() to core nir.

This is a query that both Intel and freedreno need to do.  We can simplify
it a lot with the new glsl_get_sampler_dim_coordinate_components()

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

19 months agofreedreno/ir3: Fix the arg to ir3_get_num_components_for_image_format()
Eric Anholt [Wed, 5 Feb 2020 23:01:01 +0000 (15:01 -0800)]
freedreno/ir3: Fix the arg to ir3_get_num_components_for_image_format()

GLuint worked fine for storing our enum, but it should be an enum
pipe_format since the image-formats merge.

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

19 months agoprog_to_nir: Reuse glsl_get_sampler_dim_coordinate_components().
Eric Anholt [Wed, 5 Feb 2020 22:45:33 +0000 (14:45 -0800)]
prog_to_nir: Reuse glsl_get_sampler_dim_coordinate_components().

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

19 months agotgsi_to_nir: Reuse glsl_get_sampler_dim_coordinate_components().
Eric Anholt [Wed, 5 Feb 2020 22:45:33 +0000 (14:45 -0800)]
tgsi_to_nir: Reuse glsl_get_sampler_dim_coordinate_components().

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

19 months agofreedreno/ir3: Reuse glsl_get_sampler_dim_coordinate_components() in tex_info.
Eric Anholt [Wed, 5 Feb 2020 22:43:35 +0000 (14:43 -0800)]
freedreno/ir3: Reuse glsl_get_sampler_dim_coordinate_components() in tex_info.

Now that we have access to the interior switch statement not going through
the txs special case for coord_components, we can just use it.

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

19 months agospirv_to_nir: Reuse glsl_sampler_dim_coordinate_components().
Eric Anholt [Wed, 5 Feb 2020 22:41:14 +0000 (14:41 -0800)]
spirv_to_nir: Reuse glsl_sampler_dim_coordinate_components().

We just needed to move the SUBPASS_MS case in, and the rest of the cases
match up.

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

19 months agoglsl: Factor out the sampler dim coordinate components switch statement.
Eric Anholt [Wed, 5 Feb 2020 22:36:01 +0000 (14:36 -0800)]
glsl: Factor out the sampler dim coordinate components switch statement.

I want to reuse this in NIR image intrinsics in backends, which just have
dim/is_array.

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

19 months agov3d: Ask the state tracker to lower image accesses off of derefs.
Eric Anholt [Fri, 24 Jan 2020 00:33:24 +0000 (16:33 -0800)]
v3d: Ask the state tracker to lower image accesses off of derefs.

This saves a bunch of hassle in handling derefs in the backend, and would
be needed for reasonable handling of dynamic indexing of image arrays.

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

19 months agogallium: Add a cap for enabling lowering of image load/store intrinsics.
Eric Anholt [Thu, 23 Jan 2020 18:52:39 +0000 (10:52 -0800)]
gallium: Add a cap for enabling lowering of image load/store intrinsics.

The deref stuff is hard to handle in a backend supporting dynamic
indexing, while the lowering can easily turn that into the same kind of
dynamic indexing we do for textures, UBOs, and SSBOs.

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

19 months agonir: Make image lowering optionally handle the !bindless case as well.
Eric Anholt [Thu, 23 Jan 2020 18:49:02 +0000 (10:49 -0800)]
nir: Make image lowering optionally handle the !bindless case as well.

iris was doing this internally, but let's rename the function and move the
iris code there.

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

19 months agonir: Rename gl_nir_lower_bindless_images.c in preparation for extending it.
Eric Anholt [Thu, 23 Jan 2020 18:42:15 +0000 (10:42 -0800)]
nir: Rename gl_nir_lower_bindless_images.c in preparation for extending it.

The bulk of it can be reused to implement iris's internal non-bindless
image lowering, which I would like to reuse in freedreno, v3d, and
nir-to-tgsi.

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

19 months agoi965: Use isl_aux_state_transition_write()
Nanley Chery [Fri, 21 Feb 2020 19:49:55 +0000 (11:49 -0800)]
i965: Use isl_aux_state_transition_write()

v2. Dirty shadow miptrees independent of aux. (Jason)

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

19 months agoi965: Use ISL's access preparation functions
Nanley Chery [Fri, 8 Nov 2019 23:11:05 +0000 (15:11 -0800)]
i965: Use ISL's access preparation functions

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

19 months agoiris: Use isl_aux_state_transition_write()
Nanley Chery [Fri, 8 Nov 2019 23:13:16 +0000 (15:13 -0800)]
iris: Use isl_aux_state_transition_write()

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

19 months agoiris: Use ISL's access preparation functions
Nanley Chery [Fri, 8 Nov 2019 23:11:05 +0000 (15:11 -0800)]
iris: Use ISL's access preparation functions

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

19 months agoiris: Use isl_aux_usage_has_fast_clear()
Nanley Chery [Fri, 8 Nov 2019 23:07:34 +0000 (15:07 -0800)]
iris: Use isl_aux_usage_has_fast_clear()

Make sure fast-clears aren't attempted or allowed for ISL_AUX_USAGE_MC.

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

19 months agoisl: Add a module which manages aux resolves
Nanley Chery [Thu, 21 Nov 2019 17:00:02 +0000 (09:00 -0800)]
isl: Add a module which manages aux resolves

Provide a generic interface which manages aux resolves in ISL. The
feature differences between this and what's in iris is:
* Support for media compression. ISL_AUX_USAGE_MC behaves differently
  from many other usages of CCS, so it was useful to implement this
  support upfront, while designing the interfaces.
* Optimizations for full-surface writes. For example, after a
  full-surface write occurs with ISL_AUX_USAGE_CCS_E in the PARTIAL_CLEAR
  state, isl_aux_state_transition_write() returns COMPRESSED_NO_CLEAR
  instead of COMPRESSED_CLEAR.

A performance suggestion for main-surface-invalidating/replacing writes
is given as a comment instead of adding a boolean to
isl_aux_prepare_access(). This avoids extra validation and should be
simple enough for the caller to handle.

v2. Add assertions. (Jason)
v3. Use switches in 2 more functions. (Jason)
    Store aux metadata in a static table. (Jason)
    Change prepare and finish function signatures. (Jason)
    Keep isl_aux_state_transition_* functions separate.
v4. (Jason)
    Assert against resolving in AUX_INVALID.
    Rename aux_info struct to aux_usage_info.
    Drop the justification for each aux_usage_info field.
    Split out the NONE case in write function.
    Restructure tests to more easily confirm coverage.
    Rename access_compressed field to compressed.
    Make write behavior less ambiguous.
v5. (Jason)
    Add more detail above WRITES_RESOLVE_AMBIGUATE.
    Add ISL_AUX_USAGE_MC to WritesResolveAmbiguate.

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

19 months agofreedreno/ir3: Lower output precision
Kristian H. Kristensen [Sat, 15 Feb 2020 00:47:06 +0000 (16:47 -0800)]
freedreno/ir3: Lower output precision

This lowers mediump FS outputs to fp16 in the ir3 backend. For now
this is a modest improvement, which mostly helps us whittle down the
full mediump work.  Once the GLSL level support lands, then right hand
side of the store output intrinsics will be fp16 expressions and we'll
cancel out the fp16 -> fp32 -> fp 16 round trip here.

We've had different attempts at implementing this: rewriting stores in
the GLSL IR, lowering GLSL IR outputs to temporaries and inserting
conversions when writing the temporaries to the outputs.  In the end,
GLSL ends up getting in the way a lot and doing it at the nir level is
easier and still possible since we have the output var precisions.

This part of the fp16 work is more of a step on the way towards full
fp16 support and will add a few extra conversion instructions:

total instructions in shared programs: 8151 -> 8163 (0.15%)
instructions in affected programs: 1187 -> 1199 (1.01%)
helped: 4
HURT: 10

total nops in shared programs: 3146 -> 3152 (0.19%)
nops in affected programs: 563 -> 569 (1.07%)
helped: 5
HURT: 10

total non-nops in shared programs: 5005 -> 5011 (0.12%)
non-nops in affected programs: 92 -> 98 (6.52%)
helped: 0
HURT: 3

total dwords in shared programs: 12832 -> 12800 (-0.25%)
dwords in affected programs: 96 -> 64 (-33.33%)
helped: 1
HURT: 0

total last-baryf in shared programs: 118 -> 115 (-2.54%)
last-baryf in affected programs: 21 -> 18 (-14.29%)
helped: 1
HURT: 0

total full in shared programs: 424 -> 417 (-1.65%)
full in affected programs: 15 -> 8 (-46.67%)
helped: 7

HURT: 0
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3822>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3822>

19 months agonir/types: Add glsl_float16_type() helper
Kristian H. Kristensen [Wed, 19 Feb 2020 21:13:15 +0000 (13:13 -0800)]
nir/types: Add glsl_float16_type() helper

This returns the float16 version of a float type.

Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3822>

19 months agofreedreno/ir3: handle half registers for arrays during register allocation.
Hyunjun Ko [Mon, 18 Nov 2019 09:54:09 +0000 (09:54 +0000)]
freedreno/ir3: handle half registers for arrays during register allocation.

So far we only handle full regs of arrays during pre-allocation.
This patch is to handle half regs of arrays and also consider the size
of half regs when finding out conflicts.

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

19 months agonir: Add optimization for doing removing f16/f32 conversions
Hyunjun Ko [Mon, 5 Aug 2019 06:36:38 +0000 (06:36 +0000)]
nir: Add optimization for doing removing f16/f32 conversions

This eliminates conversions between f16 and f32 where possible. We can
always remove an upcast followed by a down cast, that is:

  f2f16 ( f2f32 (a) )  ->  a
  f2fmp ( f2f32 (a) )  ->  a

In the other direction, f2f16 loses precision and can't be undone by a
f2f32.  However, by definition it's always safe to elminate f2fmp:

  f2f32 ( f2fmp (a) )  ->  a

v2. [Neil Roberts (nroberts@igalia.com)]

Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3822>

19 months agofreedreno/ir3: Add new ir3 pass to fold out fp16 conversions
Hyunjun Ko [Fri, 11 Oct 2019 08:38:36 +0000 (08:38 +0000)]
freedreno/ir3: Add new ir3 pass to fold out fp16 conversions

This pass tries to fold f2f16 conversion into alu instructions.
This will be useful to help reduce the number of instructions once
mesa starts supporting precision lowering.  For example:

  add.f r0.w, r0.w, c0.x
  cov.f32f16 hr2.x, r0.w

to

  add.f hr2.x, r0.w, c0.x

Additionally this pass also tries to fold f2f16 conversion into load_input
instruction:

  bary.f r0.x, 3, r0.w
  cov.f32f16 hr0.x, r0.x

to

  bary.f hr1.x, 3, r0.x

v2: Edit to not fold OPC_MAX_F and OPC_MIN_F, since that's not valid.

v3: Add OPC_ABSNEG_F to the blacklist as well.

v4: Don't remove dead cov instructions, DCE will do that later; don't
iterate through sources when a cov only has one; remove special
handling of IR3_REG_ARRAY and IR3_REG_RELATIV.

v5: Handle folding into u32.u32 movs of floats correctly, don't bail
out on IR3_REG_RELATIV or IR3_REG_ARRAY movs.

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

19 months agonir/opcodes: Add nir_op_f2fmp
Neil Roberts [Wed, 9 Oct 2019 10:36:22 +0000 (12:36 +0200)]
nir/opcodes: Add nir_op_f2fmp

This opcode is the same as the f2f16 opcode except that it comes with
a promise that it is safe to optimise it out if the result is
immediately converted back to a 32-bit float again. Normally this
would be a lossy conversion and so it would be visible to the
application, but if the conversion is generated as part of the mediump
lowering process then this removal doesn’t matter. The opcode is
eventually replaced with a regular f2f16 in the late optimisations so
the backends don’t need to handle it.

Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3822>

19 months agoglapi/copyimage: Implement CopyImageSubDataNV
Indrajit Kumar Das [Mon, 20 Jan 2020 08:49:47 +0000 (14:19 +0530)]
glapi/copyimage: Implement CopyImageSubDataNV

Implement CopyImageSubDataNV from NV_copy_image spec.
This is derived out of the existing implementation of CopyImageSubData.
It differs from CopyImageSubData in accordance with the differences
laid down in the ARB_copy_image spec.

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

19 months agoiris: Fix import sync-file into syncobj
Chris Wilson [Sat, 22 Feb 2020 15:51:15 +0000 (15:51 +0000)]
iris: Fix import sync-file into syncobj

When importing a sync-file, the kernel expects to be told which syncobj
to replace with the new fence -- it does not automatically create a new
handle for us. Abide by this rule and create a new syncobj for the
imported sync-file.

Fixes: f459c56be6bf ("iris: Add fence support using drm_syncobj")
Cc: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3919>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3919>

19 months agopan/midgard: Implement load/store_shared
Alyssa Rosenzweig [Wed, 5 Feb 2020 20:17:44 +0000 (15:17 -0500)]
pan/midgard: Implement load/store_shared

Shared memory is implemented almost identically to global memory from an
ISA perspective, so let's handle the new intrinsics. We include a code
path for constant offsets, which doesn't come up for globals.

Fixes dEQP-GLES31.functional.compute.basic.shared_var_single_invocation

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3775>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3775>

19 months agopan/midgard: Implement nir_intrinsic_get_buffer_size
Alyssa Rosenzweig [Tue, 4 Feb 2020 14:46:17 +0000 (09:46 -0500)]
pan/midgard: Implement nir_intrinsic_get_buffer_size

We route it as a sysval. Fixes dEQP-GLES31.functional.compute.basic.ssbo_unsized_arr_single_invocation

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

19 months agopan/midgard: Lower SSBOs in NIR
Alyssa Rosenzweig [Tue, 5 Nov 2019 13:59:49 +0000 (08:59 -0500)]
pan/midgard: Lower SSBOs in NIR

We need to lower SSBOs to globals regardless. Rather than do this in our
backend like we do now, use the common NIR pass, which will support
bounds checking.

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

19 months agoturnip/pipeline: Don't assume tu_shader is a valid object
Eduardo Lima Mitev [Sun, 9 Feb 2020 21:07:03 +0000 (21:07 +0000)]
turnip/pipeline: Don't assume tu_shader is a valid object

Fixes a crash in tu6_emit_fs_config() when 'shader' argument is
assumed to be non-null, which is possible.

Fixes dEQP test:

dEQP-VK.api.descriptor_set.descriptor_set_layout_lifetime.graphics

Reviewed-by: Jonathan Marek <jonathan@marek.ca>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3756>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3756>

19 months agoradv: add the trace BO to the BO list at submit time
Samuel Pitoiset [Thu, 20 Feb 2020 12:19:41 +0000 (13:19 +0100)]
radv: add the trace BO to the BO list at submit time

Instead of adding it in every command buffer.

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

19 months agogallium/swr: Fix min/max range index draw
Krzysztof Raszkowski [Fri, 21 Feb 2020 13:05:33 +0000 (14:05 +0100)]
gallium/swr: Fix min/max range index draw

Reviewed-by: Jan Zielinski <jan.zielinski@intel.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3905>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3905>

19 months agoiris: Set MOCS for constant packets on Gen12+
Kenneth Graunke [Wed, 5 Feb 2020 08:53:10 +0000 (00:53 -0800)]
iris: Set MOCS for constant packets on Gen12+

It seems to be back, and we shouldn't use 0, as that's now considered
an error.

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

19 months agoiris: Fix BLORP vertex buffers to respect ISL MOCS settings
Kenneth Graunke [Wed, 5 Feb 2020 08:52:45 +0000 (00:52 -0800)]
iris: Fix BLORP vertex buffers to respect ISL MOCS settings

Fixes: a4da6008b6a ("iris: Use mocs from isl_dev.")
Reviewed-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/3720>

19 months agoiris: Make mocs an inline helper in iris_resource.h
Kenneth Graunke [Wed, 5 Feb 2020 09:02:30 +0000 (01:02 -0800)]
iris: Make mocs an inline helper in iris_resource.h

Now that it uses ISL rather than genxml code, there's no need for it to
live as a vtable function inside the state module.  We can just make it
a static inline helper in iris_resource.h so it's available throughout
the codebase.

Fixes: a4da6008b6a ("iris: Use mocs from isl_dev.")
Reviewed-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/3720>

19 months agoci: Remove a useless filtering of the lava logs.
Eric Anholt [Thu, 20 Feb 2020 18:15:43 +0000 (10:15 -0800)]
ci: Remove a useless filtering of the lava logs.

We don't print every case any more, so no need to filter them out.  This
makes it so the output form "lavacli jobs logs" gets line-buffered into
"tee" and you can actually see what happened when the job is stuck but
before it times out.

Reviewed-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3883>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3883>

19 months agoci: Don't bother generating deqp junit results since we don't present it.
Eric Anholt [Wed, 19 Feb 2020 18:29:32 +0000 (10:29 -0800)]
ci: Don't bother generating deqp junit results since we don't present it.

We disabled presentation a while back because it's so expensive for gitlab
to parse it on the other side.  We may have a use for it some day if
gitlab gets better, but for now let's not spend the time processing it.

Reviewed-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3883>

19 months agoci: Document how LAVA runners work.
Eric Anholt [Fri, 31 Jan 2020 19:36:55 +0000 (11:36 -0800)]
ci: Document how LAVA runners work.

Reviewed-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3883>

19 months agoci: Make LAVA job fails emit the full list of unexpected test results.
Eric Anholt [Fri, 14 Feb 2020 00:44:04 +0000 (16:44 -0800)]
ci: Make LAVA job fails emit the full list of unexpected test results.

When bringing up a new board or starting a new GLES version, we have a lot
of unexpected fails to document, so we need the full list in the log (not
just deqp-runner.sh's head -n 50) so we can populate the xfail list.

Reviewed-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3883>

19 months agoci: Make sure that we have a proper shell prompt for LAVA.
Eric Anholt [Wed, 19 Feb 2020 18:22:02 +0000 (10:22 -0800)]
ci: Make sure that we have a proper shell prompt for LAVA.

LAVA finds a '#' early in boot and races to emit its shell commands.
Apparently for the current boards those serial commands end up getting
buffered such that things work out, but for db410c and db820c, the buffer
is lost and LAVA gets stuck waiting for the prompt.  By setting a prompt,
we can delay our commands until we're actually supposed to emit them (and
suppress a complaint from the lava dispatcher that we're using a risky
prompt!)

Reviewed-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3883>

19 months agoci: prepare-artifacts: Make the indent here match previously in the file
Eric Anholt [Thu, 30 Jan 2020 23:20:35 +0000 (15:20 -0800)]
ci: prepare-artifacts: Make the indent here match previously in the file

Reviewed-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3883>

19 months agoanv: Add pipe_state_for_stage() helper
Caio Marcelo de Oliveira Filho [Wed, 19 Feb 2020 22:22:43 +0000 (14:22 -0800)]
anv: Add pipe_state_for_stage() helper

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

19 months agoanv: Use intel_debug_flag_for_shader_stage()
Caio Marcelo de Oliveira Filho [Wed, 19 Feb 2020 21:55:44 +0000 (13:55 -0800)]
anv: Use intel_debug_flag_for_shader_stage()

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

19 months agospirv: Be consistent when checking for Shader/Kernel
Caio Marcelo de Oliveira Filho [Wed, 19 Feb 2020 16:03:47 +0000 (08:03 -0800)]
spirv: Be consistent when checking for Shader/Kernel

Use == and != instead of the ordered comparisons.

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

19 months agospirv: Remove outdated SPIR-V decoration warnings
Arcady Goldmints-Orlov [Fri, 21 Feb 2020 18:47:10 +0000 (12:47 -0600)]
spirv: Remove outdated SPIR-V decoration warnings

spirv_to_nir warns if it encounters XFB decorations and errors if
it encounters a Stream decoration with value other than 0, despite
the fact that these decorations are in fact handled correctly.

Fixes dEQP-VK.transform_feedback.simple.query_1_*
Fixes: cd4a14be06 "spirv: Handle XFB variable decorations"
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3910>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3910>

19 months agonir/builder: Return an integer from nir_get_texture_size
Jason Ekstrand [Thu, 20 Feb 2020 23:19:50 +0000 (17:19 -0600)]
nir/builder: Return an integer from nir_get_texture_size

It's convenient in a bunch of cases for nir_get_texture_size to return a
float but it's very unexpected.  This fixes a bug in the R600 NIR code.

Fixes: f718ac62688b "r600/sfn: Add a basic nir shader backend"
Reviewed-by: Eric Anholt <eric@anholt.net>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3897>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3897>

19 months agonir: Fix the nir_builder include path for nir_builtin_builder
Jason Ekstrand [Thu, 20 Feb 2020 21:27:36 +0000 (15:27 -0600)]
nir: Fix the nir_builder include path for nir_builtin_builder

Because it's in double-quotes, it will search the current folder before
any search paths.  Since nir_builder.h and nir_builtin_builder.h are in
the same folder, this guarantees a correct include.  However,
nir/nir_builder.h does not unless the includer's path is set up just
right.

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

19 months agoutil: Change os_same_file_description return type from bool to int
Michel Dänzer [Tue, 18 Feb 2020 18:04:00 +0000 (19:04 +0100)]
util: Change os_same_file_description return type from bool to int

This allows communicating that it wasn't possible to determine whether
the two file descriptors reference the same file description. When
that's the case, log a warning in the amdgpu winsys.

In turn, remove the corresponding debugging output from the fallback
os_same_file_description implementation. It depends on the caller if
false negatives are problematic or not.

Reviewed-by: Eric Engestrom <eric@engestrom.ch>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3879>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3879>

19 months agowinsys/amdgpu: Make local variable r signed
Michel Dänzer [Tue, 18 Feb 2020 17:52:44 +0000 (18:52 +0100)]
winsys/amdgpu: Make local variable r signed

This is consistent with the return type of the functions whose return
values we assign to it.

No functional change intended.

Reviewed-by: Eric Engestrom <eric@engestrom.ch>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3879>

19 months agonir/lower_ssbo: handle atomics
Karol Herbst [Fri, 7 Feb 2020 17:44:47 +0000 (18:44 +0100)]
nir/lower_ssbo: handle atomics

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

19 months agonir: Add SSBO->global lowering pass
Alyssa Rosenzweig [Mon, 4 Nov 2019 22:27:18 +0000 (17:27 -0500)]
nir: Add SSBO->global lowering pass

To facilitate lowering SSBOs to globals, we need a load_ssbo_address
intrinsic. This intrinsic takes an SSBO index and loads the address in
global memory of the SSBO (likely implemented via a uniform in the
driver). In the future, we'll support bounds checking, but at the moment
this is not supported (this pass should only be used for trusted
contexts at the moment, i.e. contexts without robustness extensions).

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/2753>

19 months agopanfrost: Rewrite texture descriptor creation logic
Alyssa Rosenzweig [Tue, 18 Feb 2020 19:20:16 +0000 (14:20 -0500)]
panfrost: Rewrite texture descriptor creation logic

Rather than creating partially within the Gallium create function and
monkeypatching on draw time with code split across N different files
with tight Gallium dependencies, let's streamline everything into a
series of maintainable routines in mesa/src/panfrost with no Gallium
dependencies, doing the entire texture creation in one-shot and thus
adding absolutely zero draw-time overhead (since we can allocate a BO
for the descriptor and upload ahead-of-time, so switching textures is as
cheap as switching pointers).

Was this worth it? You know, I'm not sure :|

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3858>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3858>

19 months agopanfrost: Move format translation to root
Alyssa Rosenzweig [Tue, 18 Feb 2020 23:11:42 +0000 (18:11 -0500)]
panfrost: Move format translation to root

Since PIPE formats are now shared across Mesa we can do this, and the
routines themselves are good enough code that I'm happy to move them
here. We'll use them momentarily.

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3858>

19 months agopanfrost: Move pan_afbc.c to root
Alyssa Rosenzweig [Tue, 18 Feb 2020 17:17:59 +0000 (12:17 -0500)]
panfrost: Move pan_afbc.c to root

Now that PIPE formats are shared across Mesa, this well-documented piece
of code is a good fit for root panfrost, let's move it and get a little
closer to taming the mess of resources.

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3858>

19 months agopanfrost: Move checksum routines to root panfrost
Alyssa Rosenzweig [Tue, 18 Feb 2020 17:07:47 +0000 (12:07 -0500)]
panfrost: Move checksum routines to root panfrost

These are Gallium-independent and clean code; as is tradition, let's
hoist them up out of the Gallium driver as a bit of yak shaving as we
prepare to untangle the monster that is pan_resource.c

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3858>

19 months agoutil: promote u_debug_memory.c to src/util
Erik Faye-Lund [Mon, 10 Feb 2020 12:08:28 +0000 (13:08 +0100)]
util: promote u_debug_memory.c to src/util

When os_memory_debug.h was promoted to src/util, this source-file on
which it depends on when the debug-flag is set on windows was left
out. So let's move this also.

It doesn't seem there's any way of triggering this issue right now, but
it seems better to correct this to avoid this from biting us in the ass
in the future.

Fixes: 88c4680b5a5 ("util: promote u_memory to src/util")
Reviewed-by: Dylan Baker <dylan@pnwbakers>
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3844>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3844>

19 months agolima: implement PLB PP stream cache
Vasily Khoruzhick [Sun, 16 Feb 2020 10:25:10 +0000 (02:25 -0800)]
lima: implement PLB PP stream cache

Generating PLB PP stream is expensive. PLB PP stream content depends on
damage, and if damage consists of several rects it's impossible to come
up with a simple key.

Simplify damage to a single bounding box so we have a simple key
and cache PLB PP stream. Cache size is limited to 0.1% of system RAM and
once limit is reached least recently used entries are dropped.

Reviewed-by: Qiang Yu <yuq825@gmail.com>
Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3834>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3834>

19 months agodocs: Update index, relnotes, and release-calendar for 20.0
Dylan Baker [Thu, 20 Feb 2020 22:15:37 +0000 (14:15 -0800)]
docs: Update index, relnotes, and release-calendar for 20.0

This includes the release schedule for 20.0.x. Currently there are four
planned releases, but I assume we'll need more before 20.1.0 is ready.

Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3896>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3896>

19 months agoDocs: Add 20.0.0 release notes
Dylan Baker [Wed, 19 Feb 2020 19:26:47 +0000 (11:26 -0800)]
Docs: Add 20.0.0 release notes

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

19 months agoradv: use RADEON_FLAG_ZERO_VRAM when creating the trace BO
Samuel Pitoiset [Thu, 20 Feb 2020 06:20:43 +0000 (07:20 +0100)]
radv: use RADEON_FLAG_ZERO_VRAM when creating the trace BO

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

19 months agoradv/winsys: add a new flag that requests zerovram allocations
Samuel Pitoiset [Thu, 20 Feb 2020 06:19:27 +0000 (07:19 +0100)]
radv/winsys: add a new flag that requests zerovram allocations

This introduces RADON_FLAG_ZERO_VRAM.

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

19 months agogallivm: fix crash in emit_get_buffer_size
Roland Scheidegger [Wed, 19 Feb 2020 23:56:18 +0000 (00:56 +0100)]
gallivm: fix crash in emit_get_buffer_size

Seems a bit odd we extract a value from a vector in the first place
(as we always extract the first element), but llvm asserts if using
a zero-vector instead of zero as the index element.
Fixes piglit crashes for example in arb_shader_storage_buffer_object-layout-std140-write-shader.

Reviewed-by: Brian Paul <brianp@vmware.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3886>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3886>

19 months agogallivm: fix crash with bptc border color sampling
Roland Scheidegger [Wed, 19 Feb 2020 00:22:11 +0000 (01:22 +0100)]
gallivm: fix crash with bptc border color sampling

bptc uses fallback for decoding, but still need to handle border color
properly.

v2: adjust piglit gitlab-ci expectations

Reviewed-by: Brian Paul <brianp@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3886>

19 months agoaco: improve GFX9 1D ddx/ddy assertion
Rhys Perry [Thu, 20 Feb 2020 10:41:55 +0000 (10:41 +0000)]
aco: improve GFX9 1D ddx/ddy assertion

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Closes: https://gitlab.freedesktop.org/mesa/mesa/issues/2547
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3890>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3890>

19 months agopan/midgard: Identify clamp(x, -1.0, 1.0) flag
Alyssa Rosenzweig [Thu, 20 Feb 2020 12:41:26 +0000 (07:41 -0500)]
pan/midgard: Identify clamp(x, -1.0, 1.0) flag

So *that's* what's .unk2 was about :)

We still need to add an opt pass for it, but we can do that further down
the line.

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3892>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3892>

19 months agopanfrost: Remove flush_frontbuffer
Alyssa Rosenzweig [Wed, 19 Feb 2020 12:56:43 +0000 (07:56 -0500)]
panfrost: Remove flush_frontbuffer

A relic from software rasterizers. Hardware drivers generally don't need
to implement this.

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3878>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3878>

19 months agopanfrost: LogicOp support
Icecream95 [Thu, 20 Feb 2020 04:59:16 +0000 (17:59 +1300)]
panfrost: LogicOp support

The generated shaders are definitely not optimal, but for a feature
hardly anyone uses, it's probably good enough.

The XScreensaver demos quasicrystal, blitspin, bouboule, crystal and
munch now seem to work, with no obvious problems.

Currently this only works for 8-bit textures.

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

19 months agoi965: Do not generate D16 B5G6R5_UNORM configs on gen < 8
Danylo Piliaiev [Tue, 24 Dec 2019 12:19:24 +0000 (14:19 +0200)]
i965: Do not generate D16 B5G6R5_UNORM configs on gen < 8

We don't support MESA_FORMAT_Z_UNORM16 before Gen8, see
intel_screen_init_surface_formats.

As a consequence disables B5G6R5_UNORM configs with depth
on gen < 6.

Closes: https://gitlab.freedesktop.org/mesa/mesa/issues/2275
CC: <mesa-stable@lists.freedesktop.org>
Signed-off-by: Danylo Piliaiev <danylo.piliaiev@globallogic.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3206>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3206>

19 months agogitlab-ci: Automated testing with OpenGL traces
Alexandros Frantzis [Wed, 8 Jan 2020 15:46:46 +0000 (17:46 +0200)]
gitlab-ci: Automated testing with OpenGL traces

Introduce automated testing of Mesa by replaying traces with Renderdoc
or Apitrace.

For now only LLVMPipe is tested, but other drivers can be tested if
there's runners with the necessary hardware.

Signed-off-by: Alexandros Frantzis <alexandros.frantzis@collabora.com>
Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/2935>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/2935>

19 months agogitlab-ci: Disable the lima job for now
Tomeu Vizoso [Thu, 20 Feb 2020 06:56:11 +0000 (07:56 +0100)]
gitlab-ci: Disable the lima job for now

Some dEQP tests have started passing and it's taking a while to update
the expectations and skips list.

Disable for now so CI doesn't fail and stuff can be merged.

Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Reviewed-by: Vasily Khoruzhick <anarsoul@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/2935>

19 months agoutil: remove the dependency on kcmp.h
Marek Olšák [Tue, 18 Feb 2020 21:12:23 +0000 (16:12 -0500)]
util: remove the dependency on kcmp.h

Fixes: f76cbc7901f7 "util: Add os_same_file_description helper"
Acked-by: Eric Engestrom <eric@engestrom.ch>
Reviewed-by: Michel Dänzer <mdaenzer@redhat.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3860>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3860>

19 months agointel/fs: Correctly handle multiply of fsign with a source modifier
Ian Romanick [Tue, 11 Feb 2020 20:00:00 +0000 (12:00 -0800)]
intel/fs: Correctly handle multiply of fsign with a source modifier

The other source of the multiply will be interpreted as a uint32_t in an
XOR instruction.  Any source modifiers with either not be interpreted at
all or will be misinterpreted due to the differing types.

If the other operand of the multiplication has a source modifier, just
emit an extra move to resolve the source modifiers.

The negation source modifier problem is difficult to reproduce due to an
algebraic optimization that changes (-a*b) to -(a*b).  However, changes
in MR !1359 push the negations back down.

On Gen7+ it might be possible to do slightly better for an abs() source
modifier by using BFI2 as a glorified copysign().

On Gen8+ it might be possible to do slightly better for a neg() source
modifier by emitting (~a ^ b).

There were no shader-db changes on any Intel platform, so I think we can
deal with that problem when it arises.

See also piglit!224.

Fixes: 06d2c116415 ("intel/fs: Add a scale factor to emit_fsign")
Reviewed-by: Matt Turner <mattst88@gmail.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3780>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3780>

19 months agogallium/auxiliary/vl: fix bob compute shaders for deint yuv
Thong Thai [Tue, 18 Feb 2020 17:11:39 +0000 (12:11 -0500)]
gallium/auxiliary/vl: fix bob compute shaders for deint yuv

Scales the Y-axis by 2 when using the Bob deinterlace filter.

Closes: https://gitlab.freedesktop.org/mesa/mesa/issues/2523
Signed-off-by: Thong Thai <thong.thai@amd.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3857>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3857>