diff options
Diffstat (limited to 'src/gallium/winsys/drm/radeon/radeon_r300.c')
-rw-r--r-- | src/gallium/winsys/drm/radeon/radeon_r300.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/gallium/winsys/drm/radeon/radeon_r300.c b/src/gallium/winsys/drm/radeon/radeon_r300.c index 8fe2375e34..e9b96b1ee9 100644 --- a/src/gallium/winsys/drm/radeon/radeon_r300.c +++ b/src/gallium/winsys/drm/radeon/radeon_r300.c @@ -75,14 +75,16 @@ static void do_ioctls(struct r300_winsys* winsys, int fd) } -struct r300_winsys* radeon_create_r300_winsys(int fd) +struct r300_winsys* radeon_create_r300_winsys(int fd, struct pipe_winsys* old_winsys) { - struct r300_winsys* winsys = calloc(1, sizeof(struct r300_winsys)); + struct r300_winsys* winsys = CALLOC_STRUCT(r300_winsys); do_ioctls(winsys, fd); + struct radeon_bo_manager* bom = radeon_bo_manager_gem_ctor(fd); struct radeon_cs_manager* csm = radeon_cs_manager_gem_ctor(fd); + winsys->radeon_winsys = bom; winsys->cs = radeon_cs_create(csm, 1024 * 64 / 4); winsys->check_cs = radeon_r300_check_cs; @@ -92,5 +94,7 @@ struct r300_winsys* radeon_create_r300_winsys(int fd) winsys->end_cs = radeon_cs_end; winsys->flush_cs = radeon_r300_flush_cs; + winsys->base = *old_winsys; + return winsys; } |