summaryrefslogtreecommitdiff
path: root/src/gallium/winsys/drm/radeon/radeon_r300.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/winsys/drm/radeon/radeon_r300.c')
-rw-r--r--src/gallium/winsys/drm/radeon/radeon_r300.c8
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;
}