mesa.git
6 years agoradeonsi: Fix crash on shaders using MSAA image load/store
Alex Smith [Wed, 30 May 2018 08:39:27 +0000 (09:39 +0100)]
radeonsi: Fix crash on shaders using MSAA image load/store

The value returned by tgsi_util_get_texture_coord_dim() does not
account for the sample index. This means image_fetch_coords() will not
fetch it, leading to a null deref in ac_build_image_opcode() which
expects it to be present (the return value of ac_num_coords() *does*
include the sample index).

Signed-off-by: Alex Smith <asmith@feralinteractive.com>
Cc: "18.1" <mesa-stable@lists.freedesktop.org>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
6 years agoradv: Handle GFX9 merged shaders in radv_flush_constants()
Alex Smith [Thu, 31 May 2018 14:28:27 +0000 (15:28 +0100)]
radv: Handle GFX9 merged shaders in radv_flush_constants()

This was not previously handled correctly. For example,
push_constant_stages might only contain MESA_SHADER_VERTEX because
only that stage was changed by CmdPushConstants or
CmdBindDescriptorSets.

In that case, if vertex has been merged with tess control, then the
push constant address wouldn't be updated since
pipeline->shaders[MESA_SHADER_VERTEX] would be NULL.

Use radv_get_shader() instead of getting the shader directly so that
we get the right shader if merged. Also, skip emitting the address
redundantly - if two merged stages are set in push_constant_stages
this change would have made the address get emitted twice.

Signed-off-by: Alex Smith <asmith@feralinteractive.com>
Cc: "18.1" <mesa-stable@lists.freedesktop.org>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agoradv: Consolidate GFX9 merged shader lookup logic
Alex Smith [Thu, 31 May 2018 14:18:52 +0000 (15:18 +0100)]
radv: Consolidate GFX9 merged shader lookup logic

This was being handled in a few different places, consolidate it into a
single radv_get_shader() function.

Signed-off-by: Alex Smith <asmith@feralinteractive.com>
Cc: "18.1" <mesa-stable@lists.freedesktop.org>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agoradv: Set active_stages the same whether or not shaders were cached
Alex Smith [Thu, 31 May 2018 14:02:32 +0000 (15:02 +0100)]
radv: Set active_stages the same whether or not shaders were cached

With GFX9 merged shaders, active_stages would be set to the original
stages specified if shaders were not cached, but to the stages still
present after merging if they were.

Be consistent and use the original stages.

Signed-off-by: Alex Smith <asmith@feralinteractive.com>
Cc: "18.1" <mesa-stable@lists.freedesktop.org>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agost/mesa: relax requirements for ARB_ES3_compatibility
Marek Olšák [Thu, 31 May 2018 19:20:48 +0000 (15:20 -0400)]
st/mesa: relax requirements for ARB_ES3_compatibility

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

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
6 years agoanv/blorp: Write relocated values into surface states
Scott D Phillips [Thu, 31 May 2018 03:24:15 +0000 (20:24 -0700)]
anv/blorp: Write relocated values into surface states

v2 (Jason Ekstrand):
 - Split the blorp bit into it's own patch and re-order a bit
 - Use anv_address helpers

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
6 years agoanv: Use an address for each anv_image plane
Jason Ekstrand [Thu, 31 May 2018 01:55:00 +0000 (18:55 -0700)]
anv: Use an address for each anv_image plane

This is better than having BO and offset fields.

Reviewed-by: Scott D Phillips <scott.d.phillips@intel.com>
6 years agoanv/cmd_buffer: Rework surface relocation helpers
Jason Ekstrand [Thu, 31 May 2018 01:30:50 +0000 (18:30 -0700)]
anv/cmd_buffer: Rework surface relocation helpers

This commit renames add_surface_state_reloc to add_surface_reloc and
makes it takes an address.  We also rename add_image_view_relocs to
add_surface_state_relocs because it takes an anv_surface_state and
doesn't really care about the image view anymore.

Reviewed-by: Scott D Phillips <scott.d.phillips@intel.com>
6 years agoanv: Use an anv_address in anv_buffer
Jason Ekstrand [Thu, 31 May 2018 01:05:54 +0000 (18:05 -0700)]
anv: Use an anv_address in anv_buffer

Reviewed-by: Scott D Phillips <scott.d.phillips@intel.com>
6 years agoanv/cmd_buffer: Use anv_address for handling indirect parameters
Jason Ekstrand [Thu, 31 May 2018 01:02:43 +0000 (18:02 -0700)]
anv/cmd_buffer: Use anv_address for handling indirect parameters

Reviewed-by: Scott D Phillips <scott.d.phillips@intel.com>
6 years agoanv: Use an anv_address in anv_buffer_view
Jason Ekstrand [Thu, 31 May 2018 00:36:49 +0000 (17:36 -0700)]
anv: Use an anv_address in anv_buffer_view

Instead of storing a BO and offset separately, use an anv_address.  This
changes anv_fill_buffer_surface_state to use anv_address and we now call
anv_address_physical and pass that into ISL.

Reviewed-by: Scott D Phillips <scott.d.phillips@intel.com>
6 years agoanv: Use full anv_addresses in anv_surface_state
Jason Ekstrand [Thu, 31 May 2018 00:16:52 +0000 (17:16 -0700)]
anv: Use full anv_addresses in anv_surface_state

This refactors surface state filling to work entirely in terms of
anv_addresses instead of offsets.  This should make things simpler for
when we go to soft-pin image buffers.  Among other things,
add_image_view_relocs now only cares about the addresses in the surface
state and doesn't really need the image view anymore.

Reviewed-by: Scott D Phillips <scott.d.phillips@intel.com>
6 years agoanv: Add some anv_address helpers
Jason Ekstrand [Thu, 31 May 2018 01:16:50 +0000 (18:16 -0700)]
anv: Add some anv_address helpers

Reviewed-by: Scott D Phillips <scott.d.phillips@intel.com>
6 years agoanv: Add vma_heap allocators in anv_device
Scott D Phillips [Wed, 7 Mar 2018 17:18:37 +0000 (09:18 -0800)]
anv: Add vma_heap allocators in anv_device

These will be used to assign virtual addresses to soft pinned
buffers in a later patch.

Two allocators are added for separate 'low' and 'high' virtual
memory areas. Another alternative would have been to add a
double-sided allocator, which wasn't done here just because it
didn't appear to give any code complexity advantages.

v2 (Scott Phillips):
 - rename has_exec_softpin to use_softpin (Jason)
 - Only remove bottom one page and top 4 GiB from virt (Jason)
 - refer to comment in anv_allocator about state address + size
   overflowing 48 bits (Jason)
 - Mention hi/lo allocators vs double-sided allocator in
   commit message (Chris)
 - assign state pool memory ranges statically (Jason)

v3 (Jason Ekstrand):
 - Use (LOW|HIGH)_HEAP_(MIN|MAX)_ADDRESS rather than (1 << 31) for
   determining which heap to use in anv_vma_free
 - Only return de-canonicalized addresses to the heap

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Scott D Phillips <scott.d.phillips@intel.com>
6 years agointel/common: Add an address de-canonicalization helper
Jason Ekstrand [Thu, 31 May 2018 03:00:37 +0000 (20:00 -0700)]
intel/common: Add an address de-canonicalization helper

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Scott D Phillips <scott.d.phillips@intel.com>
6 years agoutil: Add a randomized test for the virtual memory allocator
Scott D Phillips [Sat, 5 May 2018 00:11:13 +0000 (17:11 -0700)]
util: Add a randomized test for the virtual memory allocator

The test pseudo-randomly makes allocations and deallocations with
the virtual memory allocator and checks that the results are
consistent. Specifically, we test that:

 * no result from the allocator overlaps an already allocated range
 * allocated memory fulfills the stated alignment requirement
 * a failed result from the allocator could not have been fulfilled
 * memory freed to the allocator can later be allocated again

v2: - fix if() in test() to actually run fill()
v3: - add c++11 build flag (Jason)
    - test the full 64-bit range (Jason)

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
6 years agoutil: Add a virtual memory allocator
Jason Ekstrand [Sun, 7 Jan 2018 01:28:01 +0000 (17:28 -0800)]
util: Add a virtual memory allocator

This is simple linear-walk first-fit allocator roughly based on the
allocator in the radeon winsys code.  This allocator has two primary
functional differences:

 1) It cleanly returns 0 on allocation failure

 2) It allocates addresses top-down instead of bottom-up.

The second one is needed for Intel because high addresses (with bit 47
set) need to be canonicalized in order to work properly.  If we allocate
bottom-up, then high addresses will be very rare (if they ever happen).
We'd rather always have high addresses so that the canonicalization code
gets better testing.

v2: - [scott-ph] remove _heap_validate() if NDEBUG is defined (Jordan)

Reviewed-by: Scott D Phillips <scott.d.phillips@intel.com>
Tested-by: Scott D Phillips <scott.d.phillips@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
6 years agoradv: Add startup debug option.
Bas Nieuwenhuizen [Wed, 30 May 2018 23:49:38 +0000 (01:49 +0200)]
radv: Add startup debug option.

This adds a RADV_DEBUG=startup option to dump more info about
instance creation and device enumeration.

A common question end users have is why the direver is not loading
for them, and this has two common reasons:
1) They did not install the driver.
2) AMDGPU is not used for the card in the kernel.

This adds some info messages so we can easily get a some useful
output from end users.

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
6 years agoradv: Add option to print errors even in optimized builds.
Bas Nieuwenhuizen [Wed, 30 May 2018 23:06:41 +0000 (01:06 +0200)]
radv: Add option to print errors even in optimized builds.

Errors are not that common of a case so we can eat a slight perf
hit in having to call a function and do a runtime check.

In turn this makes debugging random errors happening for end users
easier, because they don't have to have a debug build on hand.

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
6 years agoradv: Make the sem_info allocate/free functions static.
Bas Nieuwenhuizen [Wed, 30 May 2018 22:57:55 +0000 (00:57 +0200)]
radv: Make the sem_info allocate/free functions static.

They are only used in 1 file.

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
6 years agonir: optimize iand(ieq(a, 0), ieq(b, 0)) to ieq(ior(a, b), 0)
Samuel Pitoiset [Wed, 30 May 2018 08:48:31 +0000 (10:48 +0200)]
nir: optimize iand(ieq(a, 0), ieq(b, 0)) to ieq(ior(a, b), 0)

Totals from affected shaders:
SGPRS: 80 -> 80 (0.00 %)
VGPRS: 48 -> 48 (0.00 %)
Code Size: 2120 -> 2096 (-1.13 %) bytes
Max Waves: 16 -> 16 (0.00 %)

Only two Rise of Tomb Raider shaders are affected on my side.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
6 years agomesa: don't call Driver.TexEnv with invalid arguments
Tapani Pälli [Tue, 29 May 2018 11:24:10 +0000 (14:24 +0300)]
mesa: don't call Driver.TexEnv with invalid arguments

Patch skips useless and possibly dangerous calls down to the driver
in case invalid arguments were given. I noticed this would be happening
with demo of Darwinia game. AFAIK this does not fix anything but makes
this path safer and more like how other API functions are implemented.

Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
6 years agov3d: Fix automake linking error.
Vinson Lee [Tue, 22 May 2018 00:17:45 +0000 (00:17 +0000)]
v3d: Fix automake linking error.

  CXXLD    gallium_dri.la
../../../../src/broadcom/.libs/libbroadcom.a(clif_dump.o): In function `clif_dump_packet':
src/broadcom/clif/clif_dump.c:87: undefined reference to `v3d33_clif_dump_packet'
src/broadcom/clif/clif_dump.c:85: undefined reference to `v3d41_clif_dump_packet'
../../../../src/broadcom/.libs/libbroadcom.a(clif_dump.o): In function `clif_process_worklist':
src/broadcom/clif/clif_dump.c:140: undefined reference to `v3d41_clif_dump_gl_shader_state_record'
src/broadcom/clif/clif_dump.c:144: undefined reference to `v3d33_clif_dump_gl_shader_state_record'

Signed-off-by: Vinson Lee <vlee@freedesktop.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
6 years agovirgl: Update virgl_hw.h
Jakob Bornecrantz [Tue, 3 Apr 2018 16:04:57 +0000 (17:04 +0100)]
virgl: Update virgl_hw.h

Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
Reviewed-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Jakob Bornecrantz <jakob@collabora.com>
6 years agovirgl: add ARB_transform_feedback_overflow_query support
Dave Airlie [Mon, 28 May 2018 01:53:35 +0000 (11:53 +1000)]
virgl: add ARB_transform_feedback_overflow_query support

Reviewed-by: Jakob Bornecrantz <jakob@collabora.com>
Signed-off-by: Jakob Bornecrantz <jakob@collabora.com>
6 years agovirgl: add polygon offset clamp
Dave Airlie [Mon, 28 May 2018 01:53:34 +0000 (11:53 +1000)]
virgl: add polygon offset clamp

Reviewed-by: Jakob Bornecrantz <jakob@collabora.com>
Signed-off-by: Jakob Bornecrantz <jakob@collabora.com>
6 years agovirgl: add derivative control support
Dave Airlie [Mon, 28 May 2018 01:53:33 +0000 (11:53 +1000)]
virgl: add derivative control support

Reviewed-by: Jakob Bornecrantz <jakob@collabora.com>
Signed-off-by: Jakob Bornecrantz <jakob@collabora.com>
6 years agovirgl: add ARB_conditional_render_inverted support
Dave Airlie [Mon, 28 May 2018 01:53:32 +0000 (11:53 +1000)]
virgl: add ARB_conditional_render_inverted support

Reviewed-by: Jakob Bornecrantz <jakob@collabora.com>
Signed-off-by: Jakob Bornecrantz <jakob@collabora.com>
6 years agovirgl: update caps bitset to latest version.
Dave Airlie [Mon, 28 May 2018 01:53:31 +0000 (11:53 +1000)]
virgl: update caps bitset to latest version.

This makes this use all 32 bits, so future sets need to be
defined in a new struct.

Reviewed-by: Jakob Bornecrantz <jakob@collabora.com>
Signed-off-by: Jakob Bornecrantz <jakob@collabora.com>
6 years agonir: add unsigned comparison simplifications
Timothy Arceri [Wed, 30 May 2018 10:32:24 +0000 (20:32 +1000)]
nir: add unsigned comparison simplifications

This avoids loop unrolling regressions in Wolfenstein II on DXVK
with an upcoming optimisation series from Samuel.

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agoradv: Only expose subgroup shuffles on VI+.
Bas Nieuwenhuizen [Wed, 30 May 2018 06:50:03 +0000 (08:50 +0200)]
radv: Only expose subgroup shuffles on VI+.

The current implementation depends on bpermute, which
is VI+.

Fixes: f2c6a550611 "radv: enable subgroup capabilities"
Reviewed-by: Daniel Schürmann <daniel.schuermann@campus.tu-berlin.de>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
6 years agoradv: fix emitting descriptor pointers with LLVM < 7
Samuel Pitoiset [Wed, 30 May 2018 09:15:12 +0000 (11:15 +0200)]
radv: fix emitting descriptor pointers with LLVM < 7

This was terribly wrong, I forced use of 32-bit pointers when
emitting shader descriptor pointers. This fixes GPU hangs with
LLVM 5&6 because 32-bit pointers are only supported with LLVM 7.

Fixes: 88d1ed0f81 ("radv: emit shader descriptor pointers consecutively")
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agonv30: add a couple of missed shader caps
Ilia Mirkin [Mon, 28 May 2018 15:15:55 +0000 (11:15 -0400)]
nv30: add a couple of missed shader caps

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
6 years agonv30: ensure that displayable formats are marked accordingly
Ilia Mirkin [Mon, 28 May 2018 15:07:08 +0000 (11:07 -0400)]
nv30: ensure that displayable formats are marked accordingly

Fixes: f7604d8af52 ("st/dri: only expose config formats that are display targets")
Cc: "18.1" <mesa-stable@lists.freedesktop.org>
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
6 years agomesa: expose ARB_tessellation_shader in the compatibility profile
Marek Olšák [Wed, 23 May 2018 05:47:55 +0000 (01:47 -0400)]
mesa: expose ARB_tessellation_shader in the compatibility profile

Gallium drivers don't expose this yet due to:
    "st/mesa: use PIPE_CAP_GLSL_FEATURE_LEVEL_COMPATIBILITY"

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
6 years agomesa: expose AMD_vertex_shader_layer in the compatibility profile
Marek Olšák [Thu, 15 Feb 2018 00:20:46 +0000 (01:20 +0100)]
mesa: expose AMD_vertex_shader_layer in the compatibility profile

This requires layered FBOs from GL 3.2.

Gallium drivers don't expose this yet due to:
    "st/mesa: use PIPE_CAP_GLSL_FEATURE_LEVEL_COMPATIBILITY"

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
6 years agomesa: expose ARB_gpu_shader5 in the compatibility profile
Marek Olšák [Wed, 14 Feb 2018 21:38:15 +0000 (22:38 +0100)]
mesa: expose ARB_gpu_shader5 in the compatibility profile

Gallium drivers don't expose this yet due to:
    "st/mesa: use PIPE_CAP_GLSL_FEATURE_LEVEL_COMPATIBILITY"

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
6 years agost/mesa: use PIPE_CAP_GLSL_FEATURE_LEVEL_COMPATIBILITY
Marek Olšák [Wed, 23 May 2018 04:46:02 +0000 (00:46 -0400)]
st/mesa: use PIPE_CAP_GLSL_FEATURE_LEVEL_COMPATIBILITY

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
6 years agogallium: add PIPE_CAP_GLSL_FEATURE_LEVEL_COMPATIBILITY
Marek Olšák [Thu, 15 Feb 2018 00:32:08 +0000 (01:32 +0100)]
gallium: add PIPE_CAP_GLSL_FEATURE_LEVEL_COMPATIBILITY

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
6 years agomesa: update fixed-func state constants for TCS, TES, GS
Marek Olšák [Wed, 23 May 2018 05:37:12 +0000 (01:37 -0400)]
mesa: update fixed-func state constants for TCS, TES, GS

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
6 years agomesa: print Compatibility Profile in the version string
Marek Olšák [Wed, 14 Feb 2018 20:21:24 +0000 (21:21 +0100)]
mesa: print Compatibility Profile in the version string

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
6 years agoglsl: parse #version XXX compatibility
Marek Olšák [Wed, 14 Feb 2018 20:00:09 +0000 (21:00 +0100)]
glsl: parse #version XXX compatibility

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
6 years agost/mesa: fix assertion failures with GL_UNSIGNED_INT64_ARB (v2)
Marek Olšák [Fri, 25 May 2018 20:37:29 +0000 (16:37 -0400)]
st/mesa: fix assertion failures with GL_UNSIGNED_INT64_ARB (v2)

Bindless texture handles can be passed via vertex attribs using this type.
They use the double codepath, so don't use st_pipe_vertex_format.

Cc: 18.0 18.1 <mesa-stable@lists.freedesktop.org>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
6 years agomesa: handle GL_UNSIGNED_INT64_ARB properly (v2)
Marek Olšák [Fri, 25 May 2018 20:37:29 +0000 (16:37 -0400)]
mesa: handle GL_UNSIGNED_INT64_ARB properly (v2)

Bindless texture handles can be passed via vertex attribs using this type.
This fixes a bunch of bindless piglit tests on radeonsi.

Cc: 18.0 18.1 <mesa-stable@lists.freedesktop.org>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
6 years agomesa: add display list support for glPatchParameter{i,fv}()
Timothy Arceri [Mon, 28 May 2018 10:57:37 +0000 (20:57 +1000)]
mesa: add display list support for glPatchParameter{i,fv}()

This is required for tessellation shader Compat profile support.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
6 years agoglx/drisw: make the shm/non-shm loader extensions separately.
Dave Airlie [Tue, 29 May 2018 03:04:03 +0000 (13:04 +1000)]
glx/drisw: make the shm/non-shm loader extensions separately.

I disliked removing the const here, function tables are meant
to be const just to avoid having to think about them,
make a second table for the shm vs non-shm paths to use.

Reviewed-by: Adam Jackson <ajax@redhat.com>
6 years agodrisw/glx: implement getImageShm
Marc-André Lureau [Mon, 15 Jun 2015 13:07:34 +0000 (15:07 +0200)]
drisw/glx: implement getImageShm

Reviewed-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
6 years agodrisw: use getImageShm() if available
Marc-André Lureau [Mon, 15 Jun 2015 13:09:58 +0000 (15:09 +0200)]
drisw: use getImageShm() if available

Reviewed-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
6 years agodrisw: learn to query shmid handle type
Marc-André Lureau [Mon, 15 Jun 2015 12:48:27 +0000 (14:48 +0200)]
drisw: learn to query shmid handle type

Reviewed-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
6 years agodrisw/glx: use XShm if possible
Marc-André Lureau [Wed, 10 Jun 2015 15:58:31 +0000 (17:58 +0200)]
drisw/glx: use XShm if possible

Implements putImageShm from DRIswrastLoaderExtension.

If XShm extension is not available, or fails, it will fallback on
regular XPutImage().

Tested on Linux only with 16bpp and 32bpp visual.

(airlied: tested on 24bpp as well)

Reviewed-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
6 years agodrisw: use shared memory when possible
Marc-André Lureau [Wed, 10 Jun 2015 15:45:11 +0000 (17:45 +0200)]
drisw: use shared memory when possible

If drisw_loader_funcs implements put_image_shm, allocates display
target data with shared memory and display with put_image_shm().

Reviewed-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
6 years agodrisw: use putImageShm if available
Marc-André Lureau [Wed, 10 Jun 2015 15:34:15 +0000 (17:34 +0200)]
drisw: use putImageShm if available

If the DRIswrastLoaderExtension implements putImageShm, bind it to
drisw_loader_funcs.

Reviewed-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
6 years agodri: add putImageShm and getImageShm to swrastLoader
Marc-André Lureau [Wed, 10 Jun 2015 15:28:47 +0000 (17:28 +0200)]
dri: add putImageShm and getImageShm to swrastLoader

Add new API to put and get an image using shared memory. Instead of only
passing the data pointer, 3 arguments are given: the shmid, the data
offset and the shmaddr.

Bump interface version.

Reviewed-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
6 years agogallium/winsys: rename DRM_API_HANDLE_* to WINSYS_HANDLE_*
Dave Airlie [Tue, 29 May 2018 01:21:38 +0000 (11:21 +1000)]
gallium/winsys: rename DRM_API_HANDLE_* to WINSYS_HANDLE_*

This just renames this as we want to add an shm handle which
isn't really drm related.

Originally by: Marc-André Lureau <marcandre.lureau@gmail.com>
(airlied: I used this sed script instead)
This was generated with:
 git grep -l 'DRM_API_' | xargs sed -i 's/DRM_API_/WINSYS_/g'

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
6 years agogallium: move winsys handle to it's own file.
Marc-André Lureau [Tue, 29 May 2018 01:17:11 +0000 (11:17 +1000)]
gallium: move winsys handle to it's own file.

This will be used in the drisw interface later, which isn't
drm specific.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
6 years agointel/fs: Add explicit last_rt flag to fb writes orthogonal to eot.
Francisco Jerez [Fri, 13 Jan 2017 22:01:45 +0000 (14:01 -0800)]
intel/fs: Add explicit last_rt flag to fb writes orthogonal to eot.

When using multiple RT write messages to the same RT such as for
dual-source blending or all RT writes in SIMD32, we have to set the
"Last Render Target Select" bit on all write messages that target the
last RT but only set EOT on the last RT write in the shader.
Special-casing for dual-source blend works today because that is the
only case which requires multiple RT write messages per RT.  When we
start doing SIMD32, this will become much more common so we add a
dedicated bit for it.

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Matt Turner <mattst88@gmail.com>
6 years agointel/fs: Replace the CINTERP opcode with a simple MOV
Francisco Jerez [Fri, 18 May 2018 22:20:43 +0000 (15:20 -0700)]
intel/fs: Replace the CINTERP opcode with a simple MOV

The only reason it was it's own opcode was so that we could detect it
and adjust the source register based on the payload setup.  Now that
we're using the ATTR file for FS inputs, there's no point in having a
magic opcode for this.

v2 (Jason Ekstrand):
 - Break the bit which removes the CINTERP opcode into its own patch

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Matt Turner <mattst88@gmail.com>
6 years agointel/fs: Use the ATTR file for FS inputs
Francisco Jerez [Tue, 26 Apr 2016 01:33:22 +0000 (18:33 -0700)]
intel/fs: Use the ATTR file for FS inputs

This replaces the special magic opcodes which implicitly read inputs
with explicit use of the ATTR file.

v2 (Jason Ekstrand):
 - Break into multiple patches
 - Change the units of the FS ATTR to be in logical scalars

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Matt Turner <mattst88@gmail.com>
6 years agointel/fs: Rename a local variable so it doesn't shadow component()
Francisco Jerez [Fri, 18 May 2018 22:13:25 +0000 (15:13 -0700)]
intel/fs: Rename a local variable so it doesn't shadow component()

v2 (Jason Ekstrand):
 - Break the refactor into its own patch

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Matt Turner <mattst88@gmail.com>
6 years agointel/eu: Remove brw_codegen::compressed_stack.
Francisco Jerez [Fri, 6 Jan 2017 03:26:13 +0000 (19:26 -0800)]
intel/eu: Remove brw_codegen::compressed_stack.

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Matt Turner <mattst88@gmail.com>
6 years agointel/fs: Use groups for SIMD16 LINTERP on gen11+
Jason Ekstrand [Thu, 17 May 2018 00:33:17 +0000 (17:33 -0700)]
intel/fs: Use groups for SIMD16 LINTERP on gen11+

This is better than compression control because it naturally extends to
SIMD32.

v2:
 - Push/pop instruction state around adjusted codegen (Ken)

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Matt Turner <mattst88@gmail.com>
6 years agointel/fs: Assert that the gen4-6 plane restrictions are followed
Jason Ekstrand [Thu, 17 May 2018 00:30:04 +0000 (17:30 -0700)]
intel/fs: Assert that the gen4-6 plane restrictions are followed

The fall-back does not work correctly in SIMD16 mode and the register
allocator should ensure that we never hit this case anyway.

Reviewed-by: Matt Turner <mattst88@gmail.com>
6 years agotravis: Add clover llvm-6.0 build
Jan Vesely [Tue, 22 May 2018 22:36:32 +0000 (18:36 -0400)]
travis: Add clover llvm-6.0 build

v2: Don't force build using gcc-4.8
Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
Reviewed-By: Aaron Watry <awatry@gmail.com>
6 years agoclover: Cleanup compat code for llvm < 3.9
Jan Vesely [Tue, 22 May 2018 22:27:39 +0000 (18:27 -0400)]
clover: Cleanup compat code for llvm < 3.9

Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
Reviewed-By: Aaron Watry <awatry@gmail.com>
6 years agoclover: Fix build after llvm r332881.
Jan Vesely [Tue, 22 May 2018 21:52:30 +0000 (17:52 -0400)]
clover: Fix build after llvm r332881.

v2: fix whitespace and indentation

r332881 added an extra parameter to the emit function.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106619
Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
Reviewed-By: Aaron Watry <awatry@gmail.com>
Tested-By: Aaron Watry <awatry@gmail.com>
Tested-by: Kai Wasserbäch <kai@dev.carbon-project.org>
6 years agoi965: Only emit VF cache invalidations when the high bits changes
Chris Wilson [Tue, 29 May 2018 16:28:07 +0000 (17:28 +0100)]
i965: Only emit VF cache invalidations when the high bits changes

Commit 92f01fc5f914 ("i965: Emit VF cache invalidates for 48-bit
addressing bugs with softpin.") tried to only emit the VF invalidate if
the high bits changed, but it accidentally always set need_invalidate to
true; causing it to emit unconditionally emit the pipe control before
every primitive.

Fixes: 92f01fc5f914 ("i965: Emit VF cache invalidates for 48-bit addressing bugs with softpin.")
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106708
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
6 years agovulkan: don't free uninitialised memory
Eric Engestrom [Fri, 18 May 2018 16:12:53 +0000 (17:12 +0100)]
vulkan: don't free uninitialised memory

The modifiers array hasn't been initialised by then, much less with data
that would need freeing.
Move the label after the loop to fix this.

Fixes: c80c08e22603 ("vulkan/wsi/x11: Add support for DRI3 v1.2")
Signed-off-by: Eric Engestrom <eric.engestrom@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
6 years agodri: replace two-way switch case with a table lookup
Eric Engestrom [Fri, 18 May 2018 14:58:58 +0000 (15:58 +0100)]
dri: replace two-way switch case with a table lookup

Signed-off-by: Eric Engestrom <eric.engestrom@intel.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
---
v2: rebased on top of 432df741e0b85c021da0 "dri_util: Add
R10G10B10{A,X}2 translation between DRI and mesa_format."

6 years agodri: fix error value returned by driGLFormatToImageFormat()
Eric Engestrom [Fri, 18 May 2018 14:53:58 +0000 (15:53 +0100)]
dri: fix error value returned by driGLFormatToImageFormat()

0 is not a valid value for the __DRI_IMAGE_FORMAT_* enum.
It is, however, the value of MESA_FORMAT_NONE, which two of the callers
(i915 & i965) checked for.

The other callers (that check for errors, ie. st/dri) already check for
__DRI_IMAGE_FORMAT_NONE.

Signed-off-by: Eric Engestrom <eric.engestrom@intel.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
6 years agoegl/x11: fix build with DRI3 disabled
Eric Engestrom [Tue, 29 May 2018 15:59:18 +0000 (16:59 +0100)]
egl/x11: fix build with DRI3 disabled

Fixes: 473af0b541b2583f4c72 "egl/x11: deduplicate depth-to-format logic"
Signed-off-by: Eric Engestrom <eric.engestrom@intel.com>
Tested-by: Vinson Lee <vlee@freedesktop.org>
Reviewed-by: Yogesh Marathe <yogesh.marathe@intel.com>
6 years agomeson: require shared glapi when using DRI based libGL
Emil Velikov [Fri, 23 Feb 2018 19:32:03 +0000 (19:32 +0000)]
meson: require shared glapi when using DRI based libGL

Just like we do in the autotools build.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Dylan Baker <dylan@pnwbakers.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
6 years agomeson: remove unreachable with_glx == 'auto' check
Emil Velikov [Fri, 23 Feb 2018 19:32:02 +0000 (19:32 +0000)]
meson: remove unreachable with_glx == 'auto' check

Cannot happen since, props to the autodetection further up.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Dylan Baker <dylan@pnwbakers.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
6 years agotegra: Treat resources with modifiers as scanout
Thierry Reding [Wed, 4 Apr 2018 14:04:25 +0000 (16:04 +0200)]
tegra: Treat resources with modifiers as scanout

Resources created with modifiers are treated as scanout because there is
no way for applications to specify the usage (though that capability may
be useful to have in the future). Currently all the resources created by
applications with modifiers are for scanout, so make sure they have bind
flags set accordingly.

This is necessary in order to properly export buffers for such resources
so that they can be shared with scanout hardware.

Tested-by: Daniel Kolesa <daniel@octaforge.org>
Cc: mesa-stable@lists.freedesktop.org
Signed-off-by: Thierry Reding <treding@nvidia.com>
6 years agotegra: Fix scanout resources without modifiers
Thierry Reding [Thu, 15 Mar 2018 20:59:02 +0000 (21:59 +0100)]
tegra: Fix scanout resources without modifiers

Resources created for scanout but without modifiers need to be treated
as pitch-linear. This is because applications that don't use modifiers
to create resources must be assumed to not understand modifiers and in
turn won't be able to create a DRM framebuffer and passing along which
modifiers were picked by the implementation.

Tested-by: Daniel Kolesa <daniel@octaforge.org>
Cc: mesa-stable@lists.freedesktop.org
Signed-off-by: Thierry Reding <treding@nvidia.com>
6 years agotegra: Remove usage of non-stable UAPI
Thierry Reding [Mon, 12 Mar 2018 16:53:51 +0000 (17:53 +0100)]
tegra: Remove usage of non-stable UAPI

This code path is no longer required with framebuffer modifier support.

Tested-by: Daniel Kolesa <daniel@octaforge.org>
Cc: mesa-stable@lists.freedesktop.org
Signed-off-by: Thierry Reding <treding@nvidia.com>
6 years agodocs: add favicon to the website
Eric Engestrom [Fri, 4 May 2018 11:46:17 +0000 (12:46 +0100)]
docs: add favicon to the website

favicon.png is just gears.png resized to 64x64, and favicon.ico is
generated using this command, adapted from the ImageMagick example [1]:

  $ convert favicon.png -background black \
      \( -clone 0 -resize 16x16 \) \
      \( -clone 0 -resize 32x32 \) \
      \( -clone 0 -resize 48x48 \) \
      \( -clone 0 -resize 64x64 \) \
      -delete 0 -alpha off -colors 256 favicon.ico

We could edit every html page to add `<link rel="icon" href="favicon.ico" />`,
but there's not much point as pretty much every browser will pick it up
automatically if the file is named `favicon.ico` and is in the root folder.

[1] http://www.imagemagick.org/Usage/thumbnails/#favicon

Signed-off-by: Eric Engestrom <eric.engestrom@intel.com>
6 years agodocs: add missing html closing tag
Eric Engestrom [Tue, 29 May 2018 13:47:53 +0000 (14:47 +0100)]
docs: add missing html closing tag

Signed-off-by: Eric Engestrom <eric.engestrom@intel.com>
6 years agodocs: add missing html tag
Eric Engestrom [Tue, 29 May 2018 13:47:10 +0000 (14:47 +0100)]
docs: add missing html tag

Signed-off-by: Eric Engestrom <eric.engestrom@intel.com>
6 years agonir/print: fix printing of 8/16 bit constant variables
Karol Herbst [Thu, 10 May 2018 08:20:47 +0000 (10:20 +0200)]
nir/print: fix printing of 8/16 bit constant variables

v2 (Jose Maria Casanova Crespo <jmcasanova@igalia.com>): add float16 support

Signed-off-by: Karol Herbst <kherbst@redhat.com>
Reviewed-by: Jose Maria Casanova Crespo <jmcasanova@igalia.com>
6 years agonv50/ir: Extend ImmediateValue::applyLog2 to 64-bit integers
Pierre Moreau [Sat, 6 May 2017 15:55:43 +0000 (17:55 +0200)]
nv50/ir: Extend ImmediateValue::applyLog2 to 64-bit integers

Signed-off-by: Karol Herbst <kherbst@redhat.com>
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
6 years agoutil/u_math: Implement a logbase2 function for unsigned long
Pierre Moreau [Sat, 6 May 2017 15:52:59 +0000 (17:52 +0200)]
util/u_math: Implement a logbase2 function for unsigned long

v2 (Karol Herbst <kherbst@redhat.com>):
* removed unneeded ll
* ll -> ull

Signed-off-by: Karol Herbst <kherbst@redhat.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
6 years agodocs: trivial typo fix
Eric Engestrom [Tue, 29 May 2018 11:10:03 +0000 (12:10 +0100)]
docs: trivial typo fix

Signed-off-by: Eric Engestrom <eric.engestrom@intel.com>
6 years agoradv: emit shader descriptor pointers consecutively
Samuel Pitoiset [Fri, 25 May 2018 12:59:21 +0000 (14:59 +0200)]
radv: emit shader descriptor pointers consecutively

This reduces the number of SET_SH_REG packets which are emitted
for applications that use more than one descriptor set per stage.

We should be able to emit more SET_SH_REG packets consecutively
(like push constants and vertex buffers for the vertex stage),
but this will be improved later.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agoradv: allow radv_emit_shader_pointer_head() to emit more pointers
Samuel Pitoiset [Fri, 25 May 2018 12:59:20 +0000 (14:59 +0200)]
radv: allow radv_emit_shader_pointer_head() to emit more pointers

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agoradv: split radv_emit_shader_pointer()
Samuel Pitoiset [Fri, 25 May 2018 12:59:19 +0000 (14:59 +0200)]
radv: split radv_emit_shader_pointer()

This will allow to emit consecutive shader pointers for
reducing the number of emitted SET_SH_REG packets, which
is recommended.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agogm107/ir: prevent WaW hazards in instruction scheduling
Rhys Perry [Sat, 19 May 2018 21:03:39 +0000 (22:03 +0100)]
gm107/ir: prevent WaW hazards in instruction scheduling

Previously, findFirstUse() only considered reads "uses". This fixes that
by making it check both an instruction's sources and definitions. It
also shortens both findFistUse() and findFirstDef() along the way.

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
6 years agoradv: Implement VK_KHR_draw_indirect_count.
Bas Nieuwenhuizen [Sat, 26 May 2018 21:09:25 +0000 (23:09 +0200)]
radv: Implement VK_KHR_draw_indirect_count.

Literally the same as the AMD ext.

Passes *indirect_draw_count* CTS tests.

Reviewed-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
6 years agovulkan: Update header+vk.xml to 1.1.76
Bas Nieuwenhuizen [Sat, 26 May 2018 21:08:29 +0000 (23:08 +0200)]
vulkan: Update header+vk.xml to 1.1.76

Acked-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
6 years agoradv: Implement alternate GFX9 scissor workaround.
Bas Nieuwenhuizen [Sun, 27 May 2018 16:49:57 +0000 (18:49 +0200)]
radv: Implement alternate GFX9 scissor workaround.

This improves dota2 performance for me by 11% when I force the
GPU DPM level to low (otherwise dota2 is CPU limited for 4k on my
threadripper), which should be a large part of the radv-amdvlk gap.
(For me with that was radv 60.3 -> 66.6, while AMDVLK does about 68
fps)

It looks like dota2 rendered the GUI with a bunch of draws with
a SetScissors before almost each draw, causing a lot of pipeline
stalls.

I'm not really happy with the duplication of code, but overriding
radeon_set_context_reg would also be messy since we have the
pre-recorded pipelines and a bunch of si_cmd_buffer code, as well
as some memory->context reg loads for which things would be more
complicated.

Reviewed-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
6 years agoRevert "st/nir: use NIR for asm programs"
Eric Anholt [Thu, 17 May 2018 14:53:40 +0000 (15:53 +0100)]
Revert "st/nir: use NIR for asm programs"

This reverts commit 5c33e8c7729edd5e16020ebb8703be96523e04f2.  It broke
fixed function vertex programs on vc4 and v3d, and apparently caused
trouble for radeonsi's NIR paths as well.

Acked-by: Timothy Arceri <tarceri@itsqueeze.com>
https://bugs.freedesktop.org/show_bug.cgi?id=106673

6 years agoanv: move canonical_address calculation into a separate function
Scott D Phillips [Thu, 15 Mar 2018 19:53:05 +0000 (12:53 -0700)]
anv: move canonical_address calculation into a separate function

A later patch will make use of this in other places. Also, remove
dependency on undefined behavior of left-shifting a signed value.

v2: - move function into a separate header (Chris)
v3: (by Ken) Add new header to the various build systems.

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
6 years agor600: Fix SSG when not all components are written
Gert Wollny [Sat, 26 May 2018 16:48:32 +0000 (18:48 +0200)]
r600: Fix SSG when not all components are written

Make sure only those components are written to that are specified in the
write mask.

Fixes:
  dEQP-GLES2.functional.shaders.operator.common_functions.sign.lowp_float_vertex
  dEQP-GLES2.functional.shaders.operator.common_functions.sign.lowp_float_fragment
  dEQP-GLES2.functional.shaders.operator.common_functions.sign.mediump_float_vertex
  dEQP-GLES2.functional.shaders.operator.common_functions.sign.mediump_float_fragment
  dEQP-GLES2.functional.shaders.operator.common_functions.sign.highp_float_vertex
  dEQP-GLES2.functional.shaders.operator.common_functions.sign.highp_float_fragment
  dEQP-GLES2.functional.shaders.operator.common_functions.sign.lowp_vec3_vertex
  dEQP-GLES2.functional.shaders.operator.common_functions.sign.lowp_vec3_fragment
  dEQP-GLES2.functional.shaders.operator.common_functions.sign.mediump_vec3_vertex
  dEQP-GLES2.functional.shaders.operator.common_functions.sign.mediump_vec3_fragment
  dEQP-GLES2.functional.shaders.operator.common_functions.sign.highp_vec3_vertex
  dEQP-GLES2.functional.shaders.operator.common_functions.sign.highp_vec3_fragment
Signed-off-by: Gert Wollny <gw.fossdev@gmail.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
6 years agor600: Correct IDIV if DST and SRC use the same temporary
Gert Wollny [Sat, 26 May 2018 16:48:31 +0000 (18:48 +0200)]
r600: Correct IDIV if DST and SRC use the same temporary

In cases like

  IDIV TEMP[0].xy TEMP[0].xx TEMP[1].yy

the result will be written to the same register that is also a source register.
Since the components are evaluated one by one, this may result in overwriting
the source value for a later operation. Work around this by adding another
temporary to store the result if the destination temporary index is equal to
one of the source temporary indices.

Fixes:
  dEQP-GLES2.functional.shaders.operator.binary_operator.div.*
Signed-off-by: Gert Wollny <gw.fossdev@gmail.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
6 years agoi965: Revert recent tiled memcpy changes.
Kenneth Graunke [Sat, 26 May 2018 23:25:34 +0000 (16:25 -0700)]
i965: Revert recent tiled memcpy changes.

This reverts commit 79fe00efb474b3f3f0ba4c88826ff67c53a02aef.
This reverts commit f5e8b13f78a085bc95a1c0895e4a38ff6b87b375.
This reverts commit d21c086d819d78fb3f6abcbb14aa492970f442aa.

They broke the Android build and I'd rather not leave it broken
for the long holiday weekend.

6 years agoi965/miptree: Use cpu tiling/detiling when mapping
Scott D Phillips [Mon, 30 Apr 2018 17:25:49 +0000 (10:25 -0700)]
i965/miptree: Use cpu tiling/detiling when mapping

Rename the (un)map_gtt functions to (un)map_map (map by
returning a map) and add new functions (un)map_tiled_memcpy that
return a shadow buffer populated with the intel_tiled_memcpy
functions.

Tiling/detiling with the cpu will be the only way to handle Yf/Ys
tiling, when support is added for those formats.

v2: Compute extents properly in the x|y-rounded-down case (Chris Wilson)

v3: Add units to parameter names of tile_extents (Nanley Chery)
    Use _mesa_align_malloc for the shadow copy (Nanley)
    Continue using gtt maps on gen4 (Nanley)

v4: Use streaming_load_memcpy when detiling

v5: (edited by Ken) Move map_tiled_memcpy above map_movntdqa, so it
    takes precedence.  Add intel_miptree_access_raw, needed after
    rebasing on commit b499b85b0f2cc0c82b7c9af91502c2814fdc8e67.

Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
6 years agoi915: Fix streaming loads for intel_tiled_memcpy
Chris Wilson [Fri, 25 May 2018 23:33:56 +0000 (00:33 +0100)]
i915: Fix streaming loads for intel_tiled_memcpy

We stream from a tiled and aligned source into an unaligned user buffer,
so we need to use _mm_storeu_si128.

Fixes: d21c086d819d78fb3f6abcbb14aa492970f442aa (i965/tiled_memcpy: inline movntdqa loads in tiled_to_linear)
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
6 years agoradeonsi: remove unused variable addr_vec
Marek Olšák [Fri, 25 May 2018 22:37:24 +0000 (18:37 -0400)]
radeonsi: remove unused variable addr_vec

trivial

6 years agointel/blorp: Support blits and clears on surfaces with offsets
Jason Ekstrand [Fri, 25 May 2018 19:27:17 +0000 (12:27 -0700)]
intel/blorp: Support blits and clears on surfaces with offsets

For certain EGLImage cases, we represent a single slice or LOD of an
image with a byte offset to a tile and X/Y intratile offsets to the
given slice.  Most of i965 is fine with this but it breaks blorp.  This
is a terrible way to represent slices of a surface in EGL and we should
stop some day but that's a very scary and thorny path.  This gets blorp
to start working with those surfaces and fixes some dEQP EGL test bugs.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106629
Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
6 years agoradeonsi: fix passing gl_ClipVertex for GS and tess
Marek Olšák [Wed, 23 May 2018 04:34:38 +0000 (00:34 -0400)]
radeonsi: fix passing gl_ClipVertex for GS and tess

Also add the fprintf call.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
6 years agoradeonsi: fix color inputs/outputs for GS and tess
Marek Olšák [Wed, 23 May 2018 04:02:10 +0000 (00:02 -0400)]
radeonsi: fix color inputs/outputs for GS and tess

GS is tested, tessellation is untested.

Have outputs_written_before_ps for HW VS and outputs_written for other
stages. The reason is that COLOR and BCOLOR alias for HW VS, which
drives elimination of VS outputs based on PS inputs.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>