From 306933046cdc70e20af7facea8bc8a975812787e Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Mon, 10 Sep 2001 19:21:13 +0000 Subject: WindML updates (Stephane Raimbault) --- include/GL/uglmesa.h | 245 ++++++++------------------------------------------- 1 file changed, 39 insertions(+), 206 deletions(-) (limited to 'include') 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