2 #include "i915_sw_winsys.h"
3 #include "util/u_memory.h"
5 static struct i915_winsys_buffer *
6 i915_sw_buffer_create(struct i915_winsys *iws,
8 enum i915_winsys_buffer_type type)
10 struct i915_sw_buffer *buf = CALLOC_STRUCT(i915_sw_buffer);
15 buf->magic = 0xDEAD1337;
17 buf->ptr = CALLOC(size, 1);
22 return (struct i915_winsys_buffer *)buf;
30 static struct i915_winsys_buffer *
31 i915_sw_buffer_create_tiled(struct i915_winsys *iws,
32 unsigned *stride, unsigned height,
33 enum i915_winsys_buffer_tile *tiling,
34 enum i915_winsys_buffer_type type)
36 struct i915_sw_buffer *buf = CALLOC_STRUCT(i915_sw_buffer);
41 buf->magic = 0xDEAD1337;
43 buf->ptr = CALLOC(*stride * height, 1);
44 buf->tiling = *tiling;
45 buf->stride = *stride;
50 return (struct i915_winsys_buffer *)buf;
59 i915_sw_buffer_map(struct i915_winsys *iws,
60 struct i915_winsys_buffer *buffer,
63 struct i915_sw_buffer *buf = i915_sw_buffer(buffer);
70 i915_sw_buffer_unmap(struct i915_winsys *iws,
71 struct i915_winsys_buffer *buffer)
73 struct i915_sw_buffer *buf = i915_sw_buffer(buffer);
79 i915_sw_buffer_write(struct i915_winsys *iws,
80 struct i915_winsys_buffer *buffer,
85 struct i915_sw_buffer *buf = i915_sw_buffer(buffer);
87 memcpy((char*)buf->ptr + offset, data, size);
92 i915_sw_buffer_destroy(struct i915_winsys *iws,
93 struct i915_winsys_buffer *buffer)
95 struct i915_sw_buffer *buf = i915_sw_buffer(buffer);
106 i915_sw_winsys_init_buffer_functions(struct i915_sw_winsys *isws)
108 isws->base.buffer_create = i915_sw_buffer_create;
109 isws->base.buffer_create_tiled = i915_sw_buffer_create_tiled;
110 isws->base.buffer_map = i915_sw_buffer_map;
111 isws->base.buffer_unmap = i915_sw_buffer_unmap;
112 isws->base.buffer_write = i915_sw_buffer_write;
113 isws->base.buffer_destroy = i915_sw_buffer_destroy;