summaryrefslogtreecommitdiff
path: root/lib/mesa/src/gallium/targets
diff options
context:
space:
mode:
authorJonathan Gray <jsg@cvs.openbsd.org>2016-05-29 10:22:51 +0000
committerJonathan Gray <jsg@cvs.openbsd.org>2016-05-29 10:22:51 +0000
commitc9223eed3c16cd3e98a8f56dda953d8f299de0e3 (patch)
tree53e2a1c3f13bcf6b4ed201d7bc135e7213c94ebe /lib/mesa/src/gallium/targets
parent6e8f2d062ab9c198239b9283b2b7ed12f4ea17d8 (diff)
Import Mesa 11.2.2
Diffstat (limited to 'lib/mesa/src/gallium/targets')
-rw-r--r--lib/mesa/src/gallium/targets/d3dadapter9/Makefile.am30
-rw-r--r--lib/mesa/src/gallium/targets/d3dadapter9/drm.c145
-rw-r--r--lib/mesa/src/gallium/targets/dri/Makefile.am15
-rw-r--r--lib/mesa/src/gallium/targets/dri/SConscript3
-rw-r--r--lib/mesa/src/gallium/targets/dri/dri.sym1
-rw-r--r--lib/mesa/src/gallium/targets/dri/target.c166
-rw-r--r--lib/mesa/src/gallium/targets/graw-null/graw_util.c1
-rw-r--r--lib/mesa/src/gallium/targets/haiku-softpipe/SConscript1
-rw-r--r--lib/mesa/src/gallium/targets/libgl-gdi/SConscript2
-rw-r--r--lib/mesa/src/gallium/targets/libgl-xlib/SConscript9
-rw-r--r--lib/mesa/src/gallium/targets/omx/Makefile.am10
-rw-r--r--lib/mesa/src/gallium/targets/omx/target.c3
-rw-r--r--lib/mesa/src/gallium/targets/opencl/Makefile.am6
-rw-r--r--lib/mesa/src/gallium/targets/osmesa/SConscript1
-rw-r--r--lib/mesa/src/gallium/targets/pipe-loader/Makefile.am8
-rw-r--r--lib/mesa/src/gallium/targets/pipe-loader/pipe.sym2
-rw-r--r--lib/mesa/src/gallium/targets/pipe-loader/pipe_swrast.c34
-rw-r--r--lib/mesa/src/gallium/targets/va/Makefile.am12
-rw-r--r--lib/mesa/src/gallium/targets/va/target.c3
-rw-r--r--lib/mesa/src/gallium/targets/vdpau/Makefile.am10
-rw-r--r--lib/mesa/src/gallium/targets/vdpau/target.c3
-rw-r--r--lib/mesa/src/gallium/targets/xa/Makefile.am13
-rw-r--r--lib/mesa/src/gallium/targets/xa/target.c3
-rw-r--r--lib/mesa/src/gallium/targets/xa/xa.sym1
-rw-r--r--lib/mesa/src/gallium/targets/xvmc/target.c3
25 files changed, 330 insertions, 155 deletions
diff --git a/lib/mesa/src/gallium/targets/d3dadapter9/Makefile.am b/lib/mesa/src/gallium/targets/d3dadapter9/Makefile.am
index e26ca33a5..8b279383b 100644
--- a/lib/mesa/src/gallium/targets/d3dadapter9/Makefile.am
+++ b/lib/mesa/src/gallium/targets/d3dadapter9/Makefile.am
@@ -34,19 +34,6 @@ AM_CFLAGS = \
$(GALLIUM_TARGET_CFLAGS) \
$(VISIBILITY_CFLAGS)
-if HAVE_GALLIUM_STATIC_TARGETS
-AM_CPPFLAGS = \
- -DNINE_TARGET \
- -DGALLIUM_STATIC_TARGETS=1
-
-else
-
-AM_CPPFLAGS = \
- -DPIPE_SEARCH_DIR=\"$(libdir)/gallium-pipe\" \
- $(GALLIUM_PIPE_LOADER_DEFINES)
-
-endif
-
ninedir = $(D3D_DRIVER_INSTALL_DIR)
nine_LTLIBRARIES = d3dadapter9.la
@@ -75,11 +62,8 @@ endif # HAVE_LD_VERSION_SCRIPT
d3dadapter9_la_LIBADD = \
$(top_builddir)/src/gallium/auxiliary/libgalliumvl_stub.la \
$(top_builddir)/src/gallium/auxiliary/libgallium.la \
- $(top_builddir)/src/glsl/libnir.la \
- $(top_builddir)/src/libglsl_util.la \
$(top_builddir)/src/gallium/state_trackers/nine/libninetracker.la \
$(top_builddir)/src/util/libmesautil.la \
- $(top_builddir)/src/gallium/winsys/sw/wrapper/libwsw.la \
$(EXPAT_LIBS) \
$(GALLIUM_COMMON_LIB_DEPS)
@@ -88,7 +72,7 @@ EXTRA_DIST = d3dadapter9.sym
TARGET_DRIVERS =
TARGET_CPPFLAGS =
-TARGET_LIB_DEPS = $(top_builddir)/src/loader/libloader.la
+TARGET_LIB_DEPS =
include $(top_srcdir)/src/gallium/drivers/i915/Automake.inc
@@ -102,24 +86,22 @@ include $(top_srcdir)/src/gallium/drivers/radeonsi/Automake.inc
include $(top_srcdir)/src/gallium/drivers/svga/Automake.inc
-include $(top_srcdir)/src/gallium/drivers/freedreno/Automake.inc
-
-include $(top_srcdir)/src/gallium/drivers/vc4/Automake.inc
-
include $(top_srcdir)/src/gallium/drivers/softpipe/Automake.inc
include $(top_srcdir)/src/gallium/drivers/llvmpipe/Automake.inc
if HAVE_GALLIUM_STATIC_TARGETS
d3dadapter9_la_CPPFLAGS = $(AM_CPPFLAGS) $(TARGET_CPPFLAGS)
-d3dadapter9_la_LIBADD += $(TARGET_LIB_DEPS) \
+d3dadapter9_la_LIBADD += \
+ $(top_builddir)/src/gallium/auxiliary/pipe-loader/libpipe_loader_static.la \
+ $(GALLIUM_PIPE_LOADER_WINSYS_LIBS) \
+ $(TARGET_LIB_DEPS) \
$(TARGET_RADEON_WINSYS) $(TARGET_RADEON_COMMON)
else # HAVE_GALLIUM_STATIC_TARGETS
d3dadapter9_la_LIBADD += \
- $(top_builddir)/src/gallium/auxiliary/pipe-loader/libpipe_loader.la \
- $(GALLIUM_PIPE_LOADER_WINSYS_LIBS)
+ $(top_builddir)/src/gallium/auxiliary/pipe-loader/libpipe_loader_dynamic.la
endif # HAVE_GALLIUM_STATIC_TARGETS
diff --git a/lib/mesa/src/gallium/targets/d3dadapter9/drm.c b/lib/mesa/src/gallium/targets/d3dadapter9/drm.c
index fabc820f2..233db8ae3 100644
--- a/lib/mesa/src/gallium/targets/d3dadapter9/drm.c
+++ b/lib/mesa/src/gallium/targets/d3dadapter9/drm.c
@@ -20,6 +20,7 @@
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
* USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/* XXX: header order is slightly screwy here */
#include "loader.h"
#include "adapter9.h"
@@ -29,8 +30,8 @@
#include "pipe/p_screen.h"
#include "pipe/p_state.h"
-#include "target-helpers/inline_drm_helper.h"
-#include "target-helpers/inline_sw_helper.h"
+#include "target-helpers/drm_helper.h"
+#include "target-helpers/sw_helper.h"
#include "state_tracker/drm_driver.h"
#include "d3dadapter/d3dadapter9.h"
@@ -52,22 +53,29 @@ DRI_CONF_BEGIN
DRI_CONF_VBLANK_MODE(DRI_CONF_VBLANK_DEF_INTERVAL_1)
DRI_CONF_SECTION_END
DRI_CONF_SECTION_NINE
+ DRI_CONF_NINE_OVERRIDEVENDOR(-1)
DRI_CONF_NINE_THROTTLE(-2)
DRI_CONF_NINE_THREADSUBMIT("false")
DRI_CONF_SECTION_END
DRI_CONF_END;
-/* define fallback value here: NVIDIA GeForce GTX 970 */
-#define FALLBACK_NAME "NV124"
-#define FALLBACK_DEVID 0x13C2
-#define FALLBACK_VENID 0x10de
+struct fallback_card_config {
+ const char *name;
+ unsigned vendor_id;
+ unsigned device_id;
+} fallback_cards[] = {
+ {"NV124", 0x10de, 0x13C2}, /* NVIDIA GeForce GTX 970 */
+ {"HAWAII", 0x1002, 0x67b1}, /* AMD Radeon R9 290 */
+ {"Haswell Mobile", 0x8086, 0x13C2}, /* Intel Haswell Mobile */
+ {"SVGA3D", 0x15ad, 0x0405}, /* VMware SVGA 3D */
+};
/* prototypes */
void
d3d_match_vendor_id( D3DADAPTER_IDENTIFIER9* drvid,
- unsigned fallback_ven,
- unsigned fallback_dev,
- const char* fallback_name );
+ unsigned fallback_ven,
+ unsigned fallback_dev,
+ const char* fallback_name );
void d3d_fill_driver_version(D3DADAPTER_IDENTIFIER9* drvid);
@@ -91,53 +99,15 @@ drm_destroy( struct d3dadapter9_context *ctx )
else if (ctx->hal)
ctx->hal->destroy(ctx->hal);
-#if !GALLIUM_STATIC_TARGETS
if (drm->swdev)
pipe_loader_release(&drm->swdev, 1);
if (drm->dev)
pipe_loader_release(&drm->dev, 1);
-#endif
close(drm->fd);
FREE(ctx);
}
-/* read a DWORD in the form 0xnnnnnnnn, which is how sysfs pci id stuff is
- * formatted. */
-static inline DWORD
-read_file_dword( const char *name )
-{
- char buf[32];
- int fd, r;
-
- fd = open(name, O_RDONLY);
- if (fd < 0) {
- DBG("Unable to get PCI information from `%s'\n", name);
- return 0;
- }
-
- r = read(fd, buf, 32);
- close(fd);
-
- return (r > 0) ? (DWORD)strtol(buf, NULL, 0) : 0;
-}
-
-/* sysfs doesn't expose the revision as its own file, so this function grabs a
- * dword at an offset in the raw PCI header. The reason this isn't used for all
- * data is that the kernel will make corrections but not expose them in the raw
- * header bytes. */
-static inline DWORD
-read_config_dword( int fd,
- unsigned offset )
-{
- DWORD r = 0;
-
- if (lseek(fd, offset, SEEK_SET) != offset) { return 0; }
- if (read(fd, &r, 4) != 4) { return 0; }
-
- return r;
-}
-
static inline void
get_bus_info( int fd,
DWORD *vendorid,
@@ -155,9 +125,9 @@ get_bus_info( int fd,
*subsysid = 0;
*revision = 0;
} else {
- DBG("Unable to detect card. Faking %s\n", FALLBACK_NAME);
- *vendorid = FALLBACK_VENID;
- *deviceid = FALLBACK_DEVID;
+ DBG("Unable to detect card. Faking %s\n", fallback_cards[0].name);
+ *vendorid = fallback_cards[0].vendor_id;
+ *deviceid = fallback_cards[0].device_id;
*subsysid = 0;
*revision = 0;
}
@@ -165,8 +135,10 @@ get_bus_info( int fd,
static inline void
read_descriptor( struct d3dadapter9_context *ctx,
- int fd )
+ int fd, int override_vendorid )
{
+ unsigned i;
+ BOOL found;
D3DADAPTER_IDENTIFIER9 *drvid = &ctx->identifier;
memset(drvid, 0, sizeof(*drvid));
@@ -177,9 +149,30 @@ read_descriptor( struct d3dadapter9_context *ctx,
strncpy(drvid->Description, ctx->hal->get_name(ctx->hal),
sizeof(drvid->Description));
+ if (override_vendorid > 0) {
+ found = FALSE;
+ /* fill in device_id and card name for fake vendor */
+ for (i = 0; i < sizeof(fallback_cards)/sizeof(fallback_cards[0]); i++) {
+ if (fallback_cards[i].vendor_id == override_vendorid) {
+ DBG("Faking card '%s' vendor 0x%04x, device 0x%04x\n",
+ fallback_cards[i].name,
+ fallback_cards[i].vendor_id,
+ fallback_cards[i].device_id);
+ drvid->VendorId = fallback_cards[i].vendor_id;
+ drvid->DeviceId = fallback_cards[i].device_id;
+ strncpy(drvid->Description, fallback_cards[i].name,
+ sizeof(drvid->Description));
+ found = TRUE;
+ break;
+ }
+ }
+ if (!found) {
+ DBG("Unknown fake vendor 0x%04x! Using detected vendor !\n", override_vendorid);
+ }
+ }
/* choose fall-back vendor if necessary to allow
* the following functions to return sane results */
- d3d_match_vendor_id(drvid, FALLBACK_VENID, FALLBACK_DEVID, FALLBACK_NAME);
+ d3d_match_vendor_id(drvid, fallback_cards[0].vendor_id, fallback_cards[0].device_id, fallback_cards[0].name);
/* fill in driver name and version info */
d3d_fill_driver_version(drvid);
/* override Description field with Windows like names */
@@ -214,27 +207,18 @@ drm_create_adapter( int fd,
driOptionCache defaultInitOptions;
driOptionCache userInitOptions;
int throttling_value_user = -2;
-
-#if !GALLIUM_STATIC_TARGETS
- const char *paths[] = {
- getenv("D3D9_DRIVERS_PATH"),
- getenv("D3D9_DRIVERS_DIR"),
- PIPE_SEARCH_DIR
- };
-#endif
+ int override_vendorid = -1;
if (!ctx) { return E_OUTOFMEMORY; }
ctx->base.destroy = drm_destroy;
+ /* Although the fd is provided from external source, mesa/nine
+ * takes ownership of it. */
fd = loader_get_user_preferred_fd(fd, &different_device);
ctx->fd = fd;
ctx->base.linear_framebuffer = !!different_device;
-#if GALLIUM_STATIC_TARGETS
- ctx->base.hal = dd_create_screen(fd);
-#else
- /* use pipe-loader to dlopen appropriate drm driver */
if (!pipe_loader_drm_probe_fd(&ctx->dev, fd)) {
ERR("Failed to probe drm fd %d.\n", fd);
FREE(ctx);
@@ -242,26 +226,15 @@ drm_create_adapter( int fd,
return D3DERR_DRIVERINTERNALERROR;
}
- /* use pipe-loader to create a drm screen (hal) */
- ctx->base.hal = NULL;
- for (i = 0; !ctx->base.hal && i < Elements(paths); ++i) {
- if (!paths[i]) { continue; }
- ctx->base.hal = pipe_loader_create_screen(ctx->dev, paths[i]);
- }
-#endif
+ ctx->base.hal = pipe_loader_create_screen(ctx->dev);
if (!ctx->base.hal) {
ERR("Unable to load requested driver.\n");
drm_destroy(&ctx->base);
return D3DERR_DRIVERINTERNALERROR;
}
-#if GALLIUM_STATIC_TARGETS
- dmabuf_ret = dd_configuration(DRM_CONF_SHARE_FD);
- throttle_ret = dd_configuration(DRM_CONF_THROTTLE);
-#else
dmabuf_ret = pipe_loader_configuration(ctx->dev, DRM_CONF_SHARE_FD);
throttle_ret = pipe_loader_configuration(ctx->dev, DRM_CONF_THROTTLE);
-#endif // GALLIUM_STATIC_TARGETS
if (!dmabuf_ret || !dmabuf_ret->val.val_bool) {
ERR("The driver is not capable of dma-buf sharing."
"Abandon to load nine state tracker\n");
@@ -305,28 +278,24 @@ drm_create_adapter( int fd,
"You should not expect any benefit.");
}
+ if (driCheckOption(&userInitOptions, "override_vendorid", DRI_INT)) {
+ override_vendorid = driQueryOptioni(&userInitOptions, "override_vendorid");
+ }
+
driDestroyOptionCache(&userInitOptions);
driDestroyOptionInfo(&defaultInitOptions);
-#if GALLIUM_STATIC_TARGETS
- ctx->base.ref = ninesw_create_screen(ctx->base.hal);
-#else
/* wrap it to create a software screen that can share resources */
- if (pipe_loader_sw_probe_wrapped(&ctx->swdev, ctx->base.hal)) {
- ctx->base.ref = NULL;
- for (i = 0; !ctx->base.ref && i < Elements(paths); ++i) {
- if (!paths[i]) { continue; }
- ctx->base.ref = pipe_loader_create_screen(ctx->swdev, paths[i]);
- }
- }
-#endif
+ if (pipe_loader_sw_probe_wrapped(&ctx->swdev, ctx->base.hal))
+ ctx->base.ref = pipe_loader_create_screen(ctx->swdev);
+
if (!ctx->base.ref) {
ERR("Couldn't wrap drm screen to swrast screen. Software devices "
"will be unavailable.\n");
}
/* read out PCI info */
- read_descriptor(&ctx->base, fd);
+ read_descriptor(&ctx->base, fd, override_vendorid);
/* create and return new ID3DAdapter9 */
hr = NineAdapter9_new(&ctx->base, (struct NineAdapter9 **)ppAdapter);
diff --git a/lib/mesa/src/gallium/targets/dri/Makefile.am b/lib/mesa/src/gallium/targets/dri/Makefile.am
index 7c86ea136..2666524fb 100644
--- a/lib/mesa/src/gallium/targets/dri/Makefile.am
+++ b/lib/mesa/src/gallium/targets/dri/Makefile.am
@@ -10,7 +10,7 @@ AM_CFLAGS = \
AM_CPPFLAGS = \
$(DEFINES) \
- -DDRI_TARGET \
+ -DGALLIUM_DDEBUG \
-DGALLIUM_NOOP \
-DGALLIUM_RBUG \
-DGALLIUM_TRACE
@@ -45,6 +45,7 @@ gallium_dri_la_LIBADD = \
$(top_builddir)/src/gallium/state_trackers/dri/libdri.la \
$(top_builddir)/src/gallium/auxiliary/libgalliumvl.la \
$(top_builddir)/src/gallium/auxiliary/libgallium.la \
+ $(top_builddir)/src/gallium/drivers/ddebug/libddebug.la \
$(top_builddir)/src/gallium/drivers/noop/libnoop.la \
$(top_builddir)/src/gallium/drivers/rbug/librbug.la \
$(top_builddir)/src/gallium/drivers/trace/libtrace.la \
@@ -63,7 +64,7 @@ EXTRA_DIST = \
TARGET_DRIVERS =
TARGET_CPPFLAGS =
-TARGET_LIB_DEPS = $(top_builddir)/src/loader/libloader.la
+TARGET_LIB_DEPS =
include $(top_srcdir)/src/gallium/drivers/i915/Automake.inc
@@ -81,6 +82,8 @@ include $(top_srcdir)/src/gallium/drivers/freedreno/Automake.inc
include $(top_srcdir)/src/gallium/drivers/vc4/Automake.inc
+include $(top_srcdir)/src/gallium/drivers/virgl/Automake.inc
+
include $(top_srcdir)/src/gallium/drivers/softpipe/Automake.inc
include $(top_srcdir)/src/gallium/drivers/llvmpipe/Automake.inc
@@ -88,14 +91,16 @@ if HAVE_GALLIUM_STATIC_TARGETS
gallium_dri_la_SOURCES += target.c
gallium_dri_la_CPPFLAGS = $(AM_CPPFLAGS) $(TARGET_CPPFLAGS)
-gallium_dri_la_LIBADD += $(TARGET_LIB_DEPS) \
+gallium_dri_la_LIBADD += \
+ $(top_builddir)/src/gallium/auxiliary/pipe-loader/libpipe_loader_static.la \
+ $(GALLIUM_PIPE_LOADER_WINSYS_LIBS) \
+ $(TARGET_LIB_DEPS) \
$(TARGET_RADEON_WINSYS) $(TARGET_RADEON_COMMON)
else # HAVE_GALLIUM_STATIC_TARGETS
gallium_dri_la_LIBADD += \
- $(top_builddir)/src/gallium/auxiliary/pipe-loader/libpipe_loader.la \
- $(GALLIUM_PIPE_LOADER_WINSYS_LIBS)
+ $(top_builddir)/src/gallium/auxiliary/pipe-loader/libpipe_loader_dynamic.la
endif # HAVE_GALLIUM_STATIC_TARGETS
diff --git a/lib/mesa/src/gallium/targets/dri/SConscript b/lib/mesa/src/gallium/targets/dri/SConscript
index 2fb0da092..bf3baa709 100644
--- a/lib/mesa/src/gallium/targets/dri/SConscript
+++ b/lib/mesa/src/gallium/targets/dri/SConscript
@@ -30,7 +30,6 @@ env.PkgUseModules('DRM')
env.Append(CPPDEFINES = [
'GALLIUM_VMWGFX',
'GALLIUM_SOFTPIPE',
- 'DRI_TARGET',
])
env.Prepend(LIBS = [
@@ -39,8 +38,10 @@ env.Prepend(LIBS = [
svga,
ws_dri,
softpipe,
+ pipe_loader,
libloader,
mesautil,
+ compiler,
mesa,
glsl,
gallium,
diff --git a/lib/mesa/src/gallium/targets/dri/dri.sym b/lib/mesa/src/gallium/targets/dri/dri.sym
index 8e26fb960..1fdf18bee 100644
--- a/lib/mesa/src/gallium/targets/dri/dri.sym
+++ b/lib/mesa/src/gallium/targets/dri/dri.sym
@@ -5,6 +5,7 @@
nouveau_drm_screen_create;
radeon_drm_winsys_create;
amdgpu_winsys_create;
+ fd_drm_screen_create;
local:
*;
};
diff --git a/lib/mesa/src/gallium/targets/dri/target.c b/lib/mesa/src/gallium/targets/dri/target.c
index 32a11ef62..01532e242 100644
--- a/lib/mesa/src/gallium/targets/dri/target.c
+++ b/lib/mesa/src/gallium/targets/dri/target.c
@@ -1,2 +1,164 @@
-#include "target-helpers/inline_drm_helper.h"
-#include "target-helpers/inline_sw_helper.h"
+#include "target-helpers/drm_helper.h"
+#include "target-helpers/sw_helper.h"
+
+#include "dri_screen.h"
+
+#if defined(GALLIUM_SOFTPIPE)
+
+const __DRIextension **__driDriverGetExtensions_swrast(void);
+
+PUBLIC const __DRIextension **__driDriverGetExtensions_swrast(void)
+{
+ globalDriverAPI = &galliumsw_driver_api;
+ return galliumsw_driver_extensions;
+}
+
+#if defined(HAVE_LIBDRM)
+
+const __DRIextension **__driDriverGetExtensions_kms_swrast(void);
+
+PUBLIC const __DRIextension **__driDriverGetExtensions_kms_swrast(void)
+{
+ globalDriverAPI = &dri_kms_driver_api;
+ return galliumdrm_driver_extensions;
+}
+
+#endif
+#endif
+
+#if defined(GALLIUM_I915)
+
+const __DRIextension **__driDriverGetExtensions_i915(void);
+
+PUBLIC const __DRIextension **__driDriverGetExtensions_i915(void)
+{
+ globalDriverAPI = &galliumdrm_driver_api;
+ return galliumdrm_driver_extensions;
+}
+#endif
+
+#if defined(GALLIUM_ILO)
+
+const __DRIextension **__driDriverGetExtensions_i965(void);
+
+PUBLIC const __DRIextension **__driDriverGetExtensions_i965(void)
+{
+ globalDriverAPI = &galliumdrm_driver_api;
+ return galliumdrm_driver_extensions;
+}
+#endif
+
+#if defined(GALLIUM_NOUVEAU)
+
+const __DRIextension **__driDriverGetExtensions_nouveau(void);
+
+PUBLIC const __DRIextension **__driDriverGetExtensions_nouveau(void)
+{
+ globalDriverAPI = &galliumdrm_driver_api;
+ return galliumdrm_driver_extensions;
+}
+#endif
+
+#if defined(GALLIUM_R300)
+
+const __DRIextension **__driDriverGetExtensions_r300(void);
+
+PUBLIC const __DRIextension **__driDriverGetExtensions_r300(void)
+{
+ globalDriverAPI = &galliumdrm_driver_api;
+ return galliumdrm_driver_extensions;
+}
+#endif
+
+#if defined(GALLIUM_R600)
+
+const __DRIextension **__driDriverGetExtensions_r600(void);
+
+PUBLIC const __DRIextension **__driDriverGetExtensions_r600(void)
+{
+ globalDriverAPI = &galliumdrm_driver_api;
+ return galliumdrm_driver_extensions;
+}
+#endif
+
+#if defined(GALLIUM_RADEONSI)
+
+const __DRIextension **__driDriverGetExtensions_radeonsi(void);
+
+PUBLIC const __DRIextension **__driDriverGetExtensions_radeonsi(void)
+{
+ globalDriverAPI = &galliumdrm_driver_api;
+ return galliumdrm_driver_extensions;
+}
+#endif
+
+#if defined(GALLIUM_VMWGFX)
+
+const __DRIextension **__driDriverGetExtensions_vmwgfx(void);
+
+PUBLIC const __DRIextension **__driDriverGetExtensions_vmwgfx(void)
+{
+ globalDriverAPI = &galliumdrm_driver_api;
+ return galliumdrm_driver_extensions;
+}
+#endif
+
+#if defined(GALLIUM_FREEDRENO)
+
+const __DRIextension **__driDriverGetExtensions_msm(void);
+
+PUBLIC const __DRIextension **__driDriverGetExtensions_msm(void)
+{
+ globalDriverAPI = &galliumdrm_driver_api;
+ return galliumdrm_driver_extensions;
+}
+
+const __DRIextension **__driDriverGetExtensions_kgsl(void);
+
+PUBLIC const __DRIextension **__driDriverGetExtensions_kgsl(void)
+{
+ globalDriverAPI = &galliumdrm_driver_api;
+ return galliumdrm_driver_extensions;
+}
+#endif
+
+#if defined(GALLIUM_VIRGL)
+
+const __DRIextension **__driDriverGetExtensions_virtio_gpu(void);
+
+PUBLIC const __DRIextension **__driDriverGetExtensions_virtio_gpu(void)
+{
+ globalDriverAPI = &galliumdrm_driver_api;
+ return galliumdrm_driver_extensions;
+}
+#endif
+
+#if defined(GALLIUM_VC4)
+
+const __DRIextension **__driDriverGetExtensions_vc4(void);
+
+PUBLIC const __DRIextension **__driDriverGetExtensions_vc4(void)
+{
+ globalDriverAPI = &galliumdrm_driver_api;
+ return galliumdrm_driver_extensions;
+}
+
+#if defined(USE_VC4_SIMULATOR)
+const __DRIextension **__driDriverGetExtensions_i965(void);
+
+/**
+ * When building using the simulator (on x86), we advertise ourselves as the
+ * i965 driver so that you can just make a directory with a link from
+ * i965_dri.so to the built vc4_dri.so, and point LIBGL_DRIVERS_PATH to that
+ * on your i965-using host to run the driver under simulation.
+ *
+ * This is, of course, incompatible with building with the ilo driver, but you
+ * shouldn't be building that anyway.
+ */
+PUBLIC const __DRIextension **__driDriverGetExtensions_i965(void)
+{
+ globalDriverAPI = &galliumdrm_driver_api;
+ return galliumdrm_driver_extensions;
+}
+#endif
+#endif
diff --git a/lib/mesa/src/gallium/targets/graw-null/graw_util.c b/lib/mesa/src/gallium/targets/graw-null/graw_util.c
index 07693e85f..03b45d99e 100644
--- a/lib/mesa/src/gallium/targets/graw-null/graw_util.c
+++ b/lib/mesa/src/gallium/targets/graw-null/graw_util.c
@@ -5,6 +5,7 @@
#include "pipe/p_state.h"
#include "tgsi/tgsi_text.h"
#include "util/u_debug.h"
+#include "util/u_debug_image.h"
#include "util/u_memory.h"
#include "state_tracker/graw.h"
diff --git a/lib/mesa/src/gallium/targets/haiku-softpipe/SConscript b/lib/mesa/src/gallium/targets/haiku-softpipe/SConscript
index 210721c42..b7c13731d 100644
--- a/lib/mesa/src/gallium/targets/haiku-softpipe/SConscript
+++ b/lib/mesa/src/gallium/targets/haiku-softpipe/SConscript
@@ -6,6 +6,7 @@ env.Prepend(LIBS = [
trace,
rbug,
mesautil,
+ compiler,
mesa,
glsl,
gallium
diff --git a/lib/mesa/src/gallium/targets/libgl-gdi/SConscript b/lib/mesa/src/gallium/targets/libgl-gdi/SConscript
index 594f34d7f..3a63e3e6a 100644
--- a/lib/mesa/src/gallium/targets/libgl-gdi/SConscript
+++ b/lib/mesa/src/gallium/targets/libgl-gdi/SConscript
@@ -50,7 +50,7 @@ if env['gles']:
opengl32 = env.SharedLibrary(
target ='opengl32',
source = sources,
- LIBS = wgl + ws_gdi + glapi + mesa + drivers + gallium + glsl + env['LIBS'],
+ LIBS = wgl + ws_gdi + glapi + compiler + mesa + drivers + gallium + glsl + env['LIBS'],
)
env.Alias('opengl32', opengl32)
diff --git a/lib/mesa/src/gallium/targets/libgl-xlib/SConscript b/lib/mesa/src/gallium/targets/libgl-xlib/SConscript
index df5a220ac..e1c78dd06 100644
--- a/lib/mesa/src/gallium/targets/libgl-xlib/SConscript
+++ b/lib/mesa/src/gallium/targets/libgl-xlib/SConscript
@@ -29,6 +29,7 @@ env.Prepend(LIBS = [
ws_xlib,
glapi,
mesautil,
+ compiler,
mesa,
glsl,
gallium,
@@ -46,9 +47,13 @@ if env['llvm']:
env.Append(CPPDEFINES = ['GALLIUM_LLVMPIPE'])
env.Prepend(LIBS = [llvmpipe])
-# Disallow undefined symbols
if env['platform'] != 'darwin':
- env.Append(SHLINKFLAGS = ['-Wl,-z,defs'])
+ env.Append(SHLINKFLAGS = [
+ # Disallow undefined symbols
+ '-Wl,-z,defs',
+ # Restrict exported symbols
+ '-Wl,--version-script=%s' % File("libgl-xlib.sym").srcnode().path,
+ ])
# libGL.so.1.5
libgl_1_5 = env.SharedLibrary(
diff --git a/lib/mesa/src/gallium/targets/omx/Makefile.am b/lib/mesa/src/gallium/targets/omx/Makefile.am
index a4dff487d..3bdb9eb7e 100644
--- a/lib/mesa/src/gallium/targets/omx/Makefile.am
+++ b/lib/mesa/src/gallium/targets/omx/Makefile.am
@@ -40,7 +40,7 @@ if HAVE_GALLIUM_STATIC_TARGETS
TARGET_DRIVERS =
TARGET_CPPFLAGS =
-TARGET_LIB_DEPS = $(top_builddir)/src/loader/libloader.la
+TARGET_LIB_DEPS =
include $(top_srcdir)/src/gallium/drivers/nouveau/Automake.inc
@@ -50,14 +50,16 @@ include $(top_srcdir)/src/gallium/drivers/radeonsi/Automake.inc
libomx_mesa_la_SOURCES += target.c
libomx_mesa_la_CPPFLAGS = $(TARGET_CPPFLAGS)
-libomx_mesa_la_LIBADD += $(TARGET_LIB_DEPS) \
+libomx_mesa_la_LIBADD += \
+ $(top_builddir)/src/gallium/auxiliary/pipe-loader/libpipe_loader_static.la \
+ $(GALLIUM_PIPE_LOADER_WINSYS_LIBS) \
+ $(TARGET_LIB_DEPS) \
$(TARGET_RADEON_WINSYS) $(TARGET_RADEON_COMMON)
else # HAVE_GALLIUM_STATIC_TARGETS
libomx_mesa_la_LIBADD += \
- $(top_builddir)/src/gallium/auxiliary/pipe-loader/libpipe_loader.la \
- $(GALLIUM_PIPE_LOADER_WINSYS_LIBS)
+ $(top_builddir)/src/gallium/auxiliary/pipe-loader/libpipe_loader_dynamic.la
endif # HAVE_GALLIUM_STATIC_TARGETS
diff --git a/lib/mesa/src/gallium/targets/omx/target.c b/lib/mesa/src/gallium/targets/omx/target.c
index fde4a4a7d..308e23bb4 100644
--- a/lib/mesa/src/gallium/targets/omx/target.c
+++ b/lib/mesa/src/gallium/targets/omx/target.c
@@ -1 +1,2 @@
-#include "target-helpers/inline_drm_helper.h"
+#include "target-helpers/drm_helper.h"
+#include "target-helpers/sw_helper.h"
diff --git a/lib/mesa/src/gallium/targets/opencl/Makefile.am b/lib/mesa/src/gallium/targets/opencl/Makefile.am
index 93b4d3a83..99532f06d 100644
--- a/lib/mesa/src/gallium/targets/opencl/Makefile.am
+++ b/lib/mesa/src/gallium/targets/opencl/Makefile.am
@@ -2,9 +2,6 @@ include $(top_srcdir)/src/gallium/Automake.inc
lib_LTLIBRARIES = lib@OPENCL_LIBNAME@.la
-AM_CPPFLAGS = \
- $(LIBELF_CFLAGS)
-
lib@OPENCL_LIBNAME@_la_LDFLAGS = \
$(LLVM_LDFLAGS) \
-no-undefined \
@@ -18,11 +15,10 @@ lib@OPENCL_LIBNAME@_la_LDFLAGS += \
endif
lib@OPENCL_LIBNAME@_la_LIBADD = \
- $(top_builddir)/src/gallium/auxiliary/pipe-loader/libpipe_loader.la \
+ $(top_builddir)/src/gallium/auxiliary/pipe-loader/libpipe_loader_dynamic.la \
$(top_builddir)/src/gallium/state_trackers/clover/libclover.la \
$(top_builddir)/src/gallium/auxiliary/libgallium.la \
$(top_builddir)/src/util/libmesautil.la \
- $(GALLIUM_PIPE_LOADER_WINSYS_LIBS) \
$(LIBELF_LIBS) \
$(DLOPEN_LIBS) \
-lclangCodeGen \
diff --git a/lib/mesa/src/gallium/targets/osmesa/SConscript b/lib/mesa/src/gallium/targets/osmesa/SConscript
index 4a9115ba1..eeaacbcaf 100644
--- a/lib/mesa/src/gallium/targets/osmesa/SConscript
+++ b/lib/mesa/src/gallium/targets/osmesa/SConscript
@@ -12,6 +12,7 @@ env.Prepend(LIBS = [
st_osmesa,
ws_null,
glapi,
+ compiler,
mesa,
gallium,
trace,
diff --git a/lib/mesa/src/gallium/targets/pipe-loader/Makefile.am b/lib/mesa/src/gallium/targets/pipe-loader/Makefile.am
index 4d9f7be2e..0b516de0b 100644
--- a/lib/mesa/src/gallium/targets/pipe-loader/Makefile.am
+++ b/lib/mesa/src/gallium/targets/pipe-loader/Makefile.am
@@ -27,6 +27,7 @@ AM_CPPFLAGS = \
-I$(top_srcdir)/include \
-I$(top_srcdir)/src/gallium/drivers \
-I$(top_srcdir)/src/gallium/winsys \
+ $(GALLIUM_PIPE_LOADER_DEFINES) \
$(LIBDRM_CFLAGS) \
$(VISIBILITY_CFLAGS) \
-DGALLIUM_RBUG \
@@ -52,8 +53,7 @@ endif
PIPE_LIBS += \
$(top_builddir)/src/gallium/auxiliary/libgallium.la \
- $(top_builddir)/src/glsl/libnir.la \
- $(top_builddir)/src/libglsl_util.la \
+ $(top_builddir)/src/compiler/nir/libnir.la \
$(top_builddir)/src/util/libmesautil.la \
$(top_builddir)/src/gallium/drivers/rbug/librbug.la \
$(top_builddir)/src/gallium/drivers/trace/libtrace.la \
@@ -209,6 +209,10 @@ AM_CPPFLAGS += -DGALLIUM_LLVMPIPE
pipe_swrast_la_LIBADD += \
$(top_builddir)/src/gallium/drivers/llvmpipe/libllvmpipe.la
endif
+
+pipe_swrast_la_LIBADD += \
+ $(GALLIUM_PIPE_LOADER_WINSYS_LIBS)
+
endif
EXTRA_DIST = pipe.sym
diff --git a/lib/mesa/src/gallium/targets/pipe-loader/pipe.sym b/lib/mesa/src/gallium/targets/pipe-loader/pipe.sym
index 19b1d77b0..b2fa619f7 100644
--- a/lib/mesa/src/gallium/targets/pipe-loader/pipe.sym
+++ b/lib/mesa/src/gallium/targets/pipe-loader/pipe.sym
@@ -1,7 +1,7 @@
{
global:
driver_descriptor;
- swrast_create_screen;
+ swrast_driver_descriptor;
local:
*;
};
diff --git a/lib/mesa/src/gallium/targets/pipe-loader/pipe_swrast.c b/lib/mesa/src/gallium/targets/pipe-loader/pipe_swrast.c
index f7f354acf..cf617f37e 100644
--- a/lib/mesa/src/gallium/targets/pipe-loader/pipe_swrast.c
+++ b/lib/mesa/src/gallium/targets/pipe-loader/pipe_swrast.c
@@ -1,7 +1,11 @@
#include "target-helpers/inline_sw_helper.h"
#include "target-helpers/inline_debug_helper.h"
-#include "state_tracker/drm_driver.h"
+#include "state_tracker/sw_driver.h"
+#include "sw/dri/dri_sw_winsys.h"
+#include "sw/kms-dri/kms_dri_sw_winsys.h"
+#include "sw/null/null_sw_winsys.h"
+#include "sw/wrapper/wrapper_sw_winsys.h"
PUBLIC struct pipe_screen *
swrast_create_screen(struct sw_winsys *ws);
@@ -17,3 +21,31 @@ swrast_create_screen(struct sw_winsys *ws)
return screen;
}
+
+PUBLIC
+struct sw_driver_descriptor swrast_driver_descriptor = {
+ .create_screen = swrast_create_screen,
+ .winsys = {
+#ifdef HAVE_PIPE_LOADER_DRI
+ {
+ .name = "dri",
+ .create_winsys = dri_create_sw_winsys,
+ },
+#endif
+#ifdef HAVE_PIPE_LOADER_KMS
+ {
+ .name = "kms_dri",
+ .create_winsys = kms_dri_create_winsys,
+ },
+#endif
+ {
+ .name = "null",
+ .create_winsys = null_sw_create,
+ },
+ {
+ .name = "wrapped",
+ .create_winsys = wrapper_sw_winsys_wrap_pipe_screen,
+ },
+ { 0 },
+ }
+};
diff --git a/lib/mesa/src/gallium/targets/va/Makefile.am b/lib/mesa/src/gallium/targets/va/Makefile.am
index 9613f041b..1edd5c2a5 100644
--- a/lib/mesa/src/gallium/targets/va/Makefile.am
+++ b/lib/mesa/src/gallium/targets/va/Makefile.am
@@ -40,21 +40,25 @@ if HAVE_GALLIUM_STATIC_TARGETS
TARGET_DRIVERS =
TARGET_CPPFLAGS =
-TARGET_LIB_DEPS = $(top_builddir)/src/loader/libloader.la
+TARGET_LIB_DEPS =
+
+include $(top_srcdir)/src/gallium/drivers/nouveau/Automake.inc
include $(top_srcdir)/src/gallium/drivers/r600/Automake.inc
include $(top_srcdir)/src/gallium/drivers/radeonsi/Automake.inc
gallium_drv_video_la_SOURCES += target.c
gallium_drv_video_la_CPPFLAGS = $(TARGET_CPPFLAGS)
-gallium_drv_video_la_LIBADD += $(TARGET_LIB_DEPS) \
+gallium_drv_video_la_LIBADD += \
+ $(top_builddir)/src/gallium/auxiliary/pipe-loader/libpipe_loader_static.la \
+ $(GALLIUM_PIPE_LOADER_WINSYS_LIBS) \
+ $(TARGET_LIB_DEPS) \
$(TARGET_RADEON_WINSYS) $(TARGET_RADEON_COMMON)
else # HAVE_GALLIUM_STATIC_TARGETS
gallium_drv_video_la_LIBADD += \
- $(top_builddir)/src/gallium/auxiliary/pipe-loader/libpipe_loader.la \
- $(GALLIUM_PIPE_LOADER_WINSYS_LIBS)
+ $(top_builddir)/src/gallium/auxiliary/pipe-loader/libpipe_loader_dynamic.la
endif # HAVE_GALLIUM_STATIC_TARGETS
diff --git a/lib/mesa/src/gallium/targets/va/target.c b/lib/mesa/src/gallium/targets/va/target.c
index fde4a4a7d..308e23bb4 100644
--- a/lib/mesa/src/gallium/targets/va/target.c
+++ b/lib/mesa/src/gallium/targets/va/target.c
@@ -1 +1,2 @@
-#include "target-helpers/inline_drm_helper.h"
+#include "target-helpers/drm_helper.h"
+#include "target-helpers/sw_helper.h"
diff --git a/lib/mesa/src/gallium/targets/vdpau/Makefile.am b/lib/mesa/src/gallium/targets/vdpau/Makefile.am
index 7eb62c1cc..d388f8b50 100644
--- a/lib/mesa/src/gallium/targets/vdpau/Makefile.am
+++ b/lib/mesa/src/gallium/targets/vdpau/Makefile.am
@@ -47,7 +47,7 @@ EXTRA_DIST = \
TARGET_DRIVERS =
TARGET_CPPFLAGS =
-TARGET_LIB_DEPS = $(top_builddir)/src/loader/libloader.la
+TARGET_LIB_DEPS =
include $(top_srcdir)/src/gallium/drivers/nouveau/Automake.inc
@@ -59,14 +59,16 @@ if HAVE_GALLIUM_STATIC_TARGETS
libvdpau_gallium_la_SOURCES += target.c
libvdpau_gallium_la_CPPFLAGS = $(TARGET_CPPFLAGS)
-libvdpau_gallium_la_LIBADD += $(TARGET_LIB_DEPS) \
+libvdpau_gallium_la_LIBADD += \
+ $(top_builddir)/src/gallium/auxiliary/pipe-loader/libpipe_loader_static.la \
+ $(GALLIUM_PIPE_LOADER_WINSYS_LIBS) \
+ $(TARGET_LIB_DEPS) \
$(TARGET_RADEON_WINSYS) $(TARGET_RADEON_COMMON)
else # HAVE_GALLIUM_STATIC_TARGETS
libvdpau_gallium_la_LIBADD += \
- $(top_builddir)/src/gallium/auxiliary/pipe-loader/libpipe_loader.la \
- $(GALLIUM_PIPE_LOADER_WINSYS_LIBS)
+ $(top_builddir)/src/gallium/auxiliary/pipe-loader/libpipe_loader_dynamic.la
endif # HAVE_GALLIUM_STATIC_TARGETS
diff --git a/lib/mesa/src/gallium/targets/vdpau/target.c b/lib/mesa/src/gallium/targets/vdpau/target.c
index fde4a4a7d..308e23bb4 100644
--- a/lib/mesa/src/gallium/targets/vdpau/target.c
+++ b/lib/mesa/src/gallium/targets/vdpau/target.c
@@ -1 +1,2 @@
-#include "target-helpers/inline_drm_helper.h"
+#include "target-helpers/drm_helper.h"
+#include "target-helpers/sw_helper.h"
diff --git a/lib/mesa/src/gallium/targets/xa/Makefile.am b/lib/mesa/src/gallium/targets/xa/Makefile.am
index 92173dedc..cdd9a862e 100644
--- a/lib/mesa/src/gallium/targets/xa/Makefile.am
+++ b/lib/mesa/src/gallium/targets/xa/Makefile.am
@@ -37,8 +37,7 @@ libxatracker_la_LIBADD = \
$(top_builddir)/src/gallium/state_trackers/xa/libxatracker.la \
$(top_builddir)/src/gallium/auxiliary/libgalliumvl_stub.la \
$(top_builddir)/src/gallium/auxiliary/libgallium.la \
- $(top_builddir)/src/glsl/libnir.la \
- $(top_builddir)/src/libglsl_util.la \
+ $(top_builddir)/src/compiler/nir/libnir.la \
$(top_builddir)/src/util/libmesautil.la \
$(LIBDRM_LIBS) \
$(GALLIUM_COMMON_LIB_DEPS)
@@ -61,7 +60,7 @@ if HAVE_GALLIUM_STATIC_TARGETS
TARGET_DRIVERS =
TARGET_CPPFLAGS =
-TARGET_LIB_DEPS = $(top_builddir)/src/loader/libloader.la
+TARGET_LIB_DEPS =
include $(top_srcdir)/src/gallium/drivers/i915/Automake.inc
@@ -75,13 +74,15 @@ include $(top_srcdir)/src/gallium/drivers/freedreno/Automake.inc
libxatracker_la_SOURCES += target.c
libxatracker_la_CPPFLAGS = $(TARGET_CPPFLAGS)
-libxatracker_la_LIBADD += $(TARGET_LIB_DEPS)
+libxatracker_la_LIBADD += \
+ $(top_builddir)/src/gallium/auxiliary/pipe-loader/libpipe_loader_static.la \
+ $(GALLIUM_PIPE_LOADER_WINSYS_LIBS) \
+ $(TARGET_LIB_DEPS)
else # HAVE_GALLIUM_STATIC_TARGETS
libxatracker_la_LIBADD += \
- $(top_builddir)/src/gallium/auxiliary/pipe-loader/libpipe_loader.la \
- $(GALLIUM_PIPE_LOADER_WINSYS_LIBS)
+ $(top_builddir)/src/gallium/auxiliary/pipe-loader/libpipe_loader_dynamic.la
endif # HAVE_GALLIUM_STATIC_TARGETS
diff --git a/lib/mesa/src/gallium/targets/xa/target.c b/lib/mesa/src/gallium/targets/xa/target.c
index fde4a4a7d..308e23bb4 100644
--- a/lib/mesa/src/gallium/targets/xa/target.c
+++ b/lib/mesa/src/gallium/targets/xa/target.c
@@ -1 +1,2 @@
-#include "target-helpers/inline_drm_helper.h"
+#include "target-helpers/drm_helper.h"
+#include "target-helpers/sw_helper.h"
diff --git a/lib/mesa/src/gallium/targets/xa/xa.sym b/lib/mesa/src/gallium/targets/xa/xa.sym
index 9c7f422f3..50ccc99cb 100644
--- a/lib/mesa/src/gallium/targets/xa/xa.sym
+++ b/lib/mesa/src/gallium/targets/xa/xa.sym
@@ -23,6 +23,7 @@
xa_surface_dma;
xa_surface_format;
xa_surface_from_handle;
+ xa_surface_from_handle2;
xa_surface_handle;
xa_surface_map;
xa_surface_redefine;
diff --git a/lib/mesa/src/gallium/targets/xvmc/target.c b/lib/mesa/src/gallium/targets/xvmc/target.c
index fde4a4a7d..308e23bb4 100644
--- a/lib/mesa/src/gallium/targets/xvmc/target.c
+++ b/lib/mesa/src/gallium/targets/xvmc/target.c
@@ -1 +1,2 @@
-#include "target-helpers/inline_drm_helper.h"
+#include "target-helpers/drm_helper.h"
+#include "target-helpers/sw_helper.h"