summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/GL/uglmesa.h245
1 files changed, 39 insertions, 206 deletions
diff --git a/include/GL/uglmesa.h b/include/GL/uglmesa.h
index 44f8fc035e..a70a0ae912 100644
--- a/include/GL/uglmesa.h
+++ b/include/GL/uglmesa.h
@@ -48,92 +48,66 @@ extern "C" {
* Values for display mode of uglMesaCreateContext ()
*/
-#define UGL_MESA_SINGLE 0x00
-#define UGL_MESA_DOUBLE 0x01
-#define UGL_MESA_DOUBLE_SW 0x02
-#define UGL_MESA_DOUBLE_HW 0x03
+/*
+ * With these mask values, it's possible to test double buffer mode
+ * with UGL_MESA_DOUBLE mask
+ *
+ * SINGLE 0000 0001
+ * DOUBLE 0000 0110
+ * - SOFT 0000 0010
+ * - HARD 0000 0100
+ * WINDML 0001 0000
+ *
+ *
+ */
+#define UGL_MESA_SINGLE 0x01
+#define UGL_MESA_DOUBLE 0x06
+#define UGL_MESA_DOUBLE_SOFTWARE 0x02
+#define UGL_MESA_DOUBLE_HARDWARE 0x04
+#define UGL_MESA_WINDML_EXCLUSIVE 0x10
+
#define UGL_MESA_FULLSCREEN_WIDTH 0x0
#define UGL_MESA_FULLSCREEN_HEIGHT 0x0
/*
- * Pixel format
- */
-#define UGL_MESA_ARGB8888 0x01
-#define UGL_MESA_RGB565 0x02
-#define UGL_MESA_RGB888 0x03
-#define UGL_MESA_ARGB4444 0x04
-#define UGL_MESA_CI 0x05
-#define UGL_MESA_DITHER_RGB 0x10
-
-/*
* uglMesaPixelStore() parameters:
*/
-#define UGL_MESA_ROW_LENGTH 0x10
-#define UGL_MESA_Y_UP 0x11
+#define UGL_MESA_ROW_LENGTH 0x20
+#define UGL_MESA_Y_UP 0x21
/*
* Accepted by uglMesaGetIntegerv:
*/
-#define UGL_MESA_LEFT_X 0x18
-#define UGL_MESA_TOP_Y 0x19
-#define UGL_MESA_WIDTH 0x20
-#define UGL_MESA_HEIGHT 0x21
-#define UGL_MESA_DISPLAY_WIDTH 0x22
-#define UGL_MESA_DISPLAY_HEIGHT 0x23
-#define UGL_MESA_COLOR_FORMAT 0x24
-#define UGL_MESA_COLOR_MODEL 0x25
-#define UGL_MESA_PIXEL_FORMAT 0x26
-#define UGL_MESA_TYPE 0x27
-#define UGL_MESA_RGB 0x28
-#define UGL_MESA_COLOR_INDEXED 0x29
-
+#define UGL_MESA_LEFT_X 0x01
+#define UGL_MESA_TOP_Y 0x02
+#define UGL_MESA_WIDTH 0x03
+#define UGL_MESA_HEIGHT 0x04
+#define UGL_MESA_DISPLAY_WIDTH 0x05
+#define UGL_MESA_DISPLAY_HEIGHT 0x06
+#define UGL_MESA_COLOR_FORMAT 0x07
+#define UGL_MESA_COLOR_MODEL 0x08
+#define UGL_MESA_PIXEL_FORMAT 0x09
+#define UGL_MESA_TYPE 0x0A
+#define UGL_MESA_RGB 0x0B
+#define UGL_MESA_COLOR_INDEXED 0x0C
+#define UGL_MESA_SINGLE_BUFFER 0x0D
+#define UGL_MESA_DOUBLE_BUFFER 0x0E
+#define UGL_MESA_DOUBLE_BUFFER_SOFTWARE 0x0F
+#define UGL_MESA_DOUBLE_BUFFER_HARDWARE 0x10
+
/*
* typedefs
*/
typedef struct uglMesaContext * UGL_MESA_CONTEXT;
-/*
- * Create an Mesa/UGL rendering context. The attributes needed are
- * double buffer flag and a context sharelist.
- *
- * It's necessary to first call this function before use uglMakeCurrentContext.
- * This function provides neither stencil nor accumulation buffer only
- * a depth buffer to reduce memory footprint.
- *
- * Input: db_mode - UGL_MESA_SINGLE = single buffer mode
- * UGL_MESA_DOUBLE = double buffer mode (HW fallback -> SW)
- * UGL_MESA_DOUBLE_SW = double buffer software
- * UGL_MESA_DOUBLE_HW = double buffer hardware
- * share_list - specifies another UGL_MESA_CONTEXT with which to share
- * display lists. NULL indicates no sharing.
- *
- * Return: a UGL_MESA_CONTEXT, or zero if error
- */
-
-UGL_MESA_CONTEXT uglMesaCreateNewContext (GLenum db_mode,
+UGL_MESA_CONTEXT uglMesaCreateNewContext (GLenum mode,
UGL_MESA_CONTEXT share_list);
-/*
- * Create an UGL/Mesa rendering context and specify desired
- * size of depth buffer, stencil buffer and accumulation buffer.
- * If you specify zero for depth_bits, stencil_bits,
- * accum_[red|gren|blue]_bits, you can save some memory.
- *
- * INPUT: db_mode - double buffer mode
- * depth_bits - depth buffer size
- * stencil_bits - stencil buffer size
- * accum_red_bits - accumulation red buffer size
- * accum_green_bits - accumulation green buffer size
- * accum_blue_bits -accumulation blue buffer size
- * accum_alpha_bits -accumulation alpha buffer size
- * share_list - specifies another UGL_MESA_CONTEXT with which to share
- * display lists. NULL indicates no sharing.
- */
-UGL_MESA_CONTEXT uglMesaCreateNewContextExt (GLenum db_flag,
+UGL_MESA_CONTEXT uglMesaCreateNewContextExt (GLenum mode,
GLint depth_bits,
GLint stencil_bits,
GLint accum_red_bits,
@@ -142,175 +116,34 @@ UGL_MESA_CONTEXT uglMesaCreateNewContextExt (GLenum db_flag,
GLint accum_alpha_bits,
UGL_MESA_CONTEXT share_list);
-/*
- * Bind an UGL_MESA_CONTEXT to an image buffer. The image buffer is
- * just a block of memory which the client provides. Its size must be
- * at least as large as width*height*sizeof(type). Its address should
- * be a multiple of 4 if using RGBA mode.
- *
- * Image data is stored in the order of glDrawPixels: row-major order
- * with the lower-left image pixel stored in the first array position
- * (ie. bottom-to-top).
- *
- * Since the only type initially supported is GL_UNSIGNED_BYTE, if the
- * context is in RGBA mode, each pixel will be stored as a 4-byte RGBA
- * value. If the context is in color indexed mode, each pixel will be
- * stored as a 1-byte value.
- *
- * If the context's viewport hasn't been initialized yet, it will now be
- * initialized to (0, 0, width, height).
- *
- * Input: umc - a rendering context
- * left, top - coordinates in pixels of (left,top) pixel
- * (0,0) in fullscreen mode.
- * width, height - size of image buffer in pixels, at least 1
- * else fullscreen dimensions are used (UGL_MESA_DISPLAY_WIDTH
- * and UGL_MESA_DISPLAY_HEIGHT).
- *
- * Return: GL_TRUE if success, GL_FALSE if error because of invalid umc,
- * width<1, height<1, width>internal limit or height>internal limit.
- */
-
GLboolean uglMesaMakeCurrentContext (UGL_MESA_CONTEXT umc,
GLsizei left, GLsizei top,
GLsizei width, GLsizei height);
-/*
- * Move an OpenGL window by a delta value
- *
- * Input: dx, dy - delta values in pixels
- *
- * Return: GL_TRUE if success, GL_FALSE if error because of invalid
- * coordinates.
- */
GLboolean uglMesaMoveWindow (GLsizei dx, GLsizei dy);
-/*
- * Move an OpenGL window to an absolute position
- *
- * Input: left, top - new coordinates in pixels
- *
- * Return: GL_TRUE if success, GL_FALSE if error because of invalid
- * coordinates.
- */
GLboolean uglMesaMoveToWindow (GLsizei left, GLsizei top);
-/*
- * Resize an OpenGL window by a delta value
- *
- * Input: dw, dh - delta values in pixels
- *
- * Return: GL_TRUE if success, GL_FALSE if error because of invalid
- * coordinates.
- */
GLboolean uglMesaResizeWindow (GLsizei dw, GLsizei dh);
-/*
- * Resize an OpenGL window to an absolute size
- *
- * Input: width, height - new dimensions in pixels
- *
- * Return: GL_TRUE if success, GL_FALSE if error because of invalid
- * coordinates.
- */
GLboolean uglMesaResizeToWindow (GLsizei width, GLsizei height);
-/*
- * Destroy the current UGL/Mesa rendering context
- *
- */
void uglMesaDestroyContext (void);
-/*
- * Return the current UGL/Mesa context
- *
- * Return: a UGL/Mesa context, or NULL if error
- *
- */
UGL_MESA_CONTEXT uglMesaGetCurrentContext (void);
-/*
- * Swap front and back buffers in double buffering mode. This
- * function is a no-op if there's no back buffer. In case of software
- * double buffering a copy occurs from off-screen buffer to front
- * buffer. Works faster with an hardware support.
- */
-
void uglMesaSwapBuffers (void);
-/*
- * Set pixel store/packing parameters for the current context. This
- * is similar to glPixelStore. UGL uses Y coordinates increase
- * downward.
- *
- * Input: pname - UGL_MESA_ROW_LENGTH
- * zero, same as image width (default).
- * value specify actual pixels per row in image buffer
- * UGL_MESA_Y_UP:
- * zero = Y coordinates increase downward (default)
- * non-zero = Y coordinates increase upward
- * value - value for the parameter pname
- */
-
void uglMesaPixelStore (GLint pname, GLint value);
-/*
- * Return an integer value like glGetIntegerv.
- *
- * Input: pname - UGL_MESA_LEFT_X return the x axis value
- * of the most left pixel
- * UGL_MESA_TOP_Y return the y axis value
- * of the topper pixel
- * UGL_MESA_WIDTH return current image width
- * UGL_MESA_HEIGHT return current image height
- * UGL_MESA_COLOR_FORMAT return image color format
- * UGL_MESA_COLOR_MODEL return image color model
- * UGL_MESA_PIXEL_FORMAT return pixel format
- * UGL_MESA_ROW_LENGTH return row length in pixels
- * UGL_MESA_RGB return true if RGB
- * UGL_MESA_COLOR_INDEXED return true if color indexed
- * value - pointer to integer in which to return result.
- */
void uglMesaGetIntegerv (GLint pname, GLint *value);
-/*
- * Return the depth buffer associated with an UGL/Mesa context.
- *
- * Output: width, height - size of buffer in pixels
- * bytesPerValue - bytes per depth value (2 or 4)
- * buffer - pointer to depth buffer values
- * Return: GL_TRUE or GL_FALSE to indicate success or failure.
- *
- */
GLboolean uglMesaGetDepthBuffer (GLint *width, GLint *height,
GLint *bytesPerValue, void **buffer);
-/*
- * Return the color buffer associated with an UGL/Mesa context.
- * Input: c - the UGL/Mesa context
- * Output: width, height - size of buffer in pixels
- * format - buffer format (UGLMESA_FORMAT)
- * buffer - pointer to color buffer values
- * Return: GL_TRUE or GL_FALSE to indicate success or failure.
- *
- */
GLboolean uglMesaGetColorBuffer (GLint *width, GLint *height,
GLint *format, void **buffer);
-/*
- * Color allocation in indexed mode.
- * This function does nothing in RGB mode.
- *
- * Input: index - Value for the current color index
- * red - Red component (between 0 and 1)
- * green - Green component (between 0 and 1)
- * blue - Blue component (between 0 and 1)
- *
- * Return: GL_TRUE if success, or GL_FALSE if index<0 or * clutSize<index,
- * red, green and blue are not between 0.0 and 1.0.
- *
- */
-
GLboolean uglMesaSetColor (GLubyte index, GLfloat red,
GLfloat green, GLfloat blue);