chromium.h revision d0a71f63bd810b54e0359223fe53b07730154dc5
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync/* Copyright (c) 2001, Stanford University
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync * All rights reserved.
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync * See the file LICENSE.txt for information on redistributing this software.
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync * Public Chromium exports.
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync * Parallel Chromium applications will include this header.
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync/**********************************************************************/
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync/***** System includes and other cruft *****/
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync/**********************************************************************/
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync * We effectively wrap gl.h, glu.h, etc, just like GLUT
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync/* nothing */
48dafba24ef28f07a241e5857a43b327822574a8vboxsync#include <malloc.h> /* to get ptrdiff_t used below */
710a6316a22868b04400caf79719f96c18163cd3vboxsyncextern "C" {
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/**********************************************************************/
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/***** Define things that might have been missing in gl.h *****/
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync/**********************************************************************/
a425b5e790c27d6a1a2cf738802e9034f0764a00vboxsync * Define missing GLX tokens:
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync#define GLX_VISUAL_CAVEAT_EXT 0x20 /* visual_rating extension type */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync * Define missing WGL tokens:
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync * Define missing 1.2 tokens:
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync * Define missing ARB_imaging tokens
9113fcf881235e2b3df9ce4760b299c929ac3a62vboxsynctypedef void (*CR_GLXFuncPtr)();
1871985cb4854e5bfb2ead8174ee28dbfce74df5vboxsyncCR_GLXFuncPtr glXGetProcAddressARB( const GLubyte *name );
9113fcf881235e2b3df9ce4760b299c929ac3a62vboxsync#endif /* GLX_ARB_get_proc_address */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsyncCR_GLXFuncPtr glXGetProcAddress( const GLubyte *name );
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync#endif /* GLX_ARB_get_proc_address */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/* XXX how about this prototype for wglGetProcAddress()?
ba05e6aeed3cd14961a36e0162c29a267b66d7f7vboxsyncPROC WINAPI wglGetProcAddress_prox( LPCSTR name )
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/* prototype these functions for opengl_stub/getprocaddress.c */
ba05e6aeed3cd14961a36e0162c29a267b66d7f7vboxsyncextern void APIENTRY glGenQueries(GLsizei n, GLuint *ids);
ba05e6aeed3cd14961a36e0162c29a267b66d7f7vboxsyncextern void APIENTRY glDeleteQueries(GLsizei n, const GLuint *ids);
ba05e6aeed3cd14961a36e0162c29a267b66d7f7vboxsyncextern void APIENTRY glBeginQuery(GLenum target, GLuint id);
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsyncextern void APIENTRY glGetQueryiv(GLenum target, GLenum pname, GLint *params);
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsyncextern void APIENTRY glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params);
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsyncextern void APIENTRY glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params);
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsyncextern void APIENTRY glDeleteBuffers(GLsizei, const GLuint *);
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsyncextern void APIENTRY glGenBuffers(GLsizei, GLuint *);
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsyncextern void APIENTRY glBufferData(GLenum, GLsizeiptr, const GLvoid *, GLenum);
1871985cb4854e5bfb2ead8174ee28dbfce74df5vboxsyncextern void APIENTRY glBufferSubData(GLenum, GLintptr, GLsizeiptr, const GLvoid *);
1871985cb4854e5bfb2ead8174ee28dbfce74df5vboxsyncextern void APIENTRY glGetBufferSubData(GLenum, GLintptr, GLsizeiptr, GLvoid *);
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsyncextern GLvoid* APIENTRY glMapBuffer(GLenum, GLenum);
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsyncextern void APIENTRY glGetBufferParameteriv(GLenum, GLenum, GLint *);
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsyncextern void APIENTRY glGetBufferPointerv(GLenum, GLenum, GLvoid* *);
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/**********************************************************************/
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/***** Chromium Extensions to OpenGL *****/
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/***** *****/
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/***** Chromium owns the OpenGL enum range 0x8AF0-0x8B2F *****/
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/**********************************************************************/
ba05e6aeed3cd14961a36e0162c29a267b66d7f7vboxsynctypedef void (APIENTRY *glBarrierCreateCRProc) (GLuint name, GLuint count);
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsynctypedef void (APIENTRY *glBarrierDestroyCRProc) (GLuint name);
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsynctypedef void (APIENTRY *glBarrierExecCRProc) (GLuint name);
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsynctypedef void (APIENTRY *glSemaphoreCreateCRProc) (GLuint name, GLuint count);
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsynctypedef void (APIENTRY *glSemaphoreDestroyCRProc) (GLuint name);
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsynctypedef void (APIENTRY *glSemaphorePCRProc) (GLuint name);
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsynctypedef void (APIENTRY *glSemaphoreVCRProc) (GLuint name);
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsyncextern void APIENTRY glBarrierCreateCR(GLuint name, GLuint count);
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsyncextern void APIENTRY glBarrierDestroyCR(GLuint name);
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsyncextern void APIENTRY glSemaphoreCreateCR(GLuint name, GLuint count);
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsyncextern void APIENTRY glSemaphoreDestroyCR(GLuint name);
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync#endif /* GL_CR_synchronization */
c0a5da26f7222b0a486d6d9ba4d1f475a78a2c73vboxsync/* Private, internal Chromium function */
c0a5da26f7222b0a486d6d9ba4d1f475a78a2c73vboxsynctypedef void (APIENTRY *glBoundsInfoCRProc)(const CRrecti *, const GLbyte *, GLint, GLint);
c0a5da26f7222b0a486d6d9ba4d1f475a78a2c73vboxsync#endif /* GL_CR_bounds_info */
c0a5da26f7222b0a486d6d9ba4d1f475a78a2c73vboxsynctypedef void (APIENTRY *glChromiumParameteriCRProc) (GLenum target, GLint value);
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsynctypedef void (APIENTRY *glChromiumParameterfCRProc) (GLenum target, GLfloat value);
a9f530691071e3496b072915b0c5ceabd4e05ea5vboxsynctypedef void (APIENTRY *glChromiumParametervCRProc) (GLenum target, GLenum type, GLsizei count, const GLvoid *values);
a9f530691071e3496b072915b0c5ceabd4e05ea5vboxsynctypedef void (APIENTRY *glGetChromiumParametervCRProc) (GLenum target, GLuint index, GLenum type, GLsizei count, GLvoid *values);
a9f530691071e3496b072915b0c5ceabd4e05ea5vboxsyncextern void APIENTRY glChromiumParameteriCR(GLenum target, GLint value);
a9f530691071e3496b072915b0c5ceabd4e05ea5vboxsyncextern void APIENTRY glChromiumParameterfCR(GLenum target, GLfloat value);
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsyncextern void APIENTRY glChromiumParametervCR(GLenum target, GLenum type, GLsizei count, const GLvoid *values);
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsyncextern void APIENTRY glGetChromiumParametervCR(GLenum target, GLuint index, GLenum type, GLsizei count, GLvoid *values);
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsync#endif /* GL_CR_state_parameter */
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsync/* For virtual cursor feature (show_cursor) */
ba05e6aeed3cd14961a36e0162c29a267b66d7f7vboxsync#endif /* GL_CR_cursor_position */
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync/* To set bounding box from client app */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync#endif /* GL_CR_bounding_box */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/* To print a string to stdout */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync#endif /* GL_CR_print_string */
794c574111980e7fb3a86847e5495156afa13134vboxsync/* To query tilesort information */
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync#endif /* GL_CR_tilesort_info */
1207f59aa62006952dbb0bf7700decf34d8caeb2vboxsync/* To fetch name of first SPU on a node */
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync#endif /* GL_CR_head_spu_name */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/* For gathering performance metrics */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync#endif /* GL_CR_performance_info */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/* To communicate window size changes */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync#endif /* GL_CR_window_size */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/* To send new tile information to a server */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync#endif /* GL_CR_tile_info */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/* For aggregate transfers */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync#endif /* GL_CR_gather */
b6eb6140917e0b633bba260f465976326b36aee2vboxsync#endif /* GL_CR_saveframe */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync#endif /* GL_CR_readback_barrier_size */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync#endif /* GL_CR_server_id_sharing */
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsync#endif /* GL_CR_server_matrix */
a9f530691071e3496b072915b0c5ceabd4e05ea5vboxsync#endif /* GL_CR_window_position */
1cd59fdf671ca60c64d77e3f7046aaecf7003824vboxsync/* XXX A better name would be glCompressedDrawPixelsCR() */
80e46f984efd827517661c0e081a36014ca41af8vboxsyncextern void APIENTRY glZPixCR(GLsizei width, GLsizei height, GLenum format,
3221176430afca4d1be145b04bf50163fab4fdb1vboxsync#endif /* GL_CR_zpix */
3221176430afca4d1be145b04bf50163fab4fdb1vboxsync/*Allow to use glGetString to query real host GPU info*/
3221176430afca4d1be145b04bf50163fab4fdb1vboxsync/*Global resource ids sharing*/
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsync/*do flush for the command buffer of a thread the context was previusly current for*/
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsync/*report that the shared resource is used by this context, the parameter value is a texture name*/
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsync/*report that the shared resource is no longer used by this context, the parameter value is a texture name*/
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsync/**********************************************************************/
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/***** Chromium-specific API *****/
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsync/**********************************************************************/
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsync * Accepted by crCreateContext() and crCreateWindow() visBits parameter.
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsync * Used to communicate visual attributes throughout Chromium.
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/* Accepted by crSwapBuffers() flag parameter */
1871985cb4854e5bfb2ead8174ee28dbfce74df5vboxsynctypedef GLint (APIENTRY *crCreateContextProc)(const char *dpyName, GLint visBits);
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsynctypedef void (APIENTRY *crDestroyContextProc)(GLint context);
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsynctypedef void (APIENTRY *crMakeCurrentProc)(GLint window, GLint context);
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsynctypedef GLint (APIENTRY *crGetCurrentContextProc)(void);
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsynctypedef GLint (APIENTRY *crGetCurrentWindowProc)(void);
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsynctypedef void (APIENTRY *crSwapBuffersProc)(GLint window, GLint flags);
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsynctypedef GLint (APIENTRY *crWindowCreateProc)(const char *dpyName, GLint visBits);
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsynctypedef void (APIENTRY *crWindowDestroyProc)(GLint window);
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsynctypedef void (APIENTRY *crWindowSizeProc)(GLint window, GLint w, GLint h);
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsynctypedef void (APIENTRY *crWindowPositionProc)(GLint window, GLint x, GLint y);
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsynctypedef void (APIENTRY *crWindowShowProc)( GLint window, GLint flag );
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsyncextern GLint APIENTRY crCreateContext(const char *dpyName, GLint visBits);
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsyncextern void APIENTRY crDestroyContext(GLint context);
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsyncextern void APIENTRY crMakeCurrent(GLint window, GLint context);
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsyncextern void APIENTRY crSwapBuffers(GLint window, GLint flags);
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsyncextern GLint APIENTRY crWindowCreate(const char *dpyName, GLint visBits);
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsyncextern void APIENTRY crWindowSize(GLint window, GLint w, GLint h);
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsyncextern void APIENTRY crWindowPosition(GLint window, GLint x, GLint y);
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsyncextern void APIENTRY crWindowVisibleRegion( GLint window, GLint cRects, void *pRects );
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsyncextern void APIENTRY crWindowShow( GLint window, GLint flag );
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsyncCR_PROC APIENTRY crGetProcAddress( const char *name );
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/**********************************************************************/
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/***** Other useful stuff *****/
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/**********************************************************************/
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync#define GET_PROC(NAME) wglGetProcAddress((const GLbyte *) (NAME))
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync#define GET_PROC(NAME) glXGetProcAddressARB((const GLubyte *) (NAME))
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/* For SGI, etc that don't have glXGetProcAddress(). */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync#endif /* __CHROMIUM_H__ */