mesa.git
5 years agointel/eu/gen12: Implement indirect region binary encoding.
Francisco Jerez [Fri, 9 Nov 2018 22:13:34 +0000 (14:13 -0800)]
intel/eu/gen12: Implement indirect region binary encoding.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
5 years agointel/eu/gen12: Implement SEND instruction binary encoding.
Francisco Jerez [Sat, 24 Aug 2019 22:28:08 +0000 (15:28 -0700)]
intel/eu/gen12: Implement SEND instruction binary encoding.

v2: Fix off-by-one upper GET_BITS() bound, combine 25-29 and 30-31
    descriptor fields (Ken).  Shorten name of GEN12_MD() macro, drop
    some removed TS message descriptor fields (Jordan).

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
5 years agointel/eu/gen12: Implement control flow instruction binary encoding.
Francisco Jerez [Fri, 23 Aug 2019 01:14:12 +0000 (18:14 -0700)]
intel/eu/gen12: Implement control flow instruction binary encoding.

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
5 years agointel/eu/gen12: Implement three-source instruction binary encoding.
Francisco Jerez [Sun, 25 Aug 2019 01:12:43 +0000 (18:12 -0700)]
intel/eu/gen12: Implement three-source instruction binary encoding.

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
5 years agointel/eu/gen12: Implement basic instruction binary encoding.
Francisco Jerez [Sat, 24 Aug 2019 05:49:08 +0000 (22:49 -0700)]
intel/eu/gen12: Implement basic instruction binary encoding.

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
5 years agointel/eu/gen12: Add sanity-check asserts to brw_inst_bits() and brw_inst_set_bits().
Francisco Jerez [Fri, 9 Nov 2018 22:13:35 +0000 (14:13 -0800)]
intel/eu/gen12: Add sanity-check asserts to brw_inst_bits() and brw_inst_set_bits().

These caught a few bugs during the development of this series.

Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
5 years agointel/eu/gen12: Extend brw_inst.h macros for Gen12 support.
Francisco Jerez [Fri, 23 Aug 2019 00:52:11 +0000 (17:52 -0700)]
intel/eu/gen12: Extend brw_inst.h macros for Gen12 support.

The encoding of almost every instruction field has changed in Gen12,
so this involves adding a Gen12+ bitfield spec to every brw_inst
macro.  In addition some new macros are required to handle certain
discontiguous and variable-length fields.

This commit doesn't actually include the Gen12 updated bitfield specs,
only the macros are extended here for reviewability.

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
v2: Rename FDC() to FFDC() and FDC1() to FDC() for consistency with
    the existing F() and FF() macros.

5 years agointel/ir: Represent physical edge of unconditional CONTINUE instruction.
Francisco Jerez [Fri, 27 Sep 2019 21:50:00 +0000 (14:50 -0700)]
intel/ir: Represent physical edge of unconditional CONTINUE instruction.

This edge doesn't exist in the original scalar program, but it
represents a potential control flow path the EU will take in cases
where control flow isn't uniform across channels of the same SIMD
thread.

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
5 years agointel/ir: Represent physical edge of ELSE instruction.
Francisco Jerez [Fri, 27 Sep 2019 21:49:42 +0000 (14:49 -0700)]
intel/ir: Represent physical edge of ELSE instruction.

This edge doesn't exist in the original scalar program, but it
represents a potential control flow path the EU will take in cases
where the condition isn't uniform across channels of the same SIMD
thread.

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
5 years agointel/ir: Represent logical edge of BREAK instruction.
Francisco Jerez [Tue, 6 Aug 2019 01:21:05 +0000 (18:21 -0700)]
intel/ir: Represent logical edge of BREAK instruction.

Currently only the physical back-edge is represented, which
incidentally also leads to the exit block of the loop, but we need the
direct logical edge in addition for our logical CFG representation to
be complete.

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
5 years agointel/ir: Add helper function to push block onto CFG analysis stack.
Francisco Jerez [Fri, 27 Sep 2019 21:49:14 +0000 (14:49 -0700)]
intel/ir: Add helper function to push block onto CFG analysis stack.

Requested-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
5 years agointel/ir: Represent physical and logical subsets of the CFG.
Francisco Jerez [Tue, 6 Aug 2019 00:36:40 +0000 (17:36 -0700)]
intel/ir: Represent physical and logical subsets of the CFG.

This represents two control flow graphs in the same cfg_t data
structure: The physical CFG that will include all possible control
flow paths the EU can physically take, and the logical CFG restricted
to the control flow paths that exist in the original scalar program.
The latter is a subset of the former because in case of divergence the
SIMD vectorized program will take control flow paths that aren't part
of the original scalar program.

The bblock_link constructor and bblock_t::add_successor() now take a
"kind" parameter that specifies whether the edge is purely physical or
whether it's part of both the logical and physical CFGs (a logical
edge is of course always guaranteed to be in the physical CFG as
well).  bblock_t::is_predecessor_of() and ::is_successor_of() also
take a kind parameter specifying which CFG is being queried.  The '~>'
notation will be used now in order to represent purely physical edges
in IR dumps.

This commit doesn't actually add nor remove any edges from the CFG
(the only edges marked as purely physical here are the two WHILE loop
ones that already existed).  Optimization passes should continue using
the same (incomplete) physical CFG they were using before until
they're fixed to do something smarter in a later commit, so this
shouldn't lead to any functional changes.

v2: Remove tabs from lines changed in this file (Caio).

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
5 years agointel/ir: Drop hard-coded correspondence between IR and HW opcodes.
Francisco Jerez [Wed, 24 Jan 2018 03:38:45 +0000 (19:38 -0800)]
intel/ir: Drop hard-coded correspondence between IR and HW opcodes.

Having the IR opcodes locked to their hardware representation is risky
because it causes opcodes as different as BRC and IFF to compare equal
at the IR level (luckily the back-end only ever uses one opcode from
each group, right now), and it prevents us from supporting
instructions that change their hardware representation across
generations, which will become a problem on Gen12+ platforms.

Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
5 years agointel/eu: Encode and decode native instruction opcodes from/to IR opcodes.
Francisco Jerez [Wed, 24 Jan 2018 03:23:20 +0000 (19:23 -0800)]
intel/eu: Encode and decode native instruction opcodes from/to IR opcodes.

Change brw_inst_set_opcode() and brw_inst_opcode() to call
brw_opcode_encode/decode() transparently in order to translate between
hardware and IR opcodes, and update the EU compaction code in order to
do the same as needed, so we can eventually drop the one-to-one
correspondence between hardware and IR opcodes.

Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
5 years agointel/eu: Rework opcode description tables to allow efficient look-up by either HW...
Francisco Jerez [Mon, 11 Jun 2018 19:54:17 +0000 (12:54 -0700)]
intel/eu: Rework opcode description tables to allow efficient look-up by either HW or IR opcode.

This rewrites the current opcode description tables as a more compact
flat data structure.  The purpose is to allow efficient constant-time
look-up by either HW or IR opcode, which will allow us to drop the
hard-coded correspondence between HW and IR opcodes -- See the next
commits for the rationale.

brw_eu.c is now built as C++ source so we can take advantage of
pointers to member in order to make the look-up function work
regardless of the opcode_desc member used as look-up key.

v2: Optimize devinfo struct comparison (Caio)

Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
5 years agointel/eu: Fix up various type conversions in brw_eu.c that are illegal C++.
Francisco Jerez [Thu, 7 Jun 2018 22:32:15 +0000 (15:32 -0700)]
intel/eu: Fix up various type conversions in brw_eu.c that are illegal C++.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
5 years agointel/eu: Split brw_inst ex_desc accessors for SEND(C) vs. SENDS(C).
Francisco Jerez [Wed, 6 Feb 2019 07:22:06 +0000 (23:22 -0800)]
intel/eu: Split brw_inst ex_desc accessors for SEND(C) vs. SENDS(C).

The brw_inst opcode accessors are going away in one of the following
commits.  We could potentially replace them with the new helpers that
do opcode remapping, but that would lead to a circular dependency
between brw_inst.h and brw_eu.h.  This way we also avoid ordering
issues that can cause the semantics of the ex_desc accessors to change
depending on whether the ex_desc field is set after or before the
opcode instruction field.

Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
5 years agointel/fs: Fix constness of implied_mrf_writes() argument.
Francisco Jerez [Fri, 9 Nov 2018 22:13:37 +0000 (14:13 -0800)]
intel/fs: Fix constness of implied_mrf_writes() argument.

Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
5 years agointel/fs: Define is_send() convenience IR helper.
Francisco Jerez [Mon, 26 Aug 2019 07:12:26 +0000 (00:12 -0700)]
intel/fs: Define is_send() convenience IR helper.

Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
5 years agointel/fs: Define is_payload() method of the IR instruction class.
Francisco Jerez [Fri, 9 Nov 2018 22:13:37 +0000 (14:13 -0800)]
intel/fs: Define is_payload() method of the IR instruction class.

This is required because SEND message payload sources are fetched
asynchronously by the hardware, which can lead to WaR data corruption
on Gen12+ platforms if not handled specially by the compiler to
guarantee proper synchronization.

Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
5 years agointel/fs: Teach fs_inst::is_send_from_grf() about some missing send-like instructions.
Francisco Jerez [Sat, 27 Apr 2019 00:11:42 +0000 (17:11 -0700)]
intel/fs: Teach fs_inst::is_send_from_grf() about some missing send-like instructions.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
5 years agonir/dead_cf: Remove dead control flow after infinite loops.
Bas Nieuwenhuizen [Fri, 11 Oct 2019 12:49:05 +0000 (14:49 +0200)]
nir/dead_cf: Remove dead control flow after infinite loops.

And after discard-only loops. Otherwise we end up with dead code
which confuses nir_repair_ssa into adding a whole bunch of uses
of undefined. However, for derefs, we sometimes always expect to
get a variable instead of undefined.

Fixes dEQP-VK.graphicsfuzz.write-red-in-loop-nest on radv.

Fixes: c832820ce95 "nir/dead_cf: Repair SSA if the pass makes progress"
Closes: https://gitlab.freedesktop.org/mesa/mesa/issues/1928
Reviewed-by: Connor Abbott <cwabbott0@gmail.com>
5 years agoaco: don't use p_as_uniform for vgpr sampler/image indices
Rhys Perry [Sat, 21 Sep 2019 14:33:44 +0000 (15:33 +0100)]
aco: don't use p_as_uniform for vgpr sampler/image indices

p_as_uniform can get CSE'd, which can be incorrect and break some
dEQP-VK.descriptor_indexing.* tests.

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
5 years agoaco: implement divergent vulkan_resource_index
Rhys Perry [Sat, 21 Sep 2019 13:22:40 +0000 (14:22 +0100)]
aco: implement divergent vulkan_resource_index

Fixes the UBO/SSBO dEQP-VK.descriptor_indexing.* tests

v2: remove bld.copy() usage

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
5 years agoaco: readfirstlane vgpr pointers in convert_pointer_to_64_bit()
Rhys Perry [Sat, 21 Sep 2019 10:48:27 +0000 (11:48 +0100)]
aco: readfirstlane vgpr pointers in convert_pointer_to_64_bit()

This can happen when bcsel is used between the results of two
vulkan_resource_index. It's also probably needed for non-uniform
descriptor indexing

Fixes dEQP-VK.spirv_assembly.instruction.compute.variable_pointers.compute.reads_opselect_two_buffers

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
5 years agoaco: use can_accept_constant in valu_can_accept_literal
Rhys Perry [Tue, 24 Sep 2019 12:36:16 +0000 (13:36 +0100)]
aco: use can_accept_constant in valu_can_accept_literal

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
5 years agoaco: don't apply sgprs/constants to read/write lane instructions
Rhys Perry [Tue, 24 Sep 2019 12:32:56 +0000 (13:32 +0100)]
aco: don't apply sgprs/constants to read/write lane instructions

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
5 years agonir/lower_input_attachments: pass on non-uniform access flag
Rhys Perry [Sat, 21 Sep 2019 14:50:25 +0000 (15:50 +0100)]
nir/lower_input_attachments: pass on non-uniform access flag

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
5 years agonir/lower_non_uniform: lower image/texture instructions taking derefs
Rhys Perry [Sat, 21 Sep 2019 14:49:18 +0000 (15:49 +0100)]
nir/lower_non_uniform: lower image/texture instructions taking derefs

v2: always assert on the texture/sampler handle's num_components
v3: replicate the deref inside the loop
v4: remove a case of useless line wrapping

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
5 years agoetnaviv: rework etna_resource_create tiling choice
Jonathan Marek [Wed, 24 Jul 2019 14:35:46 +0000 (10:35 -0400)]
etnaviv: rework etna_resource_create tiling choice

Now that the base resource is allowed to be incompatible with PE, we can
make a smarter choice of tiling mode to avoid allocating a PE compatible
base that is never used for regular textures. This affects GPUs like GC2000
where there is no tiling compatible with both PE and TE.

Signed-off-by: Jonathan Marek <jonathan@marek.ca>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
5 years agoetnaviv: rework compatible render base
Jonathan Marek [Sat, 10 Aug 2019 21:00:32 +0000 (17:00 -0400)]
etnaviv: rework compatible render base

For PE-incompatible layouts, use a mechanism similar to what texture does
to create a compatible base resource.

Signed-off-by: Jonathan Marek <jonathan@marek.ca>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
5 years agoetnaviv: get addressing mode from tiling layout
Jonathan Marek [Sat, 10 Aug 2019 20:44:07 +0000 (16:44 -0400)]
etnaviv: get addressing mode from tiling layout

Remove the "addressing_mode" state, which is currently set incorrectly, and
instead deduce the addressing mode from the tiling layout.

Signed-off-by: Jonathan Marek <jonathan@marek.ca>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
5 years agoetnaviv: clear texture cache and flush ts when texture is modified
Jonathan Marek [Tue, 2 Jul 2019 17:34:02 +0000 (13:34 -0400)]
etnaviv: clear texture cache and flush ts when texture is modified

Signed-off-by: Jonathan Marek <jonathan@marek.ca>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
5 years agoetnaviv: output the same shader-db format as freedreno, v3d and intel
Christian Gmeiner [Sat, 5 Oct 2019 12:53:46 +0000 (14:53 +0200)]
etnaviv: output the same shader-db format as freedreno, v3d and intel

This lets us reuse their report.py.

Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Reviewed-by: Jonathan Marek <jonathan@marek.ca>
5 years agoetnaviv: nir: start to make use of compile_error(..)
Christian Gmeiner [Thu, 3 Oct 2019 20:14:20 +0000 (22:14 +0200)]
etnaviv: nir: start to make use of compile_error(..)

Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Reviewed-by: Jonathan Marek <jonathan@marek.ca>
5 years agogitlab-ci: Disable meson-mingw32-x86_64 job again for now
Michel Dänzer [Fri, 11 Oct 2019 09:10:01 +0000 (11:10 +0200)]
gitlab-ci: Disable meson-mingw32-x86_64 job again for now

The wrapdb.mesonbuild.com SSL certificate expired, causing the job to
fail: https://gitlab.freedesktop.org/mesa/mesa/-/jobs/731864

Switching to http:// doesn't avoid it:
https://gitlab.freedesktop.org/daenzer/mesa/-/jobs/732043

5 years agogitlab-ci: Add .use-debian-10 template
Michel Dänzer [Thu, 10 Oct 2019 13:27:17 +0000 (15:27 +0200)]
gitlab-ci: Add .use-debian-10 template

It simplifies the definitions of jobs using the Debian 10 image.

The needs: was previously missing from the llvmpipe/softpipe test jobs,
so they could spuriously run if the debian-10 job failed or was
cancelled.

Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
5 years agogitlab-ci: Remove redundant .meson-cross template script
Michel Dänzer [Tue, 8 Oct 2019 13:58:27 +0000 (15:58 +0200)]
gitlab-ci: Remove redundant .meson-cross template script

It was identical to the one inherited from the .meson-build template.

Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
5 years agogallivm: fix coroutines on aarch64 with llvm 8
Dave Airlie [Thu, 10 Oct 2019 03:27:30 +0000 (13:27 +1000)]
gallivm: fix coroutines on aarch64 with llvm 8

The coroutine split pass is missing a dependency before LLVM 9.0,
and fails to initialise properly if the CallGraphWrapperPass hasn't
be initialised earlier (x86 does it due to some of it's passes
requiring it).

This is a workaround for llvm 8 (coroutines are only supported in 8
and higher). It adds another pass that has a dependency on the pass
the coroutines split requires. This pass shouldn't have any raal
effects.

Fixes: d32690b43c9 (gallivm: add coroutine pass manager support)
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
5 years agollvmpipe: add support for tg4 component selection.
Dave Airlie [Wed, 9 Oct 2019 03:12:31 +0000 (13:12 +1000)]
llvmpipe: add support for tg4 component selection.

This is needed as part of GLES3.1 and helps for ARB_gpu_shader5.

Fixes: KHR-GLES31.core.texture_gather.* cases
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
5 years agost/glsl: add support for alternate TG4 encoding.
Dave Airlie [Wed, 9 Oct 2019 03:09:00 +0000 (13:09 +1000)]
st/glsl: add support for alternate TG4 encoding.

This will encode the component selection value (0, 1, 2, 3) into
the X swizzle of the sampler, if the driver requests it.

Signed-off-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
5 years agogallium: add a a new cap for changing the TGSI TG4 instruction encoding
Dave Airlie [Wed, 9 Oct 2019 03:07:04 +0000 (13:07 +1000)]
gallium: add a a new cap for changing the TGSI TG4 instruction encoding

Accessing the TG4 component via immediates in the llvmpipe backend is quite
messy (like really messy). Roland suggested we change the instruction encoding,
so introduce a cap to allow the component to be selected to be store in the
sampler swizzle, which should be otherwise unused.

I could probably switch all drivers over, but virgl would need some work that
I'd prefer not to rush it.

Signed-off-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
5 years agogallivm/sample: add gather component selection to the key.
Dave Airlie [Fri, 30 Aug 2019 00:30:00 +0000 (10:30 +1000)]
gallivm/sample: add gather component selection to the key.

This allows for component selection to work as per ARB_gpu_shader5/GLES3.1

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
5 years agollvmpipe: increase max texture size to 2GB
Roland Scheidegger [Thu, 10 Oct 2019 18:10:34 +0000 (20:10 +0200)]
llvmpipe: increase max texture size to 2GB

The 1GB limit was arbitrary, increase this to 2GB (which is the max
possible without code changes).

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
5 years agogitlab-ci: Add a mingw x86_64 job
Dylan Baker [Thu, 19 Sep 2019 17:21:51 +0000 (10:21 -0700)]
gitlab-ci: Add a mingw x86_64 job

Acked-by: Eric Engestrom <eric.engestrom@intel.com> (v1)
Acked-by: Kristian H. Kristensen <hoegsberg@google.com>
5 years agoappveyor: Add support for meson as well as scons on windows
Dylan Baker [Wed, 23 Jan 2019 22:21:26 +0000 (14:21 -0800)]
appveyor: Add support for meson as well as scons on windows

This job uses the vs2017 backend of meson (msbuild) as opposed to the
ninja backend used on MacOS and Linux.

v7: - rebase on master
    - remove llvm (we'll add that back later)
    - remove cygwin (we'll add that back later too)
v6: - rebase on master, including the addition of cygwin
    - consolidate 3 appveyor patches into this one patch
v5  - use the new b_vscrt option instead of manually specifying the crt
v4: - rebase on python3 generators
    - cache meson wraps
    - Build x86 instead of x86_64, since that's what the pre-built LLVM
      is
    - update to vs2017 from vs2015
    - set the default-library to static
    - use the new vscrt override
    - add the /m switch to msbuild to make the build somewhat faster

Acked-by: Kristian H. Kristensen <hoegsberg@google.com>
5 years agodocs: update meson docs for windows
Dylan Baker [Tue, 11 Jun 2019 18:25:31 +0000 (11:25 -0700)]
docs: update meson docs for windows

Acked-by: Kristian H. Kristensen <hoegsberg@google.com>
5 years agoglsl/tests: Handle no-exec errors
Dylan Baker [Mon, 7 Oct 2019 20:03:58 +0000 (13:03 -0700)]
glsl/tests: Handle no-exec errors

Currently meson doesn't correctly handle passing compiled binaries to
scripts in tests. This patch looks to the future (0.53) when meson will
have this functionality, but also immediately it fixes these tests in
cross compiles by causing them to return 77, which meson interprets as
skip.

Acked-by: Kristian H. Kristensen <hoegsberg@google.com>
5 years agomeson/util: Don't run string_buffer tests on mingw
Dylan Baker [Tue, 8 Oct 2019 20:38:01 +0000 (13:38 -0700)]
meson/util: Don't run string_buffer tests on mingw

They succeed with MSVC but not with MinGW. I don't understand why they
fail.

Acked-by: Kristian H. Kristensen <hoegsberg@google.com>
5 years agomeson: glcpp tests are expected to fail on windows
Dylan Baker [Fri, 20 Sep 2019 20:09:54 +0000 (13:09 -0700)]
meson: glcpp tests are expected to fail on windows

v2: - Exclude the tests rather than xfail them

Acked-by: Kristian H. Kristensen <hoegsberg@google.com>
5 years agomeson: only build timspec test if timespec is available
Dylan Baker [Fri, 20 Sep 2019 19:19:52 +0000 (12:19 -0700)]
meson: only build timspec test if timespec is available

Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
Acked-by: Kristian H. Kristensen <hoegsberg@google.com>
5 years agomeson: don't error on formaters with mingw
Dylan Baker [Thu, 27 Jun 2019 21:52:40 +0000 (14:52 -0700)]
meson: don't error on formaters with mingw

MSVC is generally happy, but mingw errors. I've spent as much time
(several days) trying to squash all of these warnings and I'm done with
it, just leave them as warnings with MinGW.

Acked-by: Kristian H. Kristensen <hoegsberg@google.com>
5 years agomeson: add msvc compat args to swr
Dylan Baker [Tue, 29 Jan 2019 00:07:20 +0000 (16:07 -0800)]
meson: add msvc compat args to swr

This has always been present in the scons build, so it should be in
the meson build as well.

Acked-by: Eric Engestrom <eric.engestrom@intel.com>
Acked-by: Kristian H. Kristensen <hoegsberg@google.com>
5 years agomeson: maintain names of shared API libraries
Dylan Baker [Tue, 10 Jul 2018 18:09:27 +0000 (11:09 -0700)]
meson: maintain names of shared API libraries

Mesa uses the lib prefix, and doesn't use a version for it's dynamic
libraries, which meson defaults to.

v2: - this patch

Acked-by: Eric Engestrom <eric.engestrom@intel.com>
Acked-by: Kristian H. Kristensen <hoegsberg@google.com>
5 years agomeson: don't build or run mesa-sha1 test on windows
Dylan Baker [Wed, 23 May 2018 00:32:21 +0000 (17:32 -0700)]
meson: don't build or run mesa-sha1 test on windows

It crashes hard (pop-up window and all).

v2: - Change comment to FIXME

Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
Acked-by: Kristian H. Kristensen <hoegsberg@google.com>
5 years agomeson: disable graw tests on mingw
Dylan Baker [Wed, 23 May 2018 00:22:45 +0000 (17:22 -0700)]
meson: disable graw tests on mingw

I can't figure out why symbols are being exposed that shouldn't.

v2: - change comment to FIXME

Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
Acked-by: Kristian H. Kristensen <hoegsberg@google.com>
5 years agomeson: don't build gallium trivial tests on windows
Dylan Baker [Wed, 23 May 2018 00:06:35 +0000 (17:06 -0700)]
meson: don't build gallium trivial tests on windows

They require the pipe-loaders, which require xmlconfig, which doesn't
build with msvc.

Acked-by: Eric Engestrom <eric.engestrom@intel.com>
Acked-by: Kristian H. Kristensen <hoegsberg@google.com>
5 years agomeson: Set visibility and compat args for graw
Dylan Baker [Wed, 23 May 2018 00:06:09 +0000 (17:06 -0700)]
meson: Set visibility and compat args for graw

Acked-by: Eric Engestrom <eric.engestrom@intel.com>
Acked-by: Kristian H. Kristensen <hoegsberg@google.com>
5 years agomeson: Add msvc compat args to util/tests
Dylan Baker [Tue, 22 May 2018 22:00:35 +0000 (15:00 -0700)]
meson: Add msvc compat args to util/tests

To keep this building with msvc

Acked-by: Eric Engestrom <eric.engestrom@intel.com>
Acked-by: Kristian H. Kristensen <hoegsberg@google.com>
5 years agomeson: Add idep_getopt for tests
Dylan Baker [Tue, 22 May 2018 21:57:14 +0000 (14:57 -0700)]
meson: Add idep_getopt for tests

There are quite a few tests that require getopt, when using MSVC we need
to use the bundled version of getopt since there isn't a system version.

Acked-by: Kristian H. Kristensen <hoegsberg@google.com>
5 years agomeson: don't define USE_ELF_TLS for windows
Dylan Baker [Tue, 22 May 2018 21:08:36 +0000 (14:08 -0700)]
meson: don't define USE_ELF_TLS for windows

Because the macros for exporting dll symbols and using TLS are mutually
exclusive.

Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
Acked-by: Kristian H. Kristensen <hoegsberg@google.com>
5 years agomeson: add switches for SWR with MSVC
Dylan Baker [Tue, 22 May 2018 17:54:12 +0000 (10:54 -0700)]
meson: add switches for SWR with MSVC

This makes two changes for SWR,

The first is that it reorders the arguments to try to put the ICL ones
first. This is required to support older versions of meson that don't
add enough "error in this case" switches to ICL, which causes it to
happy accept -mavx (for example) even though it doesn't support them,
resulting in compilation failures.

The second is to fix the names of the libraries, setting the soversion
to '' will result in <lib>.dll, instead of <lib>-0.dll. Since these are
not versioned dll's, but implement an internal API we should communicate
that. It's also what scons does.

Acked-by: Kristian H. Kristensen <hoegsberg@google.com>
5 years agomeson: disable sse4.1 optimizations with msvc
Dylan Baker [Thu, 17 May 2018 21:45:10 +0000 (14:45 -0700)]
meson: disable sse4.1 optimizations with msvc

There isn't an obvious command line switch here, /arch:AVX *might* be
the right thing, but meson doesn't know what to do here either and
leaves the -msse4.1 and -mstackrealign.

Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
Acked-by: Kristian H. Kristensen <hoegsberg@google.com>
5 years agomeson: force inclusion of inttypes.h for glcpp with msvc
Dylan Baker [Wed, 23 May 2018 17:05:20 +0000 (10:05 -0700)]
meson: force inclusion of inttypes.h for glcpp with msvc

Because we provide a copy if MSVC doesn't, and we need it to make flex
do what we want.

Acked-by: Kristian H. Kristensen <hoegsberg@google.com>
5 years agomeson: Add support for using win_flex and win_bison on windows
Dylan Baker [Thu, 17 May 2018 20:42:50 +0000 (13:42 -0700)]
meson: Add support for using win_flex and win_bison on windows

Acked-by: Kristian H. Kristensen <hoegsberg@google.com>
5 years agomeson: don't look for rt on windows
Dylan Baker [Thu, 17 May 2018 20:32:12 +0000 (13:32 -0700)]
meson: don't look for rt on windows

v6: - Minor refactor

Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
Acked-by: Kristian H. Kristensen <hoegsberg@google.com>
5 years agomeson: fix pipe-loader compilation for windows
Dylan Baker [Thu, 17 May 2018 18:52:26 +0000 (11:52 -0700)]
meson: fix pipe-loader compilation for windows

v2: - Add missing D to pound define
    - Simply define the variable rather than set it to 1 (mirrors
      android.mk not scons)

Acked-by: Kristian H. Kristensen <hoegsberg@google.com>
5 years agoutil/xmlconfig: include strndup.h for windows
Dylan Baker [Thu, 17 May 2018 18:33:35 +0000 (11:33 -0700)]
util/xmlconfig: include strndup.h for windows

Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
Acked-by: Kristian H. Kristensen <hoegsberg@google.com>
5 years agomeson: Don't check for posix_memalign on windows
Dylan Baker [Wed, 18 Apr 2018 20:54:12 +0000 (13:54 -0700)]
meson: Don't check for posix_memalign on windows

There's a mingw bug for this, it exports __builtin_posix_memalign but
not posix_memalign, so the check will succeed, but compiling will fail.

Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
Acked-by: Kristian H. Kristensen <hoegsberg@google.com>
5 years agomeson: fix gallium-osmesa to build for windows
Dylan Baker [Wed, 18 Apr 2018 20:29:26 +0000 (13:29 -0700)]
meson: fix gallium-osmesa to build for windows

v2: - set so_version to '' (only affects windows)
    - always set lib prefix to 'lib', even on msvc
v5: - key NO_EXPORTS on shared glapi instead of gles.

Acked-by: Kristian H. Kristensen <hoegsberg@google.com>
5 years agomeson: build graw-gdi target
Dylan Baker [Wed, 18 Apr 2018 20:29:04 +0000 (13:29 -0700)]
meson: build graw-gdi target

Acked-by: Kristian H. Kristensen <hoegsberg@google.com>
5 years agomeson: build libgl-gdi target
Dylan Baker [Wed, 18 Apr 2018 20:28:38 +0000 (13:28 -0700)]
meson: build libgl-gdi target

v4: - Fix check for broken mingw (should be for x86 not x86_64)
    - Add comment about why check is needed

Acked-by: Kristian H. Kristensen <hoegsberg@google.com>
5 years agomeson: build wgl state tracker
Dylan Baker [Wed, 18 Apr 2018 20:28:04 +0000 (13:28 -0700)]
meson: build wgl state tracker

v4: - Handle enable gles properly
    - Add comments about what various #defines do
v5: - key NO_EXPORTS on shared glapi instead of gles.

Acked-by: Kristian H. Kristensen <hoegsberg@google.com>
5 years agomeson: build gallium gdi winsys
Dylan Baker [Wed, 18 Apr 2018 20:27:13 +0000 (13:27 -0700)]
meson: build gallium gdi winsys

v6: - use null_dep instead of []

Reviewed-by: Eric Anholt <eric@anholt.net> (v5)
Acked-by: Kristian H. Kristensen <hoegsberg@google.com>
5 years agomeson: Add necessary defines for mesa_gallium on windows
Dylan Baker [Wed, 18 Apr 2018 20:23:48 +0000 (13:23 -0700)]
meson: Add necessary defines for mesa_gallium on windows

v4: - Retain scons comments for windows specific defines
v5: - key GLAPI_NO_EXPORTS off of shared-glapi instead of gles

Acked-by: Kristian H. Kristensen <hoegsberg@google.com>
5 years agomeson: Add windows defines to glapi
Dylan Baker [Wed, 18 Apr 2018 20:22:35 +0000 (13:22 -0700)]
meson: Add windows defines to glapi

These are needed to control the export or symbols due to differences
between the way windows and *nix handle symbol exports.

Reviewed-by: Eric Anholt <eric@anholt.net> (v2)
Acked-by: Kristian H. Kristensen <hoegsberg@google.com>
v5: - key NO_EXPORT off of shared-glapi instead of gles

5 years agomeson: add windows compiler checks and libraries
Dylan Baker [Wed, 18 Apr 2018 20:19:54 +0000 (13:19 -0700)]
meson: add windows compiler checks and libraries

v4: - Fix typo in warning code (4246 -> 4267)
    - Copy comments from scons for what MSVC warnings codes do
    - Merge linker argument changes into this commit
v5: - Add /GR- on windows if LLVM is build without rtti (equivalent to
      GCc's -fno-rtti')
    - Add /wd4291, which is catching the same hting that
    -Wno-non-virtual-dtor is on GCC/Clang

Acked-by: Kristian H. Kristensen <hoegsberg@google.com>
5 years agoutil: use _WIN32 instead of WIN32
Dylan Baker [Thu, 19 Sep 2019 18:04:21 +0000 (11:04 -0700)]
util: use _WIN32 instead of WIN32

MinGW defines only _WIN32, but doesn't have fcntl, so we need to use the
windows path.

Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Acked-by: Kristian H. Kristensen <hoegsberg@google.com>
5 years agofreedreno/ir3: handle multi component alu src when propagating shifts
Rob Clark [Wed, 9 Oct 2019 16:47:13 +0000 (09:47 -0700)]
freedreno/ir3: handle multi component alu src when propagating shifts

Signed-off-by: Rob Clark <robdclark@chromium.org>
5 years agofreedreno/ir3: drop unused param
Rob Clark [Wed, 9 Oct 2019 16:15:45 +0000 (09:15 -0700)]
freedreno/ir3: drop unused param

Signed-off-by: Rob Clark <robdclark@chromium.org>
5 years agoclover: fix the nir_serialize build failure
Marek Olšák [Thu, 10 Oct 2019 22:43:47 +0000 (18:43 -0400)]
clover: fix the nir_serialize build failure

Fixes: dd4cc56ebd0 "nir: add a strip parameter to nir_serialize"
5 years agollvmpipe/draw: handle UBOs that are < 16 bytes.
Dave Airlie [Wed, 9 Oct 2019 05:11:14 +0000 (15:11 +1000)]
llvmpipe/draw: handle UBOs that are < 16 bytes.

Not sure if this is a bug in the user or not, but some CTS
tests fail due to using an 8 byte constant buffer.

Fixes: KHR-GLES31.core.layout_binding.block_layout_binding_block_VertexShader
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
5 years agollvmpipe/draw: fix image sizes for vertex/geometry shaders.
Dave Airlie [Wed, 9 Oct 2019 04:13:19 +0000 (14:13 +1000)]
llvmpipe/draw: fix image sizes for vertex/geometry shaders.

since images are a single level, minify before passing the w/h
to draw.

Fixes: KHR-GLES31.core.shader_image_size.basic-nonMS-vs-*
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
5 years agollvmpipe: make texture buffer offset alignment == 16
Dave Airlie [Sun, 1 Sep 2019 23:52:55 +0000 (09:52 +1000)]
llvmpipe: make texture buffer offset alignment == 16

Due to use vmovdqa instructions in the asm, which require 16-byte
aligned buffers.

This fixes a crash in
KHR-GLES31.core.texture_buffer.texture_buffer_texture_buffer_range

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
5 years agomeson: skip installation of GLVND-provided headers
Eric Engestrom [Mon, 30 Sep 2019 13:08:29 +0000 (14:08 +0100)]
meson: skip installation of GLVND-provided headers

Fixes: 93df862b6affb6b8507e ("meson: re-add incorrect pkg-config files with GLVND for backward compatibility")
Closes: https://gitlab.freedesktop.org/mesa/mesa/issues/1846
Signed-off-by: Eric Engestrom <eric.engestrom@intel.com>
Reviewed-by: Dylan Baker <dylan@pnwbakers.com>
5 years agomeson: split Mesa headers as a separate installation
Eric Engestrom [Mon, 30 Sep 2019 13:06:07 +0000 (14:06 +0100)]
meson: split Mesa headers as a separate installation

Fixes: 93df862b6affb6b8507e ("meson: re-add incorrect pkg-config files with GLVND for backward compatibility")
Signed-off-by: Eric Engestrom <eric.engestrom@intel.com>
Reviewed-by: Dylan Baker <dylan@pnwbakers.com>
5 years agomeson: split headers one per line
Eric Engestrom [Mon, 30 Sep 2019 13:00:51 +0000 (14:00 +0100)]
meson: split headers one per line

Fixes: 93df862b6affb6b8507e ("meson: re-add incorrect pkg-config files with GLVND for backward compatibility")
Signed-off-by: Eric Engestrom <eric.engestrom@intel.com>
Reviewed-by: Dylan Baker <dylan@pnwbakers.com>
5 years agomeson: move a couple of include installs around
Eric Engestrom [Mon, 30 Sep 2019 12:40:22 +0000 (13:40 +0100)]
meson: move a couple of include installs around

Preparation for a later commit.

Fixes: 93df862b6affb6b8507e ("meson: re-add incorrect pkg-config files with GLVND for backward compatibility")
Signed-off-by: Eric Engestrom <eric.engestrom@intel.com>
Reviewed-by: Dylan Baker <dylan@pnwbakers.com>
5 years agomeson: rename `glvnd_missing_pc_files` to `not glvnd_has_headers_and_pc_files`
Eric Engestrom [Mon, 30 Sep 2019 09:26:43 +0000 (10:26 +0100)]
meson: rename `glvnd_missing_pc_files` to `not glvnd_has_headers_and_pc_files`

This reflects better what is provided by glvnd or not.

Fixes: 93df862b6affb6b8507e ("meson: re-add incorrect pkg-config files with GLVND for backward compatibility")
Signed-off-by: Eric Engestrom <eric.engestrom@intel.com>
Reviewed-by: Dylan Baker <dylan@pnwbakers.com>
5 years agoGL: drop symbols mangling support
Eric Engestrom [Thu, 10 Oct 2019 15:26:52 +0000 (16:26 +0100)]
GL: drop symbols mangling support

SCons and Meson have never supported that feature, and Autotools was
deleted over 6 months ago and no-one complained yet, so it's pretty
obvious nobody cares about it.

Fixes: 95aefc94a941701616fd ("Delete autotools")
Signed-off-by: Eric Engestrom <eric.engestrom@intel.com>
Acked-by: Dylan Baker <dylan@pnwbakers.com>
5 years agoaco: update print_ir
Rhys Perry [Thu, 10 Oct 2019 11:17:04 +0000 (12:17 +0100)]
aco: update print_ir

Mostly adds GFX10 stuff.

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Reviewed-By: Timur Kristóf <timur.kristof@gmail.com>
5 years agoaco: rework scratch resource code
Rhys Perry [Thu, 10 Oct 2019 11:15:49 +0000 (12:15 +0100)]
aco: rework scratch resource code

Fix compute, cleanup and add GFX10 support.

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Reviewed-By: Timur Kristóf <timur.kristof@gmail.com>
5 years agoaco/gfx10: disable GFX9 1D texture workarounds
Rhys Perry [Thu, 10 Oct 2019 11:13:28 +0000 (12:13 +0100)]
aco/gfx10: disable GFX9 1D texture workarounds

Navi added back support for 1D textures.

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Reviewed-By: Timur Kristóf <timur.kristof@gmail.com>
5 years agoaco/gfx10: fix inline uniform blocks
Rhys Perry [Thu, 10 Oct 2019 11:12:29 +0000 (12:12 +0100)]
aco/gfx10: fix inline uniform blocks

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Reviewed-By: Timur Kristóf <timur.kristof@gmail.com>
5 years agoradv/aco: disable NGG when ACO is used
Rhys Perry [Thu, 10 Oct 2019 11:10:15 +0000 (12:10 +0100)]
radv/aco: disable NGG when ACO is used

Note that radv_device.c still has to be modified to use ACO with Navi.

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Reviewed-By: Timur Kristóf <timur.kristof@gmail.com>
5 years agoac/nir: add back nir_op_fmod
Marek Olšák [Tue, 8 Oct 2019 04:08:19 +0000 (00:08 -0400)]
ac/nir: add back nir_op_fmod

radeonsi doesn't lower it for doubles.

This partially reverts commit d861401554b52b2c2fc6721c69bdfe1697ee608f.

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
5 years agogallium: remove PIPE_SHADER_CAP_SCALAR_ISA
Marek Olšák [Tue, 8 Oct 2019 02:50:36 +0000 (22:50 -0400)]
gallium: remove PIPE_SHADER_CAP_SCALAR_ISA

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
5 years agotgsi_to_nir: use nir_shader_compiler_options::lower_to_scalar
Marek Olšák [Tue, 8 Oct 2019 02:48:41 +0000 (22:48 -0400)]
tgsi_to_nir: use nir_shader_compiler_options::lower_to_scalar

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
5 years agost/mesa: use nir_shader_compiler_options::lower_to_scalar
Marek Olšák [Tue, 8 Oct 2019 02:47:23 +0000 (22:47 -0400)]
st/mesa: use nir_shader_compiler_options::lower_to_scalar

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
5 years agonir: add nir_shader_compiler_options::lower_to_scalar
Marek Olšák [Tue, 8 Oct 2019 02:46:00 +0000 (22:46 -0400)]
nir: add nir_shader_compiler_options::lower_to_scalar

This will replace PIPE_SHADER_CAP_SCALAR_ISA.

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>