1f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
2f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#ifndef INTEL_DRM_WINSYS_H
3f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define INTEL_DRM_WINSYS_H
4f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
5f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "i915/i915_batchbuffer.h"
6f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
7f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "drm.h"
8f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "intel_bufmgr.h"
9f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
10f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
11f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/*
12f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Winsys
13f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */
14f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
15f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
16f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct i915_drm_winsys
17f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{
18f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   struct i915_winsys base;
19f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
20f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   boolean dump_cmd;
21f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   const char *dump_raw_file;
22f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   boolean send_cmd;
23f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
24f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   int fd; /**< Drm file discriptor */
25f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
26f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   size_t max_batch_size;
27f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
28f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   drm_intel_bufmgr *gem_manager;
29f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org};
30f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
31f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic INLINE struct i915_drm_winsys *
32f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgi915_drm_winsys(struct i915_winsys *iws)
33f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{
34f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   return (struct i915_drm_winsys *)iws;
35f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}
36f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
37f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct pipe_fence_handle * i915_drm_fence_create(drm_intel_bo *bo);
38f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
39f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid i915_drm_winsys_init_batchbuffer_functions(struct i915_drm_winsys *idws);
40f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid i915_drm_winsys_init_buffer_functions(struct i915_drm_winsys *idws);
41f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid i915_drm_winsys_init_fence_functions(struct i915_drm_winsys *idws);
42f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
43f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
44f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/*
45f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Buffer
46f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */
47f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
48f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
49f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct i915_drm_buffer {
50f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   unsigned magic;
51f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
52f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   drm_intel_bo *bo;
53f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
54f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   void *ptr;
55f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   unsigned map_count;
56f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
57f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   boolean flinked;
58f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   unsigned flink;
59f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org};
60f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
61f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic INLINE struct i915_drm_buffer *
62f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgi915_drm_buffer(struct i915_winsys_buffer *buffer)
63f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{
64f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   return (struct i915_drm_buffer *)buffer;
65f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}
66f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
67f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic INLINE drm_intel_bo *
68f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgintel_bo(struct i915_winsys_buffer *buffer)
69f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{
70f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   return i915_drm_buffer(buffer)->bo;
71f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}
72f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
73f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
74