#include "main/mtypes.h"
#include "intel_bufmgr.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
struct intel_context;
+struct intel_screen;
struct intel_buffer_object;
/**
GLuint cpp; /**< bytes per pixel */
GLuint width; /**< in pixels */
GLuint height; /**< in pixels */
- GLuint pitch; /**< in pixels */
- GLubyte *map; /**< only non-NULL when region is actually mapped */
- GLuint map_refcount; /**< Reference count for mapping */
+ GLuint pitch; /**< in bytes */
uint32_t tiling; /**< Which tiling mode the region is in */
uint32_t name; /**< Global name for the bo */
- struct intel_screen *screen;
};
GLuint width, GLuint height, GLuint pitch,
unsigned int handle, const char *name);
+struct intel_region *
+intel_region_alloc_for_fd(struct intel_screen *screen,
+ GLuint cpp,
+ GLuint width, GLuint height, GLuint pitch,
+ int fd, const char *name);
+
bool
intel_region_flink(struct intel_region *region, uint32_t *name);
void intel_recreate_static_regions(struct intel_context *intel);
-/**
- * Map/unmap regions. This is refcounted also:
- *
- * \param mode bitmask of GL_MAP_READ_BIT, GL_MAP_WRITE_BIT
- */
-void *intel_region_map(struct intel_context *intel,
- struct intel_region *ib,
- GLbitfield mode);
+void
+intel_region_get_tile_masks(struct intel_region *region,
+ uint32_t *mask_x, uint32_t *mask_y,
+ bool map_stencil_as_y_tiled);
-void intel_region_unmap(struct intel_context *intel, struct intel_region *ib);
+uint32_t
+intel_region_get_aligned_offset(struct intel_region *region, uint32_t x,
+ uint32_t y, bool map_stencil_as_y_tiled);
-/* Copy rectangular sub-regions
+/**
+ * Used with images created with image_from_names
+ * to help support planar images.
*/
-bool
-intel_region_copy(struct intel_context *intel,
- struct intel_region *dest,
- GLuint dest_offset,
- GLuint destx, GLuint desty,
- struct intel_region *src,
- GLuint src_offset,
- GLuint srcx, GLuint srcy, GLuint width, GLuint height,
- bool flip,
- GLenum logicop);
-
-void _mesa_copy_rect(GLubyte * dst,
- GLuint cpp,
- GLuint dst_pitch,
- GLuint dst_x,
- GLuint dst_y,
- GLuint width,
- GLuint height,
- const GLubyte * src,
- GLuint src_pitch, GLuint src_x, GLuint src_y);
+struct intel_image_format {
+ int fourcc;
+ int components;
+ int nplanes;
+ struct {
+ int buffer_index;
+ int width_shift;
+ int height_shift;
+ uint32_t dri_format;
+ int cpp;
+ } planes[3];
+};
struct __DRIimageRec {
struct intel_region *region;
GLenum internal_format;
+ uint32_t dri_format;
GLuint format;
- GLenum data_type;
+ uint32_t offset;
+
+ /*
+ * Need to save these here between calls to
+ * image_from_names and calls to image_from_planar.
+ */
+ uint32_t strides[3];
+ uint32_t offsets[3];
+ struct intel_image_format *planar_format;
+
+ /* particular miptree level */
+ GLuint width;
+ GLuint height;
+ GLuint tile_x;
+ GLuint tile_y;
+ bool has_depthstencil;
+
void *data;
};
+#ifdef __cplusplus
+}
+#endif
+
#endif