{st,targets}/dri: use static/dynamic pipe-loader
Covert DRI to use only the pipe-loader interface. With drisw_create_screen and kms_swrast_create_screen replaced by their pipe-loader equivalent, we can now drop them. Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com> Acked-by: Rob Clark <robclark@freedesktop.org>
This commit is contained in:
parent
c4d337146a
commit
23fb11455b
|
@ -4,9 +4,6 @@
|
|||
#include "state_tracker/drm_driver.h"
|
||||
#include "target-helpers/inline_debug_helper.h"
|
||||
#include "loader.h"
|
||||
#if defined(DRI_TARGET)
|
||||
#include "dri_screen.h"
|
||||
#endif
|
||||
|
||||
#if GALLIUM_SOFTPIPE
|
||||
#include "target-helpers/inline_sw_helper.h"
|
||||
|
@ -68,27 +65,6 @@ static char* driver_name = NULL;
|
|||
|
||||
/* XXX: We need to teardown the winsys if *screen_create() fails. */
|
||||
|
||||
#if defined(GALLIUM_SOFTPIPE)
|
||||
#if defined(DRI_TARGET)
|
||||
#if defined(HAVE_LIBDRM)
|
||||
|
||||
struct pipe_screen *
|
||||
kms_swrast_create_screen(int fd)
|
||||
{
|
||||
struct sw_winsys *sws;
|
||||
struct pipe_screen *screen;
|
||||
|
||||
sws = kms_dri_create_winsys(fd);
|
||||
if (!sws)
|
||||
return NULL;
|
||||
|
||||
screen = sw_screen_create(sws);
|
||||
return screen ? debug_screen_wrap(screen) : NULL;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(GALLIUM_I915)
|
||||
|
||||
static struct pipe_screen *
|
||||
|
|
|
@ -69,32 +69,4 @@ sw_screen_create(struct sw_winsys *winsys)
|
|||
return sw_screen_create_named(winsys, driver);
|
||||
}
|
||||
|
||||
#if defined(GALLIUM_SOFTPIPE)
|
||||
#if defined(DRI_TARGET)
|
||||
#include "target-helpers/inline_debug_helper.h"
|
||||
#include "sw/dri/dri_sw_winsys.h"
|
||||
|
||||
inline struct pipe_screen *
|
||||
drisw_create_screen(struct drisw_loader_funcs *lf)
|
||||
{
|
||||
struct sw_winsys *winsys = NULL;
|
||||
struct pipe_screen *screen = NULL;
|
||||
|
||||
winsys = dri_create_sw_winsys(lf);
|
||||
if (winsys == NULL)
|
||||
return NULL;
|
||||
|
||||
screen = sw_screen_create(winsys);
|
||||
if (screen == NULL) {
|
||||
winsys->destroy(winsys);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
screen = debug_screen_wrap(screen);
|
||||
return screen;
|
||||
}
|
||||
#endif // DRI_TARGET
|
||||
#endif // GALLIUM_SOFTPIPE
|
||||
|
||||
|
||||
#endif
|
||||
|
|
|
@ -3,13 +3,10 @@ if HAVE_GALLIUM_SOFTPIPE
|
|||
TARGET_DRIVERS += swrast
|
||||
TARGET_CPPFLAGS += -DGALLIUM_SOFTPIPE
|
||||
TARGET_LIB_DEPS += \
|
||||
$(top_builddir)/src/gallium/winsys/sw/dri/libswdri.la \
|
||||
$(top_builddir)/src/gallium/drivers/softpipe/libsoftpipe.la
|
||||
|
||||
if HAVE_DRISW_KMS
|
||||
TARGET_DRIVERS += kms_swrast
|
||||
TARGET_LIB_DEPS += \
|
||||
$(top_builddir)/src/gallium/winsys/sw/kms-dri/libswkmsdri.la
|
||||
|
||||
endif
|
||||
endif
|
||||
|
|
|
@ -29,9 +29,6 @@ include $(CLEAR_VARS)
|
|||
|
||||
LOCAL_SRC_FILES := $(common_SOURCES)
|
||||
|
||||
LOCAL_CFLAGS := \
|
||||
-DGALLIUM_STATIC_TARGETS=1 \
|
||||
|
||||
LOCAL_C_INCLUDES := \
|
||||
$(MESA_TOP)/src/mapi \
|
||||
$(MESA_TOP)/src/mesa \
|
||||
|
|
|
@ -34,15 +34,10 @@ AM_CPPFLAGS = \
|
|||
$(LIBDRM_CFLAGS) \
|
||||
$(VISIBILITY_CFLAGS)
|
||||
|
||||
if HAVE_GALLIUM_STATIC_TARGETS
|
||||
AM_CPPFLAGS += \
|
||||
-DGALLIUM_STATIC_TARGETS=1
|
||||
|
||||
if HAVE_GALLIUM_SOFTPIPE
|
||||
AM_CPPFLAGS += \
|
||||
-DGALLIUM_SOFTPIPE
|
||||
endif # HAVE_GALLIUM_SOFTPIPE
|
||||
endif # HAVE_GALLIUM_STATIC_TARGETS
|
||||
|
||||
noinst_LTLIBRARIES = libdri.la
|
||||
libdri_la_SOURCES = $(common_SOURCES)
|
||||
|
|
|
@ -15,10 +15,6 @@ env.Append(CPPPATH = [
|
|||
xmlpool_options.dir.dir, # Dir to generated xmlpool/options.h
|
||||
])
|
||||
|
||||
env.Append(CPPDEFINES = [
|
||||
('GALLIUM_STATIC_TARGETS', '1'),
|
||||
])
|
||||
|
||||
sources = env.ParseSourceList('Makefile.sources', 'common_SOURCES')
|
||||
|
||||
# XXX: if HAVE_DRISW
|
||||
|
|
|
@ -1457,19 +1457,12 @@ dri2_init_screen(__DRIscreen * sPriv)
|
|||
|
||||
sPriv->driverPrivate = (void *)screen;
|
||||
|
||||
#if GALLIUM_STATIC_TARGETS
|
||||
pscreen = dd_create_screen(screen->fd);
|
||||
|
||||
throttle_ret = dd_configuration(DRM_CONF_THROTTLE);
|
||||
dmabuf_ret = dd_configuration(DRM_CONF_SHARE_FD);
|
||||
#else
|
||||
if (pipe_loader_drm_probe_fd(&screen->dev, screen->fd)) {
|
||||
pscreen = pipe_loader_create_screen(screen->dev);
|
||||
|
||||
throttle_ret = pipe_loader_configuration(screen->dev, DRM_CONF_THROTTLE);
|
||||
dmabuf_ret = pipe_loader_configuration(screen->dev, DRM_CONF_SHARE_FD);
|
||||
}
|
||||
#endif // GALLIUM_STATIC_TARGETS
|
||||
|
||||
if (throttle_ret && throttle_ret->val.val_int != -1) {
|
||||
screen->throttling_enabled = TRUE;
|
||||
|
@ -1495,11 +1488,7 @@ dri2_init_screen(__DRIscreen * sPriv)
|
|||
|
||||
/* dri_init_screen_helper checks pscreen for us */
|
||||
|
||||
#if GALLIUM_STATIC_TARGETS
|
||||
configs = dri_init_screen_helper(screen, pscreen, dd_driver_name());
|
||||
#else
|
||||
configs = dri_init_screen_helper(screen, pscreen, screen->dev->driver_name);
|
||||
#endif // GALLIUM_STATIC_TARGETS
|
||||
if (!configs)
|
||||
goto fail;
|
||||
|
||||
|
@ -1511,10 +1500,8 @@ dri2_init_screen(__DRIscreen * sPriv)
|
|||
return configs;
|
||||
fail:
|
||||
dri_destroy_screen_helper(screen);
|
||||
#if !GALLIUM_STATIC_TARGETS
|
||||
if (screen->dev)
|
||||
pipe_loader_release(&screen->dev, 1);
|
||||
#endif // !GALLIUM_STATIC_TARGETS
|
||||
FREE(screen);
|
||||
return NULL;
|
||||
}
|
||||
|
@ -1527,7 +1514,6 @@ fail:
|
|||
static const __DRIconfig **
|
||||
dri_kms_init_screen(__DRIscreen * sPriv)
|
||||
{
|
||||
#if GALLIUM_STATIC_TARGETS
|
||||
#if defined(GALLIUM_SOFTPIPE)
|
||||
const __DRIconfig **configs;
|
||||
struct dri_screen *screen;
|
||||
|
@ -1543,7 +1529,8 @@ dri_kms_init_screen(__DRIscreen * sPriv)
|
|||
|
||||
sPriv->driverPrivate = (void *)screen;
|
||||
|
||||
pscreen = kms_swrast_create_screen(screen->fd);
|
||||
if (pipe_loader_sw_probe_kms(&screen->dev, screen->fd))
|
||||
pscreen = pipe_loader_create_screen(screen->dev);
|
||||
|
||||
if (drmGetCap(sPriv->fd, DRM_CAP_PRIME, &cap) == 0 &&
|
||||
(cap & DRM_PRIME_CAP_IMPORT)) {
|
||||
|
@ -1566,9 +1553,10 @@ dri_kms_init_screen(__DRIscreen * sPriv)
|
|||
return configs;
|
||||
fail:
|
||||
dri_destroy_screen_helper(screen);
|
||||
if (screen->dev)
|
||||
pipe_loader_release(&screen->dev, 1);
|
||||
FREE(screen);
|
||||
#endif // GALLIUM_SOFTPIPE
|
||||
#endif // GALLIUM_STATIC_TARGETS
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
|
@ -390,9 +390,7 @@ dri_destroy_screen(__DRIscreen * sPriv)
|
|||
|
||||
dri_destroy_screen_helper(screen);
|
||||
|
||||
#if !GALLIUM_STATIC_TARGETS
|
||||
pipe_loader_release(&screen->dev, 1);
|
||||
#endif // !GALLIUM_STATIC_TARGETS
|
||||
|
||||
free(screen);
|
||||
sPriv->driverPrivate = NULL;
|
||||
|
|
|
@ -34,14 +34,12 @@
|
|||
* for createImage/destroyImage similar to DRI2 getBuffers.
|
||||
*/
|
||||
|
||||
/* XXX: Temporary hack, until we get rid of drisw_create_screen() */
|
||||
#define DRI_TARGET
|
||||
|
||||
#include "util/u_format.h"
|
||||
#include "util/u_memory.h"
|
||||
#include "util/u_inlines.h"
|
||||
#include "util/u_box.h"
|
||||
#include "pipe/p_context.h"
|
||||
#include "pipe-loader/pipe_loader.h"
|
||||
#include "state_tracker/drisw_api.h"
|
||||
#include "state_tracker/st_context.h"
|
||||
|
||||
|
@ -385,7 +383,7 @@ drisw_init_screen(__DRIscreen * sPriv)
|
|||
{
|
||||
const __DRIconfig **configs;
|
||||
struct dri_screen *screen;
|
||||
struct pipe_screen *pscreen;
|
||||
struct pipe_screen *pscreen = NULL;
|
||||
|
||||
screen = CALLOC_STRUCT(dri_screen);
|
||||
if (!screen)
|
||||
|
@ -399,7 +397,9 @@ drisw_init_screen(__DRIscreen * sPriv)
|
|||
sPriv->driverPrivate = (void *)screen;
|
||||
sPriv->extensions = drisw_screen_extensions;
|
||||
|
||||
pscreen = drisw_create_screen(&drisw_lf);
|
||||
if (pipe_loader_sw_probe_dri(&screen->dev, &drisw_lf))
|
||||
pscreen = pipe_loader_create_screen(screen->dev);
|
||||
|
||||
/* dri_init_screen_helper checks pscreen for us */
|
||||
|
||||
configs = dri_init_screen_helper(screen, pscreen, "swrast");
|
||||
|
@ -409,6 +409,8 @@ drisw_init_screen(__DRIscreen * sPriv)
|
|||
return configs;
|
||||
fail:
|
||||
dri_destroy_screen_helper(screen);
|
||||
if (screen->dev)
|
||||
pipe_loader_release(&screen->dev, 1);
|
||||
FREE(screen);
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
@ -108,6 +108,7 @@ LOCAL_STATIC_LIBRARIES := \
|
|||
libmesa_dri_common \
|
||||
libmesa_megadriver_stub \
|
||||
libmesa_gallium \
|
||||
libmesa_pipe_loader \
|
||||
libmesa_util \
|
||||
libmesa_loader \
|
||||
|
||||
|
|
|
@ -64,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
|
||||
|
||||
|
@ -91,7 +91,10 @@ 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
|
||||
|
|
|
@ -38,6 +38,7 @@ env.Prepend(LIBS = [
|
|||
svga,
|
||||
ws_dri,
|
||||
softpipe,
|
||||
pipe_loader,
|
||||
libloader,
|
||||
mesautil,
|
||||
mesa,
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
#include "target-helpers/inline_drm_helper.h"
|
||||
#include "target-helpers/inline_sw_helper.h"
|
||||
#include "target-helpers/drm_helper.h"
|
||||
|
||||
#include "dri_screen.h"
|
||||
|
||||
|
|
Loading…
Reference in New Issue