st/dri: Refactor init code a bit
Reviewed-by: George Sapountzis <gsapountzis@gmail.com>
This commit is contained in:
@@ -327,10 +327,10 @@ dri_destroy_screen(__DRIscreen * sPriv)
|
||||
|
||||
const __DRIconfig **
|
||||
dri_init_screen_helper(struct dri_screen *screen,
|
||||
struct drm_create_screen_arg *arg,
|
||||
struct pipe_screen *pscreen,
|
||||
unsigned pixel_bits)
|
||||
{
|
||||
screen->pipe_screen = screen->api->create_screen(screen->api, screen->fd, arg);
|
||||
screen->pipe_screen = pscreen;
|
||||
if (!screen->pipe_screen) {
|
||||
debug_printf("%s: failed to create pipe_screen\n", __FUNCTION__);
|
||||
return NULL;
|
||||
|
||||
@@ -104,7 +104,7 @@ dri_fill_st_visual(struct st_visual *stvis, struct dri_screen *screen,
|
||||
|
||||
const __DRIconfig **
|
||||
dri_init_screen_helper(struct dri_screen *screen,
|
||||
struct drm_create_screen_arg *arg,
|
||||
struct pipe_screen *pscreen,
|
||||
unsigned pixel_bits);
|
||||
|
||||
void
|
||||
|
||||
@@ -469,6 +469,7 @@ const __DRIconfig **
|
||||
dri1_init_screen(__DRIscreen * sPriv)
|
||||
{
|
||||
const __DRIconfig **configs;
|
||||
struct pipe_screen *pscreen;
|
||||
struct dri_screen *screen;
|
||||
struct dri1_create_screen_arg arg;
|
||||
|
||||
@@ -500,7 +501,10 @@ dri1_init_screen(__DRIscreen * sPriv)
|
||||
* using.
|
||||
*/
|
||||
|
||||
configs = dri_init_screen_helper(screen, &arg.base, sPriv->fbBPP);
|
||||
pscreen = screen->api->create_screen(screen->api, screen->fd, &arg.base);
|
||||
/* dri_init_screen_helper checks pscreen for us */
|
||||
|
||||
configs = dri_init_screen_helper(screen, pscreen, sPriv->fbBPP);
|
||||
if (!configs)
|
||||
goto fail;
|
||||
|
||||
|
||||
@@ -499,7 +499,7 @@ dri2_init_screen(__DRIscreen * sPriv)
|
||||
{
|
||||
const __DRIconfig **configs;
|
||||
struct dri_screen *screen;
|
||||
struct drm_create_screen_arg arg;
|
||||
struct pipe_screen *pscreen;
|
||||
|
||||
screen = CALLOC_STRUCT(dri_screen);
|
||||
if (!screen)
|
||||
@@ -512,9 +512,10 @@ dri2_init_screen(__DRIscreen * sPriv)
|
||||
sPriv->private = (void *)screen;
|
||||
sPriv->extensions = dri_screen_extensions;
|
||||
|
||||
arg.mode = DRM_CREATE_NORMAL;
|
||||
pscreen = screen->api->create_screen(screen->api, screen->fd, NULL);
|
||||
/* dri_init_screen_helper checks pscreen for us */
|
||||
|
||||
configs = dri_init_screen_helper(screen, &arg, 32);
|
||||
configs = dri_init_screen_helper(screen, pscreen, 32);
|
||||
if (!configs)
|
||||
goto fail;
|
||||
|
||||
|
||||
@@ -261,13 +261,14 @@ drisw_init_screen(__DRIscreen * sPriv)
|
||||
{
|
||||
const __DRIconfig **configs;
|
||||
struct dri_screen *screen;
|
||||
struct pipe_screen *pscreen;
|
||||
struct drisw_create_screen_arg arg;
|
||||
|
||||
screen = CALLOC_STRUCT(dri_screen);
|
||||
if (!screen)
|
||||
return NULL;
|
||||
|
||||
screen->api = drm_api_create();
|
||||
screen->api = NULL; /* not needed */
|
||||
screen->sPriv = sPriv;
|
||||
screen->fd = -1;
|
||||
|
||||
@@ -277,7 +278,10 @@ drisw_init_screen(__DRIscreen * sPriv)
|
||||
arg.base.mode = DRM_CREATE_DRISW;
|
||||
arg.lf = &drisw_lf;
|
||||
|
||||
configs = dri_init_screen_helper(screen, &arg.base, 32);
|
||||
pscreen = screen->api->create_screen(screen->api, screen->fd, &arg.base);
|
||||
/* dri_init_screen_helper checks pscreen for us */
|
||||
|
||||
configs = dri_init_screen_helper(screen, pscreen, 32);
|
||||
if (!configs)
|
||||
goto fail;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user