nouveau_drm_winsys.c revision a2fc42b899de22273c1df96091bfb5c636075cb0
1#include "pipe/p_context.h" 2#include "pipe/p_state.h" 3#include "util/u_format.h" 4#include "util/u_memory.h" 5#include "util/u_inlines.h" 6 7#include "nouveau_drm_public.h" 8 9#include "nouveau/nouveau_winsys.h" 10#include "nouveau/nouveau_screen.h" 11 12struct pipe_screen * 13nouveau_drm_screen_create(int fd) 14{ 15 struct nouveau_device *dev = NULL; 16 struct pipe_screen *(*init)(struct nouveau_device *); 17 int ret; 18 19 ret = nouveau_device_wrap(fd, 0, &dev); 20 if (ret) 21 return NULL; 22 23 switch (dev->chipset & 0xf0) { 24 case 0x30: 25 case 0x40: 26 case 0x60: 27 init = nv30_screen_create; 28 break; 29 case 0x50: 30 case 0x80: 31 case 0x90: 32 case 0xa0: 33 init = nv50_screen_create; 34 break; 35 case 0xc0: 36 case 0xd0: 37 init = nvc0_screen_create; 38 break; 39 default: 40 debug_printf("%s: unknown chipset nv%02x\n", __func__, 41 dev->chipset); 42 return NULL; 43 } 44 45 return init(dev); 46} 47