mesa.git
5 years agogitlab-ci/a630: Drop the MSAA expected failure.
Eric Anholt [Thu, 12 Sep 2019 21:39:19 +0000 (14:39 -0700)]
gitlab-ci/a630: Drop the MSAA expected failure.

This hasn't failed for me in ~5 minutes of looping over
dEQP-GLES3.functional.fbo.msaa.*

Reviewed-by: Adam Jackson <ajax@redhat.com>
Acked-by: Rob Clark <robdclark@chromium.org>
Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
5 years agogitlab-ci/a630: Drop remaining dEQP-GLES3.functional.draw.random.* xfails.
Eric Anholt [Thu, 12 Sep 2019 21:33:54 +0000 (14:33 -0700)]
gitlab-ci/a630: Drop remaining dEQP-GLES3.functional.draw.random.* xfails.

These haven't failed for me in ~10 minutes of looping over
draw.random.*.

Reviewed-by: Adam Jackson <ajax@redhat.com>
Acked-by: Rob Clark <robdclark@chromium.org>
Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
5 years agolima/ppir: Add undef handling
Andreas Baierl [Tue, 20 Aug 2019 16:19:55 +0000 (18:19 +0200)]
lima/ppir: Add undef handling

Add a ppir dummy node for nir_ssa_undef_instr, create a reg for it and mark
it as undefined, so that regalloc can set it non-interfering to avoid
register pressure.

Signed-off-by: Andreas Baierl <ichgeh@imkreisrum.de>
Reviewed-by: Vasily Khozuzhick <anarsoul@gmail.com>
Reviewed-by: Erico Nunes <nunes.erico@gmail.com>
5 years agolima/ppir: Rename ppir_op_dummy to ppir_op_undef
Andreas Baierl [Thu, 12 Sep 2019 09:07:40 +0000 (11:07 +0200)]
lima/ppir: Rename ppir_op_dummy to ppir_op_undef

Signed-off-by: Andreas Baierl <ichgeh@imkreisrum.de>
Reviewed-by: Vasily Khoruzhick <anarsoul@gmail.com>
Reviewed-by: Erico Nunes <nunes.erico@gmail.com>
5 years agoAndroid.mk: Fix missing \ from recent llvm change
John Stultz [Thu, 12 Sep 2019 20:02:18 +0000 (20:02 +0000)]
Android.mk: Fix missing \ from recent llvm change

Building w/ AOSP, I was hitting the following error:
external/mesa3d/src/amd/Android.common.mk:95: error: missing separator.

Which was due to the changes to mesa-build-with-llvm  missing
a line continuation.

Fixes: 96b592696f13
Signed-off-by: John Stultz <john.stultz@linaro.org>
5 years agopanfrost: Move the batch submission logic to panfrost_batch_submit()
Boris Brezillon [Thu, 5 Sep 2019 18:47:45 +0000 (20:47 +0200)]
panfrost: Move the batch submission logic to panfrost_batch_submit()

We are about to patch panfrost_flush() to flush all pending batches,
not only the current one. In order to do that, we need to move the
'flush single batch' code to panfrost_batch_submit().

While at it, we get rid of the existing pipelining logic, which is
currently unused and replace it by an unconditional wait at the end of
panfrost_batch_submit(). A new pipeline logic will be introduced later
on.

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
5 years agopanfrost: Move the fence creation in panfrost_flush()
Boris Brezillon [Thu, 5 Sep 2019 17:14:25 +0000 (19:14 +0200)]
panfrost: Move the fence creation in panfrost_flush()

panfrost_flush() is about to be reworked to flush all pending batches,
but we want the fence to block on the last one. Let's move the fence
creation logic in panfrost_flush() to prepare for this situation.

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
5 years agopanfrost: Delay payloads[].offset_start initialization
Boris Brezillon [Thu, 5 Sep 2019 19:01:20 +0000 (21:01 +0200)]
panfrost: Delay payloads[].offset_start initialization

panfrost_draw_vbo() Might call the primeconvert/without_prim_restart
helpers which will enter the ->draw_vbo() again. Let's delay
payloads[].offset_start initialization so we don't initialize them
twice.

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
5 years agopanfrost: Prepare things to avoid flushes on FB switch
Boris Brezillon [Thu, 5 Sep 2019 17:07:12 +0000 (19:07 +0200)]
panfrost: Prepare things to avoid flushes on FB switch

panfrost_attach_vt_xxx() functions are now passed a batch, and the
generated FB desc is kept in panfrost_batch so we can switch FBs
without forcing a flush. The postfix->framebuffer field is restored
on the next attach_vt_framebuffer() call if the batch already has an
FB desc.

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
5 years agopanfrost: Pass a batch to panfrost_set_value_job()
Boris Brezillon [Thu, 5 Sep 2019 16:57:11 +0000 (18:57 +0200)]
panfrost: Pass a batch to panfrost_set_value_job()

So we can emit SET_VALUE jobs for a batch that's not currently bound
to the context.

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
5 years agopanfrost: Use ctx->wallpaper_batch in panfrost_blit_wallpaper()
Boris Brezillon [Thu, 5 Sep 2019 16:52:21 +0000 (18:52 +0200)]
panfrost: Use ctx->wallpaper_batch in panfrost_blit_wallpaper()

We'll soon be able to flush a batch that's not currently bound to the
context, which means ctx->pipe_framebuffer will not necessarily be the
FBO targeted by the wallpaper draw. Let's prepare for this case and
use ctx->wallpaper_batch in panfrost_blit_wallpaper().

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
5 years agopanfrost: Pass a batch to functions emitting FB descs
Boris Brezillon [Sun, 1 Sep 2019 08:30:39 +0000 (10:30 +0200)]
panfrost: Pass a batch to functions emitting FB descs

So we can emit such jobs to a batch that's not currently bound to the
context.

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
5 years agopanfrost: Pass a batch to panfrost_{allocate,upload}_transient()
Boris Brezillon [Sun, 1 Sep 2019 08:15:23 +0000 (10:15 +0200)]
panfrost: Pass a batch to panfrost_{allocate,upload}_transient()

We need that if we want to upload transient buffers to a batch that's
not currently bound to the context, which in turn will be needed if we
want to relax the batch serialization we have right now (only flush
batches when we need to: on a flush request, or when one batch depends
on the result of other batches).

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
5 years agopanfrost: Allow testing if a specific batch is targeting a scanout FB
Boris Brezillon [Sun, 1 Sep 2019 08:54:38 +0000 (10:54 +0200)]
panfrost: Allow testing if a specific batch is targeting a scanout FB

Rename panfrost_is_scanout() into panfrost_batch_is_scanout(), pass it
a batch instead of a context and move the code to pan_job.c.

With this in place, we can now test if a batch is targeting a scanout
FB even if this batch is not bound to the context.

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
5 years agopanfrost: Get rid of the unused 'flush jobs accessing res' infra
Boris Brezillon [Thu, 5 Sep 2019 16:19:40 +0000 (18:19 +0200)]
panfrost: Get rid of the unused 'flush jobs accessing res' infra

Will be replaced by something similar but using a BOs as keys instead
of resources.

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
5 years agopanfrost: Use a pipe_framebuffer_state as the batch key
Boris Brezillon [Sun, 1 Sep 2019 08:24:30 +0000 (10:24 +0200)]
panfrost: Use a pipe_framebuffer_state as the batch key

This way we have all the fb_state information directly attached to a
batch and can pass only the batch to functions emitting CMDs, which is
needed if we want to be able to queue CMDs to a batch that's not
currently bound to the context.

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
5 years agoradeon/vcn: exclude raven2 from vcn 2.0 encode initialization
Indrajit Das [Tue, 10 Sep 2019 09:22:14 +0000 (14:52 +0530)]
radeon/vcn: exclude raven2 from vcn 2.0 encode initialization

Signed-off-by: Indrajit Das <indrajit-kumar.das@amd.com>
Reviewed-by: Leo Liu <leo.liu@amd.com>
5 years agogitlab-ci: rename stages to something simpler
Eric Engestrom [Wed, 11 Sep 2019 17:51:46 +0000 (18:51 +0100)]
gitlab-ci: rename stages to something simpler

Signed-off-by: Eric Engestrom <eric.engestrom@intel.com>
Reviewed-by: Michel Dänzer <mdaenzer@redhat.com>
5 years agopanfrost: Rework midgard_pair_load_store() to kill the nested foreach loop
Boris Brezillon [Tue, 27 Aug 2019 10:36:43 +0000 (12:36 +0200)]
panfrost: Rework midgard_pair_load_store() to kill the nested foreach loop

mir_foreach_instr_in_block_safe() is based on list_for_each_entry_safe()
which is designed to protect against removal of the current entry, but
removing the entry placed just after the current one will lead to a
use-after-free situation.

Luckily, the midgard_pair_load_store() logic guarantees that the
instruction being removed (if any) is never placed just after ins which
in turn guarantees that the hidden __next variable always points to a
valid object.
Took me a bit of time to realize that this code was safe, so I'm
suggesting to get rid of the inner mir_foreach_instr_in_block_from()
loop and rework the code so that the removed instruction is always the
current one (which is what the list_for_each_entry_safe() API was
initially designed for).

While at it, we also get rid of the unecessary insert(ins)/remove(ins)
dance by simply moving the instruction around.

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
5 years agopanfrost: Fix a list_assert() in schedule_block()
Boris Brezillon [Tue, 27 Aug 2019 10:36:42 +0000 (12:36 +0200)]
panfrost: Fix a list_assert() in schedule_block()

list_for_each_entry() does not allow modifying the current item pointer.
Let's rework the skip-instructions logic in schedule_block() to not
break this rule.

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
5 years agov3d: fix TF primitive counts for resume without draw
Iago Toral Quiroga [Mon, 9 Sep 2019 10:23:58 +0000 (12:23 +0200)]
v3d: fix TF primitive counts for resume without draw

The V3D documentation states that primitive counters are reset when
we emit Tile Binning Mode Configuration items, which we do at the start
of each draw call, however, in the actual hardware this doesn't seem to
take effect when transform feedback is not active (this doesn't happen in
the simulator). This causes a problem in the following scenario:

glBeginTransformFeedback()
   glDrawArrays()
   glPauseTransformFeedback()
   glDrawArrays()
   glResumeTransformFeedback()
glEndTransformFeedback()

The TF pause will trigger a flush of the primitive counters, which results
in a correct number of primitives up to that point. In theory, the counter
should then be reset when we execute the draw after pausing TF, but that
doesn't happen, and since TF is enabled again by the resume command before
we end recording, by the time we end the transform feedback recording we
again check the counters, but instead of reading 0, we read again the same
value we read at the time we paused, incorrectly accumulating that value
again.

In theory, we should be able to avoid this by using the other method to
reset the primitive counters: using operation 1 instead of 0 when we
flush the counts to the buffer at the time we pause, but again, this
doesn't seem to be work and we still see obsolete counts by the time we
end transform feedback.

This patch fixes the problem by not accumulating TF primitive counts
unless we know we have actually queued draw calls during transform
feedback, since that seems to effectively reset the counters. This should
also be more performant, since it saves unnecessary stalls for the
primitive counters to be updated when we know there haven't been any
new primitives drawn.

Fixes CTS tests:
dEQP-GLES3.functional.transform_feedback.*

Reviewed-by: Eric Anholt <eric@anholt.net>
5 years agov3d: remove redundant update of queued draw calls
Iago Toral Quiroga [Wed, 11 Sep 2019 08:02:22 +0000 (10:02 +0200)]
v3d: remove redundant update of queued draw calls

This was updating the counter for the indexed draw path only, but we are
already updating the counter for all paths a bit later, so this is only
duplicating counts for indexed paths.

Reviewed-by: Eric Anholt <eric@anholt.net>
5 years agov3d: make sure we have enough space in the CL for the primitive counts packet
Iago Toral Quiroga [Tue, 10 Sep 2019 11:46:25 +0000 (13:46 +0200)]
v3d: make sure we have enough space in the CL for the primitive counts packet

Fixes: 0f2d1dfe65 ("v3d: use the GPU to record primitives written to transform feedback")
Reviewed-by: Eric Anholt <eric@anholt.net>
5 years agov3d: add missing line break for performance debug message
Iago Toral Quiroga [Mon, 9 Sep 2019 10:52:16 +0000 (12:52 +0200)]
v3d: add missing line break for performance debug message

Reviewed-by: Eric Anholt <eric@anholt.net>
5 years agopanfrost/ci: Use releases for Volt dEQP
Tomeu Vizoso [Tue, 10 Sep 2019 17:56:19 +0000 (18:56 +0100)]
panfrost/ci: Use releases for Volt dEQP

So we can better correlate different results to versions of the runner.

Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
5 years agopanfrost/ci: Update kernel to 5.3-rc8
Tomeu Vizoso [Tue, 10 Sep 2019 17:55:58 +0000 (18:55 +0100)]
panfrost/ci: Update kernel to 5.3-rc8

We haven't updated in a long time, so better do it now and again when
5.3 is released.

Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
5 years agopanfrost/ci: Run dEQP with the surfaceless platform
Tomeu Vizoso [Tue, 10 Sep 2019 15:43:25 +0000 (16:43 +0100)]
panfrost/ci: Run dEQP with the surfaceless platform

Instead of running it with the Wayland platform, which introduces
unwanted dependencies and complexity.

Makes tests run 30% faster, as well.

Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
5 years agoradv: fix allocating number of user sgprs if streamout is used
Samuel Pitoiset [Thu, 12 Sep 2019 13:58:25 +0000 (15:58 +0200)]
radv: fix allocating number of user sgprs if streamout is used

streamout_buffers is assigned after that function, so the previous
fix was completely wrong. This probably fix something when streamout
buffers and push constants are used/inlined in the same shader.

Fixes: 378e2d24143 ("radv: fix computing number of user SGPRs for streamout buffers")
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
5 years agointel/fs: Handle UNDEF in split_virtual_grfs
Jason Ekstrand [Sat, 7 Sep 2019 00:34:42 +0000 (19:34 -0500)]
intel/fs: Handle UNDEF in split_virtual_grfs

When the UNDEF instruction was added, we didn't do anything special in
split_virtual_grfs.  This mean that anything with an UNDEF wasn't
getting split which causes problems for the compiler.  Among other
things, it makes RA harder because things are in bigger chunks.  It also
meant that dvec4s weren't getting split which means that they are larger
than the maximum register size.

Shader-db results on Kaby Lake:

    total instructions in shared programs: 14959202 -> 14960035 (<.01%)
    instructions in affected programs: 96197 -> 97030 (0.87%)
    helped: 140
    HURT: 128
    helped stats (abs) min: 1 max: 17 x̄: 1.62 x̃: 1
    helped stats (rel) min: 0.09% max: 6.15% x̄: 0.65% x̃: 0.45%
    HURT stats (abs)   min: 1 max: 825 x̄: 8.28 x̃: 1
    HURT stats (rel)   min: 0.13% max: 139.83% x̄: 1.70% x̃: 0.50%
    95% mean confidence interval for instructions value: -2.96 9.18
    95% mean confidence interval for instructions %-change: -0.56% 1.51%
    Inconclusive result (value mean confidence interval includes 0).

    total loops in shared programs: 4372 -> 4372 (0.00%)
    loops in affected programs: 0 -> 0
    helped: 0
    HURT: 0

    total cycles in shared programs: 352646771 -> 352840997 (0.06%)
    cycles in affected programs: 218600800 -> 218795026 (0.09%)
    helped: 21167
    HURT: 21411
    helped stats (abs) min: 1 max: 2924 x̄: 36.89 x̃: 10
    helped stats (rel) min: <.01% max: 41.90% x̄: 2.97% x̃: 0.98%
    HURT stats (abs)   min: 1 max: 26027 x̄: 45.54 x̃: 10
    HURT stats (rel)   min: <.01% max: 324.46% x̄: 3.88% x̃: 1.06%
    95% mean confidence interval for cycles value: 2.87 6.26
    95% mean confidence interval for cycles %-change: 0.40% 0.55%
    Cycles are HURT.

    total spills in shared programs: 8840 -> 8953 (1.28%)
    spills in affected programs: 126 -> 239 (89.68%)
    helped: 1
    HURT: 2

    total fills in shared programs: 21782 -> 21914 (0.61%)
    fills in affected programs: 431 -> 563 (30.63%)
    helped: 1
    HURT: 3

    LOST:   0
    GAINED: 5

Shader-db results on Haswell:

    total instructions in shared programs: 13320918 -> 13320769 (<.01%)
    instructions in affected programs: 40998 -> 40849 (-0.36%)
    helped: 146
    HURT: 56
    helped stats (abs) min: 1 max: 8 x̄: 2.73 x̃: 2
    helped stats (rel) min: 0.16% max: 8.60% x̄: 2.52% x̃: 2.22%
    HURT stats (abs)   min: 2 max: 23 x̄: 4.45 x̃: 4
    HURT stats (rel)   min: 0.21% max: 10.26% x̄: 6.83% x̃: 10.26%
    95% mean confidence interval for instructions value: -1.26 -0.21
    95% mean confidence interval for instructions %-change: -0.62% 0.77%
    Inconclusive result (%-change mean confidence interval includes 0).

    total loops in shared programs: 4373 -> 4373 (0.00%)
    loops in affected programs: 0 -> 0
    helped: 0
    HURT: 0

    total cycles in shared programs: 374518258 -> 374384193 (-0.04%)
    cycles in affected programs: 231101954 -> 230967889 (-0.06%)
    helped: 21427
    HURT: 19438
    helped stats (abs) min: 1 max: 2035 x̄: 31.09 x̃: 8
    helped stats (rel) min: <.01% max: 40.95% x̄: 2.42% x̃: 0.86%
    HURT stats (abs)   min: 1 max: 20875 x̄: 27.38 x̃: 8
    HURT stats (rel)   min: <.01% max: 59.09% x̄: 2.49% x̃: 0.80%
    95% mean confidence interval for cycles value: -4.49 -2.07
    95% mean confidence interval for cycles %-change: -0.14% -0.04%
    Cycles are helped.

    total spills in shared programs: 23406 -> 23411 (0.02%)
    spills in affected programs: 3 -> 8 (166.67%)
    helped: 0
    HURT: 2

    total fills in shared programs: 34845 -> 34850 (0.01%)
    fills in affected programs: 3 -> 8 (166.67%)
    helped: 0
    HURT: 2

    LOST:   0
    GAINED: 0

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=111566
Fixes: f4ef34f207d1 "intel/fs: Add an UNDEF instruction to avoid..."
Reviewed-by: Francisco Jerez <currojerez@riseup.net>
5 years agomesa: fix texStore for FORMAT_Z32_FLOAT_S8X24_UINT
Jiadong Zhu [Tue, 30 Jul 2019 08:13:15 +0000 (04:13 -0400)]
mesa: fix texStore for FORMAT_Z32_FLOAT_S8X24_UINT

_mesa_texstore_z32f_x24s8 calculates source rowStride at a
pace of 64-bit, this will make inaccuracy offset if the width
of src image is an odd number. Modify src pointer to int_32* as
source image format is gl_float which is 32-bit per pixel.

Reviewed by Ilia Mirkin

Signed-off-by: Jiadong Zhu <Jiadong.Zhu@amd.com>
Signed-off-by: Marek Olšák <marek.olsak@amd.com>
5 years agofreedreno/a6xx: pre-calculate userconst stateobj size
Rob Clark [Wed, 11 Sep 2019 17:02:37 +0000 (10:02 -0700)]
freedreno/a6xx: pre-calculate userconst stateobj size

The AnTuTu "garden" benchmark overflows the fixed size constbuffer
stateobject, so lets be more clever and calculate (a potentially
slightly pessimistic) actual size.

Signed-off-by: Rob Clark <robdclark@chromium.org>
5 years agogallium: Restore VSX for llvm >= 4
Adam Jackson [Thu, 12 Sep 2019 17:07:05 +0000 (13:07 -0400)]
gallium: Restore VSX for llvm >= 4

Accidentally dropped in 4fdd455eeb7cffadee86f06c685005a3b64ce94b.

Fixes: 4fdd455e ("gallium: Require LLVM >= 3.4)
Reported-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
5 years agoegl/android: Fix build since the DRI fourcc removal.
Eric Anholt [Thu, 12 Sep 2019 19:52:40 +0000 (12:52 -0700)]
egl/android: Fix build since the DRI fourcc removal.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

This slot is always filled in with __glFillImage.

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

"partial" because `nir_intrinsics_h` was missing.

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

"partial" because `nir_intrinsics_h` was missing.

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

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

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

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

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

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

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

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

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

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

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

v2: remove stray change (Erik Faye-Lund)

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

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

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

The patch adds support for HAL_PIXEL_FORMAT_RGBA_1010102 on
Android platform.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Also update -rc4 to me.

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

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

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

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

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

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

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

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

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

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

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

trivial

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

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

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

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

This is a pipe format, not a boolean.

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

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

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

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

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

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

This will also "unlock" OpenGL 4.6 for Iris!

v2: Also enable PIPE_CAP_GL_SPIRV_VARIABLE_POINTERS.

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

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

v2: Add gl_nir_linker_options struct.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

No behavior should change with this patch.

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

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

v2: Use MainUniformStorageIndex for all cases.

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

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

v2: Use UniformStorageIndex for all cases.  (Timothy)

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

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

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

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

The gl_uniform_storage struct got two new fields that let us go

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

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

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

v3: Serialize the new fields.  (Timothy)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

This mirrors the haiku build which uses a platform.

v2: - Fix some rebase problems

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

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

Reviewed-by: Eric Anholt <eric@anholt.net> (v3)
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>