diff options
author | Christian König <[email protected]> | 2013-09-25 13:59:56 +0200 |
---|---|---|
committer | Christian König <[email protected]> | 2013-09-25 19:41:31 +0200 |
commit | 4871128e58402385dc6f920884273c003a1124e1 (patch) | |
tree | 90abea06f7ff8f5b8a0b519de6f1d8e53dfea023 /src/gallium/targets/r600 | |
parent | f6e2aa0e12e4ce91dc6f8ac5140d6e1f511ea468 (diff) |
radeon/winsys: keep screen pointer in winsys v2
Only create one screen for each winsys instance.
This helps with buffer sharing and interop handling.
v2: rebased and some minor cleanup
Signed-off-by: Christian König <[email protected]>
Reviewed-by: Marek Olšák <[email protected]>
Diffstat (limited to 'src/gallium/targets/r600')
-rw-r--r-- | src/gallium/targets/r600/drm_target.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/gallium/targets/r600/drm_target.c b/src/gallium/targets/r600/drm_target.c index c93c4dbe529..28004ac58e2 100644 --- a/src/gallium/targets/r600/drm_target.c +++ b/src/gallium/targets/r600/drm_target.c @@ -28,24 +28,26 @@ #include "state_tracker/drm_driver.h" #include "target-helpers/inline_debug_helper.h" #include "radeon/drm/radeon_drm_public.h" +#include "radeon/drm/radeon_winsys.h" #include "r600/r600_public.h" static struct pipe_screen *create_screen(int fd) { struct radeon_winsys *radeon; - struct pipe_screen *screen; radeon = radeon_drm_winsys_create(fd); if (!radeon) return NULL; - screen = r600_screen_create(radeon); - if (!screen) - return NULL; + if (!radeon->screen) { + radeon->screen = r600_screen_create(radeon); + if (!radeon->screen) + return NULL; - screen = debug_screen_wrap(screen); + radeon->screen = debug_screen_wrap(radeon->screen); + } - return screen; + return radeon->screen; } static const struct drm_conf_ret throttle_ret = { |