mesa.git
6 years agoRevert "travis: use python3 for the autoconf builds"
Emil Velikov [Fri, 24 Aug 2018 10:10:24 +0000 (11:10 +0100)]
Revert "travis: use python3 for the autoconf builds"

This reverts commit 855af9a5a209f061355513b92f3ba4576f48d091.

Turns out the python scripts are _not_ fully python 3 compatible.
As Ilia reported using get_xmlpool.py with LANG=C produces some weird
output - see the link for details.

Even though the issue was spotted with the autoconf build, it exposes a
genuine problem with the script (and lack of lang handling of the meson
build.)

https://lists.freedesktop.org/archives/mesa-dev/2018-August/203508.html

6 years agoRevert "mesa: bump GL_MAX_ELEMENTS_INDICES and GL_MAX_ELEMENTS_VERTICES"
Kenneth Graunke [Fri, 24 Aug 2018 07:32:09 +0000 (00:32 -0700)]
Revert "mesa: bump GL_MAX_ELEMENTS_INDICES and GL_MAX_ELEMENTS_VERTICES"

This reverts commit 095515e16ca3cb2c9f1813b6602ee57ae28325a8.

This breaks KHR-GL46.map_buffer_alignment.functional on i965.

This code was apparently not reviewed and I don't know why we would
move from a driver configurable constant to a hardcoded value for all
drivers.  This really looks like an accidental hack push.

6 years agoRevert recent changes about not including compute in combined limits.
Kenneth Graunke [Fri, 24 Aug 2018 03:58:32 +0000 (20:58 -0700)]
Revert recent changes about not including compute in combined limits.

As far as I can tell, no one reviewed these changes, they made i965
assert fail on driver load, and I am not certain they are correct.
(Hopefully reverting these does not break radeonsi too badly...)

The uniform related changes seem fine and reasonable, but the texture
image units change is possibly incorrect.  According to the
OES_tessellation_shader spec issue 5:

   (5) How are aggregate shader limits computed?

    RESOLVED: Following the GL 4.4 model, but we restrict uniform
    buffer bindings to 12/stage instead of 14, this results in

        MAX_UNIFORM_BUFFER_BINDINGS = 72
            This is 12 bindings/stage * 6 shader stages, allowing a static
            partitioning of the bindings even though at most 5 stages can
            appear in a program object).
        MAX_COMBINED_UNIFORM_BLOCKS = 60
            This is 12 blocks/stage * 5 stages, since compute shaders can't
            be mixed with other stages.
        MAX_COMBINED_TEXTURE_IMAGE_UNITS = 96
            This is 16 textures/stage * 6 stages.

which definitely is including compute shaders in that last limit.
Not including compute shaders breaks the following test:
dEQP-GLES31.functional.state_query.integer.max_combined_texture_image_units_getinteger

There was enough breakage that I figured we should just send this back
to the drawing board.

Revert "i965: don't include compute resources in "Combined" limits"
Revert "st/mesa: don't include compute resources in "Combined" limits"
Revert "mesa: don't include compute resources in MAX_COMBINED_* limits"

This reverts commit b03dcb1e5f507c5950d0de053a6f76e6306ee71f.
This reverts commit cff290df4c09547cd2cb3b129ec59bdebdadba90.
This reverts commit 45f87a48f94148b484961f18a4f1ccf86f066b1c.

6 years agogallivm: don't use saturated unsigned add/sub intrinsics for llvm 8.0
Roland Scheidegger [Thu, 23 Aug 2018 17:07:05 +0000 (19:07 +0200)]
gallivm: don't use saturated unsigned add/sub intrinsics for llvm 8.0

These have been removed. Unfortunately auto-upgrade doesn't work for
jit. (Worse, it seems we don't get a compilation error anymore when
compiling the shader, rather llvm will just do a call to a null
function in the jitted shaders making it difficult to detect when
intrinsics vanish.)

Luckily the signed ones are still there, I helped convincing llvm
removing them is a bad idea for now, since while the unsigned ones have
sort of agreed-upon simplest patterns to replace them with, this is not
the case for the signed ones, and they require _significantly_ more
complex patterns - to the point that the recognition is IMHO probably
unlikely to ever work reliably in practice (due to other optimizations
interfering). (Even for the relatively trivial unsigned patterns, llvm
already added test cases where recognition doesn't work, unsaturated
add followed by saturated add may produce atrocious code.)
Nevertheless, it seems there's a serious quest to squash all
cpu-specific intrinsics going on, so I'd expect patches to nuke them as
well to resurface.

Adapt the existing fallback code to match the simple patterns llvm uses
and hope for the best. I've verified with lp_test_blend that it does
produce the expected saturated assembly instructions. Though our
cmp/select build helpers don't use boolean masks, but it doesn't seem
to interfere with llvm's ability to recognize the pattern.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106231
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
6 years agost/mesa: expose KHR_texture_compression_astc_sliced_3d
Marek Olšák [Mon, 6 Aug 2018 02:16:48 +0000 (22:16 -0400)]
st/mesa: expose KHR_texture_compression_astc_sliced_3d

This is ASTC 2D LDR allowing texture arrays and 3D, compressing each
slice as a separate 2D image. Tested by piglit. Trivial.

6 years agost/mesa: expose EXT_disjoint_timer_query
Marek Olšák [Mon, 6 Aug 2018 01:41:11 +0000 (21:41 -0400)]
st/mesa: expose EXT_disjoint_timer_query

same cap as ARB_timer_query, no changes needed, tested by piglit

6 years agomesa: expose EXT_vertex_attrib_64bit
Marek Olšák [Mon, 6 Aug 2018 06:48:12 +0000 (02:48 -0400)]
mesa: expose EXT_vertex_attrib_64bit

because the closed driver exposes it.
It's the same as the ARB extension.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
6 years agomesa: expose AMD_query_buffer_object
Marek Olšák [Mon, 6 Aug 2018 06:26:09 +0000 (02:26 -0400)]
mesa: expose AMD_query_buffer_object

it's a subset of the ARB extension.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
6 years agomesa: expose AMD_multi_draw_indirect
Marek Olšák [Mon, 6 Aug 2018 05:55:59 +0000 (01:55 -0400)]
mesa: expose AMD_multi_draw_indirect

because the closed driver exposes it.
This is equivalent to the ARB extension.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
6 years agomesa: expose AMD_gpu_shader_int64
Marek Olšák [Mon, 6 Aug 2018 04:56:35 +0000 (00:56 -0400)]
mesa: expose AMD_gpu_shader_int64

because the closed driver exposes it.

It's equivalent to ARB_gpu_shader_int64.
In this patch, I did everything the same as we do for ARB_gpu_shader_int64.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
6 years agomesa: expose ARB_post_depth_coverage in the Compatibility profile
Marek Olšák [Mon, 6 Aug 2018 05:25:51 +0000 (01:25 -0400)]
mesa: expose ARB_post_depth_coverage in the Compatibility profile

It only contains GLSL changes.

v2: allow the layout qualifier on GLSL <= 1.30

6 years agointel/nir: Enable nir_opt_find_array_copies
Jason Ekstrand [Tue, 24 Jul 2018 05:20:41 +0000 (22:20 -0700)]
intel/nir: Enable nir_opt_find_array_copies

We have to be a bit careful with this one because we want it to run in
the optimization loop but only in the first brw_nir_optimize call.
Later calls assume that we've lowered away copy_deref instructions and
we don't want to introduce any more.

Shader-db results on Kaby Lake:

    total instructions in shared programs: 15176942 -> 15176942 (0.00%)
    instructions in affected programs: 0 -> 0
    helped: 0
    HURT: 0

In spite of the lack of any shader-db improvement, this patch completely
eliminates spilling in the Batman: Arkham City tessellation shaders.
This is because we are now able to detect that the temporary array
created by DXVK for storing TCS inputs is a copy of the input arrays and
use indirect URB reads instead of making a copy of 4.5 KiB of input data
and then indirecting on it with if-ladders.

Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
6 years agonir: Add an array copy optimization
Jason Ekstrand [Tue, 24 Jul 2018 02:16:56 +0000 (19:16 -0700)]
nir: Add an array copy optimization

This peephole optimization looks for a series of load/store_deref or
copy_deref instructions that copy an array from one variable to another
and turns it into a copy_deref that copies the entire array.  The
pattern it looks for is extremely specific but it's good enough to pick
up on the input array copies in DXVK and should also be able to pick up
the sequence generated by spirv_to_nir for a OpLoad of a large composite
followed by OpStore.  It can always be improved later if needed.

Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
6 years agointel/nir: Use nir_shrink_vec_array_vars
Jason Ekstrand [Wed, 25 Jul 2018 15:54:09 +0000 (08:54 -0700)]
intel/nir: Use nir_shrink_vec_array_vars

Shader-db results on Kaby Lake:

    total instructions in shared programs: 15177605 -> 15176765 (<.01%)
    instructions in affected programs: 4259 -> 3419 (-19.72%)
    helped: 1
    HURT: 0

    total spills in shared programs: 10954 -> 10855 (-0.90%)
    spills in affected programs: 295 -> 196 (-33.56%)
    helped: 1
    HURT: 0

    total fills in shared programs: 22222 -> 22117 (-0.47%)
    fills in affected programs: 417 -> 312 (-25.18%)
    helped: 1
    HURT: 0

The helped shader is from the OglCSDof synmark test.  On my Kaby Lake
laptop, the actual framerate of the benchmark didn't appear to improve
beyond the noise.

Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
6 years agonir: Add a array-of-vector variable shrinking pass
Jason Ekstrand [Wed, 25 Jul 2018 02:32:27 +0000 (19:32 -0700)]
nir: Add a array-of-vector variable shrinking pass

This pass looks for variables with vector or array-of-vector types and
narrows the type to only the components used.

Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
6 years agointel/nir: Use the new structure and array splitting passes
Jason Ekstrand [Tue, 24 Jul 2018 17:08:20 +0000 (10:08 -0700)]
intel/nir: Use the new structure and array splitting passes

We call structure splitting once because it is guaranteed to split all
the structures in the entire shader in one go.  We call array splitting
in the loop in case future optimizations turn indirects into direct
dereferences and we can split more arrays.

Shader-db results on Kaby Lake:

    total instructions in shared programs: 15177605 -> 15177605 (0.00%)
    instructions in affected programs: 0 -> 0
    helped: 0
    HURT: 0

This is unsurprising because nir_lower_vars_to_ssa already effectively
does structure and array splitting internally.  It doesn't actually
split the variables but it's ability to reason about aliasing in the
presence of arrays and structures and pick out scalars or vectors to be
lowered to SSA values is fairly advanced.

Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
6 years agonir: Add an array splitting pass
Jason Ekstrand [Tue, 24 Jul 2018 19:33:46 +0000 (12:33 -0700)]
nir: Add an array splitting pass

This pass looks for array variables where at least one level of the
array is never indirected and splits it into multiple smaller variables.

This pass doesn't really do much now because nir_lower_vars_to_ssa can
already see through arrays of arrays and can detect indirects on just
one level or even see that arr[i][0][5] does not alias arr[i][1][j].
This pass exists to help other passes more easily see through arrays of
arrays.  If a back-end does implement arrays using scratch or indirects
on registers, having more smaller arrays is likely to have better memory
efficiency.

v2 (Jason Ekstrand):
 - Better comments and naming (some from Caio)
 - Rework to use one hash map instead of two

v2.1 (Jason Ekstrand):
 - Fix a couple of bugs that were added in the rework including one
   which basically prevented it from running

Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
6 years agonir: Add a structure splitting pass
Jason Ekstrand [Tue, 24 Jul 2018 17:08:06 +0000 (10:08 -0700)]
nir: Add a structure splitting pass

This pass doesn't really do much now because nir_lower_vars_to_ssa can
already see through structures and considers them to be "split".  This
pass exists to help other passes more easily see through structure
variables.  If a back-end does implement arrays using scratch or
indirects on registers, having more smaller arrays is likely to have
better memory efficiency.

Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
6 years agonir/types: Add array_or_matrix helpers
Jason Ekstrand [Wed, 25 Jul 2018 15:53:58 +0000 (08:53 -0700)]
nir/types: Add array_or_matrix helpers

Reviewed-by: Thomas Helland<thomashelland90@gmail.com>
6 years agoi965: don't include compute resources in "Combined" limits
Kenneth Graunke [Fri, 24 Aug 2018 00:24:19 +0000 (17:24 -0700)]
i965: don't include compute resources in "Combined" limits

The combined limits should only include shader stages that can be active
at the same time.  We don't need to include compute.

See also cff290df4c09547cd2cb3b129ec59bdebdadba90 for st/mesa.

Unbreaks i965 from assert failing on driver load since Marek's
45f87a48f94148b484961f18a4f1ccf86f066b1c, which dropped the core
Mesa capabilities before adjusting driver limits down to match.

6 years agoradeonsi: increase the maximum UBO size to 2 GB
Marek Olšák [Wed, 8 Aug 2018 19:37:21 +0000 (15:37 -0400)]
radeonsi: increase the maximum UBO size to 2 GB

Same as the closed driver.

This causes a failure in GL45-CTS.compute_shader.max, which has a trivial
bug.

Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de>
6 years agoradeonsi: bump MAX_GS_INVOCATIONS
Marek Olšák [Mon, 6 Aug 2018 12:09:52 +0000 (08:09 -0400)]
radeonsi: bump MAX_GS_INVOCATIONS

same as the closed driver

Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de>
6 years agogallium: add PIPE_CAP_MAX_SHADER_BUFFER_SIZE
Marek Olšák [Mon, 6 Aug 2018 12:38:54 +0000 (08:38 -0400)]
gallium: add PIPE_CAP_MAX_SHADER_BUFFER_SIZE

Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de>
6 years agogallium: add PIPE_CAP_MAX_GS_INVOCATIONS
Marek Olšák [Mon, 6 Aug 2018 12:07:25 +0000 (08:07 -0400)]
gallium: add PIPE_CAP_MAX_GS_INVOCATIONS

Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de>
6 years agotgsi/ureg: don't call tgsi_sanity when it's too slow
Marek Olšák [Wed, 8 Aug 2018 19:07:51 +0000 (15:07 -0400)]
tgsi/ureg: don't call tgsi_sanity when it's too slow

Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de>
6 years agost/mesa: fix up uniform limits to be able to expose large UBOs
Marek Olšák [Wed, 8 Aug 2018 19:17:26 +0000 (15:17 -0400)]
st/mesa: fix up uniform limits to be able to expose large UBOs

Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de>
6 years agost/mesa: don't include compute resources in "Combined" limits
Marek Olšák [Wed, 8 Aug 2018 19:21:05 +0000 (15:21 -0400)]
st/mesa: don't include compute resources in "Combined" limits

The combined limits should only include shader stages that can be active
at the same time.

Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de>
6 years agost/mesa: set ctx->Const.SubPixelBits
Marek Olšák [Mon, 6 Aug 2018 08:25:15 +0000 (04:25 -0400)]
st/mesa: set ctx->Const.SubPixelBits

Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de>
6 years agoglsl: fix error checking against MAX_UNIFORM_LOCATIONS
Marek Olšák [Wed, 8 Aug 2018 19:53:10 +0000 (15:53 -0400)]
glsl: fix error checking against MAX_UNIFORM_LOCATIONS

Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de>
6 years agomesa: make MaxCombinedUniformComponents 64-bit to allow large UBOs
Marek Olšák [Wed, 8 Aug 2018 20:53:03 +0000 (16:53 -0400)]
mesa: make MaxCombinedUniformComponents 64-bit to allow large UBOs

Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de>
6 years agomesa: add ctx->Const.MaxGeometryShaderInvocations
Marek Olšák [Mon, 6 Aug 2018 12:09:12 +0000 (08:09 -0400)]
mesa: add ctx->Const.MaxGeometryShaderInvocations

radeonsi wants to report a different value

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de>
6 years agomesa: don't include compute resources in MAX_COMBINED_* limits
Marek Olšák [Mon, 6 Aug 2018 12:32:23 +0000 (08:32 -0400)]
mesa: don't include compute resources in MAX_COMBINED_* limits

5 is the maximum number of shader stages that can be used by 1 execution
call at the same time (e.g. a draw call). The limit ensures that each
stage can use all of its binding points.

Compute is separate and doesn't need the 5x multiplier.

Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de>
6 years agomesa: bump GL_MAX_ELEMENTS_INDICES and GL_MAX_ELEMENTS_VERTICES
Marek Olšák [Mon, 6 Aug 2018 12:13:35 +0000 (08:13 -0400)]
mesa: bump GL_MAX_ELEMENTS_INDICES and GL_MAX_ELEMENTS_VERTICES

same number as our closed GL driver

v2: don't use MaxArrayLockSize

Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de>
6 years agomesa: remove incorrect change for EXT_disjoint_timer_query
Marek Olšák [Mon, 6 Aug 2018 01:39:00 +0000 (21:39 -0400)]
mesa: remove incorrect change for EXT_disjoint_timer_query

Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de>
6 years agoglapi: actually implement GL_EXT_robustness for GLES
Marek Olšák [Wed, 22 Aug 2018 21:28:26 +0000 (17:28 -0400)]
glapi: actually implement GL_EXT_robustness for GLES

The extension was exposed but not the functions.

This fixes:
    dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer.readn_pixels
    dEQP-GLES31.functional.debug.negative_coverage.get_error.state.get_nuniformfv
    dEQP-GLES31.functional.debug.negative_coverage.get_error.state.get_nuniformiv

Cc: 18.1 18.2 <mesa-stable@lists.freedesktop.org>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
6 years agointel/decoder: Decode SFIXED values.
Kenneth Graunke [Thu, 23 Aug 2018 08:06:53 +0000 (01:06 -0700)]
intel/decoder: Decode SFIXED values.

This lets us example SAMPLER_STATE's LOD Bias field, among other things.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
6 years agotravis: use python3 for the autoconf builds
Emil Velikov [Thu, 16 Aug 2018 12:01:05 +0000 (13:01 +0100)]
travis: use python3 for the autoconf builds

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
6 years agoconfigure: allow building with python3
Emil Velikov [Thu, 16 Aug 2018 12:59:38 +0000 (13:59 +0100)]
configure: allow building with python3

Pretty much all of the scripts are python2+3 compatible.
Check and allow using python3, while adjusting the PYTHON2 refs.

Note:
 - python3.4 is used as it's the earliest supported version
 - python3 chosen prior to python2

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Acked-by: Eric Engestrom <eric.engestrom@intel.com>
6 years agobin/git_sha1_gen.py: remove execute bit/shebang
Emil Velikov [Thu, 23 Aug 2018 13:44:19 +0000 (14:44 +0100)]
bin/git_sha1_gen.py: remove execute bit/shebang

The script is executed explicitly via the build system, that uses
PYTHON/prog_python and equivalent.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
6 years agovk/wsi: avoid reading uninitialised memory
Eric Engestrom [Tue, 17 Jul 2018 12:13:40 +0000 (13:13 +0100)]
vk/wsi: avoid reading uninitialised memory

It will be ignored by x11_swapchain_result() anyway (because reaching
the `fail` label without setting `result` means the swapchain status was
already a hard error), but the compiler still complains about reading
uninitialised memory.

While at it, drop the unused assignment right before returning.

Signed-off-by: Eric Engestrom <eric.engestrom@intel.com>
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
6 years agoegl: drop unused _EGL_BUILT_IN_DRIVER_DRI2
Eric Engestrom [Mon, 9 Jul 2018 20:15:36 +0000 (21:15 +0100)]
egl: drop unused _EGL_BUILT_IN_DRIVER_DRI2

Unused since b174a1ae720cb404738c "egl: Simplify the "driver" interface".

Signed-off-by: Eric Engestrom <eric@engestrom.ch>
Reviewed-by: Eric Anholt <eric@anholt.net>
6 years agoradv/gfx9: implement coherent shaders for VK_ACCESS_SHADER_READ_BIT
Samuel Pitoiset [Fri, 27 Jul 2018 14:14:28 +0000 (16:14 +0200)]
radv/gfx9: implement coherent shaders for VK_ACCESS_SHADER_READ_BIT

Single-sample color and single-sample depth (not stencil)
are coherent with shaders.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl
6 years agobin/install_megadrivers.py: Remove shebang and executable bit
Mathieu Bridon [Wed, 22 Aug 2018 16:58:26 +0000 (18:58 +0200)]
bin/install_megadrivers.py: Remove shebang and executable bit

Since the script is never executed directly, but launched by Meson as an
argument to the Python interpreter, those are not needed any more.

In addition, they are the reason this script was missed when I moved the
Meson buildsystem to Python 3, so removing them helps avoiding future
confusion.

Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
6 years agomeson: Run the install script with Python 3
Mathieu Bridon [Wed, 22 Aug 2018 12:09:49 +0000 (14:09 +0200)]
meson: Run the install script with Python 3

The script was being run directly as an executable, and it has a
Python 2 shebang.

Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
6 years agoglsl: remove execute bit and shebang from python tests
Emil Velikov [Fri, 17 Aug 2018 10:41:25 +0000 (11:41 +0100)]
glsl: remove execute bit and shebang from python tests

Just like the rest of the tree - these should be run either as part of
the build system check target, or at the very least with an explicitly
versioned python executable.

Fixes: db8cd8e3677 ("glcpp/tests: Convert shell scripts to a python script")
Fixes: 97c28cb0823 ("glsl/tests: Convert optimization-test.sh to pure python")
Fixes: 3b52d292273 ("glsl/tests: reimplement warnings-test in python")
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 agodocs: update required mako version
Emil Velikov [Thu, 16 Aug 2018 16:57:10 +0000 (17:57 +0100)]
docs: update required mako version

The requirement was bumped a while back, but we forgot to update the
docs.

Fixes: ed871af91c2 ("configure.ac: raise Mako required version to
0.8.0")
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 agoconfigure: use distutils in ax_check_python_mako_module
Emil Velikov [Thu, 16 Aug 2018 12:36:05 +0000 (13:36 +0100)]
configure: use distutils in ax_check_python_mako_module

Handling the version comparison by hand is a bad idea. Python has a handy
module distutils for that - use it.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Dylan Baker <dylan@pnwbakers.com>
6 years agoconfigure: enforce python 2.7 with AM_PATH_PYTHON
Emil Velikov [Thu, 16 Aug 2018 12:40:21 +0000 (13:40 +0100)]
configure: enforce python 2.7 with AM_PATH_PYTHON

Currently we use AC_CHECK_PROGS looking for python2.7, python2 and
finally python. That is due to the varying names used across the
different OS.

Use the handy AM_PATH_PYTHON which finds the correct name and checks for
the version.

Note: python2.7 has been an unofficial requirement for quite some time.
Update the docs to reflect that.

Cc: Dylan Baker <dylan@pnwbakers.com>
Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
6 years agoi965: Enable INTEL_shader_atomic_float_minmax on Gen9+
Ian Romanick [Wed, 18 Apr 2018 21:08:48 +0000 (14:08 -0700)]
i965: Enable INTEL_shader_atomic_float_minmax on Gen9+

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
6 years agoi965: Sort Gen9+ extension enables
Ian Romanick [Wed, 18 Apr 2018 21:06:27 +0000 (14:06 -0700)]
i965: Sort Gen9+ extension enables

This is a strictly alphabetic sort, as is done in extensions_table.h
There are other options.  We should pick one and document it.  Right
now, this file is chaos.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
6 years agointel/compiler: Implement untyped atomic float min, max, and compare-swap dataport...
Ian Romanick [Wed, 18 Apr 2018 21:02:33 +0000 (14:02 -0700)]
intel/compiler: Implement untyped atomic float min, max, and compare-swap dataport messages

v2: Split changes to the message type field to another patch.  Suggested
by Caio.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
6 years agointel/compiler: Expand untyped atomic message type field by a bit
Ian Romanick [Wed, 18 Apr 2018 21:02:33 +0000 (14:02 -0700)]
intel/compiler: Expand untyped atomic message type field by a bit

This is necessary for a new Gen9 message type that will be added in the
next patch.  There are also Gen8 message types that need the extra bit
(mostly for bindless).

v2: Split off from the next patch.  Suggested by Caio.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
6 years agointel/compiler: Silence unused parameter warnings
Ian Romanick [Tue, 10 Apr 2018 17:37:42 +0000 (10:37 -0700)]
intel/compiler: Silence unused parameter warnings

src/intel/compiler/brw_disasm_info.c: In function ‘nir_print_instr’:
src/intel/compiler/brw_disasm_info.c:30:61: warning: unused parameter ‘instr’ [-Wunused-parameter]
 __attribute__((weak)) void nir_print_instr(const nir_instr *instr, FILE *fp) {}
                                                             ^~~~~
src/intel/compiler/brw_disasm_info.c:30:74: warning: unused parameter ‘fp’ [-Wunused-parameter]
 __attribute__((weak)) void nir_print_instr(const nir_instr *instr, FILE *fp) {}
                                                                          ^~
src/intel/compiler/brw_disasm.c: In function ‘src_ia1’:
src/intel/compiler/brw_disasm.c:850:18: warning: unused parameter ‘_reg_file’ [-Wunused-parameter]
         unsigned _reg_file,
                  ^~~~~~~~~
src/intel/compiler/brw_fs_surface_builder.cpp: In function ‘void brw::surface_access::emit_byte_scattered_write(const brw::fs_builder&, const fs_reg&, const fs_reg&, const fs_reg&, unsigned int, unsigned int, unsigned int, brw_predicate)’:
src/intel/compiler/brw_fs_surface_builder.cpp:193:57: warning: unused parameter ‘size’ [-Wunused-parameter]
                                 unsigned dims, unsigned size,
                                                         ^~~~

v2: Update commit message.  brw_fs_generator.cpp warnings were already
fixed by another patch.  Noticed by Caio.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
6 years agonir: Add floating point atomic min, max, and compare-swap instrinsics
Ian Romanick [Wed, 18 Apr 2018 20:34:25 +0000 (13:34 -0700)]
nir: Add floating point atomic min, max, and compare-swap instrinsics

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
6 years agonir: Add floating point atomic add instrinsics
Ian Romanick [Tue, 10 Apr 2018 01:36:22 +0000 (18:36 -0700)]
nir: Add floating point atomic add instrinsics

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
6 years agoglsl: Add support for lowering shared-variable float atomics
Ian Romanick [Thu, 12 Apr 2018 00:53:22 +0000 (17:53 -0700)]
glsl: Add support for lowering shared-variable float atomics

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
6 years agoglsl: Add support for lowering SSBO float atomics
Ian Romanick [Mon, 9 Apr 2018 22:26:48 +0000 (15:26 -0700)]
glsl: Add support for lowering SSBO float atomics

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
6 years agoglsl: Add built-in functions for INTEL_shader_atomic_float_minmax
Ian Romanick [Wed, 18 Apr 2018 20:20:25 +0000 (13:20 -0700)]
glsl: Add built-in functions for INTEL_shader_atomic_float_minmax

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
6 years agomesa: Extension boilerplate for INTEL_shader_atomic_float_minmax
Ian Romanick [Wed, 18 Apr 2018 18:45:13 +0000 (11:45 -0700)]
mesa: Extension boilerplate for INTEL_shader_atomic_float_minmax

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
6 years agodocs: Initial version of INTEL_shader_atomic_float_minmax spec
Ian Romanick [Thu, 19 Apr 2018 22:35:42 +0000 (15:35 -0700)]
docs: Initial version of INTEL_shader_atomic_float_minmax spec

v2: Describe interactions with the capabilities added by
SPV_INTEL_shader_atomic_float_minmax

v3: Remove 64-bit float support.

v4: Explain NaN issues.  Explain issues with atomicMin(-0, +0) and
atomicMax(-0, +0).

v5: Fix whitespace issues noticed by Caio.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
6 years agoglsl: Add built-in functions for NV_shader_atomic_float
Ian Romanick [Thu, 29 Mar 2018 22:16:38 +0000 (15:16 -0700)]
glsl: Add built-in functions for NV_shader_atomic_float

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
6 years agomesa: Extension boilerplate for NV_shader_atomic_float
Ian Romanick [Thu, 29 Mar 2018 21:59:47 +0000 (14:59 -0700)]
mesa: Extension boilerplate for NV_shader_atomic_float

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
6 years agomeson: fix egl build for android
Gurchetan Singh [Wed, 22 Aug 2018 23:08:34 +0000 (16:08 -0700)]
meson: fix egl build for android

Haven't tested this, but we do include loader.h
in platform_android.c

Fixes: c5ec1556859b7d33637c9fad13d3473c7b2f9eb3 ("meson: wire up egl/android")
Reviewed-by: Dylan Baker <dylan@pnwbakers.com>
6 years agomeson: fix egl build for surfaceless
Gurchetan Singh [Wed, 22 Aug 2018 23:08:33 +0000 (16:08 -0700)]
meson: fix egl build for surfaceless

Without this, I get:

 > platform_surfaceless.c:38:10: fatal error: 'loader.h' file not found
 > #include "loader.h"
 >      ^~~~~~~~~~
 > 1 error generated.

Fixes: 108d257a16859898f5ce02f4759c5c58f9b8c050 ("meson: build libEGL")
Reviewed-by: Dylan Baker <dylan@pnwbakers.com>
v2: Split up patches, modify commit message (Dylan)

6 years agonir: Give end_block its own index
Caio Marcelo de Oliveira Filho [Tue, 14 Aug 2018 22:06:38 +0000 (15:06 -0700)]
nir: Give end_block its own index

Since there's no particular reason for the index to be 0, choose an
index that is not used by other block.  This is convenient when we
store "per-block" data in an array AND look for the successors
data (e.g. any kind of backwards data-flow analysis).

v2: Add a note about end_block's index. (Jason)

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
6 years agonir: Skip common instructions when comparing deref paths
Caio Marcelo de Oliveira Filho [Fri, 10 Aug 2018 23:04:04 +0000 (16:04 -0700)]
nir: Skip common instructions when comparing deref paths

Deref paths may share the same deref instructions in their chains,
e.g.

    ssa_100 = deref_var A
    ssa_101 = deref_struct "array_field" of ssa_100
    ssa_102 = deref_array "[1]" of ssa_101
    ssa_103 = deref_struct "field_a" of ssa_102
    ssa_104 = deref_struct "field_a" of ssa_103

when comparing the two last deref instructions, their paths will share
a common sequence ssa_100, ssa_101, ssa_102.  This patch skips to next
iteration if the deref instructions are the same.  Path[0] (the var)
is still handled specially, so in the case above, only ssa_101 and
ssa_102 will be skipped.

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
6 years agonir: Export deref comparison functions
Caio Marcelo de Oliveira Filho [Wed, 25 Jul 2018 18:01:24 +0000 (11:01 -0700)]
nir: Export deref comparison functions

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
6 years agoutil/dynarray: add a clone function
Caio Marcelo de Oliveira Filho [Mon, 13 Aug 2018 21:41:19 +0000 (14:41 -0700)]
util/dynarray: add a clone function

v2: Fix mem_ctx parameter type. (Thomas)

Reviewed-by: Thomas Helland <thomashelland90@gmail.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
6 years agoamd/addrlib: Fix include path for c99_compat.h
Mariusz Ceier [Wed, 22 Aug 2018 20:16:05 +0000 (22:16 +0200)]
amd/addrlib: Fix include path for c99_compat.h

Without this patch mesa doesn't compile:

In file included from ../mesa-9999/src/amd/addrlib/addrinterface.cpp:39:
../mesa-9999/src/util/macros.h:29:10: fatal error: c99_compat.h: No such file or directory
 #include "c99_compat.h"
          ^~~~~~~~~~~~~~
compilation terminated.

Fixes: 15ca5ce99a80d9ebb5ef2b1aca6ea00784931de4
       ("amd/addrlib: mark returnCode as MAYBE_UNUSED in")
Signed-off-by: Mariusz Ceier <mceier+mesa-dev@gmail.com>
Acked-by: Kai Wasserbäch <kai@dev.carbon-project.org>
Reviewed-by: Dylan Baker <dylan@pnwbakers.com>
6 years agovulkan/wsi: fix pointer-integer conversion warnings
Grazvydas Ignotas [Mon, 20 Aug 2018 21:36:58 +0000 (00:36 +0300)]
vulkan/wsi: fix pointer-integer conversion warnings

For 32bit build. Trivial.

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agoradv: use different builtin shader cache for 32bit
Grazvydas Ignotas [Mon, 20 Aug 2018 21:21:57 +0000 (00:21 +0300)]
radv: use different builtin shader cache for 32bit

Currently if 64bit and 32bit programs are used interchangeably, radv
will keep overwriting the cache. Use separate cache files to avoid
that.

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agoradv: place pointer length into cache uuid
Grazvydas Ignotas [Mon, 20 Aug 2018 21:08:54 +0000 (00:08 +0300)]
radv: place pointer length into cache uuid

Thanks to reproducible builds, binary file timestamps may be identical
for both 32bit and 64bit packages when built from the same source.
This means radv will use the same cache for both 32 and 64 bit
processes, which leads to crashes.

Conveniently there is a spare byte in cache_uuid, let's place the
pointer size there.

Fixes: f4e499ec79 "radv: add initial non-conformant radv vulkan driver"
CC: 18.1 18.2 <mesa-stable@lists.freedesktop.org>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=107601
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105904
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agollvmpipe: add cc clobber to inline asm
Grazvydas Ignotas [Wed, 25 Jul 2018 17:27:48 +0000 (20:27 +0300)]
llvmpipe: add cc clobber to inline asm

The bsr instruction modifies flags, so that needs to be indicated to the
compiler. No effect on generated code, but still needed for correctness.

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
6 years agointel/isl: Avoid tiling some 16K-wide render targets
Nanley Chery [Fri, 27 Jul 2018 22:34:05 +0000 (15:34 -0700)]
intel/isl: Avoid tiling some 16K-wide render targets

Fix rendering issues on BDW and SKL.

Fixes: 0288fe8d0417730bdd5b3477130dd1dc32bdbcd3
("i965/miptree: Use the correct BLT pitch")

Fixes the following regressions seen

exclusively on SKL:
* KHR-GL46.texture_barrier_ARB.disjoint-texels
* KHR-GL46.texture_barrier_ARB.overlapping-texels
* KHR-GL46.texture_barrier.disjoint-texels
* KHR-GL46.texture_barrier.overlapping-texels

and both on BDW and SKL:
* GTF-GL46.gtf21.GL2FixedTests.buffer_corners.buffer_corners
* GTF-GL46.gtf21.GL2FixedTests.stencil_plane_corners.stencil_plane_corners

v2: Note the fixed tests (Andres).
    Don't cause failures with multisampled buffers (Andres).
    Don't hamper SKL GT4 (Ken).
v3: Fix the Fixes tag (Dylan).

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=107359
Cc: <mesa-stable@lists.freedesktop.org>
Tested-by: Andres Gomez <agomez@igalia.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
6 years agoi965/miptree: Fix can_blit_slice()
Nanley Chery [Mon, 23 Jul 2018 17:09:20 +0000 (10:09 -0700)]
i965/miptree: Fix can_blit_slice()

Check the destination's row pitch against the BLT engine's row pitch
limitation as well.

Fixes: 0288fe8d0417730bdd5b3477130dd1dc32bdbcd3
("i965/miptree: Use the correct BLT pitch")

v2: Fix the Fixes tag (Dylan).
    Check the destination row pitch (Chris).

Reported-by: Dylan Baker <dylan@pnwbakers.com>
Cc: <mesa-stable@lists.freedesktop.org>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
6 years agoi965/miptree: Use miptree_map in map_blit functions
Nanley Chery [Fri, 17 Aug 2018 22:03:14 +0000 (15:03 -0700)]
i965/miptree: Use miptree_map in map_blit functions

This struct contains all the data of interest. can_blit_slice() will use
it in the next patch to calculate the correct pitch.

Suggested-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: <mesa-stable@lists.freedesktop.org>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
6 years agointel/tools/aubwrite: Always use physical addresses for traces.
Rafael Antognolli [Tue, 21 Aug 2018 16:49:03 +0000 (09:49 -0700)]
intel/tools/aubwrite: Always use physical addresses for traces.

It looks like we can't rely on the simulator to always translate virtual
addresses to physical ones correctly. So let's use physical everywhere.

Since our current GGTT maps virtual to physical addresses in a 1:1 way,
no further changes are required.

Additionally, we have other address spaces not in use right now. So
let's make it easier to switch which one we are using but putting the
default one into the aub_file struct.

Cc: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
6 years agointel/tools/aubwrite: Rename "legacy" to "Trace Block".
Rafael Antognolli [Tue, 21 Aug 2018 16:47:17 +0000 (09:47 -0700)]
intel/tools/aubwrite: Rename "legacy" to "Trace Block".

Hopefully it's a little more descriptive, and more accurate.

Cc: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
6 years agonir/vars_to_ssa: Don't build deref nodes for non-local variables
Jason Ekstrand [Mon, 9 Jul 2018 04:55:40 +0000 (21:55 -0700)]
nir/vars_to_ssa: Don't build deref nodes for non-local variables

Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
6 years agoac: fix WAITCNT flags for GFX9
Marek Olšák [Thu, 16 Aug 2018 01:43:32 +0000 (21:43 -0400)]
ac: fix WAITCNT flags for GFX9

Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
6 years agoamd/addrlib: mark physicalSliceSize as MAYBE_UNUSED in Addr::V1::EgBasedLib::HwlGetSi...
Kai Wasserbäch [Sat, 18 Aug 2018 10:01:14 +0000 (12:01 +0200)]
amd/addrlib: mark physicalSliceSize as MAYBE_UNUSED in Addr::V1::EgBasedLib::HwlGetSizeAdjustmentMicroTiled

Only used, when asserts are enabled.

Fixes an unused-but-set-variable warning with GCC 8:
 ../../../src/amd/addrlib/r800/egbaddrlib.cpp: In member function 'virtual long long unsigned int Addr::V1::EgBasedLib::HwlGetSizeAdjustmentMicroTiled(unsigned int, unsigned int, ADDR_SURFACE_FLAGS, unsigned int, unsigned int, unsigned int, unsigned int*, unsigned int*) const':
 ../../../src/amd/addrlib/r800/egbaddrlib.cpp:4111:13: warning: variable 'physicalSliceSize' set but not used [-Wunused-but-set-variable]
      UINT_64 physicalSliceSize;
              ^~~~~~~~~~~~~~~~~

Signed-off-by: Kai Wasserbäch <kai@dev.carbon-project.org>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
6 years agoamd/addrlib: mark numPipes as MAYBE_UNUSED in Addr::V1::EgBasedLib::SanityCheckMacroT...
Kai Wasserbäch [Tue, 21 Aug 2018 15:25:46 +0000 (17:25 +0200)]
amd/addrlib: mark numPipes as MAYBE_UNUSED in Addr::V1::EgBasedLib::SanityCheckMacroTiled (v2)

Only used, when asserts are enabled.

Fixes an unused-variable warning with GCC 8:
 ../../../src/amd/addrlib/r800/egbaddrlib.cpp: In member function 'int Addr::V1::EgBasedLib::SanityCheckMacroTiled(ADDR_TILEINFO*) const':
 ../../../src/amd/addrlib/r800/egbaddrlib.cpp:982:13: warning: unused variable 'numPipes' [-Wunused-variable]
      UINT_32 numPipes    = HwlGetPipes(pTileInfo);
              ^~~~~~~~

v2: Don't realign other variable definitions, to keep in line with file
    style (Marek)

Signed-off-by: Kai Wasserbäch <kai@dev.carbon-project.org>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
6 years agoamd/addrlib: mark *pEqToCheck as MAYBE_UNUSED in Addr::V2::Gfx9Lib::ComputeStereoInfo...
Kai Wasserbäch [Tue, 21 Aug 2018 15:25:45 +0000 (17:25 +0200)]
amd/addrlib: mark *pEqToCheck as MAYBE_UNUSED in Addr::V2::Gfx9Lib::ComputeStereoInfo (v2)

Only used, when asserts are enabled.

Fixes an unused-variable warning with GCC 8:
 ../../../src/amd/addrlib/gfx9/gfx9addrlib.cpp: In member function 'ADDR_E_RETURNCODE Addr::V2::Gfx9Lib::ComputeStereoInfo(const ADDR2_COMPUTE_SURFACE_INFO_INPUT*, ADDR2_COMPUTE_SURFACE_INFO_OUTPUT*, unsigned int*) const':
 ../../../src/amd/addrlib/gfx9/gfx9addrlib.cpp:3879:34: warning: unused variable 'pEqToCheck' [-Wunused-variable]
              const ADDR_EQUATION *pEqToCheck        = &m_equationTable[eqIndex];
                                   ^~~~~~~~~~

v2: Don't realign other variable definitions, to keep in line with file
    style (Marek)

Signed-off-by: Kai Wasserbäch <kai@dev.carbon-project.org>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
6 years agoamd/addrlib: mark microBlockDim as MAYBE_UNUSED in Addr::V2::Gfx9Lib::HwlComputeBlock...
Kai Wasserbäch [Sat, 18 Aug 2018 09:45:30 +0000 (11:45 +0200)]
amd/addrlib: mark microBlockDim as MAYBE_UNUSED in Addr::V2::Gfx9Lib::HwlComputeBlock256Equation

Only used, when asserts are enabled.

Fixes an unused-but-set-variable warning with GCC 8:
 ../../../src/amd/addrlib/gfx9/gfx9addrlib.cpp: In member function 'virtual ADDR_E_RETURNCODE Addr::V2::Gfx9Lib::HwlComputeBlock256Equation(AddrResourceType, AddrSwizzleMode, unsigned int, ADDR_EQUATION*) const':
 ../../../src/amd/addrlib/gfx9/gfx9addrlib.cpp:2473:15: warning: variable 'microBlockDim' set but not used [-Wunused-but-set-variable]
          Dim2d microBlockDim = Block256_2d[elementBytesLog2];
                ^~~~~~~~~~~~~

Signed-off-by: Kai Wasserbäch <kai@dev.carbon-project.org>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
6 years agoamd/addrlib: mark returnCode as MAYBE_UNUSED in ElemGetExportNorm
Kai Wasserbäch [Fri, 17 Aug 2018 10:14:22 +0000 (12:14 +0200)]
amd/addrlib: mark returnCode as MAYBE_UNUSED in ElemGetExportNorm

Only used, when asserts are enabled.

Fixes an unused-but-set-variable warning with GCC 8:
 ../../../src/amd/addrlib/addrinterface.cpp: In function 'int ElemGetExportNorm(ADDR_HANDLE, const ELEM_GETEXPORTNORM_INPUT*)':
 ../../../src/amd/addrlib/addrinterface.cpp:835:23: warning: variable 'returnCode' set but not used [-Wunused-but-set-variable]
      ADDR_E_RETURNCODE returnCode = ADDR_OK;
                        ^~~~~~~~~~

Signed-off-by: Kai Wasserbäch <kai@dev.carbon-project.org>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
6 years agointel: aubinator_viewer: add urb view
Lionel Landwerlin [Fri, 3 Aug 2018 09:41:01 +0000 (10:41 +0100)]
intel: aubinator_viewer: add urb view

This is available through a "Show URB" button on the 3DPRIMITIVE
instructions.

v2: Fix urb allocation end value in tooltip (Rafael)

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Rafael Antognolli <rafael.antognolli@intel.com>
6 years agointel: aubinator_viewer: store urb state during decoding
Lionel Landwerlin [Fri, 3 Aug 2018 09:40:43 +0000 (10:40 +0100)]
intel: aubinator_viewer: store urb state during decoding

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Rafael Antognolli <rafael.antognolli@intel.com>
6 years agointel: tools: add aubinator viewer
Lionel Landwerlin [Sat, 28 Jul 2018 18:13:28 +0000 (19:13 +0100)]
intel: tools: add aubinator viewer

A graphical user interface version of aubinator.
Allows you to :

   - simultaneously look at multiple points in the aub file (using all
     the goodness of the existing decoding in aubinator)

   - edit an aub file

v2: Switch from GLFW to GTK+3

v3: Fix warning when exiting

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Acked-by: Rafael Antognolli <rafael.antognolli@intel.com> (v1)
6 years agointel: tools: import ImGui
Lionel Landwerlin [Sun, 29 Jul 2018 18:32:45 +0000 (19:32 +0100)]
intel: tools: import ImGui

We want to add a new UI tool to decode aub files. This will use the
Dear ImGui library to render its interface. The build of this UI
toolkit is conditional to -Dwith_tools=intel-ui which superseeds
-Dwith_tools=intel.

The main way to use ImGui is to embed its source code at a particular
revision. Most embedding projects have to do a bit of integration
which is really specific to one's project. In our case the only
modification is to include libepoxy. We also choose to use Gtk+3 for
the window system integration. As oppose to the previous previous
version of this patch using GLFW, Gtk+ is able to handle X11/Wayland
session as well as property DPI scaling on retina monitors.

The import was done at this commit (https://github.com/ocornut/imgui) :

commit 6211f40f3d903dd9df961256e044029c49793aa3
Author: omar <omarcornut@gmail.com>
Date:   Fri Jul 27 12:29:33 2018 +0200

    Internals: Drag and Drop: default drop preview use a narrower clipping rectangle (no effect here, but other branches uses a narrow clipping rectangle that was too small so this is a fix for it) + Comments

v2: Switch from GLFW to GTK+ (Lionel)

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Acked-by: Rafael Antognolli <rafael.antognolli@intel.com>
6 years agointel: tools: aub_mem: reuse already mapped ppgtt buffers
Lionel Landwerlin [Mon, 6 Aug 2018 11:06:13 +0000 (12:06 +0100)]
intel: tools: aub_mem: reuse already mapped ppgtt buffers

When we map a PPGTT buffer into a continous address space of aubinator
to be able to inspect it, we currently add it to the list of BOs to
unmap once we're finished. An optimization we can apply it to look up
that list before trying to remap PPGTT buffers again (we already do
this for GGTT buffers).

We need to take some care before doing this because the list also
contains GGTT BOs. As GGTT & PPGTT are 2 different address spaces, we
can have matching addresses in both that point to different physical
locations.

This changes adds a flag on the elements of the list of mapped BOs to
differenciate between GGTT & PPGTT, which allows use to reuse that
list when looking up both address spaces.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Rafael Antognolli <rafael.antognolli@intel.com>
6 years agointel: tools: aubmem: map gtt data to aub file
Lionel Landwerlin [Thu, 2 Aug 2018 09:15:41 +0000 (10:15 +0100)]
intel: tools: aubmem: map gtt data to aub file

This will allow the aubinator viewer tool to modify the aub data that
was loaded at a particular gtt address.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Rafael Antognolli <rafael.antognolli@intel.com>
6 years agointel: tools: create libaub
Lionel Landwerlin [Sun, 5 Aug 2018 09:22:37 +0000 (10:22 +0100)]
intel: tools: create libaub

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
6 years agointel: tools: aubwrite: wrap function declarations for c++
Lionel Landwerlin [Sun, 29 Jul 2018 18:32:13 +0000 (19:32 +0100)]
intel: tools: aubwrite: wrap function declarations for c++

Reviewed-by: Rafael Antognolli <rafael.antognolli@intel.com>
6 years agointel: tools: split memory management out of aubinator
Lionel Landwerlin [Sun, 29 Jul 2018 00:01:36 +0000 (01:01 +0100)]
intel: tools: split memory management out of aubinator

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Rafael Antognolli <rafael.antognolli@intel.com>
6 years agoutil: rb_tree: add safe iterators
Lionel Landwerlin [Sun, 29 Jul 2018 13:13:25 +0000 (14:13 +0100)]
util: rb_tree: add safe iterators

v2: Add helper to make iterators more readable (Rafael)
    Fix rev iterator bug (Rafael)

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Rafael Antognolli <rafael.antognolli@intel.com>
6 years agointel: tools: split aub parsing from aubinator
Lionel Landwerlin [Sat, 28 Jul 2018 18:13:04 +0000 (19:13 +0100)]
intel: tools: split aub parsing from aubinator

v2: add parsing error callback (Lionel)

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Rafael Antognolli <rafael.antognolli@intel.com> (v1)
6 years agomeson: Run the test with Python 3
Mathieu Bridon [Fri, 17 Aug 2018 19:32:18 +0000 (21:32 +0200)]
meson: Run the test with Python 3

This is a patch from me and a patch from Mathieu Bridon squashed
together.

Signed-off-by: Dylan Baker <dylan@pnwbakers.com>
Reviewed-by: Dylan Baker <dylan@pnwbakers.com>
Reviewed-by: Mathieu Bridon <bochecha@daitauha.fr>
6 years agopython: Disable universal newlines
Mathieu Bridon [Fri, 17 Aug 2018 19:32:17 +0000 (21:32 +0200)]
python: Disable universal newlines

We are testing the behaviour of a tool, for different input files, each
one using a different newline sequence. ('\n' on UNIX, '\r\n' on
Windows, …)

Unfortunately, when opening a file in text mode, Python 3 will by
default enable the "universal newlines" mode, which means it replaces
all the known newline sequences by '\n'.

This (usually useful) behaviour breaks the tests, which are specifically
trying to handle files with newline sequences different from '\n'.

Disabling the universal newlines mode fixes the tests.

However, to keep the script compatible with both Python 2 and 3, we must
use the io.open() function instead of the open() builtin, as the latter
only knows about the `newline` argument on Python 3.

Reviewed-by: Dylan Baker <dylan@pnwbakers.com>
6 years agopython: difflib prefers unicode strings
Mathieu Bridon [Fri, 17 Aug 2018 19:32:16 +0000 (21:32 +0200)]
python: difflib prefers unicode strings

Python 3 does not automatically convert from bytes to unicode strings
like Python 2 used to do.

This commit makes sure we pass unicode strings to difflib.unified_diff,
so that the script works on both Python 2 and 3.

Reviewed-by: Dylan Baker <dylan@pnwbakers.com>
6 years agocompiler/glsl/tests: Make tests python3 safe
Dylan Baker [Thu, 16 Aug 2018 21:17:24 +0000 (14:17 -0700)]
compiler/glsl/tests: Make tests python3 safe

v2: - explicitly decode the output of subprocesses
    - handle bytes and string types consistently rather than relying on
      python 2's coercion for bytes and ignoring them in python 3
v3: - explicitly set encode as well as decode
    - python 2.7 and 3.x `bytes` instead of defining an alias

Reviewed-by: Mathieu Bridon <bochecha@daitauha.fr>