I915_TILE_Y
};
+enum i915_winsys_flush_flags
+{
+ I915_FLUSH_ASYNC = 0,
+ I915_FLUSH_END_OF_FRAME = 1
+};
+
struct i915_winsys_batchbuffer {
struct i915_winsys *iws;
size_t size;
size_t relocs;
- size_t max_relocs;
/*@}*/
};
struct i915_winsys_batchbuffer *
(*batchbuffer_create)(struct i915_winsys *iws);
+ /**
+ * Validate buffers for usage in this batchbuffer.
+ * Does space-checking and asorted other book-keeping.
+ *
+ * @batch
+ * @buffers array to buffers to validate
+ * @num_of_buffers size of the passed array
+ */
+ boolean (*validate_buffers)(struct i915_winsys_batchbuffer *batch,
+ struct i915_winsys_buffer **buffers,
+ int num_of_buffers);
+
/**
* Emit a relocation to a buffer.
* Target position in batchbuffer is the same as ptr.
* Flush a bufferbatch.
*/
void (*batchbuffer_flush)(struct i915_winsys_batchbuffer *batch,
- struct pipe_fence_handle **fence);
+ struct pipe_fence_handle **fence,
+ enum i915_winsys_flush_flags flags);
/**
* Destroy a batchbuffer.
struct i915_winsys_buffer *
(*buffer_from_handle)(struct i915_winsys *iws,
struct winsys_handle *whandle,
+ unsigned height,
enum i915_winsys_buffer_tile *tiling,
unsigned *stride);
void (*buffer_destroy)(struct i915_winsys *iws,
struct i915_winsys_buffer *buffer);
+
+ /**
+ * Check if a buffer is busy.
+ */
+ boolean (*buffer_is_busy)(struct i915_winsys *iws,
+ struct i915_winsys_buffer *buffer);
/*@}*/
struct pipe_fence_handle *fence);
/*@}*/
+ /**
+ * Retrieve the aperture size (in MiB) of the device.
+ */
+ int (*aperture_size)(struct i915_winsys *iws);
+
/**
* Destroy the winsys.