0,0 → 1,106 |
|
typedef struct tag_object kobj_t; |
typedef struct tag_display display_t; |
|
|
struct tag_object |
{ |
uint32_t magic; |
void *destroy; |
kobj_t *fd; |
kobj_t *bk; |
uint32_t pid; |
}; |
|
typedef struct |
{ |
kobj_t header; |
|
u32 handle; |
char *uaddr; |
|
u32 pitch; |
u32 gaddr; |
|
u32 width; |
u32 height; |
u32 max_width; |
u32 max_height; |
u32 page_count; |
u32 max_count; |
|
u32 format; |
// struct drm_i915_gem_object *obj; |
}bitmap_t; |
|
|
struct io_call_10 /* SRV_CREATE_SURFACE */ |
{ |
u32 handle; // ignored |
void *data; // ignored |
|
u32 width; |
u32 height; |
u32 pitch; // ignored |
|
u32 max_width; |
u32 max_height; |
u32 format; // reserved mbz |
}; |
|
struct io_call_12 /* SRV_LOCK_SURFACE */ |
{ |
u32 handle; |
void *data; |
u32 pitch; |
}; |
|
struct io_call_14 /* SRV_RESIZE_SURFACE */ |
{ |
u32 handle; |
void *data; |
u32 new_width; |
u32 new_height; |
u32 pitch; |
}; |
|
typedef struct |
{ |
uint32_t idx; |
union |
{ |
uint32_t opt[2]; |
struct { |
uint32_t max_tex_width; |
uint32_t max_tex_height; |
}cap1; |
}; |
}hwcaps_t; |
|
#define HW_BIT_BLIT (1<<0) /* BGRX blitter */ |
#define HW_TEX_BLIT (1<<1) /* stretch blit */ |
#define HW_VID_BLIT (1<<2) /* planar and packed video */ |
/* 3 - 63 reserved */ |
struct context |
{ |
kobj_t header; |
|
// struct drm_i915_gem_object *obj; |
u32 cmd_buffer; |
u32 cmd_offset; |
|
bitmap_t *mask; |
u32 seqno; |
int slot; |
|
}; |
|
int get_driver_caps(hwcaps_t *caps); |
int create_surface(struct drm_device *dev, struct io_call_10 *pbitmap); |
int lock_surface(struct io_call_12 *pbitmap); |
int resize_surface(struct io_call_14 *pbitmap); |
|
struct context *get_context(struct drm_device *dev); |
|
int init_bitmaps(); |
|