mesa.git
6 years agometa/blit: Check the values instead of the target before restoring
Ian Romanick [Wed, 13 Jan 2016 01:37:02 +0000 (17:37 -0800)]
meta/blit: Check the values instead of the target before restoring

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
6 years agomesa: Add _mesa_bind_texture method
Ian Romanick [Wed, 13 Jan 2016 09:20:09 +0000 (01:20 -0800)]
mesa: Add _mesa_bind_texture method

Light-weight glBindTexture for internal use.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
6 years agoRevert "mesa: remove unused _mesa_delete_nameless_texture()"
Ian Romanick [Wed, 13 Dec 2017 03:41:49 +0000 (19:41 -0800)]
Revert "mesa: remove unused _mesa_delete_nameless_texture()"

Changes in this series use this function.

This reverts commit 048de9e34a2214371481143cddcaa53f52468c6b.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Cc: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Cc: Timothy Arceri <tarceri@itsqueeze.com>
6 years agomesa: Fold _mesa_record_error into its only caller
Ian Romanick [Tue, 12 Dec 2017 17:05:46 +0000 (09:05 -0800)]
mesa: Fold _mesa_record_error into its only caller

Also, the comment on _mesa_record_error was wrong.
dd_function_table::Error was not called because that function does not
exist.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
6 years agoetnaviv: disable in-place resolve for non-supertiled surfaces
Lucas Stach [Tue, 19 Dec 2017 16:35:59 +0000 (17:35 +0100)]
etnaviv: disable in-place resolve for non-supertiled surfaces

The in-place resolve probably has some additional restrictions when not
operating on a super tiled surface. Disable it on non-supertiled surfaces
for now to work around a GPU hang.

Fixes: 78ade659569e ("etnaviv: Do GC3000 resolve-in-place when possible")
Cc: mesa-stable@lists.freedesktop.org
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
6 years agoradv: Implement binning on GFX9.
Bas Nieuwenhuizen [Sat, 30 Dec 2017 16:31:44 +0000 (17:31 +0100)]
radv: Implement binning on GFX9.

Overall it does not really help or hurt. The deferred demo gets 1%
improvement and some games a 3% decrease, so I don't think this
should be enabled by default.

But with the code upstream it is easier to experiment with it.

v2: Remove initializing the registers from si_emit_config.

Reviewed-by: Dave Airlie <airlied@redhat.com>
6 years agoradv: Add flag for enabling binning.
Bas Nieuwenhuizen [Sat, 30 Dec 2017 16:31:15 +0000 (17:31 +0100)]
radv: Add flag for enabling binning.

Letting it be disabled by default.

Reviewed-by: Dave Airlie <airlied@redhat.com>
6 years agoi965: Combine {VS,FS}_OPCODE_GET_BUFFER_SIZE opcodes.
Kenneth Graunke [Mon, 11 Dec 2017 01:03:32 +0000 (17:03 -0800)]
i965: Combine {VS,FS}_OPCODE_GET_BUFFER_SIZE opcodes.

These are the same, we don't need a separate opcode enum per backend.

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
6 years agonir: add missing local_group_size intrinsic
Rob Clark [Mon, 25 Dec 2017 20:18:00 +0000 (15:18 -0500)]
nir: add missing local_group_size intrinsic

For GL_ARB_compute_variable_group_size

Reported-by: Karol Herbst <karolherbst@gmail.com>
Signed-off-by: Rob Clark <robdclark@gmail.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
6 years agonv50/ir: Fix unused var warnings in release build
Rhys Kidd [Sat, 2 Dec 2017 18:14:25 +0000 (13:14 -0500)]
nv50/ir: Fix unused var warnings in release build

v2: Add preventative comment (Ilia Mirkin)

Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com>
Reviewed-by: Pierre Moreau <pierre.morrow@free.fr>
Signed-off-by: Rhys Kidd <rhyskidd@gmail.com>
6 years agonvc0: Fix unused var warnings in release build
Rhys Kidd [Sat, 2 Dec 2017 18:06:45 +0000 (13:06 -0500)]
nvc0: Fix unused var warnings in release build

Reviewed-by: Pierre Moreau <pierre.morrow@free.fr>
Signed-off-by: Rhys Kidd <rhyskidd@gmail.com>
6 years agonv50: Fix unused var warning in release build
Rhys Kidd [Sat, 2 Dec 2017 17:56:26 +0000 (12:56 -0500)]
nv50: Fix unused var warning in release build

Reviewed-by: Pierre Moreau <pierre.morrow@free.fr>
Signed-off-by: Rhys Kidd <rhyskidd@gmail.com>
6 years agor600: fix textureSize queries with tbos
Roland Scheidegger [Sat, 23 Dec 2017 03:50:13 +0000 (04:50 +0100)]
r600: fix textureSize queries with tbos

piglit doesn't care, but I'm quite confident that the size actually bound
as range should be reported and not the base size of the resource (and
some quick piglit test hacking confirms this).
Also, the array in the constant buffer looks overallocated by a factor of 4.
For eg, also decrease the size by another factor of 2 by using the same
constant slot for both buffer size (required for txq for TBOs) and the number
of layers for cube arrays, as these are mutually exclusive. Could of course use
some more logic and only actually do this for the samplers/images/buffers where
it's required rather than for all, but ah well...

Reviewed-by: Dave Airlie <airlied@redhat.com>
6 years agor600: kill off native_integer shader ctx flag
Roland Scheidegger [Fri, 22 Dec 2017 22:31:43 +0000 (23:31 +0100)]
r600: kill off native_integer shader ctx flag

Maybe upon a time it wasn't always true.

Reviewed-by: Dave Airlie <airlied@redhat.com>
6 years agoradv: Also set DCC params for sampling for input attachment usage.
Bas Nieuwenhuizen [Fri, 29 Dec 2017 22:26:33 +0000 (23:26 +0100)]
radv: Also set DCC params for sampling for input attachment usage.

Those are implemented as texture sampling, so we need to make the
texture TC-compatible too.

Fixes: 34d23e82ca9 "radv: set some dcc parameters depending on if texture will be sampled"
Reviewed-by: Fredrik Höglund <fredrik@kde.org>
6 years agoradv: Enable DCC with transfers.
Bas Nieuwenhuizen [Thu, 28 Dec 2017 01:33:00 +0000 (02:33 +0100)]
radv: Enable DCC with transfers.

Before this DCC was in practice disabled for most games. This
enables practical DCC use. Expect a 5-10% perf increase on a
bunch of games on vega @ 4k.

Reviewed-by: Dave Airlie <airlied@redhat.com>
Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de>
6 years agoradv: Decompress copy destination if formats are incompatible.
Bas Nieuwenhuizen [Fri, 29 Dec 2017 00:57:17 +0000 (01:57 +0100)]
radv: Decompress copy destination if formats are incompatible.

If both source and destination are DCC compressed, and their formats
are not compatible, we need to decompress one of them to make
sure we can do reinterpretation (which needs src format == dst format)
.

Reviewed-by: Dave Airlie <airlied@redhat.com>
Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de>
6 years agoradv: Disable DCC for GENERAL layout and compute transfer dest.
Bas Nieuwenhuizen [Thu, 28 Dec 2017 01:54:10 +0000 (02:54 +0100)]
radv: Disable DCC for GENERAL layout and compute transfer dest.

Apps can use this for render feedback loops, where things are
defined if they render each pixel only once. However, DCC fails
here, as the level of coherence is a block not a pixel, so disable it.

This is also going to help implementing other stuff.

Even if we optimize this later to only happen if there actually is
a loop (if possible at all ...), then the machinery is still useful
to exclude images accessible by the SDMA queue when that is implemented.

Reviewed-by: Dave Airlie <airlied@redhat.com>
Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de>
6 years agoradv: Don't init DCC metadata during FS resolve.
Bas Nieuwenhuizen [Fri, 29 Dec 2017 00:28:48 +0000 (01:28 +0100)]
radv: Don't init DCC metadata during FS resolve.

It should already be valid there + the RB will update it during
rendering.

Reviewed-by: Dave Airlie <airlied@redhat.com>
Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de>
6 years agoradv: Make color meta operations layout aware.
Bas Nieuwenhuizen [Fri, 29 Dec 2017 00:25:07 +0000 (01:25 +0100)]
radv: Make color meta operations layout aware.

For fast clear eliminate and decompressions, we always use the most compressed
format.

For clears, the code already creates a renderpass on demand with the exact same
layout as specified.

Otherwise we start distinguishing between GENERAL and TRANSFER_DST_OPTIMAL.

Reviewed-by: Dave Airlie <airlied@redhat.com>
Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de>
6 years agoradv: Add compute DCC decompress.
Bas Nieuwenhuizen [Sat, 23 Dec 2017 12:17:52 +0000 (13:17 +0100)]
radv: Add compute DCC decompress.

We do an in place copy where we read compressed and write decompressed.
By doing this in sizes that cover entire DCC blocks and waiting for all
reads in the block before starting to write we avoid corruption.

In the end we clear the DCC metadata to 0xffffffff.

Reviewed-by: Dave Airlie <airlied@redhat.com>
Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de>
6 years agoradv: Use the meta fast clear destructor on construction failure.
Bas Nieuwenhuizen [Sat, 23 Dec 2017 11:37:13 +0000 (12:37 +0100)]
radv: Use the meta fast clear destructor on construction failure.

Simplifies failure paths. The caller already calls
radv_device_finish_meta_fast_clear_flush_state on failure.

Reviewed-by: Dave Airlie <airlied@redhat.com>
Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de>
6 years agoradv: Add GFX DCC decompress.
Bas Nieuwenhuizen [Sat, 23 Dec 2017 11:18:29 +0000 (12:18 +0100)]
radv: Add GFX DCC decompress.

Reviewed-by: Dave Airlie <airlied@redhat.com>
Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de>
6 years agoradv: Don't enable DCC / TC compat HTILE for storage images.
Bas Nieuwenhuizen [Sat, 23 Dec 2017 10:42:18 +0000 (11:42 +0100)]
radv: Don't enable DCC / TC compat HTILE for storage images.

We don't get a layout when binding to a descriptor set, but can
assume that the LAYOUT is GENERAL.

For DCC stores with the DCC bits set will result in a hang, so
better be safe than sorry.

Reviewed-by: Dave Airlie <airlied@redhat.com>
Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de>
6 years agoRevert "radv/gfx9: fix block compression texture views."
Bas Nieuwenhuizen [Fri, 29 Dec 2017 09:59:27 +0000 (10:59 +0100)]
Revert "radv/gfx9: fix block compression texture views."

This reverts commit 59515780433837ad3975f8ed20b93cf2fe6870e5.

The mentioned commit causes a hang in DoW3 on Vega.

Fixes: 59515780433 "radv/gfx9: fix block compression texture views."
Acked-by: Dave Airlie <airlied@redhat.com>
6 years agosvga: update SVGA_NEW_ flags for updating sampler state
Brian Paul [Thu, 28 Dec 2017 17:07:59 +0000 (10:07 -0700)]
svga: update SVGA_NEW_ flags for updating sampler state

The SVGA_NEW_FS flag is needed since we now examine the fragment
shader's fs_shadow_compare_units flags.  The SVGA_NEW_TEXTURE_FLAGS
flag is not needed since it's only for pre-VGPU10.

No piglit changes.  This doesn't fix any known issues but it could
pop up somewhere.  Suggested by Charmaine.

Reviewed-by: Charmaine Lee <charmainel@vmware.com>
6 years agosvga: whitespace, formatting fixes in svga_state_tss.c
Brian Paul [Thu, 28 Dec 2017 17:38:29 +0000 (10:38 -0700)]
svga: whitespace, formatting fixes in svga_state_tss.c

6 years agoradv/gfx9: use correct swizzle parameter to work out border swizzle.
Dave Airlie [Fri, 29 Dec 2017 01:32:36 +0000 (11:32 +1000)]
radv/gfx9: use correct swizzle parameter to work out border swizzle.

This should fix:
dEQP-VK.pipeline.sampler.view_type.*.format.b4g4r4a4_unorm_pack16.address_modes.all_mode_clamp_to_border_opaque_black
and a few others in that area.

Fixes: b11c4a5546 (radv: add texture descriptor/fmask/cmask support for GFX9)
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
6 years agoradv/gfx9: use a bigger hammer to flush cb/db caches.
Dave Airlie [Fri, 29 Dec 2017 01:00:34 +0000 (11:00 +1000)]
radv/gfx9: use a bigger hammer to flush cb/db caches.

amdvlk is probably more subtle than this but it never uses
the inv cb/db variants, we fail some CTS tests without this.

Fixes:
dEQP-VK.renderpass.dedicated_allocation.formats.d32_sfloat_s8_uint.input*.

Fixes: c2fbeb7ca05 (radv: add GFX9 cache flushing support.)
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> (for now :-)
Signed-off-by: Dave Airlie <airlied@redhat.com>
6 years agoradv/gfx9: fix block compression texture views.
Dave Airlie [Fri, 29 Dec 2017 00:30:39 +0000 (10:30 +1000)]
radv/gfx9: fix block compression texture views.

This ports a fix from amdvlk, to fix the sizing for mip levels
when block compressed images are viewed using uncompressed views.

Fixes:
dEQP-VK.image.texel_view_compatible.graphic.extended*bc*

Fixes: e38685cc62e 'Revert "radv: disable support for VEGA for now."'
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
6 years agoradv/gfx9: fix buffer to image for 3d images on compute queues
Dave Airlie [Thu, 28 Dec 2017 23:20:21 +0000 (09:20 +1000)]
radv/gfx9: fix buffer to image for 3d images on compute queues

This fixes some of the broken:
dEQP-VK.synchronization.op.multi_queue.*64x64x8* tests.

Fixes: e38685cc62e 'Revert "radv: disable support for VEGA for now."'
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
6 years agoradv/gfx9: fix 3d image clears on compute queues
Dave Airlie [Thu, 28 Dec 2017 22:52:07 +0000 (08:52 +1000)]
radv/gfx9: fix 3d image clears on compute queues

This fixes some of the broken:
dEQP-VK.synchronization.op.multi_queue.*64x64x8* tests.

Fixes: e38685cc62e 'Revert "radv: disable support for VEGA for now."'
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
6 years agoradv/gfx9: fix 3d image to image transfers on compute queues.
Dave Airlie [Thu, 28 Dec 2017 07:10:35 +0000 (17:10 +1000)]
radv/gfx9: fix 3d image to image transfers on compute queues.

This fixes some of the broken:
dEQP-VK.synchronization.op.multi_queue.*64x64x8* tests.

Fixes: e38685cc62e 'Revert "radv: disable support for VEGA for now."'
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
6 years agoanv/device: Mark all state buffers as needing capture
Jason Ekstrand [Wed, 27 Dec 2017 16:41:30 +0000 (08:41 -0800)]
anv/device: Mark all state buffers as needing capture

Previously, we were flagging the instruction state buffer for capture
but not surface state or dynamic state.  We want those captured too.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
6 years agointel/aubinator: Gracefully handle dynamic state not being available
Jason Ekstrand [Wed, 27 Dec 2017 16:40:30 +0000 (08:40 -0800)]
intel/aubinator: Gracefully handle dynamic state not being available

Some older versions of the Vulkan driver didn't properly tag dynamic
state as needing to be captured.  Also, this prevents crashes when
looking at dumps on older kernels.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
6 years agointel/aubinator: Free section data last
Jason Ekstrand [Wed, 27 Dec 2017 16:39:10 +0000 (08:39 -0800)]
intel/aubinator: Free section data last

We were walking the sections, printing the batches, and then freeing
them in one pass.  If the batch happens to reference any earlier
sections (which it almost certainly will since it's at the end), we will
access freed memory.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
6 years agospirv: consider bitsize when handling OpSwitch cases
Eero Tamminen [Tue, 26 Dec 2017 15:21:21 +0000 (07:21 -0800)]
spirv: consider bitsize when handling OpSwitch cases

This reverts commit 7665383a33f9ce9256aa121cbe4d3bd948dff145 and is
squashed together with https://patchwork.freedesktop.org/patch/194610/
(spirv: avoid infinite loop / freeze in vtn_cfg_walk_blocks()) which
fixes https://bugs.freedesktop.org/show_bug.cgi?id=104359 properly.

Fixes: 9702fac68e (spirv: consider bitsize when handling OpSwitch cases)
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=104359
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
6 years agosvga: check for null fs pointer in update_samplers()
Brian Paul [Thu, 28 Dec 2017 16:16:44 +0000 (09:16 -0700)]
svga: check for null fs pointer in update_samplers()

This can happen when there's no active fragment shader, such as
when using transform feedback.  This wasn't hit by any Piglit test
but is hit by Daniel Rákos' Nature demo.  VMware bug 2026189.

Reviewed-by: Charmaine Lee <charmainel@vmware.com>
6 years agost/mesa: increase size of glsl_base_type bitfields
Brian Paul [Wed, 27 Dec 2017 20:36:30 +0000 (13:36 -0700)]
st/mesa: increase size of glsl_base_type bitfields

Change 59f458cd8703b97b31b8 added more enums to glsl_base_type.  We
have to bump up the size of the bitfields for fields of this type
for MSVC.  Also, add another assertion to catch another place where
this enum bitfield is used.

Reviewed-by: Neha Bhende <bhenden@vmware.com>
6 years agoradv: fix pipeline statistics end query on compute queue
Dave Airlie [Thu, 28 Dec 2017 06:31:48 +0000 (16:31 +1000)]
radv: fix pipeline statistics end query on compute queue

It's legal to a pipeline stat query on a compute queue,
but we'd emit the wrong packet here. This should fix it to emit
the correct packet.

Noticed while inspecting the mpv hang.

Fixes: ad61eac250 (radv: factor out eop event writing code. (v2))
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
6 years agoradv: fix events on compute queues.
Dave Airlie [Thu, 28 Dec 2017 06:26:18 +0000 (16:26 +1000)]
radv: fix events on compute queues.

The event emission wasn't sending the correct packet for gfx8 compute
queues, which explains why it works on vega fine.

This fixes the mpv vulkan hang.

Fixes: ad61eac250 (radv: factor out eop event writing code. (v2))
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
6 years agoradv: move local bos usage to a perftest flag.
Dave Airlie [Wed, 27 Dec 2017 23:49:32 +0000 (09:49 +1000)]
radv: move local bos usage to a perftest flag.

These seem mildly unstable on vega, crashing CTS in various fun ways,
and looks like leaking memory.

Disable for now, but leave the option to enable them.

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
6 years agovulkan/wsi: free cmd pools
Dave Airlie [Wed, 27 Dec 2017 23:45:07 +0000 (09:45 +1000)]
vulkan/wsi: free cmd pools

We destroy the pools but don't free the container.

This fixes:
dEQP-VK.wsi.xlib.swapchain.simulate_oom*

Fixes: d50937f137 (vulkan/wsi: Implement prime in a completely generic way)
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
6 years agoradv: Always use fragment resolve if dest uses DCC.
Bas Nieuwenhuizen [Sat, 23 Dec 2017 10:43:49 +0000 (11:43 +0100)]
radv: Always use fragment resolve if dest uses DCC.

HW resolve does not support it either.

Fixes: 2a04f5481df "radv/meta: select resolve paths"
Reviewed-by: Dave Airlie <airlied@redhat.com>
6 years agoradv: Use correct framebuffer size for partial FS resolves.
Bas Nieuwenhuizen [Wed, 27 Dec 2017 23:19:28 +0000 (00:19 +0100)]
radv: Use correct framebuffer size for partial FS resolves.

Framebuffer is from 0,0, not (dst.x, dst.y).

Fixes: 69136f4e633 "radv/meta: add resolve pass using fragment/vertex shaders"
Reviewed-by: Dave Airlie <airlied@redhat.com>
6 years agoradv: Fix fragment resolve destination offset.
Bas Nieuwenhuizen [Tue, 26 Dec 2017 15:11:35 +0000 (16:11 +0100)]
radv: Fix fragment resolve destination offset.

The position start at (dst.x, dst.y), so if we want the source to
start at (src.x, src.y), we have to offset by (src.x-dst.x,src.y-dst.y).

Haven't tested that this fixed anything yet, but found by inspection.

Fixes: 69136f4e633 "radv/meta: add resolve pass using fragment/vertex shaders"
Reviewed-by: Dave Airlie <airlied@redhat.com>
6 years agoradv: Don't handle DCC in compute resolve.
Bas Nieuwenhuizen [Mon, 25 Dec 2017 13:30:50 +0000 (14:30 +0100)]
radv: Don't handle DCC in compute resolve.

If the destination has DCC, we will use the FS resolve.

Reviewed-by: Dave Airlie <airlied@redhat.com>
6 years agoradv: Flush caches before subpass resolve.
Bas Nieuwenhuizen [Mon, 25 Dec 2017 13:27:28 +0000 (14:27 +0100)]
radv: Flush caches before subpass resolve.

Fixes: f4e499ec791 "radv: add initial non-conformant radv vulkan driver"
Reviewed-by: Dave Airlie <airlied@redhat.com>
6 years agoradv: Invert condition for all samples identical during resolve.
Bas Nieuwenhuizen [Mon, 25 Dec 2017 12:15:06 +0000 (13:15 +0100)]
radv: Invert condition for all samples identical during resolve.

the samples_identical instruction returns 0 if they are differet, so
we have to do the extra work if the result is 0, not if it is != 0.

Fixes: f4e499ec791 "radv: add initial non-conformant radv vulkan driver"
Reviewed-by: Dave Airlie <airlied@redhat.com>
6 years agoegl: don't try the software path twice
Eric Engestrom [Wed, 20 Dec 2017 15:53:10 +0000 (15:53 +0000)]
egl: don't try the software path twice

Signed-off-by: Eric Engestrom <eric.engestrom@imgtec.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Reported-by: Brendan King <Brendan.King@imgtec.com>
6 years agoegl: rename LIBGL_ALWAYS_SOFTWARE variable from UseFallback to ForceSoftware
Eric Engestrom [Wed, 20 Dec 2017 15:53:09 +0000 (15:53 +0000)]
egl: rename LIBGL_ALWAYS_SOFTWARE variable from UseFallback to ForceSoftware

Signed-off-by: Eric Engestrom <eric.engestrom@imgtec.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
6 years agoegl: let each platform decided how to handle LIBGL_ALWAYS_SOFTWARE
Eric Engestrom [Wed, 20 Dec 2017 15:53:08 +0000 (15:53 +0000)]
egl: let each platform decided how to handle LIBGL_ALWAYS_SOFTWARE

My refactor in 47273d7312cb5b5b6b0b9 missed this early return; because
of it, setting UseFallback one layer above actually prevented the
software path from being used.

Remove this early return and let each platform's dri2_initialize_*()
decide what it can do with the LIBGL_ALWAYS_SOFTWARE restriction.

platform_{surfaceless,x11,wayland} were already handling it themselves.

Fixes: 47273d7312cb5b5b6b0b9 "egl: set UseFallback if LIBGL_ALWAYS_SOFTWARE is set"
Signed-off-by: Eric Engestrom <eric.engestrom@imgtec.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Reported-by: Brendan King <Brendan.King@imgtec.com>
6 years agoegl: link libEGL against the dynamic version of libglapi
Brendan King [Mon, 18 Dec 2017 16:33:18 +0000 (16:33 +0000)]
egl: link libEGL against the dynamic version of libglapi

Note: the following happens only when using slibtool.
Since this is a very serious breakage, we will keep the workaround until
a better solution is available.

DRI modules store the address of the dispatch table in a TLS variable,
_glapi_tls_Dispatch.

Changes to the way libEGL is built in d884d8d0077c16d459b1 resulted in
it being statically linked against libglapi, and thus containing its own
copy of _glapi_tls_Dispatch. The result was that some applications would
fail to work (e.g. deqp-egl, which dynamically loads libEGL), due to the
DRI module storing the dispatch table address in one copy of
_glapi_tls_Dispatch, and libEGL obtaining the address from another copy
of the variable.

Fixes: d884d8d0077c16d459b1 "egl/dri: link directly to libglapi.so"
Signed-off-by: Brendan King <Brendan.King@imgtec.com>
Signed-off-by: Eric Engestrom <eric.engestrom@imgtec.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
6 years agoradv: don't do format replacement on tc compat htile surfaces.
Dave Airlie [Wed, 27 Dec 2017 07:00:29 +0000 (17:00 +1000)]
radv: don't do format replacement on tc compat htile surfaces.

For copies the texture unit needs to know the depth format so
it can read the htile data properly.

This fixes:
dEQP-VK.renderpass.suballocation.formats.d32_sfloat_s8_uint.load.clear

Fixes: ad3d98da9f (radv: enable tc compatible htile for d32s8 also.)
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
6 years agoradv/gfx9: use correct stencil format for tc compat htile.
Dave Airlie [Wed, 27 Dec 2017 01:22:58 +0000 (11:22 +1000)]
radv/gfx9: use correct stencil format for tc compat htile.

This needs to correspond to the bit depth of the Z plane.

noticed in passing reading amdvlk.

Fixes: fc6c77e162df3 (radv: fix TC-compat HTILE with VK_FORMAT_D32_SFLOAT_S8_UINT on Vega)
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
6 years agosvga: move variant->fs_shadow_compare_units assignment
Brian Paul [Wed, 27 Dec 2017 18:05:52 +0000 (11:05 -0700)]
svga: move variant->fs_shadow_compare_units assignment

Fixes a crash since the variant object isn't allocated until later
in the function.  Not sure how this got through.

Reviewed-by: Charmaine Lee <charmainel@vmware.com>
6 years agoamd/common: rework set_userdata_location() and rename to set_loc()
Samuel Pitoiset [Wed, 20 Dec 2017 19:56:07 +0000 (20:56 +0100)]
amd/common: rework set_userdata_location() and rename to set_loc()

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agoamd/common: rename set_userdata_location_shader() to set_loc_shader()
Samuel Pitoiset [Wed, 20 Dec 2017 19:56:06 +0000 (20:56 +0100)]
amd/common: rename set_userdata_location_shader() to set_loc_shader()

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agoamd/common: replace set_userdata_location_indirect() by set_loc_desc()
Samuel Pitoiset [Wed, 20 Dec 2017 19:56:05 +0000 (20:56 +0100)]
amd/common: replace set_userdata_location_indirect() by set_loc_desc()

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agoamd/common: rename radv_define_vs_user_sgprs_phase2()
Samuel Pitoiset [Wed, 20 Dec 2017 19:56:04 +0000 (20:56 +0100)]
amd/common: rename radv_define_vs_user_sgprs_phase2()

... to set_vs_specific_input_locs().

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agoamd/common: rename radv_define_common_user_sgprs_phase2()
Samuel Pitoiset [Wed, 20 Dec 2017 19:56:03 +0000 (20:56 +0100)]
amd/common: rename radv_define_common_user_sgprs_phase2()

... to set_global_input_locs().

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agoamd/common: rename add_user_sgpr_array_argument() to add_array_arg()
Samuel Pitoiset [Wed, 20 Dec 2017 19:56:02 +0000 (20:56 +0100)]
amd/common: rename add_user_sgpr_array_argument() to add_array_arg()

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agoamd/common: replace add_sgpr_argument() by add_arg()
Samuel Pitoiset [Wed, 20 Dec 2017 19:56:01 +0000 (20:56 +0100)]
amd/common: replace add_sgpr_argument() by add_arg()

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agoamd/common: replace add_user_sgpr_argument() by add_arg()
Samuel Pitoiset [Wed, 20 Dec 2017 19:56:00 +0000 (20:56 +0100)]
amd/common: replace add_user_sgpr_argument() by add_arg()

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agoamd/common: replace add_vgpr_argument() by add_arg()
Samuel Pitoiset [Wed, 20 Dec 2017 19:55:59 +0000 (20:55 +0100)]
amd/common: replace add_vgpr_argument() by add_arg()

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agoamd/common: add new add_arg() helper for SGPRs/VGPRs arguments
Samuel Pitoiset [Wed, 20 Dec 2017 19:55:58 +0000 (20:55 +0100)]
amd/common: add new add_arg() helper for SGPRs/VGPRs arguments

The idea is to clean up the add arguments logic.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agoamd/common: rename radv_define_common_user_sgprs_phase1()
Samuel Pitoiset [Wed, 20 Dec 2017 19:55:57 +0000 (20:55 +0100)]
amd/common: rename radv_define_common_user_sgprs_phase1()

... to declare_global_input_sgprs().

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agoamd/common: rename radv_define_vs_user_sgprs_phase1()
Samuel Pitoiset [Wed, 20 Dec 2017 19:55:56 +0000 (20:55 +0100)]
amd/common: rename radv_define_vs_user_sgprs_phase1()

... to declare_vs_specific_inputs_sgprs().

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agoamd/common: do not try to declare input VS SGPRs for GS
Samuel Pitoiset [Wed, 20 Dec 2017 19:55:55 +0000 (20:55 +0100)]
amd/common: do not try to declare input VS SGPRs for GS

It's a no-op anyway but it looked strange to me, remove it.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agoamd/common: add declare_vs_input_vgprs() helper
Samuel Pitoiset [Wed, 20 Dec 2017 19:55:54 +0000 (20:55 +0100)]
amd/common: add declare_vs_input_vgprs() helper

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agoamd/common: add declare_tes_input_vgprs() helper
Samuel Pitoiset [Wed, 20 Dec 2017 19:55:53 +0000 (20:55 +0100)]
amd/common: add declare_tes_input_vgprs() helper

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agoamd/common: remove unnecessary num_user_sgprs_used
Samuel Pitoiset [Wed, 20 Dec 2017 19:55:52 +0000 (20:55 +0100)]
amd/common: remove unnecessary num_user_sgprs_used

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agoamd/common: remove unnecessary user_sgpr_count
Samuel Pitoiset [Wed, 20 Dec 2017 19:55:51 +0000 (20:55 +0100)]
amd/common: remove unnecessary user_sgpr_count

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agoradeonsi: make use of ac_init_exec_full_mask()
Samuel Pitoiset [Wed, 13 Dec 2017 12:59:12 +0000 (13:59 +0100)]
radeonsi: make use of ac_init_exec_full_mask()

Similar to si_init_exec_full_mask().

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
6 years agosvga: use tgsi_util_get_shadow_ref_src_index() in a couple place
Brian Paul [Sun, 24 Dec 2017 22:38:01 +0000 (15:38 -0700)]
svga: use tgsi_util_get_shadow_ref_src_index() in a couple place

No piglit changes.

Reviewed-by: Neha Bhende <bhenden@vmware.com>
Reviewed-by: Charmaine Lee <charmainel@vmware.com>
6 years agotgsi: improve comment on tgsi_util_get_shadow_ref_src_index()
Brian Paul [Sun, 24 Dec 2017 22:37:09 +0000 (15:37 -0700)]
tgsi: improve comment on tgsi_util_get_shadow_ref_src_index()

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Neha Bhende <bhenden@vmware.com>
Reviewed-by: Charmaine Lee <charmainel@vmware.com>
6 years agosvga: fix TGSI_TEXTURE_SHADOW1D coordinate selection
Brian Paul [Sun, 24 Dec 2017 05:11:47 +0000 (22:11 -0700)]
svga: fix TGSI_TEXTURE_SHADOW1D coordinate selection

Fixes about 24 Piglit tex-miplevel-selection tests.

Reviewed-by: Neha Bhende <bhenden@vmware.com>
Reviewed-by: Charmaine Lee <charmainel@vmware.com>
6 years agosvga: fix shadow comparison failures
Brian Paul [Sat, 23 Dec 2017 21:16:52 +0000 (14:16 -0700)]
svga: fix shadow comparison failures

In some cases, We do shadow comparison cases in the fragment shader
instead of with texture sampler state.  But when we do so, we must
disable the shadow comparison test in the sampler state.  As it
was, we were doing the comparison twice, which resulted in nonsense.
Also, we had the texcoord and texel value swapped in the comparison
instruction.

Fixes about 38 Piglit tex-miplevel-selection tests.

Reviewed-by: Neha Bhende <bhenden@vmware.com>
Reviewed-by: Charmaine Lee <charmainel@vmware.com>
6 years agoutil: add trivial comment on u_upload_create()
Brian Paul [Sun, 24 Dec 2017 05:12:52 +0000 (22:12 -0700)]
util: add trivial comment on u_upload_create()

6 years agor600: fix atomic counter index mode getting emitted on pre-cayman
Dave Airlie [Wed, 27 Dec 2017 01:56:20 +0000 (01:56 +0000)]
r600: fix atomic counter index mode getting emitted on pre-cayman

This is a regression since I added cayman atomic support, not sure
it fixes anything, but the shader dumps look better.

Signed-off-by: Dave Airlie <airlied@redhat.com>
6 years agoradv: set some dcc parameters depending on if texture will be sampled
Dave Airlie [Tue, 26 Dec 2017 22:16:53 +0000 (08:16 +1000)]
radv: set some dcc parameters depending on if texture will be sampled

This is ported from amdvlk which sets the independent 64b blocks
only for image which will sample dcc.

I'm not sure how to port this to radeonsi.

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
6 years agoradv/radeonsi: set dcc min uncompressed properly for APUs.
Dave Airlie [Tue, 26 Dec 2017 22:02:30 +0000 (08:02 +1000)]
radv/radeonsi: set dcc min uncompressed properly for APUs.

This is ported from amdvlk.

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
6 years agoamd/common/radv/radeonsi: use register defines for dcc block sizes.
Dave Airlie [Tue, 26 Dec 2017 21:56:12 +0000 (07:56 +1000)]
amd/common/radv/radeonsi: use register defines for dcc block sizes.

These are just taken from amdvlk, we probably knew these already,
but may as well port them now.

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
6 years agost/glsl_to_nir: add patch support to st_nir_assign_var_locations()
Timothy Arceri [Wed, 13 Dec 2017 23:14:34 +0000 (10:14 +1100)]
st/glsl_to_nir: add patch support to st_nir_assign_var_locations()

Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
6 years agost/glsl_to_nir: call post opt functions after opts have finished
Timothy Arceri [Thu, 14 Dec 2017 03:48:49 +0000 (14:48 +1100)]
st/glsl_to_nir: call post opt functions after opts have finished

We need to move this to a separate loop because
nir_compact_varyings() can alter the IR of a previous stage.

Fixes: 6648bd68fd27 "st/glsl_to_nir: enable NIR link time opts"
Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
6 years agost/st_glsl_to_nir: call nir_lower_64bit_pack
Timothy Arceri [Thu, 14 Dec 2017 05:02:45 +0000 (16:02 +1100)]
st/st_glsl_to_nir: call nir_lower_64bit_pack

Fixes 56 crashes in the radeonsi nir backend.

Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
6 years agodocs/features: show es3.1 compat done on r600.
Dave Airlie [Wed, 27 Dec 2017 00:07:25 +0000 (00:07 +0000)]
docs/features: show es3.1 compat done on r600.

This was already being reported, just missed the docs.

Reported-by: Dieter Nützel <Dieter@nuetzel-hh.de>
Signed-off-by: Dave Airlie <airlied@redhat.com>
6 years agomesa: always compare optype with symbolic name in ATI_fs
Miklós Máté [Sat, 2 Dec 2017 22:35:25 +0000 (23:35 +0100)]
mesa: always compare optype with symbolic name in ATI_fs

Signed-off-by: Miklós Máté <mtmkls@gmail.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
6 years agomesa: document ati_fragment_shader::cur_pass and swizzlerq
Miklós Máté [Sat, 2 Dec 2017 22:35:24 +0000 (23:35 +0100)]
mesa: document ati_fragment_shader::cur_pass and swizzlerq

Signed-off-by: Miklós Máté <mtmkls@gmail.com>
6 years agomesa: move ATI_fs state compile changes after the error checks
Miklós Máté [Sat, 2 Dec 2017 22:35:23 +0000 (23:35 +0100)]
mesa: move ATI_fs state compile changes after the error checks

Both in setup and arithmetic instructions. Also, remove the useless
new_*_inst() functions, and refactor check_arith_arg(), because it did
two completely different things.

Piglit: spec/ati_fragment_shader/error04-endshader

Signed-off-by: Miklós Máté <mtmkls@gmail.com>
6 years agotnl: fix not having texture coords in ATI_fs in swrast
Miklós Máté [Sat, 2 Dec 2017 22:35:22 +0000 (23:35 +0100)]
tnl: fix not having texture coords in ATI_fs in swrast

ATI_fs in swrast only had access to texture coordinates if there was a
valid texture bound and texturing was enabled.

Piglit: spec/ati_fragment_shader/render-sources and render-notexture

Signed-off-by: Miklós Máté <mtmkls@gmail.com>
6 years agomesa: fix not having secondary color in ATI_fs in swrast
Miklós Máté [Sat, 2 Dec 2017 22:35:21 +0000 (23:35 +0100)]
mesa: fix not having secondary color in ATI_fs in swrast

ATI_fs in swrast only had secondary color if GL_COLOR_SUM was enabled.
This patch probably fixes the same issue in r200.

Piglit: spec/ati_fragment_shader/render-sources and render-precedence

Signed-off-by: Miklós Máté <mtmkls@gmail.com>
6 years agomesa: fix validate for secondary interpolator
Miklós Máté [Sat, 2 Dec 2017 22:35:20 +0000 (23:35 +0100)]
mesa: fix validate for secondary interpolator

This patch fixes multiple problems:
- the interpolator check was duplicated
- both had arg instead of argRep
- I split it into color and alpha for better readability and error msg
- the DOT4 check only applies to color instruction according to the spec
- made the DOT4 check fatal, and improved the error msg

Piglit: spec/ati_fragment_shader/error08-secondary

v2: fixed formatting, added spec quotations

Signed-off-by: Miklós Máté <mtmkls@gmail.com>
6 years agomesa: fix typo in ATI_fs dstMod error checking
Miklós Máté [Sat, 2 Dec 2017 22:35:19 +0000 (23:35 +0100)]
mesa: fix typo in ATI_fs dstMod error checking

Piglit: spec/ati_fragment_shader/error14-invalidmod

Signed-off-by: Miklós Máté <mtmkls@gmail.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
6 years agomesa: fix crash when an ATI_fs pass begins with an alpha inst
Miklós Máté [Sat, 2 Dec 2017 22:35:18 +0000 (23:35 +0100)]
mesa: fix crash when an ATI_fs pass begins with an alpha inst

This fixes crash when:
- first pass begins with alpha inst
- first pass ends with color inst, second pass begins with alpha inst
Also, use the symbolic name instead of a number.

Piglit: spec/ati_fragment_shader/api-alphafirst

v2: fixed formatting

Signed-off-by: Miklós Máté <mtmkls@gmail.com>
6 years agomesa: add fallback texture for SampleMapATI if there is nothing
Miklós Máté [Sat, 2 Dec 2017 22:35:17 +0000 (23:35 +0100)]
mesa: add fallback texture for SampleMapATI if there is nothing

This fixes crash in the state tracker.

Piglit: spec/ati_fragment_shader/render-notexture

v2: fixed formatting, moved stuff inside the loop,
    moved the fallback later to fix more cases

Signed-off-by: Miklós Máté <mtmkls@gmail.com>
6 years agoradeonsi: don't use fast color clear for small images even on APUs
Marek Olšák [Tue, 12 Dec 2017 23:40:19 +0000 (00:40 +0100)]
radeonsi: don't use fast color clear for small images even on APUs

Increase the limit and handle non-square images better.

This makes glxgears 20% faster on APUs, and a little more on dGPUs.
We all use and love glxgears.

Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
6 years agoradeonsi: set PNT_SPRITE_ENA = point_quad_rasterization
Marek Olšák [Mon, 11 Dec 2017 18:28:01 +0000 (19:28 +0100)]
radeonsi: set PNT_SPRITE_ENA = point_quad_rasterization

This is based on how nvc0 translates the state.

6 years agogallium/util: add util_num_layers helper
Marek Olšák [Mon, 11 Dec 2017 18:27:39 +0000 (19:27 +0100)]
gallium/util: add util_num_layers helper

6 years agoradv: Fix DCC compatible formats.
Bas Nieuwenhuizen [Sat, 23 Dec 2017 00:40:03 +0000 (01:40 +0100)]
radv: Fix DCC compatible formats.

DCC was disabled when the image format is !!supported, which is one ! too many.

Ironically the commit that introduced it was supposed to lead to more DCC use ...

Fixes: 969537d9358 "radv: Add support for more DCC compression with VK_KHR_image_format_list."
Reviewed-by: Dave Airlie <airlied@redhat.com>