mesa.git
8 years agoegl/dri2: set WL_bind_wayland_display in a consistent way
Emil Velikov [Thu, 25 Aug 2016 12:15:43 +0000 (13:15 +0100)]
egl/dri2: set WL_bind_wayland_display in a consistent way

Introduce a helper and use it throughout the platform code. This allows
us to reduce the amount of ifdef(s) and (potentially) use
kms_swrast_dri.so for !drm platforms (namely wayland and x11).

Note: in the future as other platforms (android, surfaceless) support
the extension they can reuse the helper.

v2: Rebase, check for device_name.
Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
8 years agoegl/android: remove duplicate KHR_image_base set
Emil Velikov [Thu, 25 Aug 2016 12:04:18 +0000 (13:04 +0100)]
egl/android: remove duplicate KHR_image_base set

The core egl/dri2 already sets the extension bit _only_ when possible -
which in Android's case is always.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
8 years agoloader/dri3: constify the loader_dri3_vtable
Emil Velikov [Thu, 25 Aug 2016 10:08:30 +0000 (11:08 +0100)]
loader/dri3: constify the loader_dri3_vtable

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
8 years agoegl/dri2: micro optimise dri2_bind_extensions()
Emil Velikov [Thu, 25 Aug 2016 08:51:54 +0000 (09:51 +0100)]
egl/dri2: micro optimise dri2_bind_extensions()

Do not loop over all matches if we've already found one.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
8 years agoegl/dri2: annotate dri2_extension_match instances as const data
Emil Velikov [Wed, 24 Aug 2016 23:52:36 +0000 (00:52 +0100)]
egl/dri2: annotate dri2_extension_match instances as const data

v2: Rebase.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
8 years agoegl/dri2: use dri2_bind_extensions to manage the optional extensions
Emil Velikov [Wed, 24 Aug 2016 23:51:05 +0000 (00:51 +0100)]
egl/dri2: use dri2_bind_extensions to manage the optional extensions

v2: dri2_bind_extensions() now takes optional as an argument.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
8 years agogbm: rename gbm_dri_device::{,loader_}extensions
Emil Velikov [Wed, 24 Aug 2016 23:42:56 +0000 (00:42 +0100)]
gbm: rename gbm_dri_device::{,loader_}extensions

To align with the name used in the EGL and GLX loaders.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
8 years agoegl/dri2: add support for optional extensions in dri2_bind_extensions()
Emil Velikov [Wed, 24 Aug 2016 23:16:01 +0000 (00:16 +0100)]
egl/dri2: add support for optional extensions in dri2_bind_extensions()

Will allow us to reuse the function for optional extensions and fold a
bit of code.

v2: Make dri2_bind_extensions::optional flag an argument to
dri2_bind_extensions (Kristian).

Cc: Rob Clark <robdclark@gmail.com>
Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
8 years agoegl/dri2: coding style cleanup
Emil Velikov [Wed, 24 Aug 2016 23:12:13 +0000 (00:12 +0100)]
egl/dri2: coding style cleanup

Consistently indent with space rather than a mix of tab and
spaces.

v2: Keep the structs properly aligned (Eric).

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
8 years agoegl/x11: don't crash if dri2_dpy->conn is NULL
Emil Velikov [Wed, 24 Aug 2016 22:57:16 +0000 (23:57 +0100)]
egl/x11: don't crash if dri2_dpy->conn is NULL

The dri3 version of commits 60e9c35b3a0 and 6de9a03bed4.

While using xcb_connect() guarantees that we always get a non NULL
return value, XGetXCBConnection() does/can not.

CC: <mesa-stable@lists.freedesktop.org>
Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
8 years agoegl/dri2: rework dri2_egl_display::extensions storage
Emil Velikov [Wed, 24 Aug 2016 22:32:27 +0000 (23:32 +0100)]
egl/dri2: rework dri2_egl_display::extensions storage

Remove the error prone fixed size array.
While we're here also rename to loader_extensions like in the GLX code.

v2: Rebase. Keep image_loader_extension within the wayland_drm
dri2_loader_extensions list.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
8 years agoegl/dri2: remove unused dri2_egl_display::{dri2,swrast}_loader_extension
Emil Velikov [Tue, 16 Aug 2016 17:47:52 +0000 (18:47 +0100)]
egl/dri2: remove unused dri2_egl_display::{dri2,swrast}_loader_extension

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
8 years agoegl/x11: don't populate dri2_dpy->swrast_loader_extension
Emil Velikov [Tue, 16 Aug 2016 17:44:19 +0000 (18:44 +0100)]
egl/x11: don't populate dri2_dpy->swrast_loader_extension

Analogous to earlier commits.

Note: the actual version of the extension is 1, since it does not
implement .putImage2.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
8 years agoegl/wayland: don't populate dri2_dpy->swrast_loader_extension
Emil Velikov [Tue, 16 Aug 2016 17:39:14 +0000 (18:39 +0100)]
egl/wayland: don't populate dri2_dpy->swrast_loader_extension

Similar to the dri2 one - the extension stored in struct
dri2_egl_display is unused.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
8 years agoegl/x11: don't populate dri2_dpy->dri2_loader_extension
Emil Velikov [Tue, 16 Aug 2016 17:29:34 +0000 (18:29 +0100)]
egl/x11: don't populate dri2_dpy->dri2_loader_extension

Analogous to the earlier android and wayland patches. As we're here we
can drop exposing the old version of the extension.

Any dri loader/driver interface use lower bound checking thus exposing
dri2 loader v3 to a v2 capable driver is perfectly normal.

v2: Preserve compat with dri2_minor < 1. The driver does not know if
there is a protocol to manage getBuffersWithFormat(). It's up-to the
loader to expose the vfunc if there is one. (Kristian)

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
8 years agoegl/wayland: don't populate dri2_dpy->dri2_loader_extension
Emil Velikov [Tue, 16 Aug 2016 17:21:48 +0000 (18:21 +0100)]
egl/wayland: don't populate dri2_dpy->dri2_loader_extension

Analogous to the earlier android patch.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
8 years agoegl/surfaceless: trivial coding style fixes
Emil Velikov [Tue, 16 Aug 2016 17:08:13 +0000 (18:08 +0100)]
egl/surfaceless: trivial coding style fixes

Remove a few gratious blank lines and use the correct level of
indentation.

Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
8 years agoegl/surfaceless: don't check the mask(s) prior to calling dri2_add_config
Emil Velikov [Tue, 16 Aug 2016 16:56:34 +0000 (17:56 +0100)]
egl/surfaceless: don't check the mask(s) prior to calling dri2_add_config

The latter already does it for us.

As we're here annotate the masks as const and use unsigned for the
index(es).

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
8 years agoegl/surfaceless: remove unused dri2_loader_extension implementation
Emil Velikov [Tue, 16 Aug 2016 16:33:41 +0000 (17:33 +0100)]
egl/surfaceless: remove unused dri2_loader_extension implementation

Earlier commit introduced support for image_loader and left the
dri2_loader code dangling/unused. Let's remove it.

Fixes: 63c5d5c6c46 ("Added pbuffer hooks for surfaceless platform")
Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
8 years agoegl/android: don't populate dri2_dpy->dri2_loader_extension
Emil Velikov [Tue, 16 Aug 2016 16:23:23 +0000 (17:23 +0100)]
egl/android: don't populate dri2_dpy->dri2_loader_extension

The extension stored in struct dri2_egl_display isn't used, thus we can
create a static const instance of the extension and point extensions[]
to it.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
8 years agoegl/dri2: rework dri2_make_current code flow
Emil Velikov [Tue, 16 Aug 2016 12:47:25 +0000 (13:47 +0100)]
egl/dri2: rework dri2_make_current code flow

Fold duplicate conditional blocks and add a few extra comments ;-)

v2: Bring back the explicit "unbind" logic (Eric), remove NULL derefs.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
8 years agoegl/dri2: drop NULL checks prior to dri2_destroy_surface
Emil Velikov [Tue, 16 Aug 2016 12:24:48 +0000 (13:24 +0100)]
egl/dri2: drop NULL checks prior to dri2_destroy_surface

The function already have the respective check within.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
8 years agoegl/dri2: call static functions directly, not via _EGLDriver::API
Emil Velikov [Thu, 18 Aug 2016 15:33:39 +0000 (16:33 +0100)]
egl/dri2: call static functions directly, not via _EGLDriver::API

The indirection is meant to be used by the core EGL implementation in
main. Not in the drivers themselves.

Move the dri2_destroy_surface definition to avoid forward declaration of
the static function.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com>
8 years agoegl/dri2: use dri2_egl_display inline wrapper where possible
Emil Velikov [Fri, 15 Jul 2016 11:47:37 +0000 (12:47 +0100)]
egl/dri2: use dri2_egl_display inline wrapper where possible

This way the only places that reference DriverData are the ones that
manipulate it.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com>
8 years agoegl/dri2: bail out on NULL dpy in dri2_display_release()
Emil Velikov [Thu, 18 Aug 2016 15:43:36 +0000 (16:43 +0100)]
egl/dri2: bail out on NULL dpy in dri2_display_release()

Currently all callers are careful enough not to do that, yet that will
not be the case in the future.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com>
8 years agoegl/dri2: move surface refcounting out of the platform code
Emil Velikov [Tue, 16 Aug 2016 12:04:37 +0000 (13:04 +0100)]
egl/dri2: move surface refcounting out of the platform code

All the platforms are duplicating what should be a driver/dri2 thing -
refcounting. Just fold it accordingly.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com>
8 years agoegl/dri2: coding style fix
Emil Velikov [Tue, 16 Aug 2016 10:03:33 +0000 (11:03 +0100)]
egl/dri2: coding style fix

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com>
8 years agoegl/dri2: non-shared glapi cleanups
Emil Velikov [Tue, 16 Aug 2016 15:33:49 +0000 (16:33 +0100)]
egl/dri2: non-shared glapi cleanups

For a while now we require shared glapi for EGL, thus we can drop a
few bits from the olden days. Namely - dlopen(NULL...) is not possible,
error out at build stage if so and drop the guard around dlclose().

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com>
8 years agoegl/dri2: glFlush is not optional, treat it as such
Emil Velikov [Tue, 16 Aug 2016 13:25:19 +0000 (14:25 +0100)]
egl/dri2: glFlush is not optional, treat it as such

The documentation is clear - one must glFlush the old context on
eglMakeCurrent. Thus keeping it optional is not something we should be
doing. Furthermore if we cannot get the entry point we're likely having
a broken setup/stack.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com>
8 years agoaubinator: replace pragma once with ifndef guard
Emil Velikov [Tue, 11 Oct 2016 17:26:26 +0000 (18:26 +0100)]
aubinator: replace pragma once with ifndef guard

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Sirisha Gandikota<sirisha.gandikota@intel.com>
Reviewed-by: Chad Versace <chadversary@chromium.org>
8 years agoanv: error out if anv_genX.h is included by !anv_private.h
Emil Velikov [Tue, 11 Oct 2016 17:26:25 +0000 (18:26 +0100)]
anv: error out if anv_genX.h is included by !anv_private.h

Update the comment to reflect the correct filename and add a guard to
catch incorrect inclusion of the header.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Chad Versace <chadversary@chromium.org>
8 years agoanv: use correct header guards
Emil Velikov [Tue, 11 Oct 2016 17:26:24 +0000 (18:26 +0100)]
anv: use correct header guards

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Chad Versace <chadversary@chromium.org>
8 years agointel/genxml: use correct header guards
Emil Velikov [Tue, 11 Oct 2016 17:26:23 +0000 (18:26 +0100)]
intel/genxml: use correct header guards

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Chad Versace <chadversary@chromium.org>
8 years agointel/common: use correct header guards
Emil Velikov [Tue, 11 Oct 2016 17:26:22 +0000 (18:26 +0100)]
intel/common: use correct header guards

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Chad Versace <chadversary@chromium.org>
8 years agointel/blorp: use correct header guards
Emil Velikov [Tue, 11 Oct 2016 17:26:21 +0000 (18:26 +0100)]
intel/blorp: use correct header guards

Avoid the discouraged use of pragma once and a missing guard for
blorp_genX_exec.h.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Chad Versace <chadversary@chromium.org>
8 years agoisl: use ifndef header guards
Emil Velikov [Tue, 11 Oct 2016 17:26:20 +0000 (18:26 +0100)]
isl: use ifndef header guards

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Chad Versace <chadversary@chromium.org>
8 years agoisl: make locally used functions static
Emil Velikov [Tue, 11 Oct 2016 17:26:19 +0000 (18:26 +0100)]
isl: make locally used functions static

Signed-off-by: Emil Velikov <emil.velikov@collabra.com>
Reviewed-by: Chad Versace <chadversary@chromium.org>
8 years agoisl: trivial include-what-you-want cleanups
Emil Velikov [Tue, 11 Oct 2016 17:26:18 +0000 (18:26 +0100)]
isl: trivial include-what-you-want cleanups

Noticed while skimming through the files.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Chad Versace <chadversary@chromium.org>
8 years agoisl/gen7: remove unneeded ISL_DEV_GEN check
Emil Velikov [Tue, 11 Oct 2016 17:26:17 +0000 (18:26 +0100)]
isl/gen7: remove unneeded ISL_DEV_GEN check

The function gen7_format_needs_valign2 has two callers - the gen7 only
gen7_choose_valign_el() and isl_gen6_filter_tiling(). The latter of
which already guarding the invocation appropriately.

To be extra cautious add a couple of asserts alongside the removal of the
runtime check.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Chad Versace <chadversary@chromium.org>
8 years agoisl: prefix non-static API with isl_
Emil Velikov [Tue, 11 Oct 2016 17:26:16 +0000 (18:26 +0100)]
isl: prefix non-static API with isl_

The rest of ISL already follows this approach. Be consistent and resolve
the final references.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Chad Versace <chadversary@chromium.org>
8 years agoisl/gen6: correctly check msaa layout samples count
Emil Velikov [Tue, 11 Oct 2016 17:26:15 +0000 (18:26 +0100)]
isl/gen6: correctly check msaa layout samples count

Samples == 1 is a valid value, so returning false is plain wrong.
Seeming copy/paste typo introduced since day 1.

Fixes: afdadec77f5 ("isl: Implement isl_surf_init() for gen4-gen9")
Cc: mesa-stable@lists.freedesktop.org
Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Chad Versace <chadversary@chromium.org>
8 years agoautomake: add radv to the `make distcheck' hooks
Emil Velikov [Wed, 12 Oct 2016 18:05:33 +0000 (19:05 +0100)]
automake: add radv to the `make distcheck' hooks

Will allow us to catch issues (as fixed with previous patches) rather
than release a broken tarball.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Acked-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
8 years agoradv: move AMDGPU_LIBS later in the link chain
Emil Velikov [Wed, 12 Oct 2016 18:05:32 +0000 (19:05 +0100)]
radv: move AMDGPU_LIBS later in the link chain

At the moment (albeit unlikely) one could get link-time issues, since
libdrm_amdgpu.so is before it's users in the link chain.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Edward O'Callaghan <funfunctor@folklore1984.net>
Acked-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
8 years agoradv: correct variable name VISIBILITY_{, C}FLAGS
Emil Velikov [Wed, 12 Oct 2016 18:05:31 +0000 (19:05 +0100)]
radv: correct variable name VISIBILITY_{, C}FLAGS

The letter C was missing, thus in turn all the internal symbols were
exported.

As a result we hide ~150 symbols and cut ~36K from libvulkan_radeon.so.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
Acked-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
8 years agoamd/addrlib: hide private symbols via VISIBILITY_CXXFLAGS
Emil Velikov [Wed, 12 Oct 2016 18:05:30 +0000 (19:05 +0100)]
amd/addrlib: hide private symbols via VISIBILITY_CXXFLAGS

Private/internal symbols should not be exported. Using the CXXFLAGS cuts
~300 exported symbols and ~23K from libvulkan_radeon.so.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Acked-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
8 years agointel: automake: replace direct basename $@ invokation with $(@F)
Emil Velikov [Wed, 12 Oct 2016 18:05:29 +0000 (19:05 +0100)]
intel: automake: replace direct basename $@ invokation with $(@F)

Use the shorthand make variable(s) as elsewhere in the build.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
8 years agogallium: annotate sw_driver_descriptor instance as const data
Emil Velikov [Tue, 11 Oct 2016 18:39:27 +0000 (19:39 +0100)]
gallium: annotate sw_driver_descriptor instance as const data

Already treated and handled as such.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
8 years agogallium: annotate drm_driver_descriptor instance as const data
Emil Velikov [Tue, 11 Oct 2016 18:39:26 +0000 (19:39 +0100)]
gallium: annotate drm_driver_descriptor instance as const data

Already treated and handled as such.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
8 years agogallium: rename drm_driver_descriptor::{, driver_}name
Emil Velikov [Tue, 11 Oct 2016 18:39:25 +0000 (19:39 +0100)]
gallium: rename drm_driver_descriptor::{, driver_}name

Historically we use "device name" for the name of the kernel module and
"driver name" for the dri/other driver.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
8 years agogallium: remove unused drm_driver_descriptor::driver_name
Emil Velikov [Tue, 11 Oct 2016 18:39:24 +0000 (19:39 +0100)]
gallium: remove unused drm_driver_descriptor::driver_name

Likely unused since day 1, although I've only checked back until the
st/dri unification with commit 29ca7d2c948 ("st/dri: merge dri/drm and
dri/sw backends")

Based on the comment, referencing drmOpenByName it's not something we
want to bring back.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
8 years agogallium: fix drm_driver_descriptor::name comment
Emil Velikov [Tue, 11 Oct 2016 18:39:23 +0000 (19:39 +0100)]
gallium: fix drm_driver_descriptor::name comment

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
8 years agomesa_glinterop: allow building without X and related headers
Emil Velikov [Wed, 12 Oct 2016 17:49:36 +0000 (18:49 +0100)]
mesa_glinterop: allow building without X and related headers

This commit effectively reverts c10dcb2ce837922c6ee4e191e6d6202098a5ee10
and fixes the typedef redefinition which inspired it.

In order to prevent requiring X packages at build time earlier commit
forward declared the required X/GLX typedefs. Since that approach
introduced typedef redefinition (a C11 feature) it was reverted.

To avoid the redefinition while _not_ mandating X and related headers
forward declare the structs and use those through the header.

As anyone uses the mesa interop header they ensure that the X (or others
in terms of EGL) headers are included, which ensures that everything is
resolved within the compilation unit.

Cc: Vinson Lee <vlee@freedesktop.org>
Cc: "12.0" <mesa-stable@lists.freedesktop.org>
Cc: Tapani Pälli <tapani.palli@intel.com>
Cc: Chih-Wei Huang <cwhuang@android-x86.org>
Fixes: c10dcb2ce837 ("Revert "mesa_glinterop: remove inclusion of GLX
header"")
Fixes: 8472045b16b3 ("mesa_glinterop: remove inclusion of GLX header")
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=96770
Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Tested-by: Vinson Lee <vlee@freedesktop.org>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
8 years agost/va: Fix H.264 PicOrderCnt value
Mark Thompson [Wed, 12 Oct 2016 22:54:03 +0000 (23:54 +0100)]
st/va: Fix H.264 PicOrderCnt value

TopFieldPicOrderCnt is exactly the PicOrderCnt value for a frame - see
H.264 section 8.2.1.

Reviewed-by: Christian König <christian.koenig@amd.com>
8 years agost/va: Baseline profile is not supported
Mark Thompson [Wed, 12 Oct 2016 22:53:35 +0000 (23:53 +0100)]
st/va: Baseline profile is not supported

Constrained baseline profile is supported, so use that instead.  This
matches what the encoder already does (constraint_set1_flag is always
set in the output bitstream).

Reviewed-by: Christian König <christian.koenig@amd.com>
8 years agost/va: Return surface formats depending on config chroma format
Mark Thompson [Wed, 12 Oct 2016 22:53:01 +0000 (23:53 +0100)]
st/va: Return surface formats depending on config chroma format

This makes the supported format actually match the configuration, and
allows the user to observe that NV12 is supported for video processing
where previously they couldn't (though it did always work if they
blindly tried to use it anyway).

Reviewed-by: Christian König <christian.koenig@amd.com>
8 years agost/va: Save surface chroma format in config
Mark Thompson [Wed, 12 Oct 2016 22:52:30 +0000 (23:52 +0100)]
st/va: Save surface chroma format in config

Both YUV420 and RGB32 configurations are supported, so we need to be
able to distinguish which is being used.

Reviewed-by: Christian König <christian.koenig@amd.com>
8 years agost/va: Return more useful config attributes
Mark Thompson [Wed, 12 Oct 2016 22:52:01 +0000 (23:52 +0100)]
st/va: Return more useful config attributes

The encoder attributes are needed for a user of the encoder to be
able to configure it sensibly without internal knowledge.

Reviewed-by: Christian König <christian.koenig@amd.com>
8 years agoglx: Perform check for valid fbconfig against proper X-Screen.
Mario Kleiner [Tue, 11 Oct 2016 18:42:03 +0000 (20:42 +0200)]
glx: Perform check for valid fbconfig against proper X-Screen.

Commit cf804b4455fac9e585b3600a8318caaced9c23de
('glx: fix crash with bad fbconfig') introduced a check
in glXCreateNewContext() if the given config is a valid
fbconfig.

Unfortunately the check always checks the given config against
the fbconfigs of the DefaultScreen(dpy), instead of the
actual X-Screen specified in the config config->screen.

This leads to failure whenever a GL context is created
on a non-DefaultScreen(dpy), e.g., on X-Screen 1 of
a multi-x-screen setup, where the default screen is
typically 0.

Fix this by using config->screen instead of DefaultScreen(dpy).

Tested to fix context creation failure on a dual-x-screen setup.

Signed-off-by: Mario Kleiner <mario.kleiner.de@gmail.com>
Cc: "11.2 12.0" <mesa-stable@lists.freedesktop.org>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
8 years agoswr: [rasterizer core] don't construct pArContext on non-ar builds
Tim Rowley [Fri, 14 Oct 2016 01:57:05 +0000 (20:57 -0500)]
swr: [rasterizer core] don't construct pArContext on non-ar builds

Stops debug directory being created on non-ar builds.

Signed-off-by: Tim Rowley <timothy.o.rowley@intel.com>
8 years agoswr: [rasterizer core] remove WorkerWaitForThreadEvent bucket
Tim Rowley [Fri, 14 Oct 2016 01:56:54 +0000 (20:56 -0500)]
swr: [rasterizer core] remove WorkerWaitForThreadEvent bucket

Cause of bucket stop capture hang, as threads get stuck in level 1.

Signed-off-by: Tim Rowley <timothy.o.rowley@intel.com>
8 years agoswr: [rasterizer core] move binner functionality to separate file
Tim Rowley [Thu, 13 Oct 2016 17:30:34 +0000 (12:30 -0500)]
swr: [rasterizer core] move binner functionality to separate file

Signed-off-by: Tim Rowley <timothy.o.rowley@intel.com>
8 years agoswr: [rasterizer scripts] add DEBUG_OUTPUT_DIR knob
Tim Rowley [Thu, 13 Oct 2016 15:32:58 +0000 (10:32 -0500)]
swr: [rasterizer scripts] add DEBUG_OUTPUT_DIR knob

Signed-off-by: Tim Rowley <timothy.o.rowley@intel.com>
8 years agoswr: [rasterizer core] fix comment typo
Tim Rowley [Thu, 13 Oct 2016 14:44:06 +0000 (09:44 -0500)]
swr: [rasterizer core] fix comment typo

Signed-off-by: Tim Rowley <timothy.o.rowley@intel.com>
8 years agoswr: [rasterizer core/sim] 8x2 backend + 16-wide tile clear/load/store
Tim Rowley [Tue, 11 Oct 2016 17:57:29 +0000 (12:57 -0500)]
swr: [rasterizer core/sim] 8x2 backend + 16-wide tile clear/load/store

Work in progress (disabled).

USE_8x2_TILE_BACKEND define in knobs.h enables AVX512 code paths
(emulated on non-AVX512 HW).

Signed-off-by: Tim Rowley <timothy.o.rowley@intel.com>
8 years agoswr: [rasterizer archrast] fix event file issue with saving data
Tim Rowley [Tue, 11 Oct 2016 17:42:35 +0000 (12:42 -0500)]
swr: [rasterizer archrast] fix event file issue with saving data

Also, tagging stats with draw id to correlate these events with
draw/dispatch events.

Signed-off-by: Tim Rowley <timothy.o.rowley@intel.com>
8 years agoswr: [rasterizer common] fix assert index
Eric Engestrom [Wed, 12 Oct 2016 21:13:29 +0000 (22:13 +0100)]
swr: [rasterizer common] fix assert index

Fixes: b3bd8bb611bb465d2e5e ("swr: [rasterizer core] add support
       for "RAW" surface format")
CovID: 1373647
Signed-off-by: Eric Engestrom <eric@engestrom.ch>
Reviewed-by: Tim Rowley <timothy.o.rowley@intel.com>
8 years agodocs: mark GL 4.4/4.5 extension groups as DONE for nvc0
Ilia Mirkin [Fri, 14 Oct 2016 01:42:54 +0000 (21:42 -0400)]
docs: mark GL 4.4/4.5 extension groups as DONE for nvc0

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
8 years agonv50: enable ARB_enhanced_layouts
Ilia Mirkin [Fri, 14 Oct 2016 01:39:42 +0000 (21:39 -0400)]
nv50: enable ARB_enhanced_layouts

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
8 years agonvc0/ir: be more careful about preserving modifiers in SHLADD creation
Ilia Mirkin [Wed, 12 Oct 2016 17:30:57 +0000 (13:30 -0400)]
nvc0/ir: be more careful about preserving modifiers in SHLADD creation

src2 was being given the wrong modifier, and we were not properly
managing the modifier on the SHL source either.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
8 years agomesa: fix indentation in vertex_attrib_binding()
Brian Paul [Fri, 7 Oct 2016 21:31:34 +0000 (15:31 -0600)]
mesa: fix indentation in vertex_attrib_binding()

Reviewed-by: Mathias Fröhlich <mathias.froehlich@web.de>
8 years agomesa: add sanity check assertion in update_array_format
Brian Paul [Fri, 7 Oct 2016 21:21:58 +0000 (15:21 -0600)]
mesa: add sanity check assertion in update_array_format

At most, one of the normalized, integer, doubles bools can be true.

Reviewed-by: Mathias Fröhlich <mathias.froehlich@web.de>
8 years agomesa: remove needless cast in update_array()
Brian Paul [Fri, 7 Oct 2016 21:09:20 +0000 (15:09 -0600)]
mesa: remove needless cast in update_array()

Reviewed-by: Mathias Fröhlich <mathias.froehlich@web.de>
8 years agomesa: simplify update_array() with a vao local var
Brian Paul [Fri, 7 Oct 2016 21:08:50 +0000 (15:08 -0600)]
mesa: simplify update_array() with a vao local var

Reviewed-by: Mathias Fröhlich <mathias.froehlich@web.de>
8 years agovbo: simplify some code in check_draw_elements_data()
Brian Paul [Fri, 7 Oct 2016 21:03:55 +0000 (15:03 -0600)]
vbo: simplify some code in check_draw_elements_data()

Use the 'vao' local var in more places.

Reviewed-by: Mathias Fröhlich <mathias.froehlich@web.de>
8 years agomesa: rename gl_vertex_attrib_array gl_array_attributes
Brian Paul [Thu, 6 Oct 2016 23:30:20 +0000 (17:30 -0600)]
mesa: rename gl_vertex_attrib_array gl_array_attributes

The structure contains the attributes of a vertex array.  The old name
was kind of confusing.

Reviewed-by: Mathias Fröhlich <mathias.froehlich@web.de>
8 years agomesa: rename gl_vertex_attrib_array::VertexBinding
Brian Paul [Thu, 6 Oct 2016 23:21:09 +0000 (17:21 -0600)]
mesa: rename gl_vertex_attrib_array::VertexBinding

Rename to gl_vertex_attrib_array::BufferBindingIndex because this field
is an index into the array of buffer binding points.  This makes some
code a little easier to follow since there's also a "VertexBinding" field
in gl_vertex_array_object.

Reviewed-by: Mathias Fröhlich <mathias.froehlich@web.de>
8 years agomesa: rename some vars in arrayobj.c
Brian Paul [Thu, 6 Oct 2016 23:16:51 +0000 (17:16 -0600)]
mesa: rename some vars in arrayobj.c

Use 'vao' instead of 'obj' to be consistent with other code.
Plus, add a comment.

Reviewed-by: Mathias Fröhlich <mathias.froehlich@web.de>
8 years agotgsi: fix comment typo in tgsi_ureg.c
Brian Paul [Tue, 11 Oct 2016 21:25:24 +0000 (15:25 -0600)]
tgsi: fix comment typo in tgsi_ureg.c

Trivial.

8 years agomesa: replace gl_framebuffer::_IntegerColor wih _IntegerBuffers
Brian Paul [Mon, 10 Oct 2016 17:29:14 +0000 (11:29 -0600)]
mesa: replace gl_framebuffer::_IntegerColor wih _IntegerBuffers

Use a bitmask to indicate which color buffers are integer-valued, rather
than a bool.  Also, the old field was mis-computed.  If an integer buffer
was followed by a non-integer buffer, the _IntegerColor field was wrongly
set to false.

This fixes the new piglit gl-3.1-mixed-int-float-fbo test.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
8 years agomesa: remove 'params' parameter from ctx->Driver.TexParameter()
Brian Paul [Fri, 7 Oct 2016 20:28:21 +0000 (14:28 -0600)]
mesa: remove 'params' parameter from ctx->Driver.TexParameter()

None of the drivers which implement this hook do anything with the
texture parameter value.  Drivers just look at the pname and set a
dirty flag if needed.

We were doing some ugly casting and type conversion to setup the
argument so that all goes away.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
8 years agovc4: Avoid loading from the texture during non-utile-aligned glTexImage().
Eric Anholt [Thu, 13 Oct 2016 19:37:59 +0000 (12:37 -0700)]
vc4: Avoid loading from the texture during non-utile-aligned glTexImage().

Previously, the plan was "if the width/height we have to load/store isn't
the size the user is planning on writing, then we need to load the old
contents out beforehand to prevent writing back undefined".

However, when we're doing glTexImage() we often end up aligning the
width/height into the padding of the texture, and we don't actually
need to read out that padding.

Improves x11perf -aatrapezoid100 performance from ~460/sec to
~700/sec.

8 years agost/nine: Fix possible segfault in surface ctor
Axel Davy [Wed, 12 Oct 2016 17:10:53 +0000 (19:10 +0200)]
st/nine: Fix possible segfault in surface ctor

Regression introduced by
ba0274c7d6c3b77a36bbe1b444f427b0c873e2f3

Check the resource exists before assigning it
a flag (and use This->base.resource instead
of pResource, since the former may have a newly
allocate resource, while the latter would be
NULL).

This should reintroduce the behaviour of previous
code.

Signed-off-by: Axel Davy <axel.davy@ens.fr>
8 years agost/nine: Remove useless code in nine_shader
Axel Davy [Wed, 12 Oct 2016 16:58:24 +0000 (18:58 +0200)]
st/nine: Remove useless code in nine_shader

Since 1604efa6fda9b780e8537a131ad77f3e83e5a67a,
lconsti and lconstb don't need to be initialized.

Remove some leftovers from the previous code (which
has now invalid use of ARRAY_SIZE on a pointer instead
of an array).

Reported by Coverity.

Signed-off-by: Axel Davy <axel.davy@ens.fr>
8 years agogallium/os: Use unsigned integers for size computation
Axel Davy [Tue, 11 Oct 2016 16:57:17 +0000 (18:57 +0200)]
gallium/os: Use unsigned integers for size computation

Use uint64_t instead of int64_t in the calculation,
as the result is uint64_t.

Signed-off-by: Axel Davy <axel.davy@ens.fr>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
8 years agonvc0: enable ARB_enhanced_layouts
Samuel Pitoiset [Sun, 9 Oct 2016 11:48:31 +0000 (13:48 +0200)]
nvc0: enable ARB_enhanced_layouts

All ARB_enhanced_layouts piglit tests pass without any changes
in our compiler.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
8 years agoradv: fix the wayland wsi busy bit
Dave Airlie [Thu, 13 Oct 2016 19:09:39 +0000 (05:09 +1000)]
radv: fix the wayland wsi busy bit

Signed-off-by: Dave Airlie <airlied@redhat.com>
8 years agoanv: fix the wayland wsi busy flag setting
Dave Airlie [Thu, 13 Oct 2016 19:08:56 +0000 (05:08 +1000)]
anv: fix the wayland wsi busy flag setting

Cc: "12.0" <mesa-stable@lists.freedesktop.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
8 years agoradv: Use new image load/store intrinsic signatures v2
Tom Stellard [Thu, 13 Oct 2016 17:25:58 +0000 (17:25 +0000)]
radv: Use new image load/store intrinsic signatures v2

These were changed in LLVM r284024.

v2:
  - Only use float types for vdata of llvm.amdgcn.image.store.  LLVM doesn't
    support integer types for this intrinsic.

Signed-off-by: Dave Airlie <airlied@redhat.com>
8 years agoradv: Fix incorrect comment
Tom Stellard [Thu, 13 Oct 2016 15:21:27 +0000 (15:21 +0000)]
radv: Fix incorrect comment

Signed-off-by: Dave Airlie <airlied@redhat.com>
8 years agoradv: fix identity swizzle handling
Dave Airlie [Tue, 11 Oct 2016 06:46:25 +0000 (16:46 +1000)]
radv: fix identity swizzle handling

The identity swizzle should operate exactly
like an .r = R, .g = G, .b = B, .a = A swizzle.

This fixes a bunch of the 16-bit BGRA blit tests
dEQP-VK.api.copy_and_blit.blit_image.all_formats.b4g4r4a4*

Signed-off-by: Dave Airlie <airlied@redhat.com>
8 years agoanv/wsi: fix apps that acquire multiple images up front
Dave Airlie [Thu, 13 Oct 2016 02:43:07 +0000 (12:43 +1000)]
anv/wsi: fix apps that acquire multiple images up front

This fix was found in the radv codebase when running dota2,
no idea if anyone has reported it on anv, but the same problem
occurs.

Once an image is acquired we need to mark it busy.

Acked-by: Edward O'Callaghan <funfunctor@folklore1984.net>
Cc: "12.0" <mesa-stable@lists.freedesktop.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
8 years agoradv/wsi: fix app that acquire multiple images up front
Dave Airlie [Thu, 13 Oct 2016 02:38:49 +0000 (12:38 +1000)]
radv/wsi: fix app that acquire multiple images up front

dota2 does multiple acquires followed by multiple queues,
this bug manifested itself as a hang in the xshmfence code
randomly when dota2 was doing it's menus. It also occured
when running dota2 under phoronix-test-suite.

The fix is once the image is acquired to mark it busy then
so nobody else can acquire. We have to trust vulkan apps
that they will eventually submit it.

Acked-by: Edward O'Callaghan <funfunctor@folklore1984.net>
Signed-off-by: Dave Airlie <airlied@redhat.com>
8 years agoanv: initialise and increment send_sbc
Dave Airlie [Mon, 29 Aug 2016 23:46:29 +0000 (09:46 +1000)]
anv: initialise and increment send_sbc

At least set this to not be uninitialised memory.

Cc: "12.0" <mesa-stable@lists.freedesktop.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
8 years agoradeonsi: adjust and clean up Z_ORDER and EXEC_ON_x settings
Marek Olšák [Wed, 12 Oct 2016 20:15:31 +0000 (22:15 +0200)]
radeonsi: adjust and clean up Z_ORDER and EXEC_ON_x settings

The table was copied from the Vulkan driver. The comment lines are as long
as the table for cosmetic reasons.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
8 years agoradeonsi: disable ReZ
Marek Olšák [Wed, 12 Oct 2016 19:47:41 +0000 (21:47 +0200)]
radeonsi: disable ReZ

This is a serious performance fix. Discovered by luck.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94354

Cc: 12.0 <mesa-stable@lists.freedesktop.org>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
8 years agoradeonsi: implement TC-compatible HTILE
Marek Olšák [Tue, 11 Oct 2016 21:19:46 +0000 (23:19 +0200)]
radeonsi: implement TC-compatible HTILE

so that decompress blits aren't needed and depth texturing needs less
memory bandwidth.

Z16 and Z24 are promoted to Z32_FLOAT by the driver, because TC-compatible
HTILE only supports Z32_FLOAT. This doubles memory footprint for Z16.
The format promotion is not visible to state trackers.

This is part of TC-compatible renderbuffer compression, which has 3 parts:
DCC, HTILE, FMASK. Only TC-compatible FMASK compression is missing now.

I don't see a measurable increase in performance though.

(I tested Talos Principle and DiRT: Showdown, the latter is improved by
 0.5%, which is almost noise, and it originally used layered Z16,
 so at least we know that Z16 promoted to Z32F isn't slower now)

Tested-by: Edmondo Tommasina <edmondo.tommasina@gmail.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
8 years agogallium: add PIPE_RESOURCE_FLAG_TEXTURING_MORE_LIKELY
Marek Olšák [Wed, 12 Oct 2016 01:06:08 +0000 (03:06 +0200)]
gallium: add PIPE_RESOURCE_FLAG_TEXTURING_MORE_LIKELY

For performance tuning in drivers. It filters out window system
framebuffers and OpenGL renderbuffers.

radeonsi will use this to guess whether a depth buffer will be read
by a shader. There is no guarantee about what will actually happen.

This is a departure from PIPE_BIND flags which are defined to be strict
but they are useless in practice.

Acked-by: Roland Scheidegger <sroland@vmware.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
8 years agoradeonsi: fix regression in image atomics
Nicolai Hähnle [Thu, 13 Oct 2016 14:03:06 +0000 (16:03 +0200)]
radeonsi: fix regression in image atomics

Caused by a bad rebase when pushing commit 76a940893.

8 years agost/mesa: fix vertex elements setup for doubles
Nicolai Hähnle [Mon, 10 Oct 2016 18:20:22 +0000 (20:20 +0200)]
st/mesa: fix vertex elements setup for doubles

Whether one or two slots are taken up by one API array depends on the
vertex shader, not on how the array is configured. When an array is
set up with fewer components than the shader expects, the high components
are undefined.

Fixes GL45-CTS.vertex_attrib_binding.basic-inputL-case1.

Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Dave Airlie <airlied@redhat.com>
8 years agost/glsl_to_tgsi: remove unnecessary ir_instruction argument from get_opcode
Nicolai Hähnle [Mon, 10 Oct 2016 09:44:43 +0000 (11:44 +0200)]
st/glsl_to_tgsi: remove unnecessary ir_instruction argument from get_opcode

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>