mesa.git
5 years agodocs: avoid repeating the font
Erik Faye-Lund [Thu, 18 Apr 2019 10:55:07 +0000 (12:55 +0200)]
docs: avoid repeating the font

The font attribute is inherited in CSS, so there's no point in repeating
this.

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
5 years agodocs: add missing semicolon
Erik Faye-Lund [Thu, 18 Apr 2019 11:09:25 +0000 (13:09 +0200)]
docs: add missing semicolon

While it's legal to omit the last semicolon in a CSS block, it's
generally not considered good style, as it makes it harder to add new
lines.

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
5 years agodocs: remove long commented out css
Erik Faye-Lund [Thu, 18 Apr 2019 08:12:42 +0000 (10:12 +0200)]
docs: remove long commented out css

These attributes has been commented out since 2005; I don't think
there's a big chance of them making a return as-is.

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
5 years agodocs: remove non-existent css attribute
Erik Faye-Lund [Thu, 18 Apr 2019 08:10:36 +0000 (10:10 +0200)]
docs: remove non-existent css attribute

There's no CSS-attribute named "link", so let's remove it.

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
5 years agodocs: normaize css-indent style
Erik Faye-Lund [Thu, 18 Apr 2019 08:18:36 +0000 (10:18 +0200)]
docs: normaize css-indent style

Tabs has been around as the indention style of this file since it was
created. Some newer CSS has added double-spaces, but let's keep it
consistent.

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
5 years agowinsys/svga: Don't abort on EBUSY errors from execbuffer
Thomas Hellstrom [Thu, 4 Apr 2019 10:20:54 +0000 (12:20 +0200)]
winsys/svga: Don't abort on EBUSY errors from execbuffer

This error code typically indicated that a buffer object that was referenced
by the command stream was being used for CPU access by another client.
The correct action here is to retry after a while. Use usleep() until we
have proper kernel support for this wait.

Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
5 years agowinsys/svga: Update the drm interface file
Thomas Hellstrom [Fri, 29 Mar 2019 07:12:12 +0000 (08:12 +0100)]
winsys/svga: Update the drm interface file

The file vmwgfx_drm.h was a bit outdated. Update to a recent version,
including defines supporting coherent memory.

Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
5 years agosvga: Avoid bouncing buffer data in malloced buffers
Thomas Hellstrom [Tue, 2 Apr 2019 10:36:34 +0000 (12:36 +0200)]
svga: Avoid bouncing buffer data in malloced buffers

Some constant- and texture upload buffer data may bounce in malloced
buffers before being transferred to hardware buffers. In the case of
texture upload buffers this seems to be an oversight. In the case of
constant buffers, code comments indicate that we want to avoid mapping
hardware buffers for reading when copying out of buffers that need
modification before being passed to hardware. In this case we avoid
data bouncing for upload manager buffers but make sure buffers that
we read out from stay in malloced memory.

Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
5 years agowinsys/svga: Enable the transfer_from_buffer GPU command for vgpu10
Thomas Hellstrom [Tue, 2 Apr 2019 10:44:11 +0000 (12:44 +0200)]
winsys/svga: Enable the transfer_from_buffer GPU command for vgpu10

We didn't have the path using this command enabled as
typically we take an alternate path using DMA uploads.
Emable it so that we can exercise that code-path by turning off
the DMA path.

Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
5 years agowinsys/svga: Add an environment variable to force host-backed operation
Thomas Hellstrom [Tue, 26 Mar 2019 20:36:04 +0000 (21:36 +0100)]
winsys/svga: Add an environment variable to force host-backed operation

The vmwgfx kernel module has a compatibility mode for user-space that is
not guest-backed resource aware. Add an environment variable to facilitate
testing of this mode on guest-backed aware kernels: if the environment
variable SVGA_FORCE_HOST_BACKED is defined, the driver will use host-backed
operation.

Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Reviewed-by: Deepak Rawat <drawat@vmware.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
5 years agoac: tidy up ac_build_llvm8_tbuffer_{load,store}
Samuel Pitoiset [Fri, 26 Apr 2019 10:49:15 +0000 (12:49 +0200)]
ac: tidy up ac_build_llvm8_tbuffer_{load,store}

For consistency with ac_build_llvm8_buffer_{load,store}_common
helpers and that will help a bit for removing the vec3 restriction.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
5 years agoradv: implement a workaround for VK_EXT_conditional_rendering
Samuel Pitoiset [Tue, 30 Apr 2019 15:08:19 +0000 (17:08 +0200)]
radv: implement a workaround for VK_EXT_conditional_rendering

Per the Vulkan spec 1.1.107, the predicate is a 32-bit value. Though
the AMD hardware treats it as a 64-bit value which means it might
fail to discard.

I don't know why this extension has been drafted like that but this
definitely not fit with AMD. The hardware doesn't seem to support
a 32-bit value for the predicate, so we need to implement a workaround.

This fixes an issue when DXVK enables conditional rendering with RADV,
this also fixes the Sasha conditionalrender demo.

Fixes: e45ba51ea45 ("radv: add support for VK_EXT_conditional_rendering")
Reported-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
5 years agoradv: fix color conversions for normalized uint/sint formats
Samuel Pitoiset [Tue, 5 Mar 2019 17:17:13 +0000 (18:17 +0100)]
radv: fix color conversions for normalized uint/sint formats

The hardware actually rounds before conversion. This now matches
what values are used when performing fast clears vs slow clears.

This fixes a rendering issue with Far Cry 3&4. This also fixes
a bunch of CTS tests that use a 8-bit UNORM format (only when
the 512*512 image size hint is manually disabled).

Cc: "19.0" "19.1" <mesa-stable@lists.freedesktop.org>
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
5 years agoradv: do not need to force emit the TCS regs on Vega20
Samuel Pitoiset [Wed, 1 May 2019 14:10:44 +0000 (16:10 +0200)]
radv: do not need to force emit the TCS regs on Vega20

This chip doesn't need the fixup. This fixes a bunch of
dEQP-VK.tessellation tests and avoid random GPU hangs.

Cc: "19.0" "19.1" <mesa-stable@lists.freedesktop.org>
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
5 years agoutil/bitset: Return an actual bool from test macros
Jason Ekstrand [Wed, 1 May 2019 10:31:11 +0000 (05:31 -0500)]
util/bitset: Return an actual bool from test macros

I want to be able to do BITSET_TEST() != BITSET_TEST() and this isn't
currently possible because BITSET_TEST() returns a random bit.  Compare
to zero to get an actual Boolean.

Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
5 years agoglsl: work around MinGW 7.x compiler bug
Brian Paul [Wed, 1 May 2019 20:22:57 +0000 (14:22 -0600)]
glsl: work around MinGW 7.x compiler bug

I'm not sure what triggered this, but building with
scons platform=windows toolchain=crossmingw machine=x86 build=profile
with MinGW g++ 7.3 or 7.4 causes an internal compiler error.

We can work around it by forcing -O1 optimization.

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
Reviewed-by: Neha Bhende <bhenden@vmware.com>
5 years agollvmpipe: init some vars to NULL to silence MinGW compiler warnings
Brian Paul [Wed, 1 May 2019 16:47:15 +0000 (10:47 -0600)]
llvmpipe: init some vars to NULL to silence MinGW compiler warnings

Reviewed-by: Neha Bhende <bhenden@vmware.com>
5 years agoradeonsi: set sampler state and view functions for compute-only contexts
Marek Olšák [Fri, 12 Apr 2019 20:03:02 +0000 (16:03 -0400)]
radeonsi: set sampler state and view functions for compute-only contexts

5 years agoradeonsi: use new atomic LLVM helpers
Marek Olšák [Fri, 26 Apr 2019 20:16:58 +0000 (16:16 -0400)]
radeonsi: use new atomic LLVM helpers

This depends on "ac,ac/nir: use a better sync scope for shared atomics"

5 years agost/mesa: don't flush the front buffer if it's a pbuffer
Marek Olšák [Sat, 27 Apr 2019 02:51:33 +0000 (22:51 -0400)]
st/mesa: don't flush the front buffer if it's a pbuffer

This is the best guess I can make here.

Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
5 years agomesa: fix pbuffers because internally they are front buffers
Marek Olšák [Sat, 27 Apr 2019 00:53:52 +0000 (20:53 -0400)]
mesa: fix pbuffers because internally they are front buffers

This fixes the egl_ext_device_base piglit test, which uses EGL pbuffers.

Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
5 years agomesa: rework error handling in glDrawBuffers
Marek Olšák [Sat, 27 Apr 2019 02:06:20 +0000 (22:06 -0400)]
mesa: rework error handling in glDrawBuffers

It's needed by the next pbuffer fix, which changes the behavior of
draw_buffer_enum_to_bitmask, so it can't be used to help with error
checking.

Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
5 years agoradv: Restrict YUVY formats to 1 layer.
Bas Nieuwenhuizen [Mon, 29 Apr 2019 20:35:34 +0000 (22:35 +0200)]
radv: Restrict YUVY formats to 1 layer.

Fixes: 8bb3cec7c9b "radv: Expose VK_EXT_ycbcr_image_arrays."
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
5 years agoradv: Set is_array in lowered ycbcr tex instructions.
Bas Nieuwenhuizen [Mon, 29 Apr 2019 20:26:36 +0000 (22:26 +0200)]
radv: Set is_array in lowered ycbcr tex instructions.

Fixes array tests.

Fixes: 91702374d5d "radv: Add ycbcr lowering pass."
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
5 years agoradv: Fix hang width YCBCR array textures.
Bas Nieuwenhuizen [Mon, 29 Apr 2019 19:34:28 +0000 (21:34 +0200)]
radv: Fix hang width YCBCR array textures.

Forgot to apply the width/height divisor for CB writes resulting in
the CB using larger than expected slice sizes.

Fixes: 42d159f2766 "radv: Add multiple planes to images."
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=110530
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=110526
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
5 years agolima/gpir: add limit of max 512 instructions
Erico Nunes [Mon, 29 Apr 2019 22:10:02 +0000 (00:10 +0200)]
lima/gpir: add limit of max 512 instructions

It has been noted that the lima GP has a limit of 512 instructions,
after which the shaders don't work and fail silently.
This commit adds a check to make the shader compilation abort when the
shader exceeds this limit, so that we get a clear reason for why the
program will not work.

Signed-off-by: Erico Nunes <nunes.erico@gmail.com>
Reviewed-by: Qiang Yu <yuq825@gmail.com>
5 years agopanfrost: Fix blend shader upload
Alyssa Rosenzweig [Wed, 1 May 2019 03:21:06 +0000 (03:21 +0000)]
panfrost: Fix blend shader upload

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
5 years agopanfrost/decode: Hit MRT blend shader enable bits
Alyssa Rosenzweig [Tue, 30 Apr 2019 02:15:09 +0000 (02:15 +0000)]
panfrost/decode: Hit MRT blend shader enable bits

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
5 years agopanfrost: Remove shader dump
Alyssa Rosenzweig [Tue, 30 Apr 2019 01:54:27 +0000 (01:54 +0000)]
panfrost: Remove shader dump

Redundant via the midgard shader dump.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
5 years agovirgl: Re-use and extend queue transfers for intersecting buffer subdatas.
David Riley [Wed, 24 Apr 2019 23:12:48 +0000 (16:12 -0700)]
virgl: Re-use and extend queue transfers for intersecting buffer subdatas.

Small buffer subdatas which are essentially doing a memcpy were getting
bogged down by all the overhead of creating new transfers.

Signed-off-by: David Riley <davidriley@chromium.org>
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
5 years agovirgl: Allow transfer queue entries to be found and extended.
David Riley [Wed, 24 Apr 2019 23:11:37 +0000 (16:11 -0700)]
virgl: Allow transfer queue entries to be found and extended.

Intersecting transfer queue entries allow for the possibility of
extending an existing transfer instead of creating a new one (and all
the associated mappign/unmapping).

Signed-off-by: David Riley <davidriley@chromium.org>
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
5 years agovirgl: Store mapped hw resource with transfer object.
David Riley [Wed, 1 May 2019 00:33:59 +0000 (17:33 -0700)]
virgl: Store mapped hw resource with transfer object.

Signed-off-by: David Riley <davidriley@chromium.org>
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
5 years agoiris: Fix imageBuffer and PBO download.
Kenneth Graunke [Wed, 1 May 2019 18:16:13 +0000 (11:16 -0700)]
iris: Fix imageBuffer and PBO download.

Recently we added checks to try and deny multisampled shader images.
Unfortunately, this messed up imageBuffers, which have sample_count = 0,
which are also used in PBO download, causing us hit CPU map fallbacks.

Fixes: b15f5cfd20c iris: Do not advertise multisampled image load/store.
Reviewed-by: Rafael Antognolli <rafael.antognolli@intel.com>
5 years agor600: reset tex array override even when no view bound
Dave Airlie [Wed, 1 May 2019 04:30:10 +0000 (14:30 +1000)]
r600: reset tex array override even when no view bound

If no view is bound we still should reset the override to 0
and array mode.

This should fix misrendering in firefox WebRender since
the pbo sampler was removed.

Fixes: 1250383e36 (st/mesa: remove sampler associated with buffer texture in pbo logic)
5 years agonir: Saturating integer arithmetic is not associative
Ian Romanick [Tue, 30 Apr 2019 15:00:32 +0000 (08:00 -0700)]
nir: Saturating integer arithmetic is not associative

In 8-bits,

    iadd_sat(iadd_sat(0x7f, 0x7f), -1) =
    iadd_sat(0x7f, -1) =
    0x7e

but,

    iadd_sat(0x7f, iadd_sat(0x7f, -1)) =
    iadd_sat(0x7f, 0x7e) =
    0x7f

Fixes: 272e927d0e9 ("nir/spirv: initial handling of OpenCL.std extension opcodes")
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
5 years agoutil: move #include out of #if linux
Eric Engestrom [Wed, 1 May 2019 15:25:44 +0000 (16:25 +0100)]
util: move #include out of #if linux

This #include is needed for `NULL`, which is used on all OSes, not just Linux.

Reported-by: Juan A. Suarez Romero <jasuarez@igalia.com>
Fixes: 316964709e21286c2af5 "util: add os_read_file() helper"
Signed-off-by: Eric Engestrom <eric.engestrom@intel.com>
Reviewed-by: Juan A. Suarez <jasuarez@igalia.com>
5 years agoswr/rast: Add general SWTag statistics
Alok Hota [Mon, 17 Sep 2018 19:50:47 +0000 (14:50 -0500)]
swr/rast: Add general SWTag statistics

Update Archrast parser to use stats, used with an internal tool

Reviewed-by: Bruce Cherniak <bruce.cherniak@intel.com>
5 years agoswr/rast: Add string handling to AR event framework
Alok Hota [Fri, 7 Sep 2018 20:17:53 +0000 (15:17 -0500)]
swr/rast: Add string handling to AR event framework

For use by an internal tool

Reviewed-by: Bruce Cherniak <bruce.cherniak@intel.com>
5 years agoswr/rast: Add initial SWTag proto definitions
Alok Hota [Tue, 4 Sep 2018 18:41:39 +0000 (13:41 -0500)]
swr/rast: Add initial SWTag proto definitions

Update gen_archrast.py to properly generate event IDs

Reviewed-by: Bruce Cherniak <bruce.cherniak@intel.com>
5 years agoswr/rast: Cleanup and generalize gen_archrast
Alok Hota [Fri, 31 Aug 2018 17:13:56 +0000 (12:13 -0500)]
swr/rast: Cleanup and generalize gen_archrast

- Update meson.build
  - Includes current_build_dir() fix
    meson/swr: replace hard-coded path with current_build_dir()

Fixes: 93cd9905c8fbb98985ae "swr/rast: Cleanup and generalize gen_archrast"
Signed-off-by: Eric Engestrom <eric.engestrom@intel.com>
Reviewed-by: Alok Hota <alok.hota@intel.com>
Reviewed-by: Dylan Baker <dylan@pnwbakers.com>
  - Clean up meson.build (remove foreach loop, replace with single call)
- Update SConscript
  - use `$SOURCES` to call `CodeGenerate` with multiple source files

Reviewed-by: Bruce Cherniak <bruce.cherniak@intel.com>
5 years agogitlab-ci: build vulkan drivers in clang build
Eric Engestrom [Wed, 1 May 2019 11:09:26 +0000 (12:09 +0100)]
gitlab-ci: build vulkan drivers in clang build

Signed-off-by: Eric Engestrom <eric.engestrom@intel.com>
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
5 years agosoftpipe: setup pixel_offset for all primitive types
Erik Faye-Lund [Tue, 30 Apr 2019 11:41:39 +0000 (13:41 +0200)]
softpipe: setup pixel_offset for all primitive types

If we don't update this for all primitive-types, we end up rendering
slightly offset points and lines up until the point where the first
triangle gets drawn. This is obviously not correct, and violates
OpenGL's repeatability rule.

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Fixes: ca9c413647b ("softpipe: Respect gl_rasterization_rules in
       primitive setup.")
Reviewed-By: Gert Wollny <gert.wollny@collabora.com>
5 years agonir: improve convert_yuv_to_rgb
Jonathan Marek [Fri, 30 Nov 2018 02:43:12 +0000 (21:43 -0500)]
nir: improve convert_yuv_to_rgb

Use a different arrangement of constants to allow more ffma.

A vec4 backend will now use 3 fma for yuv_to_rgb. On freedreno/ir3, it is
down from 10 to 7 alu (4 fma, 3 mul, 3 add to 7 fma). Other backends
shouldn't be hurt.

Signed-off-by: Jonathan Marek <jonathan@marek.ca>
Reviewed-by: Eric Anholt <eric@anholt.net>
Tested-by: Ian Romanick <ian.d.romanick@intel.com>
5 years agodoc: Update feature matrix
Gert Wollny [Wed, 24 Apr 2019 08:31:45 +0000 (10:31 +0200)]
doc: Update feature matrix

Since softpipe doesn't truely support multisample, I've not added softpipe
to the "Enhanced per-sample shading" even though with the advertised GLSL
level ARB_gpu_shader5 is advertised.

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
5 years agosoftpipe: Increase the GLSL feature level
Gert Wollny [Wed, 24 Apr 2019 08:29:13 +0000 (10:29 +0200)]
softpipe: Increase the GLSL feature level

This will enable calls to the interpolateAt* functions, but also a bunch
of other features.

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
5 years agosoftpipe: Add support for TGSI_OPCODE_INTERP_CENTROID
Gert Wollny [Wed, 24 Apr 2019 07:58:32 +0000 (09:58 +0200)]
softpipe: Add support for TGSI_OPCODE_INTERP_CENTROID

Like with interpolatAtSample this is also not really implementing the
according sampling and will only work correctly for pixels that are fully
covered, but since softpipe only supports one sample this is good enough
for now.

v2: Correct spelling (Roland Scheidegger)

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
5 years agosoftpipe: Add support for TGSI_OPCODE_INTERP_OFFSET
Gert Wollny [Wed, 24 Apr 2019 07:53:56 +0000 (09:53 +0200)]
softpipe: Add support for TGSI_OPCODE_INTERP_OFFSET

Since for this opcode the offsets are given manually the function
should actually also work for non-zero offsets, but the related piglits
only ever test with offset 0. Accordingly the patch satisfies
"fs-interpolateatoffset-*".

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
5 years agosoftpipe: Add (fake) support for TGSI_OPCODE_INTERP_SAMPLE
Gert Wollny [Wed, 24 Apr 2019 07:50:01 +0000 (09:50 +0200)]
softpipe: Add (fake) support for TGSI_OPCODE_INTERP_SAMPLE

Softpipe doesn't support more than one sample, so this function
implements the interpolation at sample 0 and adds a stub to make it
possible to interpolate at other samples.

As it is this makes the piglits "fs-interpolateatsample-*" pass, but
they only ever test sample 0 anyway.

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
5 years agosoftpipe: Add an per-input array for interpolator correctors to machine
Gert Wollny [Wed, 24 Apr 2019 07:35:31 +0000 (09:35 +0200)]
softpipe: Add an per-input array for interpolator correctors to machine

This adds entry points for correcting the interpolation values if the
interpolation is done by using one of the interpolateAt* functions.

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
5 years agosoftpipe: Factor out evaluation of the source indices
Gert Wollny [Wed, 24 Apr 2019 07:28:46 +0000 (09:28 +0200)]
softpipe: Factor out evaluation of the source indices

We will need these for per sample interpolation as well

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
5 years agosoftpipe: evaluate cube the faces on a per sample bases
Gert Wollny [Fri, 19 Apr 2019 07:26:49 +0000 (09:26 +0200)]
softpipe: evaluate cube the faces on a per sample bases

Now that the LOD is evaluated up front the cube faces can also be
evauate on a per sample basis instead of using the quad.

This fixes a large number of deqp gles 3 and 31 cube texture tests.

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
5 years agosoftpipe: keep input lod for explicite derivatives
Gert Wollny [Fri, 19 Apr 2019 08:41:51 +0000 (10:41 +0200)]
softpipe: keep input lod for explicite derivatives

This only affects anisotropic interpolation.

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
5 years agosoftpipe: tie in new code path for lod evaluation
Gert Wollny [Fri, 19 Apr 2019 07:21:54 +0000 (09:21 +0200)]
softpipe: tie in new code path for lod evaluation

This enables the use of explicit gradients.

Also remove an unused parameter when changing the interfaces.

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
5 years agosoftpipe: Move selection of shadow values up and clean parameter list
Gert Wollny [Fri, 19 Apr 2019 11:29:04 +0000 (13:29 +0200)]
softpipe: Move selection of shadow values up and clean parameter list

The shadow evaluation compare parameter is stored in different locations,
depending on the texture type. Move the values to a common location free
the lod storage and to be able to reduce the number of parameters.

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
5 years agosoftpipe: Pipe gather_comp through from st_tgsi_get_samples
Gert Wollny [Fri, 19 Apr 2019 07:03:51 +0000 (09:03 +0200)]
softpipe: Pipe gather_comp through from st_tgsi_get_samples

The value is stored in the lod components and this will be overwritten
when swithcing to the new code path.

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
5 years agosoftpipe: Prepare handling explicit gradients
Gert Wollny [Fri, 19 Apr 2019 06:43:05 +0000 (08:43 +0200)]
softpipe: Prepare handling explicit gradients

This only adds corde that is not yet enabled.

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
5 years agosoftpipe: Factor gradient evaluation out of the lambda evaluation
Gert Wollny [Fri, 19 Apr 2019 06:37:00 +0000 (08:37 +0200)]
softpipe: Factor gradient evaluation out of the lambda evaluation

this is useful when we want to use explicit gradients.

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
5 years agoegl: return correct error code for a case req ver < 3 with forward-compatible
Andrii Simiklit [Thu, 11 Oct 2018 10:53:21 +0000 (13:53 +0300)]
egl: return correct error code for a case req ver < 3 with forward-compatible

The EGL_KHR_create_context spec says:
   "If an OpenGL context is requested and the values for attributes
    EGL_CONTEXT_MAJOR_VERSION_KHR and EGL_CONTEXT_MINOR_VERSION_KHR,
    when considered together with the value for attribute
    EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR, specify an OpenGL
    version and feature set that are not defined, than an
    EGL_BAD_MATCH error is generated."

This case is already correctly handled a bit below in
the same source file.
The correct handling was added by commit: 63beb3df

Reported-by: Ian Romanick <idr@freedesktop.org>
Here: https://bugzilla.freedesktop.org/show_bug.cgi?id=92552#c9
Fixes: 11cabc45b712 "egl: rework handling EGL_CONTEXT_FLAGS"
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Signed-off-by: Andrii Simiklit <andrii.simiklit@globallogic.com>
5 years agoradeonsi/nir: call radeonsi nir opts before the scan pass
Timothy Arceri [Thu, 25 Apr 2019 07:02:51 +0000 (17:02 +1000)]
radeonsi/nir: call radeonsi nir opts before the scan pass

Some of the opts are not called in the general optimastion loop
in the state trackers glsl -> nir conversion. We need to call
the radeonsi specific optimisation once before scanning over
the nir otherwise we can end up gathering info on code that
is later removed.

Fixes an assert in the piglit test:

./bin/varying-struct-centroid_gles3

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
5 years agoradeonsi/nir: create si_nir_opts() helper
Timothy Arceri [Thu, 25 Apr 2019 07:02:50 +0000 (17:02 +1000)]
radeonsi/nir: create si_nir_opts() helper

We will make use of this in the following commit.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
5 years agoswr/rast: early exit on empty triangle mask
Alok Hota [Wed, 12 Sep 2018 19:18:28 +0000 (14:18 -0500)]
swr/rast: early exit on empty triangle mask

Reviewed-by: Bruce Cherniak <bruce.cherniak@intel.com>
5 years agoswr/rast: add guards for cpuid on Linux
Alok Hota [Wed, 12 Sep 2018 16:53:05 +0000 (11:53 -0500)]
swr/rast: add guards for cpuid on Linux

Reviewed-by: Bruce Cherniak <bruce.cherniak@intel.com>
5 years agoswr/rast: add flat shading
Alok Hota [Wed, 12 Sep 2018 01:01:36 +0000 (20:01 -0500)]
swr/rast: add flat shading

Reviewed-by: Bruce Cherniak <bruce.cherniak@intel.com>
5 years agoswr/rast: add SWR_STATIC_ASSERT() macro
Alok Hota [Wed, 20 Jun 2018 17:16:36 +0000 (12:16 -0500)]
swr/rast: add SWR_STATIC_ASSERT() macro

Reviewed-by: Bruce Cherniak <bruce.cherniak@intel.com>
5 years agoswr/rast: update guardband rects at draw setup
Alok Hota [Wed, 13 Jun 2018 20:14:16 +0000 (15:14 -0500)]
swr/rast: update guardband rects at draw setup

It's dependent on other state fields

Reviewed-by: Bruce Cherniak <bruce.cherniak@intel.com>
5 years agoswr/rast: add more llvm intrinsics
Alok Hota [Tue, 5 Jun 2018 05:16:27 +0000 (00:16 -0500)]
swr/rast: add more llvm intrinsics

Reviewed-by: Bruce Cherniak <bruce.cherniak@intel.com>
5 years agost/va: properly set stride and offset in vlVaDeriveImage
Julien Isorce [Tue, 23 Apr 2019 21:30:06 +0000 (14:30 -0700)]
st/va: properly set stride and offset in vlVaDeriveImage

Using the new resource_get_info function.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=110443
Signed-off-by: Julien Isorce <jisorce@oblong.com>
Reviewed-by: Leo Liu <leo.liu@amd.com>
5 years agoradeonsi: implement resource_get_info
Julien Isorce [Tue, 23 Apr 2019 21:28:48 +0000 (14:28 -0700)]
radeonsi: implement resource_get_info

Re-use existing si_texture_get_offset.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=110443
Signed-off-by: Julien Isorce <jisorce@oblong.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
5 years agogallium: add resource_get_info to pipe_screen
Julien Isorce [Tue, 23 Apr 2019 21:26:33 +0000 (14:26 -0700)]
gallium: add resource_get_info to pipe_screen

Generic plumbing.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=110443
Signed-off-by: Julien Isorce <jisorce@oblong.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
5 years agofreedreno/ir3: fixes for half reg in/out
Rob Clark [Mon, 29 Apr 2019 20:12:31 +0000 (13:12 -0700)]
freedreno/ir3: fixes for half reg in/out

Needs to update max_half_reg, or be remapped to full reg and update
max_reg accordingly, depending on generation..

Signed-off-by: Rob Clark <robdclark@chromium.org>
5 years agost/nine: Check discard_delayed_release is set before allocating more
Axel Davy [Sat, 27 Apr 2019 13:33:22 +0000 (15:33 +0200)]
st/nine: Check discard_delayed_release is set before allocating more

When discard_delayed_release is set (default), we allocate more buffers
and use a different buffer wait path.
Check if it is set, and use the old paths if not
(the alternative buffer wait path could still be used, but there is no
advantage to using it in this case).

Signed-off-by: Axel Davy <davyaxel0@gmail.com>
5 years agost/nine: Throttle rendering similarly for thread_submit
Axel Davy [Sat, 27 Apr 2019 13:25:35 +0000 (15:25 +0200)]
st/nine: Throttle rendering similarly for thread_submit

thread_submit's throttling depending on the number of internal
back buffers, and wasn't affected by the driver requested
throttling value.
Now it is.

Signed-off-by: Axel Davy <davyaxel0@gmail.com>
5 years agost/nine: Optimize a bit writeonly buffers
Axel Davy [Wed, 24 Apr 2019 21:24:40 +0000 (23:24 +0200)]
st/nine: Optimize a bit writeonly buffers

Optimize writeonly by passing PIPE_TRANSFER_WRITE
for these buffers instead of the safer
PIPE_TRANSFER_READ_WRITE.

This seems to improve the performance of d3d8 games
using d3d8to9.

Signed-off-by: Axel Davy <davyaxel0@gmail.com>
5 years agost/nine: Use TGSI_SEMANTIC_GENERIC for fog
Axel Davy [Tue, 9 Apr 2019 20:52:28 +0000 (22:52 +0200)]
st/nine: Use TGSI_SEMANTIC_GENERIC for fog

We used TGSI_SEMANTIC_FOG for fog,
however on vs/ps 3, fog is allowed to have
4 components (even on the ff pipeline according
to a wine test).
Since gallium's TGSI_SEMANTIC_FOG has only one
component, use TGSI_SEMANTIC_GENERIC instead.

Fixes:
https://github.com/iXit/Mesa-3D/issues/346

Signed-off-by: Axel Davy <davyaxel0@gmail.com>
5 years agost/nine: Enable computing const_ranges
Axel Davy [Mon, 21 Jan 2019 21:59:24 +0000 (22:59 +0100)]
st/nine: Enable computing const_ranges

All the pieces for constant compact are ready,
thus enable the path.

Signed-off-by: Axel Davy <davyaxel0@gmail.com>
5 years agost/nine: Handle const_ranges in nine_state
Axel Davy [Mon, 21 Jan 2019 21:50:01 +0000 (22:50 +0100)]
st/nine: Handle const_ranges in nine_state

Handle slot mapping if there is one.

Signed-off-by: Axel Davy <davyaxel0@gmail.com>
5 years agost/nine: Cache constant buffer size
Axel Davy [Wed, 23 Jan 2019 21:48:17 +0000 (22:48 +0100)]
st/nine: Cache constant buffer size

The shader constant buffer size with the
constant compaction code can vary depending
on the shader variant compiled (for example if
fog constants are required, etc).
Thus instead of using fixed size for the shader,
add in the variant cache the size required, pass it
to the context, and use this value.

Signed-off-by: Axel Davy <davyaxel0@gmail.com>
5 years agost/nine: Propagate const_range to context
Axel Davy [Mon, 21 Jan 2019 21:40:25 +0000 (22:40 +0100)]
st/nine: Propagate const_range to context

As with the constant compaction we map the constant
slots to new slots, we need to pass that information
to the context which is in charge of uploading
the constants.

Signed-off-by: Axel Davy <davyaxel0@gmail.com>
5 years agost/nine: Prepare constant compaction in nine_shader
Axel Davy [Sun, 20 Jan 2019 21:55:01 +0000 (22:55 +0100)]
st/nine: Prepare constant compaction in nine_shader

When indirect addressing is not used, we know exactly
which constants are accessed, and thus can
have them located in consecutive slots.
We thus parse again the shader with a slot map
for compaction.

The path contains the work inside nine_shader.c for this
path, but it needs some other commits to work, and thus
is not enabled yet by this commit.

Signed-off-by: Axel Davy <davyaxel0@gmail.com>
5 years agost/nine: Refactor counting of constants
Axel Davy [Sun, 20 Jan 2019 20:35:45 +0000 (21:35 +0100)]
st/nine: Refactor counting of constants

Track the number of slots used

Signed-off-by: Axel Davy <davyaxel0@gmail.com>
5 years agost/nine: Track constant slots used
Axel Davy [Sun, 20 Jan 2019 21:05:54 +0000 (22:05 +0100)]
st/nine: Track constant slots used

This tracking will be useful for constant compaction

Signed-off-by: Axel Davy <davyaxel0@gmail.com>
5 years agost/nine: Refactor ct_ctor
Axel Davy [Sun, 20 Jan 2019 21:05:30 +0000 (22:05 +0100)]
st/nine: Refactor ct_ctor

The refactoring will make it easier to parse the shader
twice for the constant compaction path.

Signed-off-by: Axel Davy <davyaxel0@gmail.com>
5 years agost/nine: Make swvp_on imply IS_VS
Axel Davy [Sun, 20 Jan 2019 20:43:19 +0000 (21:43 +0100)]
st/nine: Make swvp_on imply IS_VS

swvp cannot happen with ps, thus it makes
sense to force it to false with ps.

Signed-off-by: Axel Davy <davyaxel0@gmail.com>
5 years agost/nine: Refactor shader constants ureg_src computation
Axel Davy [Sun, 20 Jan 2019 19:57:01 +0000 (20:57 +0100)]
st/nine: Refactor shader constants ureg_src computation

Put the shader constant code in one place to better change
that code in future commits.

Signed-off-by: Axel Davy <davyaxel0@gmail.com>
5 years agost/nine: Manually upload vs and ps constants
Axel Davy [Sun, 20 Jan 2019 19:44:17 +0000 (20:44 +0100)]
st/nine: Manually upload vs and ps constants

In future commits we will introduce more fine-grained
uploads

Signed-off-by: Axel Davy <davyaxel0@gmail.com>
5 years agost/nine: use helper ureg_DECL_sampler everywhere
Axel Davy [Sun, 20 Jan 2019 10:25:47 +0000 (11:25 +0100)]
st/nine: use helper ureg_DECL_sampler everywhere

Signed-off-by: Axel Davy <davyaxel0@gmail.com>
5 years agost/nine: Compact pixel shader key
Axel Davy [Sun, 13 Jan 2019 21:25:46 +0000 (22:25 +0100)]
st/nine: Compact pixel shader key

Compact the shader key to make room for new
elements.

Signed-off-by: Axel Davy <davyaxel0@gmail.com>
5 years agost/nine: Compact nine_ff_get_projected_key
Axel Davy [Sun, 13 Jan 2019 21:16:35 +0000 (22:16 +0100)]
st/nine: Compact nine_ff_get_projected_key

Only the first four sampler slots can be used
by ff ps < 0x14, thus the size of the key
can be reduced.

Signed-off-by: Axel Davy <davyaxel0@gmail.com>
5 years agost/nine: Refactor param->rel
Axel Davy [Thu, 5 Apr 2018 20:38:03 +0000 (22:38 +0200)]
st/nine: Refactor param->rel

Refactor param->rel to enable different paths
for constants and inputs relative addressing.

Signed-off-by: Axel Davy <davyaxel0@gmail.com>
5 years agost/nine: Regroup param->rel tests
Axel Davy [Thu, 5 Apr 2018 20:31:27 +0000 (22:31 +0200)]
st/nine: Regroup param->rel tests

Regroup all the param->rel assertions into one assertion for better clarity
and better covering.
param->rel on an input can only happen with float constants for vs,
or with inputs on vs/ps 3.0.

Signed-off-by: Axel Davy <davyaxel0@gmail.com>
5 years agost/nine: Control shader constant inlining with drirc
Axel Davy [Sat, 27 Apr 2019 16:30:02 +0000 (18:30 +0200)]
st/nine: Control shader constant inlining with drirc

Until we use async shader compilation for constant inlining,
don't enable it unless user asks for it.

Signed-off-by: Axel Davy <davyaxel0@gmail.com>
5 years agost/nine: Recompile optimized shaders based on b/i consts
Axel Davy [Sun, 8 Apr 2018 15:06:00 +0000 (17:06 +0200)]
st/nine: Recompile optimized shaders based on b/i consts

Boolean and Integer constants are used in d3d9 for flow control.

Boolean are used for if/then/else and Integer constants
for loops.
The compilers can generate better code if these values are known
at compilation.
I haven't met so far a game that would change the values of these
constants frequently (and when they do, they set to the values used
for the previous draw call, and thus the changes get filtered out).

Thus it makes sense to inline these constants and recompile the shaders.
The commit sets a bound to the number of variants for a given shader
to avoid too many shaders to be generated.

One drawback is it means more shader compilations. It would probably
make sense to compile these shaders asynchronously or let the user
control the behaviour with an env var, but this is not done here.

The games I tested hit very few shader variants, and the performance
impact was negligible, but it could help for games with uber shaders.

Signed-off-by: Axel Davy <davyaxel0@gmail.com>
5 years agodrirc: Add Gallium nine workaround for Rayman Legends
Axel Davy [Sat, 27 Apr 2019 17:18:00 +0000 (19:18 +0200)]
drirc: Add Gallium nine workaround for Rayman Legends

The game requires it to display many textures properly.

Signed-off-by: Axel Davy <davyaxel0@gmail.com>
5 years agost/nine: Add drirc option to use data_internal for dynamic textures
Axel Davy [Wed, 10 Apr 2019 21:09:08 +0000 (23:09 +0200)]
st/nine: Add drirc option to use data_internal for dynamic textures

dynamic textures seem to have predictable stride. This stride
should be the same as for a ram buffer.

It seems some game don't check the actual stride value, assuming
it to be the expected one.
Thus this workaround (protected by drirc option) is to use an intermediate
ram buffer.

Fixes Rayman Legends texture issues when enabled.

Signed-off-by: Axel Davy <davyaxel0@gmail.com>
5 years agost/nine: Support internal compressed format for volumes
Axel Davy [Wed, 10 Apr 2019 21:05:58 +0000 (23:05 +0200)]
st/nine: Support internal compressed format for volumes

Reuse the generic path to support compressed formats.

Signed-off-by: Axel Davy <davyaxel0@gmail.com>
5 years agost/nine: Support internal compressed format for surfaces
Axel Davy [Wed, 10 Apr 2019 21:03:06 +0000 (23:03 +0200)]
st/nine: Support internal compressed format for surfaces

Reuse the generic path to support compressed formats.

Signed-off-by: Axel Davy <davyaxel0@gmail.com>
5 years agost/nine: Refactor volume GetSystemMemPointer
Axel Davy [Wed, 10 Apr 2019 20:53:02 +0000 (22:53 +0200)]
st/nine: Refactor volume GetSystemMemPointer

It will make it easier to reuse in another place.

Signed-off-by: Axel Davy <davyaxel0@gmail.com>
5 years agost/nine: Refactor surface GetSystemMemPointer
Axel Davy [Wed, 10 Apr 2019 20:48:51 +0000 (22:48 +0200)]
st/nine: Refactor surface GetSystemMemPointer

It will make it easier to reuse in another place.

Signed-off-by: Axel Davy <davyaxel0@gmail.com>
5 years agost/nine: rename *_conversion to *_internal
Axel Davy [Wed, 10 Apr 2019 20:38:43 +0000 (22:38 +0200)]
st/nine: rename *_conversion to *_internal

Rename these variables to a new name which will
fit new usages introduced in later commits.

Signed-off-by: Axel Davy <davyaxel0@gmail.com>
5 years agost/nine: Optimize volume upload with conversion
Axel Davy [Wed, 10 Apr 2019 20:21:48 +0000 (22:21 +0200)]
st/nine: Optimize volume upload with conversion

Use nine_context_box_upload instead of locking the pipe
for volume upload with format conversion.
nine_context_box_upload already handles format
conversion.

Signed-off-by: Axel Davy <davyaxel0@gmail.com>