nouveau_winsys.h revision 04cef8a03799aa88ebfa1c391e29f8d2ea020d95
1#ifndef NOUVEAU_WINSYS_H 2#define NOUVEAU_WINSYS_H 3 4#include <stdint.h> 5#include "pipe/internal/p_winsys_screen.h" 6#include "pipe/p_defines.h" 7 8#include "nouveau/nouveau_bo.h" 9#include "nouveau/nouveau_channel.h" 10#include "nouveau/nouveau_class.h" 11#include "nouveau/nouveau_device.h" 12#include "nouveau/nouveau_grobj.h" 13#include "nouveau/nouveau_notifier.h" 14#include "nouveau/nouveau_resource.h" 15#include "nouveau/nouveau_pushbuf.h" 16 17#define NOUVEAU_CAP_HW_VTXBUF (0xbeef0000) 18#define NOUVEAU_CAP_HW_IDXBUF (0xbeef0001) 19 20#define NOUVEAU_TEXTURE_USAGE_LINEAR (1 << 16) 21 22#define NOUVEAU_BUFFER_USAGE_TEXTURE (1 << 16) 23#define NOUVEAU_BUFFER_USAGE_ZETA (1 << 17) 24#define NOUVEAU_BUFFER_USAGE_TRANSFER (1 << 18) 25 26struct nouveau_winsys { 27 struct pipe_winsys *ws; 28 29 struct nouveau_channel *channel; 30 31 int (*res_init)(struct nouveau_resource **heap, unsigned start, 32 unsigned size); 33 int (*res_alloc)(struct nouveau_resource *heap, int size, void *priv, 34 struct nouveau_resource **); 35 void (*res_free)(struct nouveau_resource **); 36 37 int (*grobj_alloc)(struct nouveau_winsys *, int grclass, 38 struct nouveau_grobj **); 39 void (*grobj_free)(struct nouveau_grobj **); 40 41 int (*notifier_alloc)(struct nouveau_winsys *, int count, 42 struct nouveau_notifier **); 43 void (*notifier_free)(struct nouveau_notifier **); 44 void (*notifier_reset)(struct nouveau_notifier *, int id); 45 uint32_t (*notifier_status)(struct nouveau_notifier *, int id); 46 uint32_t (*notifier_retval)(struct nouveau_notifier *, int id); 47 int (*notifier_wait)(struct nouveau_notifier *, int id, 48 int status, double timeout); 49 50 int (*surface_copy)(struct nouveau_winsys *, struct pipe_surface *, 51 unsigned, unsigned, struct pipe_surface *, 52 unsigned, unsigned, unsigned, unsigned); 53 int (*surface_fill)(struct nouveau_winsys *, struct pipe_surface *, 54 unsigned, unsigned, unsigned, unsigned, unsigned); 55 56 struct nouveau_bo *(*get_bo)(struct pipe_buffer *); 57}; 58 59extern struct pipe_screen * 60nv04_screen_create(struct pipe_winsys *ws, struct nouveau_winsys *); 61 62extern struct pipe_context * 63nv04_create(struct pipe_screen *, unsigned pctx_id); 64 65extern struct pipe_screen * 66nv10_screen_create(struct pipe_winsys *ws, struct nouveau_winsys *); 67 68extern struct pipe_context * 69nv10_create(struct pipe_screen *, unsigned pctx_id); 70 71extern struct pipe_screen * 72nv20_screen_create(struct pipe_winsys *ws, struct nouveau_winsys *); 73 74extern struct pipe_context * 75nv20_create(struct pipe_screen *, unsigned pctx_id); 76 77extern struct pipe_screen * 78nv30_screen_create(struct pipe_winsys *ws, struct nouveau_winsys *); 79 80extern struct pipe_context * 81nv30_create(struct pipe_screen *, unsigned pctx_id); 82 83extern struct pipe_screen * 84nv40_screen_create(struct pipe_winsys *ws, struct nouveau_winsys *); 85 86extern struct pipe_context * 87nv40_create(struct pipe_screen *, unsigned pctx_id); 88 89extern struct pipe_screen * 90nv50_screen_create(struct pipe_winsys *ws, struct nouveau_winsys *); 91 92extern struct pipe_context * 93nv50_create(struct pipe_screen *, unsigned pctx_id); 94 95#endif 96