platform/upstream/mesa.git
6 years agor600: hack up num_render_backends on Juniper to 8
Roland Scheidegger [Tue, 9 Jan 2018 02:28:45 +0000 (03:28 +0100)]
r600: hack up num_render_backends on Juniper to 8

Juniper really has a maximum of 4 RBEs (16 pixels). However, predication
always locks up on my HD 5750, and through experiments it looks like if we're
pretending it has a maximum of 8, with 4 disabled, it works correctly.
My conclusion would be that there's a bug (likely firmware, not hw) which
causes the predication logic to try to read 8 results out of the query buffer
instead of just 4, and since of course noone ever writes the upper 4, the
status bit is never set and hence it will wait for it forever.

Ideally this would be fixed in firmware, but I'd guess chances of that
happening are slim.
This will double the size of (occlusion) query result buffers, write the
status bit for the disabled rbs in these buffers, and will also add 8 results
together instead of just 4 when reading them back. The latter is unnecessary,
but it's probably not worth bothering - luckily num_render_backends isn't
used outside of occlusion queries, so don't need separate value for the
"real" maximum.
Also print out the enabled_rb_mask if it changed from the pre-fixed value
(which is already printed out), just in case there's some more problems
with chips which have some rbs disabled...

This fixes all the lockups with piglit nv_conditional_render tests on my
HD 5750 (all pass).

Reviewed-by: Dave Airlie <airlied@redhat.com>
6 years agowinsys/radeon: fix up default enabled_rb_mask for r600
Roland Scheidegger [Tue, 9 Jan 2018 01:53:28 +0000 (02:53 +0100)]
winsys/radeon: fix up default enabled_rb_mask for r600

The logic had two fatal flaws which completely killed the default value.
1) drm will overwrite the value anyway even if the chip can't be handled
2) the default value logic is relying on num_render_backends, which was
filled in later.
Luckily noone is relying on it, but it's a bit confusing seeing the chip clock
printed out there (as hex) with R600_DEBUG=info...
(Albeit radeonsi does not appear to fix up the value. If kernels which don't
handle this query are still supported, radeonsi will still end up with a broken
enabled_rb_mask, I have no idea of the potential results of this there.)

Reviewed-by: Dave Airlie <airlied@redhat.com>
6 years agor600: fix enabled_rb_mask on eg/cm
Roland Scheidegger [Tue, 9 Jan 2018 00:38:27 +0000 (01:38 +0100)]
r600: fix enabled_rb_mask on eg/cm

For eg/cm, the r600_gb_backend_map will always be 0. This is a bug in
the drm kernel driver, as it just just never fills the information in
(it is now being fixed - the history shows it was being filled in when
the query was brand new but got lost shortly thereafter with backend_map
fixes).
This causes r600_query_hw_prepare_buffer to write the "status bit"
(just the highest bit of the occlusion query result) even for active rbes
(all but the first). This doesn't make much sense, albeit I suppose it's mostly
safe. According to the commit history, it's necessary to set these bits for
inactive rbes since otherwise predication will lock up - presumably the hw just
is waiting for the status bit to appear, which will never happen with inactive
rbes. I'd guess potentially predication could be wrong (due to not waiting for
the actual result if the status bit is already there) if this is set for
active rbes.

Discovered while trying to fix predication lockups on Juniper (needs another
patch).

Reviewed-by: Dave Airlie <airlied@redhat.com>
6 years agor600: fix sampler indexing with texture buffers sampling
Roland Scheidegger [Tue, 2 Jan 2018 22:03:44 +0000 (23:03 +0100)]
r600: fix sampler indexing with texture buffers sampling

This fixes the new piglit test.
While here also fix up the logic for early exit of setting up driver consts.

Tested-by: Konstantin Kharlamov <hi-angel@yandex.ru>
Reviewed-by: Reviewed-by: Dave Airlie <airlied@redhat.com>
6 years agor600: don't use vtx offset for load_sample_position
Roland Scheidegger [Mon, 1 Jan 2018 18:40:56 +0000 (19:40 +0100)]
r600: don't use vtx offset for load_sample_position

The offset looks bogus to me. Albeit in the end it doesn't matter, by the
looks of it offsets smaller than 4 get ignored there (not sure of the rules,
I suppose either non-dword aligned offsets never work there or the offset
must be at least aligned to the size of a single element).

Tested-by: Konstantin Kharlamov <hi-angel@yandex.ru>
Reviewed-by: Dave Airlie <airlied@redhat.com>
6 years agor600: drop l2 related queries
Dave Airlie [Wed, 6 Dec 2017 23:41:35 +0000 (23:41 +0000)]
r600: drop l2 related queries

radeonsi only.

Signed-off-by: Dave Airlie <airlied@redhat.com>
6 years agor600/shader: only read back the necessary tess factor components.
Dave Airlie [Fri, 29 Dec 2017 03:14:21 +0000 (03:14 +0000)]
r600/shader: only read back the necessary tess factor components.

This just reduces the lds reads for the the tess factor emission.

Signed-off-by: Dave Airlie <airlied@redhat.com>
6 years agoFix use of alloca() without #include <c99_alloca.h>
Jon Turney [Wed, 13 Dec 2017 19:49:07 +0000 (19:49 +0000)]
Fix use of alloca() without #include <c99_alloca.h>

../../../src/mesa/main/shaderapi.c: In function ‘_mesa_ShaderBinary’:
../../../src/mesa/main/shaderapi.c:2188:9: error: implicit declaration of function ‘alloca’ [-Werror=implicit-function-declaration]

6 years agogenxml: Add missing INSTDONE_1 bits on Gen7.5+.
Kenneth Graunke [Mon, 8 Jan 2018 06:29:34 +0000 (22:29 -0800)]
genxml: Add missing INSTDONE_1 bits on Gen7.5+.

This will make aubinator_error_decode decode them properly.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
6 years agointel: Apply Geminilake "Barrier Mode" workaround.
Kenneth Graunke [Tue, 2 Jan 2018 22:26:41 +0000 (14:26 -0800)]
intel: Apply Geminilake "Barrier Mode" workaround.

Apparently, Geminilake requires you to whack a chicken bit to select
either compute or tessellation mode for barriers.  The recommendation
is to switch between them at PIPELINE_SELECT time.

We may not need to do this all the time, but I don't know that it hurts
either.  PIPELINE_SELECT is already a pretty giant stall.

This appears to fix hangs in tessellation control shaders with barriers
on Geminilake.  Note that this requires a corresponding kernel change,

    drm/i915: Whitelist SLICE_COMMON_ECO_CHICKEN1 on Geminilake.

in order for the register write to actually happen.  Without an updated
kernel, this register write will be noop'd and the fix will not work.

Reviewed-by: Rafael Antognolli <rafael.antognolli@intel.com>
6 years agodocs: update calendar, add news and link release notes for 17.3.2
Emil Velikov [Tue, 9 Jan 2018 16:13:31 +0000 (16:13 +0000)]
docs: update calendar, add news and link release notes for 17.3.2

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
6 years agodocs: add sha256 checksums for 17.3.2
Emil Velikov [Tue, 9 Jan 2018 16:08:51 +0000 (16:08 +0000)]
docs: add sha256 checksums for 17.3.2

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

6 years agodocs: add release notes for 17.3.2
Emil Velikov [Mon, 8 Jan 2018 21:32:27 +0000 (21:32 +0000)]
docs: add release notes for 17.3.2

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

6 years agost/omx_bellagio: Update default intra matrix per MPEG2 spec
Indrajit Das [Fri, 5 Jan 2018 09:36:18 +0000 (04:36 -0500)]
st/omx_bellagio: Update default intra matrix per MPEG2 spec

Signed-off-by: Indrajit Das <indrajit-kumar.das@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
6 years agoaubinator: add support for aubinating memtrace aubs
Scott D Phillips [Tue, 28 Nov 2017 23:52:10 +0000 (15:52 -0800)]
aubinator: add support for aubinating memtrace aubs

Memtrace aubs are similar to classic aubs, with the major
difference being how command submission is serialized (as register
writes instead of a high-level submit message). Some internal
tools generate or consume only memtrace aubs.

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
6 years agoaubinator: extract aubinator_init() out of the header handler function
Scott D Phillips [Tue, 28 Nov 2017 23:52:09 +0000 (15:52 -0800)]
aubinator: extract aubinator_init() out of the header handler function

A later patch will use the aubinator_init() function from the
memtrace aub header handler.

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
6 years agoaubinator: honor --color option when printing the header
Scott D Phillips [Tue, 28 Nov 2017 23:52:08 +0000 (15:52 -0800)]
aubinator: honor --color option when printing the header

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
6 years ago.gitignore: Ignore new generated files
Scott D Phillips [Fri, 5 Jan 2018 18:52:27 +0000 (10:52 -0800)]
.gitignore: Ignore new generated files

New generated files from:

  bb1e6ff161c ("spirv: Add a prepass to set types on vtn_values")
  65fc16c9741 ("autotools: set XA versions in configure.ac and configure header file")

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
6 years agoMeson: ensure variable defined
Dylan Baker [Tue, 9 Jan 2018 01:43:45 +0000 (17:43 -0800)]
Meson: ensure variable defined

A gallium driver is undefined if passing -Dgallium-drivers=''

Fixes: e0b037d6979b2 ("meson: Build SWR driver")
Signed-off-by: Dylan Baker <dylan.c.baker@intel.com>
Acked-by: Jordan Justen <jordan.l.justen@intel.com>
Acked-by: Jason Ekstrand <jason.ekstrand@intel.com>
6 years agomeson: Fix typo in clover build
Dylan Baker [Tue, 9 Jan 2018 01:31:55 +0000 (17:31 -0800)]
meson: Fix typo in clover build

The leading space breaks things.

fixes: 42ea0631f108d ("meson: build clover")
Signed-off-by: Dylan Baker <dylan.c.baker@intel.com>
6 years agomeson: set opencl flags for r600
Dylan Baker [Fri, 8 Dec 2017 23:29:59 +0000 (15:29 -0800)]
meson: set opencl flags for r600

Signed-off-by: Dylan Baker <dylan.c.baker@intel.com>
6 years agomeson: build clover
Dylan Baker [Fri, 8 Dec 2017 23:26:00 +0000 (15:26 -0800)]
meson: build clover

This has only been compile tested.

v2: - Have a single option for opencl (Eric E)
    - fix typo "tgis" -> "tgsi" (Curro)
    - Don't add "lib" to pipe loader libraries, which matches the
      autotools behavior
v3: - Remove trailing whitespace
    - Make PIPE_SEARCH_DIR an absolute path
v4: - add trailing / to LIBCLC defines

Acked-by: Curro Jerez <currojerez@riseup.net>
Tested-by: Jan Vesely <jan.vesely@rutgers.edu>
cc: Aaron Watry <awatry@gmail.com>
Signed-off-by: Dylan Baker <dylan.c.baker@intel.com>
6 years agomeson: Turn on swr for relevant targets
Dylan Baker [Thu, 30 Nov 2017 01:53:54 +0000 (17:53 -0800)]
meson: Turn on swr for relevant targets

Currently that's dri, libgl-xlib, and osmesa.

v2: - put drivers on a separate line from normal dependencies (Eric E)

cc: George Kyriazis <george.kyriazis@intel.com>
cc: Tim Rowley <timothy.o.rowley@intel.com>
cc: Bruce Cherniak <bruce.cherniak@intel.com>
Signed-off-by: Dylan Baker <dylan.c.baker@intel.com>
Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com>
6 years agomeson: Build SWR driver
Dylan Baker [Thu, 30 Nov 2017 01:50:05 +0000 (17:50 -0800)]
meson: Build SWR driver

This enables the SWR driver, but doesn't actually hook it up to any of
the targets yet. I felt like this patch was big and complicated enough
without adding that.

v2: - Fix typo 'delemeited' -> 'delimited' (Eric E)
    - Fix type 'errror' -> 'error' (Eric E)
    - Use variables to hold files instead of looking above the current
      meson build (Eric E)
    - Use foreach loops to reduce the number of unique generators
    - Add comment about why some generators have names and some are just
      added to a list
v3: - Remove trailing whitespace

Signed-off-by: Dylan Baker <dylan.c.baker@intel.com>
6 years agoac: rework emit_barrier() to not segfault on radeonsi
Timothy Arceri [Mon, 8 Jan 2018 06:41:24 +0000 (17:41 +1100)]
ac: rework emit_barrier() to not segfault on radeonsi

nir_to_llvm_context will always be NULL for radeonsi so we need
work around this.

Reviewed-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
6 years agoac: add load_tess_level() to the abi
Timothy Arceri [Mon, 11 Dec 2017 05:16:30 +0000 (16:16 +1100)]
ac: add load_tess_level() to the abi

Fixes the following piglit tests in radeonsi:

vs-tcs-tes-tessinner-tessouter-inputs-quads.shader_test
vs-tcs-tes-tessinner-tessouter-inputs-tris.shader_test
vs-tes-tessinner-tessouter-inputs-quads.shader_test
vs-tes-tessinner-tessouter-inputs-tris.shader_test

v2: make use of si_shader_io_get_unique_index_patch()
    via the helper in the previous patch rather than
    shader_io_get_unique_index()

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com> (v1)
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
6 years agoradeonsi: add load_tess_level() helper
Timothy Arceri [Mon, 11 Dec 2017 03:48:41 +0000 (14:48 +1100)]
radeonsi: add load_tess_level() helper

This will be shared by the tgsi and nir backends.

v2: move si_shader_io_get_unique_index_patch() call inside
    the helper.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com> (v1)
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
6 years agospirv: Do implicit conversions of uint to bool in OpStore
Jason Ekstrand [Wed, 3 Jan 2018 17:26:18 +0000 (09:26 -0800)]
spirv: Do implicit conversions of uint to bool in OpStore

Technically, the GLSLang bug related to this can also affect SSBO writes
where the bool -> uint conversion is missing.  However, the only known
shipping application with an old enough version of GLSLang to cause
issues with this is the new DOOM game so we keep the workaround as small
as possible.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=104424
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
6 years agospirv: Loosen the validation for load/store type matching
Jason Ekstrand [Tue, 2 Jan 2018 04:00:02 +0000 (20:00 -0800)]
spirv: Loosen the validation for load/store type matching

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=104338
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=104424
Tested-by: Eero Tamminen <eero.t.tamminen@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
6 years agospirv: Require a storage type for OpStore destinations
Jason Ekstrand [Wed, 3 Jan 2018 17:05:31 +0000 (09:05 -0800)]
spirv: Require a storage type for OpStore destinations

This rules out things such as trying to store a pointer to a local
variable.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
6 years agospirv: Add a vtn_types_compatible helper
Jason Ekstrand [Tue, 2 Jan 2018 15:45:42 +0000 (07:45 -0800)]
spirv: Add a vtn_types_compatible helper

Tested-by: Eero Tamminen <eero.t.tamminen@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
6 years agospirv: Store the id of the type in vtn_type
Jason Ekstrand [Wed, 3 Jan 2018 16:41:42 +0000 (08:41 -0800)]
spirv: Store the id of the type in vtn_type

Previously, we were storing a pointer to the vtn_value because we use it
to look up decorations when we create input/output variables.  This
works, but it also may be useful to have the id itself so we may as well
store that instead.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
6 years agospirv: Add a mechanism for dumping failing shaders
Jason Ekstrand [Tue, 2 Jan 2018 03:55:33 +0000 (19:55 -0800)]
spirv: Add a mechanism for dumping failing shaders

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
6 years agospirv: Rework asserts in var_decoration_cb
Jason Ekstrand [Tue, 12 Dec 2017 17:44:59 +0000 (09:44 -0800)]
spirv: Rework asserts in var_decoration_cb

Now that higher levels are enforcing decoration sanity, we don't need
the vtn_asserts here.  This function *should* be safe but we still want
a few well-placed regular asserts in case something goes awry.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
6 years agospirv: Rework error checking for decorations
Jason Ekstrand [Tue, 12 Dec 2017 16:47:56 +0000 (08:47 -0800)]
spirv: Rework error checking for decorations

This reworks the error checking on our generic handling of decorations.
The objective is to validate all of the SPIR-V assumptions we make
up-front and convert redundant checks to compiled-out asserts.  The most
important part of this is to ensure that member decorations only occur
on OpTypeStruct and that the member is never out-of-bounds.  This way
later code can assume that the member is sane and not have to worry
about OOB array access due to a misplaced OpMemberDecorate.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
6 years agospirv: Add better type validation to OpTypeImage
Jason Ekstrand [Tue, 12 Dec 2017 07:03:58 +0000 (23:03 -0800)]
spirv: Add better type validation to OpTypeImage

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
6 years agospirv: Switch on vtn_base_type in OpComposite(Extract|Insert)
Jason Ekstrand [Tue, 12 Dec 2017 06:42:26 +0000 (22:42 -0800)]
spirv: Switch on vtn_base_type in OpComposite(Extract|Insert)

This is a bit simpler since we have fewer enum values in the case.  It's
also a bit more efficient because we're making fewer glsl_get_* calls.
While we're at it, add better type validation.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
6 years agospirv: Refactor Op[Spec]ConstantComposite and add better validation
Jason Ekstrand [Tue, 12 Dec 2017 06:25:09 +0000 (22:25 -0800)]
spirv: Refactor Op[Spec]ConstantComposite and add better validation

Now that vtn_base_type is a real and full base type, we can switch on
that instead of the GLSL base type which is a lot fewer cases in our
switch.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
6 years agospirv: Add better validation to Op[Spec]Constant
Jason Ekstrand [Tue, 12 Dec 2017 06:15:04 +0000 (22:15 -0800)]
spirv: Add better validation to Op[Spec]Constant

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
6 years agospirv: Remove a pointless assignment in SpvOpSpecConstant
Jason Ekstrand [Tue, 12 Dec 2017 06:13:33 +0000 (22:13 -0800)]
spirv: Remove a pointless assignment in SpvOpSpecConstant

We re-assign later inside the bit_size switch

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
6 years agospirv: Unify boolean constants and add better validation
Jason Ekstrand [Tue, 12 Dec 2017 06:09:02 +0000 (22:09 -0800)]
spirv: Unify boolean constants and add better validation

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
6 years agospirv/info: Add spirv_op_to_string
Jason Ekstrand [Tue, 12 Dec 2017 06:04:04 +0000 (22:04 -0800)]
spirv/info: Add spirv_op_to_string

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
6 years agospirv: Make 'info' a local array spirv_info_c.py
Jason Ekstrand [Tue, 12 Dec 2017 05:52:22 +0000 (21:52 -0800)]
spirv: Make 'info' a local array spirv_info_c.py

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
6 years agospirv: Add better error messages in vtn_value helpers
Jason Ekstrand [Tue, 12 Dec 2017 05:42:34 +0000 (21:42 -0800)]
spirv: Add better error messages in vtn_value helpers

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
6 years agospirv: Import 1.2 rev 3 headers and grammar from Khronos
Caio Marcelo de Oliveira Filho [Mon, 8 Jan 2018 18:46:16 +0000 (10:46 -0800)]
spirv: Import 1.2 rev 3 headers and grammar from Khronos

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
6 years agoradv: get InstanceID from VGPR1 (or VGPR2 for tess) instead of VGPR3
Samuel Pitoiset [Fri, 5 Jan 2018 18:18:13 +0000 (19:18 +0100)]
radv: get InstanceID from VGPR1 (or VGPR2 for tess) instead of VGPR3

VGPR1 = InstanceID / StepRate0; // StepRate0 can be set to 1

Ported from RadeonSI.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agoradv: avoid PS partial flushes when viewports/scissors don't change
Samuel Pitoiset [Fri, 5 Jan 2018 17:20:06 +0000 (18:20 +0100)]
radv: avoid PS partial flushes when viewports/scissors don't change

For Vega10 and Raven that need a special workaround for the
scissor bug.

This seems to give a minor boost for Talos and Dota 2, at least.

To reduce the cost of memcmp, the driver checks if it's
really useful to do the comparison.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agoradv: add has_scissor_bug for Vega10 and Raven
Samuel Pitoiset [Fri, 5 Jan 2018 17:00:31 +0000 (18:00 +0100)]
radv: add has_scissor_bug for Vega10 and Raven

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agoradv/gfx9: do not load VGPR1 when GS uses points or lines
Samuel Pitoiset [Fri, 5 Jan 2018 16:18:52 +0000 (17:18 +0100)]
radv/gfx9: do not load VGPR1 when GS uses points or lines

VGPR1 is only needed for topology that needs 3 offsets like
triangles or quads.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agoradv: make shader BOs read-only for the GPU
Samuel Pitoiset [Thu, 4 Jan 2018 14:19:47 +0000 (15:19 +0100)]
radv: make shader BOs read-only for the GPU

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agoradv: make descriptor BOs read-only for the GPU
Samuel Pitoiset [Tue, 5 Dec 2017 13:22:17 +0000 (14:22 +0100)]
radv: make descriptor BOs read-only for the GPU

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agoradv: make the indirect GFX config BO read-only for the GPU
Samuel Pitoiset [Tue, 5 Dec 2017 13:20:50 +0000 (14:20 +0100)]
radv: make the indirect GFX config BO read-only for the GPU

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agoradv/winsys: make IBs read-only for the GPU
Samuel Pitoiset [Tue, 5 Dec 2017 13:28:46 +0000 (14:28 +0100)]
radv/winsys: make IBs read-only for the GPU

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agoradv/winsys: add RADEON_FLAG_READ_ONLY
Samuel Pitoiset [Tue, 5 Dec 2017 12:57:07 +0000 (13:57 +0100)]
radv/winsys: add RADEON_FLAG_READ_ONLY

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agoradv/winsys: rework radv_amdgpu_bo_va_op()
Samuel Pitoiset [Tue, 5 Dec 2017 12:51:46 +0000 (13:51 +0100)]
radv/winsys: rework radv_amdgpu_bo_va_op()

Needed for the following commit.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agolink mesautil with pthreads
Igor Gnatenko [Mon, 1 Jan 2018 21:49:00 +0000 (22:49 +0100)]
link mesautil with pthreads

../../src/util/.libs/libmesautil.a(libmesautil_la-u_queue.o): In function `u_thread_setname':
/builddir/build/BUILD/mesa-17.3.1/src/util/../../src/util/u_thread.h:66: undefined reference to `pthread_setname_np'
../../src/util/.libs/libmesautil.a(libmesautil_la-u_queue.o): In function `thrd_join':
/builddir/build/BUILD/mesa-17.3.1/src/util/../../include/c11/threads_posix.h:336: undefined reference to `pthread_join'
../../src/util/.libs/libmesautil.a(libmesautil_la-u_queue.o): In function `u_thread_create':
/builddir/build/BUILD/mesa-17.3.1/src/util/../../src/util/u_thread.h:48: undefined reference to `pthread_sigmask'
../../src/util/.libs/libmesautil.a(libmesautil_la-u_queue.o): In function `thrd_create':
/builddir/build/BUILD/mesa-17.3.1/src/util/../../include/c11/threads_posix.h:296: undefined reference to `pthread_create'
../../src/util/.libs/libmesautil.a(libmesautil_la-u_queue.o): In function `u_thread_create':
/builddir/build/BUILD/mesa-17.3.1/src/util/../../src/util/u_thread.h:50: undefined reference to `pthread_sigmask'
/builddir/build/BUILD/mesa-17.3.1/src/util/../../src/util/u_thread.h:50: undefined reference to `pthread_sigmask'
../../src/util/.libs/libmesautil.a(libmesautil_la-u_queue.o): In function `call_once':
/builddir/build/BUILD/mesa-17.3.1/src/util/../../include/c11/threads_posix.h:96: undefined reference to `pthread_once'
../../src/util/.libs/libmesautil.a(libmesautil_la-u_queue.o): In function `u_thread_get_time_nano':
/builddir/build/BUILD/mesa-17.3.1/src/util/../../src/util/u_thread.h:84: undefined reference to `pthread_getcpuclockid'
collect2: error: ld returned 1 exit status

Reviewed-by: Adam Jackson <ajax@redhat.com>
Signed-off-by: Igor Gnatenko <ignatenko@redhat.com>
6 years agoanv: Allow PMA optimization to be enabled in secondary command buffers
Alex Smith [Fri, 5 Jan 2018 11:09:19 +0000 (11:09 +0000)]
anv: Allow PMA optimization to be enabled in secondary command buffers

This was never enabled in secondary buffers because hiz_enabled was
never set to true for those.

If the app provides a framebuffer in the inheritance info when beginning
a secondary buffer, we can determine if HiZ is enabled and therefore
allow the PMA optimization to be enabled within the command buffer.

This improves performance by ~13% on an internal benchmark on Skylake.

v2: Use anv_cmd_buffer_get_depth_stencil_view().

Signed-off-by: Alex Smith <asmith@feralinteractive.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
6 years agoglsl: Respect std430 layout in lower_buffer_access
Florian Will [Fri, 5 Jan 2018 14:33:31 +0000 (15:33 +0100)]
glsl: Respect std430 layout in lower_buffer_access

Respect the std430 rules for determining offset and size of struct
members when using a std430 buffer. std140 rules lead to wrong buffer
offsets in that case.

Fixes my test case attached in Bugzilla. No piglit changes.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=104492
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
6 years agonir: fix st_nir_assign_var_locations for patch variables
Karol Herbst [Sun, 7 Jan 2018 20:42:19 +0000 (21:42 +0100)]
nir: fix st_nir_assign_var_locations for patch variables

Signed-off-by: Karol Herbst <kherbst@redhat.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
6 years agonvc0: enable bindless on kepler
Ilia Mirkin [Sat, 24 Jun 2017 04:51:13 +0000 (00:51 -0400)]
nvc0: enable bindless on kepler

All the functionality is in. Maxwell will take a little bit more
enablement work.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
6 years agonvc0: add bindless image support for kepler
Ilia Mirkin [Sat, 24 Jun 2017 04:44:35 +0000 (00:44 -0400)]
nvc0: add bindless image support for kepler

A part of the driver constbuf area is allocated for bindless images. Any
update requires uploading to all driver constbufs. This also extends the
driver constbuf to 64KB, up from 2KB.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
6 years agonvc0: add support for bindless textures on kepler+
Ilia Mirkin [Thu, 22 Jun 2017 03:13:20 +0000 (23:13 -0400)]
nvc0: add support for bindless textures on kepler+

This keeps a list of resident textures (per context), and dumps that
list into the active buffer list when submitting. We also treat bindless
texture fetches slightly differently, wrt the meaning of indirect, and
not requiring the SAMPLER file to be used.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
6 years agonv50/ir: use the image info in the instruction rather than decl
Ilia Mirkin [Sat, 24 Jun 2017 00:44:56 +0000 (20:44 -0400)]
nv50/ir: use the image info in the instruction rather than decl

In preparation for bindless images, we have to retrieve the
target/format info from the instruction directly, as there will be no
declaration. Furthermore, for bound images, this information is still
available in the instruction, so we can drop the declaration-based
mechanism entirely.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
6 years agonvc0/ir: safen up lowering logic against overwriting reused values
Ilia Mirkin [Sat, 8 Apr 2017 04:05:18 +0000 (00:05 -0400)]
nvc0/ir: safen up lowering logic against overwriting reused values

I'm fairly sure both of the changed sites are OK as-is, but they're
fragile, so this is just safening them up. Since this is happening
pre-ssa, we don't want to be overwriting values that may potentially get
used later on.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
6 years agonvc0: update tic in-place when buffer address changes
Ilia Mirkin [Sat, 30 Dec 2017 06:07:30 +0000 (01:07 -0500)]
nvc0: update tic in-place when buffer address changes

This is helpful for bindless, where changing TIC id's is undesirable.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
6 years agonvc0: ensure that pushbuf keeps ref to old text/tls bos
Ilia Mirkin [Mon, 1 Jan 2018 19:54:17 +0000 (14:54 -0500)]
nvc0: ensure that pushbuf keeps ref to old text/tls bos

If we free the bo, then the PTE may get deallocated immediately. We have
to make sure that the submission includes a ref to the old bo so that it
remains mapped for the duration of the command execution.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
6 years agoi965: Torch public intel_batchbuffer_emit_dword/float helpers.
Kenneth Graunke [Fri, 5 Jan 2018 20:27:41 +0000 (12:27 -0800)]
i965: Torch public intel_batchbuffer_emit_dword/float helpers.

intel_batchbuffer_emit_float is dead code, it should go.

intel_batchbuffer_emit_dword only had one user, which had bungled using
them by forgetting to call intel_batchbuffer_require_space first.  So it
seems wise to delete these unsafe helpers.

Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
6 years agoi965: Require space for MI_BATCHBUFFER_END.
Kenneth Graunke [Fri, 5 Jan 2018 20:07:20 +0000 (12:07 -0800)]
i965: Require space for MI_BATCHBUFFER_END.

intel_batchbuffer_emit_dword doesn't reserve space for the DWord it
emits.  In the past, we had some reserved batch space to ensure this
worked.  With the switch to growing batches, we need to actually request
space so that we grow if necessary.

Fixes: 2c46a67b4138631217141f (i965: Delete BATCH_RESERVED handling.)
Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
6 years agoi965: Shut up a few unused variable warnings.
Kenneth Graunke [Sun, 7 Jan 2018 01:32:04 +0000 (17:32 -0800)]
i965: Shut up a few unused variable warnings.

If asserts are disabled, you get pointless warnings about devinfo
being used (it's used to assert on devinfo->gen).

6 years agoac: add ac_build_fmin/fmax helpers
Marek Olšák [Tue, 2 Jan 2018 02:59:43 +0000 (03:59 +0100)]
ac: add ac_build_fmin/fmax helpers

Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
6 years agomesa: remove dd_function_table::GetCompressedTexSubImage and clean it up
Marek Olšák [Wed, 13 Dec 2017 18:14:36 +0000 (19:14 +0100)]
mesa: remove dd_function_table::GetCompressedTexSubImage and clean it up

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
6 years agomesa: Tidy up the 4.6 section of GL4x.xml
Neil Roberts [Fri, 5 Jan 2018 10:38:58 +0000 (11:38 +0100)]
mesa: Tidy up the 4.6 section of GL4x.xml

The enums are moved to the top and indented like the rest of the file.
Comments are added to split up the function aliases by corresponding
extension. This should make no functional difference.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
6 years agoradv: remove unused radv_color_buffer_info::cb_clear_valueX
Samuel Pitoiset [Fri, 5 Jan 2018 09:03:03 +0000 (10:03 +0100)]
radv: remove unused radv_color_buffer_info::cb_clear_valueX

Found by inspection.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agoanv: Take write mask into account in has_color_buffer_write_enabled
Alex Smith [Thu, 4 Jan 2018 18:01:45 +0000 (18:01 +0000)]
anv: Take write mask into account in has_color_buffer_write_enabled

If we have a color attachment, but its writes are masked, this would
have still returned true. This is inconsistent with how HasWriteableRT
in 3DSTATE_PS_BLEND is set, which does take the mask into account.

This could lead to PixelShaderHasUAV not being set in 3DSTATE_PS_EXTRA
if the fragment shader does use UAVs, meaning the fragment shader may
not be invoked because HasWriteableRT is false. Specifically, this was
seen to occur when the shader also enables early fragment tests: the
fragment shader was not invoked despite passing depth/stencil.

Fix by taking the color write mask into account in this function. This
is consistent with how things are done on i965.

Signed-off-by: Alex Smith <asmith@feralinteractive.com>
Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
6 years agomesa: Add GL4.6 aliases of functions from GL_ARB_indirect_parameters
Neil Roberts [Fri, 24 Nov 2017 15:53:15 +0000 (16:53 +0100)]
mesa: Add GL4.6 aliases of functions from GL_ARB_indirect_parameters

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
6 years agoradv: enable denorms for 64-bit and 16-bit floats
Samuel Pitoiset [Thu, 28 Dec 2017 21:55:27 +0000 (22:55 +0100)]
radv: enable denorms for 64-bit and 16-bit floats

Similar to RadeonSI.

This fixes:
dEQP-VK.image.texel_view_compatible.graphic.basic.attachment_read.bc*r16g16b16a16_sfloat
dEQP-VK.image.extended_usage_bit.attachment_write.r16_sfloat

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agoamd/common: correctly detect if we need ring buffers
Samuel Pitoiset [Wed, 20 Dec 2017 19:57:35 +0000 (20:57 +0100)]
amd/common: correctly detect if we need ring buffers

When allocate_user_sgprs() was called, ctx->stage was actually
unset and 0 is for the vertex shader. This doesn't change
anything for now because of the spill support thing.

Though, the number of user SGPRs has to be fixed for merged
shaders on GFX9. It was broken before anyway.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agoamd/common: use ac_image_load when lod is zero
Samuel Pitoiset [Thu, 4 Jan 2018 15:24:22 +0000 (16:24 +0100)]
amd/common: use ac_image_load when lod is zero

This might decrease VGPR spilling, because we no longer
have to use v4i32 for 2D fetches when level == 0. We now
use v2i32 for those cases.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
6 years agoradv: limit the scissor bug workaround to Vega 10 and Raven
Samuel Pitoiset [Thu, 4 Jan 2018 15:24:51 +0000 (16:24 +0100)]
radv: limit the scissor bug workaround to Vega 10 and Raven

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agoglsl/standalone: set MaxTransformFeedbackBuffers
Alejandro Piñeiro [Thu, 4 Jan 2018 16:13:07 +0000 (17:13 +0100)]
glsl/standalone: set MaxTransformFeedbackBuffers

Using 4, as it is the default value on mesa. See mesa/main/config.h
and the following commit that introduced the value:
15ac66e331abdab12e882d80a6b4f647bc905298

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
6 years agoglsl/standalone: set MaxVertexStreams
Alejandro Piñeiro [Thu, 4 Jan 2018 16:04:33 +0000 (17:04 +0100)]
glsl/standalone: set MaxVertexStreams

ARB_transform_feedback3 sets a minimum of 1, ARB_gpu_shader5 a minimum
of 4. It shouldn't matter too much, so choosing the later.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
6 years agoglsl/standalone: set MaxUniformBufferBindings
Alejandro Piñeiro [Thu, 4 Jan 2018 15:51:19 +0000 (16:51 +0100)]
glsl/standalone: set MaxUniformBufferBindings

Used to handle how many ubo you can define on the context. Minimimum
defined as 36 on ARB_uniform_buffer_object spec, up to 84 on OpenGL
4.6 (12 per stage at each moment).

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
6 years agoglsl/standalone: point which arguments are mandatory
Alejandro Piñeiro [Thu, 4 Jan 2018 15:38:00 +0000 (16:38 +0100)]
glsl/standalone: point which arguments are mandatory

Every now and then I execute the standalone compiler, get the
non-version error, and need to remember what I'm doing wrong

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
6 years agoac: rework ac_llvm_extract_elem()
Timothy Arceri [Wed, 13 Dec 2017 07:46:56 +0000 (18:46 +1100)]
ac: rework ac_llvm_extract_elem()

Simplifies the logic a little and asserts index is 0.

Suggested-by: Nicolai Hähnle <nhaehnle@gmail.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
6 years agost/glsl_to_nir/radeonsi: enable tessellation shaders
Timothy Arceri [Wed, 6 Dec 2017 02:32:17 +0000 (13:32 +1100)]
st/glsl_to_nir/radeonsi: enable tessellation shaders

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
6 years agogallium/tgsi: add patch support to tgsi_get_gl_varying_semantic()
Timothy Arceri [Mon, 11 Dec 2017 00:45:09 +0000 (11:45 +1100)]
gallium/tgsi: add patch support to tgsi_get_gl_varying_semantic()

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
6 years agoradeonsi: add dummy implementation of si_nir_scan_tess_ctrl()
Timothy Arceri [Thu, 7 Dec 2017 02:11:32 +0000 (13:11 +1100)]
radeonsi: add dummy implementation of si_nir_scan_tess_ctrl()

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
6 years agoac/radeonsi: add load_tess_coord() to the abi
Timothy Arceri [Wed, 6 Dec 2017 06:34:32 +0000 (17:34 +1100)]
ac/radeonsi: add load_tess_coord() to the abi

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
6 years agoradeonsi: make si_llvm_emit_tcs_epilogue compatible with emit_outputs abi
Timothy Arceri [Wed, 6 Dec 2017 06:02:30 +0000 (17:02 +1100)]
radeonsi: make si_llvm_emit_tcs_epilogue compatible with emit_outputs abi

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
6 years agoradeonsi/nir: gather tess properties
Timothy Arceri [Wed, 6 Dec 2017 05:02:34 +0000 (16:02 +1100)]
radeonsi/nir: gather tess properties

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
6 years agoac/radeonsi: add tcs_rel_ids to the abi
Timothy Arceri [Wed, 6 Dec 2017 03:36:11 +0000 (14:36 +1100)]
ac/radeonsi: add tcs_rel_ids to the abi

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
6 years agoradeonsi: add unpack_llvm_param() helper
Timothy Arceri [Wed, 6 Dec 2017 03:18:34 +0000 (14:18 +1100)]
radeonsi: add unpack_llvm_param() helper

This allows us to pass the llvm param directly rather than looking
it up.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
6 years agoac: add {tcs,tes}_patch_id to the abi
Timothy Arceri [Wed, 6 Dec 2017 02:30:33 +0000 (13:30 +1100)]
ac: add {tcs,tes}_patch_id to the abi

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
6 years agoradeonsi: add nir support for tcs outputs
Timothy Arceri [Wed, 6 Dec 2017 01:04:02 +0000 (12:04 +1100)]
radeonsi: add nir support for tcs outputs

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
6 years agoac: move some helpers to ac_llvm_build.c
Timothy Arceri [Mon, 11 Dec 2017 01:54:47 +0000 (12:54 +1100)]
ac: move some helpers to ac_llvm_build.c

We will call these from the radeonsi NIR backend.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
6 years agoac: add store_tcs_outputs() to the abi
Timothy Arceri [Wed, 6 Dec 2017 00:51:51 +0000 (11:51 +1100)]
ac: add store_tcs_outputs() to the abi

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
6 years agoradeonsi: add si_nir_load_input_tcs()
Timothy Arceri [Tue, 5 Dec 2017 01:56:12 +0000 (12:56 +1100)]
radeonsi: add si_nir_load_input_tcs()

V2: drop type param and just use ctx->i32

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
6 years agoradeonsi: add get_dw_address_from_generic_indices() helper
Timothy Arceri [Mon, 11 Dec 2017 02:14:49 +0000 (13:14 +1100)]
radeonsi: add get_dw_address_from_generic_indices() helper

This will be used by both the tgsi and nir backends.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
6 years agoac: call load_tcs_input() via the abi
Timothy Arceri [Tue, 5 Dec 2017 01:04:05 +0000 (12:04 +1100)]
ac: call load_tcs_input() via the abi

This also enables some code sharing with tes.

V2: drop type param and just use ctx->i32

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
6 years agoac: add load_tes_inputs() to the abi
Timothy Arceri [Mon, 4 Dec 2017 23:31:49 +0000 (10:31 +1100)]
ac: add load_tes_inputs() to the abi

V2: drop type param and just use ctx->i32

Reviewed-by: Marek Olšák <marek.olsak@amd.com>