gallium: add pipe_screen_config to screen_create functions
authorNicolai Hähnle <nicolai.haehnle@amd.com>
Wed, 28 Jun 2017 12:47:32 +0000 (14:47 +0200)
committerNicolai Hähnle <nicolai.haehnle@amd.com>
Wed, 2 Aug 2017 07:50:57 +0000 (09:50 +0200)
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>
37 files changed:
src/gallium/auxiliary/pipe-loader/pipe_loader.c
src/gallium/auxiliary/pipe-loader/pipe_loader.h
src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c
src/gallium/auxiliary/pipe-loader/pipe_loader_priv.h
src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c
src/gallium/auxiliary/target-helpers/drm_helper.h
src/gallium/auxiliary/target-helpers/drm_helper_public.h
src/gallium/auxiliary/vl/vl_winsys_dri.c
src/gallium/auxiliary/vl/vl_winsys_dri3.c
src/gallium/auxiliary/vl/vl_winsys_drm.c
src/gallium/drivers/r300/r300_public.h
src/gallium/drivers/r300/r300_screen.c
src/gallium/drivers/r600/r600_pipe.c
src/gallium/drivers/r600/r600_public.h
src/gallium/drivers/radeonsi/si_pipe.c
src/gallium/drivers/radeonsi/si_public.h
src/gallium/include/pipe/p_screen.h
src/gallium/include/state_tracker/drm_driver.h
src/gallium/state_trackers/clover/core/device.cpp
src/gallium/state_trackers/dri/dri2.c
src/gallium/state_trackers/dri/drisw.c
src/gallium/state_trackers/xa/xa_tracker.c
src/gallium/targets/d3dadapter9/drm.c
src/gallium/targets/pipe-loader/pipe_i915.c
src/gallium/targets/pipe-loader/pipe_msm.c
src/gallium/targets/pipe-loader/pipe_nouveau.c
src/gallium/targets/pipe-loader/pipe_r300.c
src/gallium/targets/pipe-loader/pipe_r600.c
src/gallium/targets/pipe-loader/pipe_radeonsi.c
src/gallium/targets/pipe-loader/pipe_vmwgfx.c
src/gallium/tests/trivial/compute.c
src/gallium/tests/trivial/quad-tex.c
src/gallium/tests/trivial/tri.c
src/gallium/winsys/amdgpu/drm/amdgpu_public.h
src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c
src/gallium/winsys/radeon/drm/radeon_drm_public.h
src/gallium/winsys/radeon/drm/radeon_drm_winsys.c

index 0857a2cbb7e57475a88b94c9f5c4629449af2180..cd93648fdc39020283975b5c4af107b219ad375e 100644 (file)
@@ -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 *
index 73b75586cfaa7794396a6d485f73b7bcee10ba70..969feace7f19516c78625bb44074f0841822a50c 100644 (file)
@@ -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.
index ef446b6e4f94c48a333b65f46ddd7099c01ddbf5..385d814522380df2153db9b3836fb2b332b0b9d2 100644 (file)
@@ -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 = {
index 58ab992a90664213b304a1f721aa6fd4ad7eb98c..7708455d949e8cfcb8d0464ba9f3287507428f73 100644 (file)
@@ -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);
index 46c6604f74e688be77b6b23659bbedf2bb86c36c..3c8e0c2d523709080114f148a9aeabb75ba19320 100644 (file)
@@ -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;
index 0027ede23a1b2c9768eaaaadef938afd84f6b0e5..2a2f57d20db875d83497c68d8f1f85323b8296d2 100644 (file)
@@ -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;
index d4adc880df016807741766eb99f896fca5de9d3a..5746e08554b58c8a4b28d6982c837a178dd7e92c 100644 (file)
@@ -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 */
index 043483b7fea2f5481184ebc8b13483b057e22a3e..7a0fc3c3bf29241d5830431f61359026d04a6254 100644 (file)
@@ -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;
index 68bac44d95b0578d1303683e542d83cbb3ec4c33..fbb729ae1764b1c1bf0652507afa792a7aa6768b 100644 (file)
@@ -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;
index ebde5b8cb6359b9f17bf1e095cb55cb647a90708..07ce380ef559afe236491bbda43072a4cc7b5f03 100644 (file)
@@ -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;
index d2300103aaa9fb76d71d348256cc91739b3b5109..bf54cc4dfc05a942a5242ebc2afa81e312287a01 100644 (file)
@@ -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"
index c78c484b82cb8022418f17c1589cea4c80310758..7d82608e70e4a48fb82cdda17de0a32d639656d1 100644 (file)
@@ -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);
 
index 0f30d0985c1193045a63416c5390c898d14a4570..e7e299985139c8e87d8cebe93747750552f28341 100644 (file)
@@ -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;
        }
index 2018440070da93699454a81c7b37eaaa9cabb2ea..937b8f7cc442c368a9d7f1775df39f8f2953c553 100644 (file)
@@ -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
index 67bc7bf4aecf7cd0f6a11d390639daa26dcd944e..d276b885c112591d91d508f2b63a6e670725924f 100644 (file)
@@ -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);
index 13b1731bc3c4d41405f50efae811a655e96bb97d..d5027175e23bbeb22d97e7d590d010c7e7b5592c 100644 (file)
@@ -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
index 65e954aa87e7fbcf266be7c96a4532a207485e9a..a804aa93a8b9b1288ee8869e61adbc181a0a370b 100644 (file)
@@ -360,6 +360,14 @@ struct pipe_screen {
 };
 
 
+/**
+ * Global configuration options for screen creation.
+ */
+struct pipe_screen_config {
+   unsigned flags;
+};
+
+
 #ifdef __cplusplus
 }
 #endif
index 1ac0528448bbd73836cc5edee49e7034aabe7372..f188b5a7d4ce82a876090f921b87c1bfd12d55fe 100644 (file)
@@ -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.
index 2ad9e49cf8dd47f742fe2a8c5833ff4b216d8f6f..bd07670f3843e9997b92d612358965e1ef75f3a3 100644 (file)
@@ -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);
index e4e2a534fd17ad62ce907a6d4fd765a24327facf..ab85cc2452e02a17b49bd15fd30307090fa0afed 100644 (file)
@@ -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;
index ac4095618c0b9025435eb2dab757e5466fef20f2..10d1c8d1e4de74b65e9c0b271fa3de560d532075 100644 (file)
@@ -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;
index e5addcf8fef16436b12e03577e23ad7edefa260a..d4114ab5591447578f1460a385b6fb814dbecf7e 100644 (file)
@@ -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;
index c0ed97a6fb5aa023471f3fe53915cfb845675633..e6e71448a282a719332dba007746f5a41c42d206 100644 (file)
@@ -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 "
index 43061b06d668e80df86e5be65923f1eb4bdfe453..8524a1dc58f9b9de4f9595a07e5176f7b348de94 100644 (file)
@@ -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;
index 180e0f9351155e5009b98fb8b59b514e385be979..886fbdfc7e3e5dfc13e78517f33ecb809c378a52 100644 (file)
@@ -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;
 
index de61f44ce2ccdb10671a8d179bb0b1ebd191b757..d95aeda529be0fc5dca77ae6761a5f00669fc77f 100644 (file)
@@ -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;
 
index da72859f0193aaf99a80c2587404f64ba2cbab2c..0dcc0191dfb806c5263126e322ff33cfe34398df 100644 (file)
@@ -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;
 
index dfe130a2fc2a4426ab78c623d1c7207a236c79e9..0eedde76bef4418f8cbb948b1219105a4c35410f 100644 (file)
@@ -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;
 
index 1bbd97ff802a9ab2c42d18cd2d8ceea349163d85..598baf58da34a634a7919072d83d96a12b8c4775 100644 (file)
@@ -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;
 
index 632083188809e765a48011f7dc1c7b1ab9d76cb5..68bf92ce82e55b4bdd729a0d3fad5315685bbe92 100644 (file)
@@ -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;
index a2e882cc81d33c6c7aed154e0960742c36ba4d39..49fefd84b4bac41d7df007701c6dcf83967b8820 100644 (file)
@@ -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);
index 113cb9230bbc485f8ec4ee9976df0563078eab70..f6232d5dc3af50a7d7fec35afc2ee6d03bf7386d 100644 (file)
@@ -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 */
index df02e96d85f2531224f59a677d0c86881a429f8f..b45a408d4252e544b127b893970ed2d579c21cac 100644 (file)
@@ -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 */
index 3cb5a1bf42939407fc74a8e2167e6c5dc89b3c8d..8702e4f6e8a2101c07119c87e1cc9690ba5fb23a 100644 (file)
 
 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
index 837c1e2aae01de23ffba43111bccccf3629783c2..26c7dacb9df4daa7c2e75e5304129912aa6b5b87 100644 (file)
@@ -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);
index 2192aa68ef61fb34aa5c11174269d30f67be560c..6a772f3a62160d2c9e80e6e9451e1fab31b089f0 100644 (file)
@@ -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
index ad1db3c388cc1758b301d3aa57cdbe075791f2ff..542e5494bebc6890aadacc46f2422915446455d3 100644 (file)
@@ -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);