platform/upstream/mesa.git
7 years agoanv: Fix cache UUID generation.
Kenneth Graunke [Mon, 28 Nov 2016 21:37:44 +0000 (13:37 -0800)]
anv: Fix cache UUID generation.

I asked Emil to switch from 0 (success) vs. -1 (fail) to use a boolean
in my review comments.  The "not" went missing.  Easy mistake, but the
result is that nothing runs at all :)

Fix whitespace while we're here too.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
7 years agovulkan/wsi: Fix resource leak in success path of wsi_queue_init()
Gwan-gyeong Mun [Fri, 25 Nov 2016 14:39:04 +0000 (23:39 +0900)]
vulkan/wsi: Fix resource leak in success path of wsi_queue_init()

It fixes leakage of pthread_condattr resource on wsi_queue_init()

Cc: "13.0" <mesa-stable@lists.freedesktop.org>
Signed-off-by: Mun Gwan-gyeong <elongbug@gmail.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Eduardo Lima Mitev <elima@igalia.com>
7 years agoanv: Update the teardown in reverse order of the anv_CreateDevice
Gwan-gyeong Mun [Fri, 25 Nov 2016 14:34:46 +0000 (23:34 +0900)]
anv: Update the teardown in reverse order of the anv_CreateDevice

This updates releasing of resource in reverse order of the anv_CreateDevice
to anv_DestroyDevice.
And it fixes resource leak in pthread_mutex, pthread_cond, anv_gem_context.

Cc: "13.0" <mesa-stable@lists.freedesktop.org>
Signed-off-by: Mun Gwan-gyeong <elongbug@gmail.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
7 years agoanv: drop the return type for anv_queue_init()
Gwan-gyeong Mun [Fri, 25 Nov 2016 14:34:43 +0000 (23:34 +0900)]
anv: drop the return type for anv_queue_init()

anv_queue_init() always returns VK_SUCCESS, so caller does not need
to check return value of anv_queue_init().

Signed-off-by: Mun Gwan-gyeong <elongbug@gmail.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
7 years agoanv: Add missing error-checking to anv_block_pool_init (v2)
Gwan-gyeong Mun [Fri, 25 Nov 2016 14:34:42 +0000 (23:34 +0900)]
anv: Add missing error-checking to anv_block_pool_init (v2)

When the memfd_create() and u_vector_init() fail on anv_block_pool_init(),
this patch makes to return VK_ERROR_INITIALIZATION_FAILED.
All of initialization success on anv_block_pool_init(), it makes to return
VK_SUCCESS.

CID 1394319

v2: Fixes from Emil's review:
  a) Add the return type for propagating the return value to caller.
  b) Changed anv_block_pool_init() to return VK_ERROR_INITIALIZATION_FAILED
     on failure of initialization.

Cc: "13.0" <mesa-stable@lists.freedesktop.org>
Signed-off-by: Mun Gwan-gyeong <elongbug@gmail.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
7 years agost/omx/dec/h264: consider POC as signed instead of unsigned
Chandu Babu Namburu [Wed, 23 Nov 2016 14:54:34 +0000 (20:24 +0530)]
st/omx/dec/h264: consider POC as signed instead of unsigned

picture order count can be a negative value

Reviewed-by: Christian König <christian.koenig@amd.com>
7 years agoradv: don't return VK_SUCCESS if radv_device_get_cache_uuid() fails
Emil Velikov [Thu, 24 Nov 2016 20:30:45 +0000 (20:30 +0000)]
radv: don't return VK_SUCCESS if radv_device_get_cache_uuid() fails

If radv_device_get_cache_uuid() fails result will be VK_SUCCESS as set
by the radv_init_wsi() call above.

Fixes: d943839 (radv: Use library mtime for cache UUID.)
Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
7 years agoradv: don't leak the fd if radv_physical_device_init() succeeds
Emil Velikov [Thu, 24 Nov 2016 20:30:44 +0000 (20:30 +0000)]
radv: don't leak the fd if radv_physical_device_init() succeeds

radv_amdgpu_winsys_create() does not take ownership of the fd, thus we
end up leaking it as we return with VK_SUCCESS.

Cc: Dave Airlie <airlied@redhat.com>
Cc: "13.0" <mesa-stable@lists.freedesktop.org>
Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
7 years agoanv: don't leak memory if anv_init_wsi() fails
Emil Velikov [Thu, 24 Nov 2016 20:30:43 +0000 (20:30 +0000)]
anv: don't leak memory if anv_init_wsi() fails

brw_compiler_create() rzalloc-ates memory which we forgot to free.

Cc: "13.0" <mesa-stable@lists.freedesktop.org>
Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
7 years agoanv: don't double-close the same fd
Emil Velikov [Thu, 24 Nov 2016 20:30:42 +0000 (20:30 +0000)]
anv: don't double-close the same fd

Cc: "13.0" <mesa-stable@lists.freedesktop.org>
Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
7 years agoconfigure.ac: remove no longer used TIMESTAMP_CMD
Emil Velikov [Thu, 24 Nov 2016 20:30:41 +0000 (20:30 +0000)]
configure.ac: remove no longer used TIMESTAMP_CMD

Good bye, you shall not be missed.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
7 years agoanv: automake: don't generate anv_timestamp.h
Emil Velikov [Thu, 24 Nov 2016 20:30:40 +0000 (20:30 +0000)]
anv: automake: don't generate anv_timestamp.h

No longer used as of last commit.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
7 years agoanv: Use library mtime for cache UUID.
Emil Velikov [Thu, 24 Nov 2016 20:30:39 +0000 (20:30 +0000)]
anv: Use library mtime for cache UUID.

Inspired by a similar commit for radv.

Rather than recomputing the timestamp on each make invocation, just
fetch it at runtime.

Thus we no longer get the constant rebuild of anv_device.c and the
follow-up libvulkan_intel.so link, when nothing has changed.

I.e. using make && make install is a little bit faster.

v2: Use bool return type (Ken).

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
7 years agoanv: Store UUID in physical device.
Emil Velikov [Thu, 24 Nov 2016 20:30:38 +0000 (20:30 +0000)]
anv: Store UUID in physical device.

Port of an equivalent commit for radv.

v2: Move the call just after MMAP_VERSION (Ken).

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
7 years agoisl: Make isl_finishme only warn once per call-site
Emil Velikov [Thu, 24 Nov 2016 18:18:15 +0000 (18:18 +0000)]
isl: Make isl_finishme only warn once per call-site

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
7 years agoradv: Make radv_finishme only warn once per call-site
Emil Velikov [Thu, 24 Nov 2016 18:18:14 +0000 (18:18 +0000)]
radv: Make radv_finishme only warn once per call-site

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
7 years agoanv: use do { } while (0) in the anv_finishme macro
Emil Velikov [Thu, 24 Nov 2016 18:18:13 +0000 (18:18 +0000)]
anv: use do { } while (0) in the anv_finishme macro

Use the generic construct instead of the currect GCC specific one.

Suggested-by: Kenneth Graunke <kenneth@whitecape.org>
Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
7 years agodocs: add git tips how to do commit fixups and squash them
Emil Velikov [Mon, 28 Nov 2016 17:40:04 +0000 (17:40 +0000)]
docs: add git tips how to do commit fixups and squash them

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
7 years agodocs: add note about r-b/other tags when resending
George Kyriazis [Mon, 28 Nov 2016 17:35:26 +0000 (17:35 +0000)]
docs: add note about r-b/other tags when resending

[Emil Velikov: split from the typos fixes]
Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
7 years agodocs: fix small typos in the submit patches page
Andres Gomez [Mon, 28 Nov 2016 16:47:42 +0000 (18:47 +0200)]
docs: fix small typos in the submit patches page

Signed-off-by: Andres Gomez <agomez@igalia.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
7 years agodocs/releasing: use correct page title
Emil Velikov [Mon, 28 Nov 2016 17:22:15 +0000 (17:22 +0000)]
docs/releasing: use correct page title

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
7 years agodocs/releasing: correctly document touch-testing
Emil Velikov [Mon, 28 Nov 2016 17:18:06 +0000 (17:18 +0000)]
docs/releasing: correctly document touch-testing

I've used an ancient version of the script which did not cover:
 - version expansion (cd mesa-* does not work)
 - --enable-glx-tls
 - EGL and es2* testing
 - Vulkan and DOTA2

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
7 years agodocs/release: drop references to patchwork
Emil Velikov [Mon, 28 Nov 2016 15:35:43 +0000 (15:35 +0000)]
docs/release: drop references to patchwork

The changes to release.sh have landed, so all we need is a recent
checkout of xorg-utils.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
7 years agodocs: add news item and link release notes for 13.0.2
Emil Velikov [Mon, 28 Nov 2016 15:30:13 +0000 (15:30 +0000)]
docs: add news item and link release notes for 13.0.2

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
7 years agodocs: add sha256 checksums for 13.0.2
Emil Velikov [Mon, 28 Nov 2016 15:28:01 +0000 (15:28 +0000)]
docs: add sha256 checksums for 13.0.2

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
(cherry picked from commit 2722144beddac0aa7065b478502c7c3a1f2a5451)

7 years agodocs: add release notes for 13.0.2
Emil Velikov [Mon, 28 Nov 2016 15:06:08 +0000 (15:06 +0000)]
docs: add release notes for 13.0.2

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
(cherry picked from commit c9e993ba1301ac0380b86a3934f5c97ff0827594)

7 years agoradv: fix 3D clears with baseMiplevel
Dave Airlie [Mon, 28 Nov 2016 07:03:11 +0000 (07:03 +0000)]
radv: fix 3D clears with baseMiplevel

This fixes:
dEQP-VK.api.image_clearing.clear_color_image.3d*

These were hitting an assert as the code wasn't taking the
baseMipLevel into account when minify the image depth.

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Cc: "13.0" <mesa-stable@lists.freedesktop.org>
7 years agoradv: brown-paper bag for a forgotten else.
Dave Airlie [Mon, 28 Nov 2016 06:22:05 +0000 (16:22 +1000)]
radv: brown-paper bag for a forgotten else.

This fixes the fix:
radv/ac/llvm: fix regression with shadow samplers fix

Signed-off-by: Dave Airlie <airlied@redhat.com>
Cc: "13.0" <mesa-stable@lists.freedesktop.org>
7 years agoradv/ac/llvm: fix regression with shadow samplers fix
Dave Airlie [Mon, 28 Nov 2016 05:42:36 +0000 (15:42 +1000)]
radv/ac/llvm: fix regression with shadow samplers fix

This fixes b56b54cbf1d8e70c87a434da5350d11533e5fed8:
radv/ac/llvm: shadow samplers only return one value

It makes sure we only do that for shadow sampling, as
opposed to sizing requests.

Signed-off-by: Dave Airlie <airlied@redhat.com>
Cc: "13.0" <mesa-stable@lists.freedesktop.org>
7 years agoradv/ac/llvm: shadow samplers only return one value.
Dave Airlie [Mon, 24 Oct 2016 21:47:13 +0000 (07:47 +1000)]
radv/ac/llvm: shadow samplers only return one value.

The intrinsic engine asserts in llvm due to this.

Reported-by: Christoph Haag <haagch+mesadev@frickel.club>
Cc: "13.0" <mesa-stable@lists.freedesktop.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
7 years agoradv/si: fix optimal micro tile selection
Dave Airlie [Thu, 24 Nov 2016 00:04:35 +0000 (10:04 +1000)]
radv/si: fix optimal micro tile selection

The same fix was posted for radeonsi, so port it here.

Reviewed-by: Edward O'Callaghan <funfunctor@folklore1984.net>
Cc: "13.0" <mesa-stable@lists.freedesktop.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
7 years agoradv: honour the number of properties available
Emil Velikov [Thu, 24 Nov 2016 18:14:58 +0000 (18:14 +0000)]
radv: honour the number of properties available

Cap up-to the number of properties available while copying the data.
Otherwise we might crash and/or leak data.

Cc: Dave Airlie <airlied@redhat.com>
Cc: "13.0" <mesa-stable@lists.freedesktop.org>
Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
7 years agoradv: drop the return type for radv_queue_init()
Mun Gwan-gyeong [Fri, 25 Nov 2016 14:34:44 +0000 (23:34 +0900)]
radv: drop the return type for radv_queue_init()

radv_queue_init() always returns VK_SUCCESS, so caller does not need
to check return value of radv_queue_init().

Signed-off-by: Mun Gwan-gyeong <elongbug@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
7 years agofreedreno: fix slice size for imported buffers
Rob Clark [Mon, 21 Nov 2016 15:23:04 +0000 (10:23 -0500)]
freedreno: fix slice size for imported buffers

Signed-off-by: Rob Clark <robdclark@gmail.com>
7 years agofreedreno/a3xx: make _emit_const() static
Rob Clark [Wed, 9 Nov 2016 18:17:08 +0000 (13:17 -0500)]
freedreno/a3xx: make _emit_const() static

Signed-off-by: Rob Clark <robdclark@gmail.com>
7 years agofreedreno/a4xx: make _emit_const() static
Rob Clark [Wed, 9 Nov 2016 18:16:36 +0000 (13:16 -0500)]
freedreno/a4xx: make _emit_const() static

Signed-off-by: Rob Clark <robdclark@gmail.com>
7 years agoanv/pipeline: Make is_dual_src_blend_factor inline
Jason Ekstrand [Sat, 26 Nov 2016 06:27:36 +0000 (22:27 -0800)]
anv/pipeline: Make is_dual_src_blend_factor inline

It's not used on gen8+ so it causes unused function warnings.

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
7 years agoanv/pipeline: Make the temp blend attachment state pointer const
Jason Ekstrand [Sat, 26 Nov 2016 06:26:50 +0000 (22:26 -0800)]
anv/pipeline: Make the temp blend attachment state pointer const

This fixes a "discards const" warning since blend is const.

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
7 years agogm107/ir: optimize 32-bit CONST load to mov
Samuel Pitoiset [Fri, 25 Nov 2016 11:25:58 +0000 (12:25 +0100)]
gm107/ir: optimize 32-bit CONST load to mov

This is not allowed for indirect accesses because the source
GPR might be erased by a subsequent instruction (WaR hazard)
if we don't emit a read dep bar.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
7 years agogm107/ir: do not combine CONST loads
Samuel Pitoiset [Fri, 25 Nov 2016 11:17:56 +0000 (12:17 +0100)]
gm107/ir: do not combine CONST loads

This will allow to use MOV instead of LD. The main advantage is
that MOV doesn't require a read dependency barrier while LD does,
and so this will both reduce barriers pressure and the number of
stall counts needed to read data from constant memory.

This is currently only for user uniform accesses. I should do
something similar when loading from the driver constant buffer
but it seems like a bit tricky to handle for now.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
7 years agoanv/device: Remove a bogus finishme comment
Jason Ekstrand [Sat, 26 Nov 2016 05:45:02 +0000 (21:45 -0800)]
anv/device: Remove a bogus finishme comment

We've been properly detecting bit6 swizzling for a long time now.

7 years agoi965: Enable fast clears for multi-lod
Ben Widawsky [Wed, 20 Apr 2016 14:23:06 +0000 (07:23 -0700)]
i965: Enable fast clears for multi-lod

On SKL (also fast clear is used for level 0, layer 0):

Manhattan 3.0:          3.88434% +/- 0.814659%
Manhattan 3.0 off:      3.25542% +/- 0.101149%
Trex:                   3.43501% +/- 0.31223%
Trex off:               4.13781% +/- 0.0993569%

ON BDW:

Manhattan 3.0:          1.37079% +/- 0.571208%
Manhattan 3.0 off:      1.74029% +/- 0.267499%

v2 (Ben, Matt): Fix rebase error by removing the perf warning
v3 (Topi): Rebased on top of revised eligibility logic

Signed-off-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
7 years agoi965: Allow single-sampled miptree to be resolved and shared
Topi Pohjolainen [Tue, 22 Nov 2016 19:53:38 +0000 (21:53 +0200)]
i965: Allow single-sampled miptree to be resolved and shared

Signed-off-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
7 years agoi965/gen8: Relax asserts prohibiting arrayed/mipmapped fast clears
Topi Pohjolainen [Fri, 10 Jun 2016 06:12:23 +0000 (09:12 +0300)]
i965/gen8: Relax asserts prohibiting arrayed/mipmapped fast clears

Signed-off-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
7 years agoi965: Use ISL for CCS layouts
Topi Pohjolainen [Tue, 8 Nov 2016 12:19:15 +0000 (14:19 +0200)]
i965: Use ISL for CCS layouts

One can now also delete intel_get_non_msrt_mcs_alignment().

v2 (Jason): Do not leak aux buf but allocate only after getting
            ISL surfaces.

Signed-off-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
7 years agoi965: Resolve non-compressed fast clears prior layered rendering
Topi Pohjolainen [Mon, 13 Jun 2016 07:51:10 +0000 (10:51 +0300)]
i965: Resolve non-compressed fast clears prior layered rendering

Signed-off-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
7 years agoi965: Restrict fast color clear on first slice only
Topi Pohjolainen [Tue, 14 Jun 2016 06:10:16 +0000 (09:10 +0300)]
i965: Restrict fast color clear on first slice only

Signed-off-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
7 years agoi965: Track fast color clear state in level/layer granularity
Topi Pohjolainen [Fri, 10 Jun 2016 08:09:53 +0000 (11:09 +0300)]
i965: Track fast color clear state in level/layer granularity

Note that RESOLVED is not tracked in the map explicitly. Absence
of item implicitly means RESOLVED state.

v2: Added intel_resolve_map_clear() into intel_miptree_release()
v3 (Jason): Properly handle the assumption of resolve map not
            containing any items with state RESOLVED. Removed
            unnecessary intel_miptree_set_fast_clear_state() call
            in brw_blorp_resolve_color() preventing
            intel_miptree_set_fast_clear_state() from asserting
            against RESOLVED.

Signed-off-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
7 years agoi965: Move fast clear state enumeration into resolve map
Topi Pohjolainen [Wed, 8 Jun 2016 17:51:32 +0000 (20:51 +0300)]
i965: Move fast clear state enumeration into resolve map

Status is still tracked per miptree. Next patch will switch to
resolve map per slice/level.

Signed-off-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
7 years agoi965: Refactor check if color resolve is needed
Topi Pohjolainen [Fri, 10 Jun 2016 06:01:54 +0000 (09:01 +0300)]
i965: Refactor check if color resolve is needed

Signed-off-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
7 years agoi965: Add plumbing for fast clear layer/level details
Topi Pohjolainen [Thu, 9 Jun 2016 07:59:06 +0000 (10:59 +0300)]
i965: Add plumbing for fast clear layer/level details

Until now fast clear has been supported only for non-layered and
non-mipmapped buffers. However, from gen8 onwards there is hardware
support also for layered/mipmapped. Once this is enabled, fast clear
operations target specific layer/level and call for the state to be
tracked in the same granularity. This is the first step providing
the details from callers to the state tracking.

Patch introduces new interface for reading and writing the state
hiding the upcoming bookkeeping changes in the call sites. There is
bunch of sanity checks added that will be relaxed per hardware
generation later on when the actual functionality is enabled.

v2: Rebased on top current master setting the state in
    blorp_surf_for_miptree().
v3: Replace open-coded resolved check in surface state emission
    with intel_miptree_has_color_unresolved().

Signed-off-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
7 years agoi965: Add interface for checking multiple slices if any is unresolved
Topi Pohjolainen [Mon, 19 Sep 2016 09:03:58 +0000 (12:03 +0300)]
i965: Add interface for checking multiple slices if any is unresolved

Signed-off-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
7 years agoi965: Provide slice details to renderbuffer fast clear state tracker
Topi Pohjolainen [Thu, 15 Sep 2016 05:22:34 +0000 (08:22 +0300)]
i965: Provide slice details to renderbuffer fast clear state tracker

This patch also introduces getter and setter for fast clear state
preparing for tracking the state per slice.

Signed-off-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
7 years agoi965: Split per miptree and per slice/level fast clear bits
Topi Pohjolainen [Fri, 10 Jun 2016 07:09:34 +0000 (10:09 +0300)]
i965: Split per miptree and per slice/level fast clear bits

Currently the status bits for fast clear include the flag telling
if non-multisampled mcs buffer should be used at all. Once the
state tracking is changed to follow individual levels/layers one
still needs to have the mcs enabling information in the miptree.
Therefore simply split it out to its own boolean.

Possible follow-up work is to combine disable_aux_buffers and
no_ccs into single enum.

v2 (Jason): Changed no_msrt_mcs to no_ccs and updated comment

Signed-off-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
7 years agoi965: Provide slice details to color resolver
Topi Pohjolainen [Thu, 15 Sep 2016 06:05:55 +0000 (09:05 +0300)]
i965: Provide slice details to color resolver

v2: Make intel_miptree_resolve_color() take start layer and
    layer count.

Signed-off-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
7 years agoi965: Add new interface for full color resolves
Topi Pohjolainen [Fri, 10 Jun 2016 05:23:40 +0000 (08:23 +0300)]
i965: Add new interface for full color resolves

Upcoming patches will introduce fast clear in level/layer
granularity like the driver does already for depth/hiz. This patch
introduces equivalent full resolve option.

Signed-off-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
7 years agoi965: Refactor lossless compression state tracking
Topi Pohjolainen [Wed, 6 Jul 2016 09:29:41 +0000 (12:29 +0300)]
i965: Refactor lossless compression state tracking

Essentially this moves fast clear state update away from surface
state setup into brw_postdraw_set_buffers_need_resolve() that gets
called just after draw submission.
Calling intel_miptree_used_for_rendering() can be drop for gen6
and earlier as it is no-op.

v2: Rebased on top current master setting the state in
    blorp_surf_for_miptree().

Signed-off-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
7 years agoRevert "glsl: allow layout qualifier overrides with ARB_shading_language_420pack"
Andres Gomez [Sat, 22 Oct 2016 14:22:13 +0000 (17:22 +0300)]
Revert "glsl: allow layout qualifier overrides with ARB_shading_language_420pack"

This reverts commit aaa69c79cd584db4d9c6ea7794e93d29f3d54572.

The commit was erroneous because the ast_layout_expression class is
meant to hold a list used for an after check that all the declared
values for a layout-qualifier-name are consistent.

Therefore, the check for the possibility of duplicated values was
previously fixed to happen much sooner, in the GLSL parser and the
merge of layout qualifiers, and the process_qualifier_constant method
only needs to check that the values are consistent.

By now, those layout-qualifier-name represented as a
ast_layout_expression are "max_vertices", "invocations", "vertices",
"local_size_[x|y|z]" and "xfb_stride".

From page 40 (page 46 of the PDF) of the GLSL 1.50 spec:

  " All geometry shader output layout declarations in a program must
    declare the same layout and same value for max_vertices."

From page 44 (page 50 of the PDF) of the GLSL 4.00 spec:

  " If an invocation count is declared, all such declarations must
    specify the same count."

From page 47 (page 53 of the PDF) of the GLSL 4.00 spec:

  " All tessellation control shader layout declarations in a program
    must specify the same output patch vertex count."

From page 60 (page 66 of the PDF) of the GLSL 4.30 spec:

  " Also, if such a layout qualifier is declared more than once in the
    same shader, all those declarations must set the same set of local
    work-group sizes and set them to the same values; otherwise a
    compile-time error results. If multiple compute shaders attached
    to a single program object declare local work-group size, the
    declarations must be identical; otherwise a link-time error
    results."

From page 73 (page 79 of the PDF) of the GLSL 4.40 spec:

  " While xfb_stride can be declared multiple times for the same
    buffer, it is a compile-time or link-time error to have different
    values specified for the stride for the same buffer."

Fixes GL44-CTS.enhanced_layouts.xfb_duplicated_stride

Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
Signed-off-by: Andres Gomez <agomez@igalia.com>
7 years agoRevert "glsl: geom shader max_vertices layout must match."
Andres Gomez [Sat, 22 Oct 2016 14:13:16 +0000 (17:13 +0300)]
Revert "glsl: geom shader max_vertices layout must match."

This reverts commit 4c863993780a11cea6f88fa0682796bee5794042.

The commit was erroneous because the ast_layout_expression class was
created to hold a list of values for a layout-qualifier-name which is
allowed to appear in more than one expression in the same
shader/program but not to hold different values.

In other words, the list is used for an after check that all the
declared values for a layout-qualifier-name are consistent.

Therefore, the values stored must match always, not just for
"max_vertices" or any other eventual layout-qualifier-name.

Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
Signed-off-by: Andres Gomez <agomez@igalia.com>
7 years agoglsl: push layout-qualifier-name values from variable declarations to global
Andres Gomez [Thu, 6 Oct 2016 22:52:06 +0000 (01:52 +0300)]
glsl: push layout-qualifier-name values from variable declarations to global

After the previous modifications in the merging of the
layout-qualifier-name values, we no longer push the final value in a
declaration to the global values.

This regression happens because we don't call for merging on the
right-most layout qualifier of a declaration which is also the
overriding one in case of multiple appearances.

Now, we add a new method to push these values to the global ones and
we call for this just after all the layout-qualifier collapsing has
happened in a declaration.

This simplifies how this was working in two ways; we make a clear
differentiation of when we are pushing this to the global values since
before it was mixed in the merging call and we only run this once all
the processing for layout-qualifiers in a declaration has happened.

Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
Signed-off-by: Andres Gomez <agomez@igalia.com>
7 years agoglsl: simplified error checking for duplicated layout-qualifiers
Andres Gomez [Sat, 22 Oct 2016 14:04:33 +0000 (17:04 +0300)]
glsl: simplified error checking for duplicated layout-qualifiers

The GLSL parser has been simplified to check for the needed
GL_ARB_shading_language_420pack extension just when merging the
qualifiers in the proper cases.

Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
Signed-off-by: Andres Gomez <agomez@igalia.com>
7 years agoglsl: simplified ast_type_qualifier::merge_into_[in|out]_qualifier API
Andres Gomez [Thu, 6 Oct 2016 22:52:08 +0000 (01:52 +0300)]
glsl: simplified ast_type_qualifier::merge_into_[in|out]_qualifier API

Since we modified the way in which multiple repetitions of the same
layout-qualifier-name in a single declaration collapse into the
ast_type_qualifier class, we can simplify the
merge_into_[in|out]_qualifier APIs through removing the create_node
parameter.

Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
Signed-off-by: Andres Gomez <agomez@igalia.com>
7 years agoglsl: ignore all but the rightmost layout qualifier name from the rightmost layout...
Andres Gomez [Sat, 22 Oct 2016 14:01:11 +0000 (17:01 +0300)]
glsl: ignore all but the rightmost layout qualifier name from the rightmost layout qualifier

From page 46 (page 52 of the PDF) of the GLSL 4.20 spec:

  " More than one layout qualifier may appear in a single
    declaration. If the same layout-qualifier-name occurs in multiple
    layout qualifiers for the same declaration, the last one overrides
    the former ones."

Consider this example:

  " #version 150
    #extension GL_ARB_shading_language_420pack: enable

    layout(max_vertices=2) layout(max_vertices=3) out;
    layout(max_vertices=3) out;"

Although different values for "max_vertices" results in a compilation
error. The above code is valid because max_vertices=2 is ignored.

Hence, when merging qualifiers in an ast_type_qualifier, we now ignore
new appearances of a same layout-qualifier-name if the new
"is_multiple_layouts_merge" parameter is on, since the GLSL parser
works in this case from right to left.

In addition, any special treatment for the buffer, uniform, in or out
layout defaults has been moved in the GLSL parser to the rule
triggered just after any previous processing/merging on the
layout-qualifiers has happened in a single declaration since it was
run too soon previously.

Fixes GL44-CTS.shading_language_420pack.qualifier_override_layout

Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
Signed-off-by: Andres Gomez <agomez@igalia.com>
7 years agoglsl: refactor duplicated validations between 2 layout-qualifiers
Andres Gomez [Tue, 22 Nov 2016 14:09:54 +0000 (16:09 +0200)]
glsl: refactor duplicated validations between 2 layout-qualifiers

Several layout-qualifier validations are duplicated in the
merge_qualifier and validate_in_qualifier methods.

We would rather have them refactored into single calls.

Suggested by Timothy.

Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
Signed-off-by: Andres Gomez <agomez@igalia.com>
7 years agoglsl: assert on incoherent point mode layout-id-qualifier validation
Andres Gomez [Fri, 11 Nov 2016 19:03:24 +0000 (21:03 +0200)]
glsl: assert on incoherent point mode layout-id-qualifier validation

The point mode value in an ast_type_qualifier can only be true if the
flag is already set since this layout-id-qualifier can only be or not
be present in a shader.

Hence, it is useless to check for its value if the flag is already
set. Just replaced with an assert.

V2: assert instead of checking for coherence and raising a compilation
    error. Suggested by Timothy.

Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
Signed-off-by: Andres Gomez <agomez@igalia.com>
7 years agoglsl: remove unneeded check for incompatible primitive types in GS
Andres Gomez [Fri, 11 Nov 2016 19:03:02 +0000 (21:03 +0200)]
glsl: remove unneeded check for incompatible primitive types in GS

The validation of the default in layout qualifier already assures that
we won't have 2 ast_gs_input_layout objects with different primitive
type values. In fact, the validation already assures that we won't
have 2 ast_gs_input_layout objects in the AST tree at all.

The check for an error in the shader has been replaced by an assert.

Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
Signed-off-by: Andres Gomez <agomez@igalia.com>
7 years agoglsl: simplifies the merge of the default in layout qualifier
Andres Gomez [Mon, 14 Nov 2016 15:49:33 +0000 (17:49 +0200)]
glsl: simplifies the merge of the default in layout qualifier

The merge into the default in layout qualifier duplicates a lot of
code that can be reused from the generic merge method.

Now, we use the generic merge method inside the specific merge for the
default in layout qualifier. The generic merge method has been
completed with some bits that were only present in the merge for the
default in layout qualifier and the specific validation bits have been
moved to the validation method for the default in layout qualifier.

Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
Signed-off-by: Andres Gomez <agomez@igalia.com>
7 years agoglsl: split default in layout qualifier merge
Andres Gomez [Mon, 14 Nov 2016 15:46:05 +0000 (17:46 +0200)]
glsl: split default in layout qualifier merge

Currently, the default in layout qualifier merge performs specific
validation and merge.

We want to split out the validation from the merge so they can be done
independently.

Additionally, for simplification, the direction of the validation and
merge is changed so the ast_type_qualifier calling the method is the
one validated and merged against the default in qualifier.

Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
Signed-off-by: Andres Gomez <agomez@igalia.com>
7 years agoglsl: split default out layout qualifier merge
Andres Gomez [Mon, 14 Nov 2016 10:23:32 +0000 (12:23 +0200)]
glsl: split default out layout qualifier merge

Currently, the default out layout qualifier merge performs specific
validation and merge.

We want to split out the validation from the merge so they can be done
independently.

Additionally, for simplification, the direction of the validation and
merge is changed so the ast_type_qualifier calling the method is the
one validated and merged against the default out qualifier.

Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
Signed-off-by: Andres Gomez <agomez@igalia.com>
7 years agoglsl: merge layouts into the default one as the last step in interface blocks
Andres Gomez [Tue, 18 Oct 2016 15:18:21 +0000 (18:18 +0300)]
glsl: merge layouts into the default one as the last step in interface blocks

Consider this example:

    " #version 150 core
      #extension GL_ARB_shading_language_420pack: require
      #extension GL_ARB_explicit_attrib_location: require

      layout(location=0) out vec4 o;
      layout(binding=2) layout(binding=3, std140) uniform U {
          vec4 a;
      } u[2];"

As there is 2 layout-qualifiers for the uniform U and the binding
layout-qualifier-id is duplicated, the rules set by the
ARB_shading_language_420pack spec state that the rightmost should
prevail.

Our ast_type_qualifier merges with others in a way that if the value
for a layout-qualifier-id is set in both, the object being merged
overwrites the value of the object invoking the merge. Hence, the
merge has to happen from the left layout towards the right one and
this was not happening for interface blocks because we were merging
into the default layout qualifier.

Now, the merge is done from left to right and, as a last step, we
merge into the default layout qualifier if needed, so the values of
the explicit layouts prevail over it.

V2: added a default_layout variable instead of a layout_helper and
    make the merge directly over the layout one. Suggested by Timothy.

Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
Signed-off-by: Andres Gomez <agomez@igalia.com>
7 years agoglsl: ignore all but the rightmost layout-qualifier-name
Andres Gomez [Thu, 6 Oct 2016 22:52:04 +0000 (01:52 +0300)]
glsl: ignore all but the rightmost layout-qualifier-name

When a layout contains a duplicated layout-qualifier-name in a single
declaration, only the last occurrence should be taken into account.

From page 59 (page 65 of the PDF) of the GLSL 4.40 spec:

  " More than one layout qualifier may appear in a single
    declaration. Additionally, the same layout-qualifier-name can
    occur multiple times within a layout qualifier or across multiple
    layout qualifiers in the same declaration. When the same
    layout-qualifier-name occurs multiple times, in a single
    declaration, the last occurrence overrides the former
    occurrence(s)."

Consider this example:

  " #version 150
    #extension GL_ARB_enhanced_layouts: enable

    layout(max_vertices=2, max_vertices=3) out;
    layout(max_vertices=3) out;"

Although different values for "max_vertices" results in a compilation
error. The above code is valid because max_vertices=2 is ignored.

When merging qualifiers in an ast_type_qualifier, we now simply ignore
new appearances of a same layout-qualifier-name if the
"is_single_layout_merge" parameter is true, this works because the GLSL
parser processes qualifiers from right to left.

Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
Signed-off-by: Andres Gomez <agomez@igalia.com>
7 years agoanv/state: if enabled, use anisotropic filtering also with VK_FILTER_NEAREST
Iago Toral Quiroga [Thu, 24 Nov 2016 10:21:20 +0000 (11:21 +0100)]
anv/state: if enabled, use anisotropic filtering also with VK_FILTER_NEAREST

Fixes multiple Vulkan CTS tests that combine anisotropy and VK_FILTER_NEAREST
in dEQP-VK.texture.filtering_anisotropy.*

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
7 years agoclover: Restore support for LLVM <= 3.9.
Vedran Miletić [Tue, 22 Nov 2016 19:25:34 +0000 (20:25 +0100)]
clover: Restore support for LLVM <= 3.9.

The commit 8e430ff8b060b4e8e922bae24b3c57837da6ea77 broke support for
LLVM 3.9 and older versions in Clover. This patch restores it and
refactors the support using Clover compatibility layer for LLVM.

v2: merged #ifdef blocks
v3: added support for LLVM 3.6-3.8
v4: add missing #ifdef around <memory>
v5: simplify using templates and lambda

Signed-off-by: Vedran Miletić <vedran@miletic.net>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98740
Tested-by[v4]: Pierre Moreau <pierre.morrow@free.fr>
Tested-by: Vinson Lee <vlee@freedesktop.org>
Reviewed-by: Francisco Jerez <currojerez@riseup.net>
Reviewed-by: Jan Vesely <jan.vesely@rutgers.edu>
7 years agoscons: Recognize LLVM_CONFIG environment variable.
Vinson Lee [Wed, 23 Nov 2016 01:01:35 +0000 (17:01 -0800)]
scons: Recognize LLVM_CONFIG environment variable.

Signed-off-by: Vinson Lee <vlee@freedesktop.org>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
7 years agoradv: Don't generate radv_timestamp.h
Bas Nieuwenhuizen [Tue, 22 Nov 2016 20:28:28 +0000 (21:28 +0100)]
radv: Don't generate radv_timestamp.h

Not needed anymore.

Signed-off-by: Bas Nieuwenhuizen <basni@google.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
7 years agoradv: fix texel fetch offset with 2d arrays.
Dave Airlie [Thu, 24 Nov 2016 03:10:52 +0000 (03:10 +0000)]
radv: fix texel fetch offset with 2d arrays.

The code didn't limit the offsets to the number supplied, so
if we expected 3 but only got 2 we were accessing undefined memory.

This fixes random failures in:
dEQP-VK.glsl.texture_functions.texelfetchoffset.sampler2darray_*

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Cc: "13.0" <mesa-stable@lists.freedesktop.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
7 years agomesa/getteximage: Add validation of target to glGetTextureImage
Eduardo Lima Mitev [Wed, 23 Nov 2016 13:09:59 +0000 (14:09 +0100)]
mesa/getteximage: Add validation of target to glGetTextureImage

There is an specific list of texture targets that can be used with
glGetTextureImage. From OpenGL 4.5 spec, section '8.11 Texture Queries',
page 234 of the PDF:

   "An INVALID_ENUM error is generated if the effective target is
    not one of TEXTURE_1D , TEXTURE_2D , TEXTURE_3D , TEXTURE_1D_-
    ARRAY , TEXTURE_2D_ARRAY , TEXTURE_CUBE_MAP_ARRAY , TEXTURE_-
    RECTANGLE , one of the targets from table 8.19 (for GetTexImage
    and GetnTexImage only), or TEXTURE_CUBE_MAP (for GetTextureImage
    only)."

We are currently not validating the target for glGetTextureImage. As
an example, calling this function on a texture with target
GL_TEXTURE_2D_MULTISAMPLE should return INVALID_ENUM, but instead it
hits an assertion down the road in the i965 driver.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
7 years agomain/texobj: Check that texture id > 0 before looking it up in hash-table
Eduardo Lima Mitev [Wed, 23 Nov 2016 13:44:05 +0000 (14:44 +0100)]
main/texobj: Check that texture id > 0 before looking it up in hash-table

_mesa_lookup_texture_err() is not currently checking that the
texture-id can be zero, but _mesa_HashLookup() doesn't expect the key
to be zero, and will fail an assertion.

Considering that _mesa_lookup_texture_err() is called from
_mesa_GetTextureImage and _mesa_GetTextureSubImage with user provided
arguments, we must validate the texture-id before looking it up in the
hash-table.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
7 years agoutil: fix memory leak from the fragment shaders for SINT<->UINT blits
Charmaine Lee [Thu, 24 Nov 2016 06:53:08 +0000 (22:53 -0800)]
util: fix memory leak from the fragment shaders for SINT<->UINT blits

This patch deletes those fragment shaders in util_blitter_destroy().

Reviewed-by: Brian Paul <brianp@vmware.com>
7 years agoi965: Always reserve clip distance VUE slots in SSO mode.
Kenneth Graunke [Wed, 17 Aug 2016 20:48:44 +0000 (13:48 -0700)]
i965: Always reserve clip distance VUE slots in SSO mode.

This fixes rendering in Dolphin on Vulkan since we enabled clip
distances.  (Dolphin on GL has a similar bug because the linker
fails to eliminate unused clip distance built-in arrays, but it
isn't using SSO...so that needs more fixing.)

Also fixes a Piglit test:
spec/glsl-1.50/execution/geometry.clip-distance-vs-gs-out-sso

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Tested-by: Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
7 years agoanv/gen7: only enable dual-source blending when there are dual-source factors
Ilia Mirkin [Thu, 24 Nov 2016 02:43:38 +0000 (21:43 -0500)]
anv/gen7: only enable dual-source blending when there are dual-source factors

Apparently the hw wedges otherwise, as mentioned in i965 comments.

Reported-by: Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
7 years agoswr: clear every layer of the attached surfaces
Ilia Mirkin [Thu, 17 Nov 2016 02:45:14 +0000 (21:45 -0500)]
swr: clear every layer of the attached surfaces

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Tim Rowley <timothy.o.rowley@intel.com>
7 years agoswr: [rasterizer core] pipe renderTargetArrayIndex through to clears
Ilia Mirkin [Thu, 17 Nov 2016 02:25:12 +0000 (21:25 -0500)]
swr: [rasterizer core] pipe renderTargetArrayIndex through to clears

Currently clears only operate on the 0th array index (ignoring surface
layout parameters). Instead normalize to take a RTAI like all the
load/store tile logic does, and use ComputeSurfaceAddress to properly
take the surface state's lod/array index into account.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Tim Rowley <timothy.o.rowley@intel.com>
7 years agoswr: [rasterizer core] clear data now comes in as float
Ilia Mirkin [Fri, 18 Nov 2016 00:48:30 +0000 (19:48 -0500)]
swr: [rasterizer core] clear data now comes in as float

The non-fast-clear path was never updated after clear colors were passed
in as floats. Remove the now-harmful conversion from unorm8.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Tim Rowley <timothy.o.rowley@intel.com>
7 years agoswr: [rasterizer core] actually perform clear before store in GetHotTile
Ilia Mirkin [Fri, 18 Nov 2016 00:39:20 +0000 (19:39 -0500)]
swr: [rasterizer core] actually perform clear before store in GetHotTile

When switching render target array indexes (as might happen in a GS, or
in a future change, with layered clears), if the previous state is
HOTTILE_CLEAR, we should actually clear the tile before saving it off.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Tim Rowley <timothy.o.rowley@intel.com>
7 years agoi965: Fix a mistake from porting the URB allocation code to arrays.
Kenneth Graunke [Wed, 23 Nov 2016 20:24:22 +0000 (12:24 -0800)]
i965: Fix a mistake from porting the URB allocation code to arrays.

Commit 6d416bcd846a49414f210cd761789156c37a7b3e (i965: Use arrays in
Gen7+ URB code.) introduced a regression which caused us to fail to
allocate all of our URB space.

   -         total_wants -= ds_wants;
   +         total_wants -= additional;

The new line should have been total_wants -= wants[i].

Fixes a large performance regression in TessMark.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98815
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Matt Turner <mattst88@gmail.com>
7 years agoi965: Use 3DSTATE_CLIP's User Clip Distance Enable bitmask on Gen8+.
Kenneth Graunke [Wed, 16 Nov 2016 06:59:45 +0000 (22:59 -0800)]
i965: Use 3DSTATE_CLIP's User Clip Distance Enable bitmask on Gen8+.

Gen6-7.5 specify the user clip distance enable bitmask in 3DSTATE_CLIP.
Gen8+ normally uses the new internal signalling mechanism to select the
one specified in the last enabled shader stage (3DSTATE_VS, DS, or GS).

This is a pretty good fit for Vulkan, or even newer GL, where the
bitmask comes entirely from the shader.  But with glClipPlane(),
this is dynamic state, and we have to listen to _NEW_TRASNFORM.

Clip plane enables are the only reason the VS/DS/GS atoms need to
listen to _NEW_TRANSFORM.  3DSTATE_CLIP already has to listen to it
in order to support ARB_clip_control settings.

Setting the "Use the 3DSTATE_CLIP bitmask" force enable bit allows
us to drop _NEW_TRANSFORM from all the shader stage atoms, so we can
re-emit them less often.

Improves performance of OglBatch7 (version 6) by 2.70773% +/- 0.491257%
(n = 38) at 1024x768 on Cherryview.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Matt Turner <mattst88@gmail.com>
7 years agoradv: fix flipped blits
Dave Airlie [Tue, 15 Nov 2016 04:54:28 +0000 (04:54 +0000)]
radv: fix flipped blits

This fixes:
dEQP-VK.api.copy_and_blit.blit_image.simple_tests.mirror*

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
7 years agoradv/meta: just local vars for src/dst subresources.
Dave Airlie [Wed, 23 Nov 2016 23:35:41 +0000 (23:35 +0000)]
radv/meta: just local vars for src/dst subresources.

This is just a cleanup before I rework this code to fix mirrored
blits.

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
7 years agoradv: add support for VK_AMD_draw_indirect_count
Fredrik Höglund [Wed, 23 Nov 2016 22:05:01 +0000 (23:05 +0100)]
radv: add support for VK_AMD_draw_indirect_count

Reviewed-by: Dave Airlie <airlied@redhat.com>
7 years agoradv: add support for VK_AMD_negative_viewport_height
Fredrik Höglund [Wed, 23 Nov 2016 22:05:00 +0000 (23:05 +0100)]
radv: add support for VK_AMD_negative_viewport_height

The driver already supports this extension in practice.

Reviewed-by: Dave Airlie <airlied@redhat.com>
7 years agoradv: add support for VK_KHR_sampler_mirror_clamp_to_edge
Fredrik Höglund [Wed, 23 Nov 2016 22:04:59 +0000 (23:04 +0100)]
radv: add support for VK_KHR_sampler_mirror_clamp_to_edge

radv_tex_wrap() already supports VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE,
so all that's needed is to advertise support for the extension.

Reviewed-by: Dave Airlie <airlied@redhat.com>
7 years agoradv: add support for anisotropic filtering on SI-CI
Fredrik Höglund [Wed, 23 Nov 2016 22:04:58 +0000 (23:04 +0100)]
radv: add support for anisotropic filtering on SI-CI

Ported from radeonsi.

Note that si_make_texture_descriptor() already sets img7 to the mask
value referred to in the comment.

Reviewed-by: Dave Airlie <airlied@redhat.com>
7 years agoi965/gen7: Only advertise 4 samples for RGBA32F on GLES
Jordan Justen [Fri, 22 Jul 2016 22:23:55 +0000 (15:23 -0700)]
i965/gen7: Only advertise 4 samples for RGBA32F on GLES

We can't render to 8x MSAA if the width is greater than 64 bits. (see
brw_render_target_supported)

Fixes ES31-CTS.sample_variables.mask.rgba32f.samples_8.mask_*

Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
7 years agoradeonsi: print new opt flags in si_dump_shader_key
Marek Olšák [Mon, 21 Nov 2016 19:57:05 +0000 (20:57 +0100)]
radeonsi: print new opt flags in si_dump_shader_key

Reviewed-by: Edward O'Callaghan <funfunctor@folklore1984.net>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
7 years agoradeonsi: add a debug flag that disables optimized shader variants
Marek Olšák [Mon, 21 Nov 2016 19:39:27 +0000 (20:39 +0100)]
radeonsi: add a debug flag that disables optimized shader variants

Reviewed-by: Edward O'Callaghan <funfunctor@folklore1984.net>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
7 years agocompiler/glsl/tests: Fix print format when building 32-bit binaries on 64-bit host
Aaron Watry [Mon, 3 Oct 2016 14:47:45 +0000 (09:47 -0500)]
compiler/glsl/tests: Fix print format when building 32-bit binaries on 64-bit host

Avoids two warnings.

Signed-off-by: Aaron Watry <awatry@gmail.com>
Reviewed-by: Matt Turner <mattst88@gmail.com>
7 years agocompiler/glsl/tests: Fix print format when building 32-bit binaries on 64-bit host
Aaron Watry [Tue, 22 Nov 2016 17:18:11 +0000 (11:18 -0600)]
compiler/glsl/tests: Fix print format when building 32-bit binaries on 64-bit host

Avoids three warnings.

Signed-off-by: Aaron Watry <awatry@gmail.com>
Reviewed-by: Matt Turner <mattst88@gmail.com>
7 years agoanv: fix enumeration of properties
Emil Velikov [Thu, 6 Oct 2016 13:12:27 +0000 (14:12 +0100)]
anv: fix enumeration of properties

Driver should enumerate only up-to min2(num_available, num_requested)
properties and return VK_INCOMPLETE if the # of requested props is
smaller than the ones available.

Presently we assert out in such cases.

Inspired by a similar fix for RADV.

v2: Use MIN2 + typed_memcpy (Jason).

Should fix: dEQP-VK.api.info.device.extensions

Cc: "13.0" <mesa-stable@lists.freedesktop.org>
Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com> (v1)
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
7 years agoi965: Restructure fast clear eligibility decision
Ben Widawsky [Wed, 20 Apr 2016 14:44:17 +0000 (07:44 -0700)]
i965: Restructure fast clear eligibility decision

v2 (Jason):
   - Use PRM citation for SKL now that it is available
   - Also return false for gen < 8 mipmapped/arrayed

Signed-off-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>