mesa.git
6 years agofreedreno: update generated headers
Rob Clark [Fri, 15 Jun 2018 20:24:36 +0000 (16:24 -0400)]
freedreno: update generated headers

Signed-off-by: Rob Clark <robdclark@gmail.com>
6 years agofreedreno/ir3: txf_ms support
Rob Clark [Sun, 17 Jun 2018 16:07:07 +0000 (12:07 -0400)]
freedreno/ir3: txf_ms support

Signed-off-by: Rob Clark <robdclark@gmail.com>
6 years agofreedreno/a5xx: fix gpu hangs with large compute shaders
Rob Clark [Wed, 20 Jun 2018 16:50:40 +0000 (12:50 -0400)]
freedreno/a5xx: fix gpu hangs with large compute shaders

Similar to the combined limit for VS+FS, there is an upper limit for
shader size to run from internel memory.

Signed-off-by: Rob Clark <robdclark@gmail.com>
6 years agofreedreno/ir3: fix base_vertex
Rob Clark [Sat, 16 Jun 2018 16:26:50 +0000 (12:26 -0400)]
freedreno/ir3: fix base_vertex

Fixes: c366f422f0a nir: Offset vertex_id by first_vertex instead of base_vertex
Signed-off-by: Rob Clark <robdclark@gmail.com>
6 years agoi965: Link uniforms of SPIR-V programs using the NIR linker
Eduardo Lima Mitev [Tue, 14 Nov 2017 16:44:39 +0000 (17:44 +0100)]
i965: Link uniforms of SPIR-V programs using the NIR linker

v2: nir_link_uniforms renamed to gl_nir_link_uniforms

Signed-off-by: Eduardo Lima <elima@igalia.com>
Signed-off-by: Alejandro Piñeiro <apinheiro@igalia.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
6 years agoi965: Setup glsl uniforms by index rather than name matching
Neil Roberts [Mon, 19 Feb 2018 13:04:54 +0000 (14:04 +0100)]
i965: Setup glsl uniforms by index rather than name matching

Previously when setting up a uniform it would try to walk the uniform
storage slots and find one that matches the name of the given
variable. However, each variable already has a location which is an
index into the UniformStorage array so we can just directly jump to
the right slot. Some of the variables take up more than one slot so we
still need to calculate how many it uses.

The main reason to do this is to support ARB_gl_spirv because in that
case the uniforms don’t have names so the previous approach won’t
work.

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
6 years agoi965: account for NIR uniforms without name
Eduardo Lima Mitev [Fri, 20 Oct 2017 13:20:36 +0000 (15:20 +0200)]
i965: account for NIR uniforms without name

Right now, the BRW linker code assumes nir_variable::name is always
non-NULL, but thanks to ARB_gl_spirv we will soon be linking SPIR-V
programs, and those explicitly require matching uniforms by location.
The name is just a debug hint.

Instead of checking for the name this patch makes it check for
var->num_state_slots on the assumption that everything that had an
internal name also had some state slots. This seems likely because the
two code paths that are taken when the name begins with "gl_" already
have an assert that var->state_slots is not NULL.

v2: simplified, most of it moved to glsl/nir/spirv (Neil Roberts)
v3: check for num_state_slots instead of the name. This is needed
    because we do actually have nameless builtins with SPIR-V such as
    PatchVerticesIn and we want them to hit the
    _mesa_add_state_reference code path (Neil Roberts)

Signed-off-by: Eduardo Lima <elima@igalia.com>
Signed-off-by: Neil Roberts <nroberts@igalia.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
6 years agoi965: Update TexturesUsed after linking the shaders
Neil Roberts [Wed, 7 Feb 2018 22:17:08 +0000 (23:17 +0100)]
i965: Update TexturesUsed after linking the shaders

Otherwise if the shader is SPIR-V then SamplerUsed won’t have been
initialised yet so it will end up thinking no textures are used. This
was causing a crash later on if nothing causes it to regenerate
TexturesUsed before the next render.

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
6 years agoi965: Build SPIR-V programs' resource list using NIR
Eduardo Lima Mitev [Tue, 10 Oct 2017 12:11:03 +0000 (14:11 +0200)]
i965: Build SPIR-V programs' resource list using NIR

v2: tweak after nir_linker.h being renamed to gl_nir_linker.h

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
6 years agonir/linker: Add nir_build_program_resource_list()
Eduardo Lima Mitev [Tue, 14 Nov 2017 23:29:28 +0000 (00:29 +0100)]
nir/linker: Add nir_build_program_resource_list()

This function is equivalent to the linker.cpp
build_program_resource_list() but will extract the resources from NIR
shaders instead.

For now, only uniforms and program inputs are implemented.

v2: move from compiler/nir to compiler/glsl (Timothy Arceri)

v3: remove support for inputs, that is still WIP (spotted by Timothy
    Arceri)

Signed-off-by: Eduardo Lima <elima@igalia.com>
Signed-off-by: Alejandro Piñeiro <apinheiro@igalia.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
6 years agocompiler/link: move add_program_resource to linker_util
Alejandro Piñeiro [Sat, 12 May 2018 07:59:32 +0000 (09:59 +0200)]
compiler/link: move add_program_resource to linker_util

So it could be used by the GLSL and NIR linker.

v2: (Timothy Arceri)
   * Moved from compiler to compiler/glsl
   * Method renamed to link_util_add_program_resource

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
6 years agonir/linker: Set the uniform initial values
Neil Roberts [Fri, 23 Feb 2018 16:09:22 +0000 (17:09 +0100)]
nir/linker: Set the uniform initial values

This is based on link_uniform_initializers.cpp.

v2: move from compiler/nir to compiler/glsl (Timothy Arceri)

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
6 years agonir/linker: Add gl_nir_link_uniforms()
Eduardo Lima Mitev [Tue, 14 Nov 2017 11:25:47 +0000 (12:25 +0100)]
nir/linker: Add gl_nir_link_uniforms()

This function will be the entry point for linking the uniforms from
the nir_shader objects associated with the gl_linked_shaders of a
program.

This patch includes initial support for linking uniforms from NIR
shaders. It is tailored for the ARB_gl_spirv needs, and it is far from
complete, but it should handle most cases of uniforms, array
uniforms, structs, samplers and images.

There are some FIXMEs related to specific features that will be
implemented in following patches, like atomic counters, UBOs and
SSBOs.

Also, note that ARB_gl_spirv makes mandatory explicit location for
normal uniforms, so this code only handles uniforms with explicit
location. But there are cases, like uniform atomic counters, that
doesn't have a location from the OpenGL point of view (they have a
binding), but that Mesa assign internally a location. That will be
handled on following patches.

A nir_linker.h file is also added. More NIR-linking related API will
be added in subsequent patches and those will include stuff from Mesa,
so reusing nir.h didn't seem a good idea.

v2: move from compiler/nir to compiler/glsl (Timothy Arceri)
v3: sets var->driver.location if the uniform was found from a previous
    stage (Neil Roberts).

Signed-off-by: Eduardo Lima <elima@igalia.com>
Signed-off-by: Neil Roberts <nroberts@igalia.com
Signed-off-by: Alejandro Piñeiro <apinheiro@igalia.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
6 years agocompiler/link: add linker_util.h, move linker_error/warning to it
Alejandro Piñeiro [Wed, 28 Mar 2018 12:59:26 +0000 (14:59 +0200)]
compiler/link: add linker_util.h, move linker_error/warning to it

Linker utilities common to the GLSL IR and NIR linker (the latter to
be used for ARB_gl_spirv).

We need to move it to a new header as the NIR linker doesn't need to
know about ir_variable, and others, included at linker.h.

v2: move from src/compiler to src/compiler/glsl (Timothy Arceri)

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
6 years agospirv: Set nir_variable->explicit_binding
Neil Roberts [Fri, 23 Feb 2018 16:07:52 +0000 (17:07 +0100)]
spirv: Set nir_variable->explicit_binding

When SpvDecorationBinding is encountered in the SPIR-V source it now
sets explicit_binding on the nir_variable. This will be used to
determine whether to initialise sampler and image uniforms with the
binding value.

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
6 years agospirv: Get rid of vtn_variable_mode_image/sampler
Neil Roberts [Thu, 1 Mar 2018 16:51:58 +0000 (17:51 +0100)]
spirv: Get rid of vtn_variable_mode_image/sampler

vtn_variable_mode_image and _sampler are instead replaced with
vtn_variable_mode_uniform which encompasses both of them. In the few
places where it was neccessary to distinguish between the two, the
GLSL type of the pointer is used instead.

The main reason to do this is that on OpenGL it is permitted to put
images and samplers into structs and declare a uniform with them. That
means that variables can now have a mix of uniform, sampler and image
modes so picking a single one of those modes for a variable no longer
makes sense.

This fixes OpLoad on a sampler within a struct which was previously
using the variable mode to determine whether it was a sampler or not.
The type of the variable is a struct so it was not being considered to
be uniform mode even though the member being loaded should be sampler
mode.

The previous code appeared to be using var->interface_type as a place
to store the type of the variable without the enclosing array for
images and samplers. I guess this worked because opaque types can not
appear in interfaces so the interface_type is sort of unused. This
patch removes the overloading of var->interface_type and any places
that needed the type without the array can now just deduce it from
var->type.

v2: squash in this patch the changes to anv/nir (Timothy)

Signed-off-by: Eduardo Lima <elima@igalia.com>
Signed-off-by: Neil Roberts <nroberts@igalia.com
Signed-off-by: Alejandro Piñeiro <apinheiro@igalia.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
6 years agospirv: translate default-block uniforms
Nicolai Hähnle [Thu, 22 Jun 2017 11:00:08 +0000 (13:00 +0200)]
spirv: translate default-block uniforms

They are supported by SPIR-V for ARB_gl_spirv.

v2 (changes on top of Nicolai's original patch):
   * Handle UniformConstant storage class for uniforms other than
     samplers and images. (Eduardo Lima)
   * Handle location decoration also for samplers and images. (Eduardo
     Lima)
   * Rebase update (spirv_to_nir options added, logging changes, and
     others) (Alejandro Piñeiro)

Signed-off-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Signed-off-by: Eduardo Lima <elima@igalia.com>
Signed-off-by: Alejandro Piñeiro <apinheiro@igalia.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
6 years agonir/types: Add a utility wrapper to glsl_type::sampler_index()
Eduardo Lima Mitev [Thu, 26 Oct 2017 09:05:30 +0000 (11:05 +0200)]
nir/types: Add a utility wrapper to glsl_type::sampler_index()

I think it is more accurate to call it a sampler target (?).

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
6 years agonir/types: Add a glsl_get_component_slots() utility
Eduardo Lima Mitev [Thu, 19 Oct 2017 11:28:35 +0000 (13:28 +0200)]
nir/types: Add a glsl_get_component_slots() utility

It is basically a wrapper around glsl_type::component_slots().

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
6 years agonir/lower_samplers: Limit assert to GLSL shader programs
Eduardo Lima Mitev [Wed, 15 Nov 2017 23:14:52 +0000 (00:14 +0100)]
nir/lower_samplers: Limit assert to GLSL shader programs

Vulkan has the concept of separate image and sampler objects in the
SPIR-V code whereas GL conflates them into one. nir_lower_samplers
contains an assert to verify that sampler operand is not being set on
the nir instruction. However when the code comes from spirv_to_nir the
sampler operand is always set. GL_arb_gl_spirv explicitly states that
OpTypeSampler is not supported so it retains the GL behaviour of not
being able to seperate them. Therefore the sampler will always be the
same as the texture. This GL version of the lowering code ignores
instr->sampler and sets instr->sampler_index to the same value as
instr->texture_index. Some other places in the code (such as in
nir_print) assume that once the instruction is lowered then both
instr->texture and instr->sampler will be NULL, so to keep this
behaviour we now set instr->sampler to NULL after ignoring it to fill
in instr->sampler_index.

Signed-off-by: Eduardo Lima <elima@igalia.com>
Signed-off-by: Neil Roberts <nroberts@igalia.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
6 years agonir: Add explicit_binding to nir_variable
Neil Roberts [Fri, 23 Feb 2018 15:06:30 +0000 (16:06 +0100)]
nir: Add explicit_binding to nir_variable

This is copied from the corresponding value in ir_variable. The
intention is to eventually use it in a pure-NIR linker.

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
6 years agomesa/main: add NULL name check when searching for a resource name
Alejandro Piñeiro [Thu, 21 Dec 2017 15:20:18 +0000 (16:20 +0100)]
mesa/main: add NULL name check when searching for a resource name

Since ARB_gl_spirv name reflection can be missing. piglit
shader_runner does several resource checking, so this commit is useful
to get even the more simple piglit tests running without crashing on
SPIR-V mode.

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
6 years agoi965: use gl_shader_program_data::spirv
Alejandro Piñeiro [Fri, 13 Apr 2018 14:44:23 +0000 (16:44 +0200)]
i965: use gl_shader_program_data::spirv

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
6 years agomesa/main: Add a 'spirv' flag to gl_shader_program_data
Eduardo Lima Mitev [Tue, 10 Oct 2017 08:27:01 +0000 (10:27 +0200)]
mesa/main: Add a 'spirv' flag to gl_shader_program_data

This will be used by the linker code to differentiate between programs
made out of SPIR-V or GLSL shaders.

This was rejected in the past, assuming that it was equivalent to
check for "shProg->_LinkedShaders[stage]->spirv_data != NULL". But:

  * At some points of the linking process it would be needed to check
    if _LinkerShaders[stage] is present, so the full check would be:

    "shProg->_LinkedShaders[stage] != NULL &&
     shProg->_LinkedShaders[stage]->spirv_data != NULL"

  * Sometimes you would like to do some specific to SPIR-V
    independently of the stage, or for any stage. For example, "link
    all the uniforms, for all stages". In that case checking for the
    flag would be equivalent to iterate all the _LinkedShaders and
    check if there is any spirv_data available.

The former makes readibility really worse. Both could be solved by
adding two helpers. But adding a flag seems really more simple and
readable.

v2: added justification for the flag on the commit message (Alejandro)

Signed-off-by: Eduardo Lima <elima@igalia.com>
Signed-off-by: Alejandro Piñeiro <apinheiro@igalia.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
6 years agodocs/release-calendar: restore the missing 18.1 column
Emil Velikov [Wed, 20 Jun 2018 12:33:48 +0000 (13:33 +0100)]
docs/release-calendar: restore the missing 18.1 column

Earlier commit removed the column, instead of adjusting the height.

Cc: Dylan Baker <dylan@pnwbakers.com>
Fixes: 0d4f338a116 ("docs: Update release-notes and calendar")
Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Dylan Baker <dylan@pnwbakers.com>
6 years agoconfigure: use compliant grep regex checks
Emil Velikov [Thu, 14 Jun 2018 13:15:59 +0000 (14:15 +0100)]
configure: use compliant grep regex checks

The current `grep "foo\|bar"' trips on some grep implementations, like
the FreeBSD one. Instead use `egrep "foo|bar"' as suggested by Stefan.

Cc: Stefan Esser <se@FreeBSD.org>
Reported-by: Stefan Esser <se@FreeBSD.org>
Bugzilla: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=228673
Fixes: 1914c814a6c ("configure: error out if building OMX w/o supported platform")
Fixes: 63e11ac2b5c ("configure: error out if building VA w/o supported platform")
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
Reviewed-by: Matt Turner <mattst88@gmail.com>
6 years agoglsl/tests/glcpp: reinstate "error out if no tests found"
Emil Velikov [Tue, 24 Apr 2018 17:49:22 +0000 (18:49 +0100)]
glsl/tests/glcpp: reinstate "error out if no tests found"

With the recent rework of converting the shell script to a python one
the check for actual tests was dropped.

Bring that back, since it was explicitly added considering we had a ~2
year period, during which the tests were not run.

v2: use raise Exception() over  print() & return false (Dylan)

Fixes: db8cd8e36771 ("glcpp/tests: Convert shell scripts to a python
script")
Cc: Dylan Baker <dylan@pnwbakers.com>
Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
6 years agoglsl/glcpp/tests: reinstate srcdir/abs_builddir blurb
Emil Velikov [Tue, 24 Apr 2018 17:49:21 +0000 (18:49 +0100)]
glsl/glcpp/tests: reinstate srcdir/abs_builddir blurb

Bring back the "detection" of the said variables, to allow
standalone execution.

Fixes: db8cd8e36771 ("glcpp/tests: Convert shell scripts to a python
script")
Cc: Dylan Baker <dylan@pnwbakers.com>
Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Dylan Baker <dylan@pnwbakers.com>
6 years agoglsl: fold glcpp-test-cr-lf.sh into glcpp-test.sh
Emil Velikov [Tue, 24 Apr 2018 17:49:20 +0000 (18:49 +0100)]
glsl: fold glcpp-test-cr-lf.sh into glcpp-test.sh

As of recently both of these have been reworked so they invoke a python
script. At the same time the latter can be executed with the combined
arguments of both scripts.

AKA we no longer need to have them separate.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Dylan Baker <dylan@pnwbakers.com>
6 years agost/dri: constify dri_fill_st_visual's screen
Emil Velikov [Tue, 24 Apr 2018 17:48:02 +0000 (18:48 +0100)]
st/dri: constify dri_fill_st_visual's screen

As the function says - only the visual is changed.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
6 years agomesa: remove struct gl_extensions::ATI_separate_stencil
Emil Velikov [Tue, 10 Apr 2018 16:11:29 +0000 (17:11 +0100)]
mesa: remove struct gl_extensions::ATI_separate_stencil

Virtually every driver that supports ATI_separate_stencil
also supports EXT_stencil_two_side.

Use the latter boolean for both extension. With that in mind we can drop
the explicit true from the drivers and the nasty comment in
compute_version().

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
6 years agotravis: add libXrandr and its randrproto dependency
Eric Engestrom [Thu, 21 Jun 2018 10:02:29 +0000 (11:02 +0100)]
travis: add libXrandr and its randrproto dependency

Fixes: 3f960c1338713d317ce6 "vulkan: EXT_acquire_xlib_display requires libXrandr headers to build"
Signed-off-by: Eric Engestrom <eric.engestrom@intel.com>
6 years agoswr: bump minimum supported LLVM version to 5.0
Juan A. Suarez Romero [Mon, 18 Jun 2018 13:45:51 +0000 (15:45 +0200)]
swr: bump minimum supported LLVM version to 5.0

RADV now requires LLVM 5.0 or greater, and thus we can't build dist
tarball because swr requires LLVM 4.0.

Let's bump required LLVM to 5.0 in swr too.

Fixes: f9eb1ef870 ("amd: remove support for LLVM 4.0")
Cc: Tim Rowley <timothy.o.rowley@intel.com>
Cc: Emil Velikov <emil.velikov@collabora.com>
Cc: Dylan Baker <dylan@pnwbakers.com>
Cc: Eric Engestrom <eric.engestrom@intel.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Acked-by: Bruce Cherniak <bruce.cherniak@intel.com>
6 years agoradeonsi: add a debug flag to zero vram allocations
Grazvydas Ignotas [Wed, 20 Jun 2018 19:17:39 +0000 (22:17 +0300)]
radeonsi: add a debug flag to zero vram allocations

This allows to avoid having to see garbage in Dying Light loading screen
at least, which probably expects Windows/NV behavior of all allocations
being zeroed by default.

Analogous to radv flag with the same name.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
6 years agoradeonsi: use shifts for sign extension
Grazvydas Ignotas [Sat, 16 Jun 2018 18:56:13 +0000 (21:56 +0300)]
radeonsi: use shifts for sign extension

Avoids a branch and reduces code size a tiny bit:
    text   data     bss      dec    hex filename
10804563 398653 2070368 13273584 ca89f0 /tmp/radeonsi_dri.so.old
10804499 398653 2070368 13273520 ca89b0 /tmp/radeonsi_dri.so

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
6 years agoradv: set EVENT_WRITE_EOP.INT_SEL = wait for write confirmation
Samuel Pitoiset [Wed, 20 Jun 2018 14:10:56 +0000 (16:10 +0200)]
radv: set EVENT_WRITE_EOP.INT_SEL = wait for write confirmation

Ported from RadeonSI.
Not sure why this is needed but AMDVLK does something similar.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agoradv: use EOP_DATA_SEL_* instead of magic numbers
Samuel Pitoiset [Wed, 20 Jun 2018 14:10:55 +0000 (16:10 +0200)]
radv: use EOP_DATA_SEL_* instead of magic numbers

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agor600: fix copy/paste bug for sampleMaskIn workaround
Roland Scheidegger [Fri, 15 Jun 2018 21:36:52 +0000 (23:36 +0200)]
r600: fix copy/paste bug for sampleMaskIn workaround

The sampleMaskIn workaround (b936f4d1ca0d2ab1e828ff6a6e617f12469687fa)
tries to figure out if the shader is running at per-sample frequency, but
there's a typo bug so it will only recognize per-sample linar inputs,
not per-sample perspective ones.

Spotted by Eric Engestrom <eric.engestrom@intel.com>

Fixes: b936f4d1ca0d2ab1e828a "r600: partly fix sampleMaskIn value"
6 years agov3d: Fix min vs mag determination when not doing mip filtering.
Eric Anholt [Wed, 20 Jun 2018 17:22:44 +0000 (10:22 -0700)]
v3d: Fix min vs mag determination when not doing mip filtering.

Fixes all 128 failing tests in
dEQP-GLES3.functional.texture.filtering.*.combinations

6 years agovulkan: EXT_acquire_xlib_display requires libXrandr headers to build
Keith Packard [Tue, 19 Jun 2018 22:58:30 +0000 (15:58 -0700)]
vulkan: EXT_acquire_xlib_display requires libXrandr headers to build

When VK_USE_PLATFORM_XLIB_XRANDR_EXT is defined, vulkan.h includes
X11/extensions/Xrandr.h for the RROutput typedef which is used in
the vkGetRandROutputDisplayEXT interface.

Make sure we have the required header by checking during the build,
and also set CFLAGS to point at the right directory.

We don't need to link against the library as we don't use any
functions from there, so don't add the _LIBS value in the autotools
build.

Signed-off-by: Keith Packard <keithp@keithp.com>
Fixes: dbac8e25f851ed44c51f "radv: Add EXT_acquire_xlib_display to radv driver [v2]"
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
6 years agov3d: Implement ALPHA_TO_COVERAGE.
Eric Anholt [Tue, 19 Jun 2018 23:27:17 +0000 (16:27 -0700)]
v3d: Implement ALPHA_TO_COVERAGE.

There's a convenient "FTOC" instruction for generating the coverage now,
unlike vc4.  This fixes
dEQP-GLES3.functional.multisample.fbo_4_samples.proportionality_alpha_to_coverage

6 years agov3d: Track write reference to the separate stencil buffer.
Eric Anholt [Tue, 19 Jun 2018 23:00:15 +0000 (16:00 -0700)]
v3d: Track write reference to the separate stencil buffer.

Otherwise, a blit from separate stencil may fail to flush the job that
initialized it, or new drawing could fail to flush a blit reading from
stencil.

Fixes:
dEQP-GLES3.functional.fbo.blit.depth_stencil.depth32f_stencil8_basic
dEQP-GLES3.functional.fbo.blit.depth_stencil.depth32f_stencil8_scale
dEQP-GLES3.functional.fbo.blit.depth_stencil.depth32f_stencil8_stencil_only
dEQP-GLES3.functional.fbo.msaa.2_samples.depth32f_stencil8
dEQP-GLES3.functional.fbo.msaa.4_samples.depth32f_stencil8

6 years agov3d: Add missing reference to the separate stencil buffer.
Eric Anholt [Tue, 19 Jun 2018 22:48:15 +0000 (15:48 -0700)]
v3d: Add missing reference to the separate stencil buffer.

Noticed while debugging a missing flush of rendering in the z32f_s8 case.

6 years agov3d: Fix return value from fence_finish.
Eric Anholt [Tue, 19 Jun 2018 18:24:56 +0000 (11:24 -0700)]
v3d: Fix return value from fence_finish.

We needed to convert from a -errno to a boolean success value.  Fixes:

GTF-GLES3.gtf.GL3Tests.sync.sync_functionality_clientwaitsync_flush
GTF-GLES3.gtf.GL3Tests.sync.sync_functionality_clientwaitsync_signaled

6 years agomesa/st: only do scalar lowerings if driver benefits
Christian Gmeiner [Fri, 15 Jun 2018 10:29:59 +0000 (12:29 +0200)]
mesa/st: only do scalar lowerings if driver benefits

As not every (upcoming) backend compiler is happy with
nir_lower_xxx_to_scalar lowerings do them only if the backend
is scalar (and not vec4) based.

Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
6 years agogallium: add scalar isa shader cap
Christian Gmeiner [Fri, 15 Jun 2018 10:29:58 +0000 (12:29 +0200)]
gallium: add scalar isa shader cap

v1 -> v2:
 - nv30 is _NOT_ scalar as suggested by Ilia Mirkin.
 - Change from a screen cap to a shader cap as suggested
   by Eric Anholt.
 - radeonsi is scalar as suggested by Marek Olšák.
 - Change missing ones to be scalar.

v2 -> v3:
 - r600 prefers vec4 as suggested by Marek Olšák.

Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
6 years agoradv: Add VK_EXT_display_surface_counter to radv driver
Keith Packard [Wed, 11 Oct 2017 07:20:08 +0000 (00:20 -0700)]
radv: Add VK_EXT_display_surface_counter to radv driver

This extension is required to support EXT_display_control as it offers
a way to query whether the vblank counter is supported.

Signed-off-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
6 years agoanv: Add VK_EXT_display_surface_counter to anv driver [v2]
Keith Packard [Wed, 11 Oct 2017 07:20:08 +0000 (00:20 -0700)]
anv: Add VK_EXT_display_surface_counter to anv driver [v2]

This extension is required to support EXT_display_control as it offers
a way to query whether the vblank counter is supported.

v2:
Add extension to list in alphabetical order

Suggested-by: Jason Ekstrand <jason@jlekstrand.net>
Signed-off-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
6 years agoVulkan/wsi: Implement VK_EXT_display_surface_counter
Jason Ekstrand [Sat, 16 Jun 2018 17:44:11 +0000 (10:44 -0700)]
Vulkan/wsi: Implement VK_EXT_display_surface_counter

This extension is required to support EXT_display_control as it offers a
way to query whether the vblank counter is supported.  Internally, it is
implemented using a fake MESA extension which provides a chain-in to
GetSurfaceCapabilities2KHR which contains the one added field.  This has
the advantage of reducing number of callbacks needed in the back-ends.
It also means that anything chained into GetSurfaceCapabilities2EXT
through VkSurfaceCapabilities2KHR::pNext so we only need to handle
crawling the pNext chain once per back-end.

Reviewed-by: Keith Packard <keithp@keithp.com>
6 years agovulkan/wsi: Get rid of the get_capabilities hook
Jason Ekstrand [Sat, 16 Jun 2018 17:27:40 +0000 (10:27 -0700)]
vulkan/wsi: Get rid of the get_capabilities hook

Instead, we can just use get_capabilities2.  This way back-ends only
have to implement one hook.

Reviewed-by: Keith Packard <keithp@keithp.com>
6 years agointel/aubinator: drop unused functions
Eric Engestrom [Tue, 19 Jun 2018 14:55:26 +0000 (15:55 +0100)]
intel/aubinator: drop unused functions

Signed-off-by: Eric Engestrom <eric.engestrom@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
6 years agoradv: always initialize the clear depth/stencil values to 0
Samuel Pitoiset [Tue, 19 Jun 2018 14:04:30 +0000 (16:04 +0200)]
radv: always initialize the clear depth/stencil values to 0

Similar to the clear color values.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agoradv: always initialize the clear color values to 0
Samuel Pitoiset [Tue, 19 Jun 2018 13:56:19 +0000 (15:56 +0200)]
radv: always initialize the clear color values to 0

Having random data in there is probably not the best.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agoradv: always initialize the DCC predicate to FALSE
Samuel Pitoiset [Tue, 19 Jun 2018 13:39:25 +0000 (15:39 +0200)]
radv: always initialize the DCC predicate to FALSE

This might eventually skip some useless DCC decompression
passes.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agoradv: do not use an user SGPR for the sample position offset
Samuel Pitoiset [Tue, 19 Jun 2018 12:25:48 +0000 (14:25 +0200)]
radv: do not use an user SGPR for the sample position offset

We know the number of samples at compile time.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agoradv: don't store the number of samples as log2
Samuel Pitoiset [Tue, 19 Jun 2018 12:25:47 +0000 (14:25 +0200)]
radv: don't store the number of samples as log2

Needed for the following patch.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agogallium/aux/util/u_cpu_detect.h: Fix -Wsign-compare warning in u_cpu_detect.c
Gert Wollny [Tue, 5 Jun 2018 11:59:06 +0000 (13:59 +0200)]
gallium/aux/util/u_cpu_detect.h: Fix -Wsign-compare warning in u_cpu_detect.c

Change the type of util_cpu_caps::nr_cpus to int because sysconfig
returns a signed value, fixes:

u_cpu_detect.c: In function 'util_cpu_detect':
u_cpu_detect.c:317:30: warning: comparison between signed and unsigned
integer expressions [-Wsign-compare]
    if (util_cpu_caps.nr_cpus == -1)

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
6 years agogallium/aux/util/u_debug.h: Fix "noreturn" warnings in debug mode
Gert Wollny [Tue, 5 Jun 2018 11:59:05 +0000 (13:59 +0200)]
gallium/aux/util/u_debug.h: Fix "noreturn" warnings in debug mode

Only decorate function as noreturn when DEBUG is not defined, because
when compiled in DEBUG mode the function actually executes an int3 and
may return, fixes:
u_debug.c: In function '_debug_assert_fail':
u_debug.c:309:1: warning: 'noreturn' function does return

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
6 years agogallium/aux/util: Fix some warnings
Gert Wollny [Tue, 5 Jun 2018 11:59:04 +0000 (13:59 +0200)]
gallium/aux/util: Fix some warnings

util/u_cpu_detect.c: In function 'util_cpu_detect':
util/u_cpu_detect.c:377:30: warning: comparison between signed and
unsigned integer expressions [-Wsign-compare]
    if (util_cpu_caps.nr_cpus == ~0u)
                              ^~

util/u_hash_table.c:274:21: warning: unused parameter 'k' [-Wunused-
parameter]
 util_hash_inc(void *k, void *v, void *d)
                     ^
util/u_hash_table.c:274:30: warning: unused parameter 'v' [-Wunused-
parameter]
 util_hash_inc(void *k, void *v, void *d)
                              ^

util/u_tests.c: In function 'test_texture_barrier':
util/u_tests.c:652:25: warning: comparison between signed and unsigned
integer expressions [-Wsign-compare]
       for (int i = 0; i < num_samples / 2; i++) {
                         ^

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
6 years agogallium/aux/tgsi_ureg.c: remove unused parameter from match_or_expand_immediate64
Gert Wollny [Tue, 5 Jun 2018 11:59:03 +0000 (13:59 +0200)]
gallium/aux/tgsi_ureg.c: remove unused parameter from match_or_expand_immediate64

remove "type" from "match_or_expand_immediate64", fixes:

tgsi/tgsi_ureg.c: In function 'match_or_expand_immediate64':
tgsi/tgsi_ureg.c:837:34: warning: unused parameter 'type' [-Wunused-
parameter]
                              int type,
                                  ^~~~

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
6 years agogallium/aux/tgsi_two_side.c: Fix -Wsign-compare warnings
Gert Wollny [Tue, 5 Jun 2018 11:59:02 +0000 (13:59 +0200)]
gallium/aux/tgsi_two_side.c: Fix -Wsign-compare warnings

Integer propagation rules can sometimes be irritating. With
"unsigned x" "x + 1" gets propagated to a signed integer, so explicitely
assign the sum to an unsigned and use that for comaprison.

In file included from tgsi/tgsi_two_side.c:41:0:
tgsi/tgsi_two_side.c: In function 'xform_decl':
./util/u_math.h:660:29: warning: comparison between signed and unsigned
integer expressions [-Wsign-compare]
 #define MAX2( A, B )   ( (A)>(B) ? (A) : (B) )
                             ^
tgsi/tgsi_two_side.c:86:24: note: in expansion of macro 'MAX2'
       ts->num_inputs = MAX2(ts->num_inputs, decl->Range.Last + 1);
                        ^~~~
./util/u_math.h:660:40: warning: signed and unsigned type in conditional
expression [-Wsign-compare]
 #define MAX2( A, B )   ( (A)>(B) ? (A) : (B) )
                                        ^
tgsi/tgsi_two_side.c:86:24: note: in expansion of macro 'MAX2'
       ts->num_inputs = MAX2(ts->num_inputs, decl->Range.Last + 1);
                        ^~~~
./util/u_math.h:660:29: warning: comparison between signed and unsigned
integer expressions [-Wsign-compare]
 #define MAX2( A, B )   ( (A)>(B) ? (A) : (B) )
                             ^
tgsi/tgsi_two_side.c:89:23: note: in expansion of macro 'MAX2'
       ts->num_temps = MAX2(ts->num_temps, decl->Range.Last + 1);
                       ^~~~
./util/u_math.h:660:40: warning: signed and unsigned type in conditional
expression [-Wsign-compare]
 #define MAX2( A, B )   ( (A)>(B) ? (A) : (B) )
                                        ^
tgsi/tgsi_two_side.c:89:23: note: in expansion of macro 'MAX2'
       ts->num_temps = MAX2(ts->num_temps, decl->Range.Last + 1);
                       ^~~~
tgsi/tgsi_two_side.c: In function 'xform_inst':
tgsi/tgsi_two_side.c:184:45: warning: comparison between signed and
unsigned integer expressions [-Wsign-compare]
             if (inst->Src[i].Register.Index == ts-
>front_color_input[j]) {
                                             ^~

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
6 years agogallium/aux/tgsi_ureg.c: Fix various warnings
Gert Wollny [Tue, 5 Jun 2018 11:59:01 +0000 (13:59 +0200)]
gallium/aux/tgsi_ureg.c: Fix various warnings

tgsi/tgsi_ureg.c: In function 'ureg_DECL_sampler':
tgsi/tgsi_ureg.c:721:34: warning: comparison between signed and unsigned
integer expressions [-Wsign-compare]
       if (ureg->sampler[i].Index == nr)
                                  ^~
tgsi/tgsi_ureg.c: In function 'match_or_expand_immediate64':
tgsi/tgsi_ureg.c:837:34: warning: unused parameter 'type' [-Wunused-
parameter]
                              int type,
                                  ^~~~
tgsi/tgsi_ureg.c: In function 'emit_decls':
tgsi/tgsi_ureg.c:1821:31: warning: comparison between signed and
unsigned integer expressions [-Wsign-compare]
       if (ureg->properties[i] != ~0)
                               ^~
tgsi/tgsi_ureg.c: In function 'ureg_create_with_screen':
tgsi/tgsi_ureg.c:2193:18: warning: comparison between signed and
unsigned integer expressions [-Wsign-compare]
    for (i = 0; i < ARRAY_SIZE(ureg->properties); i++)
                  ^

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
6 years agogallium/aux/tgsi_text.c: Fix -Wsign-compare warnings
Gert Wollny [Tue, 5 Jun 2018 11:59:00 +0000 (13:59 +0200)]
gallium/aux/tgsi_text.c: Fix -Wsign-compare warnings

tgsi/tgsi_text.c: In function 'parse_identifier':
tgsi/tgsi_text.c:218:16: warning: comparison between signed and unsigned
integer expressions [-Wsign-compare]
          if (i == len - 1)
                ^~
tgsi/tgsi_text.c: In function 'parse_optional_swizzle':
tgsi/tgsi_text.c:873:21: warning: comparison between signed and unsigned
integer expressions [-Wsign-compare]
       for (i = 0; i < components; i++) {
                     ^
tgsi/tgsi_text.c: In function 'parse_instruction':
tgsi/tgsi_text.c:1103:18: warning: comparison between signed and
unsigned integer expressions [-Wsign-compare]
    for (i = 0; i < info->num_dst + info->num_src + info->is_tex; i++) {
                  ^
tgsi/tgsi_text.c:1118:18: warning: comparison between signed and
unsigned integer expressions [-Wsign-compare]
       else if (i < info->num_dst + info->num_src) {
                  ^
tgsi/tgsi_text.c: In function 'parse_immediate':
tgsi/tgsi_text.c:1660:24: warning: comparison between signed and
unsigned integer expressions [-Wsign-compare]
    for (type = 0; type < ARRAY_SIZE(tgsi_immediate_type_names); ++type)
{
                        ^
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
6 years agogallium/aux/tgsi_point_sprite.c: Fix -Wsign-compare warnings
Gert Wollny [Tue, 5 Jun 2018 11:58:59 +0000 (13:58 +0200)]
gallium/aux/tgsi_point_sprite.c: Fix -Wsign-compare warnings

tgsi/tgsi_lowering.c: In function 'emit_twoside':
tgsi/tgsi_lowering.c:1179:18: warning: comparison between signed and
unsigned integer expressions [-Wsign-compare]
    for (i = 0; i < ctx->two_side_colors; i++) {
                  ^
tgsi/tgsi_lowering.c:1208:18: warning: comparison between signed and
unsigned integer expressions [-Wsign-compare]
    for (i = 0; i < ctx->two_side_colors; i++) {
                  ^
tgsi/tgsi_lowering.c:1216:18: warning: comparison between signed and
unsigned integer expressions [-Wsign-compare]
    for (i = 0; i < ctx->two_side_colors; i++) {
                  ^
tgsi/tgsi_lowering.c: In function 'emit_decls':
tgsi/tgsi_lowering.c:1280:18: warning: comparison between signed and
unsigned integer expressions [-Wsign-compare]
    for (i = 0; i < ctx->numtmp; i++) {
                  ^
tgsi/tgsi_lowering.c: In function 'rename_color_inputs':
tgsi/tgsi_lowering.c:1311:28: warning: comparison between signed and
unsigned integer expressions [-Wsign-compare]
             if (src->Index == ctx->two_side_idx[j]) {
                            ^~

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
6 years agogallium/aux/tgsi_lowering.c: Fix -Wsign-compare warnings
Gert Wollny [Tue, 5 Jun 2018 11:58:58 +0000 (13:58 +0200)]
gallium/aux/tgsi_lowering.c: Fix -Wsign-compare warnings

tgsi/tgsi_lowering.c: In function 'emit_twoside':
tgsi/tgsi_lowering.c:1179:18: warning: comparison between signed and
unsigned integer expressions [-Wsign-compare]
    for (i = 0; i < ctx->two_side_colors; i++) {
                  ^
tgsi/tgsi_lowering.c:1208:18: warning: comparison between signed and
unsigned integer expressions [-Wsign-compare]
    for (i = 0; i < ctx->two_side_colors; i++) {
                  ^
tgsi/tgsi_lowering.c:1216:18: warning: comparison between signed and
unsigned integer expressions [-Wsign-compare]
    for (i = 0; i < ctx->two_side_colors; i++) {
                  ^
tgsi/tgsi_lowering.c: In function 'emit_decls':
tgsi/tgsi_lowering.c:1280:18: warning: comparison between signed and
unsigned integer expressions [-Wsign-compare]
    for (i = 0; i < ctx->numtmp; i++) {
                  ^
tgsi/tgsi_lowering.c: In function 'rename_color_inputs':
tgsi/tgsi_lowering.c:1311:28: warning: comparison between signed and
unsigned integer expressions [-Wsign-compare]
             if (src->Index == ctx->two_side_idx[j]) {
                            ^~

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
6 years agogallium/aux/tgsi_build.c: Fix -Wsign-compare warnings
Gert Wollny [Tue, 5 Jun 2018 11:58:57 +0000 (13:58 +0200)]
gallium/aux/tgsi_build.c: Fix -Wsign-compare warnings

tgsi/tgsi_build.c: In function 'tgsi_build_full_immediate':
tgsi/tgsi_build.c:622:18: warning: comparison between signed and
unsigned integer expressions [-Wsign-compare]
    for( i = 0; i < full_imm->Immediate.NrTokens - 1; i++ ) {
                  ^
tgsi/tgsi_build.c: In function 'tgsi_build_full_property':
tgsi/tgsi_build.c:1393:18: warning: comparison between signed and
unsigned integer expressions [-Wsign-compare]
    for( i = 0; i < full_prop->Property.NrTokens - 1; i++ ) {
                  ^

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
6 years agogallium/aux/tgsi_build.c: Remove now unused variable
Gert Wollny [Tue, 5 Jun 2018 11:58:56 +0000 (13:58 +0200)]
gallium/aux/tgsi_build.c: Remove now unused variable

Removing the unused prev_tocken from the function calls made this local
variable also unused.

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
6 years agogallium/aux/tgsi_build.c: Remove unused parameters prev_token from various functions
Gert Wollny [Tue, 5 Jun 2018 11:58:55 +0000 (13:58 +0200)]
gallium/aux/tgsi_build.c: Remove unused parameters prev_token from various functions

remove parameter prev_token unused in
   tgsi_build_instruction_label
   tgsi_build_instruction_texture
   tgsi_build_instruction_memory
   tgsi_build_texture_offset

This fixes the following warnings:

tgsi/tgsi_build.c: In function 'tgsi_build_instruction_label':
tgsi/tgsi_build.c:716:24: warning: unused parameter 'prev_token' [-
Wunused-parameter]
    struct tgsi_token  *prev_token,
                        ^~~~~~~~~~
tgsi/tgsi_build.c: In function 'tgsi_build_instruction_texture':
tgsi/tgsi_build.c:749:23: warning: unused parameter 'prev_token' [-
Wunused-parameter]
    struct tgsi_token *prev_token,
                       ^~~~~~~~~~
tgsi/tgsi_build.c: In function 'tgsi_build_instruction_memory':
tgsi/tgsi_build.c:784:23: warning: unused parameter 'prev_token' [-
Wunused-parameter]
    struct tgsi_token *prev_token,
                       ^~~~~~~~~~
tgsi/tgsi_build.c: In function 'tgsi_build_texture_offset':
tgsi/tgsi_build.c:819:23: warning: unused parameter 'prev_token' [-
Wunused-parameter]
    struct tgsi_token *prev_token,
                       ^~~~~~~~~~

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
6 years agogallium/aux/tgsi_exec.c: Fix various -Wsign-compare
Gert Wollny [Tue, 5 Jun 2018 11:58:54 +0000 (13:58 +0200)]
gallium/aux/tgsi_exec.c: Fix various -Wsign-compare

tgsi/tgsi_exec.c: In function 'exec_tex':
tgsi/tgsi_exec.c:2254:46: warning: comparison between signed and
unsigned integer expressions [-Wsign-compare]
       assert(shadow_ref >= dim && shadow_ref < ARRAY_SIZE(args));
                                              ^
./util/u_debug.h:189:30: note: in definition of macro 'debug_assert'
 #define debug_assert(expr) ((expr) ? (void)0 : _debug_assert_fail(#expr,
__FILE__, __LINE__, __FUNCTION__))
                              ^~~~
tgsi/tgsi_exec.c:2254:7: note: in expansion of macro 'assert'
       assert(shadow_ref >= dim && shadow_ref < ARRAY_SIZE(args));
       ^~~~~~
tgsi/tgsi_exec.c:2290:23: warning: comparison between signed and
unsigned integer expressions [-Wsign-compare]
       for (i = dim; i < ARRAY_SIZE(args); i++)
                       ^
In file included from ./util/u_memory.h:39:0,
                 from tgsi/tgsi_exec.c:62:
tgsi/tgsi_exec.c: In function 'exec_lodq':
tgsi/tgsi_exec.c:2357:15: warning: comparison between signed and
unsigned integer expressions [-Wsign-compare]
    assert(dim <= ARRAY_SIZE(coords));
               ^
./util/u_debug.h:189:30: note: in definition of macro 'debug_assert'
 #define debug_assert(expr) ((expr) ? (void)0 : _debug_assert_fail(#expr,
__FILE__, __LINE__, __FUNCTION__))
                              ^~~~
tgsi/tgsi_exec.c:2357:4: note: in expansion of macro 'assert'
    assert(dim <= ARRAY_SIZE(coords));
    ^~~~~~
tgsi/tgsi_exec.c:2363:20: warning: comparison between signed and
unsigned integer expressions [-Wsign-compare]
    for (i = dim; i < ARRAY_SIZE(coords); i++) {
                    ^

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
6 years agogallium/aux/tgsi_exec.c: remove superfluous parameter from etch_source_d
Gert Wollny [Tue, 5 Jun 2018 11:58:53 +0000 (13:58 +0200)]
gallium/aux/tgsi_exec.c: remove superfluous parameter from etch_source_d

Remove unused parameter src_datatype from fetch_source_d, fixes warning;

tgsi/tgsi_exec.c: In function 'fetch_source_d':
tgsi/tgsi_exec.c:1594:40: warning: unused parameter 'src_datatype' [-Wunused-parameter]
                enum tgsi_exec_datatype src_datatype)
                                        ^~~~~~~~~~~~
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
6 years agogallium/aux/tgsi_exec.c: remove superfluous parameter from store_dest_dstret
Gert Wollny [Tue, 5 Jun 2018 11:58:52 +0000 (13:58 +0200)]
gallium/aux/tgsi_exec.c: remove superfluous parameter from store_dest_dstret

remove unused parameter inst from store_dest_dstret (and consequently also from
store_dest_double), fixes warning:

tgsi/tgsi_exec.c: In Funktion »store_dest_dstret«:
tgsi/tgsi_exec.c:1765:47: Warning: unused parameter »inst« [-Wunused-parameter]
           const struct tgsi_full_instruction *inst)
                                               ^~~~

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
6 years agogallium/aux/tgsi_exec.c: Remove unused parameter from fetch_src_file_channel
Gert Wollny [Tue, 5 Jun 2018 11:58:51 +0000 (13:58 +0200)]
gallium/aux/tgsi_exec.c: Remove unused parameter from fetch_src_file_channel

remove unused parameter chan_index from fetch_src_file_channel, fixes warning:

tgsi/tgsi_exec.c: In Funktion »fetch_src_file_channel«:
tgsi/tgsi_exec.c:1480:35: Warning: unused parameter »chan_index« [-Wunused-parameter]
                        const uint chan_index,
                                   ^~~~~~~~~~

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
6 years agogallium/aux/tgsi_exec.c: Remove paramater inst from exec_kill
Gert Wollny [Tue, 5 Jun 2018 11:58:50 +0000 (13:58 +0200)]
gallium/aux/tgsi_exec.c: Remove paramater inst from exec_kill

Fixes warning:
tgsi/tgsi_exec.c: In Funktion »exec_kill«:
tgsi/tgsi_exec.c:2049:47: Warning: unused parameter »inst« [-Wunused-parameter]
           const struct tgsi_full_instruction *inst)
                                               ^~~~

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
6 years agogallium/aux/tgsi_aa_point.c: Fix -Wsign-compare warnings
Gert Wollny [Tue, 5 Jun 2018 11:58:49 +0000 (13:58 +0200)]
gallium/aux/tgsi_aa_point.c: Fix -Wsign-compare warnings

tgsi/tgsi_aa_point.c:32:0:
tgsi/tgsi_aa_point.c: In Funktion »aa_decl«:
./util/u_math.h:660:29: Comparison between signed and unsigned in
conditional expressions [-Wsign-compare]
 #define MAX2( A, B )   ( (A)>(B) ? (A) : (B) )
                             ^
tgsi/tgsi_aa_point.c:76:21: Remark: when substituting of the macro
»MAX2«
       ts->num_tmp = MAX2(ts->num_tmp, decl->Range.Last + 1);
                     ^~~~
./util/u_math.h:660:40: Warning: signed and unsigned type in conditional
expression [-Wsign-compare]
 #define MAX2( A, B )   ( (A)>(B) ? (A) : (B) )
                                        ^
tgsi/tgsi_aa_point.c:76:21: Remark: when substituting of the macro
»MAX2«
       ts->num_tmp = MAX2(ts->num_tmp, decl->Range.Last + 1);
                     ^~~~
tgsi/tgsi_aa_point.c: In Funktion »aa_inst«:
tgsi/tgsi_aa_point.c:220:31: Comparison between signed and unsigned in
conditional expressions [-Wsign-compare]
           dst->Register.Index == ts->color_out) {

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
6 years agogallium/aux/tgsi_sanity.c: Fix -Wsign-compare warnings
Gert Wollny [Tue, 5 Jun 2018 11:58:48 +0000 (13:58 +0200)]
gallium/aux/tgsi_sanity.c: Fix -Wsign-compare warnings

tgsi_sanity.c: In function 'iter_instruction':
tgsi_sanity.c:316:29: warning: comparison between signed and unsigned
integer expressions [-Wsign-compare]
       if (ctx->index_of_END != ~0) {
                             ^~
tgsi_sanity.c: In function 'epilog':
tgsi_sanity.c:488:26: warning: comparison between signed and unsigned
integer expressions [-Wsign-compare]
    if (ctx->index_of_END == ~0) {

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
6 years agogallium/aux/tgsi/tgsi_parse.c: Fix two warnings
Gert Wollny [Tue, 5 Jun 2018 11:58:47 +0000 (13:58 +0200)]
gallium/aux/tgsi/tgsi_parse.c: Fix two warnings

tgsi_parse.c: In function 'tgsi_parse_free':
tgsi_parse.c:54:31: warning: unused parameter 'ctx' [-Wunused-parameter]
    struct tgsi_parse_context *ctx )
                               ^~~
tgsi_parse.c: In function 'tgsi_parse_end_of_tokens':
tgsi_parse.c:62:25: warning: comparison between signed and unsigned
integer expressions [-Wsign-compare]
    return ctx->Position >=

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
6 years agogallium/aux/tgsi/tgsi_dump.c: Fix -Wsign-compare warnings
Gert Wollny [Tue, 5 Jun 2018 11:58:46 +0000 (13:58 +0200)]
gallium/aux/tgsi/tgsi_dump.c: Fix -Wsign-compare warnings

tgsi_dump.c: In function 'iter_property':
tgsi_dump.c:443:18: warning: comparison between signed and unsigned
integer expressions [-Wsign-compare]
    for (i = 0; i < prop->Property.NrTokens - 1; ++i) {
                  ^
tgsi_dump.c:459:13: warning: comparison between signed and unsigned
integer expressions [-Wsign-compare]
       if (i < prop->Property.NrTokens - 2)

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
6 years agogallium/aux/cso_cache: Fix various warnings
Gert Wollny [Tue, 5 Jun 2018 11:58:45 +0000 (13:58 +0200)]
gallium/aux/cso_cache: Fix various warnings

cso_cache.c: In Function »delete_blend_state«:
cso_cache/cso_cache.c:90:51: Warning: unused parameter »data« [-Wunused-
parameter]
 static void delete_blend_state(void *state, void *data)
                                                   ^~~~
cso_cache/cso_cache.c: In Funktion »delete_depth_stencil_state«:
cso_cache/cso_cache.c:98:59: Warning: unused parameter »data« [-Wunused-
parameter]
 static void delete_depth_stencil_state(void *state, void *data)
                                                           ^~~~
cso_cache/cso_cache.c: In Funktion »delete_sampler_state«:
cso_cache/cso_cache.c:106:53: Warning: unused parameter »data« [-
Wunused-parameter]
 static void delete_sampler_state(void *state, void *data)
                                                     ^~~~
cso_cache/cso_cache.c: In Funktion »delete_rasterizer_state«:
cso_cache/cso_cache.c:114:56: Warning: unused parameter »data« [-
Wunused-parameter]
 static void delete_rasterizer_state(void *state, void *data)
                                                        ^~~~
cso_cache/cso_cache.c: In Funktion »delete_velements«:
cso_cache/cso_cache.c:122:49: Warning: unused parameter »data« [-
Wunused-parameter]
 static void delete_velements(void *state, void *data)
                                                 ^~~~
cso_cache/cso_cache.c: In Funktion »sanitize_cb«:
cso_cache/cso_cache.c:166:52: Warning: unused parameter »user_data« [-
Wunused-parameter]
                                int max_size, void *user_data)
                                                    ^~~~~~~~~
gallium/aux/cso_context.c: a -Wunused-parameter warning

cso_cache/cso_context.c: In Funktion »delete_sampler_state«:
cso_cache/cso_context.c:163:57: Warning: unused parameter »ctx« [-
Wunused-parameter]
 static boolean delete_sampler_state(struct cso_context *ctx, void
*state)
                                                         ^~~

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
6 years agoconfigure.ac: Add CFLAG -Wno-missing-field-initializers (v5)
Gert Wollny [Mon, 11 Jun 2018 16:24:39 +0000 (18:24 +0200)]
configure.ac: Add CFLAG -Wno-missing-field-initializers (v5)

This warning is misleading: When a struct is partially initialized without
assigning to the structure members by name, then the remaining fields
will be zeroed out, and this warning will be issued (if enabled). If, on the
other hand, the partial initialization is done by assigning to named members,
the remaining structure elements may hold random data, but the warning is not
issued. Since in Mesa the first approach to initialize structure elements is
used very often, and it is usually assumed that the remaining elements are
zeroed out, heeding this warning would be counter-productive.

v2: - add -Wno-missing-field-initializers to meson-build
    - fix empty line error
    (both Eric Engestrom)

v3: * check for -Wmissing-field-initializers warning and then disable it
      because gcc and clang always accept -Wno-* (Dylan Baker)
    * Also disable this warning for C++

v4: * meson.build add -Wno-missing-field-initializers to
      c_args instead of no_override_init_args (Eric Engstrom)

v5: * configure.ac: Correct copy/paste error with CFLAGS/CXXFLAGS

Reviewed-by: Marek Olšák <marek.olsak@amd.com> (v1)
Reviewed-by: Emil Velikov <emil.velikov@collabora.com> (v2)
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
6 years agoradv: remove unnecessary code around CACHE_FLUSH_AND_INV_TS_EVENT
Samuel Pitoiset [Tue, 19 Jun 2018 13:24:39 +0000 (15:24 +0200)]
radv: remove unnecessary code around CACHE_FLUSH_AND_INV_TS_EVENT

AMDVLK also always uses CACHE_FLUSH_AND_INV_TS_EVENT. The other
workaround is to flush DB metadata after emitting the framebuffer,
but that seems slower.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agoradv: Fix flush_bits being used uninitialized.
Bas Nieuwenhuizen [Tue, 19 Jun 2018 21:48:46 +0000 (23:48 +0200)]
radv: Fix flush_bits being used uninitialized.

A case of making things worse while trying to fix something minor ...

Fixes: ef79457004e "radv: Merge the flush bits of CMASK & DCC clear."
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
6 years agoradv: Add EXT_acquire_xlib_display to radv driver [v2]
Keith Packard [Fri, 9 Feb 2018 15:45:58 +0000 (07:45 -0800)]
radv: Add EXT_acquire_xlib_display to radv driver [v2]

This extension adds the ability to borrow an X RandR output for
temporary use directly by a Vulkan application to the radv driver.

v2:
Simplify addition of VK_USE_PLATFORM_XLIB_XRANDR_KHR to
vulkan_wsi_args

Suggested-by: Eric Engestrom <eric.engestrom@imgtec.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
6 years agoanv: Add EXT_acquire_xlib_display to anv driver [v3]
Keith Packard [Fri, 9 Feb 2018 15:45:58 +0000 (07:45 -0800)]
anv: Add EXT_acquire_xlib_display to anv driver [v3]

This extension adds the ability to borrow an X RandR output for
temporary use directly by a Vulkan application to the anv driver.

v2:
Simplify addition of VK_USE_PLATFORM_XLIB_XRANDR_KHR to
vulkan_wsi_args

Suggested-by: Eric Engestrom <eric.engestrom@imgtec.com>
v3:
Add extension to list in alphabetical order

Suggested-by: Jason Ekstrand <jason@jlekstrand.net>
Signed-off-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
6 years agovulkan: Add EXT_acquire_xlib_display [v5]
Keith Packard [Fri, 9 Feb 2018 15:45:58 +0000 (07:45 -0800)]
vulkan: Add EXT_acquire_xlib_display [v5]

This extension adds the ability to borrow an X RandR output for
temporary use directly by a Vulkan application. For DRM, we use the
Linux resource leasing mechanism.

v2:
Clean up xlib_lease detection

* Use separate temporary '_xlib_lease' variable to hold the
  option value to avoid changin the type of a variable.

* Use boolean expressions instead of additional if statements
  to compute resulting with_xlib_lease value.

* Simplify addition of VK_USE_PLATFORM_XLIB_XRANDR_KHR to
          vulkan_wsi_args

Suggested-by: Eric Engestrom <eric.engestrom@imgtec.com>
Move mode list from wsi_display to wsi_display_connector

Fix scope for wsi_display_mode and wsi_display_connector allocs

Suggested-by: Jason Ekstrand <jason@jlekstrand.net>
v3:
Adopt Jason Ekstrand's coding conventions

Declare variables at first use, eliminate extra whitespace
between types and names. Wrap lines to 80 columns.

Explicitly forbid multiple DRM leases. Making the code support
this looks tricky and will require additional thought.

Use xcb_randr_output_t throughout the internals of the
implementation. Convert at the public API
(wsi_get_randr_output_display).

Clean up check for usable active_crtc (possible when only the
desired output is connected to the crtc).

Suggested-by: Jason Ekstrand <jason.ekstrand@intel.com>
v4:
Move output resource fetching closer to use in
wsi_display_get_output. This simplifies the error returns in
earlier parts of the code a bit.

Return VK_ERROR_INITIALIZATION_FAILED from
wsi_acquire_xlib_display. Jason says this is the right error
message.

Suggested-by: Jason Ekstrand <jason.ekstrand@intel.com>
v5:
randr doesn't pass vscan over the wire, so we set vscan to 0
for randr-acquired modes, and test wsi modes for vscan <= 1
when comparing against randr modes.

Suggested-by: Jason Ekstrand <jason.ekstrand@intel.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
6 years agoradv: Add EXT_direct_mode_display to radv driver
Keith Packard [Fri, 9 Feb 2018 15:38:32 +0000 (07:38 -0800)]
radv: Add EXT_direct_mode_display to radv driver

Add support for the EXT_direct_mode_display extension. This just
provides the vkReleaseDisplayEXT function.

Signed-off-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
6 years agoanv: Add EXT_direct_mode_display to anv driver [v2]
Keith Packard [Fri, 9 Feb 2018 15:38:32 +0000 (07:38 -0800)]
anv: Add EXT_direct_mode_display to anv driver [v2]

Add support for the EXT_direct_mode_display extension. This just
provides the vkReleaseDisplayEXT function.

v2: Add extension to list in alphabetical order

Suggested-by: Jason Ekstrand <jason@jlekstrand.net>
Signed-off-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
6 years agovulkan: Add EXT_direct_mode_display [v2]
Keith Packard [Fri, 9 Feb 2018 15:38:32 +0000 (07:38 -0800)]
vulkan: Add EXT_direct_mode_display [v2]

Add support for the EXT_direct_mode_display extension. This just
provides the vkReleaseDisplayEXT function.

v2:
Adopt Jason Ekstrand's coding conventions

Declare variables at first use, eliminate extra whitespace
between types and names. Wrap lines to 80 columns.

Suggested-by: Jason Ekstrand <jason.ekstrand@intel.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
6 years agoradv: Add KHR_display extension to radv [v5]
Keith Packard [Wed, 7 Feb 2018 18:31:44 +0000 (10:31 -0800)]
radv: Add KHR_display extension to radv [v5]

This adds support for the KHR_display extension to the radv Vulkan
driver. The driver now attempts to open the master DRM node when the
KHR_display extension is requested so that the common winsys code can
perform the necessary operations.

v2:
* Simplify addition of VK_USE_PLATFORM_DISPLAY_KHR to
          vulkan_wsi_args

Suggested-by: Eric Engestrom <eric.engestrom@imgtec.com>
v3:
Adapt to new wsi_device_init API (added display_fd)

v4:
Adopt Jason Ekstrand's coding conventions

Declare variables at first use, eliminate extra whitespace
between types and names. Wrap lines to 80 columns.

Suggested-by: Jason Ekstrand <jason.ekstrand@intel.com>
v5:
Add vkCreateDisplayModeKHR. This doesn't actually create
new modes, it only looks to see if the requested parameters
matches an existing mode and returns that.

Suggested-by: Jason Ekstrand <jason.ekstrand@intel.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
6 years agoanv: Add KHR_display extension to anv [v7]
Keith Packard [Wed, 7 Feb 2018 18:31:44 +0000 (10:31 -0800)]
anv: Add KHR_display extension to anv [v7]

This adds support for the KHR_display extension to the anv Vulkan
driver. The driver now attempts to open the master DRM node when the
KHR_display extension is requested so that the common winsys code can
perform the necessary operations.

v2: Make sure primary fd is usable

When KHR_display is selected, we try to open the primary node
instead of the render node in case the user wants to use
KHR_display for presentation. However, if we're actually going
to end up using RandR leases, then we don't care if the
resulting fd can't be used for display, but the kernel also
prevents us from using it for drawing when someone else has
master.

v3:
Simplify addition of VK_USE_PLATFORM_DISPLAY_KHR to vulkan_wsi_args

Suggested-by: Eric Engestrom <eric.engestrom@imgtec.com>
v4:
Adapt primary node usage to new wsi_device_init API

v5:
Adopt Jason Ekstrand's coding conventions

        Declare variables at first use, eliminate extra whitespace between
        types and names. Wrap lines to 80 columns.

Remove spurious MM_PER_PIXEL define

Suggested-by: Jason Ekstrand <jason.ekstrand@intel.com>
v6:
Open DRM master before initializing WSI layer.

The DRM master FD is passed to the WSI layer during
initialization, so we need to open the device slightly earlier
in the function.

Close DRM master in device_finish.

Use anv_gem_get_param to detect working master_fd instead of
directly using the ioctl.

Suggested-by: Jason Ekstrand <jason.ekstrand@intel.com>
v7:
Add vkCreateDisplayModeKHR. This doesn't actually create
new modes, it only looks to see if the requested parameters
matches an existing mode and returns that.

Suggested-by: Jason Ekstrand <jason.ekstrand@intel.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
6 years agovulkan: Add KHR_display extension using DRM [v10]
Keith Packard [Wed, 7 Feb 2018 18:31:44 +0000 (10:31 -0800)]
vulkan: Add KHR_display extension using DRM [v10]

This adds support for the KHR_display extension support to the vulkan
WSI layer. Driver support will be added separately.

v2:
* fix double ;; in wsi_common_display.c

* Move mode list from wsi_display to wsi_display_connector

* Fix scope for wsi_display_mode andwsi_display_connector
          allocs

* Switch all allocations to vk_zalloc instead of vk_alloc.

* Fix DRM failure in
          wsi_display_get_physical_device_display_properties

  When DRM fails, or when we don't have a master fd
  (presumably due to application errors), just return 0
  properties from this function, which is at least a valid
  response.

* Use vk_outarray for all property queries

  This is a bit less error-prone than open-coding the same
  stuff.

* Remove VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR from surface caps

  Until we have multi-plane support, we shouldn't pretend to
  have any multi-plane semantics, even if undefined.

Suggested-by: Jason Ekstrand <jason@jlekstrand.net>
* Simplify addition of VK_USE_PLATFORM_DISPLAY_KHR to
          vulkan_wsi_args

Suggested-by: Eric Engestrom <eric.engestrom@imgtec.com>
v3:
Add separate 'display_fd' and 'render_fd' arguments to
wsi_device_init API. This allows drivers to use different FDs
for the different aspects of the device.

Use largest mode as display size when no preferred mode.

If the display doesn't provide a preferred mode, we'll assume
that the largest supported mode is the "physical size" of the
device and report that.

v4:
Make wsi_image_state enumeration values uppercase.
Follow more common mesa conventions.

Remove 'render_fd' from wsi_device_init API.  The
wsi_common_display code doesn't use this fd at all, so stop
passing it in. This avoids any potential confusion over which
fd to use when creating display-relative object handles.

Remove call to wsi_create_prime_image which would never have
been reached as the necessary condition (use_prime_blit) is
never set.

whitespace cleanups in wsi_common_display.c

Suggested-by: Jason Ekstrand <jason@jlekstrand.net>
Add depth/bpp info to available surface formats.  Instead of
hard-coding depth 24 bpp 32 in the drmModeAddFB call, use the
requested format to find suitable values.

Destroy kernel buffers and FBs when swapchain is destroyed. We
were leaking both of these kernel objects across swapchain
destruction.

Note that wsi_display_wait_for_event waits for anything to
happen.  wsi_display_wait_for_event is simply a yield so that
the caller can then check to see if the desired state change
has occurred.

Record swapchain failures in chain for later return. If some
asynchronous swapchain activity fails, we need to tell the
application eventually. Record the failure in the swapchain
and report it at the next acquire_next_image or queue_present
call.

Fix error returns from wsi_display_setup_connector.  If a
malloc failed, then the result should be
VK_ERROR_OUT_OF_HOST_MEMORY. Otherwise, the associated ioctl
failed and we're either VT switched away, or our lease has
been revoked, in which case we should return
VK_ERROR_OUT_OF_DATE_KHR.

Make sure both sides of if/else brace use matches

Note that we assume drmModeSetCrtc is synchronous. Add a
comment explaining why we can idle any previous displayed
image as soon as the mode set returns.

Note that EACCES from drmModePageFlip means VT inactive.  When
vt switched away drmModePageFlip returns EACCES. Poll once a
second waiting until we get some other return value back.

Clean up after alloc failure in
wsi_display_surface_create_swapchain. Destroy any created
images, free the swapchain.

Remove physical_device from wsi_display_init_wsi. We never
need this value, so remove it from the API and from the
internal wsi_display structure.

Use drmModeAddFB2 in wsi_display_image_init.  This takes a drm
format instead of depth/bpp, which provides more control over
the format of the data.

v5:
Set the 'currentStackIndex' member of the
VkDisplayPlanePropertiesKHR record to zero, instead of
indexing across all displays. This value is the stack depth of
the plane within an individual display, and as the current
code supports only a single plane per display, should be set
to zero for all elements

Discovered-by: David Mao <David.Mao@amd.com>
v6:
Remove 'platform_display' bits from the build and use the
existing 'platform_drm' instead.

v7:
Ensure VK_ICD_WSI_PLATFORM_MAX is large enough by
setting to VK_ICD_WSI_PLATFORM_DISPLAY + 1

v8:
Simplify wsi_device_init failure from wsi_display_init_wsi
by using the same pattern as the other wsi layers.

    Adopt Jason Ekstrand's white space and variable declaration
suggestions. Declare variables at first use, eliminate extra
whitespace between types and names, add list iterator helpers,
switch to lower-case list_ macros.

    Respond to Jason's April 8 review:

* Create a function to convert relative to absolute timeouts
          to catch overflow issues in one place

* use VK_NULL_HANDLE to clear prop->currentDisplay

* Get rid of available_present_modes array.

* return OUT_OF_DATE_KHR when display_queue_next called after
  display has been released.

* Make errors from mode setting fatal in display_queue_next

* Remove duplicate pthread_mutex_init call

* Add wsi_init_pthread_cond_monotonic helper function to
  isolate pthread error handling from wsi_display_init_wsi

Suggested-by: Jason Ekstrand <jason.ekstrand@intel.com>
v9:
Fix vscan handling by using MAX2(vscan, 1) everywhere. Vscan
can be zero anywhere, which is treated the same as 1.

Suggested-by: Jason Ekstrand <jason.ekstrand@intel.com>
v10:
Respond to Vulkan CTS failures.

1. Initialize planeReorderPossible in display_properties code

2. Only report connected displays in
   get_display_plane_supported_displays

3. Return VK_ERROR_OUT_OF_HOST_MEMORY when pthread cond
   initialization fails.

Signed-off-by: Jason Ekstrand <jason.ekstrand@intel.com>
4. Add vkCreateDisplayModeKHR. This doesn't actually create
   new modes, it only looks to see if the requested parameters
   matches an existing mode and returns that.

Suggested-by: Jason Ekstrand <jason.ekstrand@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Signed-off-by: Keith Packard <keithp@keithp.com>
6 years agoradv: Merge the flush bits of CMASK & DCC clear.
Bas Nieuwenhuizen [Tue, 19 Jun 2018 08:05:20 +0000 (10:05 +0200)]
radv: Merge the flush bits of CMASK & DCC clear.

Probably won't be much different in practice, but still wrong.

Fixes Coverity issue 1435002.

Not CC'ing to stable since this is only hit if you enable MSAA
DCC via RADV_DEBUG.

Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
6 years agoradv: Don't check for pipeline being set in draw.
Bas Nieuwenhuizen [Tue, 19 Jun 2018 08:03:20 +0000 (10:03 +0200)]
radv: Don't check for pipeline being set in draw.

Draws without pipeline are definitely not allowed.

Fixes Coverity issue 1434216.

Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
6 years agoradeonsi: rename r600_texture -> si_texture, rxxx -> xxx or sxxx
Marek Olšák [Tue, 19 Jun 2018 01:34:57 +0000 (21:34 -0400)]
radeonsi: rename r600_texture -> si_texture, rxxx -> xxx or sxxx

Acked-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agoamd,radeonsi: rename radeon_winsys_cs -> radeon_cmdbuf
Marek Olšák [Tue, 19 Jun 2018 01:07:10 +0000 (21:07 -0400)]
amd,radeonsi: rename radeon_winsys_cs -> radeon_cmdbuf

Acked-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
6 years agofreedreno/a5xx: move emit_marker5() into a5xx backend
Rob Clark [Mon, 18 Jun 2018 22:22:29 +0000 (18:22 -0400)]
freedreno/a5xx: move emit_marker5() into a5xx backend

The scratch registers move again in a6xx.. so for post-a4xx let's just
move this into the backend, and move the one place it used to be needed
in core into fd5_emit_ib().  For a6xx we will do similar, calling
emit_marker6() from fd6_emit_ib().

Signed-off-by: Rob Clark <robdclark@gmail.com>
6 years agofreedreno/a5xx: fix crash in dEQP-GLES31.stress.vertex_attribute_binding.buffer_bound...
Rob Clark [Thu, 14 Jun 2018 13:34:11 +0000 (09:34 -0400)]
freedreno/a5xx: fix crash in dEQP-GLES31.stress.vertex_attribute_binding.buffer_bounds.bind_vertex_buffer_offset_near_wrap_10

This is kind of a hack, but really the only problem is the
debug_assert() in OUT_RELOC().  But the debug_assert() is
useful to catch real issues.  So just add some #ifdef DEBUG
code to filter things out before we hit the assert.

Signed-off-by: Rob Clark <robdclark@gmail.com>
6 years agofreedreno/a5xx: don't crash if compute shader compile fails
Rob Clark [Wed, 13 Jun 2018 16:46:17 +0000 (12:46 -0400)]
freedreno/a5xx: don't crash if compute shader compile fails

It is impolite, and a bit annoying with dEQP (all tests running in
single process).

Signed-off-by: Rob Clark <robdclark@gmail.com>
6 years agofreedreno/ir3: fix missing recursion into block condition
Rob Clark [Wed, 13 Jun 2018 14:50:37 +0000 (10:50 -0400)]
freedreno/ir3: fix missing recursion into block condition

Fixes a problem seen with dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.row_major_mat4

Signed-off-by: Rob Clark <robdclark@gmail.com>
6 years agofreedreno/a5xx: better FOUR_QUAD/TWO_QUAD decision for compute
Rob Clark [Wed, 13 Jun 2018 13:50:34 +0000 (09:50 -0400)]
freedreno/a5xx: better FOUR_QUAD/TWO_QUAD decision for compute

If we aren't going to get full occupancy, then use TWO_QUAD.

Signed-off-by: Rob Clark <robdclark@gmail.com>
6 years agofreedreno/a5xx: bordercolor fixes
Rob Clark [Tue, 12 Jun 2018 13:56:12 +0000 (09:56 -0400)]
freedreno/a5xx: bordercolor fixes

Need a bit of hand-holding for stencil bordercolor, and add border color
values for sRGB.

Signed-off-by: Rob Clark <robdclark@gmail.com>