mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-23 17:40:11 +01:00
gallium: add pipe_screen_config to screen_create functions
This allows a more generic mechanism for passing user configurations into drivers by accessing the dri options directly. Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
parent
781375ac6f
commit
bc7f41e11d
37 changed files with 118 additions and 88 deletions
|
|
@ -74,9 +74,10 @@ pipe_loader_configuration(struct pipe_loader_device *dev,
|
|||
}
|
||||
|
||||
struct pipe_screen *
|
||||
pipe_loader_create_screen(struct pipe_loader_device *dev, unsigned flags)
|
||||
pipe_loader_create_screen(struct pipe_loader_device *dev,
|
||||
struct pipe_screen_config *config)
|
||||
{
|
||||
return dev->ops->create_screen(dev, flags);
|
||||
return dev->ops->create_screen(dev, config);
|
||||
}
|
||||
|
||||
struct util_dl_library *
|
||||
|
|
|
|||
|
|
@ -82,9 +82,12 @@ pipe_loader_probe(struct pipe_loader_device **devs, int ndev);
|
|||
* Create a pipe_screen for the specified device.
|
||||
*
|
||||
* \param dev Device the screen will be created for.
|
||||
* \param config Configuration options. The lifetime of this structure and its
|
||||
* elements may be limited to the duration of this call.
|
||||
*/
|
||||
struct pipe_screen *
|
||||
pipe_loader_create_screen(struct pipe_loader_device *dev, unsigned flags);
|
||||
pipe_loader_create_screen(struct pipe_loader_device *dev,
|
||||
struct pipe_screen_config *config);
|
||||
|
||||
/**
|
||||
* Query the configuration parameters for the specified device.
|
||||
|
|
|
|||
|
|
@ -281,11 +281,12 @@ pipe_loader_drm_configuration(struct pipe_loader_device *dev,
|
|||
}
|
||||
|
||||
static struct pipe_screen *
|
||||
pipe_loader_drm_create_screen(struct pipe_loader_device *dev, unsigned flags)
|
||||
pipe_loader_drm_create_screen(struct pipe_loader_device *dev,
|
||||
const struct pipe_screen_config *config)
|
||||
{
|
||||
struct pipe_loader_drm_device *ddev = pipe_loader_drm_device(dev);
|
||||
|
||||
return ddev->dd->create_screen(ddev->fd, flags);
|
||||
return ddev->dd->create_screen(ddev->fd, config);
|
||||
}
|
||||
|
||||
static const struct pipe_loader_ops pipe_loader_drm_ops = {
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@
|
|||
|
||||
struct pipe_loader_ops {
|
||||
struct pipe_screen *(*create_screen)(struct pipe_loader_device *dev,
|
||||
unsigned flags);
|
||||
const struct pipe_screen_config *config);
|
||||
|
||||
const struct drm_conf_ret *(*configuration)(struct pipe_loader_device *dev,
|
||||
enum drm_conf conf);
|
||||
|
|
|
|||
|
|
@ -295,7 +295,7 @@ pipe_loader_sw_configuration(struct pipe_loader_device *dev,
|
|||
|
||||
static struct pipe_screen *
|
||||
pipe_loader_sw_create_screen(struct pipe_loader_device *dev,
|
||||
unsigned flags)
|
||||
const struct pipe_screen_config *config)
|
||||
{
|
||||
struct pipe_loader_sw_device *sdev = pipe_loader_sw_device(dev);
|
||||
struct pipe_screen *screen;
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
#include "i915/i915_public.h"
|
||||
|
||||
struct pipe_screen *
|
||||
pipe_i915_create_screen(int fd, unsigned flags)
|
||||
pipe_i915_create_screen(int fd, const struct pipe_screen_config *config)
|
||||
{
|
||||
struct i915_winsys *iws;
|
||||
struct pipe_screen *screen;
|
||||
|
|
@ -26,7 +26,7 @@ pipe_i915_create_screen(int fd, unsigned flags)
|
|||
#else
|
||||
|
||||
struct pipe_screen *
|
||||
pipe_i915_create_screen(int fd, unsigned flags)
|
||||
pipe_i915_create_screen(int fd, const struct pipe_screen_config *config)
|
||||
{
|
||||
fprintf(stderr, "i915g: driver missing\n");
|
||||
return NULL;
|
||||
|
|
@ -38,7 +38,7 @@ pipe_i915_create_screen(int fd, unsigned flags)
|
|||
#include "nouveau/drm/nouveau_drm_public.h"
|
||||
|
||||
struct pipe_screen *
|
||||
pipe_nouveau_create_screen(int fd, unsigned flags)
|
||||
pipe_nouveau_create_screen(int fd, const struct pipe_screen_config *config)
|
||||
{
|
||||
struct pipe_screen *screen;
|
||||
|
||||
|
|
@ -49,7 +49,7 @@ pipe_nouveau_create_screen(int fd, unsigned flags)
|
|||
#else
|
||||
|
||||
struct pipe_screen *
|
||||
pipe_nouveau_create_screen(int fd, unsigned flags)
|
||||
pipe_nouveau_create_screen(int fd, const struct pipe_screen_config *config)
|
||||
{
|
||||
fprintf(stderr, "nouveau: driver missing\n");
|
||||
return NULL;
|
||||
|
|
@ -61,7 +61,7 @@ pipe_nouveau_create_screen(int fd, unsigned flags)
|
|||
#include "pl111/drm/pl111_drm_public.h"
|
||||
|
||||
struct pipe_screen *
|
||||
pipe_pl111_create_screen(int fd, unsigned flags)
|
||||
pipe_pl111_create_screen(int fd, const struct pipe_screen_config *config)
|
||||
{
|
||||
struct pipe_screen *screen;
|
||||
|
||||
|
|
@ -72,7 +72,7 @@ pipe_pl111_create_screen(int fd, unsigned flags)
|
|||
#else
|
||||
|
||||
struct pipe_screen *
|
||||
pipe_pl111_create_screen(int fd, unsigned flags)
|
||||
pipe_pl111_create_screen(int fd, const struct pipe_screen_config *config)
|
||||
{
|
||||
fprintf(stderr, "pl111: driver missing\n");
|
||||
return NULL;
|
||||
|
|
@ -86,18 +86,18 @@ pipe_pl111_create_screen(int fd, unsigned flags)
|
|||
#include "r300/r300_public.h"
|
||||
|
||||
struct pipe_screen *
|
||||
pipe_r300_create_screen(int fd, unsigned flags)
|
||||
pipe_r300_create_screen(int fd, const struct pipe_screen_config *config)
|
||||
{
|
||||
struct radeon_winsys *rw;
|
||||
|
||||
rw = radeon_drm_winsys_create(fd, flags, r300_screen_create);
|
||||
rw = radeon_drm_winsys_create(fd, config, r300_screen_create);
|
||||
return rw ? debug_screen_wrap(rw->screen) : NULL;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
struct pipe_screen *
|
||||
pipe_r300_create_screen(int fd, unsigned flags)
|
||||
pipe_r300_create_screen(int fd, const struct pipe_screen_config *config)
|
||||
{
|
||||
fprintf(stderr, "r300: driver missing\n");
|
||||
return NULL;
|
||||
|
|
@ -111,18 +111,18 @@ pipe_r300_create_screen(int fd, unsigned flags)
|
|||
#include "r600/r600_public.h"
|
||||
|
||||
struct pipe_screen *
|
||||
pipe_r600_create_screen(int fd, unsigned flags)
|
||||
pipe_r600_create_screen(int fd, const struct pipe_screen_config *config)
|
||||
{
|
||||
struct radeon_winsys *rw;
|
||||
|
||||
rw = radeon_drm_winsys_create(fd, flags, r600_screen_create);
|
||||
rw = radeon_drm_winsys_create(fd, config, r600_screen_create);
|
||||
return rw ? debug_screen_wrap(rw->screen) : NULL;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
struct pipe_screen *
|
||||
pipe_r600_create_screen(int fd, unsigned flags)
|
||||
pipe_r600_create_screen(int fd, const struct pipe_screen_config *config)
|
||||
{
|
||||
fprintf(stderr, "r600: driver missing\n");
|
||||
return NULL;
|
||||
|
|
@ -137,15 +137,15 @@ pipe_r600_create_screen(int fd, unsigned flags)
|
|||
#include "radeonsi/si_public.h"
|
||||
|
||||
struct pipe_screen *
|
||||
pipe_radeonsi_create_screen(int fd, unsigned flags)
|
||||
pipe_radeonsi_create_screen(int fd, const struct pipe_screen_config *config)
|
||||
{
|
||||
struct radeon_winsys *rw;
|
||||
|
||||
/* First, try amdgpu. */
|
||||
rw = amdgpu_winsys_create(fd, flags, radeonsi_screen_create);
|
||||
rw = amdgpu_winsys_create(fd, config, radeonsi_screen_create);
|
||||
|
||||
if (!rw)
|
||||
rw = radeon_drm_winsys_create(fd, flags, radeonsi_screen_create);
|
||||
rw = radeon_drm_winsys_create(fd, config, radeonsi_screen_create);
|
||||
|
||||
return rw ? debug_screen_wrap(rw->screen) : NULL;
|
||||
}
|
||||
|
|
@ -153,7 +153,7 @@ pipe_radeonsi_create_screen(int fd, unsigned flags)
|
|||
#else
|
||||
|
||||
struct pipe_screen *
|
||||
pipe_radeonsi_create_screen(int fd, unsigned flags)
|
||||
pipe_radeonsi_create_screen(int fd, const struct pipe_screen_config *config)
|
||||
{
|
||||
fprintf(stderr, "radeonsi: driver missing\n");
|
||||
return NULL;
|
||||
|
|
@ -166,7 +166,7 @@ pipe_radeonsi_create_screen(int fd, unsigned flags)
|
|||
#include "svga/svga_public.h"
|
||||
|
||||
struct pipe_screen *
|
||||
pipe_vmwgfx_create_screen(int fd, unsigned flags)
|
||||
pipe_vmwgfx_create_screen(int fd, const struct pipe_screen_config *config)
|
||||
{
|
||||
struct svga_winsys_screen *sws;
|
||||
struct pipe_screen *screen;
|
||||
|
|
@ -182,7 +182,7 @@ pipe_vmwgfx_create_screen(int fd, unsigned flags)
|
|||
#else
|
||||
|
||||
struct pipe_screen *
|
||||
pipe_vmwgfx_create_screen(int fd, unsigned flags)
|
||||
pipe_vmwgfx_create_screen(int fd, const struct pipe_screen_config *config)
|
||||
{
|
||||
fprintf(stderr, "svga: driver missing\n");
|
||||
return NULL;
|
||||
|
|
@ -194,7 +194,7 @@ pipe_vmwgfx_create_screen(int fd, unsigned flags)
|
|||
#include "freedreno/drm/freedreno_drm_public.h"
|
||||
|
||||
struct pipe_screen *
|
||||
pipe_freedreno_create_screen(int fd, unsigned flags)
|
||||
pipe_freedreno_create_screen(int fd, const struct pipe_screen_config *config)
|
||||
{
|
||||
struct pipe_screen *screen;
|
||||
|
||||
|
|
@ -205,7 +205,7 @@ pipe_freedreno_create_screen(int fd, unsigned flags)
|
|||
#else
|
||||
|
||||
struct pipe_screen *
|
||||
pipe_freedreno_create_screen(int fd, unsigned flags)
|
||||
pipe_freedreno_create_screen(int fd, const struct pipe_screen_config *config)
|
||||
{
|
||||
fprintf(stderr, "freedreno: driver missing\n");
|
||||
return NULL;
|
||||
|
|
@ -218,7 +218,7 @@ pipe_freedreno_create_screen(int fd, unsigned flags)
|
|||
#include "virgl/virgl_public.h"
|
||||
|
||||
struct pipe_screen *
|
||||
pipe_virgl_create_screen(int fd, unsigned flags)
|
||||
pipe_virgl_create_screen(int fd, const struct pipe_screen_config *config)
|
||||
{
|
||||
struct pipe_screen *screen;
|
||||
|
||||
|
|
@ -229,7 +229,7 @@ pipe_virgl_create_screen(int fd, unsigned flags)
|
|||
#else
|
||||
|
||||
struct pipe_screen *
|
||||
pipe_virgl_create_screen(int fd, unsigned flags)
|
||||
pipe_virgl_create_screen(int fd, const struct pipe_screen_config *config)
|
||||
{
|
||||
fprintf(stderr, "virgl: driver missing\n");
|
||||
return NULL;
|
||||
|
|
@ -241,7 +241,7 @@ pipe_virgl_create_screen(int fd, unsigned flags)
|
|||
#include "vc4/drm/vc4_drm_public.h"
|
||||
|
||||
struct pipe_screen *
|
||||
pipe_vc4_create_screen(int fd, unsigned flags)
|
||||
pipe_vc4_create_screen(int fd, const struct pipe_screen_config *config)
|
||||
{
|
||||
struct pipe_screen *screen;
|
||||
|
||||
|
|
@ -252,7 +252,7 @@ pipe_vc4_create_screen(int fd, unsigned flags)
|
|||
#else
|
||||
|
||||
struct pipe_screen *
|
||||
pipe_vc4_create_screen(int fd, unsigned flags)
|
||||
pipe_vc4_create_screen(int fd, const struct pipe_screen_config *config)
|
||||
{
|
||||
fprintf(stderr, "vc4: driver missing\n");
|
||||
return NULL;
|
||||
|
|
@ -264,7 +264,7 @@ pipe_vc4_create_screen(int fd, unsigned flags)
|
|||
#include "etnaviv/drm/etnaviv_drm_public.h"
|
||||
|
||||
struct pipe_screen *
|
||||
pipe_etna_create_screen(int fd, unsigned flags)
|
||||
pipe_etna_create_screen(int fd, const struct pipe_screen_config *config)
|
||||
{
|
||||
struct pipe_screen *screen;
|
||||
|
||||
|
|
@ -275,7 +275,7 @@ pipe_etna_create_screen(int fd, unsigned flags)
|
|||
#else
|
||||
|
||||
struct pipe_screen *
|
||||
pipe_etna_create_screen(int fd, unsigned flags)
|
||||
pipe_etna_create_screen(int fd, const struct pipe_screen_config *config)
|
||||
{
|
||||
fprintf(stderr, "etnaviv: driver missing\n");
|
||||
return NULL;
|
||||
|
|
@ -287,7 +287,7 @@ pipe_etna_create_screen(int fd, unsigned flags)
|
|||
#include "imx/drm/imx_drm_public.h"
|
||||
|
||||
struct pipe_screen *
|
||||
pipe_imx_drm_create_screen(int fd, unsigned flags)
|
||||
pipe_imx_drm_create_screen(int fd, const struct pipe_screen_config *config)
|
||||
{
|
||||
struct pipe_screen *screen;
|
||||
|
||||
|
|
@ -298,7 +298,7 @@ pipe_imx_drm_create_screen(int fd, unsigned flags)
|
|||
#else
|
||||
|
||||
struct pipe_screen *
|
||||
pipe_imx_drm_create_screen(int fd, unsigned flags)
|
||||
pipe_imx_drm_create_screen(int fd, const struct pipe_screen_config *config)
|
||||
{
|
||||
fprintf(stderr, "imx-drm: driver missing\n");
|
||||
return NULL;
|
||||
|
|
|
|||
|
|
@ -3,44 +3,45 @@
|
|||
|
||||
|
||||
struct pipe_screen;
|
||||
struct pipe_screen_config;
|
||||
|
||||
struct pipe_screen *
|
||||
pipe_i915_create_screen(int fd, unsigned flags);
|
||||
pipe_i915_create_screen(int fd, const struct pipe_screen_config *config);
|
||||
|
||||
struct pipe_screen *
|
||||
pipe_ilo_create_screen(int fd, unsigned flags);
|
||||
pipe_ilo_create_screen(int fd, const struct pipe_screen_config *config);
|
||||
|
||||
struct pipe_screen *
|
||||
pipe_nouveau_create_screen(int fd, unsigned flags);
|
||||
pipe_nouveau_create_screen(int fd, const struct pipe_screen_config *config);
|
||||
|
||||
struct pipe_screen *
|
||||
pipe_r300_create_screen(int fd, unsigned flags);
|
||||
pipe_r300_create_screen(int fd, const struct pipe_screen_config *config);
|
||||
|
||||
struct pipe_screen *
|
||||
pipe_r600_create_screen(int fd, unsigned flags);
|
||||
pipe_r600_create_screen(int fd, const struct pipe_screen_config *config);
|
||||
|
||||
struct pipe_screen *
|
||||
pipe_radeonsi_create_screen(int fd, unsigned flags);
|
||||
pipe_radeonsi_create_screen(int fd, const struct pipe_screen_config *config);
|
||||
|
||||
struct pipe_screen *
|
||||
pipe_vmwgfx_create_screen(int fd, unsigned flags);
|
||||
pipe_vmwgfx_create_screen(int fd, const struct pipe_screen_config *config);
|
||||
|
||||
struct pipe_screen *
|
||||
pipe_freedreno_create_screen(int fd, unsigned flags);
|
||||
pipe_freedreno_create_screen(int fd, const struct pipe_screen_config *config);
|
||||
|
||||
struct pipe_screen *
|
||||
pipe_virgl_create_screen(int fd, unsigned flags);
|
||||
pipe_virgl_create_screen(int fd, const struct pipe_screen_config *config);
|
||||
|
||||
struct pipe_screen *
|
||||
pipe_vc4_create_screen(int fd, unsigned flags);
|
||||
pipe_vc4_create_screen(int fd, const struct pipe_screen_config *config);
|
||||
|
||||
struct pipe_screen *
|
||||
pipe_pl111_create_screen(int fd, unsigned flags);
|
||||
pipe_pl111_create_screen(int fd, const struct pipe_screen_config *config);
|
||||
|
||||
struct pipe_screen *
|
||||
pipe_etna_create_screen(int fd, unsigned flags);
|
||||
pipe_etna_create_screen(int fd, const struct pipe_screen_config *config);
|
||||
|
||||
struct pipe_screen *
|
||||
pipe_imx_drm_create_screen(int fd, unsigned flags);
|
||||
pipe_imx_drm_create_screen(int fd, const struct pipe_screen_config *config);
|
||||
|
||||
#endif /* _DRM_HELPER_PUBLIC_H */
|
||||
|
|
|
|||
|
|
@ -406,7 +406,7 @@ vl_dri2_screen_create(Display *display, int screen)
|
|||
goto free_authenticate;
|
||||
|
||||
if (pipe_loader_drm_probe_fd(&scrn->base.dev, fd))
|
||||
scrn->base.pscreen = pipe_loader_create_screen(scrn->base.dev, 0);
|
||||
scrn->base.pscreen = pipe_loader_create_screen(scrn->base.dev, NULL);
|
||||
|
||||
if (!scrn->base.pscreen)
|
||||
goto release_pipe;
|
||||
|
|
|
|||
|
|
@ -817,7 +817,7 @@ vl_dri3_screen_create(Display *display, int screen)
|
|||
free(geom_reply);
|
||||
|
||||
if (pipe_loader_drm_probe_fd(&scrn->base.dev, fd))
|
||||
scrn->base.pscreen = pipe_loader_create_screen(scrn->base.dev, 0);
|
||||
scrn->base.pscreen = pipe_loader_create_screen(scrn->base.dev, NULL);
|
||||
|
||||
if (!scrn->base.pscreen)
|
||||
goto release_pipe;
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ vl_drm_screen_create(int fd)
|
|||
goto free_screen;
|
||||
|
||||
if (pipe_loader_drm_probe_fd(&vscreen->dev, new_fd))
|
||||
vscreen->pscreen = pipe_loader_create_screen(vscreen->dev, 0);
|
||||
vscreen->pscreen = pipe_loader_create_screen(vscreen->dev, NULL);
|
||||
|
||||
if (!vscreen->pscreen)
|
||||
goto release_pipe;
|
||||
|
|
|
|||
|
|
@ -7,8 +7,10 @@ extern "C" {
|
|||
#endif
|
||||
|
||||
struct radeon_winsys;
|
||||
struct pipe_screen_config;
|
||||
|
||||
struct pipe_screen* r300_screen_create(struct radeon_winsys *rws, unsigned flags);
|
||||
struct pipe_screen* r300_screen_create(struct radeon_winsys *rws,
|
||||
const struct pipe_screen_config *config);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
|
|
|
|||
|
|
@ -726,7 +726,8 @@ static boolean r300_fence_finish(struct pipe_screen *screen,
|
|||
return rws->fence_wait(rws, fence, timeout);
|
||||
}
|
||||
|
||||
struct pipe_screen* r300_screen_create(struct radeon_winsys *rws, unsigned flags)
|
||||
struct pipe_screen* r300_screen_create(struct radeon_winsys *rws,
|
||||
const struct pipe_screen_config *config)
|
||||
{
|
||||
struct r300_screen *r300screen = CALLOC_STRUCT(r300_screen);
|
||||
|
||||
|
|
|
|||
|
|
@ -634,7 +634,8 @@ static struct pipe_resource *r600_resource_create(struct pipe_screen *screen,
|
|||
return r600_resource_create_common(screen, templ);
|
||||
}
|
||||
|
||||
struct pipe_screen *r600_screen_create(struct radeon_winsys *ws, unsigned flags)
|
||||
struct pipe_screen *r600_screen_create(struct radeon_winsys *ws,
|
||||
const struct pipe_screen_config *config)
|
||||
{
|
||||
struct r600_screen *rscreen = CALLOC_STRUCT(r600_screen);
|
||||
|
||||
|
|
@ -649,7 +650,7 @@ struct pipe_screen *r600_screen_create(struct radeon_winsys *ws, unsigned flags)
|
|||
rscreen->b.b.get_shader_param = r600_get_shader_param;
|
||||
rscreen->b.b.resource_create = r600_resource_create;
|
||||
|
||||
if (!r600_common_screen_init(&rscreen->b, ws, flags)) {
|
||||
if (!r600_common_screen_init(&rscreen->b, ws, config->flags)) {
|
||||
FREE(rscreen);
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,7 +24,9 @@
|
|||
#define R600_PUBLIC_H
|
||||
|
||||
struct radeon_winsys;
|
||||
struct pipe_screen_config;
|
||||
|
||||
struct pipe_screen *r600_screen_create(struct radeon_winsys *ws, unsigned flags);
|
||||
struct pipe_screen *r600_screen_create(struct radeon_winsys *ws,
|
||||
const struct pipe_screen_config *config);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -966,7 +966,7 @@ static void si_test_vmfault(struct si_screen *sscreen)
|
|||
}
|
||||
|
||||
struct pipe_screen *radeonsi_screen_create(struct radeon_winsys *ws,
|
||||
unsigned flags)
|
||||
const struct pipe_screen_config *config)
|
||||
{
|
||||
struct si_screen *sscreen = CALLOC_STRUCT(si_screen);
|
||||
unsigned num_threads, num_compiler_threads, num_compiler_threads_lowprio, i;
|
||||
|
|
@ -985,7 +985,7 @@ struct pipe_screen *radeonsi_screen_create(struct radeon_winsys *ws,
|
|||
|
||||
si_init_screen_state_functions(sscreen);
|
||||
|
||||
if (!r600_common_screen_init(&sscreen->b, ws, flags) ||
|
||||
if (!r600_common_screen_init(&sscreen->b, ws, config->flags) ||
|
||||
!si_init_gs_info(sscreen) ||
|
||||
!si_init_shader_cache(sscreen)) {
|
||||
FREE(sscreen);
|
||||
|
|
|
|||
|
|
@ -26,6 +26,6 @@
|
|||
struct radeon_winsys;
|
||||
|
||||
struct pipe_screen *radeonsi_screen_create(struct radeon_winsys *ws,
|
||||
unsigned flags);
|
||||
const struct pipe_screen_config *config);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -360,6 +360,14 @@ struct pipe_screen {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
* Global configuration options for screen creation.
|
||||
*/
|
||||
struct pipe_screen_config {
|
||||
unsigned flags;
|
||||
};
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
#include "pipe/p_compiler.h"
|
||||
|
||||
struct pipe_screen;
|
||||
struct pipe_screen_config;
|
||||
struct pipe_context;
|
||||
struct pipe_resource;
|
||||
|
||||
|
|
@ -104,7 +105,8 @@ struct drm_driver_descriptor
|
|||
* This function does any wrapping of the screen.
|
||||
* For example wrapping trace or rbug debugging drivers around it.
|
||||
*/
|
||||
struct pipe_screen* (*create_screen)(int drm_fd, unsigned flags);
|
||||
struct pipe_screen* (*create_screen)(int drm_fd,
|
||||
const struct pipe_screen_config *config);
|
||||
|
||||
/**
|
||||
* Return a configuration value.
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ namespace {
|
|||
|
||||
device::device(clover::platform &platform, pipe_loader_device *ldev) :
|
||||
platform(platform), ldev(ldev) {
|
||||
pipe = pipe_loader_create_screen(ldev, 0);
|
||||
pipe = pipe_loader_create_screen(ldev, NULL);
|
||||
if (!pipe || !pipe->get_param(pipe, PIPE_CAP_COMPUTE)) {
|
||||
if (pipe)
|
||||
pipe->destroy(pipe);
|
||||
|
|
|
|||
|
|
@ -2056,10 +2056,12 @@ dri2_init_screen(__DRIscreen * sPriv)
|
|||
|
||||
|
||||
if (pipe_loader_drm_probe_fd(&screen->dev, fd)) {
|
||||
unsigned flags =
|
||||
struct pipe_screen_config config = {};
|
||||
|
||||
config.flags =
|
||||
dri_init_options_get_screen_flags(screen, screen->dev->driver_name);
|
||||
|
||||
pscreen = pipe_loader_create_screen(screen->dev, flags);
|
||||
pscreen = pipe_loader_create_screen(screen->dev, &config);
|
||||
}
|
||||
|
||||
if (!pscreen)
|
||||
|
|
@ -2150,10 +2152,12 @@ dri_kms_init_screen(__DRIscreen * sPriv)
|
|||
if (screen->fd < 0 || (fd = fcntl(screen->fd, F_DUPFD_CLOEXEC, 3)) < 0)
|
||||
goto free_screen;
|
||||
|
||||
unsigned flags = dri_init_options_get_screen_flags(screen, "swrast");
|
||||
struct pipe_screen_config config = {};
|
||||
|
||||
config.flags = dri_init_options_get_screen_flags(screen, "swrast");
|
||||
|
||||
if (pipe_loader_sw_probe_kms(&screen->dev, fd))
|
||||
pscreen = pipe_loader_create_screen(screen->dev, flags);
|
||||
pscreen = pipe_loader_create_screen(screen->dev, &config);
|
||||
|
||||
if (!pscreen)
|
||||
goto release_pipe;
|
||||
|
|
|
|||
|
|
@ -400,10 +400,12 @@ drisw_init_screen(__DRIscreen * sPriv)
|
|||
sPriv->driverPrivate = (void *)screen;
|
||||
sPriv->extensions = drisw_screen_extensions;
|
||||
|
||||
unsigned flags = dri_init_options_get_screen_flags(screen, "swrast");
|
||||
struct pipe_screen_config config;
|
||||
|
||||
config.flags = dri_init_options_get_screen_flags(screen, "swrast");
|
||||
|
||||
if (pipe_loader_sw_probe_dri(&screen->dev, &drisw_lf))
|
||||
pscreen = pipe_loader_create_screen(screen->dev, flags);
|
||||
pscreen = pipe_loader_create_screen(screen->dev, &config);
|
||||
|
||||
if (!pscreen)
|
||||
goto fail;
|
||||
|
|
|
|||
|
|
@ -162,7 +162,7 @@ xa_tracker_create(int drm_fd)
|
|||
goto out_no_fd;
|
||||
|
||||
if (pipe_loader_drm_probe_fd(&xa->dev, fd))
|
||||
xa->screen = pipe_loader_create_screen(xa->dev, 0);
|
||||
xa->screen = pipe_loader_create_screen(xa->dev, NULL);
|
||||
|
||||
if (!xa->screen)
|
||||
goto out_no_screen;
|
||||
|
|
|
|||
|
|
@ -229,7 +229,7 @@ drm_create_adapter( int fd,
|
|||
return D3DERR_DRIVERINTERNALERROR;
|
||||
}
|
||||
|
||||
ctx->base.hal = pipe_loader_create_screen(ctx->dev, 0);
|
||||
ctx->base.hal = pipe_loader_create_screen(ctx->dev, NULL);
|
||||
if (!ctx->base.hal) {
|
||||
ERR("Unable to load requested driver.\n");
|
||||
drm_destroy(&ctx->base);
|
||||
|
|
@ -312,7 +312,7 @@ drm_create_adapter( int fd,
|
|||
|
||||
/* 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 = pipe_loader_create_screen(ctx->swdev, 0);
|
||||
ctx->base.ref = pipe_loader_create_screen(ctx->swdev, NULL);
|
||||
|
||||
if (!ctx->base.ref) {
|
||||
ERR("Couldn't wrap drm screen to swrast screen. Software devices "
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
#include "i915/i915_public.h"
|
||||
|
||||
static struct pipe_screen *
|
||||
create_screen(int fd, unsigned flags)
|
||||
create_screen(int fd, const struct pipe_screen_config *config)
|
||||
{
|
||||
struct i915_winsys *iws;
|
||||
struct pipe_screen *screen;
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
#include "freedreno/drm/freedreno_drm_public.h"
|
||||
|
||||
static struct pipe_screen *
|
||||
create_screen(int fd, unsigned flags)
|
||||
create_screen(int fd, const struct pipe_screen_config *config)
|
||||
{
|
||||
struct pipe_screen *screen;
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
#include "nouveau/drm/nouveau_drm_public.h"
|
||||
|
||||
static struct pipe_screen *
|
||||
create_screen(int fd, unsigned flags)
|
||||
create_screen(int fd, const struct pipe_screen_config *config)
|
||||
{
|
||||
struct pipe_screen *screen;
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
#include "r300/r300_public.h"
|
||||
|
||||
static struct pipe_screen *
|
||||
create_screen(int fd, unsigned flags)
|
||||
create_screen(int fd, const struct pipe_screen_config *config)
|
||||
{
|
||||
struct radeon_winsys *sws;
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
#include "r600/r600_public.h"
|
||||
|
||||
static struct pipe_screen *
|
||||
create_screen(int fd, unsigned flags)
|
||||
create_screen(int fd, const struct pipe_screen_config *config)
|
||||
{
|
||||
struct radeon_winsys *rw;
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
#include "radeonsi/si_public.h"
|
||||
|
||||
static struct pipe_screen *
|
||||
create_screen(int fd, unsigned flags)
|
||||
create_screen(int fd, const struct pipe_screen_config *config)
|
||||
{
|
||||
struct radeon_winsys *rw;
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
#include "svga/svga_public.h"
|
||||
|
||||
static struct pipe_screen *
|
||||
create_screen(int fd, unsigned flags)
|
||||
create_screen(int fd, const struct pipe_screen_config *config)
|
||||
{
|
||||
struct svga_winsys_screen *sws;
|
||||
struct pipe_screen *screen;
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@ static void init_ctx(struct context *ctx)
|
|||
ret = pipe_loader_probe(&ctx->dev, 1);
|
||||
assert(ret);
|
||||
|
||||
ctx->screen = pipe_loader_create_screen(ctx->dev, 0);
|
||||
ctx->screen = pipe_loader_create_screen(ctx->dev, NULL);
|
||||
assert(ctx->screen);
|
||||
|
||||
ctx->pipe = ctx->screen->context_create(ctx->screen, NULL, 0);
|
||||
|
|
|
|||
|
|
@ -96,7 +96,7 @@ static void init_prog(struct program *p)
|
|||
assert(ret);
|
||||
|
||||
/* init a pipe screen */
|
||||
p->screen = pipe_loader_create_screen(p->dev, 0);
|
||||
p->screen = pipe_loader_create_screen(p->dev, NULL);
|
||||
assert(p->screen);
|
||||
|
||||
/* create the pipe driver context and cso context */
|
||||
|
|
|
|||
|
|
@ -91,7 +91,7 @@ static void init_prog(struct program *p)
|
|||
assert(ret);
|
||||
|
||||
/* init a pipe screen */
|
||||
p->screen = pipe_loader_create_screen(p->dev, 0);
|
||||
p->screen = pipe_loader_create_screen(p->dev, NULL);
|
||||
assert(p->screen);
|
||||
|
||||
/* create the pipe driver context and cso context */
|
||||
|
|
|
|||
|
|
@ -31,12 +31,13 @@
|
|||
|
||||
struct radeon_winsys;
|
||||
struct pipe_screen;
|
||||
struct pipe_screen_config;
|
||||
|
||||
typedef struct pipe_screen *(*radeon_screen_create_t)(struct radeon_winsys *,
|
||||
unsigned);
|
||||
const struct pipe_screen_config *config);
|
||||
|
||||
struct radeon_winsys *
|
||||
amdgpu_winsys_create(int fd, unsigned flags,
|
||||
amdgpu_winsys_create(int fd, const struct pipe_screen_config *config,
|
||||
radeon_screen_create_t screen_create);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -231,7 +231,7 @@ static const char* amdgpu_get_chip_name(struct radeon_winsys *ws)
|
|||
|
||||
|
||||
PUBLIC struct radeon_winsys *
|
||||
amdgpu_winsys_create(int fd, unsigned flags,
|
||||
amdgpu_winsys_create(int fd, const struct pipe_screen_config *config,
|
||||
radeon_screen_create_t screen_create)
|
||||
{
|
||||
struct amdgpu_winsys *ws;
|
||||
|
|
@ -328,7 +328,7 @@ amdgpu_winsys_create(int fd, unsigned flags,
|
|||
*
|
||||
* Alternatively, we could create the screen based on "ws->gen"
|
||||
* and link all drivers into one binary blob. */
|
||||
ws->base.screen = screen_create(&ws->base, flags);
|
||||
ws->base.screen = screen_create(&ws->base, config);
|
||||
if (!ws->base.screen) {
|
||||
amdgpu_winsys_destroy(&ws->base);
|
||||
mtx_unlock(&dev_tab_mutex);
|
||||
|
|
|
|||
|
|
@ -5,12 +5,13 @@
|
|||
|
||||
struct radeon_winsys;
|
||||
struct pipe_screen;
|
||||
struct pipe_screen_config;
|
||||
|
||||
typedef struct pipe_screen *(*radeon_screen_create_t)(struct radeon_winsys *,
|
||||
unsigned);
|
||||
const struct pipe_screen_config *);
|
||||
|
||||
struct radeon_winsys *
|
||||
radeon_drm_winsys_create(int fd, unsigned flags,
|
||||
radeon_drm_winsys_create(int fd, const struct pipe_screen_config *config,
|
||||
radeon_screen_create_t screen_create);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -736,7 +736,7 @@ static int handle_compare(void *key1, void *key2)
|
|||
}
|
||||
|
||||
PUBLIC struct radeon_winsys *
|
||||
radeon_drm_winsys_create(int fd, unsigned flags,
|
||||
radeon_drm_winsys_create(int fd, const struct pipe_screen_config *config,
|
||||
radeon_screen_create_t screen_create)
|
||||
{
|
||||
struct radeon_drm_winsys *ws;
|
||||
|
|
@ -832,7 +832,7 @@ radeon_drm_winsys_create(int fd, unsigned flags,
|
|||
*
|
||||
* Alternatively, we could create the screen based on "ws->gen"
|
||||
* and link all drivers into one binary blob. */
|
||||
ws->base.screen = screen_create(&ws->base, flags);
|
||||
ws->base.screen = screen_create(&ws->base, config);
|
||||
if (!ws->base.screen) {
|
||||
radeon_winsys_destroy(&ws->base);
|
||||
mtx_unlock(&fd_tab_mutex);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue