1f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#ifndef __NV30_SCREEN_H__
2f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define __NV30_SCREEN_H__
3f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
4f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include <stdio.h>
5f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
6f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define NOUVEAU_ERR(fmt, args...) \
7f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   fprintf(stderr, "%s:%d -  "fmt, __FUNCTION__, __LINE__, ##args);
8f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
9f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "util/u_double_list.h"
10f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
11f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "nouveau/nouveau_screen.h"
12f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "nouveau/nouveau_fence.h"
13f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "nouveau/nouveau_heap.h"
14f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "nv30_winsys.h"
15f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "nv30_resource.h"
16f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
17f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct nv30_context;
18f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
19f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct nv30_screen {
20f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   struct nouveau_screen base;
21f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
22f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   struct nv30_context *cur_ctx;
23f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
24f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   struct nouveau_bo *notify;
25f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
26f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   struct nouveau_object *ntfy;
27f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   struct nouveau_object *fence;
28f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
29f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   struct nouveau_object *query;
30f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   struct nouveau_heap *query_heap;
31f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   struct list_head queries;
32f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
33f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   struct nouveau_object *null;
34f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   struct nouveau_object *eng3d;
35f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   struct nouveau_object *m2mf;
36f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   struct nouveau_object *surf2d;
37f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   struct nouveau_object *swzsurf;
38f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   struct nouveau_object *sifm;
39f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
40f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /*XXX: nvfx state */
41f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   struct nouveau_heap *vp_exec_heap;
42f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   struct nouveau_heap *vp_data_heap;
43f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org};
44f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
45f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic INLINE struct nv30_screen *
46f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnv30_screen(struct pipe_screen *pscreen)
47f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{
48f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   return (struct nv30_screen *)pscreen;
49f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}
50f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
51f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
52