gallium: replace DRM_CONF_SHARE_FD with PIPE_CAP_DMABUF
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
parent
e3841368f3
commit
8ae50e6004
|
@ -7,20 +7,9 @@
|
|||
#include "state_tracker/drm_driver.h"
|
||||
#include "util/xmlpool.h"
|
||||
|
||||
static const struct drm_conf_ret share_fd_ret = {
|
||||
.type = DRM_CONF_BOOL,
|
||||
.val.val_bool = true,
|
||||
};
|
||||
|
||||
const struct drm_conf_ret *
|
||||
pipe_default_configuration_query(enum drm_conf conf)
|
||||
{
|
||||
switch (conf) {
|
||||
case DRM_CONF_SHARE_FD:
|
||||
return &share_fd_ret;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
|
@ -355,6 +355,13 @@ u_pipe_screen_get_param_defaults(struct pipe_screen *pscreen,
|
|||
case PIPE_CAP_MAX_FRAMES_IN_FLIGHT:
|
||||
return 0;
|
||||
|
||||
case PIPE_CAP_DMABUF:
|
||||
#ifdef PIPE_OS_LINUX
|
||||
return 1;
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
|
||||
default:
|
||||
unreachable("bad PIPE_CAP_*");
|
||||
}
|
||||
|
|
|
@ -519,6 +519,8 @@ The integer capabilities:
|
|||
* ``PIPE_CAP_MAX_FRAMES_IN_FLIGHT``: Maximum number of frames that state
|
||||
trackers should allow to be in flight before throttling pipe_context
|
||||
execution. 0 = throttling is disabled.
|
||||
* ``PIPE_CAP_DMABUF``: Whether Linux DMABUF handles are supported by
|
||||
resource_from_handle and resource_get_handle.
|
||||
|
||||
.. _pipe_capf:
|
||||
|
||||
|
|
|
@ -881,6 +881,7 @@ enum pipe_cap
|
|||
PIPE_CAP_TGSI_SKIP_SHRINK_IO_ARRAYS,
|
||||
PIPE_CAP_IMAGE_LOAD_FORMATTED,
|
||||
PIPE_CAP_MAX_FRAMES_IN_FLIGHT,
|
||||
PIPE_CAP_DMABUF,
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -15,8 +15,6 @@ struct pipe_resource;
|
|||
* Configuration queries.
|
||||
*/
|
||||
enum drm_conf {
|
||||
/* Can this driver, running on this kernel, import and export dma-buf fds? */
|
||||
DRM_CONF_SHARE_FD, /* DRM_CONF_BOOL. */
|
||||
/* XML string describing the available config options. */
|
||||
DRM_CONF_XML_OPTIONS, /* DRM_CONF_POINTER */
|
||||
DRM_CONF_MAX
|
||||
|
@ -26,8 +24,6 @@ enum drm_conf {
|
|||
* Type of configuration answer
|
||||
*/
|
||||
enum drm_conf_type {
|
||||
DRM_CONF_BOOL,
|
||||
DRM_CONF_FLOAT,
|
||||
DRM_CONF_POINTER
|
||||
};
|
||||
|
||||
|
@ -37,8 +33,6 @@ enum drm_conf_type {
|
|||
struct drm_conf_ret {
|
||||
enum drm_conf_type type;
|
||||
union {
|
||||
bool val_bool;
|
||||
float val_float;
|
||||
void *val_pointer;
|
||||
} val;
|
||||
};
|
||||
|
|
|
@ -1908,7 +1908,6 @@ dri2_init_screen(__DRIscreen * sPriv)
|
|||
const __DRIconfig **configs;
|
||||
struct dri_screen *screen;
|
||||
struct pipe_screen *pscreen = NULL;
|
||||
const struct drm_conf_ret *dmabuf_ret;
|
||||
|
||||
screen = CALLOC_STRUCT(dri_screen);
|
||||
if (!screen)
|
||||
|
@ -1932,13 +1931,11 @@ dri2_init_screen(__DRIscreen * sPriv)
|
|||
screen->default_throttle_frames =
|
||||
pscreen->get_param(pscreen, PIPE_CAP_MAX_FRAMES_IN_FLIGHT);
|
||||
|
||||
dmabuf_ret = pipe_loader_configuration(screen->dev, DRM_CONF_SHARE_FD);
|
||||
|
||||
if (pscreen->resource_create_with_modifiers)
|
||||
dri2ImageExtension.createImageWithModifiers =
|
||||
dri2_create_image_with_modifiers;
|
||||
|
||||
if (dmabuf_ret && dmabuf_ret->val.val_bool) {
|
||||
if (pscreen->get_param(pscreen, PIPE_CAP_DMABUF)) {
|
||||
uint64_t cap;
|
||||
|
||||
if (drmGetCap(sPriv->fd, DRM_CAP_PRIME, &cap) == 0 &&
|
||||
|
|
|
@ -205,7 +205,6 @@ drm_create_adapter( int fd,
|
|||
struct d3dadapter9drm_context *ctx = CALLOC_STRUCT(d3dadapter9drm_context);
|
||||
HRESULT hr;
|
||||
bool different_device;
|
||||
const struct drm_conf_ret *dmabuf_ret = NULL;
|
||||
driOptionCache defaultInitOptions;
|
||||
driOptionCache userInitOptions;
|
||||
int throttling_value_user = -2;
|
||||
|
@ -235,8 +234,7 @@ drm_create_adapter( int fd,
|
|||
return D3DERR_DRIVERINTERNALERROR;
|
||||
}
|
||||
|
||||
dmabuf_ret = pipe_loader_configuration(ctx->dev, DRM_CONF_SHARE_FD);
|
||||
if (!dmabuf_ret || !dmabuf_ret->val.val_bool) {
|
||||
if (!ctx->base.hal->get_param(ctx->base.hal, PIPE_CAP_DMABUF)) {
|
||||
ERR("The driver is not capable of dma-buf sharing."
|
||||
"Abandon to load nine state tracker\n");
|
||||
drm_destroy(&ctx->base);
|
||||
|
|
|
@ -23,19 +23,8 @@ create_screen(int fd, const struct pipe_screen_config *config)
|
|||
return screen;
|
||||
}
|
||||
|
||||
static const struct drm_conf_ret share_fd_ret = {
|
||||
.type = DRM_CONF_BOOL,
|
||||
.val.val_bool = true,
|
||||
};
|
||||
|
||||
static const struct drm_conf_ret *drm_configuration(enum drm_conf conf)
|
||||
{
|
||||
switch (conf) {
|
||||
case DRM_CONF_SHARE_FD:
|
||||
return &share_fd_ret;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
|
@ -17,19 +17,8 @@ create_screen(int fd, const struct pipe_screen_config *config)
|
|||
return screen;
|
||||
}
|
||||
|
||||
static const struct drm_conf_ret share_fd_ret = {
|
||||
.type = DRM_CONF_BOOL,
|
||||
.val.val_bool = true,
|
||||
};
|
||||
|
||||
static const struct drm_conf_ret *drm_configuration(enum drm_conf conf)
|
||||
{
|
||||
switch (conf) {
|
||||
case DRM_CONF_SHARE_FD:
|
||||
return &share_fd_ret;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
|
@ -17,19 +17,8 @@ create_screen(int fd, const struct pipe_screen_config *config)
|
|||
return screen;
|
||||
}
|
||||
|
||||
static const struct drm_conf_ret share_fd_ret = {
|
||||
.type = DRM_CONF_BOOL,
|
||||
.val.val_bool = true,
|
||||
};
|
||||
|
||||
static const struct drm_conf_ret *drm_configuration(enum drm_conf conf)
|
||||
{
|
||||
switch (conf) {
|
||||
case DRM_CONF_SHARE_FD:
|
||||
return &share_fd_ret;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
|
@ -13,19 +13,8 @@ create_screen(int fd, const struct pipe_screen_config *config)
|
|||
return sws ? debug_screen_wrap(sws->screen) : NULL;
|
||||
}
|
||||
|
||||
static const struct drm_conf_ret share_fd_ret = {
|
||||
.type = DRM_CONF_BOOL,
|
||||
.val.val_bool = true,
|
||||
};
|
||||
|
||||
static const struct drm_conf_ret *drm_configuration(enum drm_conf conf)
|
||||
{
|
||||
switch (conf) {
|
||||
case DRM_CONF_SHARE_FD:
|
||||
return &share_fd_ret;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
|
@ -13,19 +13,8 @@ create_screen(int fd, const struct pipe_screen_config *config)
|
|||
return rw ? debug_screen_wrap(rw->screen) : NULL;
|
||||
}
|
||||
|
||||
static const struct drm_conf_ret share_fd_ret = {
|
||||
.type = DRM_CONF_BOOL,
|
||||
.val.val_bool = true,
|
||||
};
|
||||
|
||||
static const struct drm_conf_ret *drm_configuration(enum drm_conf conf)
|
||||
{
|
||||
switch (conf) {
|
||||
case DRM_CONF_SHARE_FD:
|
||||
return &share_fd_ret;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
|
@ -20,11 +20,6 @@ create_screen(int fd, const struct pipe_screen_config *config)
|
|||
return rw ? debug_screen_wrap(rw->screen) : NULL;
|
||||
}
|
||||
|
||||
static const struct drm_conf_ret share_fd_ret = {
|
||||
.type = DRM_CONF_BOOL,
|
||||
.val.val_bool = true,
|
||||
};
|
||||
|
||||
static const struct drm_conf_ret *drm_configuration(enum drm_conf conf)
|
||||
{
|
||||
static const struct drm_conf_ret xml_options_ret = {
|
||||
|
@ -34,8 +29,6 @@ static const struct drm_conf_ret *drm_configuration(enum drm_conf conf)
|
|||
};
|
||||
|
||||
switch (conf) {
|
||||
case DRM_CONF_SHARE_FD:
|
||||
return &share_fd_ret;
|
||||
case DRM_CONF_XML_OPTIONS:
|
||||
return &xml_options_ret;
|
||||
default:
|
||||
|
|
|
@ -23,19 +23,8 @@ create_screen(int fd, const struct pipe_screen_config *config)
|
|||
return screen;
|
||||
}
|
||||
|
||||
static const struct drm_conf_ret share_fd_ret = {
|
||||
.type = DRM_CONF_BOOL,
|
||||
.val.val_bool = true,
|
||||
};
|
||||
|
||||
static const struct drm_conf_ret *drm_configuration(enum drm_conf conf)
|
||||
{
|
||||
switch (conf) {
|
||||
case DRM_CONF_SHARE_FD:
|
||||
return &share_fd_ret;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue