From b0bba038467a0b22618be105010b7b3b3859b4e5 Mon Sep 17 00:00:00 2001 From: Brian Date: Wed, 11 Apr 2007 08:11:52 -0600 Subject: use _mesa_reference_renderbuffer(), fix typo --- src/mesa/drivers/dri/i915tex/intel_fbo.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/i915tex/intel_fbo.c b/src/mesa/drivers/dri/i915tex/intel_fbo.c index 87ef22f52f4..349912ffecd 100644 --- a/src/mesa/drivers/dri/i915tex/intel_fbo.c +++ b/src/mesa/drivers/dri/i915tex/intel_fbo.c @@ -520,7 +520,7 @@ intel_framebuffer_renderbuffer(GLcontext * ctx, /** * When glFramebufferTexture[123]D is called this function sets up the - * gl_renderbuffer wrapp around the texture image. + * gl_renderbuffer wrapper around the texture image. * This will have the region info needed for hardware rendering. */ static struct intel_renderbuffer * @@ -606,7 +606,7 @@ intel_render_texture(GLcontext * ctx, irb = intel_wrap_texture(ctx, newImage); if (irb) { /* bind the wrapper to the attachment point */ - att->Renderbuffer = &irb->Base; + _mesa_reference_renderbuffer(&att->Renderbuffer, &irb->Base); } else { /* fallback to software rendering */ -- cgit v1.2.3 From 50aaabc248c9823106ff772873cbf2631d4dadcd Mon Sep 17 00:00:00 2001 From: George Sapountzis Date: Fri, 13 Apr 2007 18:12:37 +0300 Subject: xmesa: export xmesa functions used by xfree86. This uses xmesa.h as the GLcore interface and avoids adding an explicit GLcore inteface which would not be a proper interface anyway. It puts the declarations of the three functions specific for XMesa/XFree86 in xmesa.h, we can push them down to xmesa_xf86.h if hiding behind XFree86Server ifdef's is not enough. --- include/GL/xmesa.h | 15 +++++++++++++++ src/mesa/drivers/x11/xm_api.c | 19 +++++++++++++++---- src/mesa/drivers/x11/xmesaP.h | 10 ---------- 3 files changed, 30 insertions(+), 14 deletions(-) (limited to 'src/mesa/drivers') diff --git a/include/GL/xmesa.h b/include/GL/xmesa.h index ab813b23baa..f185a15cdb8 100644 --- a/include/GL/xmesa.h +++ b/include/GL/xmesa.h @@ -180,6 +180,21 @@ extern XMesaContext XMesaCreateContext( XMesaVisual v, extern void XMesaDestroyContext( XMesaContext c ); +#ifdef XFree86Server +/* + * These are the extra routines required for integration with XFree86. + * None of these routines should be user visible. -KEM + */ +extern GLboolean XMesaForceCurrent( XMesaContext c ); + +extern GLboolean XMesaLoseCurrent( XMesaContext c ); + +extern GLboolean XMesaCopyContext( XMesaContext src, + XMesaContext dst, + GLuint mask ); +#endif /* XFree86Server */ + + /* * Create an XMesaBuffer from an X window. */ diff --git a/src/mesa/drivers/x11/xm_api.c b/src/mesa/drivers/x11/xm_api.c index 24028a44ba7..6439d13fa5f 100644 --- a/src/mesa/drivers/x11/xm_api.c +++ b/src/mesa/drivers/x11/xm_api.c @@ -1308,6 +1308,7 @@ xmesa_convert_from_x_visual_type( int visualType ) * visualCaveat - ala the GLX extension, usually GLX_NONE * Return; a new XMesaVisual or 0 if error. */ +PUBLIC XMesaVisual XMesaCreateVisual( XMesaDisplay *display, XMesaVisualInfo visinfo, GLboolean rgb_flag, @@ -1450,6 +1451,7 @@ XMesaVisual XMesaCreateVisual( XMesaDisplay *display, } +PUBLIC void XMesaDestroyVisual( XMesaVisual v ) { #ifndef XFree86Server @@ -1467,6 +1469,7 @@ void XMesaDestroyVisual( XMesaVisual v ) * lists or NULL if no sharing is wanted. * \return an XMesaContext or NULL if error. */ +PUBLIC XMesaContext XMesaCreateContext( XMesaVisual v, XMesaContext share_list ) { static GLboolean firstTime = GL_TRUE; @@ -1550,6 +1553,7 @@ XMesaContext XMesaCreateContext( XMesaVisual v, XMesaContext share_list ) +PUBLIC void XMesaDestroyContext( XMesaContext c ) { GLcontext *mesaCtx = &c->mesa; @@ -1721,7 +1725,7 @@ XMesaCreateWindowBuffer2(XMesaVisual v, XMesaWindow w, XMesaContext c) } -XMesaBuffer +PUBLIC XMesaBuffer XMesaCreateWindowBuffer(XMesaVisual v, XMesaWindow w) { return XMesaCreateWindowBuffer2( v, w, NULL ); @@ -1737,7 +1741,7 @@ XMesaCreateWindowBuffer(XMesaVisual v, XMesaWindow w) * \c GLX_DIRECT_COLOR visual for the pixmap * \returns new XMesaBuffer or NULL if error */ -XMesaBuffer +PUBLIC XMesaBuffer XMesaCreatePixmapBuffer(XMesaVisual v, XMesaPixmap p, XMesaColormap cmap) { int client = 0; @@ -1802,7 +1806,7 @@ XMesaCreatePBuffer(XMesaVisual v, XMesaColormap cmap, /* * Deallocate an XMesaBuffer structure and all related info. */ -void +PUBLIC void XMesaDestroyBuffer(XMesaBuffer b) { xmesa_free_buffer(b); @@ -1845,6 +1849,7 @@ GLboolean XMesaMakeCurrent( XMesaContext c, XMesaBuffer b ) /* * Bind buffer b to context c and make c the current rendering context. */ +PUBLIC GLboolean XMesaMakeCurrent2( XMesaContext c, XMesaBuffer drawBuffer, XMesaBuffer readBuffer ) { @@ -1958,6 +1963,8 @@ XMesaBuffer XMesaGetCurrentReadBuffer( void ) } +#ifdef XFree86Server +PUBLIC GLboolean XMesaForceCurrent(XMesaContext c) { if (c) { @@ -1976,6 +1983,7 @@ GLboolean XMesaForceCurrent(XMesaContext c) } +PUBLIC GLboolean XMesaLoseCurrent(XMesaContext c) { (void) c; @@ -1984,11 +1992,13 @@ GLboolean XMesaLoseCurrent(XMesaContext c) } +PUBLIC GLboolean XMesaCopyContext( XMesaContext xm_src, XMesaContext xm_dst, GLuint mask ) { _mesa_copy_context(&xm_src->mesa, &xm_dst->mesa, mask); return GL_TRUE; } +#endif /* XFree86Server */ /* @@ -2135,6 +2145,7 @@ static void FXgetImage( XMesaBuffer b ) * Copy the back buffer to the front buffer. If there's no back buffer * this is a no-op. */ +PUBLIC void XMesaSwapBuffers( XMesaBuffer b ) { GET_CURRENT_CONTEXT(ctx); @@ -2475,7 +2486,7 @@ unsigned long XMesaDitherColor( XMesaContext xmesa, GLint x, GLint y, * This is typically called when the window size changes and we need * to reallocate the buffer's back/depth/stencil/accum buffers. */ -void +PUBLIC void XMesaResizeBuffers( XMesaBuffer b ) { GET_CURRENT_CONTEXT(ctx); diff --git a/src/mesa/drivers/x11/xmesaP.h b/src/mesa/drivers/x11/xmesaP.h index bd5dce14172..98d03ccf62f 100644 --- a/src/mesa/drivers/x11/xmesaP.h +++ b/src/mesa/drivers/x11/xmesaP.h @@ -573,16 +573,6 @@ extern XMesaBuffer XMesaCreateWindowBuffer2( XMesaVisual v, XMesaWindow w, XMesaContext c ); -/* - * These are the extra routines required for integration with XFree86. - * None of these routines should be user visible. -KEM - */ -extern GLboolean XMesaForceCurrent(XMesaContext c); -extern GLboolean XMesaLoseCurrent(XMesaContext c); -extern GLboolean XMesaCopyContext( XMesaContext src, - XMesaContext dst, - GLuint mask ); - #define ENABLE_EXT_texure_compression_s3tc 0 /* SW texture compression */ -- cgit v1.2.3 From 9f8373d5cada37ed71e5908a7158d56d9a4c34d5 Mon Sep 17 00:00:00 2001 From: George Sapountzis Date: Fri, 13 Apr 2007 18:13:08 +0300 Subject: xmesa: drop unused XMesaPutImageHelper. It could only be called from XMesaCopySubBuffer but this function is not used by XFree86. It seems that XMesaPutImageHelper would handle sub-images but never got finished. Proper sub-image helpers should be written if need be. --- include/GL/xmesa_xf86.h | 3 +-- src/mesa/drivers/x11/xm_image.c | 17 ----------------- src/mesa/drivers/x11/xm_image.h | 7 ------- 3 files changed, 1 insertion(+), 26 deletions(-) (limited to 'src/mesa/drivers') diff --git a/include/GL/xmesa_xf86.h b/include/GL/xmesa_xf86.h index c84ffe8a20f..7d5a7c5e995 100644 --- a/include/GL/xmesa_xf86.h +++ b/include/GL/xmesa_xf86.h @@ -124,8 +124,7 @@ do { \ do { \ /* Assumes: Images are always in ZPixmap format */ \ (void) __d; \ - if (__sx || __sy) /* The non-trivial case */ \ - XMesaPutImageHelper(__d,__b,__gc,__i,__sx,__sy,__x,__y,__w,__h); \ + ASSERT(!__sx && !__sy) /* The SubImage case */ \ ValidateGC(__b, __gc); \ (*__gc->ops->PutImage)(__b, __gc, ((XMesaDrawable)(__b))->depth, \ __x, __y, __w, __h, 0, ZPixmap, \ diff --git a/src/mesa/drivers/x11/xm_image.c b/src/mesa/drivers/x11/xm_image.c index b91d5679f9b..087b4e4c3a7 100644 --- a/src/mesa/drivers/x11/xm_image.c +++ b/src/mesa/drivers/x11/xm_image.c @@ -130,21 +130,4 @@ void XMesaPutPixel(XMesaImage *image, int x, int y, unsigned long pixel) } #endif -void XMesaPutImageHelper(ScreenPtr display, - DrawablePtr d, GCPtr gc, - XMesaImage *image, - int src_x, int src_y, - int dest_x, int dest_y, - unsigned int width, unsigned int height) -{ - /* NOT_DONE: Verify that the following works for all depths */ - char *src = (image->data + - src_y * image->bytes_per_line + - ((src_x * image->bits_per_pixel) >> 3)); - - ValidateGC(d, gc); - (*gc->ops->PutImage)(d, gc, d->depth, dest_x, dest_y, width, height, - 0, ZPixmap, src); -} - #endif /* XFree86Server */ diff --git a/src/mesa/drivers/x11/xm_image.h b/src/mesa/drivers/x11/xm_image.h index c91ab3935eb..240ccee1af5 100644 --- a/src/mesa/drivers/x11/xm_image.h +++ b/src/mesa/drivers/x11/xm_image.h @@ -81,11 +81,4 @@ extern void XMesaPutPixel(XMesaImage *image, int x, int y, unsigned long pixel); #endif -extern void XMesaPutImageHelper(ScreenPtr display, - DrawablePtr d, GCPtr gc, - XMesaImage *image, - int src_x, int src_y, - int dest_x, int dest_y, - unsigned int width, unsigned int height); - #endif /* _XM_IMAGE_H_ */ -- cgit v1.2.3 From 3d59042afdaff9e67c6422cd8fa73d1bbbfbe940 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Sat, 14 Apr 2007 04:52:27 +0100 Subject: r300: if we don't have TCL don't setup state emissions for vertex shaders --- src/mesa/drivers/dri/r300/r300_cmdbuf.c | 109 ++++++++++++++++++-------------- src/mesa/drivers/dri/r300/r300_ioctl.c | 49 +++++++------- src/mesa/drivers/dri/r300/r300_state.c | 34 +++++----- 3 files changed, 104 insertions(+), 88 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_cmdbuf.c b/src/mesa/drivers/dri/r300/r300_cmdbuf.c index 0fb2e5a2e0f..77d0add3e35 100644 --- a/src/mesa/drivers/dri/r300/r300_cmdbuf.c +++ b/src/mesa/drivers/dri/r300/r300_cmdbuf.c @@ -281,7 +281,11 @@ CHECK( vpu, vpu_count(atom->cmd) ? (1 + vpu_count(atom->cmd)*4) : 0 ) void r300InitCmdBuf(r300ContextPtr r300) { int size, mtu; - + int has_tcl = 1; + + if (!(r300->radeon.radeonScreen->chip_flags & RADEON_CHIPSET_TCL)) + has_tcl = 0; + r300->hw.max_state_size = 2+2; /* reserve extra space for WAIT_IDLE and tex cache flush */ mtu = r300->radeon.glCtx->Const.MaxTextureUnits; @@ -291,33 +295,37 @@ void r300InitCmdBuf(r300ContextPtr r300) /* Initialize state atoms */ ALLOC_STATE( vpt, always, R300_VPT_CMDSIZE, "vpt", 0 ); - r300->hw.vpt.cmd[R300_VPT_CMD_0] = cmdpacket0(R300_SE_VPORT_XSCALE, 6); + r300->hw.vpt.cmd[R300_VPT_CMD_0] = cmdpacket0(R300_SE_VPORT_XSCALE, 6); ALLOC_STATE( vap_cntl, always, 2, "vap_cntl", 0 ); - r300->hw.vap_cntl.cmd[0] = cmdpacket0(R300_VAP_CNTL, 1); + r300->hw.vap_cntl.cmd[0] = cmdpacket0(R300_VAP_CNTL, 1); ALLOC_STATE( vte, always, 3, "vte", 0 ); - r300->hw.vte.cmd[0] = cmdpacket0(R300_SE_VTE_CNTL, 2); + r300->hw.vte.cmd[0] = cmdpacket0(R300_SE_VTE_CNTL, 2); ALLOC_STATE( unk2134, always, 3, "unk2134", 0 ); - r300->hw.unk2134.cmd[0] = cmdpacket0(0x2134, 2); + r300->hw.unk2134.cmd[0] = cmdpacket0(0x2134, 2); ALLOC_STATE( vap_cntl_status, always, 2, "vap_cntl_status", 0 ); - r300->hw.vap_cntl_status.cmd[0] = cmdpacket0(R300_VAP_CNTL_STATUS, 1); + r300->hw.vap_cntl_status.cmd[0] = cmdpacket0(R300_VAP_CNTL_STATUS, 1); ALLOC_STATE( vir[0], variable, R300_VIR_CMDSIZE, "vir/0", 0 ); - r300->hw.vir[0].cmd[R300_VIR_CMD_0] = cmdpacket0(R300_VAP_INPUT_ROUTE_0_0, 1); + r300->hw.vir[0].cmd[R300_VIR_CMD_0] = cmdpacket0(R300_VAP_INPUT_ROUTE_0_0, 1); ALLOC_STATE( vir[1], variable, R300_VIR_CMDSIZE, "vir/1", 1 ); - r300->hw.vir[1].cmd[R300_VIR_CMD_0] = cmdpacket0(R300_VAP_INPUT_ROUTE_1_0, 1); + r300->hw.vir[1].cmd[R300_VIR_CMD_0] = cmdpacket0(R300_VAP_INPUT_ROUTE_1_0, 1); ALLOC_STATE( vic, always, R300_VIC_CMDSIZE, "vic", 0 ); - r300->hw.vic.cmd[R300_VIC_CMD_0] = cmdpacket0(R300_VAP_INPUT_CNTL_0, 2); + r300->hw.vic.cmd[R300_VIC_CMD_0] = cmdpacket0(R300_VAP_INPUT_CNTL_0, 2); ALLOC_STATE( unk21DC, always, 2, "unk21DC", 0 ); - r300->hw.unk21DC.cmd[0] = cmdpacket0(0x21DC, 1); + r300->hw.unk21DC.cmd[0] = cmdpacket0(0x21DC, 1); ALLOC_STATE( unk221C, always, 2, "unk221C", 0 ); - r300->hw.unk221C.cmd[0] = cmdpacket0(R300_VAP_UNKNOWN_221C, 1); + r300->hw.unk221C.cmd[0] = cmdpacket0(R300_VAP_UNKNOWN_221C, 1); ALLOC_STATE( unk2220, always, 5, "unk2220", 0 ); - r300->hw.unk2220.cmd[0] = cmdpacket0(0x2220, 4); + r300->hw.unk2220.cmd[0] = cmdpacket0(0x2220, 4); ALLOC_STATE( unk2288, always, 2, "unk2288", 0 ); - r300->hw.unk2288.cmd[0] = cmdpacket0(R300_VAP_UNKNOWN_2288, 1); + r300->hw.unk2288.cmd[0] = cmdpacket0(R300_VAP_UNKNOWN_2288, 1); ALLOC_STATE( vof, always, R300_VOF_CMDSIZE, "vof", 0 ); - r300->hw.vof.cmd[R300_VOF_CMD_0] = cmdpacket0(R300_VAP_OUTPUT_VTX_FMT_0, 2); - ALLOC_STATE( pvs, always, R300_PVS_CMDSIZE, "pvs", 0 ); - r300->hw.pvs.cmd[R300_PVS_CMD_0] = cmdpacket0(R300_VAP_PVS_CNTL_1, 3); + r300->hw.vof.cmd[R300_VOF_CMD_0] = cmdpacket0(R300_VAP_OUTPUT_VTX_FMT_0, 2); + + if (has_tcl) { + ALLOC_STATE( pvs, always, R300_PVS_CMDSIZE, "pvs", 0 ); + r300->hw.pvs.cmd[R300_PVS_CMD_0] = cmdpacket0(R300_VAP_PVS_CNTL_1, 3); + } + ALLOC_STATE( gb_enable, always, 2, "gb_enable", 0 ); r300->hw.gb_enable.cmd[0] = cmdpacket0(R300_GB_ENABLE, 1); ALLOC_STATE( gb_misc, always, R300_GB_MISC_CMDSIZE, "gb_misc", 0 ); @@ -407,51 +415,54 @@ void r300InitCmdBuf(r300ContextPtr r300) ALLOC_STATE( zs, always, R300_ZS_CMDSIZE, "zstencil", 0 ); r300->hw.zs.cmd[R300_ZS_CMD_0] = cmdpacket0(R300_RB3D_ZSTENCIL_CNTL_0, 3); ALLOC_STATE( zstencil_format, always, 5, "zstencil_format", 0 ); - r300->hw.zstencil_format.cmd[0] = cmdpacket0(R300_RB3D_ZSTENCIL_FORMAT, 4); + r300->hw.zstencil_format.cmd[0] = cmdpacket0(R300_RB3D_ZSTENCIL_FORMAT, 4); ALLOC_STATE( zb, always, R300_ZB_CMDSIZE, "zb", 0 ); - r300->hw.zb.cmd[R300_ZB_CMD_0] = cmdpacket0(R300_RB3D_DEPTHOFFSET, 2); + r300->hw.zb.cmd[R300_ZB_CMD_0] = cmdpacket0(R300_RB3D_DEPTHOFFSET, 2); ALLOC_STATE( unk4F28, always, 2, "unk4F28", 0 ); - r300->hw.unk4F28.cmd[0] = cmdpacket0(0x4F28, 1); + r300->hw.unk4F28.cmd[0] = cmdpacket0(0x4F28, 1); ALLOC_STATE( unk4F30, always, 3, "unk4F30", 0 ); - r300->hw.unk4F30.cmd[0] = cmdpacket0(0x4F30, 2); + r300->hw.unk4F30.cmd[0] = cmdpacket0(0x4F30, 2); ALLOC_STATE( unk4F44, always, 2, "unk4F44", 0 ); - r300->hw.unk4F44.cmd[0] = cmdpacket0(0x4F44, 1); + r300->hw.unk4F44.cmd[0] = cmdpacket0(0x4F44, 1); ALLOC_STATE( unk4F54, always, 2, "unk4F54", 0 ); - r300->hw.unk4F54.cmd[0] = cmdpacket0(0x4F54, 1); - - ALLOC_STATE( vpi, vpu, R300_VPI_CMDSIZE, "vpi", 0 ); - r300->hw.vpi.cmd[R300_VPI_CMD_0] = cmdvpu(R300_PVS_UPLOAD_PROGRAM, 0); - ALLOC_STATE( vpp, vpu, R300_VPP_CMDSIZE, "vpp", 0 ); - r300->hw.vpp.cmd[R300_VPP_CMD_0] = cmdvpu(R300_PVS_UPLOAD_PARAMETERS, 0); - ALLOC_STATE( vps, vpu, R300_VPS_CMDSIZE, "vps", 0 ); - r300->hw.vps.cmd[R300_VPS_CMD_0] = cmdvpu(R300_PVS_UPLOAD_POINTSIZE, 1); + r300->hw.unk4F54.cmd[0] = cmdpacket0(0x4F54, 1); + + /* VPU only on TCL */ + if (has_tcl) { + ALLOC_STATE( vpi, vpu, R300_VPI_CMDSIZE, "vpi", 0 ); + r300->hw.vpi.cmd[R300_VPI_CMD_0] = cmdvpu(R300_PVS_UPLOAD_PROGRAM, 0); + ALLOC_STATE( vpp, vpu, R300_VPP_CMDSIZE, "vpp", 0 ); + r300->hw.vpp.cmd[R300_VPP_CMD_0] = cmdvpu(R300_PVS_UPLOAD_PARAMETERS, 0); + ALLOC_STATE( vps, vpu, R300_VPS_CMDSIZE, "vps", 0 ); + r300->hw.vps.cmd[R300_VPS_CMD_0] = cmdvpu(R300_PVS_UPLOAD_POINTSIZE, 1); + } /* Textures */ ALLOC_STATE( tex.filter, variable, mtu+1, "tex_filter", 0 ); - r300->hw.tex.filter.cmd[R300_TEX_CMD_0] = cmdpacket0(R300_TX_FILTER_0, 0); + r300->hw.tex.filter.cmd[R300_TEX_CMD_0] = cmdpacket0(R300_TX_FILTER_0, 0); ALLOC_STATE( tex.filter_1, variable, mtu+1, "tex_filter_1", 0 ); - r300->hw.tex.filter_1.cmd[R300_TEX_CMD_0] = cmdpacket0(R300_TX_FILTER1_0, 0); - + r300->hw.tex.filter_1.cmd[R300_TEX_CMD_0] = cmdpacket0(R300_TX_FILTER1_0, 0); + ALLOC_STATE( tex.size, variable, mtu+1, "tex_size", 0 ); - r300->hw.tex.size.cmd[R300_TEX_CMD_0] = cmdpacket0(R300_TX_SIZE_0, 0); + r300->hw.tex.size.cmd[R300_TEX_CMD_0] = cmdpacket0(R300_TX_SIZE_0, 0); ALLOC_STATE( tex.format, variable, mtu+1, "tex_format", 0 ); - r300->hw.tex.format.cmd[R300_TEX_CMD_0] = cmdpacket0(R300_TX_FORMAT_0, 0); + r300->hw.tex.format.cmd[R300_TEX_CMD_0] = cmdpacket0(R300_TX_FORMAT_0, 0); ALLOC_STATE( tex.pitch, variable, mtu+1, "tex_pitch", 0 ); - r300->hw.tex.pitch.cmd[R300_TEX_CMD_0] = cmdpacket0(R300_TX_PITCH_0, 0); - + r300->hw.tex.pitch.cmd[R300_TEX_CMD_0] = cmdpacket0(R300_TX_PITCH_0, 0); + ALLOC_STATE( tex.offset, variable, mtu+1, "tex_offset", 0 ); - r300->hw.tex.offset.cmd[R300_TEX_CMD_0] = cmdpacket0(R300_TX_OFFSET_0, 0); - + r300->hw.tex.offset.cmd[R300_TEX_CMD_0] = cmdpacket0(R300_TX_OFFSET_0, 0); + ALLOC_STATE( tex.chroma_key, variable, mtu+1, "tex_chroma_key", 0 ); - r300->hw.tex.chroma_key.cmd[R300_TEX_CMD_0] = cmdpacket0(R300_TX_CHROMA_KEY_0, 0); - + r300->hw.tex.chroma_key.cmd[R300_TEX_CMD_0] = cmdpacket0(R300_TX_CHROMA_KEY_0, 0); + ALLOC_STATE( tex.border_color, variable, mtu+1, "tex_border_color", 0 ); - r300->hw.tex.border_color.cmd[R300_TEX_CMD_0] = cmdpacket0(R300_TX_BORDER_COLOR_0, 0); - - + r300->hw.tex.border_color.cmd[R300_TEX_CMD_0] = cmdpacket0(R300_TX_BORDER_COLOR_0, 0); + + /* Setup the atom linked list */ make_empty_list(&r300->hw.atomlist); r300->hw.atomlist.name = "atom-list"; @@ -469,7 +480,9 @@ void r300InitCmdBuf(r300ContextPtr r300) insert_at_tail(&r300->hw.atomlist, &r300->hw.unk2220); insert_at_tail(&r300->hw.atomlist, &r300->hw.unk2288); insert_at_tail(&r300->hw.atomlist, &r300->hw.vof); - insert_at_tail(&r300->hw.atomlist, &r300->hw.pvs); + + if (has_tcl) + insert_at_tail(&r300->hw.atomlist, &r300->hw.pvs); insert_at_tail(&r300->hw.atomlist, &r300->hw.gb_enable); insert_at_tail(&r300->hw.atomlist, &r300->hw.gb_misc); insert_at_tail(&r300->hw.atomlist, &r300->hw.txe); @@ -520,9 +533,11 @@ void r300InitCmdBuf(r300ContextPtr r300) insert_at_tail(&r300->hw.atomlist, &r300->hw.unk4F44); insert_at_tail(&r300->hw.atomlist, &r300->hw.unk4F54); - insert_at_tail(&r300->hw.atomlist, &r300->hw.vpi); - insert_at_tail(&r300->hw.atomlist, &r300->hw.vpp); - insert_at_tail(&r300->hw.atomlist, &r300->hw.vps); + if (has_tcl) { + insert_at_tail(&r300->hw.atomlist, &r300->hw.vpi); + insert_at_tail(&r300->hw.atomlist, &r300->hw.vpp); + insert_at_tail(&r300->hw.atomlist, &r300->hw.vps); + } insert_at_tail(&r300->hw.atomlist, &r300->hw.tex.filter); insert_at_tail(&r300->hw.atomlist, &r300->hw.tex.filter_1); diff --git a/src/mesa/drivers/dri/r300/r300_ioctl.c b/src/mesa/drivers/dri/r300/r300_ioctl.c index 11e2d42e494..41774155213 100644 --- a/src/mesa/drivers/dri/r300/r300_ioctl.c +++ b/src/mesa/drivers/dri/r300/r300_ioctl.c @@ -179,8 +179,11 @@ static void r300EmitClearState(GLcontext * ctx) int cmd_reserved = 0; int cmd_written = 0; drm_radeon_cmd_header_t *cmd = NULL; - - + int has_tcl = 1; + + if (!(r300->radeon.radeonScreen->chip_flags & RADEON_CHIPSET_TCL)) + has_tcl = 0; + R300_STATECHANGE(r300, vir[0]); reg_start(R300_VAP_INPUT_ROUTE_0_0, 0); e32(0x21030003); @@ -279,26 +282,28 @@ static void r300EmitClearState(GLcontext * ctx) reg_start(R300_PFS_INSTR3_0, 0); e32(FP_SELA(0,NO,W,FP_TMP(0),0,0)); - - R300_STATECHANGE(r300, pvs); - reg_start(R300_VAP_PVS_CNTL_1, 2); - e32((0 << R300_PVS_CNTL_1_PROGRAM_START_SHIFT) | - (0 << R300_PVS_CNTL_1_POS_END_SHIFT) | - (1 << R300_PVS_CNTL_1_PROGRAM_END_SHIFT)); - e32(0); - e32(1 << R300_PVS_CNTL_3_PROGRAM_UNKNOWN_SHIFT); - - R300_STATECHANGE(r300, vpi); - vsf_start_fragment(0x0, 8); - e32(VP_OUT(ADD,OUT,0,XYZW)); - e32(VP_IN(IN,0)); - e32(VP_ZERO()); - e32(0); - - e32(VP_OUT(ADD,OUT,1,XYZW)); - e32(VP_IN(IN,1)); - e32(VP_ZERO()); - e32(0); + + if (has_tcl) { + R300_STATECHANGE(r300, pvs); + reg_start(R300_VAP_PVS_CNTL_1, 2); + e32((0 << R300_PVS_CNTL_1_PROGRAM_START_SHIFT) | + (0 << R300_PVS_CNTL_1_POS_END_SHIFT) | + (1 << R300_PVS_CNTL_1_PROGRAM_END_SHIFT)); + e32(0); + e32(1 << R300_PVS_CNTL_3_PROGRAM_UNKNOWN_SHIFT); + + R300_STATECHANGE(r300, vpi); + vsf_start_fragment(0x0, 8); + e32(VP_OUT(ADD,OUT,0,XYZW)); + e32(VP_IN(IN,0)); + e32(VP_ZERO()); + e32(0); + + e32(VP_OUT(ADD,OUT,1,XYZW)); + e32(VP_IN(IN,1)); + e32(VP_ZERO()); + e32(0); + } /*reg_start(0x4500,0); e32(2560-1);*/ diff --git a/src/mesa/drivers/dri/r300/r300_state.c b/src/mesa/drivers/dri/r300/r300_state.c index 870d683f004..b941af19966 100644 --- a/src/mesa/drivers/dri/r300/r300_state.c +++ b/src/mesa/drivers/dri/r300/r300_state.c @@ -1660,18 +1660,7 @@ void r300SetupVertexShader(r300ContextPtr rmesa) return ; } -/* This needs to be replaced by vertex shader generation code */ - - -#if 0 - /* textures enabled ? */ - if(rmesa->state.texture.tc_count>0){ - rmesa->state.vertex_shader=SINGLE_TEXTURE_VERTEX_SHADER; - } else { - rmesa->state.vertex_shader=FLAT_COLOR_VERTEX_SHADER; - } -#endif - + /* This needs to be replaced by vertex shader generation code */ r300GenerateSimpleVertexShader(rmesa); rmesa->state.vertex_shader.matrix[0].length=16; @@ -1805,7 +1794,8 @@ void r300UpdateShaderStates(r300ContextPtr rmesa) r300SetupPixelShader(rmesa); r300_setup_textures(ctx); - r300SetupVertexShader(rmesa); + if ((rmesa->radeon.radeonScreen->chip_flags & RADEON_CHIPSET_TCL)) + r300SetupVertexShader(rmesa); r300_setup_rs_unit(ctx); } @@ -1938,6 +1928,10 @@ static void r300InvalidateState(GLcontext * ctx, GLuint new_state) void r300ResetHwState(r300ContextPtr r300) { GLcontext* ctx = r300->radeon.glCtx; + int has_tcl = 1; + + if (!(r300->radeon.radeonScreen->chip_flags & RADEON_CHIPSET_TCL)) + has_tcl = 0; if (RADEON_DEBUG & DEBUG_STATE) fprintf(stderr, "%s\n", __FUNCTION__); @@ -2005,7 +1999,7 @@ void r300ResetHwState(r300ContextPtr r300) /* Initialize magic registers TODO : learn what they really do, or get rid of those we don't have to touch */ - if (!(r300->radeon.radeonScreen->chip_flags & RADEON_CHIPSET_TCL)) + if (!has_tcl) r300->hw.vap_cntl.cmd[1] = 0x0014045a; else r300->hw.vap_cntl.cmd[1] = 0x0030045A; //0x0030065a /* Dangerous */ @@ -2026,7 +2020,7 @@ void r300ResetHwState(r300ContextPtr r300) r300->hw.vap_cntl_status.cmd[1] = 0x00000002; /* disable VAP/TCL on non-TCL capable chips */ - if (!(r300->radeon.radeonScreen->chip_flags & RADEON_CHIPSET_TCL)) + if (!has_tcl) r300->hw.vap_cntl_status.cmd[1] |= R300_VAP_TCL_BYPASS; #if 0 /* Done in setup routing */ @@ -2272,10 +2266,12 @@ void r300ResetHwState(r300ContextPtr r300) r300->hw.vpp.cmd[i] = 0; #endif - r300->hw.vps.cmd[R300_VPS_ZERO_0] = 0; - r300->hw.vps.cmd[R300_VPS_ZERO_1] = 0; - r300->hw.vps.cmd[R300_VPS_POINTSIZE] = r300PackFloat32(1.0); - r300->hw.vps.cmd[R300_VPS_ZERO_3] = 0; + if (has_tcl) { + r300->hw.vps.cmd[R300_VPS_ZERO_0] = 0; + r300->hw.vps.cmd[R300_VPS_ZERO_1] = 0; + r300->hw.vps.cmd[R300_VPS_POINTSIZE] = r300PackFloat32(1.0); + r300->hw.vps.cmd[R300_VPS_ZERO_3] = 0; + } //END: TODO r300->hw.all_dirty = GL_TRUE; -- cgit v1.2.3 From fb1d22d23d0f2db518f10e6e1aeaea357de61cd9 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Sat, 14 Apr 2007 17:42:59 +1000 Subject: r300: remove unneeded semicolon from macro --- src/mesa/drivers/dri/r300/r300_emit.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_emit.h b/src/mesa/drivers/dri/r300/r300_emit.h index 1101a3545a0..16ea2c66419 100644 --- a/src/mesa/drivers/dri/r300/r300_emit.h +++ b/src/mesa/drivers/dri/r300/r300_emit.h @@ -162,7 +162,7 @@ static __inline__ uint32_t cmdpacify(void) cmd_written, cmd_reserved); \ exit(-1); \ } \ - } while(0); + } while(0) #define efloat(f) e32(r300PackFloat32(f)) -- cgit v1.2.3 From 8d8a3cc39816168e5f04a668ae184cafe64d4fd2 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Sat, 14 Apr 2007 17:44:33 +1000 Subject: r300: emit different clear paths for non-TCL, this gets the clear color correct --- src/mesa/drivers/dri/r300/r300_ioctl.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_ioctl.c b/src/mesa/drivers/dri/r300/r300_ioctl.c index 41774155213..90ac9881e8f 100644 --- a/src/mesa/drivers/dri/r300/r300_ioctl.c +++ b/src/mesa/drivers/dri/r300/r300_ioctl.c @@ -186,7 +186,10 @@ static void r300EmitClearState(GLcontext * ctx) R300_STATECHANGE(r300, vir[0]); reg_start(R300_VAP_INPUT_ROUTE_0_0, 0); - e32(0x21030003); + if (!has_tcl) + e32(0x22030003); + else + e32(0x21030003); /* disable fog */ R300_STATECHANGE(r300, fogs); @@ -201,7 +204,17 @@ static void r300EmitClearState(GLcontext * ctx) reg_start(R300_VAP_INPUT_CNTL_0, 1); e32(0x00000001); e32(0x00000405); - + + if (!has_tcl) { + /* comes from fglrx startup of clear */ + reg_start(R300_SE_VTE_CNTL, 1); + e32(0x043f); + e32(0x8); + + reg_start(0x21dc, 0); + e32(0xaaaaaaaa); + } + R300_STATECHANGE(r300, vof); reg_start(R300_VAP_OUTPUT_VTX_FMT_0, 1); e32(R300_VAP_OUTPUT_VTX_FMT_0__POS_PRESENT | R300_VAP_OUTPUT_VTX_FMT_0__COLOR_PRESENT); -- cgit v1.2.3 From 216eb81c53908c9ac774a378425691aa66205a88 Mon Sep 17 00:00:00 2001 From: Brian Date: Sat, 14 Apr 2007 08:09:12 -0600 Subject: set osmesa renderbuffer refcount=1 upon creation, free renderbuffer in OSMesaDestroyContext() --- src/mesa/drivers/osmesa/osmesa.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/osmesa/osmesa.c b/src/mesa/drivers/osmesa/osmesa.c index 3d7c8509ba3..ad8b20283ce 100644 --- a/src/mesa/drivers/osmesa/osmesa.c +++ b/src/mesa/drivers/osmesa/osmesa.c @@ -1,8 +1,8 @@ /* * Mesa 3-D graphics library - * Version: 6.5.1 + * Version: 6.5.3 * - * Copyright (C) 1999-2006 Brian Paul All Rights Reserved. + * Copyright (C) 1999-2007 Brian Paul All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -1041,6 +1041,7 @@ new_osmesa_renderbuffer(GLcontext *ctx, GLenum format, GLenum type) const GLuint name = 0; struct gl_renderbuffer *rb = _mesa_new_renderbuffer(ctx, name); if (rb) { + rb->RefCount = 1; rb->Delete = osmesa_delete_renderbuffer; rb->AllocStorage = osmesa_renderbuffer_storage; @@ -1237,6 +1238,7 @@ OSMesaCreateContextExt( GLenum format, GLint depthBits, GLint stencilBits, /* create front color buffer in user-provided memory (no back buffer) */ osmesa->rb = new_osmesa_renderbuffer(&osmesa->mesa, format, type); _mesa_add_renderbuffer(osmesa->gl_buffer, BUFFER_FRONT_LEFT, osmesa->rb); + assert(osmesa->rb->RefCount == 2); _mesa_add_soft_renderbuffers(osmesa->gl_buffer, GL_FALSE, /* color */ @@ -1297,6 +1299,9 @@ GLAPI void GLAPIENTRY OSMesaDestroyContext( OSMesaContext osmesa ) { if (osmesa) { + if (osmesa->rb) + _mesa_reference_renderbuffer(&osmesa->rb, NULL); + _swsetup_DestroyContext( &osmesa->mesa ); _tnl_DestroyContext( &osmesa->mesa ); _vbo_DestroyContext( &osmesa->mesa ); -- cgit v1.2.3 From da56df9d722a2eb8223434d130436bcb6ea47188 Mon Sep 17 00:00:00 2001 From: Thomas Hellstrom Date: Mon, 16 Apr 2007 16:04:12 +0200 Subject: Make sure we are locked when creating drm buffer objects. Don't place buffer objects on unfenced list when newly created. Fix a buffer object wait-for-idle deadlock. --- src/mesa/drivers/dri/common/dri_bufmgr.c | 12 +++++++++--- src/mesa/drivers/dri/common/dri_drmpool.c | 2 +- src/mesa/drivers/dri/i915tex/intel_batchpool.c | 2 +- src/mesa/drivers/dri/i915tex/intel_buffer_objects.c | 4 ++++ src/mesa/drivers/dri/i915tex/intel_regions.c | 8 ++++++++ src/mesa/drivers/dri/i915tex/intel_screen.c | 14 ++++++++++++++ 6 files changed, 37 insertions(+), 5 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/common/dri_bufmgr.c b/src/mesa/drivers/dri/common/dri_bufmgr.c index 65d65459657..eaa4fb09c70 100644 --- a/src/mesa/drivers/dri/common/dri_bufmgr.c +++ b/src/mesa/drivers/dri/common/dri_bufmgr.c @@ -190,11 +190,16 @@ driBOKernel(struct _DriBufferObject *buf) void driBOWaitIdle(struct _DriBufferObject *buf, int lazy) { - assert(buf->private != NULL); + struct _DriBufferPool *pool; + void *priv; _glthread_LOCK_MUTEX(buf->mutex); - BM_CKFATAL(buf->pool->waitIdle(buf->pool, buf->private, lazy)); + pool = buf->pool; + priv = buf->private; _glthread_UNLOCK_MUTEX(buf->mutex); + + assert(priv != NULL); + BM_CKFATAL(buf->pool->waitIdle(pool, priv, lazy)); } void * @@ -296,7 +301,8 @@ driBOData(struct _DriBufferObject *buf, pool->destroy(pool, buf->private); if (!flags) flags = buf->flags; - buf->private = pool->create(pool, size, flags, 0, buf->alignment); + buf->private = pool->create(pool, size, flags, DRM_BO_HINT_DONT_FENCE, + buf->alignment); if (!buf->private) BM_CKFATAL(-ENOMEM); BM_CKFATAL(pool->map(pool, buf->private, diff --git a/src/mesa/drivers/dri/common/dri_drmpool.c b/src/mesa/drivers/dri/common/dri_drmpool.c index b5b324be500..878a148b397 100644 --- a/src/mesa/drivers/dri/common/dri_drmpool.c +++ b/src/mesa/drivers/dri/common/dri_drmpool.c @@ -185,7 +185,7 @@ pool_setstatic(struct _DriBufferPool *pool, unsigned long offset, return NULL; ret = drmBOCreate(pool->fd, offset, size, 0, NULL, drm_bo_type_fake, - flags, 0, buf); + flags, DRM_BO_HINT_DONT_FENCE, buf); if (ret) { free(buf); diff --git a/src/mesa/drivers/dri/i915tex/intel_batchpool.c b/src/mesa/drivers/dri/i915tex/intel_batchpool.c index 3c17c50204b..2503b8a62a1 100644 --- a/src/mesa/drivers/dri/i915tex/intel_batchpool.c +++ b/src/mesa/drivers/dri/i915tex/intel_batchpool.c @@ -96,7 +96,7 @@ createBPool(int fd, unsigned long bufSize, unsigned numBufs, unsigned flags, _glthread_INIT_MUTEX(p->mutex); if (drmBOCreate(fd, 0, numBufs * bufSize, 0, NULL, drm_bo_type_dc, - flags, 0, &p->kernelBO)) { + flags, DRM_BO_HINT_DONT_FENCE, &p->kernelBO)) { free(p->bufs); free(p); return NULL; diff --git a/src/mesa/drivers/dri/i915tex/intel_buffer_objects.c b/src/mesa/drivers/dri/i915tex/intel_buffer_objects.c index ba3c7f0c1f7..91c45ad95be 100644 --- a/src/mesa/drivers/dri/i915tex/intel_buffer_objects.c +++ b/src/mesa/drivers/dri/i915tex/intel_buffer_objects.c @@ -76,7 +76,9 @@ intel_bufferobj_release_region(struct intel_context *intel, */ driGenBuffers(intel->intelScreen->regionPool, "buffer object", 1, &intel_obj->buffer, 64, 0, 0); + LOCK_HARDWARE(intel); driBOData(intel_obj->buffer, intel_obj->Base.Size, NULL, 0); + UNLOCK_HARDWARE(intel); } /* Break the COW tie to the region. Both the pbo and the region end @@ -137,7 +139,9 @@ intel_bufferobj_data(GLcontext * ctx, if (intel_obj->region) intel_bufferobj_release_region(intel, intel_obj); + LOCK_HARDWARE(intel); driBOData(intel_obj->buffer, size, data, 0); + UNLOCK_HARDWARE(intel); } diff --git a/src/mesa/drivers/dri/i915tex/intel_regions.c b/src/mesa/drivers/dri/i915tex/intel_regions.c index a114bdf8965..7d19bd07d36 100644 --- a/src/mesa/drivers/dri/i915tex/intel_regions.c +++ b/src/mesa/drivers/dri/i915tex/intel_regions.c @@ -90,6 +90,7 @@ intel_region_alloc(intelScreenPrivate *intelScreen, GLuint cpp, GLuint pitch, GLuint height) { struct intel_region *region = calloc(sizeof(*region), 1); + struct intel_context *intel = intelScreenContext(intelScreen); DBG("%s\n", __FUNCTION__); @@ -107,7 +108,9 @@ intel_region_alloc(intelScreenPrivate *intelScreen, 0, #endif 0); + LOCK_HARDWARE(intel); driBOData(region->buffer, pitch * cpp * height, NULL, 0); + UNLOCK_HARDWARE(intel); return region; } @@ -392,6 +395,8 @@ void intel_region_release_pbo(intelScreenPrivate *intelScreen, struct intel_region *region) { + struct intel_context *intel = intelScreenContext(intelScreen); + assert(region->buffer == region->pbo->buffer); region->pbo->region = NULL; region->pbo = NULL; @@ -400,8 +405,11 @@ intel_region_release_pbo(intelScreenPrivate *intelScreen, driGenBuffers(intelScreen->regionPool, "region", 1, ®ion->buffer, 64, 0, 0); + + LOCK_HARDWARE(intel); driBOData(region->buffer, region->cpp * region->pitch * region->height, NULL, 0); + UNLOCK_HARDWARE(intel); } /* Break the COW tie to the pbo. Both the pbo and the region end up diff --git a/src/mesa/drivers/dri/i915tex/intel_screen.c b/src/mesa/drivers/dri/i915tex/intel_screen.c index 9034ee1b223..87a5aeb17c9 100644 --- a/src/mesa/drivers/dri/i915tex/intel_screen.c +++ b/src/mesa/drivers/dri/i915tex/intel_screen.c @@ -878,9 +878,19 @@ __driCreateNewScreen_20050727(__DRInativeDisplay * dpy, int scrn, static const __DRIversion ddx_expected = { 1, 5, 0 }; static const __DRIversion dri_expected = { 4, 0, 0 }; static const __DRIversion drm_expected = { 1, 7, 0 }; + int tmpContextID; + GLuint tmpContext; dri_interface = interface; + if (!(*dri_interface->createContext)(dpy, modes->screen, + modes->fbconfigID, + &tmpContextID, &tmpContext)) { + fprintf(stderr, "Could not create temporary context.\n"); + return NULL; + } + DRM_LIGHT_LOCK(fd, &((drm_sarea_t *)pSAREA)->lock, tmpContext); + if (!driCheckDriDdxDrmVersions2("i915", dri_version, &dri_expected, ddx_version, &ddx_expected, @@ -892,6 +902,10 @@ __driCreateNewScreen_20050727(__DRInativeDisplay * dpy, int scrn, ddx_version, dri_version, drm_version, frame_buffer, pSAREA, fd, internal_api_version, &intelAPI); + + DRM_UNLOCK(fd, &((drm_sarea_t *)pSAREA)->lock, tmpContext); + (void) (*dri_interface->destroyContext)(dpy, modes->screen, tmpContextID); + if (psp != NULL) { I830DRIPtr dri_priv = (I830DRIPtr) psp->pDevPriv; *driver_modes = intelFillInModes(dri_priv->cpp * 8, -- cgit v1.2.3 From e812a2a484660c87383e7e7d8897a9bcf85cf9cc Mon Sep 17 00:00:00 2001 From: Brian Date: Mon, 16 Apr 2007 09:11:20 -0600 Subject: use b->display instead of b->xm_visual->display to fix some problems detected w/ valgrind --- src/mesa/drivers/x11/xm_buffer.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/x11/xm_buffer.c b/src/mesa/drivers/x11/xm_buffer.c index 10621cb7a15..51d183bb435 100644 --- a/src/mesa/drivers/x11/xm_buffer.c +++ b/src/mesa/drivers/x11/xm_buffer.c @@ -383,18 +383,18 @@ xmesa_delete_framebuffer(struct gl_framebuffer *fb) } if (b->gc) - XMesaFreeGC(b->xm_visual->display, b->gc); + XMesaFreeGC(b->display, b->gc); if (b->cleargc) - XMesaFreeGC(b->xm_visual->display, b->cleargc); + XMesaFreeGC(b->display, b->cleargc); if (b->swapgc) - XMesaFreeGC(b->xm_visual->display, b->swapgc); + XMesaFreeGC(b->display, b->swapgc); - if (b->xm_visual->mesa_visual.doubleBufferMode) { + if (fb->Visual.doubleBufferMode) { /* free back ximage/pixmap/shmregion */ if (b->backxrb->ximage) { #if defined(USE_XSHM) && !defined(XFree86Server) if (b->shm) { - XShmDetach( b->xm_visual->display, &b->shminfo ); + XShmDetach( b->display, &b->shminfo ); XDestroyImage( b->backxrb->ximage ); shmdt( b->shminfo.shmaddr ); } @@ -404,9 +404,9 @@ xmesa_delete_framebuffer(struct gl_framebuffer *fb) b->backxrb->ximage = NULL; } if (b->backxrb->pixmap) { - XMesaFreePixmap( b->xm_visual->display, b->backxrb->pixmap ); + XMesaFreePixmap( b->display, b->backxrb->pixmap ); if (b->xm_visual->hpcr_clear_flag) { - XMesaFreePixmap( b->xm_visual->display, + XMesaFreePixmap( b->display, b->xm_visual->hpcr_clear_pixmap ); XMesaDestroyImage( b->xm_visual->hpcr_clear_ximage ); } -- cgit v1.2.3 From 96e05da1c959b3dad7250ccfad1bf540bbec2fbf Mon Sep 17 00:00:00 2001 From: Brian Date: Mon, 16 Apr 2007 15:15:23 -0600 Subject: remove _tnl_arb_vertex_program_stage --- src/mesa/drivers/dri/i915/intel_context.c | 1 - src/mesa/drivers/dri/i915tex/intel_context.c | 1 - src/mesa/drivers/dri/mga/mga_xmesa.c | 1 - src/mesa/drivers/dri/r200/r200_context.c | 1 - src/mesa/drivers/dri/r300/r300_context.c | 1 - src/mesa/drivers/dri/tdfx/tdfx_context.c | 6 ------ 6 files changed, 11 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/i915/intel_context.c b/src/mesa/drivers/dri/i915/intel_context.c index d201fcf323a..e1e7cdb7233 100644 --- a/src/mesa/drivers/dri/i915/intel_context.c +++ b/src/mesa/drivers/dri/i915/intel_context.c @@ -196,7 +196,6 @@ static const struct tnl_pipeline_stage *intel_pipeline[] = { &_tnl_texgen_stage, &_tnl_texture_transform_stage, &_tnl_point_attenuation_stage, - &_tnl_arb_vertex_program_stage, &_tnl_vertex_program_stage, #if 1 &_intel_render_stage, /* ADD: unclipped rastersetup-to-dma */ diff --git a/src/mesa/drivers/dri/i915tex/intel_context.c b/src/mesa/drivers/dri/i915tex/intel_context.c index 6a3456e154b..c6c66e26cae 100644 --- a/src/mesa/drivers/dri/i915tex/intel_context.c +++ b/src/mesa/drivers/dri/i915tex/intel_context.c @@ -209,7 +209,6 @@ static const struct tnl_pipeline_stage *intel_pipeline[] = { &_tnl_texgen_stage, &_tnl_texture_transform_stage, &_tnl_point_attenuation_stage, - &_tnl_arb_vertex_program_stage, &_tnl_vertex_program_stage, #if 1 &_intel_render_stage, /* ADD: unclipped rastersetup-to-dma */ diff --git a/src/mesa/drivers/dri/mga/mga_xmesa.c b/src/mesa/drivers/dri/mga/mga_xmesa.c index 5b65d1a3028..f4e651afa0c 100644 --- a/src/mesa/drivers/dri/mga/mga_xmesa.c +++ b/src/mesa/drivers/dri/mga/mga_xmesa.c @@ -372,7 +372,6 @@ static const struct tnl_pipeline_stage *mga_pipeline[] = { &_tnl_fog_coordinate_stage, &_tnl_texgen_stage, &_tnl_texture_transform_stage, - &_tnl_arb_vertex_program_stage, &_tnl_vertex_program_stage, /* REMOVE: point attenuation stage */ diff --git a/src/mesa/drivers/dri/r200/r200_context.c b/src/mesa/drivers/dri/r200/r200_context.c index 3abcdf9e183..0507eb86e69 100644 --- a/src/mesa/drivers/dri/r200/r200_context.c +++ b/src/mesa/drivers/dri/r200/r200_context.c @@ -192,7 +192,6 @@ static const struct tnl_pipeline_stage *r200_pipeline[] = { &_tnl_texgen_stage, &_tnl_texture_transform_stage, &_tnl_point_attenuation_stage, - &_tnl_arb_vertex_program_stage, &_tnl_vertex_program_stage, /* Try again to go to tcl? * - no good for asymmetric-twoside (do with multipass) diff --git a/src/mesa/drivers/dri/r300/r300_context.c b/src/mesa/drivers/dri/r300/r300_context.c index 1f8d95078fb..58350fe0ab4 100644 --- a/src/mesa/drivers/dri/r300/r300_context.c +++ b/src/mesa/drivers/dri/r300/r300_context.c @@ -148,7 +148,6 @@ static const struct tnl_pipeline_stage *r300_pipeline[] = { &_tnl_fog_coordinate_stage, &_tnl_texgen_stage, &_tnl_texture_transform_stage, - &_tnl_arb_vertex_program_stage, &_tnl_vertex_program_stage, /* Try again to go to tcl? diff --git a/src/mesa/drivers/dri/tdfx/tdfx_context.c b/src/mesa/drivers/dri/tdfx/tdfx_context.c index a9163f49a8f..b4eea2566f6 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_context.c +++ b/src/mesa/drivers/dri/tdfx/tdfx_context.c @@ -165,12 +165,6 @@ static const struct tnl_pipeline_stage *tdfx_pipeline[] = { &_tnl_texgen_stage, &_tnl_texture_transform_stage, &_tnl_point_attenuation_stage, -#if 0 -#if defined(FEATURE_NV_vertex_program) || defined(FEATURE_ARB_vertex_program) - &_tnl_arb_vertex_program_stage, - &_tnl_vertex_program_stage, -#endif -#endif &_tnl_render_stage, 0, }; -- cgit v1.2.3 From dfee7619d433a8b27fb5573d92873f9355ca6a5d Mon Sep 17 00:00:00 2001 From: Brian Date: Mon, 16 Apr 2007 15:15:53 -0600 Subject: remove _tnl_arb_vertex_program_stage --- src/mesa/drivers/glide/fxdd.c | 1 - 1 file changed, 1 deletion(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/glide/fxdd.c b/src/mesa/drivers/glide/fxdd.c index 43d3cd94051..4e56f7bde50 100644 --- a/src/mesa/drivers/glide/fxdd.c +++ b/src/mesa/drivers/glide/fxdd.c @@ -1663,7 +1663,6 @@ static const struct tnl_pipeline_stage *fx_pipeline[] = { &_tnl_texture_transform_stage, &_tnl_point_attenuation_stage, #if defined(FEATURE_NV_vertex_program) || defined(FEATURE_ARB_vertex_program) - &_tnl_arb_vertex_program_stage, &_tnl_vertex_program_stage, #endif &_tnl_render_stage, -- cgit v1.2.3 From 5888010362debf0f32c1596c9082a16048b29f39 Mon Sep 17 00:00:00 2001 From: Brian Date: Mon, 16 Apr 2007 17:16:46 -0600 Subject: Fix glActiveStencilFaceEXT dispatch problem (bug 10523). OK, _all_ extensions that might get enabled by the driver need to be in the card_extensions[] list. driInitExtensions() is called at least twice: first during screen creation, then once for each context that's created. The first call sets up the dispatch table. The second call just sets the extension enable/disable flags. --- src/mesa/drivers/dri/r300/r300_context.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_context.c b/src/mesa/drivers/dri/r300/r300_context.c index 58350fe0ab4..c362b027e99 100644 --- a/src/mesa/drivers/dri/r300/r300_context.c +++ b/src/mesa/drivers/dri/r300/r300_context.c @@ -124,11 +124,8 @@ const struct dri_extension card_extensions[] = { {"GL_NV_blend_square", NULL}, {"GL_NV_vertex_program", GL_NV_vertex_program_functions}, {"GL_SGIS_generate_mipmap", NULL}, - {NULL, NULL} -}; - -const struct dri_extension stencil_two_side[] = { {"GL_EXT_stencil_two_side", GL_EXT_stencil_two_side_functions}, + {NULL, NULL} }; extern struct tnl_pipeline_stage _r300_render_stage; @@ -334,8 +331,8 @@ GLboolean r300CreateContext(const __GLcontextModes * glVisual, driInitExtensions(ctx, card_extensions, GL_TRUE); - if (driQueryOptionb(&r300->radeon.optionCache, "disable_stencil_two_side") == 0) - driInitSingleExtension(ctx, stencil_two_side); + if (driQueryOptionb(&r300->radeon.optionCache, "disable_stencil_two_side")) + _mesa_disable_extension(ctx, "GL_EXT_stencil_two_side"); if (r300->radeon.glCtx->Mesa_DXTn && !driQueryOptionb (&r300->radeon.optionCache, "disable_s3tc")) { _mesa_enable_extension( ctx, "GL_EXT_texture_compression_s3tc" ); -- cgit v1.2.3 From 34ca2be76920db75a31abcccde30570b659fed19 Mon Sep 17 00:00:00 2001 From: Brian Date: Mon, 16 Apr 2007 17:18:39 -0600 Subject: move GL_EXT_stencil_two_side into alphabetical position --- src/mesa/drivers/dri/r300/r300_context.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_context.c b/src/mesa/drivers/dri/r300/r300_context.c index c362b027e99..c58cef65476 100644 --- a/src/mesa/drivers/dri/r300/r300_context.c +++ b/src/mesa/drivers/dri/r300/r300_context.c @@ -108,6 +108,7 @@ const struct dri_extension card_extensions[] = { // {"GL_EXT_fog_coord", GL_EXT_fog_coord_functions }, {"GL_EXT_gpu_program_parameters", GL_EXT_gpu_program_parameters_functions}, {"GL_EXT_secondary_color", GL_EXT_secondary_color_functions}, + {"GL_EXT_stencil_two_side", GL_EXT_stencil_two_side_functions}, {"GL_EXT_stencil_wrap", NULL}, {"GL_EXT_texture_edge_clamp", NULL}, {"GL_EXT_texture_env_combine", NULL}, @@ -124,7 +125,6 @@ const struct dri_extension card_extensions[] = { {"GL_NV_blend_square", NULL}, {"GL_NV_vertex_program", GL_NV_vertex_program_functions}, {"GL_SGIS_generate_mipmap", NULL}, - {"GL_EXT_stencil_two_side", GL_EXT_stencil_two_side_functions}, {NULL, NULL} }; -- cgit v1.2.3 From 4a7c45118d5f122a4550f259424b6820fe3945eb Mon Sep 17 00:00:00 2001 From: Brian Date: Mon, 16 Apr 2007 17:36:39 -0600 Subject: just clean-ups --- src/mesa/drivers/dri/i915/i915_state.c | 47 +++++++++++++------------- src/mesa/drivers/dri/i915tex/i915_state.c | 56 +++++++++++++------------------ 2 files changed, 48 insertions(+), 55 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/i915/i915_state.c b/src/mesa/drivers/dri/i915/i915_state.c index 5e00e6597b0..0d5ca32969a 100644 --- a/src/mesa/drivers/dri/i915/i915_state.c +++ b/src/mesa/drivers/dri/i915/i915_state.c @@ -541,17 +541,19 @@ void i915_update_fog( GLcontext *ctx ) else { enabled = ctx->Fog.Enabled; mode = ctx->Fog.Mode; - - try_pixel_fog = (ctx->Fog.FogCoordinateSource == GL_FRAGMENT_DEPTH_EXT && - ctx->Hint.Fog == GL_NICEST && - 0); /* XXX - DISABLE -- Need ortho fallback */ +#if 0 + /* XXX - DISABLED -- Need ortho fallback */ + try_pixel_fog = (ctx->Fog.FogCoordinateSource == GL_FRAGMENT_DEPTH_EXT + &&ctx->Hint.Fog == GL_NICEST); +#else + try_pixel_fog = 0; +#endif } if (!enabled) { i915->vertex_fog = I915_FOG_NONE; } else if (try_pixel_fog) { - I915_STATECHANGE(i915, I915_UPLOAD_FOG); i915->state.Fog[I915_FOGREG_MODE1] &= ~FMC1_FOGFUNC_MASK; i915->vertex_fog = I915_FOG_PIXEL; @@ -567,8 +569,8 @@ void i915_update_fog( GLcontext *ctx ) i915->vertex_fog = I915_FOG_VERTEX; } else { - GLfloat c1 = ctx->Fog.End/(ctx->Fog.End-ctx->Fog.Start); - GLfloat c2 = 1.0/(ctx->Fog.End-ctx->Fog.Start); + GLfloat c2 = 1.0 / (ctx->Fog.End - ctx->Fog.Start); + GLfloat c1 = ctx->Fog.End * c2; i915->state.Fog[I915_FOGREG_MODE1] &= ~FMC1_C1_MASK; i915->state.Fog[I915_FOGREG_MODE1] |= FMC1_FOGFUNC_PIXEL_LINEAR; @@ -576,10 +578,11 @@ void i915_update_fog( GLcontext *ctx ) ((GLuint)(c1 * FMC1_C1_ONE)) & FMC1_C1_MASK; if (i915->state.Fog[I915_FOGREG_MODE1] & FMC1_FOGINDEX_Z) { - i915->state.Fog[I915_FOGREG_MODE2] = (GLuint)(c2 * FMC2_C2_ONE); + i915->state.Fog[I915_FOGREG_MODE2] + = (GLuint)(c2 * FMC2_C2_ONE); } else { - union { float f; int i; } fi; + fi_type fi; fi.f = c2; i915->state.Fog[I915_FOGREG_MODE2] = fi.i; } @@ -602,24 +605,22 @@ void i915_update_fog( GLcontext *ctx ) i915->vertex_fog = I915_FOG_VERTEX; } - { - I915_STATECHANGE(i915, I915_UPLOAD_CTX); - I915_ACTIVESTATE(i915, I915_UPLOAD_FOG, enabled); - if (enabled) - i915->state.Ctx[I915_CTXREG_LIS5] |= S5_FOG_ENABLE; - else - i915->state.Ctx[I915_CTXREG_LIS5] &= ~S5_FOG_ENABLE; - } + I915_STATECHANGE(i915, I915_UPLOAD_CTX); + I915_ACTIVESTATE(i915, I915_UPLOAD_FOG, enabled); + if (enabled) + i915->state.Ctx[I915_CTXREG_LIS5] |= S5_FOG_ENABLE; + else + i915->state.Ctx[I915_CTXREG_LIS5] &= ~S5_FOG_ENABLE; - /* always enbale pixel fog - * vertex fog use precaculted fog coord will conflict with appended - * fog program + /* Always enable pixel fog. Vertex fog using fog coord will conflict + * with fog code appended onto fragment program. */ _tnl_allow_vertex_fog( ctx, 0 ); _tnl_allow_pixel_fog( ctx, 1 ); } -static void i915Fogfv(GLcontext *ctx, GLenum pname, const GLfloat *param) +static void +i915Fogfv(GLcontext *ctx, GLenum pname, const GLfloat *param) { i915ContextPtr i915 = I915_CONTEXT(ctx); @@ -634,8 +635,8 @@ static void i915Fogfv(GLcontext *ctx, GLenum pname, const GLfloat *param) I915_STATECHANGE(i915, I915_UPLOAD_FOG); if (i915->state.Fog[I915_FOGREG_MODE1] & FMC1_FOGINDEX_Z) { - i915->state.Fog[I915_FOGREG_MODE3] = (GLuint)(ctx->Fog.Density * - FMC3_D_ONE); + i915->state.Fog[I915_FOGREG_MODE3] + = (GLuint)(ctx->Fog.Density * FMC3_D_ONE); } else { union { float f; int i; } fi; diff --git a/src/mesa/drivers/dri/i915tex/i915_state.c b/src/mesa/drivers/dri/i915tex/i915_state.c index 1fafadced02..d3217fa0caa 100644 --- a/src/mesa/drivers/dri/i915tex/i915_state.c +++ b/src/mesa/drivers/dri/i915tex/i915_state.c @@ -563,7 +563,6 @@ i915_update_fog(GLcontext * ctx) if (ctx->FragmentProgram._Active) { /* Pull in static fog state from program */ - mode = ctx->FragmentProgram._Current->FogOption; enabled = (mode != GL_NONE); try_pixel_fog = 0; @@ -571,15 +570,19 @@ i915_update_fog(GLcontext * ctx) else { enabled = ctx->Fog.Enabled; mode = ctx->Fog.Mode; - - try_pixel_fog = (ctx->Fog.FogCoordinateSource == GL_FRAGMENT_DEPTH_EXT && ctx->Hint.Fog == GL_NICEST && 0); /* XXX - DISABLE -- Need ortho fallback */ +#if 0 + /* XXX - DISABLED -- Need ortho fallback */ + try_pixel_fog = (ctx->Fog.FogCoordinateSource == GL_FRAGMENT_DEPTH_EXT + && ctx->Hint.Fog == GL_NICEST); +#else + try_pixel_fog = 0; +#endif } if (!enabled) { i915->vertex_fog = I915_FOG_NONE; } else if (try_pixel_fog) { - I915_STATECHANGE(i915, I915_UPLOAD_FOG); i915->state.Fog[I915_FOGREG_MODE1] &= ~FMC1_FOGFUNC_MASK; i915->vertex_fog = I915_FOG_PIXEL; @@ -591,12 +594,13 @@ i915_update_fog(GLcontext * ctx) * either fallback or append fog instructions to end of * program in the case of linear fog. */ + printf("vertex fog!\n"); i915->state.Fog[I915_FOGREG_MODE1] |= FMC1_FOGFUNC_VERTEX; i915->vertex_fog = I915_FOG_VERTEX; } else { - GLfloat c1 = ctx->Fog.End / (ctx->Fog.End - ctx->Fog.Start); GLfloat c2 = 1.0 / (ctx->Fog.End - ctx->Fog.Start); + GLfloat c1 = ctx->Fog.End * c2; i915->state.Fog[I915_FOGREG_MODE1] &= ~FMC1_C1_MASK; i915->state.Fog[I915_FOGREG_MODE1] |= FMC1_FOGFUNC_PIXEL_LINEAR; @@ -604,15 +608,11 @@ i915_update_fog(GLcontext * ctx) ((GLuint) (c1 * FMC1_C1_ONE)) & FMC1_C1_MASK; if (i915->state.Fog[I915_FOGREG_MODE1] & FMC1_FOGINDEX_Z) { - i915->state.Fog[I915_FOGREG_MODE2] = - (GLuint) (c2 * FMC2_C2_ONE); + i915->state.Fog[I915_FOGREG_MODE2] + = (GLuint) (c2 * FMC2_C2_ONE); } else { - union - { - float f; - int i; - } fi; + fi_type fi; fi.f = c2; i915->state.Fog[I915_FOGREG_MODE2] = fi.i; } @@ -628,26 +628,22 @@ i915_update_fog(GLcontext * ctx) break; } } - else { /* if (i915->vertex_fog != I915_FOG_VERTEX) */ - + else { /* if (i915->vertex_fog != I915_FOG_VERTEX) */ I915_STATECHANGE(i915, I915_UPLOAD_FOG); i915->state.Fog[I915_FOGREG_MODE1] &= ~FMC1_FOGFUNC_MASK; i915->state.Fog[I915_FOGREG_MODE1] |= FMC1_FOGFUNC_VERTEX; i915->vertex_fog = I915_FOG_VERTEX; } - { - I915_STATECHANGE(i915, I915_UPLOAD_CTX); - I915_ACTIVESTATE(i915, I915_UPLOAD_FOG, enabled); - if (enabled) - i915->state.Ctx[I915_CTXREG_LIS5] |= S5_FOG_ENABLE; - else - i915->state.Ctx[I915_CTXREG_LIS5] &= ~S5_FOG_ENABLE; - } + I915_STATECHANGE(i915, I915_UPLOAD_CTX); + I915_ACTIVESTATE(i915, I915_UPLOAD_FOG, enabled); + if (enabled) + i915->state.Ctx[I915_CTXREG_LIS5] |= S5_FOG_ENABLE; + else + i915->state.Ctx[I915_CTXREG_LIS5] &= ~S5_FOG_ENABLE; - /* always enbale pixel fog - * vertex fog use precaculted fog coord will conflict with appended - * fog program + /* Always enable pixel fog. Vertex fog using fog coord will conflict + * with fog code appended onto fragment program. */ _tnl_allow_vertex_fog( ctx, 0 ); _tnl_allow_pixel_fog( ctx, 1 ); @@ -669,15 +665,11 @@ i915Fogfv(GLcontext * ctx, GLenum pname, const GLfloat * param) I915_STATECHANGE(i915, I915_UPLOAD_FOG); if (i915->state.Fog[I915_FOGREG_MODE1] & FMC1_FOGINDEX_Z) { - i915->state.Fog[I915_FOGREG_MODE3] = (GLuint) (ctx->Fog.Density * - FMC3_D_ONE); + i915->state.Fog[I915_FOGREG_MODE3] = + (GLuint) (ctx->Fog.Density * FMC3_D_ONE); } else { - union - { - float f; - int i; - } fi; + fi_type fi; fi.f = ctx->Fog.Density; i915->state.Fog[I915_FOGREG_MODE3] = fi.i; } -- cgit v1.2.3 From 6459adf79b0a3622515d5f2197a791538ca2f342 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Tue, 17 Apr 2007 07:05:15 +0000 Subject: r300: r300_render.c:391: warning: unused variable 'i' --- src/mesa/drivers/dri/r300/r300_render.c | 1 - 1 file changed, 1 deletion(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_render.c b/src/mesa/drivers/dri/r300/r300_render.c index 63b21b9379a..ecd7fead263 100644 --- a/src/mesa/drivers/dri/r300/r300_render.c +++ b/src/mesa/drivers/dri/r300/r300_render.c @@ -388,7 +388,6 @@ int r300Fallback(GLcontext *ctx) struct r300_fragment_program *rp = (struct r300_fragment_program *) (char *)ctx->FragmentProgram._Current; - int i; if (rp) { if (!rp->translated) -- cgit v1.2.3 From 1a9483c95492bee3fbda131181945b6c878bf52f Mon Sep 17 00:00:00 2001 From: Thomas Hellstrom Date: Tue, 17 Apr 2007 15:21:54 +0200 Subject: Defer buffer pool creation to the first context creation. This way we have a hw context so that we can take the hardware lock. Also, at this point, AIGLX isn't locked with the X server context as it is at screen creation. --- src/mesa/drivers/dri/i915tex/intel_context.c | 8 +++ src/mesa/drivers/dri/i915tex/intel_screen.c | 87 ++++++++++++++-------------- src/mesa/drivers/dri/i915tex/intel_screen.h | 3 + 3 files changed, 55 insertions(+), 43 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/i915tex/intel_context.c b/src/mesa/drivers/dri/i915tex/intel_context.c index c6c66e26cae..20b2b41ef24 100644 --- a/src/mesa/drivers/dri/i915tex/intel_context.c +++ b/src/mesa/drivers/dri/i915tex/intel_context.c @@ -346,7 +346,15 @@ intelInitContext(struct intel_context *intel, drmI830Sarea *saPriv = (drmI830Sarea *) (((GLubyte *) sPriv->pSAREA) + intelScreen->sarea_priv_offset); int fthrottle_mode; + GLboolean havePools; + DRM_LIGHT_LOCK(sPriv->fd, &sPriv->pSAREA->lock, driContextPriv->hHWContext); + havePools = intelCreatePools(intelScreen); + DRM_UNLOCK(sPriv->fd, &sPriv->pSAREA->lock, driContextPriv->hHWContext); + + if (!havePools) + return GL_FALSE; + if (!_mesa_initialize_context(&intel->ctx, mesaVis, shareCtx, functions, (void *) intel)) diff --git a/src/mesa/drivers/dri/i915tex/intel_screen.c b/src/mesa/drivers/dri/i915tex/intel_screen.c index 87a5aeb17c9..dd01161b5bb 100644 --- a/src/mesa/drivers/dri/i915tex/intel_screen.c +++ b/src/mesa/drivers/dri/i915tex/intel_screen.c @@ -386,6 +386,45 @@ intelUpdateScreenFromSAREA(intelScreenPrivate * intelScreen, intelPrintSAREA(sarea); } +GLboolean +intelCreatePools(intelScreenPrivate *intelScreen) +{ + unsigned batchPoolSize = 1024*1024; + __DRIscreenPrivate * sPriv = intelScreen->driScrnPriv; + + if (intelScreen->havePools) + return GL_TRUE; + + batchPoolSize /= intelScreen->maxBatchSize; + intelScreen->regionPool = driDRMPoolInit(sPriv->fd); + + if (!intelScreen->regionPool) + return GL_FALSE; + + intelScreen->staticPool = driDRMStaticPoolInit(sPriv->fd); + + if (!intelScreen->staticPool) + return GL_FALSE; + + intelScreen->texPool = intelScreen->regionPool; + + intelScreen->batchPool = driBatchPoolInit(sPriv->fd, + DRM_BO_FLAG_EXE | + DRM_BO_FLAG_MEM_TT | + DRM_BO_FLAG_MEM_LOCAL, + intelScreen->maxBatchSize, + batchPoolSize, 5); + if (!intelScreen->batchPool) { + fprintf(stderr, "Failed to initialize batch pool - possible incorrect agpgart installed\n"); + return GL_FALSE; + } + + intel_recreate_static_regions(intelScreen); + intelScreen->havePools = GL_TRUE; + + return GL_TRUE; +} + static GLboolean intelInitDriver(__DRIscreenPrivate * sPriv) @@ -393,7 +432,6 @@ intelInitDriver(__DRIscreenPrivate * sPriv) intelScreenPrivate *intelScreen; I830DRIPtr gDRIPriv = (I830DRIPtr) sPriv->pDevPriv; drmI830Sarea *sarea; - unsigned batchPoolSize = 1024*1024; PFNGLXSCRENABLEEXTENSIONPROC glx_enable_extension = (PFNGLXSCRENABLEEXTENSIONPROC) (*dri_interface-> @@ -426,7 +464,6 @@ intelInitDriver(__DRIscreenPrivate * sPriv) intelScreen->deviceID = gDRIPriv->deviceID; if (intelScreen->deviceID == PCI_CHIP_I865_G) intelScreen->maxBatchSize = 4096; - batchPoolSize /= intelScreen->maxBatchSize; intelScreen->mem = gDRIPriv->mem; intelScreen->cpp = gDRIPriv->cpp; @@ -517,31 +554,6 @@ intelInitDriver(__DRIscreenPrivate * sPriv) (*glx_enable_extension) (psc, "GLX_SGI_make_current_read"); } - intelScreen->regionPool = driDRMPoolInit(sPriv->fd); - - if (!intelScreen->regionPool) - return GL_FALSE; - - intelScreen->staticPool = driDRMStaticPoolInit(sPriv->fd); - - if (!intelScreen->staticPool) - return GL_FALSE; - - intelScreen->texPool = intelScreen->regionPool; - - intelScreen->batchPool = driBatchPoolInit(sPriv->fd, - DRM_BO_FLAG_EXE | - DRM_BO_FLAG_MEM_TT | - DRM_BO_FLAG_MEM_LOCAL, - intelScreen->maxBatchSize, - batchPoolSize, 5); - if (!intelScreen->batchPool) { - fprintf(stderr, "Failed to initialize batch pool - possible incorrect agpgart installed\n"); - return GL_FALSE; - } - - intel_recreate_static_regions(intelScreen); - return GL_TRUE; } @@ -553,9 +565,11 @@ intelDestroyScreen(__DRIscreenPrivate * sPriv) intelUnmapScreenRegions(intelScreen); - driPoolTakeDown(intelScreen->regionPool); - driPoolTakeDown(intelScreen->staticPool); - driPoolTakeDown(intelScreen->batchPool); + if (intelScreen->havePools) { + driPoolTakeDown(intelScreen->regionPool); + driPoolTakeDown(intelScreen->staticPool); + driPoolTakeDown(intelScreen->batchPool); + } FREE(intelScreen); sPriv->private = NULL; } @@ -878,19 +892,9 @@ __driCreateNewScreen_20050727(__DRInativeDisplay * dpy, int scrn, static const __DRIversion ddx_expected = { 1, 5, 0 }; static const __DRIversion dri_expected = { 4, 0, 0 }; static const __DRIversion drm_expected = { 1, 7, 0 }; - int tmpContextID; - GLuint tmpContext; dri_interface = interface; - if (!(*dri_interface->createContext)(dpy, modes->screen, - modes->fbconfigID, - &tmpContextID, &tmpContext)) { - fprintf(stderr, "Could not create temporary context.\n"); - return NULL; - } - DRM_LIGHT_LOCK(fd, &((drm_sarea_t *)pSAREA)->lock, tmpContext); - if (!driCheckDriDdxDrmVersions2("i915", dri_version, &dri_expected, ddx_version, &ddx_expected, @@ -903,9 +907,6 @@ __driCreateNewScreen_20050727(__DRInativeDisplay * dpy, int scrn, frame_buffer, pSAREA, fd, internal_api_version, &intelAPI); - DRM_UNLOCK(fd, &((drm_sarea_t *)pSAREA)->lock, tmpContext); - (void) (*dri_interface->destroyContext)(dpy, modes->screen, tmpContextID); - if (psp != NULL) { I830DRIPtr dri_priv = (I830DRIPtr) psp->pDevPriv; *driver_modes = intelFillInModes(dri_priv->cpp * 8, diff --git a/src/mesa/drivers/dri/i915tex/intel_screen.h b/src/mesa/drivers/dri/i915tex/intel_screen.h index 05e2f1f2eac..bac43aadddf 100644 --- a/src/mesa/drivers/dri/i915tex/intel_screen.h +++ b/src/mesa/drivers/dri/i915tex/intel_screen.h @@ -95,6 +95,7 @@ typedef struct struct _DriBufferPool *regionPool; struct _DriBufferPool *staticPool; unsigned int maxBatchSize; + GLboolean havePools; } intelScreenPrivate; @@ -130,5 +131,7 @@ extern struct intel_context *intelScreenContext(intelScreenPrivate *intelScreen) extern void intelUpdateScreenRotation(__DRIscreenPrivate * sPriv, drmI830Sarea * sarea); +extern GLboolean +intelCreatePools(intelScreenPrivate *intelScreen); #endif -- cgit v1.2.3 From 2a2f8d806f74619f0a7cf97fdc7f7b3ad1cad81b Mon Sep 17 00:00:00 2001 From: George Sapountzis Date: Wed, 18 Apr 2007 23:54:00 +0300 Subject: xmesa: drop glide (FX) backend. glide is no longer compiled with stand-alone libGL, so this will not link. There are still the glide config files. some code in demos and the GLX_MESA_set_3dfx_mode code which could be removed. --- src/mesa/drivers/x11/fakeglx.c | 13 +-- src/mesa/drivers/x11/xm_api.c | 258 +---------------------------------------- src/mesa/drivers/x11/xmesaP.h | 19 +-- 3 files changed, 6 insertions(+), 284 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/x11/fakeglx.c b/src/mesa/drivers/x11/fakeglx.c index eecd52aa32b..b6569b1938f 100644 --- a/src/mesa/drivers/x11/fakeglx.c +++ b/src/mesa/drivers/x11/fakeglx.c @@ -1440,7 +1440,7 @@ Fake_glXMakeContextCurrent( Display *dpy, GLXDrawable draw, } if (!drawBuffer) { /* drawable must be a new window! */ - drawBuffer = XMesaCreateWindowBuffer2( xmctx->xm_visual, draw, xmctx); + drawBuffer = XMesaCreateWindowBuffer( xmctx->xm_visual, draw ); if (!drawBuffer) { /* Out of memory, or context/drawable depth mismatch */ return False; @@ -1457,8 +1457,7 @@ Fake_glXMakeContextCurrent( Display *dpy, GLXDrawable draw, } if (!readBuffer) { /* drawable must be a new window! */ - readBuffer = XMesaCreateWindowBuffer2(glxCtx->xmesaContext->xm_visual, - read, xmctx); + readBuffer = XMesaCreateWindowBuffer( xmctx->xm_visual, read ); if (!readBuffer) { /* Out of memory, or context/drawable depth mismatch */ return False; @@ -1930,12 +1929,6 @@ Fake_glXWaitX( void ) static const char * get_extensions( void ) { -#ifdef FX - const char *fx = _mesa_getenv("MESA_GLX_FX"); - if (fx && fx[0] != 'd') { - return EXTENSIONS; - } -#endif return EXTENSIONS + 23; /* skip "GLX_MESA_set_3dfx_mode" */ } @@ -2107,7 +2100,7 @@ Fake_glXCreateWindow( Display *dpy, GLXFBConfig config, Window win, if (!xmvis) return 0; - xmbuf = XMesaCreateWindowBuffer2(xmvis, win, NULL); + xmbuf = XMesaCreateWindowBuffer(xmvis, win); if (!xmbuf) return 0; diff --git a/src/mesa/drivers/x11/xm_api.c b/src/mesa/drivers/x11/xm_api.c index 6439d13fa5f..6f671969fec 100644 --- a/src/mesa/drivers/x11/xm_api.c +++ b/src/mesa/drivers/x11/xm_api.c @@ -1557,12 +1557,6 @@ PUBLIC void XMesaDestroyContext( XMesaContext c ) { GLcontext *mesaCtx = &c->mesa; -#ifdef FX - XMesaBuffer xmbuf = XMESA_BUFFER(mesaCtx->DrawBuffer); - - if (xmbuf && xmbuf->FXctx) - fxMesaDestroyContext(xmbuf->FXctx); -#endif _swsetup_DestroyContext( mesaCtx ); _swrast_DestroyContext( mesaCtx ); _tnl_DestroyContext( mesaCtx ); @@ -1578,17 +1572,13 @@ void XMesaDestroyContext( XMesaContext c ) * X window or pixmap. * \param v the window's XMesaVisual * \param w the window we're wrapping - * \param c context used to initialize the buffer if 3Dfx mode in use. * \return new XMesaBuffer or NULL if error */ -XMesaBuffer -XMesaCreateWindowBuffer2(XMesaVisual v, XMesaWindow w, XMesaContext c) +PUBLIC XMesaBuffer +XMesaCreateWindowBuffer(XMesaVisual v, XMesaWindow w) { #ifndef XFree86Server XWindowAttributes attr; -#endif -#ifdef FX - char *fxEnvVar; #endif int client = 0; XMesaBuffer b; @@ -1596,7 +1586,6 @@ XMesaCreateWindowBuffer2(XMesaVisual v, XMesaWindow w, XMesaContext c) assert(v); assert(w); - (void) c; /* Check that window depth matches visual depth */ #ifdef XFree86Server @@ -1642,96 +1631,10 @@ XMesaCreateWindowBuffer2(XMesaVisual v, XMesaWindow w, XMesaContext c) return NULL; } -#ifdef FX - fxEnvVar = _mesa_getenv("MESA_GLX_FX"); - if (fxEnvVar) { - if (fxEnvVar[0]!='d') { - int attribs[100]; - int numAttribs = 0; - int hw; - if (v->mesa_visual.depthBits > 0) { - attribs[numAttribs++] = FXMESA_DEPTH_SIZE; - attribs[numAttribs++] = v->mesa_visual.depthBits; - } - if (v->mesa_visual.doubleBufferMode) { - attribs[numAttribs++] = FXMESA_DOUBLEBUFFER; - } - if (v->mesa_visual.accumRedBits > 0) { - attribs[numAttribs++] = FXMESA_ACCUM_SIZE; - attribs[numAttribs++] = v->mesa_visual.accumRedBits; - } - if (v->mesa_visual.stencilBits > 0) { - attribs[numAttribs++] = FXMESA_STENCIL_SIZE; - attribs[numAttribs++] = v->mesa_visual.stencilBits; - } - if (v->mesa_visual.alphaBits > 0) { - attribs[numAttribs++] = FXMESA_ALPHA_SIZE; - attribs[numAttribs++] = v->mesa_visual.alphaBits; - } - if (1) { - attribs[numAttribs++] = FXMESA_SHARE_CONTEXT; - attribs[numAttribs++] = (int) &(c->mesa); - } - attribs[numAttribs++] = FXMESA_NONE; - - /* [dBorca] we should take an envvar for `fxMesaSelectCurrentBoard'!!! */ - hw = fxMesaSelectCurrentBoard(0); - - /* if these fail, there's a new bug somewhere */ - ASSERT(b->mesa_buffer.Width > 0); - ASSERT(b->mesa_buffer.Height > 0); - - if ((hw == GR_SSTTYPE_VOODOO) || (hw == GR_SSTTYPE_Voodoo2)) { - b->FXctx = fxMesaCreateBestContext(0, b->mesa_buffer.Width, - b->mesa_buffer.Height, attribs); - if ((v->undithered_pf!=PF_Index) && (b->backxrb->ximage)) { - b->FXisHackUsable = b->FXctx ? GL_TRUE : GL_FALSE; - if (b->FXctx && (fxEnvVar[0]=='w' || fxEnvVar[0]=='W')) { - b->FXwindowHack = GL_TRUE; - FX_grSstControl(GR_CONTROL_DEACTIVATE); - } - else { - b->FXwindowHack = GL_FALSE; - } - } - } - else { - if (fxEnvVar[0]=='w' || fxEnvVar[0]=='W') - b->FXctx = fxMesaCreateContext(w, GR_RESOLUTION_NONE, - GR_REFRESH_75Hz, attribs); - else - b->FXctx = fxMesaCreateBestContext(0, b->mesa_buffer.Width, - b->mesa_buffer.Height, attribs); - b->FXisHackUsable = GL_FALSE; - b->FXwindowHack = GL_FALSE; - } - /* - fprintf(stderr, - "voodoo %d, wid %d height %d hack: usable %d active %d\n", - hw, b->mesa_buffer.Width, b->mesa_buffer.Height, - b->FXisHackUsable, b->FXwindowHack); - */ - } - } - else { - _mesa_warning(NULL, "WARNING: This Mesa Library includes the Glide driver but\n"); - _mesa_warning(NULL, " you have not defined the MESA_GLX_FX env. var.\n"); - _mesa_warning(NULL, " (check the README.3DFX file for more information).\n\n"); - _mesa_warning(NULL, " you can disable this message with a 'export MESA_GLX_FX=disable'.\n"); - } -#endif - return b; } -PUBLIC XMesaBuffer -XMesaCreateWindowBuffer(XMesaVisual v, XMesaWindow w) -{ - return XMesaCreateWindowBuffer2( v, w, NULL ); -} - - /** * Create a new XMesaBuffer from an X pixmap. * @@ -1857,15 +1760,6 @@ GLboolean XMesaMakeCurrent2( XMesaContext c, XMesaBuffer drawBuffer, if (!drawBuffer || !readBuffer) return GL_FALSE; /* must specify buffers! */ -#ifdef FX - if (drawBuffer->FXctx) { - fxMesaMakeCurrent(drawBuffer->FXctx); - - c->xm_buffer = drawBuffer; - - return GL_TRUE; - } -#endif if (&(c->mesa) == _mesa_get_current_context() && c->mesa.DrawBuffer == &drawBuffer->mesa_buffer && c->mesa.ReadBuffer == &readBuffer->mesa_buffer @@ -2006,141 +1900,12 @@ GLboolean XMesaCopyContext( XMesaContext xm_src, XMesaContext xm_dst, GLuint mas */ GLboolean XMesaSetFXmode( GLint mode ) { -#ifdef FX - const char *fx = _mesa_getenv("MESA_GLX_FX"); - if (fx && fx[0] != 'd') { - GET_CURRENT_CONTEXT(ctx); - GrHwConfiguration hw; - if (!FX_grSstQueryHardware(&hw)) { - /*fprintf(stderr, "!grSstQueryHardware\n");*/ - return GL_FALSE; - } - if (hw.num_sst < 1) { - /*fprintf(stderr, "hw.num_sst < 1\n");*/ - return GL_FALSE; - } - if (ctx) { - /* [dBorca] Hack alert: - * oh, this is sooo wrong: ctx above is - * really an fxMesaContext, not an XMesaContext - */ - XMesaBuffer xmbuf = XMESA_BUFFER(ctx->DrawBuffer); - if (mode == XMESA_FX_WINDOW) { - if (xmbuf->FXisHackUsable) { - FX_grSstControl(GR_CONTROL_DEACTIVATE); - xmbuf->FXwindowHack = GL_TRUE; - return GL_TRUE; - } - } - else if (mode == XMESA_FX_FULLSCREEN) { - FX_grSstControl(GR_CONTROL_ACTIVATE); - xmbuf->FXwindowHack = GL_FALSE; - return GL_TRUE; - } - else { - /* Error: Bad mode value */ - } - } - } - /*fprintf(stderr, "fallthrough\n");*/ -#else (void) mode; -#endif return GL_FALSE; } -#ifdef FX -/* - * Read image from VooDoo frame buffer into X/Mesa's back XImage. - */ -static void FXgetImage( XMesaBuffer b ) -{ - GET_CURRENT_CONTEXT(ctx); - static unsigned short pixbuf[MAX_WIDTH]; - GLuint x, y; - GLuint width, height; - XMesaContext xmesa = XMESA_CONTEXT(ctx); - -#ifdef XFree86Server - x = b->frontxrb->pixmap->x; - y = b->frontxrb->pixmap->y; - width = b->frontxrb->pixmap->width; - height = b->frontxrb->pixmap->height; - depth = b->frontxrb->pixmap->depth; -#else - xmesa_get_window_size(b->display, b, &width, &height); - x = y = 0; -#endif - if (b->mesa_buffer.Width != width || b->mesa_buffer.Height != height) { - b->mesa_buffer.Width = MIN2((int)width, b->FXctx->width); - b->mesa_buffer.Height = MIN2((int)height, b->FXctx->height); - if (b->mesa_buffer.Width & 1) - b->mesa_buffer.Width--; /* prevent odd width */ - } - - /* [dBorca] we're always in the right GR_COLORFORMAT... aren't we? */ - /* grLfbWriteColorFormat(GR_COLORFORMAT_ARGB); */ - if (b->xm_visual->undithered_pf==PF_5R6G5B) { - /* Special case: 16bpp RGB */ - grLfbReadRegion( GR_BUFFER_FRONTBUFFER, /* src buffer */ - 0, b->FXctx->height - b->mesa_buffer.Height, /*pos*/ - b->mesa_buffer.Width, b->mesa_buffer.Height, /* size */ - b->mesa_buffer.Width * sizeof(GLushort), /* stride */ - b->backxrb->ximage->data); /* dest buffer */ - } - else if (b->xm_visual->dithered_pf==PF_Dither - && GET_VISUAL_DEPTH(b->xm_visual)==8) { - /* Special case: 8bpp RGB */ - for (y=0;ymesa_buffer.Height;y++) { - GLubyte *ptr = (GLubyte*) b->backxrb->ximage->data - + b->backxrb->ximage->bytes_per_line * y; - XDITHER_SETUP(y); - - /* read row from 3Dfx frame buffer */ - grLfbReadRegion( GR_BUFFER_FRONTBUFFER, - 0, b->FXctx->height-(b->mesa_buffer.Height-y), - b->mesa_buffer.Width, 1, - 0, - pixbuf ); - - /* write to XImage back buffer */ - for (x=0;xmesa_buffer.Width;x++) { - GLubyte r = (pixbuf[x] & 0xf800) >> 8; - GLubyte g = (pixbuf[x] & 0x07e0) >> 3; - GLubyte b = (pixbuf[x] & 0x001f) << 3; - *ptr++ = XDITHER( x, r, g, b); - } - } - } - else { - /* General case: slow! */ - for (y=0;ymesa_buffer.Height;y++) { - /* read row from 3Dfx frame buffer */ - grLfbReadRegion( GR_BUFFER_FRONTBUFFER, - 0, b->FXctx->height-(b->mesa_buffer.Height-y), - b->mesa_buffer.Width, 1, - 0, - pixbuf ); - - /* write to XImage back buffer */ - for (x=0;xmesa_buffer.Width;x++) { - XMesaPutPixel(b->backxrb->ximage,x,y, - xmesa_color_to_pixel(ctx, - (pixbuf[x] & 0xf800) >> 8, - (pixbuf[x] & 0x07e0) >> 3, - (pixbuf[x] & 0x001f) << 3, - 0xff, - b->xm_visual->undithered_pf)); - } - } - } - /* grLfbWriteColorFormat(GR_COLORFORMAT_ABGR); */ -} -#endif - - /* * Copy the back buffer to the front buffer. If there's no back buffer * this is a no-op. @@ -2162,16 +1927,6 @@ void XMesaSwapBuffers( XMesaBuffer b ) _mesa_notifySwapBuffers(ctx); if (b->db_mode) { -#ifdef FX - if (b->FXctx) { - fxMesaSwapBuffers(); - - if (b->FXwindowHack) - FXgetImage(b); - else - return; - } -#endif if (b->backxrb->ximage) { /* Copy Ximage (back buf) from client memory to server window */ #if defined(USE_XSHM) && !defined(XFree86Server) @@ -2238,15 +1993,6 @@ void XMesaCopySubBuffer( XMesaBuffer b, int x, int y, int width, int height ) if (b->db_mode) { int yTop = b->mesa_buffer.Height - y - height; -#ifdef FX - if (b->FXctx) { - fxMesaSwapBuffers(); - if (b->FXwindowHack) - FXgetImage(b); - else - return; - } -#endif if (b->backxrb->ximage) { /* Copy Ximage from host's memory to server's window */ #if defined(USE_XSHM) && !defined(XFree86Server) diff --git a/src/mesa/drivers/x11/xmesaP.h b/src/mesa/drivers/x11/xmesaP.h index 98d03ccf62f..7b72e6b2f98 100644 --- a/src/mesa/drivers/x11/xmesaP.h +++ b/src/mesa/drivers/x11/xmesaP.h @@ -29,10 +29,7 @@ #include "GL/xmesa.h" #include "mtypes.h" -#if defined(FX) -#include "GL/fxmesa.h" -#include "../glide/fxdrv.h" -#endif + #ifdef XFree86Server #include "xm_image.h" #endif @@ -260,13 +257,6 @@ struct xmesa_buffer { unsigned long alloced_colors[256]; #endif -#if defined( FX ) - /* For 3Dfx Glide only */ - GLboolean FXisHackUsable; /* Can we render into window? */ - GLboolean FXwindowHack; /* Are we rendering into a window? */ - fxMesaContext FXctx; -#endif - struct xmesa_buffer *Next; /* Linked list pointer: */ }; @@ -567,13 +557,6 @@ extern void xmesa_choose_triangle( GLcontext *ctx ); extern void xmesa_register_swrast_functions( GLcontext *ctx ); - -/* XXX this is a hack to implement shared display lists with 3Dfx */ -extern XMesaBuffer XMesaCreateWindowBuffer2( XMesaVisual v, - XMesaWindow w, - XMesaContext c ); - - #define ENABLE_EXT_texure_compression_s3tc 0 /* SW texture compression */ #ifdef XFree86Server -- cgit v1.2.3 From d60009bd6dba15d094b0d0bcb8180b7a2e1c1708 Mon Sep 17 00:00:00 2001 From: George Sapountzis Date: Fri, 20 Apr 2007 17:35:01 +0300 Subject: Revert "xmesa: drop glide (FX) backend." This reverts commit 2a2f8d806f74619f0a7cf97fdc7f7b3ad1cad81b. --- src/mesa/drivers/x11/fakeglx.c | 13 ++- src/mesa/drivers/x11/xm_api.c | 258 ++++++++++++++++++++++++++++++++++++++++- src/mesa/drivers/x11/xmesaP.h | 19 ++- 3 files changed, 284 insertions(+), 6 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/x11/fakeglx.c b/src/mesa/drivers/x11/fakeglx.c index b6569b1938f..eecd52aa32b 100644 --- a/src/mesa/drivers/x11/fakeglx.c +++ b/src/mesa/drivers/x11/fakeglx.c @@ -1440,7 +1440,7 @@ Fake_glXMakeContextCurrent( Display *dpy, GLXDrawable draw, } if (!drawBuffer) { /* drawable must be a new window! */ - drawBuffer = XMesaCreateWindowBuffer( xmctx->xm_visual, draw ); + drawBuffer = XMesaCreateWindowBuffer2( xmctx->xm_visual, draw, xmctx); if (!drawBuffer) { /* Out of memory, or context/drawable depth mismatch */ return False; @@ -1457,7 +1457,8 @@ Fake_glXMakeContextCurrent( Display *dpy, GLXDrawable draw, } if (!readBuffer) { /* drawable must be a new window! */ - readBuffer = XMesaCreateWindowBuffer( xmctx->xm_visual, read ); + readBuffer = XMesaCreateWindowBuffer2(glxCtx->xmesaContext->xm_visual, + read, xmctx); if (!readBuffer) { /* Out of memory, or context/drawable depth mismatch */ return False; @@ -1929,6 +1930,12 @@ Fake_glXWaitX( void ) static const char * get_extensions( void ) { +#ifdef FX + const char *fx = _mesa_getenv("MESA_GLX_FX"); + if (fx && fx[0] != 'd') { + return EXTENSIONS; + } +#endif return EXTENSIONS + 23; /* skip "GLX_MESA_set_3dfx_mode" */ } @@ -2100,7 +2107,7 @@ Fake_glXCreateWindow( Display *dpy, GLXFBConfig config, Window win, if (!xmvis) return 0; - xmbuf = XMesaCreateWindowBuffer(xmvis, win); + xmbuf = XMesaCreateWindowBuffer2(xmvis, win, NULL); if (!xmbuf) return 0; diff --git a/src/mesa/drivers/x11/xm_api.c b/src/mesa/drivers/x11/xm_api.c index 6f671969fec..6439d13fa5f 100644 --- a/src/mesa/drivers/x11/xm_api.c +++ b/src/mesa/drivers/x11/xm_api.c @@ -1557,6 +1557,12 @@ PUBLIC void XMesaDestroyContext( XMesaContext c ) { GLcontext *mesaCtx = &c->mesa; +#ifdef FX + XMesaBuffer xmbuf = XMESA_BUFFER(mesaCtx->DrawBuffer); + + if (xmbuf && xmbuf->FXctx) + fxMesaDestroyContext(xmbuf->FXctx); +#endif _swsetup_DestroyContext( mesaCtx ); _swrast_DestroyContext( mesaCtx ); _tnl_DestroyContext( mesaCtx ); @@ -1572,13 +1578,17 @@ void XMesaDestroyContext( XMesaContext c ) * X window or pixmap. * \param v the window's XMesaVisual * \param w the window we're wrapping + * \param c context used to initialize the buffer if 3Dfx mode in use. * \return new XMesaBuffer or NULL if error */ -PUBLIC XMesaBuffer -XMesaCreateWindowBuffer(XMesaVisual v, XMesaWindow w) +XMesaBuffer +XMesaCreateWindowBuffer2(XMesaVisual v, XMesaWindow w, XMesaContext c) { #ifndef XFree86Server XWindowAttributes attr; +#endif +#ifdef FX + char *fxEnvVar; #endif int client = 0; XMesaBuffer b; @@ -1586,6 +1596,7 @@ XMesaCreateWindowBuffer(XMesaVisual v, XMesaWindow w) assert(v); assert(w); + (void) c; /* Check that window depth matches visual depth */ #ifdef XFree86Server @@ -1631,10 +1642,96 @@ XMesaCreateWindowBuffer(XMesaVisual v, XMesaWindow w) return NULL; } +#ifdef FX + fxEnvVar = _mesa_getenv("MESA_GLX_FX"); + if (fxEnvVar) { + if (fxEnvVar[0]!='d') { + int attribs[100]; + int numAttribs = 0; + int hw; + if (v->mesa_visual.depthBits > 0) { + attribs[numAttribs++] = FXMESA_DEPTH_SIZE; + attribs[numAttribs++] = v->mesa_visual.depthBits; + } + if (v->mesa_visual.doubleBufferMode) { + attribs[numAttribs++] = FXMESA_DOUBLEBUFFER; + } + if (v->mesa_visual.accumRedBits > 0) { + attribs[numAttribs++] = FXMESA_ACCUM_SIZE; + attribs[numAttribs++] = v->mesa_visual.accumRedBits; + } + if (v->mesa_visual.stencilBits > 0) { + attribs[numAttribs++] = FXMESA_STENCIL_SIZE; + attribs[numAttribs++] = v->mesa_visual.stencilBits; + } + if (v->mesa_visual.alphaBits > 0) { + attribs[numAttribs++] = FXMESA_ALPHA_SIZE; + attribs[numAttribs++] = v->mesa_visual.alphaBits; + } + if (1) { + attribs[numAttribs++] = FXMESA_SHARE_CONTEXT; + attribs[numAttribs++] = (int) &(c->mesa); + } + attribs[numAttribs++] = FXMESA_NONE; + + /* [dBorca] we should take an envvar for `fxMesaSelectCurrentBoard'!!! */ + hw = fxMesaSelectCurrentBoard(0); + + /* if these fail, there's a new bug somewhere */ + ASSERT(b->mesa_buffer.Width > 0); + ASSERT(b->mesa_buffer.Height > 0); + + if ((hw == GR_SSTTYPE_VOODOO) || (hw == GR_SSTTYPE_Voodoo2)) { + b->FXctx = fxMesaCreateBestContext(0, b->mesa_buffer.Width, + b->mesa_buffer.Height, attribs); + if ((v->undithered_pf!=PF_Index) && (b->backxrb->ximage)) { + b->FXisHackUsable = b->FXctx ? GL_TRUE : GL_FALSE; + if (b->FXctx && (fxEnvVar[0]=='w' || fxEnvVar[0]=='W')) { + b->FXwindowHack = GL_TRUE; + FX_grSstControl(GR_CONTROL_DEACTIVATE); + } + else { + b->FXwindowHack = GL_FALSE; + } + } + } + else { + if (fxEnvVar[0]=='w' || fxEnvVar[0]=='W') + b->FXctx = fxMesaCreateContext(w, GR_RESOLUTION_NONE, + GR_REFRESH_75Hz, attribs); + else + b->FXctx = fxMesaCreateBestContext(0, b->mesa_buffer.Width, + b->mesa_buffer.Height, attribs); + b->FXisHackUsable = GL_FALSE; + b->FXwindowHack = GL_FALSE; + } + /* + fprintf(stderr, + "voodoo %d, wid %d height %d hack: usable %d active %d\n", + hw, b->mesa_buffer.Width, b->mesa_buffer.Height, + b->FXisHackUsable, b->FXwindowHack); + */ + } + } + else { + _mesa_warning(NULL, "WARNING: This Mesa Library includes the Glide driver but\n"); + _mesa_warning(NULL, " you have not defined the MESA_GLX_FX env. var.\n"); + _mesa_warning(NULL, " (check the README.3DFX file for more information).\n\n"); + _mesa_warning(NULL, " you can disable this message with a 'export MESA_GLX_FX=disable'.\n"); + } +#endif + return b; } +PUBLIC XMesaBuffer +XMesaCreateWindowBuffer(XMesaVisual v, XMesaWindow w) +{ + return XMesaCreateWindowBuffer2( v, w, NULL ); +} + + /** * Create a new XMesaBuffer from an X pixmap. * @@ -1760,6 +1857,15 @@ GLboolean XMesaMakeCurrent2( XMesaContext c, XMesaBuffer drawBuffer, if (!drawBuffer || !readBuffer) return GL_FALSE; /* must specify buffers! */ +#ifdef FX + if (drawBuffer->FXctx) { + fxMesaMakeCurrent(drawBuffer->FXctx); + + c->xm_buffer = drawBuffer; + + return GL_TRUE; + } +#endif if (&(c->mesa) == _mesa_get_current_context() && c->mesa.DrawBuffer == &drawBuffer->mesa_buffer && c->mesa.ReadBuffer == &readBuffer->mesa_buffer @@ -1900,12 +2006,141 @@ GLboolean XMesaCopyContext( XMesaContext xm_src, XMesaContext xm_dst, GLuint mas */ GLboolean XMesaSetFXmode( GLint mode ) { +#ifdef FX + const char *fx = _mesa_getenv("MESA_GLX_FX"); + if (fx && fx[0] != 'd') { + GET_CURRENT_CONTEXT(ctx); + GrHwConfiguration hw; + if (!FX_grSstQueryHardware(&hw)) { + /*fprintf(stderr, "!grSstQueryHardware\n");*/ + return GL_FALSE; + } + if (hw.num_sst < 1) { + /*fprintf(stderr, "hw.num_sst < 1\n");*/ + return GL_FALSE; + } + if (ctx) { + /* [dBorca] Hack alert: + * oh, this is sooo wrong: ctx above is + * really an fxMesaContext, not an XMesaContext + */ + XMesaBuffer xmbuf = XMESA_BUFFER(ctx->DrawBuffer); + if (mode == XMESA_FX_WINDOW) { + if (xmbuf->FXisHackUsable) { + FX_grSstControl(GR_CONTROL_DEACTIVATE); + xmbuf->FXwindowHack = GL_TRUE; + return GL_TRUE; + } + } + else if (mode == XMESA_FX_FULLSCREEN) { + FX_grSstControl(GR_CONTROL_ACTIVATE); + xmbuf->FXwindowHack = GL_FALSE; + return GL_TRUE; + } + else { + /* Error: Bad mode value */ + } + } + } + /*fprintf(stderr, "fallthrough\n");*/ +#else (void) mode; +#endif return GL_FALSE; } +#ifdef FX +/* + * Read image from VooDoo frame buffer into X/Mesa's back XImage. + */ +static void FXgetImage( XMesaBuffer b ) +{ + GET_CURRENT_CONTEXT(ctx); + static unsigned short pixbuf[MAX_WIDTH]; + GLuint x, y; + GLuint width, height; + XMesaContext xmesa = XMESA_CONTEXT(ctx); + +#ifdef XFree86Server + x = b->frontxrb->pixmap->x; + y = b->frontxrb->pixmap->y; + width = b->frontxrb->pixmap->width; + height = b->frontxrb->pixmap->height; + depth = b->frontxrb->pixmap->depth; +#else + xmesa_get_window_size(b->display, b, &width, &height); + x = y = 0; +#endif + if (b->mesa_buffer.Width != width || b->mesa_buffer.Height != height) { + b->mesa_buffer.Width = MIN2((int)width, b->FXctx->width); + b->mesa_buffer.Height = MIN2((int)height, b->FXctx->height); + if (b->mesa_buffer.Width & 1) + b->mesa_buffer.Width--; /* prevent odd width */ + } + + /* [dBorca] we're always in the right GR_COLORFORMAT... aren't we? */ + /* grLfbWriteColorFormat(GR_COLORFORMAT_ARGB); */ + if (b->xm_visual->undithered_pf==PF_5R6G5B) { + /* Special case: 16bpp RGB */ + grLfbReadRegion( GR_BUFFER_FRONTBUFFER, /* src buffer */ + 0, b->FXctx->height - b->mesa_buffer.Height, /*pos*/ + b->mesa_buffer.Width, b->mesa_buffer.Height, /* size */ + b->mesa_buffer.Width * sizeof(GLushort), /* stride */ + b->backxrb->ximage->data); /* dest buffer */ + } + else if (b->xm_visual->dithered_pf==PF_Dither + && GET_VISUAL_DEPTH(b->xm_visual)==8) { + /* Special case: 8bpp RGB */ + for (y=0;ymesa_buffer.Height;y++) { + GLubyte *ptr = (GLubyte*) b->backxrb->ximage->data + + b->backxrb->ximage->bytes_per_line * y; + XDITHER_SETUP(y); + + /* read row from 3Dfx frame buffer */ + grLfbReadRegion( GR_BUFFER_FRONTBUFFER, + 0, b->FXctx->height-(b->mesa_buffer.Height-y), + b->mesa_buffer.Width, 1, + 0, + pixbuf ); + + /* write to XImage back buffer */ + for (x=0;xmesa_buffer.Width;x++) { + GLubyte r = (pixbuf[x] & 0xf800) >> 8; + GLubyte g = (pixbuf[x] & 0x07e0) >> 3; + GLubyte b = (pixbuf[x] & 0x001f) << 3; + *ptr++ = XDITHER( x, r, g, b); + } + } + } + else { + /* General case: slow! */ + for (y=0;ymesa_buffer.Height;y++) { + /* read row from 3Dfx frame buffer */ + grLfbReadRegion( GR_BUFFER_FRONTBUFFER, + 0, b->FXctx->height-(b->mesa_buffer.Height-y), + b->mesa_buffer.Width, 1, + 0, + pixbuf ); + + /* write to XImage back buffer */ + for (x=0;xmesa_buffer.Width;x++) { + XMesaPutPixel(b->backxrb->ximage,x,y, + xmesa_color_to_pixel(ctx, + (pixbuf[x] & 0xf800) >> 8, + (pixbuf[x] & 0x07e0) >> 3, + (pixbuf[x] & 0x001f) << 3, + 0xff, + b->xm_visual->undithered_pf)); + } + } + } + /* grLfbWriteColorFormat(GR_COLORFORMAT_ABGR); */ +} +#endif + + /* * Copy the back buffer to the front buffer. If there's no back buffer * this is a no-op. @@ -1927,6 +2162,16 @@ void XMesaSwapBuffers( XMesaBuffer b ) _mesa_notifySwapBuffers(ctx); if (b->db_mode) { +#ifdef FX + if (b->FXctx) { + fxMesaSwapBuffers(); + + if (b->FXwindowHack) + FXgetImage(b); + else + return; + } +#endif if (b->backxrb->ximage) { /* Copy Ximage (back buf) from client memory to server window */ #if defined(USE_XSHM) && !defined(XFree86Server) @@ -1993,6 +2238,15 @@ void XMesaCopySubBuffer( XMesaBuffer b, int x, int y, int width, int height ) if (b->db_mode) { int yTop = b->mesa_buffer.Height - y - height; +#ifdef FX + if (b->FXctx) { + fxMesaSwapBuffers(); + if (b->FXwindowHack) + FXgetImage(b); + else + return; + } +#endif if (b->backxrb->ximage) { /* Copy Ximage from host's memory to server's window */ #if defined(USE_XSHM) && !defined(XFree86Server) diff --git a/src/mesa/drivers/x11/xmesaP.h b/src/mesa/drivers/x11/xmesaP.h index 7b72e6b2f98..98d03ccf62f 100644 --- a/src/mesa/drivers/x11/xmesaP.h +++ b/src/mesa/drivers/x11/xmesaP.h @@ -29,7 +29,10 @@ #include "GL/xmesa.h" #include "mtypes.h" - +#if defined(FX) +#include "GL/fxmesa.h" +#include "../glide/fxdrv.h" +#endif #ifdef XFree86Server #include "xm_image.h" #endif @@ -257,6 +260,13 @@ struct xmesa_buffer { unsigned long alloced_colors[256]; #endif +#if defined( FX ) + /* For 3Dfx Glide only */ + GLboolean FXisHackUsable; /* Can we render into window? */ + GLboolean FXwindowHack; /* Are we rendering into a window? */ + fxMesaContext FXctx; +#endif + struct xmesa_buffer *Next; /* Linked list pointer: */ }; @@ -557,6 +567,13 @@ extern void xmesa_choose_triangle( GLcontext *ctx ); extern void xmesa_register_swrast_functions( GLcontext *ctx ); + +/* XXX this is a hack to implement shared display lists with 3Dfx */ +extern XMesaBuffer XMesaCreateWindowBuffer2( XMesaVisual v, + XMesaWindow w, + XMesaContext c ); + + #define ENABLE_EXT_texure_compression_s3tc 0 /* SW texture compression */ #ifdef XFree86Server -- cgit v1.2.3 From 6aa5668871e7f366b33e85fabc72885fc269a7d4 Mon Sep 17 00:00:00 2001 From: George Sapountzis Date: Fri, 20 Apr 2007 17:51:55 +0300 Subject: xmesa: spilt FX code to separate functions. --- src/mesa/drivers/x11/fakeglx.c | 18 ++++++++++++++---- src/mesa/drivers/x11/xm_api.c | 36 ++++++++++++++++-------------------- src/mesa/drivers/x11/xmesaP.h | 7 ++++--- 3 files changed, 34 insertions(+), 27 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/x11/fakeglx.c b/src/mesa/drivers/x11/fakeglx.c index eecd52aa32b..86a4deabc67 100644 --- a/src/mesa/drivers/x11/fakeglx.c +++ b/src/mesa/drivers/x11/fakeglx.c @@ -1440,11 +1440,14 @@ Fake_glXMakeContextCurrent( Display *dpy, GLXDrawable draw, } if (!drawBuffer) { /* drawable must be a new window! */ - drawBuffer = XMesaCreateWindowBuffer2( xmctx->xm_visual, draw, xmctx); + drawBuffer = XMesaCreateWindowBuffer( xmctx->xm_visual, draw ); if (!drawBuffer) { /* Out of memory, or context/drawable depth mismatch */ return False; } +#ifdef FX + FXcreateContext( xmctx->xm_visual, draw, xmctx, drawBuffer ); +#endif } /* Find the XMesaBuffer which corresponds to the GLXDrawable 'read' */ @@ -1457,12 +1460,14 @@ Fake_glXMakeContextCurrent( Display *dpy, GLXDrawable draw, } if (!readBuffer) { /* drawable must be a new window! */ - readBuffer = XMesaCreateWindowBuffer2(glxCtx->xmesaContext->xm_visual, - read, xmctx); + readBuffer = XMesaCreateWindowBuffer( xmctx->xm_visual, read ); if (!readBuffer) { /* Out of memory, or context/drawable depth mismatch */ return False; } +#ifdef FX + FXcreateContext( xmctx->xm_visual, read, xmctx, readBuffer ); +#endif } MakeCurrent_PrevContext = ctx; @@ -2107,10 +2112,15 @@ Fake_glXCreateWindow( Display *dpy, GLXFBConfig config, Window win, if (!xmvis) return 0; - xmbuf = XMesaCreateWindowBuffer2(xmvis, win, NULL); + xmbuf = XMesaCreateWindowBuffer(xmvis, win); if (!xmbuf) return 0; +#ifdef FX + /* XXX this will segfault if actually called */ + FXcreateContext(xmvis, win, NULL, xmbuf); +#endif + (void) dpy; (void) attribList; /* Ignored in GLX 1.3 */ diff --git a/src/mesa/drivers/x11/xm_api.c b/src/mesa/drivers/x11/xm_api.c index 6439d13fa5f..3e65ebd99b5 100644 --- a/src/mesa/drivers/x11/xm_api.c +++ b/src/mesa/drivers/x11/xm_api.c @@ -1578,17 +1578,13 @@ void XMesaDestroyContext( XMesaContext c ) * X window or pixmap. * \param v the window's XMesaVisual * \param w the window we're wrapping - * \param c context used to initialize the buffer if 3Dfx mode in use. * \return new XMesaBuffer or NULL if error */ -XMesaBuffer -XMesaCreateWindowBuffer2(XMesaVisual v, XMesaWindow w, XMesaContext c) +PUBLIC XMesaBuffer +XMesaCreateWindowBuffer(XMesaVisual v, XMesaWindow w) { #ifndef XFree86Server XWindowAttributes attr; -#endif -#ifdef FX - char *fxEnvVar; #endif int client = 0; XMesaBuffer b; @@ -1596,7 +1592,6 @@ XMesaCreateWindowBuffer2(XMesaVisual v, XMesaWindow w, XMesaContext c) assert(v); assert(w); - (void) c; /* Check that window depth matches visual depth */ #ifdef XFree86Server @@ -1642,8 +1637,14 @@ XMesaCreateWindowBuffer2(XMesaVisual v, XMesaWindow w, XMesaContext c) return NULL; } + return b; +} + #ifdef FX - fxEnvVar = _mesa_getenv("MESA_GLX_FX"); +void +FXcreateContext(XMesaVisual v, XMesaWindow w, XMesaContext c, XMesaBuffer b) +{ + char *fxEnvVar = _mesa_getenv("MESA_GLX_FX"); if (fxEnvVar) { if (fxEnvVar[0]!='d') { int attribs[100]; @@ -1719,17 +1720,8 @@ XMesaCreateWindowBuffer2(XMesaVisual v, XMesaWindow w, XMesaContext c) _mesa_warning(NULL, " (check the README.3DFX file for more information).\n\n"); _mesa_warning(NULL, " you can disable this message with a 'export MESA_GLX_FX=disable'.\n"); } -#endif - - return b; -} - - -PUBLIC XMesaBuffer -XMesaCreateWindowBuffer(XMesaVisual v, XMesaWindow w) -{ - return XMesaCreateWindowBuffer2( v, w, NULL ); } +#endif /** @@ -2004,9 +1996,9 @@ GLboolean XMesaCopyContext( XMesaContext xm_src, XMesaContext xm_dst, GLuint mas /* * Switch 3Dfx support hack between window and full-screen mode. */ +#ifdef FX GLboolean XMesaSetFXmode( GLint mode ) { -#ifdef FX const char *fx = _mesa_getenv("MESA_GLX_FX"); if (fx && fx[0] != 'd') { GET_CURRENT_CONTEXT(ctx); @@ -2043,11 +2035,15 @@ GLboolean XMesaSetFXmode( GLint mode ) } } /*fprintf(stderr, "fallthrough\n");*/ + return GL_FALSE; +} #else +GLboolean XMesaSetFXmode( GLint mode ) +{ (void) mode; -#endif return GL_FALSE; } +#endif diff --git a/src/mesa/drivers/x11/xmesaP.h b/src/mesa/drivers/x11/xmesaP.h index 98d03ccf62f..170fc678eb2 100644 --- a/src/mesa/drivers/x11/xmesaP.h +++ b/src/mesa/drivers/x11/xmesaP.h @@ -569,9 +569,10 @@ extern void xmesa_register_swrast_functions( GLcontext *ctx ); /* XXX this is a hack to implement shared display lists with 3Dfx */ -extern XMesaBuffer XMesaCreateWindowBuffer2( XMesaVisual v, - XMesaWindow w, - XMesaContext c ); +extern void FXcreateContext( XMesaVisual v, + XMesaWindow w, + XMesaContext c, + XMesaBuffer b ); #define ENABLE_EXT_texure_compression_s3tc 0 /* SW texture compression */ -- cgit v1.2.3 From 4d944b502f8a1ae372d9248e888612bffb5eb6a5 Mon Sep 17 00:00:00 2001 From: George Sapountzis Date: Fri, 20 Apr 2007 18:12:38 +0300 Subject: xmesa: split FX functions to separate file, part 1. --- src/mesa/drivers/x11/xm_api.c | 239 +------------------------------------ src/mesa/drivers/x11/xm_glide.c | 257 ++++++++++++++++++++++++++++++++++++++++ src/mesa/drivers/x11/xm_glide.h | 36 ++++++ src/mesa/drivers/x11/xmesaP.h | 8 +- 4 files changed, 300 insertions(+), 240 deletions(-) create mode 100644 src/mesa/drivers/x11/xm_glide.c create mode 100644 src/mesa/drivers/x11/xm_glide.h (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/x11/xm_api.c b/src/mesa/drivers/x11/xm_api.c index 3e65ebd99b5..692eb5f8078 100644 --- a/src/mesa/drivers/x11/xm_api.c +++ b/src/mesa/drivers/x11/xm_api.c @@ -1640,88 +1640,6 @@ XMesaCreateWindowBuffer(XMesaVisual v, XMesaWindow w) return b; } -#ifdef FX -void -FXcreateContext(XMesaVisual v, XMesaWindow w, XMesaContext c, XMesaBuffer b) -{ - char *fxEnvVar = _mesa_getenv("MESA_GLX_FX"); - if (fxEnvVar) { - if (fxEnvVar[0]!='d') { - int attribs[100]; - int numAttribs = 0; - int hw; - if (v->mesa_visual.depthBits > 0) { - attribs[numAttribs++] = FXMESA_DEPTH_SIZE; - attribs[numAttribs++] = v->mesa_visual.depthBits; - } - if (v->mesa_visual.doubleBufferMode) { - attribs[numAttribs++] = FXMESA_DOUBLEBUFFER; - } - if (v->mesa_visual.accumRedBits > 0) { - attribs[numAttribs++] = FXMESA_ACCUM_SIZE; - attribs[numAttribs++] = v->mesa_visual.accumRedBits; - } - if (v->mesa_visual.stencilBits > 0) { - attribs[numAttribs++] = FXMESA_STENCIL_SIZE; - attribs[numAttribs++] = v->mesa_visual.stencilBits; - } - if (v->mesa_visual.alphaBits > 0) { - attribs[numAttribs++] = FXMESA_ALPHA_SIZE; - attribs[numAttribs++] = v->mesa_visual.alphaBits; - } - if (1) { - attribs[numAttribs++] = FXMESA_SHARE_CONTEXT; - attribs[numAttribs++] = (int) &(c->mesa); - } - attribs[numAttribs++] = FXMESA_NONE; - - /* [dBorca] we should take an envvar for `fxMesaSelectCurrentBoard'!!! */ - hw = fxMesaSelectCurrentBoard(0); - - /* if these fail, there's a new bug somewhere */ - ASSERT(b->mesa_buffer.Width > 0); - ASSERT(b->mesa_buffer.Height > 0); - - if ((hw == GR_SSTTYPE_VOODOO) || (hw == GR_SSTTYPE_Voodoo2)) { - b->FXctx = fxMesaCreateBestContext(0, b->mesa_buffer.Width, - b->mesa_buffer.Height, attribs); - if ((v->undithered_pf!=PF_Index) && (b->backxrb->ximage)) { - b->FXisHackUsable = b->FXctx ? GL_TRUE : GL_FALSE; - if (b->FXctx && (fxEnvVar[0]=='w' || fxEnvVar[0]=='W')) { - b->FXwindowHack = GL_TRUE; - FX_grSstControl(GR_CONTROL_DEACTIVATE); - } - else { - b->FXwindowHack = GL_FALSE; - } - } - } - else { - if (fxEnvVar[0]=='w' || fxEnvVar[0]=='W') - b->FXctx = fxMesaCreateContext(w, GR_RESOLUTION_NONE, - GR_REFRESH_75Hz, attribs); - else - b->FXctx = fxMesaCreateBestContext(0, b->mesa_buffer.Width, - b->mesa_buffer.Height, attribs); - b->FXisHackUsable = GL_FALSE; - b->FXwindowHack = GL_FALSE; - } - /* - fprintf(stderr, - "voodoo %d, wid %d height %d hack: usable %d active %d\n", - hw, b->mesa_buffer.Width, b->mesa_buffer.Height, - b->FXisHackUsable, b->FXwindowHack); - */ - } - } - else { - _mesa_warning(NULL, "WARNING: This Mesa Library includes the Glide driver but\n"); - _mesa_warning(NULL, " you have not defined the MESA_GLX_FX env. var.\n"); - _mesa_warning(NULL, " (check the README.3DFX file for more information).\n\n"); - _mesa_warning(NULL, " you can disable this message with a 'export MESA_GLX_FX=disable'.\n"); - } -} -#endif /** @@ -1993,51 +1911,7 @@ GLboolean XMesaCopyContext( XMesaContext xm_src, XMesaContext xm_dst, GLuint mas #endif /* XFree86Server */ -/* - * Switch 3Dfx support hack between window and full-screen mode. - */ -#ifdef FX -GLboolean XMesaSetFXmode( GLint mode ) -{ - const char *fx = _mesa_getenv("MESA_GLX_FX"); - if (fx && fx[0] != 'd') { - GET_CURRENT_CONTEXT(ctx); - GrHwConfiguration hw; - if (!FX_grSstQueryHardware(&hw)) { - /*fprintf(stderr, "!grSstQueryHardware\n");*/ - return GL_FALSE; - } - if (hw.num_sst < 1) { - /*fprintf(stderr, "hw.num_sst < 1\n");*/ - return GL_FALSE; - } - if (ctx) { - /* [dBorca] Hack alert: - * oh, this is sooo wrong: ctx above is - * really an fxMesaContext, not an XMesaContext - */ - XMesaBuffer xmbuf = XMESA_BUFFER(ctx->DrawBuffer); - if (mode == XMESA_FX_WINDOW) { - if (xmbuf->FXisHackUsable) { - FX_grSstControl(GR_CONTROL_DEACTIVATE); - xmbuf->FXwindowHack = GL_TRUE; - return GL_TRUE; - } - } - else if (mode == XMESA_FX_FULLSCREEN) { - FX_grSstControl(GR_CONTROL_ACTIVATE); - xmbuf->FXwindowHack = GL_FALSE; - return GL_TRUE; - } - else { - /* Error: Bad mode value */ - } - } - } - /*fprintf(stderr, "fallthrough\n");*/ - return GL_FALSE; -} -#else +#ifndef FX GLboolean XMesaSetFXmode( GLint mode ) { (void) mode; @@ -2047,96 +1921,6 @@ GLboolean XMesaSetFXmode( GLint mode ) -#ifdef FX -/* - * Read image from VooDoo frame buffer into X/Mesa's back XImage. - */ -static void FXgetImage( XMesaBuffer b ) -{ - GET_CURRENT_CONTEXT(ctx); - static unsigned short pixbuf[MAX_WIDTH]; - GLuint x, y; - GLuint width, height; - XMesaContext xmesa = XMESA_CONTEXT(ctx); - -#ifdef XFree86Server - x = b->frontxrb->pixmap->x; - y = b->frontxrb->pixmap->y; - width = b->frontxrb->pixmap->width; - height = b->frontxrb->pixmap->height; - depth = b->frontxrb->pixmap->depth; -#else - xmesa_get_window_size(b->display, b, &width, &height); - x = y = 0; -#endif - if (b->mesa_buffer.Width != width || b->mesa_buffer.Height != height) { - b->mesa_buffer.Width = MIN2((int)width, b->FXctx->width); - b->mesa_buffer.Height = MIN2((int)height, b->FXctx->height); - if (b->mesa_buffer.Width & 1) - b->mesa_buffer.Width--; /* prevent odd width */ - } - - /* [dBorca] we're always in the right GR_COLORFORMAT... aren't we? */ - /* grLfbWriteColorFormat(GR_COLORFORMAT_ARGB); */ - if (b->xm_visual->undithered_pf==PF_5R6G5B) { - /* Special case: 16bpp RGB */ - grLfbReadRegion( GR_BUFFER_FRONTBUFFER, /* src buffer */ - 0, b->FXctx->height - b->mesa_buffer.Height, /*pos*/ - b->mesa_buffer.Width, b->mesa_buffer.Height, /* size */ - b->mesa_buffer.Width * sizeof(GLushort), /* stride */ - b->backxrb->ximage->data); /* dest buffer */ - } - else if (b->xm_visual->dithered_pf==PF_Dither - && GET_VISUAL_DEPTH(b->xm_visual)==8) { - /* Special case: 8bpp RGB */ - for (y=0;ymesa_buffer.Height;y++) { - GLubyte *ptr = (GLubyte*) b->backxrb->ximage->data - + b->backxrb->ximage->bytes_per_line * y; - XDITHER_SETUP(y); - - /* read row from 3Dfx frame buffer */ - grLfbReadRegion( GR_BUFFER_FRONTBUFFER, - 0, b->FXctx->height-(b->mesa_buffer.Height-y), - b->mesa_buffer.Width, 1, - 0, - pixbuf ); - - /* write to XImage back buffer */ - for (x=0;xmesa_buffer.Width;x++) { - GLubyte r = (pixbuf[x] & 0xf800) >> 8; - GLubyte g = (pixbuf[x] & 0x07e0) >> 3; - GLubyte b = (pixbuf[x] & 0x001f) << 3; - *ptr++ = XDITHER( x, r, g, b); - } - } - } - else { - /* General case: slow! */ - for (y=0;ymesa_buffer.Height;y++) { - /* read row from 3Dfx frame buffer */ - grLfbReadRegion( GR_BUFFER_FRONTBUFFER, - 0, b->FXctx->height-(b->mesa_buffer.Height-y), - b->mesa_buffer.Width, 1, - 0, - pixbuf ); - - /* write to XImage back buffer */ - for (x=0;xmesa_buffer.Width;x++) { - XMesaPutPixel(b->backxrb->ximage,x,y, - xmesa_color_to_pixel(ctx, - (pixbuf[x] & 0xf800) >> 8, - (pixbuf[x] & 0x07e0) >> 3, - (pixbuf[x] & 0x001f) << 3, - 0xff, - b->xm_visual->undithered_pf)); - } - } - } - /* grLfbWriteColorFormat(GR_COLORFORMAT_ABGR); */ -} -#endif - - /* * Copy the back buffer to the front buffer. If there's no back buffer * this is a no-op. @@ -2159,16 +1943,10 @@ void XMesaSwapBuffers( XMesaBuffer b ) if (b->db_mode) { #ifdef FX - if (b->FXctx) { - fxMesaSwapBuffers(); - - if (b->FXwindowHack) - FXgetImage(b); - else - return; - } + if (FXswapBuffers(b)) + return; #endif - if (b->backxrb->ximage) { + if (b->backxrb->ximage) { /* Copy Ximage (back buf) from client memory to server window */ #if defined(USE_XSHM) && !defined(XFree86Server) if (b->shm) { @@ -2235,13 +2013,8 @@ void XMesaCopySubBuffer( XMesaBuffer b, int x, int y, int width, int height ) if (b->db_mode) { int yTop = b->mesa_buffer.Height - y - height; #ifdef FX - if (b->FXctx) { - fxMesaSwapBuffers(); - if (b->FXwindowHack) - FXgetImage(b); - else - return; - } + if (FXswapBuffers(b)) + return; #endif if (b->backxrb->ximage) { /* Copy Ximage from host's memory to server's window */ diff --git a/src/mesa/drivers/x11/xm_glide.c b/src/mesa/drivers/x11/xm_glide.c new file mode 100644 index 00000000000..37787a7922b --- /dev/null +++ b/src/mesa/drivers/x11/xm_glide.c @@ -0,0 +1,257 @@ +/* + * Mesa 3-D graphics library + * Version: 6.5 + * + * Copyright (C) 1999-2006 Brian Paul All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + + +#include "glxheader.h" +#include "xmesaP.h" + +#ifdef FX +void +FXcreateContext(XMesaVisual v, XMesaWindow w, XMesaContext c, XMesaBuffer b) +{ + char *fxEnvVar = _mesa_getenv("MESA_GLX_FX"); + if (fxEnvVar) { + if (fxEnvVar[0]!='d') { + int attribs[100]; + int numAttribs = 0; + int hw; + if (v->mesa_visual.depthBits > 0) { + attribs[numAttribs++] = FXMESA_DEPTH_SIZE; + attribs[numAttribs++] = v->mesa_visual.depthBits; + } + if (v->mesa_visual.doubleBufferMode) { + attribs[numAttribs++] = FXMESA_DOUBLEBUFFER; + } + if (v->mesa_visual.accumRedBits > 0) { + attribs[numAttribs++] = FXMESA_ACCUM_SIZE; + attribs[numAttribs++] = v->mesa_visual.accumRedBits; + } + if (v->mesa_visual.stencilBits > 0) { + attribs[numAttribs++] = FXMESA_STENCIL_SIZE; + attribs[numAttribs++] = v->mesa_visual.stencilBits; + } + if (v->mesa_visual.alphaBits > 0) { + attribs[numAttribs++] = FXMESA_ALPHA_SIZE; + attribs[numAttribs++] = v->mesa_visual.alphaBits; + } + if (1) { + attribs[numAttribs++] = FXMESA_SHARE_CONTEXT; + attribs[numAttribs++] = (int) &(c->mesa); + } + attribs[numAttribs++] = FXMESA_NONE; + + /* [dBorca] we should take an envvar for `fxMesaSelectCurrentBoard'!!! */ + hw = fxMesaSelectCurrentBoard(0); + + /* if these fail, there's a new bug somewhere */ + ASSERT(b->mesa_buffer.Width > 0); + ASSERT(b->mesa_buffer.Height > 0); + + if ((hw == GR_SSTTYPE_VOODOO) || (hw == GR_SSTTYPE_Voodoo2)) { + b->FXctx = fxMesaCreateBestContext(0, b->mesa_buffer.Width, + b->mesa_buffer.Height, attribs); + if ((v->undithered_pf!=PF_Index) && (b->backxrb->ximage)) { + b->FXisHackUsable = b->FXctx ? GL_TRUE : GL_FALSE; + if (b->FXctx && (fxEnvVar[0]=='w' || fxEnvVar[0]=='W')) { + b->FXwindowHack = GL_TRUE; + FX_grSstControl(GR_CONTROL_DEACTIVATE); + } + else { + b->FXwindowHack = GL_FALSE; + } + } + } + else { + if (fxEnvVar[0]=='w' || fxEnvVar[0]=='W') + b->FXctx = fxMesaCreateContext(w, GR_RESOLUTION_NONE, + GR_REFRESH_75Hz, attribs); + else + b->FXctx = fxMesaCreateBestContext(0, b->mesa_buffer.Width, + b->mesa_buffer.Height, attribs); + b->FXisHackUsable = GL_FALSE; + b->FXwindowHack = GL_FALSE; + } + /* + fprintf(stderr, + "voodoo %d, wid %d height %d hack: usable %d active %d\n", + hw, b->mesa_buffer.Width, b->mesa_buffer.Height, + b->FXisHackUsable, b->FXwindowHack); + */ + } + } + else { + _mesa_warning(NULL, "WARNING: This Mesa Library includes the Glide driver but\n"); + _mesa_warning(NULL, " you have not defined the MESA_GLX_FX env. var.\n"); + _mesa_warning(NULL, " (check the README.3DFX file for more information).\n\n"); + _mesa_warning(NULL, " you can disable this message with a 'export MESA_GLX_FX=disable'.\n"); + } +} + + +/* + * Read image from VooDoo frame buffer into X/Mesa's back XImage. + */ +static void FXgetImage( XMesaBuffer b ) +{ + GET_CURRENT_CONTEXT(ctx); + static unsigned short pixbuf[MAX_WIDTH]; + GLuint x, y; + GLuint width, height; + XMesaContext xmesa = XMESA_CONTEXT(ctx); + +#ifdef XFree86Server + x = b->frontxrb->pixmap->x; + y = b->frontxrb->pixmap->y; + width = b->frontxrb->pixmap->width; + height = b->frontxrb->pixmap->height; + depth = b->frontxrb->pixmap->depth; +#else + xmesa_get_window_size(b->display, b, &width, &height); + x = y = 0; +#endif + if (b->mesa_buffer.Width != width || b->mesa_buffer.Height != height) { + b->mesa_buffer.Width = MIN2((int)width, b->FXctx->width); + b->mesa_buffer.Height = MIN2((int)height, b->FXctx->height); + if (b->mesa_buffer.Width & 1) + b->mesa_buffer.Width--; /* prevent odd width */ + } + + /* [dBorca] we're always in the right GR_COLORFORMAT... aren't we? */ + /* grLfbWriteColorFormat(GR_COLORFORMAT_ARGB); */ + if (b->xm_visual->undithered_pf==PF_5R6G5B) { + /* Special case: 16bpp RGB */ + grLfbReadRegion( GR_BUFFER_FRONTBUFFER, /* src buffer */ + 0, b->FXctx->height - b->mesa_buffer.Height, /*pos*/ + b->mesa_buffer.Width, b->mesa_buffer.Height, /* size */ + b->mesa_buffer.Width * sizeof(GLushort), /* stride */ + b->backxrb->ximage->data); /* dest buffer */ + } + else if (b->xm_visual->dithered_pf==PF_Dither + && GET_VISUAL_DEPTH(b->xm_visual)==8) { + /* Special case: 8bpp RGB */ + for (y=0;ymesa_buffer.Height;y++) { + GLubyte *ptr = (GLubyte*) b->backxrb->ximage->data + + b->backxrb->ximage->bytes_per_line * y; + XDITHER_SETUP(y); + + /* read row from 3Dfx frame buffer */ + grLfbReadRegion( GR_BUFFER_FRONTBUFFER, + 0, b->FXctx->height-(b->mesa_buffer.Height-y), + b->mesa_buffer.Width, 1, + 0, + pixbuf ); + + /* write to XImage back buffer */ + for (x=0;xmesa_buffer.Width;x++) { + GLubyte r = (pixbuf[x] & 0xf800) >> 8; + GLubyte g = (pixbuf[x] & 0x07e0) >> 3; + GLubyte b = (pixbuf[x] & 0x001f) << 3; + *ptr++ = XDITHER( x, r, g, b); + } + } + } + else { + /* General case: slow! */ + for (y=0;ymesa_buffer.Height;y++) { + /* read row from 3Dfx frame buffer */ + grLfbReadRegion( GR_BUFFER_FRONTBUFFER, + 0, b->FXctx->height-(b->mesa_buffer.Height-y), + b->mesa_buffer.Width, 1, + 0, + pixbuf ); + + /* write to XImage back buffer */ + for (x=0;xmesa_buffer.Width;x++) { + XMesaPutPixel(b->backxrb->ximage,x,y, + xmesa_color_to_pixel(ctx, + (pixbuf[x] & 0xf800) >> 8, + (pixbuf[x] & 0x07e0) >> 3, + (pixbuf[x] & 0x001f) << 3, + 0xff, + b->xm_visual->undithered_pf)); + } + } + } + /* grLfbWriteColorFormat(GR_COLORFORMAT_ABGR); */ +} + + +GLboolean FXswapBuffers( XMesaBuffer b ) +{ + if (b->FXctx) { + fxMesaSwapBuffers(); + + if (!b->FXwindowHack) + return GL_TRUE; + + FXgetImage(b); + } + return GL_FALSE; +} + + +/* + * Switch 3Dfx support hack between window and full-screen mode. + */ +GLboolean XMesaSetFXmode( GLint mode ) +{ + const char *fx = _mesa_getenv("MESA_GLX_FX"); + if (fx && fx[0] != 'd') { + GET_CURRENT_CONTEXT(ctx); + GrHwConfiguration hw; + if (!FX_grSstQueryHardware(&hw)) { + /*fprintf(stderr, "!grSstQueryHardware\n");*/ + return GL_FALSE; + } + if (hw.num_sst < 1) { + /*fprintf(stderr, "hw.num_sst < 1\n");*/ + return GL_FALSE; + } + if (ctx) { + /* [dBorca] Hack alert: + * oh, this is sooo wrong: ctx above is + * really an fxMesaContext, not an XMesaContext + */ + XMesaBuffer xmbuf = XMESA_BUFFER(ctx->DrawBuffer); + if (mode == XMESA_FX_WINDOW) { + if (xmbuf->FXisHackUsable) { + FX_grSstControl(GR_CONTROL_DEACTIVATE); + xmbuf->FXwindowHack = GL_TRUE; + return GL_TRUE; + } + } + else if (mode == XMESA_FX_FULLSCREEN) { + FX_grSstControl(GR_CONTROL_ACTIVATE); + xmbuf->FXwindowHack = GL_FALSE; + return GL_TRUE; + } + else { + /* Error: Bad mode value */ + } + } + } + /*fprintf(stderr, "fallthrough\n");*/ + return GL_FALSE; +} +#endif diff --git a/src/mesa/drivers/x11/xm_glide.h b/src/mesa/drivers/x11/xm_glide.h new file mode 100644 index 00000000000..7458c57415a --- /dev/null +++ b/src/mesa/drivers/x11/xm_glide.h @@ -0,0 +1,36 @@ +/* + * Mesa 3-D graphics library + * Version: 6.5 + * + * Copyright (C) 1999-2006 Brian Paul All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + + +#ifndef _XM_GLIDE_H_ +#define _XM_GLIDE_H_ + +extern void FXcreateContext( XMesaVisual v, + XMesaWindow w, + XMesaContext c, + XMesaBuffer b ); + +extern GLboolean FXswapBuffers( XMesaBuffer b ); + +#endif /* _XM_GLIDE_H_ */ diff --git a/src/mesa/drivers/x11/xmesaP.h b/src/mesa/drivers/x11/xmesaP.h index 170fc678eb2..cae5c0d9bc5 100644 --- a/src/mesa/drivers/x11/xmesaP.h +++ b/src/mesa/drivers/x11/xmesaP.h @@ -32,6 +32,7 @@ #if defined(FX) #include "GL/fxmesa.h" #include "../glide/fxdrv.h" +#include "xm_glide.h" #endif #ifdef XFree86Server #include "xm_image.h" @@ -568,13 +569,6 @@ extern void xmesa_register_swrast_functions( GLcontext *ctx ); -/* XXX this is a hack to implement shared display lists with 3Dfx */ -extern void FXcreateContext( XMesaVisual v, - XMesaWindow w, - XMesaContext c, - XMesaBuffer b ); - - #define ENABLE_EXT_texure_compression_s3tc 0 /* SW texture compression */ #ifdef XFree86Server -- cgit v1.2.3 From 6346a753c6e77373cffcec6dd0df253efd159dd4 Mon Sep 17 00:00:00 2001 From: George Sapountzis Date: Fri, 20 Apr 2007 18:25:42 +0300 Subject: xmesa: split FX functions to separate file, part 2. --- src/mesa/drivers/x11/xm_api.c | 21 ++++++++------------- src/mesa/drivers/x11/xm_glide.c | 21 ++++++++++++++++++++- src/mesa/drivers/x11/xm_glide.h | 4 ++++ src/mesa/drivers/x11/xmesaP.h | 1 - 4 files changed, 32 insertions(+), 15 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/x11/xm_api.c b/src/mesa/drivers/x11/xm_api.c index 692eb5f8078..5e2327a2d3b 100644 --- a/src/mesa/drivers/x11/xm_api.c +++ b/src/mesa/drivers/x11/xm_api.c @@ -1557,12 +1557,11 @@ PUBLIC void XMesaDestroyContext( XMesaContext c ) { GLcontext *mesaCtx = &c->mesa; -#ifdef FX - XMesaBuffer xmbuf = XMESA_BUFFER(mesaCtx->DrawBuffer); - if (xmbuf && xmbuf->FXctx) - fxMesaDestroyContext(xmbuf->FXctx); +#ifdef FX + FXdestroyContext( XMESA_BUFFER(mesaCtx->DrawBuffer) ); #endif + _swsetup_DestroyContext( mesaCtx ); _swrast_DestroyContext( mesaCtx ); _tnl_DestroyContext( mesaCtx ); @@ -1767,15 +1766,6 @@ GLboolean XMesaMakeCurrent2( XMesaContext c, XMesaBuffer drawBuffer, if (!drawBuffer || !readBuffer) return GL_FALSE; /* must specify buffers! */ -#ifdef FX - if (drawBuffer->FXctx) { - fxMesaMakeCurrent(drawBuffer->FXctx); - - c->xm_buffer = drawBuffer; - - return GL_TRUE; - } -#endif if (&(c->mesa) == _mesa_get_current_context() && c->mesa.DrawBuffer == &drawBuffer->mesa_buffer && c->mesa.ReadBuffer == &readBuffer->mesa_buffer @@ -1786,6 +1776,11 @@ GLboolean XMesaMakeCurrent2( XMesaContext c, XMesaBuffer drawBuffer, c->xm_buffer = drawBuffer; +#ifdef FX + if (FXmakeCurrent( drawBuffer )) + return GL_TRUE; +#endif + /* Call this periodically to detect when the user has begun using * GL rendering from multiple threads. */ diff --git a/src/mesa/drivers/x11/xm_glide.c b/src/mesa/drivers/x11/xm_glide.c index 37787a7922b..ae4f4282dbb 100644 --- a/src/mesa/drivers/x11/xm_glide.c +++ b/src/mesa/drivers/x11/xm_glide.c @@ -27,6 +27,8 @@ #include "xmesaP.h" #ifdef FX +#include "../glide/fxdrv.h" + void FXcreateContext(XMesaVisual v, XMesaWindow w, XMesaContext c, XMesaBuffer b) { @@ -109,6 +111,24 @@ FXcreateContext(XMesaVisual v, XMesaWindow w, XMesaContext c, XMesaBuffer b) } +void FXdestroyContext( XMesaBuffer b ) +{ + if (b && b->FXctx) + fxMesaDestroyContext(b->FXctx); +} + + +GLboolean FXmakeCurrent( XMesaBuffer b ) +{ + if (b->FXctx) { + fxMesaMakeCurrent(b->FXctx); + + return GL_TRUE; + } + return GL_FALSE; +} + + /* * Read image from VooDoo frame buffer into X/Mesa's back XImage. */ @@ -118,7 +138,6 @@ static void FXgetImage( XMesaBuffer b ) static unsigned short pixbuf[MAX_WIDTH]; GLuint x, y; GLuint width, height; - XMesaContext xmesa = XMESA_CONTEXT(ctx); #ifdef XFree86Server x = b->frontxrb->pixmap->x; diff --git a/src/mesa/drivers/x11/xm_glide.h b/src/mesa/drivers/x11/xm_glide.h index 7458c57415a..f7d0316524d 100644 --- a/src/mesa/drivers/x11/xm_glide.h +++ b/src/mesa/drivers/x11/xm_glide.h @@ -31,6 +31,10 @@ extern void FXcreateContext( XMesaVisual v, XMesaContext c, XMesaBuffer b ); +extern void FXdestroyContext( XMesaBuffer b ); + +extern GLboolean FXmakeCurrent( XMesaBuffer b ); + extern GLboolean FXswapBuffers( XMesaBuffer b ); #endif /* _XM_GLIDE_H_ */ diff --git a/src/mesa/drivers/x11/xmesaP.h b/src/mesa/drivers/x11/xmesaP.h index cae5c0d9bc5..01988867476 100644 --- a/src/mesa/drivers/x11/xmesaP.h +++ b/src/mesa/drivers/x11/xmesaP.h @@ -31,7 +31,6 @@ #include "mtypes.h" #if defined(FX) #include "GL/fxmesa.h" -#include "../glide/fxdrv.h" #include "xm_glide.h" #endif #ifdef XFree86Server -- cgit v1.2.3 From e4e2068ac9d21ce50e863ccf3171462ab61c3ec8 Mon Sep 17 00:00:00 2001 From: George Sapountzis Date: Wed, 18 Apr 2007 23:44:01 +0300 Subject: xmesa: minor cosmetic mainly drop 'client' argument from initialize_visual_and_buffer(). --- src/mesa/drivers/x11/xm_api.c | 54 ++++++++++++++++++++----------------------- 1 file changed, 25 insertions(+), 29 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/x11/xm_api.c b/src/mesa/drivers/x11/xm_api.c index 5e2327a2d3b..212f7b576e0 100644 --- a/src/mesa/drivers/x11/xm_api.c +++ b/src/mesa/drivers/x11/xm_api.c @@ -1036,10 +1036,16 @@ setup_monochrome( XMesaVisual v, XMesaBuffer b ) * \return GL_TRUE=success, GL_FALSE=failure */ static GLboolean -initialize_visual_and_buffer(int client, XMesaVisual v, XMesaBuffer b, +initialize_visual_and_buffer(XMesaVisual v, XMesaBuffer b, GLboolean rgb_flag, XMesaDrawable window, XMesaColormap cmap) { + int client = 0; + +#ifdef XFree86Server + client = (window) ? CLIENT_ID(window->id) : 0; +#endif + ASSERT(!b || b->xm_visual == v); /* Save true bits/pixel */ @@ -1103,6 +1109,8 @@ initialize_visual_and_buffer(int client, XMesaVisual v, XMesaBuffer b, } if (b && window) { + char *data; + /* Do window-specific initializations */ /* these should have been set in create_xmesa_buffer */ @@ -1170,15 +1178,15 @@ initialize_visual_and_buffer(int client, XMesaVisual v, XMesaBuffer b, } /* Initialize the row buffer XImage for use in write_color_span() */ + data = (char*) MALLOC(MAX_WIDTH*4); #ifdef XFree86Server - b->rowimage = XMesaCreateImage(GET_VISUAL_DEPTH(v), MAX_WIDTH, 1, - (char *)MALLOC(MAX_WIDTH*4)); + b->rowimage = XMesaCreateImage(GET_VISUAL_DEPTH(v), MAX_WIDTH, 1, data); #else b->rowimage = XCreateImage( v->display, v->visinfo->visual, v->visinfo->depth, ZPixmap, 0, /*format, offset*/ - (char*) MALLOC(MAX_WIDTH*4), /*data*/ + data, /*data*/ MAX_WIDTH, 1, /*width, height*/ 32, /*bitmap_pad*/ 0 /*bytes_per_line*/ ); @@ -1410,7 +1418,7 @@ XMesaVisual XMesaCreateVisual( XMesaDisplay *display, if (alpha_flag) v->mesa_visual.alphaBits = 8; - (void) initialize_visual_and_buffer( 0, v, NULL, rgb_flag, 0, 0 ); + (void) initialize_visual_and_buffer( v, NULL, rgb_flag, 0, 0 ); { const int xclass = v->mesa_visual.visualType; @@ -1585,31 +1593,25 @@ XMesaCreateWindowBuffer(XMesaVisual v, XMesaWindow w) #ifndef XFree86Server XWindowAttributes attr; #endif - int client = 0; XMesaBuffer b; XMesaColormap cmap; + int depth; assert(v); assert(w); /* Check that window depth matches visual depth */ #ifdef XFree86Server - client = CLIENT_ID(((XMesaDrawable)w)->id); - - if (GET_VISUAL_DEPTH(v) != ((XMesaDrawable)w)->depth) { - _mesa_warning(NULL, "XMesaCreateWindowBuffer: depth mismatch between visual (%d) and window (%d)!\n", - GET_VISUAL_DEPTH(v), ((XMesaDrawable) w)->depth); - return NULL; - } + depth = ((XMesaDrawable)w)->depth; #else XGetWindowAttributes( v->display, w, &attr ); - - if (GET_VISUAL_DEPTH(v) != attr.depth) { + depth = attr.depth; +#endif + if (GET_VISUAL_DEPTH(v) != depth) { _mesa_warning(NULL, "XMesaCreateWindowBuffer: depth mismatch between visual (%d) and window (%d)!\n", - GET_VISUAL_DEPTH(v), attr.depth); + GET_VISUAL_DEPTH(v), depth); return NULL; } -#endif /* Find colormap */ #ifdef XFree86Server @@ -1630,7 +1632,7 @@ XMesaCreateWindowBuffer(XMesaVisual v, XMesaWindow w) if (!b) return NULL; - if (!initialize_visual_and_buffer( client, v, b, v->mesa_visual.rgbMode, + if (!initialize_visual_and_buffer( v, b, v->mesa_visual.rgbMode, (XMesaDrawable) w, cmap )) { xmesa_free_buffer(b); return NULL; @@ -1653,7 +1655,6 @@ XMesaCreateWindowBuffer(XMesaVisual v, XMesaWindow w) PUBLIC XMesaBuffer XMesaCreatePixmapBuffer(XMesaVisual v, XMesaPixmap p, XMesaColormap cmap) { - int client = 0; XMesaBuffer b; assert(v); @@ -1662,11 +1663,7 @@ XMesaCreatePixmapBuffer(XMesaVisual v, XMesaPixmap p, XMesaColormap cmap) if (!b) return NULL; -#ifdef XFree86Server - client = CLIENT_ID(((XMesaDrawable)p)->id); -#endif - - if (!initialize_visual_and_buffer(client, v, b, v->mesa_visual.rgbMode, + if (!initialize_visual_and_buffer(v, b, v->mesa_visual.rgbMode, (XMesaDrawable) p, cmap)) { xmesa_free_buffer(b); return NULL; @@ -1681,10 +1678,7 @@ XMesaBuffer XMesaCreatePBuffer(XMesaVisual v, XMesaColormap cmap, unsigned int width, unsigned int height) { -#ifdef XFree86Server - return 0; -#else - int client = 0; +#ifndef XFree86Server XMesaWindow root; XMesaDrawable drawable; /* X Pixmap Drawable */ XMesaBuffer b; @@ -1700,13 +1694,15 @@ XMesaCreatePBuffer(XMesaVisual v, XMesaColormap cmap, if (!b) return NULL; - if (!initialize_visual_and_buffer(client, v, b, v->mesa_visual.rgbMode, + if (!initialize_visual_and_buffer(v, b, v->mesa_visual.rgbMode, drawable, cmap)) { xmesa_free_buffer(b); return NULL; } return b; +#else + return 0; #endif } -- cgit v1.2.3 From 5491c8194c03761a1a45a17539db6bc241bacf9c Mon Sep 17 00:00:00 2001 From: George Sapountzis Date: Fri, 20 Apr 2007 18:51:20 +0300 Subject: xmesa: call _glapi_set_dispatch() for all xserver DDXes. This is to unify the xmesa code across xserver DDX'es. The call is intented for XGL, but it does not hurt to call for other DDX'es. In fact it was not guarded against XGL when it was first added in xserver. --- src/mesa/drivers/x11/xm_api.c | 2 -- 1 file changed, 2 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/x11/xm_api.c b/src/mesa/drivers/x11/xm_api.c index 212f7b576e0..a07d0a90cf3 100644 --- a/src/mesa/drivers/x11/xm_api.c +++ b/src/mesa/drivers/x11/xm_api.c @@ -1869,9 +1869,7 @@ PUBLIC GLboolean XMesaForceCurrent(XMesaContext c) { if (c) { -#ifdef XGLServer _glapi_set_dispatch(c->mesa.CurrentDispatch); -#endif if (&(c->mesa) != _mesa_get_current_context()) { _mesa_make_current(&c->mesa, c->mesa.DrawBuffer, c->mesa.ReadBuffer); -- cgit v1.2.3 From b1502588c4755fa9d3d7b4eabed6332575033037 Mon Sep 17 00:00:00 2001 From: Brian Date: Sat, 21 Apr 2007 12:54:23 -0600 Subject: s/occlude.h/queryobj.h/ --- src/mesa/drivers/common/driverfuncs.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/common/driverfuncs.c b/src/mesa/drivers/common/driverfuncs.c index f543de183a1..adf9aafe596 100644 --- a/src/mesa/drivers/common/driverfuncs.c +++ b/src/mesa/drivers/common/driverfuncs.c @@ -28,9 +28,9 @@ #include "buffers.h" #include "context.h" #include "framebuffer.h" -#include "occlude.h" #include "program.h" #include "prog_execute.h" +#include "queryobj.h" #include "renderbuffer.h" #include "texcompress.h" #include "texformat.h" -- cgit v1.2.3 From ad02042db2802733bc27809ad05d97db5966fd11 Mon Sep 17 00:00:00 2001 From: Sean D'Epagnier Date: Sat, 21 Apr 2007 20:18:42 -0700 Subject: Fixed fallout, glfbdev driver was calling a nop function that was removed. --- src/mesa/drivers/fbdev/glfbdev.c | 1 - 1 file changed, 1 deletion(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/fbdev/glfbdev.c b/src/mesa/drivers/fbdev/glfbdev.c index f9d57dbdd81..0ece3864d08 100644 --- a/src/mesa/drivers/fbdev/glfbdev.c +++ b/src/mesa/drivers/fbdev/glfbdev.c @@ -802,7 +802,6 @@ glFBDevDestroyContext( GLFBDevContextPtr context ) if (fbdevctx == context) { /* destroying current context */ _mesa_make_current(NULL, NULL, NULL); - _mesa_notifyDestroy(&context->glcontext); } _mesa_free_context_data(&context->glcontext); _mesa_free(context); -- cgit v1.2.3 From 47ad443c55cf07b32bac04b97066cfd3c2aa3554 Mon Sep 17 00:00:00 2001 From: Sean D'Epagnier Date: Mon, 23 Apr 2007 21:17:30 -0700 Subject: Added proper cleanup code --- src/mesa/drivers/fbdev/glfbdev.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/fbdev/glfbdev.c b/src/mesa/drivers/fbdev/glfbdev.c index 0ece3864d08..6c6511b7e53 100644 --- a/src/mesa/drivers/fbdev/glfbdev.c +++ b/src/mesa/drivers/fbdev/glfbdev.c @@ -682,9 +682,16 @@ glFBDevDestroyBuffer( GLFBDevBufferPtr buffer ) if (buffer == curDraw || buffer == curRead) { glFBDevMakeCurrent( NULL, NULL, NULL); } +#if 0 /* free the software depth, stencil, accum buffers */ _mesa_free_framebuffer_data(&buffer->glframebuffer); _mesa_free(buffer); +#else + { + struct gl_framebuffer *fb = &buffer->glframebuffer; + _mesa_unreference_framebuffer(&fb); + } +#endif } } @@ -799,6 +806,13 @@ glFBDevDestroyContext( GLFBDevContextPtr context ) GLFBDevContextPtr fbdevctx = glFBDevGetCurrentContext(); if (context) { + GLcontext *mesaCtx = &context->glcontext; + + _swsetup_DestroyContext( mesaCtx ); + _swrast_DestroyContext( mesaCtx ); + _tnl_DestroyContext( mesaCtx ); + _vbo_DestroyContext( mesaCtx ); + if (fbdevctx == context) { /* destroying current context */ _mesa_make_current(NULL, NULL, NULL); -- cgit v1.2.3 From 286faac68e7f8c51fd1afa801c75db33a427f8b6 Mon Sep 17 00:00:00 2001 From: Karl Schultz Date: Tue, 24 Apr 2007 08:53:28 -0600 Subject: assorted fixes for Windows/VC8 --- src/glu/sgi/glu.def | 2 +- src/glut/glx/glut_win.c | 6 ++++++ src/mesa/drivers/osmesa/osmesa.def | 2 +- src/mesa/drivers/windows/gdi/mesa.def | 37 +++++++++++++++++++++++++++++++--- src/mesa/drivers/windows/gdi/wmesa.c | 22 ++++++++++++++++++++ src/mesa/main/imports.c | 4 ++-- src/mesa/shader/slang/slang_vartable.c | 2 +- 7 files changed, 67 insertions(+), 8 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/glu/sgi/glu.def b/src/glu/sgi/glu.def index ffec651a0a4..0c8b021767e 100644 --- a/src/glu/sgi/glu.def +++ b/src/glu/sgi/glu.def @@ -1,4 +1,4 @@ -DESCRIPTION 'Mesa GLU (OpenGL work-alike) for Win32' +;DESCRIPTION 'Mesa GLU (OpenGL work-alike) for Win32' VERSION 5.1 ; ; Module definition file for GLU (GLU32.DLL) diff --git a/src/glut/glx/glut_win.c b/src/glut/glx/glut_win.c index 0f48e0ba339..18554b3e97f 100644 --- a/src/glut/glx/glut_win.c +++ b/src/glut/glx/glut_win.c @@ -349,12 +349,18 @@ getVisualInfoRGB(unsigned int mode) __glutScreen, list); } +#ifndef VisualIDMask +#define VisualIDMask 0 +#endif + static XVisualInfo * getVisualInfoID(int id) { XVisualInfo temp; int count; +#if !defined(_WIN32) temp.visualid = id; +#endif return XGetVisualInfo(__glutDisplay, VisualIDMask, &temp, &count); } diff --git a/src/mesa/drivers/osmesa/osmesa.def b/src/mesa/drivers/osmesa/osmesa.def index a92a30f351d..71e96873d81 100644 --- a/src/mesa/drivers/osmesa/osmesa.def +++ b/src/mesa/drivers/osmesa/osmesa.def @@ -1,4 +1,4 @@ -DESCRIPTION 'Mesa OSMesa lib for Win32' +;DESCRIPTION 'Mesa OSMesa lib for Win32' VERSION 4.1 EXPORTS diff --git a/src/mesa/drivers/windows/gdi/mesa.def b/src/mesa/drivers/windows/gdi/mesa.def index 8d654281215..c525945426f 100644 --- a/src/mesa/drivers/windows/gdi/mesa.def +++ b/src/mesa/drivers/windows/gdi/mesa.def @@ -1,6 +1,6 @@ ; DO NOT EDIT - This file generated automatically by mesadef.py script -DESCRIPTION 'Mesa (OpenGL work-alike) for Win32' -VERSION 6.0 +;DESCRIPTION 'Mesa (OpenGL work-alike) for Win32' +VERSION 6.5 ; ; Module definition file for Mesa (OPENGL32.DLL) ; @@ -867,6 +867,8 @@ EXPORTS _glapi_get_proc_address _mesa_add_soft_renderbuffers _mesa_add_renderbuffer + _mesa_attach_shader + _mesa_bind_attrib_location _mesa_buffer_data _mesa_buffer_get_subdata _mesa_buffer_map @@ -875,15 +877,21 @@ EXPORTS _mesa_bzero _mesa_calloc _mesa_choose_tex_format + _mesa_compile_shader _mesa_compressed_texture_size _mesa_create_framebuffer + _mesa_create_program + _mesa_create_shader _mesa_create_visual _mesa_delete_array_object _mesa_delete_buffer_object _mesa_delete_program + _mesa_delete_program2 + _mesa_delete_shader _mesa_delete_texture_object _mesa_destroy_framebuffer _mesa_destroy_visual + _mesa_detach_shader _mesa_enable_1_3_extensions _mesa_enable_1_4_extensions _mesa_enable_1_5_extensions @@ -894,13 +902,28 @@ EXPORTS _mesa_free _mesa_free_context_data _mesa_free_texture_image_data + _mesa_get_active_attrib + _mesa_get_active_uniform + _mesa_get_attached_shaders + _mesa_get_attrib_location _mesa_get_compressed_teximage _mesa_get_current_context + _mesa_get_handle + _mesa_get_programiv + _mesa_get_program_info_log + _mesa_get_program_register + _mesa_get_shaderiv + _mesa_get_shader_info_log + _mesa_get_shader_source _mesa_get_teximage - _mesa_init_default_imports + _mesa_get_uniformfv + _mesa_get_uniform_location _mesa_init_driver_functions _mesa_init_renderbuffer _mesa_initialize_context + _mesa_is_program + _mesa_is_shader + _mesa_link_program _mesa_make_current _mesa_memcpy _mesa_memset @@ -914,10 +937,12 @@ EXPORTS _mesa_new_texture_image _mesa_new_texture_object _mesa_problem + _mesa_reference_renderbuffer _mesa_remove_renderbuffer _mesa_render_texture _mesa_ResizeBuffersMESA _mesa_resize_framebuffer + _mesa_shader_source _mesa_store_compressed_teximage1d _mesa_store_compressed_teximage2d _mesa_store_compressed_teximage3d @@ -932,7 +957,12 @@ EXPORTS _mesa_store_texsubimage3d _mesa_strcmp _mesa_test_proxy_teximage + _mesa_uniform + _mesa_uniform_matrix + _mesa_unreference_framebuffer _mesa_update_framebuffer_visual + _mesa_use_program + _mesa_validate_program _mesa_Viewport _swrast_Accum _swrast_Bitmap @@ -954,6 +984,7 @@ EXPORTS _swrast_copy_texsubimage3d _swrast_CreateContext _swrast_DestroyContext + _swrast_exec_fragment_program _swrast_InvalidateState _swrast_ReadPixels _swsetup_Wakeup diff --git a/src/mesa/drivers/windows/gdi/wmesa.c b/src/mesa/drivers/windows/gdi/wmesa.c index 078b590af87..00d9ee77835 100644 --- a/src/mesa/drivers/windows/gdi/wmesa.c +++ b/src/mesa/drivers/windows/gdi/wmesa.c @@ -1448,3 +1448,25 @@ void gl_dispatch_stub_761(void){}; void gl_dispatch_stub_766(void){}; void gl_dispatch_stub_767(void){}; void gl_dispatch_stub_768(void){}; + +void gl_dispatch_stub_562(void){}; +void gl_dispatch_stub_563(void){}; +void gl_dispatch_stub_564(void){}; +void gl_dispatch_stub_567(void){}; +void gl_dispatch_stub_568(void){}; +void gl_dispatch_stub_569(void){}; +void gl_dispatch_stub_580(void){}; +void gl_dispatch_stub_581(void){}; +void gl_dispatch_stub_606(void){}; +void gl_dispatch_stub_654(void){}; +void gl_dispatch_stub_655(void){}; +void gl_dispatch_stub_656(void){}; +void gl_dispatch_stub_739(void){}; +void gl_dispatch_stub_740(void){}; +void gl_dispatch_stub_741(void){}; +void gl_dispatch_stub_748(void){}; +void gl_dispatch_stub_749(void){}; +void gl_dispatch_stub_769(void){}; +void gl_dispatch_stub_770(void){}; +void gl_dispatch_stub_771(void){}; + diff --git a/src/mesa/main/imports.c b/src/mesa/main/imports.c index 9de7a89c998..786f812fce2 100644 --- a/src/mesa/main/imports.c +++ b/src/mesa/main/imports.c @@ -584,11 +584,11 @@ _mesa_ffsll(long long val) assert(sizeof(val) == 8); - bit = ffs(val); + bit = _mesa_ffs(val); if (bit != 0) return bit; - bit = ffs(val >> 32); + bit = _mesa_ffs(val >> 32); if (bit != 0) return 32 + bit; diff --git a/src/mesa/shader/slang/slang_vartable.c b/src/mesa/shader/slang/slang_vartable.c index 5814481ea79..8a3c299d19c 100644 --- a/src/mesa/shader/slang/slang_vartable.c +++ b/src/mesa/shader/slang/slang_vartable.c @@ -319,9 +319,9 @@ GLboolean _slang_is_temp(const slang_var_table *vt, const slang_ir_storage *store) { struct table *t = vt->Top; + GLuint comp; assert(store->Index >= 0); assert(store->Index < vt->MaxRegisters); - GLuint comp; if (store->Swizzle == SWIZZLE_NOOP) comp = 0; else -- cgit v1.2.3 From c93b2a1cb71cef1a7fe900fb937a510ae4005ff2 Mon Sep 17 00:00:00 2001 From: Brian Date: Tue, 24 Apr 2007 22:22:14 -0600 Subject: s/fog/attrib[FRAG_ATTRIB_FOGC][0]/ --- src/mesa/drivers/dri/mach64/mach64_native_vb.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/mach64/mach64_native_vb.c b/src/mesa/drivers/dri/mach64/mach64_native_vb.c index 519ec81e548..81bcf802c71 100644 --- a/src/mesa/drivers/dri/mach64/mach64_native_vb.c +++ b/src/mesa/drivers/dri/mach64/mach64_native_vb.c @@ -81,7 +81,7 @@ void TAG(translate_vertex)(GLcontext *ctx, dst->specular[2] = ((GLubyte *)p)[0]; dst->specular[1] = ((GLubyte *)p)[1]; dst->specular[0] = ((GLubyte *)p)[2]; - dst->fog = ((GLubyte *)p)[3]; + dst->attrib[FRAG_ATTRIB_FOGC][0] = ((GLubyte *)p)[3]; p++; case TINY_VERTEX_FORMAT: -- cgit v1.2.3 From 1606f2c1230cc01482b5dacb7596835a00299411 Mon Sep 17 00:00:00 2001 From: Brian Date: Thu, 26 Apr 2007 07:49:33 -0600 Subject: enable 2.1 extensions --- src/mesa/drivers/windows/gdi/wmesa.c | 1 + 1 file changed, 1 insertion(+) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/windows/gdi/wmesa.c b/src/mesa/drivers/windows/gdi/wmesa.c index 00d9ee77835..c5cd2c615b7 100644 --- a/src/mesa/drivers/windows/gdi/wmesa.c +++ b/src/mesa/drivers/windows/gdi/wmesa.c @@ -1239,6 +1239,7 @@ WMesaContext WMesaCreateContext(HDC hDC, _mesa_enable_1_4_extensions(ctx); _mesa_enable_1_5_extensions(ctx); _mesa_enable_2_0_extensions(ctx); + _mesa_enable_2_1_extensions(ctx); /* Initialize the software rasterizer and helper modules. */ if (!_swrast_CreateContext(ctx) || -- cgit v1.2.3 From cce5084941f3cd23678d07569a07b6b9cf958868 Mon Sep 17 00:00:00 2001 From: Brian Date: Fri, 27 Apr 2007 15:41:07 -0600 Subject: "Fix" for bug 9170. May need more attention. --- src/mesa/drivers/dri/r300/r300_state.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_state.c b/src/mesa/drivers/dri/r300/r300_state.c index b941af19966..4730fdff749 100644 --- a/src/mesa/drivers/dri/r300/r300_state.c +++ b/src/mesa/drivers/dri/r300/r300_state.c @@ -1269,6 +1269,9 @@ void r300_setup_textures(GLcontext *ctx) tmu_mappings[i] = hw_tmu; t=r300->state.texture.unit[i].texobj; + /* XXX questionable fix for bug 9170: */ + if (!t) + continue; if((t->format & 0xffffff00)==0xffffff00) { WARN_ONCE("unknown texture format (entry %x) encountered. Help me !\n", t->format & 0xff); -- cgit v1.2.3 From cbf280dc26efa2ad6a8514cd110dcdfcb7c20bd9 Mon Sep 17 00:00:00 2001 From: Michel Dänzer Date: Sun, 29 Apr 2007 13:52:11 +0200 Subject: r300: radeonMakeCurrent cleanups. r300UpdateWindow is superfluous or even possibly wrong here; _mesa_make_current will set the viewport when necessary. So the conditional _mesa_set_viewport call can go as well. --- src/mesa/drivers/dri/r300/radeon_context.c | 6 ------ 1 file changed, 6 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/radeon_context.c b/src/mesa/drivers/dri/r300/radeon_context.c index 22f943ebf38..ef1f25dd413 100644 --- a/src/mesa/drivers/dri/r300/radeon_context.c +++ b/src/mesa/drivers/dri/r300/radeon_context.c @@ -283,7 +283,6 @@ GLboolean radeonMakeCurrent(__DRIcontextPrivate * driContextPriv, radeon->dri.drawable = driDrawPriv; radeonSetCliprects(radeon); - r300UpdateWindow(radeon->glCtx); r300UpdateViewportOffset(radeon->glCtx); } @@ -293,11 +292,6 @@ GLboolean radeonMakeCurrent(__DRIcontextPrivate * driContextPriv, (GLframebuffer *) driReadPriv-> driverPrivate); - if (!radeon->glCtx->Viewport.Width) { - _mesa_set_viewport(radeon->glCtx, 0, 0, - driDrawPriv->w, driDrawPriv->h); - } - _mesa_update_state(radeon->glCtx); } else { if (RADEON_DEBUG & DEBUG_DRI) -- cgit v1.2.3 From c409dbcae3607e6f83f50a28d9bbb51f5ad51be4 Mon Sep 17 00:00:00 2001 From: Michel Dänzer Date: Thu, 29 Mar 2007 09:42:37 +0200 Subject: r300: Page flipping fixes. Mostly making sure the page flipping state is respected when necessary. --- src/mesa/drivers/dri/r300/r300_ioctl.c | 2 +- src/mesa/drivers/dri/r300/radeon_context.c | 2 ++ src/mesa/drivers/dri/r300/radeon_lock.c | 3 ++- src/mesa/drivers/dri/r300/radeon_lock.h | 1 + src/mesa/drivers/dri/r300/radeon_state.c | 3 ++- 5 files changed, 8 insertions(+), 3 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_ioctl.c b/src/mesa/drivers/dri/r300/r300_ioctl.c index 90ac9881e8f..c4dc97b8d49 100644 --- a/src/mesa/drivers/dri/r300/r300_ioctl.c +++ b/src/mesa/drivers/dri/r300/r300_ioctl.c @@ -370,7 +370,7 @@ static void r300Clear(GLcontext * ctx, GLbitfield mask) _swrast_Clear(ctx, mask); } - swapped = r300->radeon.doPageFlip && (r300->radeon.sarea->pfCurrentPage == 1); + swapped = r300->radeon.sarea->pfCurrentPage == 1; /* Make sure it fits there. */ r300EnsureCmdBufSpace(r300, 421*3, __FUNCTION__); diff --git a/src/mesa/drivers/dri/r300/radeon_context.c b/src/mesa/drivers/dri/r300/radeon_context.c index ef1f25dd413..9b3f8905076 100644 --- a/src/mesa/drivers/dri/r300/radeon_context.c +++ b/src/mesa/drivers/dri/r300/radeon_context.c @@ -293,6 +293,8 @@ GLboolean radeonMakeCurrent(__DRIcontextPrivate * driContextPriv, driverPrivate); _mesa_update_state(radeon->glCtx); + + radeonUpdatePageFlipping(radeon); } else { if (RADEON_DEBUG & DEBUG_DRI) fprintf(stderr, "%s ctx is null\n", __FUNCTION__); diff --git a/src/mesa/drivers/dri/r300/radeon_lock.c b/src/mesa/drivers/dri/r300/radeon_lock.c index ec501c3dc06..84181e2e99e 100644 --- a/src/mesa/drivers/dri/r300/radeon_lock.c +++ b/src/mesa/drivers/dri/r300/radeon_lock.c @@ -50,13 +50,14 @@ int prevLockLine = 0; /* Turn on/off page flipping according to the flags in the sarea: */ -static void radeonUpdatePageFlipping(radeonContextPtr radeon) +void radeonUpdatePageFlipping(radeonContextPtr radeon) { int use_back; radeon->doPageFlip = radeon->sarea->pfState; if (radeon->glCtx->WinSysDrawBuffer) { driFlipRenderbuffers(radeon->glCtx->WinSysDrawBuffer, radeon->sarea->pfCurrentPage); + r300UpdateDrawBuffer(radeon->glCtx); } use_back = (radeon->glCtx->DrawBuffer->_ColorDrawBufferMask[0] == BUFFER_BIT_BACK_LEFT); diff --git a/src/mesa/drivers/dri/r300/radeon_lock.h b/src/mesa/drivers/dri/r300/radeon_lock.h index 632329fde1e..b11ddf0895e 100644 --- a/src/mesa/drivers/dri/r300/radeon_lock.h +++ b/src/mesa/drivers/dri/r300/radeon_lock.h @@ -41,6 +41,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "radeon_context.h" extern void radeonGetLock(radeonContextPtr radeon, GLuint flags); +extern void radeonUpdatePageFlipping(radeonContextPtr radeon); /* Turn DEBUG_LOCKING on to find locking conflicts. */ diff --git a/src/mesa/drivers/dri/r300/radeon_state.c b/src/mesa/drivers/dri/r300/radeon_state.c index 902e9583a63..82bfd951b92 100644 --- a/src/mesa/drivers/dri/r300/radeon_state.c +++ b/src/mesa/drivers/dri/r300/radeon_state.c @@ -154,7 +154,8 @@ void radeonSetCliprects(radeonContextPtr radeon) if (draw_fb->_ColorDrawBufferMask[0] == BUFFER_BIT_BACK_LEFT) { /* Can't ignore 2d windows if we are page flipping. */ - if (drawable->numBackClipRects == 0 || radeon->doPageFlip) { + if (drawable->numBackClipRects == 0 || radeon->doPageFlip || + radeon->sarea->pfCurrentPage == 1) { radeon->numClipRects = drawable->numClipRects; radeon->pClipRects = drawable->pClipRects; } else { -- cgit v1.2.3 From 65faf023679988f93da82b4c7ebdc689f2094459 Mon Sep 17 00:00:00 2001 From: Michel Dänzer Date: Mon, 30 Apr 2007 18:28:24 +0200 Subject: r300: Don't crash in radeonUpdatePageFlipping when !radeon->glCtx->DrawBuffer. This feels like a kludge, maybe there's a better solution. --- src/mesa/drivers/dri/r300/radeon_lock.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/radeon_lock.c b/src/mesa/drivers/dri/r300/radeon_lock.c index 84181e2e99e..0d0d9ab7f06 100644 --- a/src/mesa/drivers/dri/r300/radeon_lock.c +++ b/src/mesa/drivers/dri/r300/radeon_lock.c @@ -60,7 +60,9 @@ void radeonUpdatePageFlipping(radeonContextPtr radeon) r300UpdateDrawBuffer(radeon->glCtx); } - use_back = (radeon->glCtx->DrawBuffer->_ColorDrawBufferMask[0] == BUFFER_BIT_BACK_LEFT); + use_back = radeon->glCtx->DrawBuffer ? + (radeon->glCtx->DrawBuffer->_ColorDrawBufferMask[0] == + BUFFER_BIT_BACK_LEFT) : 1; use_back ^= (radeon->sarea->pfCurrentPage == 1); if (use_back) { -- cgit v1.2.3 From b2f1d6422bee5b08513ae83eb4903c0e20593266 Mon Sep 17 00:00:00 2001 From: Brian Date: Wed, 2 May 2007 08:48:43 -0600 Subject: fix some renderbuffer/wrapper bugs --- src/mesa/drivers/x11/xm_dd.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/x11/xm_dd.c b/src/mesa/drivers/x11/xm_dd.c index 543ff69c411..c8546236fbf 100644 --- a/src/mesa/drivers/x11/xm_dd.c +++ b/src/mesa/drivers/x11/xm_dd.c @@ -438,7 +438,7 @@ xmesa_DrawPixels_8R8G8B( GLcontext *ctx, { const SWcontext *swrast = SWRAST_CONTEXT( ctx ); struct gl_renderbuffer *rb = ctx->DrawBuffer->_ColorDrawBuffers[0][0]; - struct xmesa_renderbuffer *xrb = (struct xmesa_renderbuffer *) rb->Wrapped; + struct xmesa_renderbuffer *xrb = xmesa_renderbuffer(rb->Wrapped); if (swrast->NewState) _swrast_validate_derived( ctx ); @@ -546,7 +546,7 @@ xmesa_DrawPixels_5R6G5B( GLcontext *ctx, const GLvoid *pixels ) { struct xmesa_renderbuffer *xrb - = (struct xmesa_renderbuffer *) ctx->DrawBuffer->_ColorDrawBuffers[0][0]; + = xmesa_renderbuffer(ctx->DrawBuffer->_ColorDrawBuffers[0][0]->Wrapped); const XMesaContext xmesa = XMESA_CONTEXT(ctx); const SWcontext *swrast = SWRAST_CONTEXT( ctx ); XMesaDisplay *dpy = xmesa->xm_visual->display; @@ -652,10 +652,10 @@ xmesa_CopyPixels( GLcontext *ctx, const SWcontext *swrast = SWRAST_CONTEXT( ctx ); XMesaDisplay *dpy = xmesa->xm_visual->display; const XMesaGC gc = ((XMesaBuffer) ctx->DrawBuffer)->gc; - struct xmesa_renderbuffer *srcXrb = (struct xmesa_renderbuffer *) - ctx->ReadBuffer->_ColorReadBuffer; - struct xmesa_renderbuffer *dstXrb = (struct xmesa_renderbuffer *) - ctx->DrawBuffer->_ColorDrawBuffers[0][0]; + struct xmesa_renderbuffer *srcXrb + = xmesa_renderbuffer(ctx->ReadBuffer->_ColorReadBuffer->Wrapped); + struct xmesa_renderbuffer *dstXrb + = xmesa_renderbuffer(ctx->DrawBuffer->_ColorDrawBuffers[0][0]->Wrapped); ASSERT(dpy); ASSERT(gc); -- cgit v1.2.3 From 121533defb48abddbf796aed62c1282cfa5234f9 Mon Sep 17 00:00:00 2001 From: Brian Date: Thu, 3 May 2007 09:50:08 -0600 Subject: add some #includes to silence warnings --- src/mesa/drivers/dri/i965/brw_cc.c | 1 + src/mesa/drivers/dri/i965/brw_draw.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/i965/brw_cc.c b/src/mesa/drivers/dri/i965/brw_cc.c index 84a02f8a8c9..8a1d1527db3 100644 --- a/src/mesa/drivers/dri/i965/brw_cc.c +++ b/src/mesa/drivers/dri/i965/brw_cc.c @@ -34,6 +34,7 @@ #include "brw_state.h" #include "brw_defines.h" #include "brw_util.h" +#include "macros.h" #include "enums.h" static void upload_cc_vp( struct brw_context *brw ) diff --git a/src/mesa/drivers/dri/i965/brw_draw.c b/src/mesa/drivers/dri/i965/brw_draw.c index 4eb2eedd422..c7798b14a93 100644 --- a/src/mesa/drivers/dri/i965/brw_draw.c +++ b/src/mesa/drivers/dri/i965/brw_draw.c @@ -46,7 +46,7 @@ #include "tnl/tnl.h" #include "vbo/vbo_context.h" - +#include "swrast/swrast.h" -- cgit v1.2.3 From c6443eb1a38946437fe38123f600ed9944a9bb70 Mon Sep 17 00:00:00 2001 From: Brian Date: Thu, 3 May 2007 12:33:25 -0600 Subject: fix some matrix/state token indexing bugs (see bug 10848) --- src/mesa/drivers/dri/r300/r300_vertprog.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_vertprog.c b/src/mesa/drivers/dri/r300/r300_vertprog.c index 52fd1de4495..e8917980ba5 100644 --- a/src/mesa/drivers/dri/r300/r300_vertprog.c +++ b/src/mesa/drivers/dri/r300/r300_vertprog.c @@ -883,10 +883,11 @@ static void position_invariant(struct gl_program *prog) gl_state_index tokens[STATE_LENGTH] = { STATE_MVP_MATRIX, 0, 0, 0, 0 }; + /* tokens[4] = matrix modifier */ #ifdef PREFER_DP4 - tokens[5] = STATE_MATRIX; + tokens[4] = 0; /* not transposed or inverted */ #else - tokens[5] = STATE_MATRIX_TRANSPOSE; + tokens[4] = STATE_MATRIX_TRANSPOSE; #endif paramList = prog->Parameters; @@ -895,7 +896,7 @@ static void position_invariant(struct gl_program *prog) for (i=0; i < 4; i++) { GLint idx; - tokens[3] = tokens[4] = i; + tokens[2] = tokens[3] = i; /* matrix row[i]..row[i] */ idx = _mesa_add_state_reference(paramList, tokens); #ifdef PREFER_DP4 vpi[i].Opcode = OPCODE_DP4; -- cgit v1.2.3 From ae5f67575d4696633a877e88e42499c42d8d5238 Mon Sep 17 00:00:00 2001 From: Brian Date: Fri, 4 May 2007 18:27:12 -0600 Subject: Makefile clean-ups for miniglx. --- configs/linux-solo | 13 ++++++++++--- src/glx/mini/Makefile | 21 +++++++++++++-------- src/mesa/drivers/dri/Makefile.template | 3 ++- 3 files changed, 25 insertions(+), 12 deletions(-) (limited to 'src/mesa/drivers') diff --git a/configs/linux-solo b/configs/linux-solo index 730c245d90e..a6cab8c9b3b 100644 --- a/configs/linux-solo +++ b/configs/linux-solo @@ -15,6 +15,13 @@ PIC_FLAGS = -fPIC # Add '-DGLX_USE_TLS' to ARCH_FLAGS to enable TLS support. ARCH_FLAGS ?= +# DRM and pciaccess +LIBDRM_CFLAGS = `pkg-config --cflags libdrm` +LIBDRM_LIB = `pkg-config --libs libdrm` +PCIACCESS_CFLAGS = `pkg-config --cflags pciaccess` +PCIACCESS_LIB = `pkg-config --libs pciaccess` + + DEFINES = -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_SVID_SOURCE \ -D_BSD_SOURCE -D_GNU_SOURCE -DHAVE_POSIX_MEMALIGN \ -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1 -DDRM_USE_MALLOC -DIN_DRI_DRIVER @@ -28,7 +35,7 @@ CXXFLAGS = $(WARN_FLAGS) $(OPT_FLAGS) $(PIC_FLAGS) $(ARCH_FLAGS) $(DEFINES) ASM_SOURCES = # Library/program dependencies -DRI_LIB_DEPS = -lm -lpthread -lexpat -ldl -L$(TOP)/$(LIB_DIR) +DRI_LIB_DEPS = -lm -lpthread -lexpat -ldl -L$(TOP)/$(LIB_DIR) $(PCIACCESS_LIB) GL_LIB_DEPS = -lm -lpthread -ldl GLU_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) -lm GLUT_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GLU_LIB) -l$(GL_LIB) -lm @@ -39,5 +46,5 @@ SRC_DIRS = glx/mini mesa glu glut/mini DRIVER_DIRS = dri PROGRAM_DIRS = miniglx -#DRI_DIRS = ffb gamma sis savage -DRI_DIRS = i810 i915 mach64 mga r128 r200 radeon tdfx unichrome fb +#DRI_DIRS = ffb gamma sis savage tdfx unichrome fb +DRI_DIRS = i810 i915tex i915 mach64 mga r128 r200 radeon diff --git a/src/glx/mini/Makefile b/src/glx/mini/Makefile index 72943105c25..71f085d5cd9 100644 --- a/src/glx/mini/Makefile +++ b/src/glx/mini/Makefile @@ -1,5 +1,4 @@ -# Build a subset DRI-based libGL.so library. -# Indirect rendering not supported, etc. +# Build the MiniGLX libGL.so library. TOP = ../../.. include $(TOP)/configs/current @@ -29,7 +28,9 @@ INCLUDE_DIRS = \ -I$(TOP)/src/mesa/glapi \ -I$(TOP)/src/glx/x11 \ -I$(TOP)/src/mesa/drivers/dri/common \ - `pkg-config --cflags libdrm` + $(LIBDRM_CFLAGS) \ + $(PCIACCESS_CFLAGS) + ##### RULES ##### @@ -43,16 +44,20 @@ INCLUDE_DIRS = \ ##### TARGETS ##### -default: depend $(TOP)/$(LIB_DIR)/$(GL_LIB_NAME) +default: depend $(TOP)/$(LIB_DIR)/$(GL_LIB_NAME) $(TOP)/$(LIB_DIR)/miniglx.conf # Make libGL $(TOP)/$(LIB_DIR)/$(GL_LIB_NAME): $(OBJECTS) Makefile - $(TOP)/bin/mklib -o $(GL_LIB) -linker '$(CC)' \ + @ $(TOP)/bin/mklib -o $(GL_LIB) -linker '$(CC)' \ -major 1 -minor 2 $(MKLIB_OPTIONS) \ - -install $(TOP)/$(LIB_DIR) $(GL_LIB_DEPS) $(OBJECTS) `/usr/bin/pkg-config --libs libdrm` `/usr/bin/pkg-config --libs pciaccess` - rm -f $(TOP)/$(LIB_DIR)/miniglx.conf - install example.miniglx.conf $(TOP)/$(LIB_DIR)/miniglx.conf + -install $(TOP)/$(LIB_DIR) $(GL_LIB_DEPS) $(OBJECTS) \ + $(LIBDRM_LIB) $(PCIACCESS_LIB) + + +# install sample miniglx.conf +$(TOP)/$(LIB_DIR)/miniglx.conf: + $(INSTALL) example.miniglx.conf $(TOP)/$(LIB_DIR)/miniglx.conf drmtest: xf86drm.o drmtest.o diff --git a/src/mesa/drivers/dri/Makefile.template b/src/mesa/drivers/dri/Makefile.template index 5261a4b55d1..26f9bb74c87 100644 --- a/src/mesa/drivers/dri/Makefile.template +++ b/src/mesa/drivers/dri/Makefile.template @@ -29,7 +29,8 @@ WINOBJ= WINLIB=-L$(MESA)/src/glx/mini MINIGLX_INCLUDES = -I$(TOP)/src/glx/mini INCLUDES = $(MINIGLX_INCLUDES) \ - $(SHARED_INCLUDES) + $(SHARED_INCLUDES) \ + $(PCIACCESS_CFLAGS) OBJECTS = $(C_SOURCES:.c=.o) \ $(MINIGLX_SOURCES:.c=.o) \ -- cgit v1.2.3 From 5e2a66466d7f75181ccc54fba70f2a4f95d44272 Mon Sep 17 00:00:00 2001 From: Aapo Tahkola Date: Sat, 5 May 2007 17:07:46 +0300 Subject: don't use hw to perform vertex transform etc. when using swtcl. This for compatibility with vertex programs and the fact that swtcl very rarely gets hit with tcl capable hw. --- src/mesa/drivers/dri/r300/r300_context.h | 5 --- src/mesa/drivers/dri/r300/r300_state.c | 62 ++--------------------------- src/mesa/drivers/dri/r300/radeon_vtxfmt_a.c | 8 +++- 3 files changed, 10 insertions(+), 65 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_context.h b/src/mesa/drivers/dri/r300/r300_context.h index c8b81d98497..da253ba6702 100644 --- a/src/mesa/drivers/dri/r300/r300_context.h +++ b/src/mesa/drivers/dri/r300/r300_context.h @@ -576,11 +576,6 @@ struct r300_vertex_shader_fragment { struct r300_vertex_shader_state { struct r300_vertex_shader_fragment program; - /* a bit of a waste - each uses only a subset of allocated space.. - but easier to program */ - struct r300_vertex_shader_fragment matrix[3]; - struct r300_vertex_shader_fragment vector[2]; - struct r300_vertex_shader_fragment unknown1; struct r300_vertex_shader_fragment unknown2; diff --git a/src/mesa/drivers/dri/r300/r300_state.c b/src/mesa/drivers/dri/r300/r300_state.c index 4730fdff749..a1e2d529b60 100644 --- a/src/mesa/drivers/dri/r300/r300_state.c +++ b/src/mesa/drivers/dri/r300/r300_state.c @@ -1568,13 +1568,6 @@ static void r300GenerateSimpleVertexShader(r300ContextPtr r300) r300->state.vertex_shader.unknown_ptr2=0x0; /* magic value */ r300->state.vertex_shader.unknown_ptr3=0x4; /* magic value */ - /* Initialize matrix and vector parameters.. these should really be restructured */ - /* TODO: fix vertex_shader structure */ - r300->state.vertex_shader.matrix[0].length=16; - r300->state.vertex_shader.matrix[1].length=0; - r300->state.vertex_shader.matrix[2].length=0; - r300->state.vertex_shader.vector[0].length=0; - r300->state.vertex_shader.vector[1].length=0; r300->state.vertex_shader.unknown1.length=0; r300->state.vertex_shader.unknown2.length=0; @@ -1586,48 +1579,11 @@ static void r300GenerateSimpleVertexShader(r300ContextPtr r300) r300->state.vertex_shader.program_end++; \ } - /* Multiply vertex coordinates with transform matrix */ - - WRITE_OP( - EASY_VSF_OP(MUL, 0, ALL, TMP), - VSF_PARAM(3), - VSF_ATTR_W(0), - EASY_VSF_SOURCE(0, W, W, W, W, NONE, NONE) - ) - - WRITE_OP( - EASY_VSF_OP(MUL, 1, ALL, RESULT), - VSF_REG(1), - VSF_ATTR_UNITY(1), - VSF_UNITY(1) - ) - - WRITE_OP( - EASY_VSF_OP(MAD, 0, ALL, TMP), - VSF_PARAM(2), - VSF_ATTR_Z(0), - VSF_TMP(0) - ) - - WRITE_OP( - EASY_VSF_OP(MAD, 0, ALL, TMP), - VSF_PARAM(1), - VSF_ATTR_Y(0), - VSF_TMP(0) - ) - - WRITE_OP( - EASY_VSF_OP(MAD, 0, ALL, RESULT), - VSF_PARAM(0), - VSF_ATTR_X(0), - VSF_TMP(0) - ) - o_reg += 2; - - for (i = VERT_ATTRIB_COLOR1; i < VERT_ATTRIB_MAX; i++) + + for (i = VERT_ATTRIB_POS; i < VERT_ATTRIB_MAX; i++) if (r300->state.sw_tcl_inputs[i] != -1) { WRITE_OP( - EASY_VSF_OP(MUL, o_reg++ /* 2+i */, ALL, RESULT), + EASY_VSF_OP(MUL, o_reg++, ALL, RESULT), VSF_REG(r300->state.sw_tcl_inputs[i]), VSF_ATTR_UNITY(r300->state.sw_tcl_inputs[i]), VSF_UNITY(r300->state.sw_tcl_inputs[i]) @@ -1666,20 +1622,8 @@ void r300SetupVertexShader(r300ContextPtr rmesa) /* This needs to be replaced by vertex shader generation code */ r300GenerateSimpleVertexShader(rmesa); - rmesa->state.vertex_shader.matrix[0].length=16; - memcpy(rmesa->state.vertex_shader.matrix[0].body.f, ctx->_ModelProjectMatrix.m, 16*4); - setup_vertex_shader_fragment(rmesa, VSF_DEST_PROGRAM, &(rmesa->state.vertex_shader.program)); - setup_vertex_shader_fragment(rmesa, VSF_DEST_MATRIX0, &(rmesa->state.vertex_shader.matrix[0])); -#if 0 - setup_vertex_shader_fragment(rmesa, VSF_DEST_MATRIX1, &(rmesa->state.vertex_shader.matrix[0])); - setup_vertex_shader_fragment(rmesa, VSF_DEST_MATRIX2, &(rmesa->state.vertex_shader.matrix[0])); - - setup_vertex_shader_fragment(rmesa, VSF_DEST_VECTOR0, &(rmesa->state.vertex_shader.vector[0])); - setup_vertex_shader_fragment(rmesa, VSF_DEST_VECTOR1, &(rmesa->state.vertex_shader.vector[1])); -#endif - #if 0 setup_vertex_shader_fragment(rmesa, VSF_DEST_UNKNOWN1, &(rmesa->state.vertex_shader.unknown1)); setup_vertex_shader_fragment(rmesa, VSF_DEST_UNKNOWN2, &(rmesa->state.vertex_shader.unknown2)); diff --git a/src/mesa/drivers/dri/r300/radeon_vtxfmt_a.c b/src/mesa/drivers/dri/r300/radeon_vtxfmt_a.c index 0625e5bc571..9a5173cad1a 100644 --- a/src/mesa/drivers/dri/r300/radeon_vtxfmt_a.c +++ b/src/mesa/drivers/dri/r300/radeon_vtxfmt_a.c @@ -68,7 +68,13 @@ void radeon_vb_to_rvb(r300ContextPtr rmesa, struct radeon_vertex_buffer *rvb, st rvb->Count = vb->Count; - CONV_VB(VERT_ATTRIB_POS, ObjPtr); + if (hw_tcl_on) { + CONV_VB(VERT_ATTRIB_POS, ObjPtr); + } else { + assert(vb->ClipPtr); + CONV_VB(VERT_ATTRIB_POS, ClipPtr); + } + CONV_VB(VERT_ATTRIB_NORMAL, NormalPtr); CONV_VB(VERT_ATTRIB_COLOR0, ColorPtr[0]); CONV_VB(VERT_ATTRIB_COLOR1, SecondaryColorPtr[0]); -- cgit v1.2.3 From 16cec9f7674f9754bc03282d6b5596fbb086acd1 Mon Sep 17 00:00:00 2001 From: Aapo Tahkola Date: Sun, 6 May 2007 14:28:23 +0300 Subject: r300: fix primary color on rs480 --- src/mesa/drivers/dri/r300/r300_ioctl.c | 1 + src/mesa/drivers/dri/r300/r300_maos.c | 6 ++++++ 2 files changed, 7 insertions(+) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_ioctl.c b/src/mesa/drivers/dri/r300/r300_ioctl.c index c4dc97b8d49..82414259df9 100644 --- a/src/mesa/drivers/dri/r300/r300_ioctl.c +++ b/src/mesa/drivers/dri/r300/r300_ioctl.c @@ -206,6 +206,7 @@ static void r300EmitClearState(GLcontext * ctx) e32(0x00000405); if (!has_tcl) { + R300_STATECHANGE(r300, vte); /* comes from fglrx startup of clear */ reg_start(R300_SE_VTE_CNTL, 1); e32(0x043f); diff --git a/src/mesa/drivers/dri/r300/r300_maos.c b/src/mesa/drivers/dri/r300/r300_maos.c index b0d96f7601a..b2ce6cb991c 100644 --- a/src/mesa/drivers/dri/r300/r300_maos.c +++ b/src/mesa/drivers/dri/r300/r300_maos.c @@ -440,6 +440,12 @@ int r300EmitArrays(GLcontext *ctx) inputs[i] = nr++; else inputs[i] = -1; + + if(!(r300->radeon.radeonScreen->chip_flags & RADEON_CHIPSET_TCL)) { + for (i = 0; i < VERT_ATTRIB_MAX; i++) + if (inputs[i] > 0) + inputs[i]++; + } RENDERINPUTS_COPY( rmesa->state.render_inputs_bitset, inputs_bitset ); } -- cgit v1.2.3 From 62cbe6c3f3ba972c653d00c3f3797dde576c29fa Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Sun, 6 May 2007 11:36:24 +0000 Subject: r300: Use the defined values for R300_VAP_CNTL_STATUS. --- src/mesa/drivers/dri/r300/r300_state.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_state.c b/src/mesa/drivers/dri/r300/r300_state.c index a1e2d529b60..2a1b6c3848f 100644 --- a/src/mesa/drivers/dri/r300/r300_state.c +++ b/src/mesa/drivers/dri/r300/r300_state.c @@ -1962,9 +1962,9 @@ void r300ResetHwState(r300ContextPtr r300) r300->hw.unk2134.cmd[1] = 0x00FFFFFF; r300->hw.unk2134.cmd[2] = 0x00000000; if (_mesa_little_endian()) - r300->hw.vap_cntl_status.cmd[1] = 0x00000000; + r300->hw.vap_cntl_status.cmd[1] = R300_VC_NO_SWAP; else - r300->hw.vap_cntl_status.cmd[1] = 0x00000002; + r300->hw.vap_cntl_status.cmd[1] = R300_VC_32BIT_SWAP; /* disable VAP/TCL on non-TCL capable chips */ if (!has_tcl) -- cgit v1.2.3 From 81d1a04e04185a91ca6ecc0148083c761a52c6c9 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Sun, 6 May 2007 11:52:03 +0000 Subject: r300: Point size is now set in a separate function; removed the deprecated code. --- src/mesa/drivers/dri/r300/r300_state.c | 4 ---- 1 file changed, 4 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_state.c b/src/mesa/drivers/dri/r300/r300_state.c index 2a1b6c3848f..fcc8cb8a2c3 100644 --- a/src/mesa/drivers/dri/r300/r300_state.c +++ b/src/mesa/drivers/dri/r300/r300_state.c @@ -2044,10 +2044,6 @@ void r300ResetHwState(r300ContextPtr r300) r300->hw.unk4214.cmd[1] = 0x00050005; r300PointSize(ctx, 0.0); -#if 0 - r300->hw.ps.cmd[R300_PS_POINTSIZE] = (6 << R300_POINTSIZE_X_SHIFT) | - (6 << R300_POINTSIZE_Y_SHIFT); -#endif r300->hw.unk4230.cmd[1] = 0x18000006; r300->hw.unk4230.cmd[2] = 0x00020006; -- cgit v1.2.3 From 56d966357447d55df838daa8ed3bfcc97d405beb Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Sun, 6 May 2007 11:54:00 +0000 Subject: r300: R300_ZS_... is now set in separate functions; removed the deprecated code. --- src/mesa/drivers/dri/r300/r300_state.c | 14 -------------- 1 file changed, 14 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_state.c b/src/mesa/drivers/dri/r300/r300_state.c index fcc8cb8a2c3..469239aa928 100644 --- a/src/mesa/drivers/dri/r300/r300_state.c +++ b/src/mesa/drivers/dri/r300/r300_state.c @@ -1886,20 +1886,6 @@ void r300ResetHwState(r300ContextPtr r300) /* This is a place to initialize registers which have bitfields accessed by different functions and not all bits are used */ -#if 0 - /* initialize similiar to r200 */ - r300->hw.zs.cmd[R300_ZS_CNTL_0] = 0; - r300->hw.zs.cmd[R300_ZS_CNTL_1] = - (R300_ZS_ALWAYS << R300_RB3D_ZS1_FRONT_FUNC_SHIFT) | - (R300_ZS_KEEP << R300_RB3D_ZS1_FRONT_FAIL_OP_SHIFT) | - (R300_ZS_KEEP << R300_RB3D_ZS1_FRONT_ZPASS_OP_SHIFT) | - (R300_ZS_KEEP << R300_RB3D_ZS1_FRONT_ZFAIL_OP_SHIFT) | - (R300_ZS_ALWAYS << R300_RB3D_ZS1_BACK_FUNC_SHIFT) | - (R300_ZS_KEEP << R300_RB3D_ZS1_BACK_FAIL_OP_SHIFT) | - (R300_ZS_KEEP << R300_RB3D_ZS1_BACK_ZPASS_OP_SHIFT) | - (R300_ZS_KEEP << R300_RB3D_ZS1_BACK_ZFAIL_OP_SHIFT); - r300->hw.zs.cmd[R300_ZS_CNTL_2] = 0x00ffff00; -#endif /* go and compute register values from GL state */ -- cgit v1.2.3 From 74cae00c0e5333c29b9c4483e0015019452ff7ce Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Sun, 6 May 2007 11:56:36 +0000 Subject: r300: Removed more deprecated state code that is now set in separate functions. --- src/mesa/drivers/dri/r300/r300_state.c | 76 ---------------------------------- 1 file changed, 76 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_state.c b/src/mesa/drivers/dri/r300/r300_state.c index 469239aa928..ded140cf27f 100644 --- a/src/mesa/drivers/dri/r300/r300_state.c +++ b/src/mesa/drivers/dri/r300/r300_state.c @@ -1911,19 +1911,6 @@ void r300ResetHwState(r300ContextPtr r300) r300UpdateTextureState(ctx); -// r300_setup_routing(ctx, GL_TRUE); - -#if 0 /* Done in prior to rendering */ - if(hw_tcl_on == GL_FALSE){ - r300EmitArrays(ctx, GL_TRUE); /* Just do the routing */ - r300_setup_textures(ctx); - r300_setup_rs_unit(ctx); - - r300SetupVertexShader(r300); - r300SetupPixelShader(r300); - } -#endif - r300_set_blend_state(ctx); r300AlphaFunc(ctx, ctx->Color.AlphaFunc, ctx->Color.AlphaRef); @@ -1956,17 +1943,6 @@ void r300ResetHwState(r300ContextPtr r300) if (!has_tcl) r300->hw.vap_cntl_status.cmd[1] |= R300_VAP_TCL_BYPASS; -#if 0 /* Done in setup routing */ - ((drm_r300_cmd_header_t*)r300->hw.vir[0].cmd)->packet0.count = 1; - r300->hw.vir[0].cmd[1] = 0x21030003; - - ((drm_r300_cmd_header_t*)r300->hw.vir[1].cmd)->packet0.count = 1; - r300->hw.vir[1].cmd[1] = 0xF688F688; - - r300->hw.vic.cmd[R300_VIR_CNTL_0] = 0x00000001; - r300->hw.vic.cmd[R300_VIR_CNTL_1] = 0x00000405; -#endif - r300->hw.unk21DC.cmd[1] = 0xAAAAAAAA; r300->hw.unk221C.cmd[1] = R300_221C_NORMAL; @@ -1982,17 +1958,6 @@ void r300ResetHwState(r300ContextPtr r300) else r300->hw.unk2288.cmd[1] = R300_2288_RV350; -#if 0 - r300->hw.vof.cmd[R300_VOF_CNTL_0] = R300_VAP_OUTPUT_VTX_FMT_0__POS_PRESENT - | R300_VAP_OUTPUT_VTX_FMT_0__COLOR_PRESENT; - r300->hw.vof.cmd[R300_VOF_CNTL_1] = 0; /* no textures */ - - - r300->hw.pvs.cmd[R300_PVS_CNTL_1] = 0; - r300->hw.pvs.cmd[R300_PVS_CNTL_2] = 0; - r300->hw.pvs.cmd[R300_PVS_CNTL_3] = 0; -#endif - r300->hw.gb_enable.cmd[1] = R300_GB_POINT_STUFF_ENABLE | R300_GB_LINE_STUFF_ENABLE | R300_GB_TRIANGLE_STUFF_ENABLE /*| R300_GB_UNK31*/; @@ -2020,8 +1985,6 @@ void r300ResetHwState(r300ContextPtr r300) r300->hw.gb_misc.cmd[R300_GB_MISC_SELECT] = R300_GB_FOG_SELECT_1_1_W; r300->hw.gb_misc.cmd[R300_GB_MISC_AA_CONFIG] = 0x00000000; /* No antialiasing */ - //r300->hw.txe.cmd[R300_TXE_ENABLE] = 0; - r300->hw.unk4200.cmd[1] = r300PackFloat32(0.0); r300->hw.unk4200.cmd[2] = r300PackFloat32(0.0); r300->hw.unk4200.cmd[3] = r300PackFloat32(1.0); @@ -2064,31 +2027,12 @@ void r300ResetHwState(r300ContextPtr r300) r300->hw.unk43E8.cmd[1] = 0x00FFFFFF; -#if 0 - r300->hw.fp.cmd[R300_FP_CNTL0] = 0; - r300->hw.fp.cmd[R300_FP_CNTL1] = 0; - r300->hw.fp.cmd[R300_FP_CNTL2] = 0; - r300->hw.fp.cmd[R300_FP_NODE0] = 0; - r300->hw.fp.cmd[R300_FP_NODE1] = 0; - r300->hw.fp.cmd[R300_FP_NODE2] = 0; - r300->hw.fp.cmd[R300_FP_NODE3] = 0; -#endif - r300->hw.unk46A4.cmd[1] = 0x00001B01; r300->hw.unk46A4.cmd[2] = 0x00001B0F; r300->hw.unk46A4.cmd[3] = 0x00001B0F; r300->hw.unk46A4.cmd[4] = 0x00001B0F; r300->hw.unk46A4.cmd[5] = 0x00000001; -#if 0 - for(i = 1; i <= 64; ++i) { - /* create NOP instructions */ - r300->hw.fpi[0].cmd[i] = FP_INSTRC(MAD, FP_ARGC(SRC0C_XYZ), FP_ARGC(ONE), FP_ARGC(ZERO)); - r300->hw.fpi[1].cmd[i] = FP_SELC(0,XYZ,NO,FP_TMP(0),0,0); - r300->hw.fpi[2].cmd[i] = FP_INSTRA(MAD, FP_ARGA(SRC0A), FP_ARGA(ONE), FP_ARGA(ZERO)); - r300->hw.fpi[3].cmd[i] = FP_SELA(0,W,NO,FP_TMP(0),0,0); - } -#endif r300Enable(ctx, GL_FOG, ctx->Fog.Enabled); ctx->Driver.Fogfv( ctx, GL_FOG_MODE, NULL ); ctx->Driver.Fogfv( ctx, GL_FOG_DENSITY, &ctx->Fog.Density ); @@ -2102,11 +2046,6 @@ void r300ResetHwState(r300ContextPtr r300) r300->hw.unk4E00.cmd[1] = 0; -#if 0 - r300->hw.bld.cmd[R300_BLD_CBLEND] = 0; - r300->hw.bld.cmd[R300_BLD_ABLEND] = 0; -#endif - r300BlendColor(ctx, ctx->Color.BlendColor); r300->hw.blend_color.cmd[2] = 0; r300->hw.blend_color.cmd[3] = 0; @@ -2180,21 +2119,6 @@ void r300ResetHwState(r300ContextPtr r300) r300->hw.unk4F54.cmd[1] = 0; -#if 0 - ((drm_r300_cmd_header_t*)r300->hw.vpi.cmd)->vpu.count = 0; - for(i = 1; i < R300_VPI_CMDSIZE; i += 4) { - /* MOV t0, t0 */ - r300->hw.vpi.cmd[i+0] = VP_OUT(ADD,TMP,0,XYZW); - r300->hw.vpi.cmd[i+1] = VP_IN(TMP,0); - r300->hw.vpi.cmd[i+2] = VP_ZERO(); - r300->hw.vpi.cmd[i+3] = VP_ZERO(); - } - - ((drm_r300_cmd_header_t*)r300->hw.vpp.cmd)->vpu.count = 0; - for(i = 1; i < R300_VPP_CMDSIZE; ++i) - r300->hw.vpp.cmd[i] = 0; -#endif - if (has_tcl) { r300->hw.vps.cmd[R300_VPS_ZERO_0] = 0; r300->hw.vps.cmd[R300_VPS_ZERO_1] = 0; -- cgit v1.2.3 From 8445960d9fc9271324b2f920c6712750b7229fb6 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Sun, 6 May 2007 12:09:42 +0000 Subject: r300: Added R300_AA_DISABLE for R300_GB_AA_CONFIG. --- src/mesa/drivers/dri/r300/r300_reg.h | 1 + src/mesa/drivers/dri/r300/r300_state.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_reg.h b/src/mesa/drivers/dri/r300/r300_reg.h index b296aaa07a9..3754a5be395 100644 --- a/src/mesa/drivers/dri/r300/r300_reg.h +++ b/src/mesa/drivers/dri/r300/r300_reg.h @@ -488,6 +488,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. # define R300_GB_W_SELECT_1 (1<<4) #define R300_GB_AA_CONFIG 0x4020 +# define R300_AA_DISABLE 0x00 # define R300_AA_ENABLE 0x01 # define R300_AA_SUBSAMPLES_2 0 # define R300_AA_SUBSAMPLES_3 (1<<1) diff --git a/src/mesa/drivers/dri/r300/r300_state.c b/src/mesa/drivers/dri/r300/r300_state.c index ded140cf27f..3e06c44381a 100644 --- a/src/mesa/drivers/dri/r300/r300_state.c +++ b/src/mesa/drivers/dri/r300/r300_state.c @@ -1983,7 +1983,7 @@ void r300ResetHwState(r300ContextPtr r300) | R300_GB_TILE_SIZE_16; /* set to 0 when fog is disabled? */ r300->hw.gb_misc.cmd[R300_GB_MISC_SELECT] = R300_GB_FOG_SELECT_1_1_W; - r300->hw.gb_misc.cmd[R300_GB_MISC_AA_CONFIG] = 0x00000000; /* No antialiasing */ + r300->hw.gb_misc.cmd[R300_GB_MISC_AA_CONFIG] = R300_AA_DISABLE; /* No antialiasing */ r300->hw.unk4200.cmd[1] = r300PackFloat32(0.0); r300->hw.unk4200.cmd[2] = r300PackFloat32(0.0); -- cgit v1.2.3 From 88ae491bd224843be963f67db3531857bed68cd1 Mon Sep 17 00:00:00 2001 From: Aapo Tahkola Date: Sun, 6 May 2007 19:10:39 +0300 Subject: r300: fix broken vbos --- src/mesa/drivers/dri/r300/r300_context.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_context.h b/src/mesa/drivers/dri/r300/r300_context.h index da253ba6702..afdfc29e433 100644 --- a/src/mesa/drivers/dri/r300/r300_context.h +++ b/src/mesa/drivers/dri/r300/r300_context.h @@ -52,7 +52,9 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * directly, see i965 driver for example. */ /* #define RADEON_VTXFMT_A */ +#ifdef RADEON_VTXFMT_A #define HW_VBOS +#endif /* We don't handle 16 bits elts swapping yet */ #ifdef MESA_BIG_ENDIAN -- cgit v1.2.3 From 660bdc616b01fdca30ca5aebcb5e90b3488e7b49 Mon Sep 17 00:00:00 2001 From: Aapo Tahkola Date: Sun, 6 May 2007 19:18:10 +0300 Subject: rs480: fix textures and secondary color(?). clipping is still busted. tested on r480 --- src/mesa/drivers/dri/r300/r300_maos.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_maos.c b/src/mesa/drivers/dri/r300/r300_maos.c index b2ce6cb991c..8de464bcd81 100644 --- a/src/mesa/drivers/dri/r300/r300_maos.c +++ b/src/mesa/drivers/dri/r300/r300_maos.c @@ -400,6 +400,7 @@ int r300EmitArrays(GLcontext *ctx) GLuint i; GLuint InputsRead = 0, OutputsWritten = 0; int *inputs = NULL; + int vir_inputs[VERT_ATTRIB_MAX]; GLint tab[VERT_ATTRIB_MAX]; int swizzle[VERT_ATTRIB_MAX][4]; @@ -442,9 +443,22 @@ int r300EmitArrays(GLcontext *ctx) inputs[i] = -1; if(!(r300->radeon.radeonScreen->chip_flags & RADEON_CHIPSET_TCL)) { - for (i = 0; i < VERT_ATTRIB_MAX; i++) - if (inputs[i] > 0) - inputs[i]++; + /* Fixed, apply to vir0 only */ + memcpy(vir_inputs, inputs, VERT_ATTRIB_MAX * sizeof(int)); + inputs = vir_inputs; + + if (InputsRead & VERT_ATTRIB_POS) + inputs[VERT_ATTRIB_POS] = 0; + + if (InputsRead & (1 << VERT_ATTRIB_COLOR0)) + inputs[VERT_ATTRIB_COLOR0] = 2; + + if (InputsRead & (1 << VERT_ATTRIB_COLOR1)) + inputs[VERT_ATTRIB_COLOR0] = 3; + + for (i = VERT_ATTRIB_TEX0; i <= VERT_ATTRIB_TEX7; i++) + if (InputsRead & (1 << i)) + inputs[i] = 6 + (i - VERT_ATTRIB_TEX0); } RENDERINPUTS_COPY( rmesa->state.render_inputs_bitset, inputs_bitset ); -- cgit v1.2.3 From 8f1c63b263be86758c96d1b8fb4cfc7cac552dab Mon Sep 17 00:00:00 2001 From: Aapo Tahkola Date: Sun, 6 May 2007 19:25:45 +0300 Subject: rs480: fix secondary color for real this time --- src/mesa/drivers/dri/r300/r300_maos.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_maos.c b/src/mesa/drivers/dri/r300/r300_maos.c index 8de464bcd81..34f2e569e92 100644 --- a/src/mesa/drivers/dri/r300/r300_maos.c +++ b/src/mesa/drivers/dri/r300/r300_maos.c @@ -454,7 +454,7 @@ int r300EmitArrays(GLcontext *ctx) inputs[VERT_ATTRIB_COLOR0] = 2; if (InputsRead & (1 << VERT_ATTRIB_COLOR1)) - inputs[VERT_ATTRIB_COLOR0] = 3; + inputs[VERT_ATTRIB_COLOR1] = 3; for (i = VERT_ATTRIB_TEX0; i <= VERT_ATTRIB_TEX7; i++) if (InputsRead & (1 << i)) -- cgit v1.2.3 From 8130a4fe982a7583e439a1fac61c5050f85bdf46 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Mon, 7 May 2007 07:06:08 +1000 Subject: radeon: enable xpress chipsets glxgears and googleearth now run so that seems like a good start Thanks to Aapo Tahkola for doing the 3D work on this so far, I got lost after the GART changes. --- src/mesa/drivers/dri/r300/r300_context.c | 3 +++ src/mesa/drivers/dri/r300/radeon_context.c | 6 ++++++ src/mesa/drivers/dri/radeon/radeon_screen.c | 3 +-- 3 files changed, 10 insertions(+), 2 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_context.c b/src/mesa/drivers/dri/r300/r300_context.c index c58cef65476..265b8defd84 100644 --- a/src/mesa/drivers/dri/r300/r300_context.c +++ b/src/mesa/drivers/dri/r300/r300_context.c @@ -187,6 +187,9 @@ GLboolean r300CreateContext(const __GLcontextModes * glVisual, if (!r300) return GL_FALSE; + if (!(screen->chip_flags & RADEON_CHIPSET_TCL)) + hw_tcl_on = future_hw_tcl_on = 0; + /* Parse configuration files. * Do this here so that initialMaxAnisotropy is set before we create * the default textures. diff --git a/src/mesa/drivers/dri/r300/radeon_context.c b/src/mesa/drivers/dri/r300/radeon_context.c index 9b3f8905076..e9634b427a6 100644 --- a/src/mesa/drivers/dri/r300/radeon_context.c +++ b/src/mesa/drivers/dri/r300/radeon_context.c @@ -90,9 +90,15 @@ static const GLubyte *radeonGetString(GLcontext * ctx, GLenum name) offset = driGetRendererString(buffer, chipname, DRIVER_DATE, agp_mode); + if (IS_R300_CLASS(radeon->radeonScreen)) { sprintf(&buffer[offset], " %sTCL", + (radeon->radeonScreen->chip_flags & RADEON_CHIPSET_TCL) + ? "" : "NO-"); + } else { + sprintf(&buffer[offset], " %sTCL", !(radeon->TclFallback & RADEON_TCL_FALLBACK_TCL_DISABLE) ? "" : "NO-"); + } return (GLubyte *) buffer; } diff --git a/src/mesa/drivers/dri/radeon/radeon_screen.c b/src/mesa/drivers/dri/radeon/radeon_screen.c index b0c8fae2859..b476864d035 100644 --- a/src/mesa/drivers/dri/radeon/radeon_screen.c +++ b/src/mesa/drivers/dri/radeon/radeon_screen.c @@ -656,8 +656,7 @@ radeonCreateScreen( __DRIscreenPrivate *sPriv ) case PCI_CHIP_RC410_5A61: case PCI_CHIP_RC410_5A62: screen->chip_family = CHIP_FAMILY_RS400; - fprintf(stderr, "Warning, xpress200 detected. Won't work.\n"); - return NULL; + fprintf(stderr, "Warning, xpress200 detected.\n"); break; default: -- cgit v1.2.3 From 8a7f474c691dc077c081b59e30937e526400860f Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Tue, 8 May 2007 10:53:43 +1000 Subject: i915/miniglx: remove unused code --- src/mesa/drivers/dri/i915tex/server/intel_dri.c | 28 ------------------------- 1 file changed, 28 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/i915tex/server/intel_dri.c b/src/mesa/drivers/dri/i915tex/server/intel_dri.c index 4d1ac09f644..2d425d04ac3 100644 --- a/src/mesa/drivers/dri/i915tex/server/intel_dri.c +++ b/src/mesa/drivers/dri/i915tex/server/intel_dri.c @@ -895,31 +895,6 @@ I830DRIUnmapScreenRegions(const DRIDriverContext *ctx, I830Rec *pI830, drmI830Sa } } -#if 0 -static void -I830InitTextureHeap(const DRIDriverContext *ctx, I830Rec *pI830, drmI830Sarea *sarea) -{ - /* Start up the simple memory manager for agp space */ - drmI830MemInitHeap drmHeap; - drmHeap.region = I830_MEM_REGION_AGP; - drmHeap.start = 0; - drmHeap.size = sarea->tex_size; - - if (drmCommandWrite(ctx->drmFD, DRM_I830_INIT_HEAP, - &drmHeap, sizeof(drmHeap))) { - fprintf(stderr, - "[drm] Failed to initialized agp heap manager\n"); - } else { - fprintf(stderr, - "[drm] Initialized kernel agp heap manager, %d\n", - sarea->tex_size); - - I830SetParam(ctx, I830_SETPARAM_TEX_LRU_LOG_GRANULARITY, - sarea->log_tex_granularity); - } -} -#endif - static Bool I830DRIDoMappings(DRIDriverContext *ctx, I830Rec *pI830, drmI830Sarea *sarea) { @@ -943,9 +918,6 @@ I830DRIDoMappings(DRIDriverContext *ctx, I830Rec *pI830, drmI830Sarea *sarea) I830DRIMapScreenRegions(ctx, pI830, sarea); SetupDRIMM(ctx, pI830); -#if 0 - I830InitTextureHeap(ctx, pI830, sarea); -#endif if (ctx->pciDevice != PCI_CHIP_845_G && ctx->pciDevice != PCI_CHIP_I830_M) { I830SetParam(ctx, I830_SETPARAM_USE_MI_BATCHBUFFER_START, 1 ); -- cgit v1.2.3 From c6abbbfd0296ca0f8e4eecb29fce20cd7125f98a Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Tue, 8 May 2007 18:05:10 +0000 Subject: r300: Cleaned up a lot of cruft in r300_render.c. --- src/mesa/drivers/dri/r300/r300_render.c | 77 ++------------------------------- 1 file changed, 4 insertions(+), 73 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_render.c b/src/mesa/drivers/dri/r300/r300_render.c index ecd7fead263..20b33024266 100644 --- a/src/mesa/drivers/dri/r300/r300_render.c +++ b/src/mesa/drivers/dri/r300/r300_render.c @@ -198,7 +198,6 @@ static void inline fire_EB(r300ContextPtr rmesa, unsigned long addr, int vertex_ int cmd_reserved = 0; int cmd_written = 0; drm_radeon_cmd_header_t *cmd = NULL; - unsigned long addr_a; unsigned long t_addr; unsigned long magic_1, magic_2; GLcontext *ctx; @@ -211,8 +210,6 @@ static void inline fire_EB(r300ContextPtr rmesa, unsigned long addr, int vertex_ return ; } #ifdef OPTIMIZE_ELTS - addr_a = 0; - magic_1 = (addr % 32) / 4; t_addr = addr & (~0x1d); magic_2 = (vertex_count + 1 + (t_addr & 0x2)) / 2 + magic_1; @@ -236,22 +233,14 @@ static void inline fire_EB(r300ContextPtr rmesa, unsigned long addr, int vertex_ } if(elt_size == 4){ - e32(vertex_count /*+ addr_a/4*/); /* Total number of dwords needed? */ + e32(vertex_count); /* Total number of dwords needed? */ } else { e32(magic_2); /* Total number of dwords needed? */ } //cp_delay(rmesa, 1); -#if 0 - fprintf(stderr, "magic_1 %d\n", magic_1); - fprintf(stderr, "t_addr %x\n", t_addr); - fprintf(stderr, "magic_2 %d\n", magic_2); - exit(1); -#endif #else (void)magic_2, (void)magic_1, (void)t_addr; - addr_a = 0; - check_space(6); start_packet3(RADEON_CP_PACKET3_3D_DRAW_INDX_2, 0); @@ -266,9 +255,9 @@ static void inline fire_EB(r300ContextPtr rmesa, unsigned long addr, int vertex_ e32(addr /*& 0xffffffe3*/); if(elt_size == 4){ - e32(vertex_count /*+ addr_a/4*/); /* Total number of dwords needed? */ + e32(vertex_count); /* Total number of dwords needed? */ } else { - e32((vertex_count+1)/2 /*+ addr_a/4*/); /* Total number of dwords needed? */ + e32((vertex_count+1)/2); /* Total number of dwords needed? */ } //cp_delay(rmesa, 1); #endif @@ -289,29 +278,12 @@ static void r300_render_vb_primitive(r300ContextPtr rmesa, if(rmesa->state.VB.Elts){ r300EmitAOS(rmesa, rmesa->state.aos_count, /*0*/start); -#if 0 - int cmd_reserved = 0; - int cmd_written = 0; - drm_radeon_cmd_header_t *cmd = NULL; - int i; - start_index32_packet(num_verts, type); - for(i=0; i < num_verts; i++) - e32(((unsigned long *)rmesa->state.VB.Elts)[i]/*rmesa->state.Elts[start+i]*/); /* start ? */ -#else - if(num_verts == 1){ - //start_index32_packet(num_verts, type); - //e32(rmesa->state.Elts[start]); - return; - } - if(num_verts > 65535){ /* not implemented yet */ WARN_ONCE("Too many elts\n"); return; } - r300EmitElts(ctx, rmesa->state.VB.Elts, num_verts, rmesa->state.VB.elt_size); fire_EB(rmesa, rmesa->state.elt_dma.aos_offset, num_verts, type, rmesa->state.VB.elt_size); -#endif }else{ r300EmitAOS(rmesa, rmesa->state.aos_count, start); fire_AOS(rmesa, num_verts, type); @@ -401,20 +373,6 @@ int r300Fallback(GLcontext *ctx) */ FALLBACK_IF(ctx->RenderMode != GL_RENDER); -#if 0 - /* These should work now.. */ - FALLBACK_IF(ctx->Color.DitherFlag); - /* GL_ALPHA_TEST */ - FALLBACK_IF(ctx->Color.AlphaEnabled); - /* GL_BLEND */ - FALLBACK_IF(ctx->Color.BlendEnabled); - /* GL_POLYGON_OFFSET_FILL */ - FALLBACK_IF(ctx->Polygon.OffsetFill); - /* FOG seems to trigger an unknown output - * in vertex program. - */ - FALLBACK_IF(ctx->Fog.Enabled); -#endif FALLBACK_IF(ctx->Stencil._TestTwoSide && (ctx->Stencil.Ref[0] != ctx->Stencil.Ref[1] || ctx->Stencil.ValueMask[0] != ctx->Stencil.ValueMask[1] || @@ -425,12 +383,6 @@ int r300Fallback(GLcontext *ctx) FALLBACK_IF(ctx->Polygon.OffsetPoint); /* GL_POLYGON_OFFSET_LINE */ FALLBACK_IF(ctx->Polygon.OffsetLine); -#if 0 - /* GL_STENCIL_TEST */ - FALLBACK_IF(ctx->Stencil.Enabled); - /* GL_POLYGON_SMOOTH disabling to get blender going */ - FALLBACK_IF(ctx->Polygon.SmoothFlag); -#endif /* GL_POLYGON_STIPPLE */ FALLBACK_IF(ctx->Polygon.StippleFlag); /* GL_MULTISAMPLE_ARB */ @@ -464,7 +416,6 @@ int r300Fallback(GLcontext *ctx) static GLboolean r300_run_render(GLcontext *ctx, struct tnl_pipeline_stage *stage) { - if (RADEON_DEBUG & DEBUG_PRIMS) fprintf(stderr, "%s\n", __FUNCTION__); @@ -504,31 +455,11 @@ static GLboolean r300_run_tcl_render(GLcontext *ctx, r300UpdateShaders(rmesa); vp = (struct r300_vertex_program *)CURRENT_VERTEX_SHADER(ctx); -#if 0 /* Draw every second request with software arb vp */ - vp->native++; - vp->native &= 1; - //vp->native = GL_FALSE; -#endif - -#if 0 /* You dont want to know what this does... */ - TNLcontext *tnl = TNL_CONTEXT(ctx); - struct tnl_cache *cache; - struct tnl_cache_item *c; - - cache = tnl->vp_cache; - c = cache->items[0xc000cc0e % cache->size]; - - if(c && c->data == vp) - vp->native = GL_FALSE; - -#endif -#if 0 - vp->native = GL_FALSE; -#endif if (vp->native == GL_FALSE) { hw_tcl_on = GL_FALSE; return GL_TRUE; } + //r300UpdateShaderStates(rmesa); return r300_run_vb_render(ctx, stage); -- cgit v1.2.3 From 6c036812be53b741b9801a14aad8163775150ca7 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Tue, 8 May 2007 18:28:04 +0000 Subject: r300: Clean up the vertex buffer emission code and reduced code duplication. I tested both the unoptimized and optimized versions with Quake 3 Arena; there are no problems. --- src/mesa/drivers/dri/r300/r300_render.c | 37 ++++++++++----------------------- 1 file changed, 11 insertions(+), 26 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_render.c b/src/mesa/drivers/dri/r300/r300_render.c index 20b33024266..4b846226ccb 100644 --- a/src/mesa/drivers/dri/r300/r300_render.c +++ b/src/mesa/drivers/dri/r300/r300_render.c @@ -209,7 +209,7 @@ static void inline fire_EB(r300ContextPtr rmesa, unsigned long addr, int vertex_ WARN_ONCE("Badly aligned buffer\n"); return ; } -#ifdef OPTIMIZE_ELTS + magic_1 = (addr % 32) / 4; t_addr = addr & (~0x1d); magic_2 = (vertex_count + 1 + (t_addr & 0x2)) / 2 + magic_1; @@ -224,43 +224,28 @@ static void inline fire_EB(r300ContextPtr rmesa, unsigned long addr, int vertex_ } start_packet3(RADEON_CP_PACKET3_INDX_BUFFER, 2); +#ifdef OPTIMIZE_ELTS if(elt_size == 4){ e32(R300_EB_UNK1 | (0 << 16) | R300_EB_UNK2); - e32(addr /*& 0xffffffe3*/); + e32(addr); } else { e32(R300_EB_UNK1 | (magic_1 << 16) | R300_EB_UNK2); e32(t_addr); } - - if(elt_size == 4){ - e32(vertex_count); /* Total number of dwords needed? */ - } else { - e32(magic_2); /* Total number of dwords needed? */ - } - //cp_delay(rmesa, 1); #else - (void)magic_2, (void)magic_1, (void)t_addr; - - check_space(6); - - start_packet3(RADEON_CP_PACKET3_3D_DRAW_INDX_2, 0); - if(elt_size == 4){ - e32(R300_VAP_VF_CNTL__PRIM_WALK_INDICES | (vertex_count<<16) | type | R300_VAP_VF_CNTL__INDEX_SIZE_32bit); - } else { - e32(R300_VAP_VF_CNTL__PRIM_WALK_INDICES | (vertex_count<<16) | type); - } - - start_packet3(RADEON_CP_PACKET3_INDX_BUFFER, 2); e32(R300_EB_UNK1 | (0 << 16) | R300_EB_UNK2); - e32(addr /*& 0xffffffe3*/); + e32(addr); +#endif if(elt_size == 4){ - e32(vertex_count); /* Total number of dwords needed? */ + e32(vertex_count); } else { - e32((vertex_count+1)/2); /* Total number of dwords needed? */ - } - //cp_delay(rmesa, 1); +#ifdef OPTIMIZE_ELTS + e32(magic_2); +#else + e32((vertex_count+1)/2); #endif + } } static void r300_render_vb_primitive(r300ContextPtr rmesa, -- cgit v1.2.3 From 9301a6a32598a948b07bb5b33392e4ea88bde06a Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Tue, 8 May 2007 18:43:56 +0000 Subject: r300: Print the OpenGL define instead of a 2-digit char code in the warning. --- src/mesa/drivers/dri/r300/r300_render.c | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_render.c b/src/mesa/drivers/dri/r300/r300_render.c index 4b846226ccb..62687071dc0 100644 --- a/src/mesa/drivers/dri/r300/r300_render.c +++ b/src/mesa/drivers/dri/r300/r300_render.c @@ -104,7 +104,7 @@ static int r300_get_primitive_type(r300ContextPtr rmesa, GLcontext *ctx, int pri type=R300_VAP_VF_CNTL__PRIM_POLYGON; break; default: - fprintf(stderr, "%s:%s Do not know how to handle primitive %02x - help me !\n", + fprintf(stderr, "%s:%s Do not know how to handle primitive 0x%04x - help me !\n", __FILE__, __FUNCTION__, prim & PRIM_MODE_MASK); return -1; @@ -116,59 +116,48 @@ static int r300_get_primitive_type(r300ContextPtr rmesa, GLcontext *ctx, int pri int r300_get_num_verts(r300ContextPtr rmesa, int num_verts, int prim) { int verts_off=0; - char *name="UNKNOWN"; switch (prim & PRIM_MODE_MASK) { case GL_POINTS: - name="P"; verts_off = 0; break; case GL_LINES: - name="L"; verts_off = num_verts % 2; break; case GL_LINE_STRIP: - name="LS"; if(num_verts < 2) verts_off = num_verts; break; case GL_LINE_LOOP: - name="LL"; if(num_verts < 2) verts_off = num_verts; break; case GL_TRIANGLES: - name="T"; verts_off = num_verts % 3; break; case GL_TRIANGLE_STRIP: - name="TS"; if(num_verts < 3) verts_off = num_verts; break; case GL_TRIANGLE_FAN: - name="TF"; if(num_verts < 3) verts_off = num_verts; break; case GL_QUADS: - name="Q"; verts_off = num_verts % 4; break; case GL_QUAD_STRIP: - name="QS"; if(num_verts < 4) verts_off = num_verts; else verts_off = num_verts % 2; break; case GL_POLYGON: - name="P"; if(num_verts < 3) verts_off = num_verts; break; default: - fprintf(stderr, "%s:%s Do not know how to handle primitive %02x - help me !\n", + fprintf(stderr, "%s:%s Do not know how to handle primitive 0x%04x - help me !\n", __FILE__, __FUNCTION__, prim & PRIM_MODE_MASK); return -1; @@ -177,12 +166,14 @@ int r300_get_num_verts(r300ContextPtr rmesa, int num_verts, int prim) if (RADEON_DEBUG & DEBUG_VERTS) { if (num_verts - verts_off == 0) { - WARN_ONCE("user error: Need more than %d vertices to draw primitive %s !\n", num_verts, name); + WARN_ONCE("user error: Need more than %d vertices to draw primitive 0x%04x !\n", + num_verts, prim & PRIM_MODE_MASK); return 0; } if (verts_off > 0) { - WARN_ONCE("user error: %d is not a valid number of vertices for primitive %s !\n", num_verts, name); + WARN_ONCE("user error: %d is not a valid number of vertices for primitive 0x%04x !\n", + num_verts, prim & PRIM_MODE_MASK); } } -- cgit v1.2.3 From fbeae4f70c177ce55fa137f5e0ca5747e914140a Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Tue, 8 May 2007 18:47:26 +0000 Subject: r300: Moved the pipeline stages together for readability. --- src/mesa/drivers/dri/r300/r300_render.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_render.c b/src/mesa/drivers/dri/r300/r300_render.c index 62687071dc0..e5c9c65124e 100644 --- a/src/mesa/drivers/dri/r300/r300_render.c +++ b/src/mesa/drivers/dri/r300/r300_render.c @@ -401,15 +401,6 @@ static GLboolean r300_run_render(GLcontext *ctx, return r300_run_vb_render(ctx, stage); } -const struct tnl_pipeline_stage _r300_render_stage = { - "r300 hw rasterize", - NULL, - NULL, - NULL, - NULL, - r300_run_render /* run */ -}; - static GLboolean r300_run_tcl_render(GLcontext *ctx, struct tnl_pipeline_stage *stage) { @@ -441,6 +432,15 @@ static GLboolean r300_run_tcl_render(GLcontext *ctx, return r300_run_vb_render(ctx, stage); } +const struct tnl_pipeline_stage _r300_render_stage = { + "r300 hw rasterize", + NULL, + NULL, + NULL, + NULL, + r300_run_render /* run */ +}; + const struct tnl_pipeline_stage _r300_tcl_stage = { "r300 tcl", NULL, @@ -449,4 +449,3 @@ const struct tnl_pipeline_stage _r300_tcl_stage = { NULL, r300_run_tcl_render /* run */ }; - -- cgit v1.2.3 From 313c4c2643e0bf0f52efc4924a395f107ed3a493 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Tue, 8 May 2007 19:22:15 +0000 Subject: r300: General render clean up; added some Doxygen documentation, too. --- src/mesa/drivers/dri/r300/r300_render.c | 99 ++++++++++++++++----------------- 1 file changed, 47 insertions(+), 52 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_render.c b/src/mesa/drivers/dri/r300/r300_render.c index e5c9c65124e..e6413fb8f63 100644 --- a/src/mesa/drivers/dri/r300/r300_render.c +++ b/src/mesa/drivers/dri/r300/r300_render.c @@ -26,8 +26,20 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. **************************************************************************/ /* - * Authors: - * Nicolai Haehnle + * \file + * + * \brief R300 Render (Vertex Buffer Implementation) + * + * The immediate implementation has been removed from CVS in favor of the vertex + * buffer implementation. + * + * When falling back to software TCL still attempt to use hardware + * rasterization. + * + * I am not sure that the cache related registers are setup correctly, but + * obviously this does work... Further investigation is needed. + * + * \author Nicolai Haehnle */ #include "glheader.h" @@ -61,14 +73,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. extern int future_hw_tcl_on; -/********************************************************************** -* Hardware rasterization -* -* When we fell back to software TCL, we still try to use the -* rasterization hardware for rendering. -**********************************************************************/ - -static int r300_get_primitive_type(r300ContextPtr rmesa, GLcontext *ctx, int prim) +static int r300PrimitiveType(r300ContextPtr rmesa, GLcontext *ctx, int prim) { int type=-1; @@ -113,7 +118,7 @@ static int r300_get_primitive_type(r300ContextPtr rmesa, GLcontext *ctx, int pri return type; } -int r300_get_num_verts(r300ContextPtr rmesa, int num_verts, int prim) +static int r300NumVerts(r300ContextPtr rmesa, int num_verts, int prim) { int verts_off=0; @@ -180,11 +185,7 @@ int r300_get_num_verts(r300ContextPtr rmesa, int num_verts, int prim) return num_verts - verts_off; } -/* Immediate implementation has been removed from CVS. */ - -/* vertex buffer implementation */ - -static void inline fire_EB(r300ContextPtr rmesa, unsigned long addr, int vertex_count, int type, int elt_size) +static void inline r300FireEB(r300ContextPtr rmesa, unsigned long addr, int vertex_count, int type, int elt_size) { int cmd_reserved = 0; int cmd_written = 0; @@ -239,7 +240,7 @@ static void inline fire_EB(r300ContextPtr rmesa, unsigned long addr, int vertex_ } } -static void r300_render_vb_primitive(r300ContextPtr rmesa, +static void r300RunRenderPrimitive(r300ContextPtr rmesa, GLcontext *ctx, int start, int end, @@ -247,8 +248,8 @@ static void r300_render_vb_primitive(r300ContextPtr rmesa, { int type, num_verts; - type=r300_get_primitive_type(rmesa, ctx, prim); - num_verts=r300_get_num_verts(rmesa, end-start, prim); + type=r300PrimitiveType(rmesa, ctx, prim); + num_verts=r300NumVerts(rmesa, end-start, prim); if(type<0 || num_verts <= 0)return; @@ -259,14 +260,14 @@ static void r300_render_vb_primitive(r300ContextPtr rmesa, return; } r300EmitElts(ctx, rmesa->state.VB.Elts, num_verts, rmesa->state.VB.elt_size); - fire_EB(rmesa, rmesa->state.elt_dma.aos_offset, num_verts, type, rmesa->state.VB.elt_size); + r300FireEB(rmesa, rmesa->state.elt_dma.aos_offset, num_verts, type, rmesa->state.VB.elt_size); }else{ r300EmitAOS(rmesa, rmesa->state.aos_count, start); fire_AOS(rmesa, num_verts, type); } } -GLboolean r300_run_vb_render(GLcontext *ctx, +static GLboolean r300RunRender(GLcontext *ctx, struct tnl_pipeline_stage *stage) { r300ContextPtr rmesa = R300_CONTEXT(ctx); @@ -304,7 +305,7 @@ GLboolean r300_run_vb_render(GLcontext *ctx, GLuint start = VB->Primitive[i].start; GLuint length = VB->Primitive[i].count; - r300_render_vb_primitive(rmesa, ctx, start, start + length, prim); + r300RunRenderPrimitive(rmesa, ctx, start, start + length, prim); } reg_start(R300_RB3D_DSTCACHE_CTLSTAT,0); @@ -333,20 +334,16 @@ GLboolean r300_run_vb_render(GLcontext *ctx, int r300Fallback(GLcontext *ctx) { r300ContextPtr r300 = R300_CONTEXT(ctx); - struct r300_fragment_program *rp = + struct r300_fragment_program *fp = (struct r300_fragment_program *) (char *)ctx->FragmentProgram._Current; - if (rp) { - if (!rp->translated) - r300_translate_fragment_shader(r300, rp); - - FALLBACK_IF(!rp->translated); + if (fp) { + if (!fp->translated) + r300_translate_fragment_shader(r300, fp); + FALLBACK_IF(!fp->translated); } - /* We do not do SELECT or FEEDBACK (yet ?) - * Is it worth doing them ? - */ FALLBACK_IF(ctx->RenderMode != GL_RENDER); FALLBACK_IF(ctx->Stencil._TestTwoSide && @@ -354,6 +351,14 @@ int r300Fallback(GLcontext *ctx) ctx->Stencil.ValueMask[0] != ctx->Stencil.ValueMask[1] || ctx->Stencil.WriteMask[0] != ctx->Stencil.WriteMask[1])); + /* GL_COLOR_LOGIC_OP */ + FALLBACK_IF(ctx->Color.ColorLogicOpEnabled); + + /* GL_POINT_SPRITE_ARB, GL_POINT_SPRITE_NV */ + if (ctx->Extensions.NV_point_sprite || + ctx->Extensions.ARB_point_sprite) + FALLBACK_IF(ctx->Point.PointSprite); + if(!r300->disable_lowimpact_fallback){ /* GL_POLYGON_OFFSET_POINT */ FALLBACK_IF(ctx->Polygon.OffsetPoint); @@ -361,9 +366,9 @@ int r300Fallback(GLcontext *ctx) FALLBACK_IF(ctx->Polygon.OffsetLine); /* GL_POLYGON_STIPPLE */ FALLBACK_IF(ctx->Polygon.StippleFlag); - /* GL_MULTISAMPLE_ARB */ + /* GL_MULTISAMPLE */ FALLBACK_IF(ctx->Multisample.Enabled); - /* blender ? */ + /* GL_LINE_STIPPLE */ FALLBACK_IF(ctx->Line.StippleFlag); /* GL_LINE_SMOOTH */ FALLBACK_IF(ctx->Line.SmoothFlag); @@ -371,15 +376,6 @@ int r300Fallback(GLcontext *ctx) FALLBACK_IF(ctx->Point.SmoothFlag); } - /* Fallback for LOGICOP */ - FALLBACK_IF(ctx->Color.ColorLogicOpEnabled); - - /* Rest could be done with vertex fragments */ - if (ctx->Extensions.NV_point_sprite || - ctx->Extensions.ARB_point_sprite) - /* GL_POINT_SPRITE_NV */ - FALLBACK_IF(ctx->Point.PointSprite); - return R300_FALLBACK_NONE; } @@ -389,7 +385,7 @@ int r300Fallback(GLcontext *ctx) * rasterization) or false to indicate that the pipeline has finished * after we render something. */ -static GLboolean r300_run_render(GLcontext *ctx, +static GLboolean r300RunNonTNLRender(GLcontext *ctx, struct tnl_pipeline_stage *stage) { if (RADEON_DEBUG & DEBUG_PRIMS) @@ -398,10 +394,10 @@ static GLboolean r300_run_render(GLcontext *ctx, if (r300Fallback(ctx) >= R300_FALLBACK_RAST) return GL_TRUE; - return r300_run_vb_render(ctx, stage); + return r300RunRender(ctx, stage); } -static GLboolean r300_run_tcl_render(GLcontext *ctx, +static GLboolean r300RunTCLRender(GLcontext *ctx, struct tnl_pipeline_stage *stage) { r300ContextPtr rmesa = R300_CONTEXT(ctx); @@ -411,6 +407,7 @@ static GLboolean r300_run_tcl_render(GLcontext *ctx, if (RADEON_DEBUG & DEBUG_PRIMS) fprintf(stderr, "%s\n", __FUNCTION__); + if(hw_tcl_on == GL_FALSE) return GL_TRUE; @@ -427,25 +424,23 @@ static GLboolean r300_run_tcl_render(GLcontext *ctx, return GL_TRUE; } - //r300UpdateShaderStates(rmesa); - - return r300_run_vb_render(ctx, stage); + return r300RunRender(ctx, stage); } const struct tnl_pipeline_stage _r300_render_stage = { - "r300 hw rasterize", + "r300 Hardware Rasterization", NULL, NULL, NULL, NULL, - r300_run_render /* run */ + r300RunNonTNLRender }; const struct tnl_pipeline_stage _r300_tcl_stage = { - "r300 tcl", + "r300 Hardware Transform, Clipping and Lighting", NULL, NULL, NULL, NULL, - r300_run_tcl_render /* run */ + r300RunTCLRender }; -- cgit v1.2.3 From f1d785188b170f1d3e79ba257cb8634f13685bca Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Tue, 8 May 2007 19:31:30 +0000 Subject: r300: Cleaned up r300_render.c using Indent with appropriate options. This corrects the mess of space and tab indenting that existed in this file, and probably others. The diff is actually very small if you use an external diff program and ignore whitespace. --- src/mesa/drivers/dri/r300/r300_render.c | 250 ++++++++++++++++---------------- 1 file changed, 127 insertions(+), 123 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_render.c b/src/mesa/drivers/dri/r300/r300_render.c index e6413fb8f63..db6b77a0c22 100644 --- a/src/mesa/drivers/dri/r300/r300_render.c +++ b/src/mesa/drivers/dri/r300/r300_render.c @@ -24,7 +24,6 @@ OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. **************************************************************************/ - /* * \file * @@ -41,7 +40,6 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. * * \author Nicolai Haehnle */ - #include "glheader.h" #include "state.h" #include "imports.h" @@ -50,14 +48,12 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. #include "context.h" #include "dd.h" #include "simple_list.h" - #include "api_arrayelt.h" #include "swrast/swrast.h" #include "swrast_setup/swrast_setup.h" #include "vbo/vbo.h" #include "tnl/tnl.h" #include "tnl/t_vp_build.h" - #include "radeon_reg.h" #include "radeon_macros.h" #include "radeon_ioctl.h" @@ -70,122 +66,125 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. #include "r300_tex.h" #include "r300_maos.h" #include "r300_emit.h" - extern int future_hw_tcl_on; -static int r300PrimitiveType(r300ContextPtr rmesa, GLcontext *ctx, int prim) +static int r300PrimitiveType(r300ContextPtr rmesa, GLcontext * ctx, + int prim) { - int type=-1; + int type = -1; switch (prim & PRIM_MODE_MASK) { case GL_POINTS: - type=R300_VAP_VF_CNTL__PRIM_POINTS; - break; + type = R300_VAP_VF_CNTL__PRIM_POINTS; + break; case GL_LINES: - type=R300_VAP_VF_CNTL__PRIM_LINES; - break; + type = R300_VAP_VF_CNTL__PRIM_LINES; + break; case GL_LINE_STRIP: - type=R300_VAP_VF_CNTL__PRIM_LINE_STRIP; - break; + type = R300_VAP_VF_CNTL__PRIM_LINE_STRIP; + break; case GL_LINE_LOOP: - type=R300_VAP_VF_CNTL__PRIM_LINE_LOOP; - break; - case GL_TRIANGLES: - type=R300_VAP_VF_CNTL__PRIM_TRIANGLES; - break; - case GL_TRIANGLE_STRIP: - type=R300_VAP_VF_CNTL__PRIM_TRIANGLE_STRIP; - break; - case GL_TRIANGLE_FAN: - type=R300_VAP_VF_CNTL__PRIM_TRIANGLE_FAN; - break; + type = R300_VAP_VF_CNTL__PRIM_LINE_LOOP; + break; + case GL_TRIANGLES: + type = R300_VAP_VF_CNTL__PRIM_TRIANGLES; + break; + case GL_TRIANGLE_STRIP: + type = R300_VAP_VF_CNTL__PRIM_TRIANGLE_STRIP; + break; + case GL_TRIANGLE_FAN: + type = R300_VAP_VF_CNTL__PRIM_TRIANGLE_FAN; + break; case GL_QUADS: - type=R300_VAP_VF_CNTL__PRIM_QUADS; - break; + type = R300_VAP_VF_CNTL__PRIM_QUADS; + break; case GL_QUAD_STRIP: - type=R300_VAP_VF_CNTL__PRIM_QUAD_STRIP; - break; + type = R300_VAP_VF_CNTL__PRIM_QUAD_STRIP; + break; case GL_POLYGON: - type=R300_VAP_VF_CNTL__PRIM_POLYGON; + type = R300_VAP_VF_CNTL__PRIM_POLYGON; break; - default: - fprintf(stderr, "%s:%s Do not know how to handle primitive 0x%04x - help me !\n", - __FILE__, __FUNCTION__, - prim & PRIM_MODE_MASK); + default: + fprintf(stderr, + "%s:%s Do not know how to handle primitive 0x%04x - help me !\n", + __FILE__, __FUNCTION__, prim & PRIM_MODE_MASK); return -1; - break; - } - return type; + break; + } + return type; } static int r300NumVerts(r300ContextPtr rmesa, int num_verts, int prim) { - int verts_off=0; + int verts_off = 0; switch (prim & PRIM_MODE_MASK) { case GL_POINTS: verts_off = 0; - break; + break; case GL_LINES: verts_off = num_verts % 2; - break; + break; case GL_LINE_STRIP: - if(num_verts < 2) + if (num_verts < 2) verts_off = num_verts; - break; + break; case GL_LINE_LOOP: - if(num_verts < 2) + if (num_verts < 2) verts_off = num_verts; - break; - case GL_TRIANGLES: + break; + case GL_TRIANGLES: verts_off = num_verts % 3; - break; - case GL_TRIANGLE_STRIP: - if(num_verts < 3) + break; + case GL_TRIANGLE_STRIP: + if (num_verts < 3) verts_off = num_verts; - break; - case GL_TRIANGLE_FAN: - if(num_verts < 3) + break; + case GL_TRIANGLE_FAN: + if (num_verts < 3) verts_off = num_verts; - break; + break; case GL_QUADS: verts_off = num_verts % 4; - break; + break; case GL_QUAD_STRIP: - if(num_verts < 4) + if (num_verts < 4) verts_off = num_verts; else verts_off = num_verts % 2; - break; + break; case GL_POLYGON: - if(num_verts < 3) + if (num_verts < 3) verts_off = num_verts; break; - default: - fprintf(stderr, "%s:%s Do not know how to handle primitive 0x%04x - help me !\n", - __FILE__, __FUNCTION__, - prim & PRIM_MODE_MASK); + default: + fprintf(stderr, + "%s:%s Do not know how to handle primitive 0x%04x - help me !\n", + __FILE__, __FUNCTION__, prim & PRIM_MODE_MASK); return -1; - break; - } + break; + } if (RADEON_DEBUG & DEBUG_VERTS) { if (num_verts - verts_off == 0) { - WARN_ONCE("user error: Need more than %d vertices to draw primitive 0x%04x !\n", - num_verts, prim & PRIM_MODE_MASK); + WARN_ONCE + ("user error: Need more than %d vertices to draw primitive 0x%04x !\n", + num_verts, prim & PRIM_MODE_MASK); return 0; } if (verts_off > 0) { - WARN_ONCE("user error: %d is not a valid number of vertices for primitive 0x%04x !\n", - num_verts, prim & PRIM_MODE_MASK); + WARN_ONCE + ("user error: %d is not a valid number of vertices for primitive 0x%04x !\n", + num_verts, prim & PRIM_MODE_MASK); } } return num_verts - verts_off; } -static void inline r300FireEB(r300ContextPtr rmesa, unsigned long addr, int vertex_count, int type, int elt_size) +static void inline r300FireEB(r300ContextPtr rmesa, unsigned long addr, + int vertex_count, int type, int elt_size) { int cmd_reserved = 0; int cmd_written = 0; @@ -197,9 +196,9 @@ static void inline r300FireEB(r300ContextPtr rmesa, unsigned long addr, int vert assert(elt_size == 2 || elt_size == 4); - if(addr & (elt_size-1)){ + if (addr & (elt_size - 1)) { WARN_ONCE("Badly aligned buffer\n"); - return ; + return; } magic_1 = (addr % 32) / 4; @@ -209,15 +208,18 @@ static void inline r300FireEB(r300ContextPtr rmesa, unsigned long addr, int vert check_space(6); start_packet3(RADEON_CP_PACKET3_3D_DRAW_INDX_2, 0); - if(elt_size == 4){ - e32(R300_VAP_VF_CNTL__PRIM_WALK_INDICES | (vertex_count<<16) | type | R300_VAP_VF_CNTL__INDEX_SIZE_32bit); + if (elt_size == 4) { + e32(R300_VAP_VF_CNTL__PRIM_WALK_INDICES | + (vertex_count << 16) | type | + R300_VAP_VF_CNTL__INDEX_SIZE_32bit); } else { - e32(R300_VAP_VF_CNTL__PRIM_WALK_INDICES | (vertex_count<<16) | type); + e32(R300_VAP_VF_CNTL__PRIM_WALK_INDICES | + (vertex_count << 16) | type); } start_packet3(RADEON_CP_PACKET3_INDX_BUFFER, 2); #ifdef OPTIMIZE_ELTS - if(elt_size == 4){ + if (elt_size == 4) { e32(R300_EB_UNK1 | (0 << 16) | R300_EB_UNK2); e32(addr); } else { @@ -229,46 +231,46 @@ static void inline r300FireEB(r300ContextPtr rmesa, unsigned long addr, int vert e32(addr); #endif - if(elt_size == 4){ + if (elt_size == 4) { e32(vertex_count); } else { #ifdef OPTIMIZE_ELTS e32(magic_2); #else - e32((vertex_count+1)/2); + e32((vertex_count + 1) / 2); #endif } } -static void r300RunRenderPrimitive(r300ContextPtr rmesa, - GLcontext *ctx, - int start, - int end, - int prim) +static void r300RunRenderPrimitive(r300ContextPtr rmesa, GLcontext * ctx, + int start, int end, int prim) { - int type, num_verts; - - type=r300PrimitiveType(rmesa, ctx, prim); - num_verts=r300NumVerts(rmesa, end-start, prim); + int type, num_verts; - if(type<0 || num_verts <= 0)return; + type = r300PrimitiveType(rmesa, ctx, prim); + num_verts = r300NumVerts(rmesa, end - start, prim); - if(rmesa->state.VB.Elts){ - r300EmitAOS(rmesa, rmesa->state.aos_count, /*0*/start); - if(num_verts > 65535){ /* not implemented yet */ - WARN_ONCE("Too many elts\n"); + if (type < 0 || num_verts <= 0) return; + + if (rmesa->state.VB.Elts) { + r300EmitAOS(rmesa, rmesa->state.aos_count, /*0 */ start); + if (num_verts > 65535) { /* not implemented yet */ + WARN_ONCE("Too many elts\n"); + return; + } + r300EmitElts(ctx, rmesa->state.VB.Elts, num_verts, + rmesa->state.VB.elt_size); + r300FireEB(rmesa, rmesa->state.elt_dma.aos_offset, + num_verts, type, rmesa->state.VB.elt_size); + } else { + r300EmitAOS(rmesa, rmesa->state.aos_count, start); + fire_AOS(rmesa, num_verts, type); } - r300EmitElts(ctx, rmesa->state.VB.Elts, num_verts, rmesa->state.VB.elt_size); - r300FireEB(rmesa, rmesa->state.elt_dma.aos_offset, num_verts, type, rmesa->state.VB.elt_size); - }else{ - r300EmitAOS(rmesa, rmesa->state.aos_count, start); - fire_AOS(rmesa, num_verts, type); - } } -static GLboolean r300RunRender(GLcontext *ctx, - struct tnl_pipeline_stage *stage) +static GLboolean r300RunRender(GLcontext * ctx, + struct tnl_pipeline_stage *stage) { r300ContextPtr rmesa = R300_CONTEXT(ctx); struct radeon_vertex_buffer *VB = &rmesa->state.VB; @@ -277,12 +279,11 @@ static GLboolean r300RunRender(GLcontext *ctx, int cmd_written = 0; drm_radeon_cmd_header_t *cmd = NULL; - if (RADEON_DEBUG & DEBUG_PRIMS) fprintf(stderr, "%s\n", __FUNCTION__); if (stage) { - TNLcontext *tnl = TNL_CONTEXT(ctx); + TNLcontext *tnl = TNL_CONTEXT(ctx); radeon_vb_to_rvb(rmesa, VB, &tnl->vb); } @@ -292,27 +293,29 @@ static GLboolean r300RunRender(GLcontext *ctx, r300UpdateShaderStates(rmesa); - reg_start(R300_RB3D_DSTCACHE_CTLSTAT,0); + reg_start(R300_RB3D_DSTCACHE_CTLSTAT, 0); e32(R300_RB3D_DSTCACHE_UNKNOWN_0A); - reg_start(R300_RB3D_ZCACHE_CTLSTAT,0); + reg_start(R300_RB3D_ZCACHE_CTLSTAT, 0); e32(R300_RB3D_ZCACHE_UNKNOWN_03); r300EmitState(rmesa); - for(i=0; i < VB->PrimitiveCount; i++){ + for (i = 0; i < VB->PrimitiveCount; i++) { GLuint prim = _tnl_translate_prim(&VB->Primitive[i]); GLuint start = VB->Primitive[i].start; GLuint length = VB->Primitive[i].count; - r300RunRenderPrimitive(rmesa, ctx, start, start + length, prim); + r300RunRenderPrimitive(rmesa, ctx, start, start + length, + prim); } - reg_start(R300_RB3D_DSTCACHE_CTLSTAT,0); - e32(R300_RB3D_DSTCACHE_UNKNOWN_0A /*R300_RB3D_DSTCACHE_UNKNOWN_02*/); + reg_start(R300_RB3D_DSTCACHE_CTLSTAT, 0); + e32(R300_RB3D_DSTCACHE_UNKNOWN_0A + /*R300_RB3D_DSTCACHE_UNKNOWN_02 */ ); - reg_start(R300_RB3D_ZCACHE_CTLSTAT,0); - e32(R300_RB3D_ZCACHE_UNKNOWN_03 /*R300_RB3D_ZCACHE_UNKNOWN_01*/); + reg_start(R300_RB3D_ZCACHE_CTLSTAT, 0); + e32(R300_RB3D_ZCACHE_UNKNOWN_03 /*R300_RB3D_ZCACHE_UNKNOWN_01 */ ); #ifdef USER_BUFFERS r300UseArrays(ctx); @@ -331,12 +334,11 @@ static GLboolean r300RunRender(GLcontext *ctx, } \ } while(0) -int r300Fallback(GLcontext *ctx) +int r300Fallback(GLcontext * ctx) { r300ContextPtr r300 = R300_CONTEXT(ctx); - struct r300_fragment_program *fp = - (struct r300_fragment_program *) - (char *)ctx->FragmentProgram._Current; + struct r300_fragment_program *fp = (struct r300_fragment_program *) + (char *)ctx->FragmentProgram._Current; if (fp) { if (!fp->translated) @@ -346,20 +348,22 @@ int r300Fallback(GLcontext *ctx) FALLBACK_IF(ctx->RenderMode != GL_RENDER); - FALLBACK_IF(ctx->Stencil._TestTwoSide && - (ctx->Stencil.Ref[0] != ctx->Stencil.Ref[1] || - ctx->Stencil.ValueMask[0] != ctx->Stencil.ValueMask[1] || - ctx->Stencil.WriteMask[0] != ctx->Stencil.WriteMask[1])); + FALLBACK_IF(ctx->Stencil._TestTwoSide + && (ctx->Stencil.Ref[0] != ctx->Stencil.Ref[1] + || ctx->Stencil.ValueMask[0] != + ctx->Stencil.ValueMask[1] + || ctx->Stencil.WriteMask[0] != + ctx->Stencil.WriteMask[1])); /* GL_COLOR_LOGIC_OP */ FALLBACK_IF(ctx->Color.ColorLogicOpEnabled); /* GL_POINT_SPRITE_ARB, GL_POINT_SPRITE_NV */ - if (ctx->Extensions.NV_point_sprite || - ctx->Extensions.ARB_point_sprite) + if (ctx->Extensions.NV_point_sprite + || ctx->Extensions.ARB_point_sprite) FALLBACK_IF(ctx->Point.PointSprite); - if(!r300->disable_lowimpact_fallback){ + if (!r300->disable_lowimpact_fallback) { /* GL_POLYGON_OFFSET_POINT */ FALLBACK_IF(ctx->Polygon.OffsetPoint); /* GL_POLYGON_OFFSET_LINE */ @@ -385,8 +389,8 @@ int r300Fallback(GLcontext *ctx) * rasterization) or false to indicate that the pipeline has finished * after we render something. */ -static GLboolean r300RunNonTNLRender(GLcontext *ctx, - struct tnl_pipeline_stage *stage) +static GLboolean r300RunNonTNLRender(GLcontext * ctx, + struct tnl_pipeline_stage *stage) { if (RADEON_DEBUG & DEBUG_PRIMS) fprintf(stderr, "%s\n", __FUNCTION__); @@ -397,18 +401,18 @@ static GLboolean r300RunNonTNLRender(GLcontext *ctx, return r300RunRender(ctx, stage); } -static GLboolean r300RunTCLRender(GLcontext *ctx, - struct tnl_pipeline_stage *stage) +static GLboolean r300RunTCLRender(GLcontext * ctx, + struct tnl_pipeline_stage *stage) { r300ContextPtr rmesa = R300_CONTEXT(ctx); struct r300_vertex_program *vp; - hw_tcl_on=future_hw_tcl_on; + hw_tcl_on = future_hw_tcl_on; if (RADEON_DEBUG & DEBUG_PRIMS) fprintf(stderr, "%s\n", __FUNCTION__); - if(hw_tcl_on == GL_FALSE) + if (hw_tcl_on == GL_FALSE) return GL_TRUE; if (r300Fallback(ctx) >= R300_FALLBACK_TCL) { -- cgit v1.2.3 From 377ce9e074632d99d7b12f17a6e535971f755ba3 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Tue, 8 May 2007 19:35:36 +0000 Subject: r300: Merged some comments into the Doxygen documentation. --- src/mesa/drivers/dri/r300/r300_render.c | 29 +++++++++-------------------- 1 file changed, 9 insertions(+), 20 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_render.c b/src/mesa/drivers/dri/r300/r300_render.c index db6b77a0c22..628a9fb42d1 100644 --- a/src/mesa/drivers/dri/r300/r300_render.c +++ b/src/mesa/drivers/dri/r300/r300_render.c @@ -32,6 +32,11 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. * The immediate implementation has been removed from CVS in favor of the vertex * buffer implementation. * + * The render functions are called by the pipeline manager to render a batch of + * primitives. They return TRUE to pass on to the next stage (i.e. software + * rasterization) or FALSE to indicate that the pipeline has finished after + * rendering something. + * * When falling back to software TCL still attempt to use hardware * rasterization. * @@ -254,8 +259,8 @@ static void r300RunRenderPrimitive(r300ContextPtr rmesa, GLcontext * ctx, return; if (rmesa->state.VB.Elts) { - r300EmitAOS(rmesa, rmesa->state.aos_count, /*0 */ start); - if (num_verts > 65535) { /* not implemented yet */ + r300EmitAOS(rmesa, rmesa->state.aos_count, start); + if (num_verts > 65535) { WARN_ONCE("Too many elts\n"); return; } @@ -311,11 +316,10 @@ static GLboolean r300RunRender(GLcontext * ctx, } reg_start(R300_RB3D_DSTCACHE_CTLSTAT, 0); - e32(R300_RB3D_DSTCACHE_UNKNOWN_0A - /*R300_RB3D_DSTCACHE_UNKNOWN_02 */ ); + e32(R300_RB3D_DSTCACHE_UNKNOWN_0A); reg_start(R300_RB3D_ZCACHE_CTLSTAT, 0); - e32(R300_RB3D_ZCACHE_UNKNOWN_03 /*R300_RB3D_ZCACHE_UNKNOWN_01 */ ); + e32(R300_RB3D_ZCACHE_UNKNOWN_03); #ifdef USER_BUFFERS r300UseArrays(ctx); @@ -355,40 +359,25 @@ int r300Fallback(GLcontext * ctx) || ctx->Stencil.WriteMask[0] != ctx->Stencil.WriteMask[1])); - /* GL_COLOR_LOGIC_OP */ FALLBACK_IF(ctx->Color.ColorLogicOpEnabled); - /* GL_POINT_SPRITE_ARB, GL_POINT_SPRITE_NV */ if (ctx->Extensions.NV_point_sprite || ctx->Extensions.ARB_point_sprite) FALLBACK_IF(ctx->Point.PointSprite); if (!r300->disable_lowimpact_fallback) { - /* GL_POLYGON_OFFSET_POINT */ FALLBACK_IF(ctx->Polygon.OffsetPoint); - /* GL_POLYGON_OFFSET_LINE */ FALLBACK_IF(ctx->Polygon.OffsetLine); - /* GL_POLYGON_STIPPLE */ FALLBACK_IF(ctx->Polygon.StippleFlag); - /* GL_MULTISAMPLE */ FALLBACK_IF(ctx->Multisample.Enabled); - /* GL_LINE_STIPPLE */ FALLBACK_IF(ctx->Line.StippleFlag); - /* GL_LINE_SMOOTH */ FALLBACK_IF(ctx->Line.SmoothFlag); - /* GL_POINT_SMOOTH */ FALLBACK_IF(ctx->Point.SmoothFlag); } return R300_FALLBACK_NONE; } -/** - * Called by the pipeline manager to render a batch of primitives. - * We can return true to pass on to the next stage (i.e. software - * rasterization) or false to indicate that the pipeline has finished - * after we render something. - */ static GLboolean r300RunNonTNLRender(GLcontext * ctx, struct tnl_pipeline_stage *stage) { -- cgit v1.2.3 From 73bc8b63ac2206a1c1dfd02891493db6e747a36f Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Tue, 8 May 2007 19:38:44 +0000 Subject: r300: Last few r300_render.c clean up. --- src/mesa/drivers/dri/r300/r300_render.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_render.c b/src/mesa/drivers/dri/r300/r300_render.c index 628a9fb42d1..0e585855e99 100644 --- a/src/mesa/drivers/dri/r300/r300_render.c +++ b/src/mesa/drivers/dri/r300/r300_render.c @@ -196,8 +196,7 @@ static void inline r300FireEB(r300ContextPtr rmesa, unsigned long addr, drm_radeon_cmd_header_t *cmd = NULL; unsigned long t_addr; unsigned long magic_1, magic_2; - GLcontext *ctx; - ctx = rmesa->radeon.glCtx; + GLcontext *ctx = rmesa->radeon.glCtx; assert(elt_size == 2 || elt_size == 4); @@ -207,7 +206,7 @@ static void inline r300FireEB(r300ContextPtr rmesa, unsigned long addr, } magic_1 = (addr % 32) / 4; - t_addr = addr & (~0x1d); + t_addr = addr & ~0x1d; magic_2 = (vertex_count + 1 + (t_addr & 0x2)) / 2 + magic_1; check_space(6); -- cgit v1.2.3 From d132f7245deabc8bdb7effafcb489df4cee59f2e Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Tue, 8 May 2007 19:46:25 +0000 Subject: r300: Removed some deprecated code from r300_context.c and corrected an unused variable warning in r300_render.c. --- src/mesa/drivers/dri/r300/r300_context.c | 6 ------ src/mesa/drivers/dri/r300/r300_render.c | 1 - 2 files changed, 7 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_context.c b/src/mesa/drivers/dri/r300/r300_context.c index 265b8defd84..21750aab33c 100644 --- a/src/mesa/drivers/dri/r300/r300_context.c +++ b/src/mesa/drivers/dri/r300/r300_context.c @@ -355,12 +355,6 @@ GLboolean r300CreateContext(const __GLcontextModes * glVisual, radeon_init_vtxfmt_a(r300); #endif -#if 0 - /* plug in a few more device driver functions */ - /* XXX these should really go right after _mesa_init_driver_functions() */ - r300InitPixelFuncs(ctx); - r300InitSwtcl(ctx); -#endif TNL_CONTEXT(ctx)->Driver.RunPipeline = _tnl_run_pipeline; tcl_mode = driQueryOptioni(&r300->radeon.optionCache, "tcl_mode"); diff --git a/src/mesa/drivers/dri/r300/r300_render.c b/src/mesa/drivers/dri/r300/r300_render.c index 0e585855e99..be10a185875 100644 --- a/src/mesa/drivers/dri/r300/r300_render.c +++ b/src/mesa/drivers/dri/r300/r300_render.c @@ -196,7 +196,6 @@ static void inline r300FireEB(r300ContextPtr rmesa, unsigned long addr, drm_radeon_cmd_header_t *cmd = NULL; unsigned long t_addr; unsigned long magic_1, magic_2; - GLcontext *ctx = rmesa->radeon.glCtx; assert(elt_size == 2 || elt_size == 4); -- cgit v1.2.3 From c578354642b87125d28fd7c46e4e8e734dd0492f Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Tue, 8 May 2007 21:04:57 +0000 Subject: r300: Renamed the VBO functions to the R300 name format. --- src/mesa/drivers/dri/r300/r300_context.c | 2 +- src/mesa/drivers/dri/r300/r300_context.h | 4 ++-- src/mesa/drivers/dri/r300/r300_ioctl.c | 2 +- src/mesa/drivers/dri/r300/radeon_vtxfmt_a.c | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_context.c b/src/mesa/drivers/dri/r300/r300_context.c index 21750aab33c..dd348e223c2 100644 --- a/src/mesa/drivers/dri/r300/r300_context.c +++ b/src/mesa/drivers/dri/r300/r300_context.c @@ -215,7 +215,7 @@ GLboolean r300CreateContext(const __GLcontextModes * glVisual, #endif #ifdef HW_VBOS if (hw_tcl_on) { - r300_init_vbo_funcs(&functions); + r300InitVBOFuncs(&functions); } #endif if (!radeonInitContext(&r300->radeon, &functions, diff --git a/src/mesa/drivers/dri/r300/r300_context.h b/src/mesa/drivers/dri/r300/r300_context.h index afdfc29e433..78e0b1ac9d0 100644 --- a/src/mesa/drivers/dri/r300/r300_context.h +++ b/src/mesa/drivers/dri/r300/r300_context.h @@ -929,8 +929,8 @@ extern void radeon_init_vtxfmt_a(r300ContextPtr rmesa); #endif #ifdef HW_VBOS -extern void r300_init_vbo_funcs(struct dd_function_table *functions); -extern void r300_evict_vbos(GLcontext *ctx, int amount); +extern void r300InitVBOFuncs(struct dd_function_table *functions); +extern void r300EvictVBOs(GLcontext *ctx, int amount); #endif #define RADEON_D_CAPTURE 0 diff --git a/src/mesa/drivers/dri/r300/r300_ioctl.c b/src/mesa/drivers/dri/r300/r300_ioctl.c index 82414259df9..1b73389600b 100644 --- a/src/mesa/drivers/dri/r300/r300_ioctl.c +++ b/src/mesa/drivers/dri/r300/r300_ioctl.c @@ -442,7 +442,7 @@ static void r300RefillCurrentDmaRegion(r300ContextPtr rmesa, int size) #ifdef HW_VBOS if (dmabuf->id == 0) { /* Just kick all */ - r300_evict_vbos(rmesa->radeon.glCtx, /*RADEON_BUFFER_SIZE*16*/1<<30); + r300EvictVBOs(rmesa->radeon.glCtx, /*RADEON_BUFFER_SIZE*16*/1<<30); dmabuf->id = radeon_mm_alloc(rmesa, 4, size); } #endif diff --git a/src/mesa/drivers/dri/r300/radeon_vtxfmt_a.c b/src/mesa/drivers/dri/r300/radeon_vtxfmt_a.c index 9a5173cad1a..a15a17d1d33 100644 --- a/src/mesa/drivers/dri/r300/radeon_vtxfmt_a.c +++ b/src/mesa/drivers/dri/r300/radeon_vtxfmt_a.c @@ -618,7 +618,7 @@ static void r300DeleteBuffer(GLcontext *ctx, struct gl_buffer_object *obj) _mesa_delete_buffer_object(ctx, obj); } -void r300_evict_vbos(GLcontext *ctx, int amount) +void r300EvictVBOs(GLcontext *ctx, int amount) { r300ContextPtr rmesa = R300_CONTEXT(ctx); struct _mesa_HashTable *hash = ctx->Shared->BufferObjects; @@ -649,7 +649,7 @@ void r300_evict_vbos(GLcontext *ctx, int amount) } -void r300_init_vbo_funcs(struct dd_function_table *functions) +void r300InitVBOFuncs(struct dd_function_table *functions) { functions->NewBufferObject = r300NewBufferObject; functions->BufferData = r300BufferData; -- cgit v1.2.3 From f5b0cafbb11d911949a059688c0dd05e3c5c10b8 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 02:18:29 +0000 Subject: r300: Removed obsolete pixel_shader.h header file. --- src/mesa/drivers/dri/r300/pixel_shader.h | 103 ------------------------------- 1 file changed, 103 deletions(-) delete mode 100644 src/mesa/drivers/dri/r300/pixel_shader.h (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/pixel_shader.h b/src/mesa/drivers/dri/r300/pixel_shader.h deleted file mode 100644 index 0d04859f9b8..00000000000 --- a/src/mesa/drivers/dri/r300/pixel_shader.h +++ /dev/null @@ -1,103 +0,0 @@ -#ifndef __PIXEL_SHADER_H__ -#define __PIXEL_SHADER_H__ - -#include "r300_reg.h" - - -/* INSTR 0 */ - -#define PFS_OP_MAD 0 -#define PFS_OP_DP3 1 -#define PFS_OP_DP4 2 -#define PFS_OP_MIN 4 -#define PFS_OP_MAX 5 -#define PFS_OP_CMP 8 -#define PFS_OP_FRC 9 -#define PFS_OP_OUTC_REPL_ALPHA 10 - -/* "or" these with arg0 value to negate or take absolute value of an argument */ -#define PFS_ARG_NEG (1<<5) -#define PFS_ARG_ABS (1<<6) - -#define MAKE_PFS_INSTR0(op, arg0, arg1, arg2, flags) \ - ( ((op)<<23) \ - | ((arg0)< Date: Wed, 9 May 2007 02:24:59 +0000 Subject: r300: Renamed vertex_shader.h to r300_vertprog.h --- src/mesa/drivers/dri/r300/r300_context.h | 2 +- src/mesa/drivers/dri/r300/r300_vertprog.h | 90 ++++++++++++++++++++++++++++++ src/mesa/drivers/dri/r300/vertex_shader.h | 92 ------------------------------- 3 files changed, 91 insertions(+), 93 deletions(-) create mode 100644 src/mesa/drivers/dri/r300/r300_vertprog.h delete mode 100644 src/mesa/drivers/dri/r300/vertex_shader.h (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_context.h b/src/mesa/drivers/dri/r300/r300_context.h index 78e0b1ac9d0..e26d563a47b 100644 --- a/src/mesa/drivers/dri/r300/r300_context.h +++ b/src/mesa/drivers/dri/r300/r300_context.h @@ -95,7 +95,7 @@ typedef struct r300_context *r300ContextPtr; /* We should probably change types within vertex_shader and pixel_shader structure later on */ #define CARD32 GLuint -#include "vertex_shader.h" +#include "r300_vertprog.h" #include "r300_fragprog.h" #undef CARD32 diff --git a/src/mesa/drivers/dri/r300/r300_vertprog.h b/src/mesa/drivers/dri/r300/r300_vertprog.h new file mode 100644 index 00000000000..55a215a4e84 --- /dev/null +++ b/src/mesa/drivers/dri/r300/r300_vertprog.h @@ -0,0 +1,90 @@ +#ifndef __R300_VERTPROG_H_ +#define __R300_VERTPROG_H_ + +typedef struct { + CARD32 op; + CARD32 src1; + CARD32 src2; + CARD32 src3; + } VERTEX_SHADER_INSTRUCTION; + +#define VSF_FLAG_X 1 +#define VSF_FLAG_Y 2 +#define VSF_FLAG_Z 4 +#define VSF_FLAG_W 8 +#define VSF_FLAG_XYZ (VSF_FLAG_X | VSF_FLAG_Y | VSF_FLAG_Z) +#define VSF_FLAG_ALL 0xf +#define VSF_FLAG_NONE 0 + +#define VSF_OUT_CLASS_TMP 0 +#define VSF_OUT_CLASS_ADDR 1 +#define VSF_OUT_CLASS_RESULT 2 + + +/* first CARD32 of an instruction */ + +/* possible operations: + DOT, MUL, ADD, MAD, FRC, MAX, MIN, SGE, SLT, EXP, LOG, LIT, POW, RCP, RSQ, EX2, + LG2, MAD_2 */ + +#define MAKE_VSF_OP(op, out_reg_index, out_reg_fields, class) \ + ((op) \ + | ((out_reg_index) << R300_VPI_OUT_REG_INDEX_SHIFT) \ + | ((out_reg_fields) << 20) \ + | ( (class) << 8 ) ) + +#define EASY_VSF_OP(op, out_reg_index, out_reg_fields, class) \ + MAKE_VSF_OP(R300_VPI_OUT_OP_##op, out_reg_index, VSF_FLAG_##out_reg_fields, VSF_OUT_CLASS_##class) \ + +/* according to Nikolai, the subsequent 3 CARD32 are sources, use same define for each */ + +#define VSF_IN_CLASS_TMP 0 +#define VSF_IN_CLASS_ATTR 1 +#define VSF_IN_CLASS_PARAM 2 +#define VSF_IN_CLASS_NONE 9 + +#define VSF_IN_COMPONENT_X 0 +#define VSF_IN_COMPONENT_Y 1 +#define VSF_IN_COMPONENT_Z 2 +#define VSF_IN_COMPONENT_W 3 +#define VSF_IN_COMPONENT_ZERO 4 +#define VSF_IN_COMPONENT_ONE 5 + +#define MAKE_VSF_SOURCE(in_reg_index, comp_x, comp_y, comp_z, comp_w, class, negate) \ + ( ((in_reg_index)< Date: Wed, 9 May 2007 02:27:08 +0000 Subject: r300: Removed the ugly CARD32 type. --- src/mesa/drivers/dri/r300/r300_context.h | 4 ---- src/mesa/drivers/dri/r300/r300_vertprog.h | 14 +++++++------- 2 files changed, 7 insertions(+), 11 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_context.h b/src/mesa/drivers/dri/r300/r300_context.h index e26d563a47b..0473bc23be8 100644 --- a/src/mesa/drivers/dri/r300/r300_context.h +++ b/src/mesa/drivers/dri/r300/r300_context.h @@ -92,12 +92,8 @@ typedef struct r300_context *r300ContextPtr; #define WARN_ONCE(a, ...) {} #endif - /* We should probably change types within vertex_shader - and pixel_shader structure later on */ -#define CARD32 GLuint #include "r300_vertprog.h" #include "r300_fragprog.h" -#undef CARD32 static __inline__ uint32_t r300PackFloat32(float fl) { diff --git a/src/mesa/drivers/dri/r300/r300_vertprog.h b/src/mesa/drivers/dri/r300/r300_vertprog.h index 55a215a4e84..433e98960bc 100644 --- a/src/mesa/drivers/dri/r300/r300_vertprog.h +++ b/src/mesa/drivers/dri/r300/r300_vertprog.h @@ -2,11 +2,11 @@ #define __R300_VERTPROG_H_ typedef struct { - CARD32 op; - CARD32 src1; - CARD32 src2; - CARD32 src3; - } VERTEX_SHADER_INSTRUCTION; + GLuint op; + GLuint src1; + GLuint src2; + GLuint src3; +} VERTEX_SHADER_INSTRUCTION; #define VSF_FLAG_X 1 #define VSF_FLAG_Y 2 @@ -21,7 +21,7 @@ typedef struct { #define VSF_OUT_CLASS_RESULT 2 -/* first CARD32 of an instruction */ +/* first DWORD of an instruction */ /* possible operations: DOT, MUL, ADD, MAD, FRC, MAX, MIN, SGE, SLT, EXP, LOG, LIT, POW, RCP, RSQ, EX2, @@ -36,7 +36,7 @@ typedef struct { #define EASY_VSF_OP(op, out_reg_index, out_reg_fields, class) \ MAKE_VSF_OP(R300_VPI_OUT_OP_##op, out_reg_index, VSF_FLAG_##out_reg_fields, VSF_OUT_CLASS_##class) \ -/* according to Nikolai, the subsequent 3 CARD32 are sources, use same define for each */ +/* according to Nikolai, the subsequent 3 DWORDs are sources, use same define for each */ #define VSF_IN_CLASS_TMP 0 #define VSF_IN_CLASS_ATTR 1 -- cgit v1.2.3 From 59494bafb482b30f3eef468d6f11396418a09a15 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 02:35:07 +0000 Subject: r300: Use an array for the vertex program sources and corrected an error from 4960af08ad50a3a6ea039145de2698234c2cc892. --- src/mesa/drivers/dri/r300/r300_state.c | 6 +- src/mesa/drivers/dri/r300/r300_vertprog.c | 156 +++++++++++++++--------------- src/mesa/drivers/dri/r300/r300_vertprog.h | 6 +- 3 files changed, 84 insertions(+), 84 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_state.c b/src/mesa/drivers/dri/r300/r300_state.c index 3e06c44381a..96678b82a2e 100644 --- a/src/mesa/drivers/dri/r300/r300_state.c +++ b/src/mesa/drivers/dri/r300/r300_state.c @@ -1573,9 +1573,9 @@ static void r300GenerateSimpleVertexShader(r300ContextPtr r300) #define WRITE_OP(oper,source1,source2,source3) {\ r300->state.vertex_shader.program.body.i[r300->state.vertex_shader.program_end].op=(oper); \ - r300->state.vertex_shader.program.body.i[r300->state.vertex_shader.program_end].src1=(source1); \ - r300->state.vertex_shader.program.body.i[r300->state.vertex_shader.program_end].src2=(source2); \ - r300->state.vertex_shader.program.body.i[r300->state.vertex_shader.program_end].src3=(source3); \ + r300->state.vertex_shader.program.body.i[r300->state.vertex_shader.program_end].src[0]=(source1); \ + r300->state.vertex_shader.program.body.i[r300->state.vertex_shader.program_end].src[1]=(source2); \ + r300->state.vertex_shader.program.body.i[r300->state.vertex_shader.program_end].src[2]=(source3); \ r300->state.vertex_shader.program_end++; \ } diff --git a/src/mesa/drivers/dri/r300/r300_vertprog.c b/src/mesa/drivers/dri/r300/r300_vertprog.c index e8917980ba5..486a3f2f040 100644 --- a/src/mesa/drivers/dri/r300/r300_vertprog.c +++ b/src/mesa/drivers/dri/r300/r300_vertprog.c @@ -468,13 +468,13 @@ static void r300_translate_vertex_shader(struct r300_vertex_program *vp, struct o_inst->op=MAKE_VSF_OP(R300_VPI_OUT_OP_ADD, u_temp_i, VSF_FLAG_ALL, VSF_OUT_CLASS_TMP); - o_inst->src1=MAKE_VSF_SOURCE(t_src_index(vp, &src[2]), + o_inst->src[0]=MAKE_VSF_SOURCE(t_src_index(vp, &src[2]), SWIZZLE_X, SWIZZLE_Y, SWIZZLE_Z, SWIZZLE_W, t_src_class(src[2].File), VSF_FLAG_NONE) | (src[2].RelAddr << 4); - o_inst->src2=ZERO_SRC_2; - o_inst->src3=ZERO_SRC_2; + o_inst->src[1]=ZERO_SRC_2; + o_inst->src[2]=ZERO_SRC_2; o_inst++; src[2].File=PROGRAM_TEMPORARY; @@ -490,13 +490,13 @@ static void r300_translate_vertex_shader(struct r300_vertex_program *vp, struct o_inst->op=MAKE_VSF_OP(R300_VPI_OUT_OP_ADD, u_temp_i, VSF_FLAG_ALL, VSF_OUT_CLASS_TMP); - o_inst->src1=MAKE_VSF_SOURCE(t_src_index(vp, &src[0]), + o_inst->src[0]=MAKE_VSF_SOURCE(t_src_index(vp, &src[0]), SWIZZLE_X, SWIZZLE_Y, SWIZZLE_Z, SWIZZLE_W, t_src_class(src[0].File), VSF_FLAG_NONE) | (src[0].RelAddr << 4); - o_inst->src2=ZERO_SRC_0; - o_inst->src3=ZERO_SRC_0; + o_inst->src[1]=ZERO_SRC_0; + o_inst->src[2]=ZERO_SRC_0; o_inst++; src[0].File=PROGRAM_TEMPORARY; @@ -511,9 +511,9 @@ static void r300_translate_vertex_shader(struct r300_vertex_program *vp, struct case OPCODE_POW: o_inst->op=MAKE_VSF_OP(R300_VPI_OUT_OP_POW, t_dst_index(vp, &vpi->DstReg), t_dst_mask(vpi->DstReg.WriteMask), t_dst_class(vpi->DstReg.File)); - o_inst->src1=t_src_scalar(vp, &src[0]); - o_inst->src2=ZERO_SRC_0; - o_inst->src3=t_src_scalar(vp, &src[1]); + o_inst->src[0]=t_src_scalar(vp, &src[0]); + o_inst->src[1]=ZERO_SRC_0; + o_inst->src[2]=t_src_scalar(vp, &src[1]); goto next; case OPCODE_MOV://ADD RESULT 1.X Y Z W PARAM 0{} {X Y Z W} PARAM 0{} {ZERO ZERO ZERO ZERO} @@ -521,17 +521,17 @@ static void r300_translate_vertex_shader(struct r300_vertex_program *vp, struct #if 1 o_inst->op=MAKE_VSF_OP(R300_VPI_OUT_OP_ADD, t_dst_index(vp, &vpi->DstReg), t_dst_mask(vpi->DstReg.WriteMask), t_dst_class(vpi->DstReg.File)); - o_inst->src1=t_src(vp, &src[0]); - o_inst->src2=ZERO_SRC_0; - o_inst->src3=ZERO_SRC_0; + o_inst->src[0]=t_src(vp, &src[0]); + o_inst->src[1]=ZERO_SRC_0; + o_inst->src[2]=ZERO_SRC_0; #else hw_op=(src[0].File == PROGRAM_TEMPORARY) ? R300_VPI_OUT_OP_MAD_2 : R300_VPI_OUT_OP_MAD; o_inst->op=MAKE_VSF_OP(hw_op, t_dst_index(vp, &vpi->DstReg), t_dst_mask(vpi->DstReg.WriteMask), t_dst_class(vpi->DstReg.File)); - o_inst->src1=t_src(vp, &src[0]); - o_inst->src2=ONE_SRC_0; - o_inst->src3=ZERO_SRC_0; + o_inst->src[0]=t_src(vp, &src[0]); + o_inst->src[1]=ONE_SRC_0; + o_inst->src[2]=ZERO_SRC_0; #endif goto next; @@ -543,15 +543,15 @@ static void r300_translate_vertex_shader(struct r300_vertex_program *vp, struct o_inst->op=MAKE_VSF_OP(hw_op, t_dst_index(vp, &vpi->DstReg), t_dst_mask(vpi->DstReg.WriteMask), t_dst_class(vpi->DstReg.File)); - o_inst->src1=ONE_SRC_0; - o_inst->src2=t_src(vp, &src[0]); - o_inst->src3=t_src(vp, &src[1]); + o_inst->src[0]=ONE_SRC_0; + o_inst->src[1]=t_src(vp, &src[0]); + o_inst->src[2]=t_src(vp, &src[1]); #else o_inst->op=MAKE_VSF_OP(R300_VPI_OUT_OP_ADD, t_dst_index(vp, &vpi->DstReg), t_dst_mask(vpi->DstReg.WriteMask), t_dst_class(vpi->DstReg.File)); - o_inst->src1=t_src(vp, &src[0]); - o_inst->src2=t_src(vp, &src[1]); - o_inst->src3=ZERO_SRC_1; + o_inst->src[0]=t_src(vp, &src[0]); + o_inst->src[1]=t_src(vp, &src[1]); + o_inst->src[2]=ZERO_SRC_1; #endif goto next; @@ -563,9 +563,9 @@ static void r300_translate_vertex_shader(struct r300_vertex_program *vp, struct o_inst->op=MAKE_VSF_OP(hw_op, t_dst_index(vp, &vpi->DstReg), t_dst_mask(vpi->DstReg.WriteMask), t_dst_class(vpi->DstReg.File)); - o_inst->src1=t_src(vp, &src[0]); - o_inst->src2=t_src(vp, &src[1]); - o_inst->src3=t_src(vp, &src[2]); + o_inst->src[0]=t_src(vp, &src[0]); + o_inst->src[1]=t_src(vp, &src[1]); + o_inst->src[2]=t_src(vp, &src[2]); goto next; case OPCODE_MUL: /* HW mul can take third arg but appears to have some other limitations. */ @@ -574,17 +574,17 @@ static void r300_translate_vertex_shader(struct r300_vertex_program *vp, struct o_inst->op=MAKE_VSF_OP(hw_op, t_dst_index(vp, &vpi->DstReg), t_dst_mask(vpi->DstReg.WriteMask), t_dst_class(vpi->DstReg.File)); - o_inst->src1=t_src(vp, &src[0]); - o_inst->src2=t_src(vp, &src[1]); + o_inst->src[0]=t_src(vp, &src[0]); + o_inst->src[1]=t_src(vp, &src[1]); - o_inst->src3=ZERO_SRC_1; + o_inst->src[2]=ZERO_SRC_1; goto next; case OPCODE_DP3://DOT RESULT 1.X Y Z W PARAM 0{} {X Y Z ZERO} PARAM 0{} {X Y Z ZERO} o_inst->op=MAKE_VSF_OP(R300_VPI_OUT_OP_DOT, t_dst_index(vp, &vpi->DstReg), t_dst_mask(vpi->DstReg.WriteMask), t_dst_class(vpi->DstReg.File)); - o_inst->src1=MAKE_VSF_SOURCE(t_src_index(vp, &src[0]), + o_inst->src[0]=MAKE_VSF_SOURCE(t_src_index(vp, &src[0]), t_swizzle(GET_SWZ(src[0].Swizzle, 0)), t_swizzle(GET_SWZ(src[0].Swizzle, 1)), t_swizzle(GET_SWZ(src[0].Swizzle, 2)), @@ -592,7 +592,7 @@ static void r300_translate_vertex_shader(struct r300_vertex_program *vp, struct t_src_class(src[0].File), src[0].NegateBase ? VSF_FLAG_XYZ : VSF_FLAG_NONE) | (src[0].RelAddr << 4); - o_inst->src2=MAKE_VSF_SOURCE(t_src_index(vp, &src[1]), + o_inst->src[1]=MAKE_VSF_SOURCE(t_src_index(vp, &src[1]), t_swizzle(GET_SWZ(src[1].Swizzle, 0)), t_swizzle(GET_SWZ(src[1].Swizzle, 1)), t_swizzle(GET_SWZ(src[1].Swizzle, 2)), @@ -600,7 +600,7 @@ static void r300_translate_vertex_shader(struct r300_vertex_program *vp, struct t_src_class(src[1].File), src[1].NegateBase ? VSF_FLAG_XYZ : VSF_FLAG_NONE) | (src[1].RelAddr << 4); - o_inst->src3=ZERO_SRC_1; + o_inst->src[2]=ZERO_SRC_1; goto next; case OPCODE_SUB://ADD RESULT 1.X Y Z W TMP 0{} {X Y Z W} PARAM 1{X Y Z W } {X Y Z W} neg Xneg Yneg Zneg W @@ -610,9 +610,9 @@ static void r300_translate_vertex_shader(struct r300_vertex_program *vp, struct o_inst->op=MAKE_VSF_OP(hw_op, t_dst_index(vp, &vpi->DstReg), t_dst_mask(vpi->DstReg.WriteMask), t_dst_class(vpi->DstReg.File)); - o_inst->src1=t_src(vp, &src[0]); - o_inst->src2=ONE_SRC_0; - o_inst->src3=MAKE_VSF_SOURCE(t_src_index(vp, &src[1]), + o_inst->src[0]=t_src(vp, &src[0]); + o_inst->src[1]=ONE_SRC_0; + o_inst->src[2]=MAKE_VSF_SOURCE(t_src_index(vp, &src[1]), t_swizzle(GET_SWZ(src[1].Swizzle, 0)), t_swizzle(GET_SWZ(src[1].Swizzle, 1)), t_swizzle(GET_SWZ(src[1].Swizzle, 2)), @@ -623,15 +623,15 @@ static void r300_translate_vertex_shader(struct r300_vertex_program *vp, struct o_inst->op=MAKE_VSF_OP(R300_VPI_OUT_OP_ADD, t_dst_index(vp, &vpi->DstReg), t_dst_mask(vpi->DstReg.WriteMask), t_dst_class(vpi->DstReg.File)); - o_inst->src1=t_src(vp, &src[0]); - o_inst->src2=MAKE_VSF_SOURCE(t_src_index(vp, &src[1]), + o_inst->src[0]=t_src(vp, &src[0]); + o_inst->src[1]=MAKE_VSF_SOURCE(t_src_index(vp, &src[1]), t_swizzle(GET_SWZ(src[1].Swizzle, 0)), t_swizzle(GET_SWZ(src[1].Swizzle, 1)), t_swizzle(GET_SWZ(src[1].Swizzle, 2)), t_swizzle(GET_SWZ(src[1].Swizzle, 3)), t_src_class(src[1].File), (!src[1].NegateBase) ? VSF_FLAG_ALL : VSF_FLAG_NONE) | (src[1].RelAddr << 4); - o_inst->src3=0; + o_inst->src[2]=0; #endif goto next; @@ -639,15 +639,15 @@ static void r300_translate_vertex_shader(struct r300_vertex_program *vp, struct o_inst->op=MAKE_VSF_OP(R300_VPI_OUT_OP_MAX, t_dst_index(vp, &vpi->DstReg), t_dst_mask(vpi->DstReg.WriteMask), t_dst_class(vpi->DstReg.File)); - o_inst->src1=t_src(vp, &src[0]); - o_inst->src2=MAKE_VSF_SOURCE(t_src_index(vp, &src[0]), + o_inst->src[0]=t_src(vp, &src[0]); + o_inst->src[1]=MAKE_VSF_SOURCE(t_src_index(vp, &src[0]), t_swizzle(GET_SWZ(src[0].Swizzle, 0)), t_swizzle(GET_SWZ(src[0].Swizzle, 1)), t_swizzle(GET_SWZ(src[0].Swizzle, 2)), t_swizzle(GET_SWZ(src[0].Swizzle, 3)), t_src_class(src[0].File), (!src[0].NegateBase) ? VSF_FLAG_ALL : VSF_FLAG_NONE) | (src[0].RelAddr << 4); - o_inst->src3=0; + o_inst->src[2]=0; goto next; case OPCODE_FLR: @@ -657,16 +657,16 @@ static void r300_translate_vertex_shader(struct r300_vertex_program *vp, struct o_inst->op=MAKE_VSF_OP(R300_VPI_OUT_OP_FRC, u_temp_i, t_dst_mask(vpi->DstReg.WriteMask), VSF_OUT_CLASS_TMP); - o_inst->src1=t_src(vp, &src[0]); - o_inst->src2=ZERO_SRC_0; - o_inst->src3=ZERO_SRC_0; + o_inst->src[0]=t_src(vp, &src[0]); + o_inst->src[1]=ZERO_SRC_0; + o_inst->src[2]=ZERO_SRC_0; o_inst++; o_inst->op=MAKE_VSF_OP(R300_VPI_OUT_OP_ADD, t_dst_index(vp, &vpi->DstReg), t_dst_mask(vpi->DstReg.WriteMask), t_dst_class(vpi->DstReg.File)); - o_inst->src1=t_src(vp, &src[0]); - o_inst->src2=MAKE_VSF_SOURCE(u_temp_i, + o_inst->src[0]=t_src(vp, &src[0]); + o_inst->src[1]=MAKE_VSF_SOURCE(u_temp_i, VSF_IN_COMPONENT_X, VSF_IN_COMPONENT_Y, VSF_IN_COMPONENT_Z, @@ -675,7 +675,7 @@ static void r300_translate_vertex_shader(struct r300_vertex_program *vp, struct /* Not 100% sure about this */ (!src[0].NegateBase) ? VSF_FLAG_ALL : VSF_FLAG_NONE/*VSF_FLAG_ALL*/); - o_inst->src3=ZERO_SRC_0; + o_inst->src[2]=ZERO_SRC_0; u_temp_i--; goto next; @@ -683,36 +683,36 @@ static void r300_translate_vertex_shader(struct r300_vertex_program *vp, struct o_inst->op=MAKE_VSF_OP(R300_VPI_OUT_OP_LG2, t_dst_index(vp, &vpi->DstReg), t_dst_mask(vpi->DstReg.WriteMask), t_dst_class(vpi->DstReg.File)); - o_inst->src1=MAKE_VSF_SOURCE(t_src_index(vp, &src[0]), + o_inst->src[0]=MAKE_VSF_SOURCE(t_src_index(vp, &src[0]), t_swizzle(GET_SWZ(src[0].Swizzle, 0)), t_swizzle(GET_SWZ(src[0].Swizzle, 0)), t_swizzle(GET_SWZ(src[0].Swizzle, 0)), t_swizzle(GET_SWZ(src[0].Swizzle, 0)), t_src_class(src[0].File), src[0].NegateBase ? VSF_FLAG_ALL : VSF_FLAG_NONE) | (src[0].RelAddr << 4); - o_inst->src2=ZERO_SRC_0; - o_inst->src3=ZERO_SRC_0; + o_inst->src[1]=ZERO_SRC_0; + o_inst->src[2]=ZERO_SRC_0; goto next; case OPCODE_LIT://LIT TMP 1.Y Z TMP 1{} {X W Z Y} TMP 1{} {Y W Z X} TMP 1{} {Y X Z W} o_inst->op=MAKE_VSF_OP(R300_VPI_OUT_OP_LIT, t_dst_index(vp, &vpi->DstReg), t_dst_mask(vpi->DstReg.WriteMask), t_dst_class(vpi->DstReg.File)); /* NOTE: Users swizzling might not work. */ - o_inst->src1=MAKE_VSF_SOURCE(t_src_index(vp, &src[0]), + o_inst->src[0]=MAKE_VSF_SOURCE(t_src_index(vp, &src[0]), t_swizzle(GET_SWZ(src[0].Swizzle, 0)), // x t_swizzle(GET_SWZ(src[0].Swizzle, 3)), // w VSF_IN_COMPONENT_ZERO, // z t_swizzle(GET_SWZ(src[0].Swizzle, 1)), // y t_src_class(src[0].File), src[0].NegateBase ? VSF_FLAG_ALL : VSF_FLAG_NONE) | (src[0].RelAddr << 4); - o_inst->src2=MAKE_VSF_SOURCE(t_src_index(vp, &src[0]), + o_inst->src[1]=MAKE_VSF_SOURCE(t_src_index(vp, &src[0]), t_swizzle(GET_SWZ(src[0].Swizzle, 1)), // y t_swizzle(GET_SWZ(src[0].Swizzle, 3)), // w VSF_IN_COMPONENT_ZERO, // z t_swizzle(GET_SWZ(src[0].Swizzle, 0)), // x t_src_class(src[0].File), src[0].NegateBase ? VSF_FLAG_ALL : VSF_FLAG_NONE) | (src[0].RelAddr << 4); - o_inst->src3=MAKE_VSF_SOURCE(t_src_index(vp, &src[0]), + o_inst->src[2]=MAKE_VSF_SOURCE(t_src_index(vp, &src[0]), t_swizzle(GET_SWZ(src[0].Swizzle, 1)), // y t_swizzle(GET_SWZ(src[0].Swizzle, 0)), // x VSF_IN_COMPONENT_ZERO, // z @@ -725,15 +725,15 @@ static void r300_translate_vertex_shader(struct r300_vertex_program *vp, struct o_inst->op=MAKE_VSF_OP(R300_VPI_OUT_OP_DOT, t_dst_index(vp, &vpi->DstReg), t_dst_mask(vpi->DstReg.WriteMask), t_dst_class(vpi->DstReg.File)); - o_inst->src1=MAKE_VSF_SOURCE(t_src_index(vp, &src[0]), + o_inst->src[0]=MAKE_VSF_SOURCE(t_src_index(vp, &src[0]), t_swizzle(GET_SWZ(src[0].Swizzle, 0)), t_swizzle(GET_SWZ(src[0].Swizzle, 1)), t_swizzle(GET_SWZ(src[0].Swizzle, 2)), VSF_IN_COMPONENT_ONE, t_src_class(src[0].File), src[0].NegateBase ? VSF_FLAG_XYZ : VSF_FLAG_NONE) | (src[0].RelAddr << 4); - o_inst->src2=t_src(vp, &src[1]); - o_inst->src3=ZERO_SRC_1; + o_inst->src[1]=t_src(vp, &src[1]); + o_inst->src[2]=ZERO_SRC_1; goto next; case OPCODE_XPD: @@ -745,7 +745,7 @@ static void r300_translate_vertex_shader(struct r300_vertex_program *vp, struct o_inst->op=MAKE_VSF_OP(R300_VPI_OUT_OP_MAD, u_temp_i, t_dst_mask(vpi->DstReg.WriteMask), VSF_OUT_CLASS_TMP); - o_inst->src1=MAKE_VSF_SOURCE(t_src_index(vp, &src[0]), + o_inst->src[0]=MAKE_VSF_SOURCE(t_src_index(vp, &src[0]), t_swizzle(GET_SWZ(src[0].Swizzle, 1)), // y t_swizzle(GET_SWZ(src[0].Swizzle, 2)), // z t_swizzle(GET_SWZ(src[0].Swizzle, 0)), // x @@ -753,7 +753,7 @@ static void r300_translate_vertex_shader(struct r300_vertex_program *vp, struct t_src_class(src[0].File), src[0].NegateBase ? VSF_FLAG_ALL : VSF_FLAG_NONE) | (src[0].RelAddr << 4); - o_inst->src2=MAKE_VSF_SOURCE(t_src_index(vp, &src[1]), + o_inst->src[1]=MAKE_VSF_SOURCE(t_src_index(vp, &src[1]), t_swizzle(GET_SWZ(src[1].Swizzle, 2)), // z t_swizzle(GET_SWZ(src[1].Swizzle, 0)), // x t_swizzle(GET_SWZ(src[1].Swizzle, 1)), // y @@ -761,14 +761,14 @@ static void r300_translate_vertex_shader(struct r300_vertex_program *vp, struct t_src_class(src[1].File), src[1].NegateBase ? VSF_FLAG_ALL : VSF_FLAG_NONE) | (src[1].RelAddr << 4); - o_inst->src3=ZERO_SRC_1; + o_inst->src[2]=ZERO_SRC_1; o_inst++; u_temp_i--; o_inst->op=MAKE_VSF_OP(R300_VPI_OUT_OP_MAD, t_dst_index(vp, &vpi->DstReg), t_dst_mask(vpi->DstReg.WriteMask), t_dst_class(vpi->DstReg.File)); - o_inst->src1=MAKE_VSF_SOURCE(t_src_index(vp, &src[1]), + o_inst->src[0]=MAKE_VSF_SOURCE(t_src_index(vp, &src[1]), t_swizzle(GET_SWZ(src[1].Swizzle, 1)), // y t_swizzle(GET_SWZ(src[1].Swizzle, 2)), // z t_swizzle(GET_SWZ(src[1].Swizzle, 0)), // x @@ -776,7 +776,7 @@ static void r300_translate_vertex_shader(struct r300_vertex_program *vp, struct t_src_class(src[1].File), (!src[1].NegateBase) ? VSF_FLAG_ALL : VSF_FLAG_NONE) | (src[1].RelAddr << 4); - o_inst->src2=MAKE_VSF_SOURCE(t_src_index(vp, &src[0]), + o_inst->src[1]=MAKE_VSF_SOURCE(t_src_index(vp, &src[0]), t_swizzle(GET_SWZ(src[0].Swizzle, 2)), // z t_swizzle(GET_SWZ(src[0].Swizzle, 0)), // x t_swizzle(GET_SWZ(src[0].Swizzle, 1)), // y @@ -784,7 +784,7 @@ static void r300_translate_vertex_shader(struct r300_vertex_program *vp, struct t_src_class(src[0].File), src[0].NegateBase ? VSF_FLAG_ALL : VSF_FLAG_NONE) | (src[0].RelAddr << 4); - o_inst->src3=MAKE_VSF_SOURCE(u_temp_i+1, + o_inst->src[2]=MAKE_VSF_SOURCE(u_temp_i+1, VSF_IN_COMPONENT_X, VSF_IN_COMPONENT_Y, VSF_IN_COMPONENT_Z, @@ -810,21 +810,21 @@ static void r300_translate_vertex_shader(struct r300_vertex_program *vp, struct if(are_srcs_scalar){ switch(operands){ case 1: - o_inst->src1=t_src_scalar(vp, &src[0]); - o_inst->src2=ZERO_SRC_0; - o_inst->src3=ZERO_SRC_0; + o_inst->src[0]=t_src_scalar(vp, &src[0]); + o_inst->src[1]=ZERO_SRC_0; + o_inst->src[2]=ZERO_SRC_0; break; case 2: - o_inst->src1=t_src_scalar(vp, &src[0]); - o_inst->src2=t_src_scalar(vp, &src[1]); - o_inst->src3=ZERO_SRC_1; + o_inst->src[0]=t_src_scalar(vp, &src[0]); + o_inst->src[1]=t_src_scalar(vp, &src[1]); + o_inst->src[2]=ZERO_SRC_1; break; case 3: - o_inst->src1=t_src_scalar(vp, &src[0]); - o_inst->src2=t_src_scalar(vp, &src[1]); - o_inst->src3=t_src_scalar(vp, &src[2]); + o_inst->src[0]=t_src_scalar(vp, &src[0]); + o_inst->src[1]=t_src_scalar(vp, &src[1]); + o_inst->src[2]=t_src_scalar(vp, &src[2]); break; default: @@ -835,21 +835,21 @@ static void r300_translate_vertex_shader(struct r300_vertex_program *vp, struct }else{ switch(operands){ case 1: - o_inst->src1=t_src(vp, &src[0]); - o_inst->src2=ZERO_SRC_0; - o_inst->src3=ZERO_SRC_0; + o_inst->src[0]=t_src(vp, &src[0]); + o_inst->src[1]=ZERO_SRC_0; + o_inst->src[2]=ZERO_SRC_0; break; case 2: - o_inst->src1=t_src(vp, &src[0]); - o_inst->src2=t_src(vp, &src[1]); - o_inst->src3=ZERO_SRC_1; + o_inst->src[0]=t_src(vp, &src[0]); + o_inst->src[1]=t_src(vp, &src[1]); + o_inst->src[2]=ZERO_SRC_1; break; case 3: - o_inst->src1=t_src(vp, &src[0]); - o_inst->src2=t_src(vp, &src[1]); - o_inst->src3=t_src(vp, &src[2]); + o_inst->src[0]=t_src(vp, &src[0]); + o_inst->src[1]=t_src(vp, &src[1]); + o_inst->src[2]=t_src(vp, &src[2]); break; default: diff --git a/src/mesa/drivers/dri/r300/r300_vertprog.h b/src/mesa/drivers/dri/r300/r300_vertprog.h index 433e98960bc..005fca976b6 100644 --- a/src/mesa/drivers/dri/r300/r300_vertprog.h +++ b/src/mesa/drivers/dri/r300/r300_vertprog.h @@ -1,11 +1,11 @@ #ifndef __R300_VERTPROG_H_ #define __R300_VERTPROG_H_ +#include "r300_reg.h" + typedef struct { GLuint op; - GLuint src1; - GLuint src2; - GLuint src3; + GLuint src[3]; } VERTEX_SHADER_INSTRUCTION; #define VSF_FLAG_X 1 -- cgit v1.2.3 From 8d62afdb6a1575642fbe0e4bf3e6b279f92500e2 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 02:41:38 +0000 Subject: r300: Removed the obsolete pfs_reg_t type from r300_fragprog.h. --- src/mesa/drivers/dri/r300/r300_fragprog.h | 20 -------------------- 1 file changed, 20 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_fragprog.h b/src/mesa/drivers/dri/r300/r300_fragprog.h index d883aee2d72..1d683acdd92 100644 --- a/src/mesa/drivers/dri/r300/r300_fragprog.h +++ b/src/mesa/drivers/dri/r300/r300_fragprog.h @@ -41,26 +41,6 @@ #include "r300_context.h" - -#if 0 -/* representation of a register for emit_arith/swizzle */ -typedef struct _pfs_reg_t { - enum { - REG_TYPE_INPUT, - REG_TYPE_OUTPUT, - REG_TYPE_TEMP, - REG_TYPE_CONST - } type:2; - GLuint index:6; - GLuint v_swz:5; - GLuint s_swz:5; - GLuint negate_v:1; - GLuint negate_s:1; - GLuint absolute:1; - GLboolean no_use:1; - GLboolean valid:1; -} pfs_reg_t; -#endif typedef struct r300_fragment_program_swizzle { GLuint length; GLuint src[4]; -- cgit v1.2.3 From e90ad3dbbbacc954b1f87e9c985739654797ee1a Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 02:46:57 +0000 Subject: r300: Indented r300_ioctl.[ch]. --- src/mesa/drivers/dri/r300/r300_ioctl.c | 301 ++++++++++++++++++--------------- src/mesa/drivers/dri/r300/r300_ioctl.h | 11 +- 2 files changed, 169 insertions(+), 143 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_ioctl.c b/src/mesa/drivers/dri/r300/r300_ioctl.c index 1b73389600b..de0a482eb5d 100644 --- a/src/mesa/drivers/dri/r300/r300_ioctl.c +++ b/src/mesa/drivers/dri/r300/r300_ioctl.c @@ -61,14 +61,14 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. static void r300ClearBuffer(r300ContextPtr r300, int flags, int buffer) { - GLcontext* ctx = r300->radeon.glCtx; + GLcontext *ctx = r300->radeon.glCtx; __DRIdrawablePrivate *dPriv = r300->radeon.dri.drawable; GLuint cboffset, cbpitch; - drm_r300_cmd_header_t* cmd2; + drm_r300_cmd_header_t *cmd2; int cmd_reserved = 0; int cmd_written = 0; drm_radeon_cmd_header_t *cmd = NULL; - r300ContextPtr rmesa=r300; + r300ContextPtr rmesa = r300; if (RADEON_DEBUG & DEBUG_IOCTL) fprintf(stderr, "%s: %s buffer (%i,%i %ix%i)\n", @@ -87,69 +87,81 @@ static void r300ClearBuffer(r300ContextPtr r300, int flags, int buffer) cp_wait(r300, R300_WAIT_3D | R300_WAIT_3D_CLEAN); end_3d(rmesa); - + R300_STATECHANGE(r300, cb); reg_start(R300_RB3D_COLOROFFSET0, 0); e32(cboffset); - + if (r300->radeon.radeonScreen->cpp == 4) cbpitch |= R300_COLOR_FORMAT_ARGB8888; else cbpitch |= R300_COLOR_FORMAT_RGB565; - + if (r300->radeon.sarea->tiling_enabled) cbpitch |= R300_COLOR_TILE_ENABLE; - + reg_start(R300_RB3D_COLORPITCH0, 0); e32(cbpitch); R300_STATECHANGE(r300, cmk); reg_start(R300_RB3D_COLORMASK, 0); - + if (flags & CLEARBUFFER_COLOR) { e32((ctx->Color.ColorMask[BCOMP] ? R300_COLORMASK0_B : 0) | - (ctx->Color.ColorMask[GCOMP] ? R300_COLORMASK0_G : 0) | - (ctx->Color.ColorMask[RCOMP] ? R300_COLORMASK0_R : 0) | - (ctx->Color.ColorMask[ACOMP] ? R300_COLORMASK0_A : 0)); + (ctx->Color.ColorMask[GCOMP] ? R300_COLORMASK0_G : 0) | + (ctx->Color.ColorMask[RCOMP] ? R300_COLORMASK0_R : 0) | + (ctx->Color.ColorMask[ACOMP] ? R300_COLORMASK0_A : 0)); } else { e32(0); } - + R300_STATECHANGE(r300, zs); reg_start(R300_RB3D_ZSTENCIL_CNTL_0, 2); - + { - uint32_t t1, t2; - - t1 = 0x0; - t2 = 0x0; - - if (flags & CLEARBUFFER_DEPTH) { - t1 |= R300_RB3D_Z_WRITE_ONLY; - t2 |= (R300_ZS_ALWAYS << R300_RB3D_ZS1_DEPTH_FUNC_SHIFT); - } else { - t1 |= R300_RB3D_Z_DISABLED_1; // disable - } - - if (flags & CLEARBUFFER_STENCIL) { - t1 |= R300_RB3D_STENCIL_ENABLE; - t2 |= - (R300_ZS_ALWAYS<state.stencil.clear); + uint32_t t1, t2; + + t1 = 0x0; + t2 = 0x0; + + if (flags & CLEARBUFFER_DEPTH) { + t1 |= R300_RB3D_Z_WRITE_ONLY; + t2 |= + (R300_ZS_ALWAYS << + R300_RB3D_ZS1_DEPTH_FUNC_SHIFT); + } else { + t1 |= R300_RB3D_Z_DISABLED_1; // disable + } + + if (flags & CLEARBUFFER_STENCIL) { + t1 |= R300_RB3D_STENCIL_ENABLE; + t2 |= + (R300_ZS_ALWAYS << + R300_RB3D_ZS1_FRONT_FUNC_SHIFT) | + (R300_ZS_REPLACE << + R300_RB3D_ZS1_FRONT_FAIL_OP_SHIFT) | + (R300_ZS_REPLACE << + R300_RB3D_ZS1_FRONT_ZPASS_OP_SHIFT) | + (R300_ZS_REPLACE << + R300_RB3D_ZS1_FRONT_ZFAIL_OP_SHIFT) | + (R300_ZS_ALWAYS << + R300_RB3D_ZS1_BACK_FUNC_SHIFT) | + (R300_ZS_REPLACE << + R300_RB3D_ZS1_BACK_FAIL_OP_SHIFT) | + (R300_ZS_REPLACE << + R300_RB3D_ZS1_BACK_ZPASS_OP_SHIFT) | + (R300_ZS_REPLACE << + R300_RB3D_ZS1_BACK_ZFAIL_OP_SHIFT); + } + + e32(t1); + e32(t2); + e32(r300->state.stencil.clear); } - - cmd2 = (drm_r300_cmd_header_t*)r300AllocCmdBuf(r300, 9, __FUNCTION__); + + cmd2 = + (drm_r300_cmd_header_t *) r300AllocCmdBuf(r300, 9, + __FUNCTION__); cmd2[0].packet3.cmd_type = R300_CMD_PACKET3; cmd2[0].packet3.packet = R300_CMD_PACKET3_CLEAR; cmd2[1].u = r300PackFloat32(dPriv->w / 2.0); @@ -161,11 +173,10 @@ static void r300ClearBuffer(r300ContextPtr r300, int flags, int buffer) cmd2[7].u = r300PackFloat32(ctx->Color.ClearColor[2]); cmd2[8].u = r300PackFloat32(ctx->Color.ClearColor[3]); - reg_start(R300_RB3D_DSTCACHE_CTLSTAT,0); + reg_start(R300_RB3D_DSTCACHE_CTLSTAT, 0); e32(R300_RB3D_DSTCACHE_UNKNOWN_0A); - - reg_start(R300_RB3D_ZCACHE_CTLSTAT,0); + reg_start(R300_RB3D_ZCACHE_CTLSTAT, 0); e32(R300_RB3D_ZCACHE_UNKNOWN_03); cp_wait(rmesa, R300_WAIT_3D | R300_WAIT_3D_CLEAN); } @@ -173,7 +184,7 @@ static void r300ClearBuffer(r300ContextPtr r300, int flags, int buffer) static void r300EmitClearState(GLcontext * ctx) { r300ContextPtr r300 = R300_CONTEXT(ctx); - r300ContextPtr rmesa=r300; + r300ContextPtr rmesa = r300; __DRIdrawablePrivate *dPriv = r300->radeon.dri.drawable; int i; int cmd_reserved = 0; @@ -182,20 +193,20 @@ static void r300EmitClearState(GLcontext * ctx) int has_tcl = 1; if (!(r300->radeon.radeonScreen->chip_flags & RADEON_CHIPSET_TCL)) - has_tcl = 0; - + has_tcl = 0; + R300_STATECHANGE(r300, vir[0]); reg_start(R300_VAP_INPUT_ROUTE_0_0, 0); if (!has_tcl) - e32(0x22030003); + e32(0x22030003); else - e32(0x21030003); - + e32(0x21030003); + /* disable fog */ R300_STATECHANGE(r300, fogs); reg_start(R300_RE_FOG_STATE, 0); e32(0x0); - + R300_STATECHANGE(r300, vir[1]); reg_start(R300_VAP_INPUT_ROUTE_1_0, 0); e32(0xF688F688); @@ -206,26 +217,26 @@ static void r300EmitClearState(GLcontext * ctx) e32(0x00000405); if (!has_tcl) { - R300_STATECHANGE(r300, vte); - /* comes from fglrx startup of clear */ - reg_start(R300_SE_VTE_CNTL, 1); - e32(0x043f); - e32(0x8); - - reg_start(0x21dc, 0); - e32(0xaaaaaaaa); + R300_STATECHANGE(r300, vte); + /* comes from fglrx startup of clear */ + reg_start(R300_SE_VTE_CNTL, 1); + e32(0x043f); + e32(0x8); + + reg_start(0x21dc, 0); + e32(0xaaaaaaaa); } R300_STATECHANGE(r300, vof); reg_start(R300_VAP_OUTPUT_VTX_FMT_0, 1); - e32(R300_VAP_OUTPUT_VTX_FMT_0__POS_PRESENT | R300_VAP_OUTPUT_VTX_FMT_0__COLOR_PRESENT); - e32(0); /* no textures */ - - + e32(R300_VAP_OUTPUT_VTX_FMT_0__POS_PRESENT | + R300_VAP_OUTPUT_VTX_FMT_0__COLOR_PRESENT); + e32(0); /* no textures */ + R300_STATECHANGE(r300, txe); reg_start(R300_TX_ENABLE, 0); e32(0); - + R300_STATECHANGE(r300, vpt); reg_start(R300_SE_VPORT_XSCALE, 5); efloat(1.0); @@ -234,28 +245,28 @@ static void r300EmitClearState(GLcontext * ctx) efloat(dPriv->y); efloat(1.0); efloat(0.0); - + R300_STATECHANGE(r300, at); reg_start(R300_PP_ALPHA_TEST, 0); e32(0); - + R300_STATECHANGE(r300, bld); reg_start(R300_RB3D_CBLEND, 1); e32(0); e32(0); - + R300_STATECHANGE(r300, unk221C); reg_start(R300_VAP_UNKNOWN_221C, 0); e32(R300_221C_CLEAR); - + R300_STATECHANGE(r300, ps); reg_start(R300_RE_POINTSIZE, 0); e32(((dPriv->w * 6) << R300_POINTSIZE_X_SHIFT) | - ((dPriv->h * 6) << R300_POINTSIZE_Y_SHIFT)); - + ((dPriv->h * 6) << R300_POINTSIZE_Y_SHIFT)); + R300_STATECHANGE(r300, ri); reg_start(R300_RS_INTERP_0, 8); - for(i = 0; i < 8; ++i){ + for (i = 0; i < 8; ++i) { e32(R300_RS_INTERP_USED); } @@ -264,11 +275,11 @@ static void r300EmitClearState(GLcontext * ctx) reg_start(R300_RS_CNTL_0, 1); e32((1 << R300_RS_CNTL_CI_CNT_SHIFT) | R300_RS_CNTL_0_UNKNOWN_18); e32(0); - + R300_STATECHANGE(r300, rr); reg_start(R300_RS_ROUTE_0, 0); e32(0x00004000); - + R300_STATECHANGE(r300, fp); reg_start(R300_PFS_CNTL_0, 2); e32(0); @@ -279,48 +290,49 @@ static void r300EmitClearState(GLcontext * ctx) e32(0); e32(0); e32(R300_PFS_NODE_OUTPUT_COLOR); - + R300_STATECHANGE(r300, fpi[0]); R300_STATECHANGE(r300, fpi[1]); R300_STATECHANGE(r300, fpi[2]); R300_STATECHANGE(r300, fpi[3]); - + reg_start(R300_PFS_INSTR0_0, 0); - e32(FP_INSTRC(MAD, FP_ARGC(SRC0C_XYZ), FP_ARGC(ONE), FP_ARGC(ZERO))); - + e32(FP_INSTRC + (MAD, FP_ARGC(SRC0C_XYZ), FP_ARGC(ONE), FP_ARGC(ZERO))); + reg_start(R300_PFS_INSTR1_0, 0); - e32(FP_SELC(0,NO,XYZ,FP_TMP(0),0,0)); - + e32(FP_SELC(0, NO, XYZ, FP_TMP(0), 0, 0)); + reg_start(R300_PFS_INSTR2_0, 0); e32(FP_INSTRA(MAD, FP_ARGA(SRC0A), FP_ARGA(ONE), FP_ARGA(ZERO))); - + reg_start(R300_PFS_INSTR3_0, 0); - e32(FP_SELA(0,NO,W,FP_TMP(0),0,0)); + e32(FP_SELA(0, NO, W, FP_TMP(0), 0, 0)); if (has_tcl) { - R300_STATECHANGE(r300, pvs); - reg_start(R300_VAP_PVS_CNTL_1, 2); - e32((0 << R300_PVS_CNTL_1_PROGRAM_START_SHIFT) | - (0 << R300_PVS_CNTL_1_POS_END_SHIFT) | - (1 << R300_PVS_CNTL_1_PROGRAM_END_SHIFT)); - e32(0); - e32(1 << R300_PVS_CNTL_3_PROGRAM_UNKNOWN_SHIFT); - - R300_STATECHANGE(r300, vpi); - vsf_start_fragment(0x0, 8); - e32(VP_OUT(ADD,OUT,0,XYZW)); - e32(VP_IN(IN,0)); - e32(VP_ZERO()); - e32(0); - - e32(VP_OUT(ADD,OUT,1,XYZW)); - e32(VP_IN(IN,1)); - e32(VP_ZERO()); - e32(0); + R300_STATECHANGE(r300, pvs); + reg_start(R300_VAP_PVS_CNTL_1, 2); + e32((0 << R300_PVS_CNTL_1_PROGRAM_START_SHIFT) | + (0 << R300_PVS_CNTL_1_POS_END_SHIFT) | + (1 << R300_PVS_CNTL_1_PROGRAM_END_SHIFT)); + e32(0); + e32(1 << R300_PVS_CNTL_3_PROGRAM_UNKNOWN_SHIFT); + + R300_STATECHANGE(r300, vpi); + vsf_start_fragment(0x0, 8); + e32(VP_OUT(ADD, OUT, 0, XYZW)); + e32(VP_IN(IN, 0)); + e32(VP_ZERO()); + e32(0); + + e32(VP_OUT(ADD, OUT, 1, XYZW)); + e32(VP_IN(IN, 1)); + e32(VP_ZERO()); + e32(0); } - + /*reg_start(0x4500,0); - e32(2560-1);*/ + e32(2560-1); */ } /** @@ -358,8 +370,8 @@ static void r300Clear(GLcontext * ctx, GLbitfield mask) bits |= CLEARBUFFER_DEPTH; mask &= ~BUFFER_BIT_DEPTH; } - - if ( (mask & BUFFER_BIT_STENCIL) && r300->state.stencil.hw_stencil) { + + if ((mask & BUFFER_BIT_STENCIL) && r300->state.stencil.hw_stencil) { bits |= CLEARBUFFER_STENCIL; mask &= ~BUFFER_BIT_STENCIL; } @@ -374,8 +386,8 @@ static void r300Clear(GLcontext * ctx, GLbitfield mask) swapped = r300->radeon.sarea->pfCurrentPage == 1; /* Make sure it fits there. */ - r300EnsureCmdBufSpace(r300, 421*3, __FUNCTION__); - if(flags || bits) + r300EnsureCmdBufSpace(r300, 421 * 3, __FUNCTION__); + if (flags || bits) r300EmitClearState(ctx); if (flags & BUFFER_BIT_FRONT_LEFT) { @@ -384,7 +396,8 @@ static void r300Clear(GLcontext * ctx, GLbitfield mask) } if (flags & BUFFER_BIT_BACK_LEFT) { - r300ClearBuffer(r300, bits | CLEARBUFFER_COLOR, swapped ^ 1); + r300ClearBuffer(r300, bits | CLEARBUFFER_COLOR, + swapped ^ 1); bits = 0; } @@ -393,7 +406,6 @@ static void r300Clear(GLcontext * ctx, GLbitfield mask) } - void r300Flush(GLcontext * ctx) { r300ContextPtr r300 = R300_CONTEXT(ctx); @@ -411,8 +423,8 @@ void r300Flush(GLcontext * ctx) static void r300RefillCurrentDmaRegion(r300ContextPtr rmesa, int size) { struct r300_dma_buffer *dmabuf; - size = MAX2(size, RADEON_BUFFER_SIZE*16); - + size = MAX2(size, RADEON_BUFFER_SIZE * 16); + if (RADEON_DEBUG & (DEBUG_IOCTL | DEBUG_DMA)) fprintf(stderr, "%s\n", __FUNCTION__); @@ -421,39 +433,42 @@ static void r300RefillCurrentDmaRegion(r300ContextPtr rmesa, int size) } if (rmesa->dma.current.buf) - r300ReleaseDmaRegion(rmesa, &rmesa->dma.current, __FUNCTION__); + r300ReleaseDmaRegion(rmesa, &rmesa->dma.current, + __FUNCTION__); if (rmesa->dma.nr_released_bufs > 4) r300FlushCmdBuf(rmesa, __FUNCTION__); - + dmabuf = CALLOC_STRUCT(r300_dma_buffer); - dmabuf->buf = (void *)1; /* hack */ + dmabuf->buf = (void *)1; /* hack */ dmabuf->refcount = 1; dmabuf->id = radeon_mm_alloc(rmesa, 4, size); if (dmabuf->id == 0) { LOCK_HARDWARE(&rmesa->radeon); /* no need to validate */ - + r300FlushCmdBufLocked(rmesa, __FUNCTION__); radeonWaitForIdleLocked(&rmesa->radeon); - + dmabuf->id = radeon_mm_alloc(rmesa, 4, size); #ifdef HW_VBOS if (dmabuf->id == 0) { /* Just kick all */ - r300EvictVBOs(rmesa->radeon.glCtx, /*RADEON_BUFFER_SIZE*16*/1<<30); + r300EvictVBOs(rmesa->radeon.glCtx, + /*RADEON_BUFFER_SIZE*16 */ 1 << 30); dmabuf->id = radeon_mm_alloc(rmesa, 4, size); } #endif UNLOCK_HARDWARE(&rmesa->radeon); - + if (dmabuf->id == 0) { - fprintf(stderr, "Error: Could not get dma buffer... exiting\n"); + fprintf(stderr, + "Error: Could not get dma buffer... exiting\n"); exit(-1); } } - + rmesa->dma.current.buf = dmabuf; rmesa->dma.current.address = radeon_mm_ptr(rmesa, dmabuf->id); rmesa->dma.current.end = size; @@ -462,7 +477,8 @@ static void r300RefillCurrentDmaRegion(r300ContextPtr rmesa, int size) } void r300ReleaseDmaRegion(r300ContextPtr rmesa, - struct r300_dma_region *region, const char *caller) + struct r300_dma_region *region, + const char *caller) { if (RADEON_DEBUG & DEBUG_IOCTL) fprintf(stderr, "%s from %s\n", __FUNCTION__, caller); @@ -504,8 +520,7 @@ void r300AllocDmaRegion(r300ContextPtr rmesa, (rmesa->dma.current.ptr + alignment) & ~alignment; if (rmesa->dma.current.ptr + bytes > rmesa->dma.current.end) - r300RefillCurrentDmaRegion(rmesa, - (bytes + 0x7) & ~0x7); + r300RefillCurrentDmaRegion(rmesa, (bytes + 0x7) & ~0x7); region->start = rmesa->dma.current.start; region->ptr = rmesa->dma.current.start; @@ -530,7 +545,7 @@ static void r300RefillCurrentDmaRegion(r300ContextPtr rmesa) int size = 0; drmDMAReq dma; int ret; - + if (RADEON_DEBUG & (DEBUG_IOCTL | DEBUG_DMA)) fprintf(stderr, "%s\n", __FUNCTION__); @@ -539,7 +554,8 @@ static void r300RefillCurrentDmaRegion(r300ContextPtr rmesa) } if (rmesa->dma.current.buf) - r300ReleaseDmaRegion(rmesa, &rmesa->dma.current, __FUNCTION__); + r300ReleaseDmaRegion(rmesa, &rmesa->dma.current, + __FUNCTION__); if (rmesa->dma.nr_released_bufs > 4) r300FlushCmdBuf(rmesa, __FUNCTION__); @@ -573,7 +589,8 @@ static void r300RefillCurrentDmaRegion(r300ContextPtr rmesa) if (ret != 0) { UNLOCK_HARDWARE(&rmesa->radeon); - fprintf(stderr, "Error: Could not get dma buffer... exiting\n"); + fprintf(stderr, + "Error: Could not get dma buffer... exiting\n"); exit(-1); } } @@ -595,7 +612,8 @@ static void r300RefillCurrentDmaRegion(r300ContextPtr rmesa) } void r300ReleaseDmaRegion(r300ContextPtr rmesa, - struct r300_dma_region *region, const char *caller) + struct r300_dma_region *region, + const char *caller) { if (RADEON_DEBUG & DEBUG_IOCTL) fprintf(stderr, "%s from %s\n", __FUNCTION__, caller); @@ -610,15 +628,16 @@ void r300ReleaseDmaRegion(r300ContextPtr rmesa, drm_radeon_cmd_header_t *cmd; if (RADEON_DEBUG & (DEBUG_IOCTL | DEBUG_DMA)) - fprintf(stderr, "%s -- DISCARD BUF %d\n", __FUNCTION__, - region->buf->buf->idx); + fprintf(stderr, "%s -- DISCARD BUF %d\n", + __FUNCTION__, region->buf->buf->idx); cmd = (drm_radeon_cmd_header_t *) r300AllocCmdBuf(rmesa, - sizeof(*cmd) / 4, + sizeof + (*cmd) / 4, __FUNCTION__); cmd->dma.cmd_type = R300_CMD_DMA_DISCARD; cmd->dma.buf_idx = region->buf->buf->idx; - + FREE(region->buf); rmesa->dma.nr_released_bufs++; } @@ -691,9 +710,11 @@ GLboolean r300IsGartMemory(r300ContextPtr rmesa, const GLvoid * pointer, GLint size) { int offset = - (char *)pointer - (char *)rmesa->radeon.radeonScreen->gartTextures.map; + (char *)pointer - + (char *)rmesa->radeon.radeonScreen->gartTextures.map; int valid = (size >= 0 && offset >= 0 - && offset + size < rmesa->radeon.radeonScreen->gartTextures.size); + && offset + size < + rmesa->radeon.radeonScreen->gartTextures.size); if (RADEON_DEBUG & DEBUG_IOCTL) fprintf(stderr, "r300IsGartMemory( %p ) : %d\n", pointer, @@ -702,17 +723,21 @@ GLboolean r300IsGartMemory(r300ContextPtr rmesa, const GLvoid * pointer, return valid; } -GLuint r300GartOffsetFromVirtual(r300ContextPtr rmesa, const GLvoid * pointer) +GLuint r300GartOffsetFromVirtual(r300ContextPtr rmesa, + const GLvoid * pointer) { int offset = - (char *)pointer - (char *)rmesa->radeon.radeonScreen->gartTextures.map; + (char *)pointer - + (char *)rmesa->radeon.radeonScreen->gartTextures.map; //fprintf(stderr, "offset=%08x\n", offset); - if (offset < 0 || offset > rmesa->radeon.radeonScreen->gartTextures.size) + if (offset < 0 + || offset > rmesa->radeon.radeonScreen->gartTextures.size) return ~0; else - return rmesa->radeon.radeonScreen->gart_texture_offset + offset; + return rmesa->radeon.radeonScreen->gart_texture_offset + + offset; } void r300InitIoctlFuncs(struct dd_function_table *functions) diff --git a/src/mesa/drivers/dri/r300/r300_ioctl.h b/src/mesa/drivers/dri/r300/r300_ioctl.h index 52325646e9f..cebd22fabed 100644 --- a/src/mesa/drivers/dri/r300/r300_ioctl.h +++ b/src/mesa/drivers/dri/r300/r300_ioctl.h @@ -42,8 +42,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. extern GLuint r300GetMemoryOffsetMESA(__DRInativeDisplay * dpy, int scrn, const GLvoid * pointer); -extern GLboolean r300IsGartMemory(r300ContextPtr rmesa, const GLvoid * pointer, - GLint size); +extern GLboolean r300IsGartMemory(r300ContextPtr rmesa, + const GLvoid * pointer, GLint size); extern GLuint r300GartOffsetFromVirtual(r300ContextPtr rmesa, const GLvoid * pointer); @@ -51,10 +51,11 @@ extern GLuint r300GartOffsetFromVirtual(r300ContextPtr rmesa, extern void r300Flush(GLcontext * ctx); extern void r300ReleaseDmaRegion(r300ContextPtr rmesa, - struct r300_dma_region *region, const char *caller); + struct r300_dma_region *region, + const char *caller); extern void r300AllocDmaRegion(r300ContextPtr rmesa, - struct r300_dma_region *region, - int bytes, int alignment); + struct r300_dma_region *region, int bytes, + int alignment); extern void r300InitIoctlFuncs(struct dd_function_table *functions); -- cgit v1.2.3 From 204bc4e441631ae41c6a3f9dfc9af52304235c8e Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 02:49:14 +0000 Subject: r300: Indented r300_maos.[ch]. --- src/mesa/drivers/dri/r300/r300_maos.c | 385 +++++++++++++++++++--------------- src/mesa/drivers/dri/r300/r300_maos.h | 6 +- 2 files changed, 223 insertions(+), 168 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_maos.c b/src/mesa/drivers/dri/r300/r300_maos.c index 34f2e569e92..c424e7a31a9 100644 --- a/src/mesa/drivers/dri/r300/r300_maos.c +++ b/src/mesa/drivers/dri/r300/r300_maos.c @@ -65,7 +65,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define DEBUG_ALL DEBUG_VERTS - #if defined(USE_X86_ASM) #define COPY_DWORDS( dst, src, nr ) \ do { \ @@ -88,7 +87,7 @@ do { \ static void emit_vec4(GLcontext * ctx, struct r300_dma_region *rvb, - GLvoid *data, int stride, int count) + GLvoid * data, int stride, int count) { int i; int *out = (int *)(rvb->address + rvb->start); @@ -109,7 +108,7 @@ static void emit_vec4(GLcontext * ctx, static void emit_vec8(GLcontext * ctx, struct r300_dma_region *rvb, - GLvoid *data, int stride, int count) + GLvoid * data, int stride, int count) { int i; int *out = (int *)(rvb->address + rvb->start); @@ -131,14 +130,15 @@ static void emit_vec8(GLcontext * ctx, static void emit_vec12(GLcontext * ctx, struct r300_dma_region *rvb, - GLvoid *data, int stride, int count) + GLvoid * data, int stride, int count) { int i; int *out = (int *)(rvb->address + rvb->start); if (RADEON_DEBUG & DEBUG_VERTS) fprintf(stderr, "%s count %d stride %d out %p data %p\n", - __FUNCTION__, count, stride, (void *)out, (void *)data); + __FUNCTION__, count, stride, (void *)out, + (void *)data); if (stride == 12) COPY_DWORDS(out, data, count * 3); @@ -154,7 +154,7 @@ static void emit_vec12(GLcontext * ctx, static void emit_vec16(GLcontext * ctx, struct r300_dma_region *rvb, - GLvoid *data, int stride, int count) + GLvoid * data, int stride, int count) { int i; int *out = (int *)(rvb->address + rvb->start); @@ -178,7 +178,7 @@ static void emit_vec16(GLcontext * ctx, static void emit_vector(GLcontext * ctx, struct r300_dma_region *rvb, - GLvoid *data, int size, int stride, int count) + GLvoid * data, int size, int stride, int count) { r300ContextPtr rmesa = R300_CONTEXT(ctx); @@ -186,20 +186,20 @@ static void emit_vector(GLcontext * ctx, fprintf(stderr, "%s count %d size %d stride %d\n", __FUNCTION__, count, size, stride); - /* Gets triggered when playing with future_hw_tcl_on ...*/ + /* Gets triggered when playing with future_hw_tcl_on ... */ //assert(!rvb->buf); if (stride == 0) { r300AllocDmaRegion(rmesa, rvb, size * 4, 4); count = 1; - rvb->aos_offset = GET_START(rvb); - rvb->aos_stride = 0; + rvb->aos_offset = GET_START(rvb); + rvb->aos_stride = 0; } else { r300AllocDmaRegion(rmesa, rvb, size * count * 4, 4); /* alignment? */ - rvb->aos_offset = GET_START(rvb); - rvb->aos_stride = size; + rvb->aos_offset = GET_START(rvb); + rvb->aos_stride = size; } - + /* Emit the data */ switch (size) { @@ -223,28 +223,32 @@ static void emit_vector(GLcontext * ctx, } -void r300EmitElts(GLcontext * ctx, void *elts, unsigned long n_elts, int elt_size) +void r300EmitElts(GLcontext * ctx, void *elts, unsigned long n_elts, + int elt_size) { r300ContextPtr rmesa = R300_CONTEXT(ctx); - struct r300_dma_region *rvb=&rmesa->state.elt_dma; + struct r300_dma_region *rvb = &rmesa->state.elt_dma; void *out; - + assert(elt_size == 2 || elt_size == 4); - - if(r300IsGartMemory(rmesa, elts, n_elts * elt_size)){ - rvb->address = rmesa->radeon.radeonScreen->gartTextures.map; + + if (r300IsGartMemory(rmesa, elts, n_elts * elt_size)) { + rvb->address = + rmesa->radeon.radeonScreen->gartTextures.map; rvb->start = ((char *)elts) - rvb->address; - rvb->aos_offset = rmesa->radeon.radeonScreen->gart_texture_offset + rvb->start; - - return ; - }else if(r300IsGartMemory(rmesa, elts, 1)){ + rvb->aos_offset = + rmesa->radeon.radeonScreen->gart_texture_offset + + rvb->start; + + return; + } else if (r300IsGartMemory(rmesa, elts, 1)) { WARN_ONCE("Pointer not within GART memory!\n"); exit(1); } - + r300AllocDmaRegion(rmesa, rvb, n_elts * elt_size, elt_size); - rvb->aos_offset = GET_START(rvb); - + rvb->aos_offset = GET_START(rvb); + out = rvb->address + rvb->start; memcpy(out, elts, n_elts * elt_size); } @@ -254,18 +258,18 @@ static GLuint t_type(struct dt *dt) switch (dt->type) { case GL_UNSIGNED_BYTE: return AOS_FORMAT_UBYTE; - + case GL_SHORT: return AOS_FORMAT_USHORT; - + case GL_FLOAT: return AOS_FORMAT_FLOAT; - + default: assert(0); - break; + break; } - + return AOS_FORMAT_FLOAT; } @@ -274,18 +278,18 @@ static GLuint t_vir0_size(struct dt *dt) switch (dt->type) { case GL_UNSIGNED_BYTE: return 4; - + case GL_SHORT: return 7; - + case GL_FLOAT: return dt->size - 1; - + default: assert(0); - break; + break; } - + return 0; } @@ -294,65 +298,76 @@ static GLuint t_aos_size(struct dt *dt) switch (dt->type) { case GL_UNSIGNED_BYTE: return 1; - + case GL_SHORT: return 2; - + case GL_FLOAT: return dt->size; - + default: assert(0); break; } - + return 0; } -static GLuint t_vir0(uint32_t *dst, struct dt *dt, int *inputs, GLint *tab, GLuint nr) +static GLuint t_vir0(uint32_t * dst, struct dt *dt, int *inputs, + GLint * tab, GLuint nr) { GLuint i, dw; - - for (i = 0; i + 1 < nr; i += 2){ - dw = t_vir0_size(&dt[tab[i]]) | (inputs[tab[i]] << 8) | (t_type(&dt[tab[i]]) << 14); - dw |= (t_vir0_size(&dt[tab[i + 1]]) | (inputs[tab[i + 1]] << 8) | (t_type(&dt[tab[i + 1]]) << 14)) << 16; - + + for (i = 0; i + 1 < nr; i += 2) { + dw = t_vir0_size(&dt[tab[i]]) | (inputs[tab[i]] << 8) | + (t_type(&dt[tab[i]]) << 14); + dw |= + (t_vir0_size(&dt[tab[i + 1]]) | + (inputs[tab[i + 1]] << 8) | (t_type(&dt[tab[i + 1]]) + << 14)) << 16; + if (i + 2 == nr) { dw |= (1 << (13 + 16)); } dst[i >> 1] = dw; } - + if (nr & 1) { - dw = t_vir0_size(&dt[tab[nr - 1]]) | (inputs[tab[nr - 1]] << 8) | (t_type(&dt[tab[nr - 1]]) << 14); + dw = t_vir0_size(&dt[tab[nr - 1]]) | (inputs[tab[nr - 1]] + << 8) | + (t_type(&dt[tab[nr - 1]]) << 14); dw |= 1 << 13; - + dst[nr >> 1] = dw; } - + return (nr + 1) >> 1; } static GLuint t_swizzle(int swizzle[4]) { return (swizzle[0] << R300_INPUT_ROUTE_X_SHIFT) | - (swizzle[1] << R300_INPUT_ROUTE_Y_SHIFT) | - (swizzle[2] << R300_INPUT_ROUTE_Z_SHIFT) | - (swizzle[3] << R300_INPUT_ROUTE_W_SHIFT); + (swizzle[1] << R300_INPUT_ROUTE_Y_SHIFT) | + (swizzle[2] << R300_INPUT_ROUTE_Z_SHIFT) | + (swizzle[3] << R300_INPUT_ROUTE_W_SHIFT); } -static GLuint t_vir1(uint32_t *dst, int swizzle[][4], GLuint nr) +static GLuint t_vir1(uint32_t * dst, int swizzle[][4], GLuint nr) { GLuint i; - + for (i = 0; i + 1 < nr; i += 2) { - dst[i >> 1] = t_swizzle(swizzle[i]) | R300_INPUT_ROUTE_ENABLE; - dst[i >> 1] |= (t_swizzle(swizzle[i + 1]) | R300_INPUT_ROUTE_ENABLE) << 16; + dst[i >> 1] = + t_swizzle(swizzle[i]) | R300_INPUT_ROUTE_ENABLE; + dst[i >> 1] |= + (t_swizzle(swizzle[i + 1]) | R300_INPUT_ROUTE_ENABLE) + << 16; } - + if (nr & 1) - dst[nr >> 1] = t_swizzle(swizzle[nr - 1]) | R300_INPUT_ROUTE_ENABLE; - + dst[nr >> 1] = + t_swizzle(swizzle[nr - 1]) | R300_INPUT_ROUTE_ENABLE; + return (nr + 1) >> 1; } @@ -365,23 +380,23 @@ static GLuint t_vic(GLcontext * ctx, GLuint InputsRead) { r300ContextPtr r300 = R300_CONTEXT(ctx); GLuint i, vic_1 = 0; - + if (InputsRead & (1 << VERT_ATTRIB_POS)) vic_1 |= R300_INPUT_CNTL_POS; - + if (InputsRead & (1 << VERT_ATTRIB_NORMAL)) vic_1 |= R300_INPUT_CNTL_NORMAL; if (InputsRead & (1 << VERT_ATTRIB_COLOR0)) vic_1 |= R300_INPUT_CNTL_COLOR; - + r300->state.texture.tc_count = 0; for (i = 0; i < ctx->Const.MaxTextureUnits; i++) if (InputsRead & (1 << (VERT_ATTRIB_TEX0 + i))) { r300->state.texture.tc_count++; vic_1 |= R300_INPUT_CNTL_TC0 << i; } - + return vic_1; } @@ -390,7 +405,7 @@ static GLuint t_vic(GLcontext * ctx, GLuint InputsRead) * This function should never return R300_FALLBACK_TCL when using software tcl. */ -int r300EmitArrays(GLcontext *ctx) +int r300EmitArrays(GLcontext * ctx) { r300ContextPtr rmesa = R300_CONTEXT(ctx); r300ContextPtr r300 = rmesa; @@ -403,88 +418,102 @@ int r300EmitArrays(GLcontext *ctx) int vir_inputs[VERT_ATTRIB_MAX]; GLint tab[VERT_ATTRIB_MAX]; int swizzle[VERT_ATTRIB_MAX][4]; - + if (hw_tcl_on) { - struct r300_vertex_program *prog=(struct r300_vertex_program *)CURRENT_VERTEX_SHADER(ctx); + struct r300_vertex_program *prog = + (struct r300_vertex_program *) + CURRENT_VERTEX_SHADER(ctx); inputs = prog->inputs; InputsRead = CURRENT_VERTEX_SHADER(ctx)->key.InputsRead; - OutputsWritten = CURRENT_VERTEX_SHADER(ctx)->key.OutputsWritten; + OutputsWritten = + CURRENT_VERTEX_SHADER(ctx)->key.OutputsWritten; } else { DECLARE_RENDERINPUTS(inputs_bitset); inputs = r300->state.sw_tcl_inputs; - - RENDERINPUTS_COPY( inputs_bitset, TNL_CONTEXT(ctx)->render_inputs_bitset ); - - assert(RENDERINPUTS_TEST( inputs_bitset, _TNL_ATTRIB_POS )); + + RENDERINPUTS_COPY(inputs_bitset, + TNL_CONTEXT(ctx)->render_inputs_bitset); + + assert(RENDERINPUTS_TEST(inputs_bitset, _TNL_ATTRIB_POS)); InputsRead |= 1 << VERT_ATTRIB_POS; OutputsWritten |= 1 << VERT_RESULT_HPOS; - - assert(RENDERINPUTS_TEST( inputs_bitset, _TNL_ATTRIB_NORMAL ) == 0); - - assert(RENDERINPUTS_TEST( inputs_bitset, _TNL_ATTRIB_COLOR0 )); + + assert(RENDERINPUTS_TEST(inputs_bitset, _TNL_ATTRIB_NORMAL) + == 0); + + assert(RENDERINPUTS_TEST + (inputs_bitset, _TNL_ATTRIB_COLOR0)); InputsRead |= 1 << VERT_ATTRIB_COLOR0; OutputsWritten |= 1 << VERT_RESULT_COL0; - - if (RENDERINPUTS_TEST( inputs_bitset, _TNL_ATTRIB_COLOR1 )) { + + if (RENDERINPUTS_TEST(inputs_bitset, _TNL_ATTRIB_COLOR1)) { InputsRead |= 1 << VERT_ATTRIB_COLOR1; OutputsWritten |= 1 << VERT_RESULT_COL1; } - + for (i = 0; i < ctx->Const.MaxTextureUnits; i++) - if (RENDERINPUTS_TEST( inputs_bitset, _TNL_ATTRIB_TEX(i) )) { + if (RENDERINPUTS_TEST + (inputs_bitset, _TNL_ATTRIB_TEX(i))) { InputsRead |= 1 << (VERT_ATTRIB_TEX0 + i); - OutputsWritten |= 1 << (VERT_RESULT_TEX0 + i); + OutputsWritten |= + 1 << (VERT_RESULT_TEX0 + i); } - + for (i = 0, nr = 0; i < VERT_ATTRIB_MAX; i++) if (InputsRead & (1 << i)) inputs[i] = nr++; else inputs[i] = -1; - - if(!(r300->radeon.radeonScreen->chip_flags & RADEON_CHIPSET_TCL)) { + + if (! + (r300->radeon.radeonScreen-> + chip_flags & RADEON_CHIPSET_TCL)) { /* Fixed, apply to vir0 only */ - memcpy(vir_inputs, inputs, VERT_ATTRIB_MAX * sizeof(int)); + memcpy(vir_inputs, inputs, + VERT_ATTRIB_MAX * sizeof(int)); inputs = vir_inputs; - + if (InputsRead & VERT_ATTRIB_POS) inputs[VERT_ATTRIB_POS] = 0; - + if (InputsRead & (1 << VERT_ATTRIB_COLOR0)) inputs[VERT_ATTRIB_COLOR0] = 2; - + if (InputsRead & (1 << VERT_ATTRIB_COLOR1)) inputs[VERT_ATTRIB_COLOR1] = 3; - - for (i = VERT_ATTRIB_TEX0; i <= VERT_ATTRIB_TEX7; i++) + + for (i = VERT_ATTRIB_TEX0; i <= VERT_ATTRIB_TEX7; + i++) if (InputsRead & (1 << i)) - inputs[i] = 6 + (i - VERT_ATTRIB_TEX0); + inputs[i] = + 6 + (i - VERT_ATTRIB_TEX0); } - - RENDERINPUTS_COPY( rmesa->state.render_inputs_bitset, inputs_bitset ); + + RENDERINPUTS_COPY(rmesa->state.render_inputs_bitset, + inputs_bitset); } assert(InputsRead); assert(OutputsWritten); - + for (i = 0, nr = 0; i < VERT_ATTRIB_MAX; i++) if (InputsRead & (1 << i)) tab[nr++] = i; - + if (nr > R300_MAX_AOS_ARRAYS) return R300_FALLBACK_TCL; - + for (i = 0; i < nr; i++) { int ci; int comp_size, fix, found = 0; - + swizzle[i][0] = SWIZZLE_ZERO; swizzle[i][1] = SWIZZLE_ZERO; swizzle[i][2] = SWIZZLE_ZERO; swizzle[i][3] = SWIZZLE_ONE; - + for (ci = 0; ci < VB->AttribPtr[tab[i]].size; ci++) swizzle[i][ci] = ci; - + #if MESA_BIG_ENDIAN #define SWAP_INT(a, b) do { \ int __temp; \ @@ -492,107 +521,129 @@ int r300EmitArrays(GLcontext *ctx) a = b; \ b = __temp; \ } while (0) - + if (VB->AttribPtr[tab[i]].type == GL_UNSIGNED_BYTE) { SWAP_INT(swizzle[i][0], swizzle[i][3]); SWAP_INT(swizzle[i][1], swizzle[i][2]); } -#endif /* MESA_BIG_ENDIAN */ - - if (r300IsGartMemory(rmesa, VB->AttribPtr[tab[i]].data, /*(count-1)*stride */ 4)) { +#endif /* MESA_BIG_ENDIAN */ + + if (r300IsGartMemory + (rmesa, VB->AttribPtr[tab[i]].data, + /*(count-1)*stride */ 4)) { if (VB->AttribPtr[tab[i]].stride % 4) return R300_FALLBACK_TCL; - - rmesa->state.aos[i].address = VB->AttribPtr[tab[i]].data; + + rmesa->state.aos[i].address = + VB->AttribPtr[tab[i]].data; rmesa->state.aos[i].start = 0; - rmesa->state.aos[i].aos_offset = r300GartOffsetFromVirtual(rmesa, VB->AttribPtr[tab[i]].data); - rmesa->state.aos[i].aos_stride = VB->AttribPtr[tab[i]].stride / 4; - - rmesa->state.aos[i].aos_size = t_emit_size(&VB->AttribPtr[tab[i]]); + rmesa->state.aos[i].aos_offset = + r300GartOffsetFromVirtual(rmesa, + VB-> + AttribPtr[tab[i]]. + data); + rmesa->state.aos[i].aos_stride = + VB->AttribPtr[tab[i]].stride / 4; + + rmesa->state.aos[i].aos_size = + t_emit_size(&VB->AttribPtr[tab[i]]); } else { /* TODO: emit_vector can only handle 4 byte vectors */ if (VB->AttribPtr[tab[i]].type != GL_FLOAT) return R300_FALLBACK_TCL; - - emit_vector(ctx, &rmesa->state.aos[i], VB->AttribPtr[tab[i]].data, - t_emit_size(&VB->AttribPtr[tab[i]]), VB->AttribPtr[tab[i]].stride, count); + + emit_vector(ctx, &rmesa->state.aos[i], + VB->AttribPtr[tab[i]].data, + t_emit_size(&VB->AttribPtr[tab[i]]), + VB->AttribPtr[tab[i]].stride, count); } - - rmesa->state.aos[i].aos_size = t_aos_size(&VB->AttribPtr[tab[i]]); - + + rmesa->state.aos[i].aos_size = + t_aos_size(&VB->AttribPtr[tab[i]]); + comp_size = _mesa_sizeof_type(VB->AttribPtr[tab[i]].type); - + for (fix = 0; fix <= 4 - VB->AttribPtr[tab[i]].size; fix++) { - if ((rmesa->state.aos[i].aos_offset - comp_size * fix) % 4) + if ((rmesa->state.aos[i].aos_offset - + comp_size * fix) % 4) continue; - + found = 1; break; } - + if (found) { if (fix > 0) { WARN_ONCE("Feeling lucky?\n"); } - + rmesa->state.aos[i].aos_offset -= comp_size * fix; - + for (ci = 0; ci < VB->AttribPtr[tab[i]].size; ci++) swizzle[i][ci] += fix; } else { - WARN_ONCE("Cannot handle offset %x with stride %d, comp %d\n", - rmesa->state.aos[i].aos_offset, rmesa->state.aos[i].aos_stride, VB->AttribPtr[tab[i]].size); + WARN_ONCE + ("Cannot handle offset %x with stride %d, comp %d\n", + rmesa->state.aos[i].aos_offset, + rmesa->state.aos[i].aos_stride, + VB->AttribPtr[tab[i]].size); return R300_FALLBACK_TCL; } } - + /* setup INPUT_ROUTE */ R300_STATECHANGE(r300, vir[0]); - ((drm_r300_cmd_header_t*)r300->hw.vir[0].cmd)->packet0.count = - t_vir0(&r300->hw.vir[0].cmd[R300_VIR_CNTL_0], VB->AttribPtr, inputs, tab, nr); + ((drm_r300_cmd_header_t *) r300->hw.vir[0].cmd)->packet0.count = + t_vir0(&r300->hw.vir[0].cmd[R300_VIR_CNTL_0], VB->AttribPtr, + inputs, tab, nr); R300_STATECHANGE(r300, vir[1]); - ((drm_r300_cmd_header_t*)r300->hw.vir[1].cmd)->packet0.count = - t_vir1(&r300->hw.vir[1].cmd[R300_VIR_CNTL_0], swizzle, nr); + ((drm_r300_cmd_header_t *) r300->hw.vir[1].cmd)->packet0.count = + t_vir1(&r300->hw.vir[1].cmd[R300_VIR_CNTL_0], swizzle, nr); /* Set up input_cntl */ /* I don't think this is needed for vertex buffers, but it doesn't hurt anything */ R300_STATECHANGE(r300, vic); - r300->hw.vic.cmd[R300_VIC_CNTL_0] = 0x5555; /* Hard coded value, no idea what it means */ + r300->hw.vic.cmd[R300_VIC_CNTL_0] = 0x5555; /* Hard coded value, no idea what it means */ r300->hw.vic.cmd[R300_VIC_CNTL_1] = t_vic(ctx, InputsRead); /* Stage 3: VAP output */ - + R300_STATECHANGE(r300, vof); - - r300->hw.vof.cmd[R300_VOF_CNTL_0]=0; - r300->hw.vof.cmd[R300_VOF_CNTL_1]=0; - + + r300->hw.vof.cmd[R300_VOF_CNTL_0] = 0; + r300->hw.vof.cmd[R300_VOF_CNTL_1] = 0; + if (OutputsWritten & (1 << VERT_RESULT_HPOS)) - r300->hw.vof.cmd[R300_VOF_CNTL_0] |= R300_VAP_OUTPUT_VTX_FMT_0__POS_PRESENT; - + r300->hw.vof.cmd[R300_VOF_CNTL_0] |= + R300_VAP_OUTPUT_VTX_FMT_0__POS_PRESENT; + if (OutputsWritten & (1 << VERT_RESULT_COL0)) - r300->hw.vof.cmd[R300_VOF_CNTL_0] |= R300_VAP_OUTPUT_VTX_FMT_0__COLOR_PRESENT; - + r300->hw.vof.cmd[R300_VOF_CNTL_0] |= + R300_VAP_OUTPUT_VTX_FMT_0__COLOR_PRESENT; + if (OutputsWritten & (1 << VERT_RESULT_COL1)) - r300->hw.vof.cmd[R300_VOF_CNTL_0] |= R300_VAP_OUTPUT_VTX_FMT_0__COLOR_1_PRESENT; - + r300->hw.vof.cmd[R300_VOF_CNTL_0] |= + R300_VAP_OUTPUT_VTX_FMT_0__COLOR_1_PRESENT; + /*if(OutputsWritten & (1 << VERT_RESULT_BFC0)) - r300->hw.vof.cmd[R300_VOF_CNTL_0] |= R300_VAP_OUTPUT_VTX_FMT_0__COLOR_2_PRESENT; - - if(OutputsWritten & (1 << VERT_RESULT_BFC1)) - r300->hw.vof.cmd[R300_VOF_CNTL_0] |= R300_VAP_OUTPUT_VTX_FMT_0__COLOR_3_PRESENT;*/ + r300->hw.vof.cmd[R300_VOF_CNTL_0] |= R300_VAP_OUTPUT_VTX_FMT_0__COLOR_2_PRESENT; + + if(OutputsWritten & (1 << VERT_RESULT_BFC1)) + r300->hw.vof.cmd[R300_VOF_CNTL_0] |= R300_VAP_OUTPUT_VTX_FMT_0__COLOR_3_PRESENT; */ //if(OutputsWritten & (1 << VERT_RESULT_FOGC)) if (OutputsWritten & (1 << VERT_RESULT_PSIZ)) - r300->hw.vof.cmd[R300_VOF_CNTL_0] |= R300_VAP_OUTPUT_VTX_FMT_0__PT_SIZE_PRESENT; + r300->hw.vof.cmd[R300_VOF_CNTL_0] |= + R300_VAP_OUTPUT_VTX_FMT_0__PT_SIZE_PRESENT; + + for (i = 0; i < ctx->Const.MaxTextureUnits; i++) + if (OutputsWritten & (1 << (VERT_RESULT_TEX0 + i))) + r300->hw.vof.cmd[R300_VOF_CNTL_1] |= + (4 << (3 * i)); - for(i=0;i < ctx->Const.MaxTextureUnits;i++) - if(OutputsWritten & (1 << (VERT_RESULT_TEX0 + i))) - r300->hw.vof.cmd[R300_VOF_CNTL_1] |= (4 << (3 * i)); - rmesa->state.aos_count = nr; - + return R300_FALLBACK_NONE; } @@ -601,37 +652,40 @@ void r300UseArrays(GLcontext * ctx) { r300ContextPtr rmesa = R300_CONTEXT(ctx); int i; - - if(rmesa->state.elt_dma.buf) + + if (rmesa->state.elt_dma.buf) radeon_mm_use(rmesa, rmesa->state.elt_dma.buf->id); - - for (i=0; i < rmesa->state.aos_count;i++) { + + for (i = 0; i < rmesa->state.aos_count; i++) { if (rmesa->state.aos[i].buf) radeon_mm_use(rmesa, rmesa->state.aos[i].buf->id); } - + #ifdef HW_VBOS - + #define USE_VBO(a) \ do { \ if (ctx->Array.ArrayObj->a.BufferObj->Name \ && ctx->Array.ArrayObj->a.Enabled) \ radeon_mm_use(rmesa, ((struct r300_buffer_object *)ctx->Array.ArrayObj->a.BufferObj)->id); \ } while(0) - - if (ctx->Array.ElementArrayBufferObj->Name && ctx->Array.ElementArrayBufferObj->OnCard) - radeon_mm_use(rmesa, ((struct r300_buffer_object *)ctx->Array.ElementArrayBufferObj)->id); - + + if (ctx->Array.ElementArrayBufferObj->Name + && ctx->Array.ElementArrayBufferObj->OnCard) + radeon_mm_use(rmesa, + ((struct r300_buffer_object *)ctx->Array. + ElementArrayBufferObj)->id); + USE_VBO(Vertex); USE_VBO(Normal); USE_VBO(Color); USE_VBO(SecondaryColor); USE_VBO(FogCoord); - - for (i=0; i < MAX_TEXTURE_COORD_UNITS; i++) + + for (i = 0; i < MAX_TEXTURE_COORD_UNITS; i++) USE_VBO(TexCoord[i]); #endif - + } #endif @@ -641,7 +695,8 @@ void r300ReleaseArrays(GLcontext * ctx) int i; r300ReleaseDmaRegion(rmesa, &rmesa->state.elt_dma, __FUNCTION__); - for (i=0;istate.aos_count;i++) { - r300ReleaseDmaRegion(rmesa, &rmesa->state.aos[i], __FUNCTION__); + for (i = 0; i < rmesa->state.aos_count; i++) { + r300ReleaseDmaRegion(rmesa, &rmesa->state.aos[i], + __FUNCTION__); } } diff --git a/src/mesa/drivers/dri/r300/r300_maos.h b/src/mesa/drivers/dri/r300/r300_maos.h index ab283178944..67fc6e2490d 100644 --- a/src/mesa/drivers/dri/r300/r300_maos.h +++ b/src/mesa/drivers/dri/r300/r300_maos.h @@ -39,8 +39,9 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "r300_context.h" -extern void r300EmitElts(GLcontext * ctx, void *elts, unsigned long n_elts, int elt_size); -extern int r300EmitArrays(GLcontext *ctx); +extern void r300EmitElts(GLcontext * ctx, void *elts, unsigned long n_elts, + int elt_size); +extern int r300EmitArrays(GLcontext * ctx); #ifdef USER_BUFFERS void r300UseArrays(GLcontext * ctx); @@ -50,4 +51,3 @@ extern void r300ReleaseArrays(GLcontext * ctx); #endif #endif - -- cgit v1.2.3 From 6665658a568058150d33cd39dd4635472052b99d Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 02:50:13 +0000 Subject: r300: Indented r300_shader.[ch]. --- src/mesa/drivers/dri/r300/r300_shader.c | 89 +++++++++++++++++---------------- 1 file changed, 47 insertions(+), 42 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_shader.c b/src/mesa/drivers/dri/r300/r300_shader.c index 41c07a31888..9f300e0d95b 100644 --- a/src/mesa/drivers/dri/r300/r300_shader.c +++ b/src/mesa/drivers/dri/r300/r300_shader.c @@ -8,81 +8,86 @@ #include "r300_fragprog.h" static void -r300BindProgram(GLcontext *ctx, GLenum target, struct gl_program *prog) +r300BindProgram(GLcontext * ctx, GLenum target, struct gl_program *prog) { - switch(target){ - case GL_VERTEX_PROGRAM_ARB: - case GL_FRAGMENT_PROGRAM_ARB: + switch (target) { + case GL_VERTEX_PROGRAM_ARB: + case GL_FRAGMENT_PROGRAM_ARB: break; - default: - WARN_ONCE("Target not supported yet!\n"); + default: + WARN_ONCE("Target not supported yet!\n"); break; } } -static struct gl_program * -r300NewProgram(GLcontext *ctx, GLenum target, GLuint id) +static struct gl_program *r300NewProgram(GLcontext * ctx, GLenum target, + GLuint id) { struct r300_vertex_program_cont *vp; struct r300_fragment_program *fp; - - switch(target){ - case GL_VERTEX_STATE_PROGRAM_NV: - case GL_VERTEX_PROGRAM_ARB: - vp=CALLOC_STRUCT(r300_vertex_program_cont); - return _mesa_init_vertex_program(ctx, &vp->mesa_program, target, id); - case GL_FRAGMENT_PROGRAM_ARB: - fp=CALLOC_STRUCT(r300_fragment_program); - fp->ctx = ctx; - return _mesa_init_fragment_program(ctx, &fp->mesa_program, target, id); - case GL_FRAGMENT_PROGRAM_NV: - fp=CALLOC_STRUCT(r300_fragment_program); - return _mesa_init_fragment_program(ctx, &fp->mesa_program, target, id); - default: - _mesa_problem(ctx, "Bad target in r300NewProgram"); + + switch (target) { + case GL_VERTEX_STATE_PROGRAM_NV: + case GL_VERTEX_PROGRAM_ARB: + vp = CALLOC_STRUCT(r300_vertex_program_cont); + return _mesa_init_vertex_program(ctx, &vp->mesa_program, + target, id); + case GL_FRAGMENT_PROGRAM_ARB: + fp = CALLOC_STRUCT(r300_fragment_program); + fp->ctx = ctx; + return _mesa_init_fragment_program(ctx, &fp->mesa_program, + target, id); + case GL_FRAGMENT_PROGRAM_NV: + fp = CALLOC_STRUCT(r300_fragment_program); + return _mesa_init_fragment_program(ctx, &fp->mesa_program, + target, id); + default: + _mesa_problem(ctx, "Bad target in r300NewProgram"); } - - return NULL; + + return NULL; } -static void -r300DeleteProgram(GLcontext *ctx, struct gl_program *prog) +static void r300DeleteProgram(GLcontext * ctx, struct gl_program *prog) { _mesa_delete_program(ctx, prog); } static void -r300ProgramStringNotify(GLcontext *ctx, GLenum target, struct gl_program *prog) +r300ProgramStringNotify(GLcontext * ctx, GLenum target, + struct gl_program *prog) { - struct r300_vertex_program_cont *vp=(void *)prog; - struct r300_fragment_program *fp = (struct r300_fragment_program *) prog; - - switch(target) { + struct r300_vertex_program_cont *vp = (void *)prog; + struct r300_fragment_program *fp = + (struct r300_fragment_program *)prog; + + switch (target) { case GL_VERTEX_PROGRAM_ARB: vp->progs = NULL; /*vp->translated = GL_FALSE; - memset(&vp->translated, 0, sizeof(struct r300_vertex_program) - sizeof(struct gl_vertex_program));*/ - /*r300_translate_vertex_shader(vp);*/ - break; + memset(&vp->translated, 0, sizeof(struct r300_vertex_program) - sizeof(struct gl_vertex_program)); */ + /*r300_translate_vertex_shader(vp); */ + break; case GL_FRAGMENT_PROGRAM_ARB: fp->translated = GL_FALSE; - break; + break; } /* need this for tcl fallbacks */ _tnl_program_string(ctx, target, prog); } static GLboolean -r300IsProgramNative(GLcontext *ctx, GLenum target, struct gl_program *prog) +r300IsProgramNative(GLcontext * ctx, GLenum target, + struct gl_program *prog) { return 1; } void r300InitShaderFuncs(struct dd_function_table *functions) { - functions->NewProgram=r300NewProgram; - functions->BindProgram=r300BindProgram; - functions->DeleteProgram=r300DeleteProgram; - functions->ProgramStringNotify=r300ProgramStringNotify; - functions->IsProgramNative=r300IsProgramNative; + functions->NewProgram = r300NewProgram; + functions->BindProgram = r300BindProgram; + functions->DeleteProgram = r300DeleteProgram; + functions->ProgramStringNotify = r300ProgramStringNotify; + functions->IsProgramNative = r300IsProgramNative; } -- cgit v1.2.3 From 5c8296a6ab9ae443fecba220251d70c6670b14ed Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 02:51:13 +0000 Subject: r300: Indented r300_cmdbuf.[ch]. --- src/mesa/drivers/dri/r300/r300_cmdbuf.c | 492 +++++++++++++++++--------------- src/mesa/drivers/dri/r300/r300_cmdbuf.h | 42 +-- 2 files changed, 285 insertions(+), 249 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_cmdbuf.c b/src/mesa/drivers/dri/r300/r300_cmdbuf.c index 77d0add3e35..dbb38bf3acd 100644 --- a/src/mesa/drivers/dri/r300/r300_cmdbuf.c +++ b/src/mesa/drivers/dri/r300/r300_cmdbuf.c @@ -52,15 +52,13 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "r300_emit.h" #include "r300_state.h" - // Set this to 1 for extremely verbose debugging of command buffers #define DEBUG_CMDBUF 0 - /** * Send the current command buffer via ioctl to the hardware. */ -int r300FlushCmdBufLocked(r300ContextPtr r300, const char* caller) +int r300FlushCmdBufLocked(r300ContextPtr r300, const char *caller) { int ret; int i; @@ -83,22 +81,25 @@ int r300FlushCmdBufLocked(r300ContextPtr r300, const char* caller) r300->cmdbuf.cmd_buf[i]); } - cmd.buf = (char*)(r300->cmdbuf.cmd_buf + start); + cmd.buf = (char *)(r300->cmdbuf.cmd_buf + start); cmd.bufsz = (r300->cmdbuf.count_used - start) * 4; if (r300->radeon.state.scissor.enabled) { cmd.nbox = r300->radeon.state.scissor.numClipRects; - cmd.boxes = (drm_clip_rect_t *)r300->radeon.state.scissor.pClipRects; + cmd.boxes = + (drm_clip_rect_t *) r300->radeon.state.scissor. + pClipRects; } else { cmd.nbox = r300->radeon.numClipRects; - cmd.boxes = (drm_clip_rect_t *)r300->radeon.pClipRects; + cmd.boxes = (drm_clip_rect_t *) r300->radeon.pClipRects; } - + ret = drmCommandWrite(r300->radeon.dri.fd, - DRM_RADEON_CMDBUF, &cmd, sizeof(cmd)); - + DRM_RADEON_CMDBUF, &cmd, sizeof(cmd)); + if (RADEON_DEBUG & DEBUG_SYNC) { - fprintf(stderr, "Syncing in %s (from %s)\n\n", __FUNCTION__, caller); + fprintf(stderr, "Syncing in %s (from %s)\n\n", + __FUNCTION__, caller); radeonWaitForIdleLocked(&r300->radeon); } @@ -109,14 +110,13 @@ int r300FlushCmdBufLocked(r300ContextPtr r300, const char* caller) return ret; } - -int r300FlushCmdBuf(r300ContextPtr r300, const char* caller) +int r300FlushCmdBuf(r300ContextPtr r300, const char *caller) { int ret; LOCK_HARDWARE(&r300->radeon); - ret=r300FlushCmdBufLocked(r300, caller); + ret = r300FlushCmdBufLocked(r300, caller); UNLOCK_HARDWARE(&r300->radeon); @@ -128,18 +128,19 @@ int r300FlushCmdBuf(r300ContextPtr r300, const char* caller) return ret; } - -void r300_print_state_atom(r300ContextPtr r300, struct r300_state_atom *state) +void r300_print_state_atom(r300ContextPtr r300, + struct r300_state_atom *state) { int i; - int dwords = (*state->check)(r300, state); + int dwords = (*state->check) (r300, state); - fprintf(stderr, " emit %s/%d/%d\n", state->name, dwords, state->cmd_size); + fprintf(stderr, " emit %s/%d/%d\n", state->name, dwords, + state->cmd_size); if (RADEON_DEBUG & DEBUG_VERBOSE) for (i = 0; i < dwords; i++) - fprintf(stderr, " %s[%d]: %08X\n", state->name, i, - state->cmd[i]); + fprintf(stderr, " %s[%d]: %08X\n", + state->name, i, state->cmd[i]); } /** @@ -148,22 +149,24 @@ void r300_print_state_atom(r300ContextPtr r300, struct r300_state_atom *state) * The caller must have ensured that there is enough space in the command * buffer. */ -static __inline__ void r300DoEmitState(r300ContextPtr r300, GLboolean dirty) +static __inline__ void r300DoEmitState(r300ContextPtr r300, + GLboolean dirty) { - struct r300_state_atom* atom; - uint32_t* dest; + struct r300_state_atom *atom; + uint32_t *dest; dest = r300->cmdbuf.cmd_buf + r300->cmdbuf.count_used; if (DEBUG_CMDBUF && RADEON_DEBUG & DEBUG_STATE) { foreach(atom, &r300->hw.atomlist) { if ((atom->dirty || r300->hw.all_dirty) == dirty) { - int dwords = (*atom->check)(r300, atom); + int dwords = (*atom->check) (r300, atom); if (dwords) r300_print_state_atom(r300, atom); else - fprintf(stderr, " skip state %s\n", + fprintf(stderr, + " skip state %s\n", atom->name); } } @@ -171,32 +174,31 @@ static __inline__ void r300DoEmitState(r300ContextPtr r300, GLboolean dirty) /* Emit WAIT */ *dest = cmdwait(R300_WAIT_3D | R300_WAIT_3D_CLEAN); - dest ++; - r300->cmdbuf.count_used ++; + dest++; + r300->cmdbuf.count_used++; /* Emit cache flush */ *dest = cmdpacket0(R300_TX_CNTL, 1); - dest ++; - r300->cmdbuf.count_used ++; - + dest++; + r300->cmdbuf.count_used++; + *dest = R300_TX_FLUSH; - dest ++; - r300->cmdbuf.count_used ++; - + dest++; + r300->cmdbuf.count_used++; + /* Emit END3D */ *dest = cmdpacify(); - dest ++; - r300->cmdbuf.count_used ++; - + dest++; + r300->cmdbuf.count_used++; /* Emit actual atoms */ foreach(atom, &r300->hw.atomlist) { if ((atom->dirty || r300->hw.all_dirty) == dirty) { - int dwords = (*atom->check)(r300, atom); + int dwords = (*atom->check) (r300, atom); if (dwords) { - memcpy(dest, atom->cmd, dwords*4); + memcpy(dest, atom->cmd, dwords * 4); dest += dwords; r300->cmdbuf.count_used += dwords; atom->dirty = GL_FALSE; @@ -216,7 +218,8 @@ void r300EmitState(r300ContextPtr r300) if (RADEON_DEBUG & (DEBUG_STATE | DEBUG_PRIMS)) fprintf(stderr, "%s\n", __FUNCTION__); - if (r300->cmdbuf.count_used && !r300->hw.is_dirty && !r300->hw.all_dirty) + if (r300->cmdbuf.count_used && !r300->hw.is_dirty + && !r300->hw.all_dirty) return; /* To avoid going across the entire set of states multiple times, just check @@ -255,13 +258,12 @@ static int check_##NM( r300ContextPtr r300, \ #define packet0_count(ptr) (((drm_r300_cmd_header_t*)(ptr))->packet0.count) #define vpu_count(ptr) (((drm_r300_cmd_header_t*)(ptr))->vpu.count) -CHECK( always, atom->cmd_size ) -CHECK( variable, packet0_count(atom->cmd) ? (1 + packet0_count(atom->cmd)) : 0 ) -CHECK( vpu, vpu_count(atom->cmd) ? (1 + vpu_count(atom->cmd)*4) : 0 ) - +CHECK(always, atom->cmd_size) + CHECK(variable, + packet0_count(atom->cmd) ? (1 + packet0_count(atom->cmd)) : 0) + CHECK(vpu, vpu_count(atom->cmd) ? (1 + vpu_count(atom->cmd) * 4) : 0) #undef packet0_count #undef vpu_count - #define ALLOC_STATE( ATOM, CHK, SZ, NM, IDX ) \ do { \ r300->hw.ATOM.cmd_size = (SZ); \ @@ -272,8 +274,6 @@ CHECK( vpu, vpu_count(atom->cmd) ? (1 + vpu_count(atom->cmd)*4) : 0 ) r300->hw.ATOM.dirty = GL_FALSE; \ r300->hw.max_state_size += (SZ); \ } while (0) - - /** * Allocate memory for the command buffer and initialize the state atom * list. Note that the initial hardware state is set by r300InitState(). @@ -284,9 +284,9 @@ void r300InitCmdBuf(r300ContextPtr r300) int has_tcl = 1; if (!(r300->radeon.radeonScreen->chip_flags & RADEON_CHIPSET_TCL)) - has_tcl = 0; + has_tcl = 0; - r300->hw.max_state_size = 2+2; /* reserve extra space for WAIT_IDLE and tex cache flush */ + r300->hw.max_state_size = 2 + 2; /* reserve extra space for WAIT_IDLE and tex cache flush */ mtu = r300->radeon.glCtx->Const.MaxTextureUnits; if (RADEON_DEBUG & DEBUG_TEXTURE) { @@ -294,175 +294,210 @@ void r300InitCmdBuf(r300ContextPtr r300) } /* Initialize state atoms */ - ALLOC_STATE( vpt, always, R300_VPT_CMDSIZE, "vpt", 0 ); - r300->hw.vpt.cmd[R300_VPT_CMD_0] = cmdpacket0(R300_SE_VPORT_XSCALE, 6); - ALLOC_STATE( vap_cntl, always, 2, "vap_cntl", 0 ); + ALLOC_STATE(vpt, always, R300_VPT_CMDSIZE, "vpt", 0); + r300->hw.vpt.cmd[R300_VPT_CMD_0] = + cmdpacket0(R300_SE_VPORT_XSCALE, 6); + ALLOC_STATE(vap_cntl, always, 2, "vap_cntl", 0); r300->hw.vap_cntl.cmd[0] = cmdpacket0(R300_VAP_CNTL, 1); - ALLOC_STATE( vte, always, 3, "vte", 0 ); + ALLOC_STATE(vte, always, 3, "vte", 0); r300->hw.vte.cmd[0] = cmdpacket0(R300_SE_VTE_CNTL, 2); - ALLOC_STATE( unk2134, always, 3, "unk2134", 0 ); + ALLOC_STATE(unk2134, always, 3, "unk2134", 0); r300->hw.unk2134.cmd[0] = cmdpacket0(0x2134, 2); - ALLOC_STATE( vap_cntl_status, always, 2, "vap_cntl_status", 0 ); - r300->hw.vap_cntl_status.cmd[0] = cmdpacket0(R300_VAP_CNTL_STATUS, 1); - ALLOC_STATE( vir[0], variable, R300_VIR_CMDSIZE, "vir/0", 0 ); - r300->hw.vir[0].cmd[R300_VIR_CMD_0] = cmdpacket0(R300_VAP_INPUT_ROUTE_0_0, 1); - ALLOC_STATE( vir[1], variable, R300_VIR_CMDSIZE, "vir/1", 1 ); - r300->hw.vir[1].cmd[R300_VIR_CMD_0] = cmdpacket0(R300_VAP_INPUT_ROUTE_1_0, 1); - ALLOC_STATE( vic, always, R300_VIC_CMDSIZE, "vic", 0 ); - r300->hw.vic.cmd[R300_VIC_CMD_0] = cmdpacket0(R300_VAP_INPUT_CNTL_0, 2); - ALLOC_STATE( unk21DC, always, 2, "unk21DC", 0 ); + ALLOC_STATE(vap_cntl_status, always, 2, "vap_cntl_status", 0); + r300->hw.vap_cntl_status.cmd[0] = + cmdpacket0(R300_VAP_CNTL_STATUS, 1); + ALLOC_STATE(vir[0], variable, R300_VIR_CMDSIZE, "vir/0", 0); + r300->hw.vir[0].cmd[R300_VIR_CMD_0] = + cmdpacket0(R300_VAP_INPUT_ROUTE_0_0, 1); + ALLOC_STATE(vir[1], variable, R300_VIR_CMDSIZE, "vir/1", 1); + r300->hw.vir[1].cmd[R300_VIR_CMD_0] = + cmdpacket0(R300_VAP_INPUT_ROUTE_1_0, 1); + ALLOC_STATE(vic, always, R300_VIC_CMDSIZE, "vic", 0); + r300->hw.vic.cmd[R300_VIC_CMD_0] = + cmdpacket0(R300_VAP_INPUT_CNTL_0, 2); + ALLOC_STATE(unk21DC, always, 2, "unk21DC", 0); r300->hw.unk21DC.cmd[0] = cmdpacket0(0x21DC, 1); - ALLOC_STATE( unk221C, always, 2, "unk221C", 0 ); + ALLOC_STATE(unk221C, always, 2, "unk221C", 0); r300->hw.unk221C.cmd[0] = cmdpacket0(R300_VAP_UNKNOWN_221C, 1); - ALLOC_STATE( unk2220, always, 5, "unk2220", 0 ); + ALLOC_STATE(unk2220, always, 5, "unk2220", 0); r300->hw.unk2220.cmd[0] = cmdpacket0(0x2220, 4); - ALLOC_STATE( unk2288, always, 2, "unk2288", 0 ); + ALLOC_STATE(unk2288, always, 2, "unk2288", 0); r300->hw.unk2288.cmd[0] = cmdpacket0(R300_VAP_UNKNOWN_2288, 1); - ALLOC_STATE( vof, always, R300_VOF_CMDSIZE, "vof", 0 ); - r300->hw.vof.cmd[R300_VOF_CMD_0] = cmdpacket0(R300_VAP_OUTPUT_VTX_FMT_0, 2); - + ALLOC_STATE(vof, always, R300_VOF_CMDSIZE, "vof", 0); + r300->hw.vof.cmd[R300_VOF_CMD_0] = + cmdpacket0(R300_VAP_OUTPUT_VTX_FMT_0, 2); + if (has_tcl) { - ALLOC_STATE( pvs, always, R300_PVS_CMDSIZE, "pvs", 0 ); - r300->hw.pvs.cmd[R300_PVS_CMD_0] = cmdpacket0(R300_VAP_PVS_CNTL_1, 3); + ALLOC_STATE(pvs, always, R300_PVS_CMDSIZE, "pvs", 0); + r300->hw.pvs.cmd[R300_PVS_CMD_0] = + cmdpacket0(R300_VAP_PVS_CNTL_1, 3); } - ALLOC_STATE( gb_enable, always, 2, "gb_enable", 0 ); - r300->hw.gb_enable.cmd[0] = cmdpacket0(R300_GB_ENABLE, 1); - ALLOC_STATE( gb_misc, always, R300_GB_MISC_CMDSIZE, "gb_misc", 0 ); - r300->hw.gb_misc.cmd[0] = cmdpacket0(R300_GB_MSPOS0, 5); - ALLOC_STATE( txe, always, R300_TXE_CMDSIZE, "txe", 0 ); - r300->hw.txe.cmd[R300_TXE_CMD_0] = cmdpacket0(R300_TX_ENABLE, 1); - ALLOC_STATE( unk4200, always, 5, "unk4200", 0 ); - r300->hw.unk4200.cmd[0] = cmdpacket0(0x4200, 4); - ALLOC_STATE( unk4214, always, 2, "unk4214", 0 ); - r300->hw.unk4214.cmd[0] = cmdpacket0(0x4214, 1); - ALLOC_STATE( ps, always, R300_PS_CMDSIZE, "ps", 0 ); - r300->hw.ps.cmd[0] = cmdpacket0(R300_RE_POINTSIZE, 1); - ALLOC_STATE( unk4230, always, 4, "unk4230", 0 ); - r300->hw.unk4230.cmd[0] = cmdpacket0(0x4230, 3); - ALLOC_STATE( lcntl, always, 2, "lcntl", 0 ); - r300->hw.lcntl.cmd[0] = cmdpacket0(R300_RE_LINE_CNT, 1); - ALLOC_STATE( unk4260, always, 4, "unk4260", 0 ); - r300->hw.unk4260.cmd[0] = cmdpacket0(0x4260, 3); - ALLOC_STATE( shade, always, 5, "shade", 0 ); - r300->hw.shade.cmd[0] = cmdpacket0(R300_RE_SHADE, 4); - ALLOC_STATE( polygon_mode, always, 4, "polygon_mode", 0 ); - r300->hw.polygon_mode.cmd[0] = cmdpacket0(R300_RE_POLYGON_MODE, 3); - ALLOC_STATE( fogp, always, 3, "fogp", 0 ); - r300->hw.fogp.cmd[0] = cmdpacket0(R300_RE_FOG_SCALE, 2); - ALLOC_STATE( zbias_cntl, always, 2, "zbias_cntl", 0 ); - r300->hw.zbias_cntl.cmd[0] = cmdpacket0(R300_RE_ZBIAS_CNTL, 1); - ALLOC_STATE( zbs, always, R300_ZBS_CMDSIZE, "zbs", 0 ); - r300->hw.zbs.cmd[R300_ZBS_CMD_0] = cmdpacket0(R300_RE_ZBIAS_T_FACTOR, 4); - ALLOC_STATE( occlusion_cntl, always, 2, "occlusion_cntl", 0 ); - r300->hw.occlusion_cntl.cmd[0] = cmdpacket0(R300_RE_OCCLUSION_CNTL, 1); - ALLOC_STATE( cul, always, R300_CUL_CMDSIZE, "cul", 0 ); - r300->hw.cul.cmd[R300_CUL_CMD_0] = cmdpacket0(R300_RE_CULL_CNTL, 1); - ALLOC_STATE( unk42C0, always, 3, "unk42C0", 0 ); - r300->hw.unk42C0.cmd[0] = cmdpacket0(0x42C0, 2); - ALLOC_STATE( rc, always, R300_RC_CMDSIZE, "rc", 0 ); - r300->hw.rc.cmd[R300_RC_CMD_0] = cmdpacket0(R300_RS_CNTL_0, 2); - ALLOC_STATE( ri, always, R300_RI_CMDSIZE, "ri", 0 ); - r300->hw.ri.cmd[R300_RI_CMD_0] = cmdpacket0(R300_RS_INTERP_0, 8); - ALLOC_STATE( rr, variable, R300_RR_CMDSIZE, "rr", 0 ); - r300->hw.rr.cmd[R300_RR_CMD_0] = cmdpacket0(R300_RS_ROUTE_0, 1); - ALLOC_STATE( unk43A4, always, 3, "unk43A4", 0 ); - r300->hw.unk43A4.cmd[0] = cmdpacket0(0x43A4, 2); - ALLOC_STATE( unk43E8, always, 2, "unk43E8", 0 ); - r300->hw.unk43E8.cmd[0] = cmdpacket0(0x43E8, 1); - ALLOC_STATE( fp, always, R300_FP_CMDSIZE, "fp", 0 ); - r300->hw.fp.cmd[R300_FP_CMD_0] = cmdpacket0(R300_PFS_CNTL_0, 3); - r300->hw.fp.cmd[R300_FP_CMD_1] = cmdpacket0(R300_PFS_NODE_0, 4); - ALLOC_STATE( fpt, variable, R300_FPT_CMDSIZE, "fpt", 0 ); - r300->hw.fpt.cmd[R300_FPT_CMD_0] = cmdpacket0(R300_PFS_TEXI_0, 0); - ALLOC_STATE( unk46A4, always, 6, "unk46A4", 0 ); - r300->hw.unk46A4.cmd[0] = cmdpacket0(0x46A4, 5); - ALLOC_STATE( fpi[0], variable, R300_FPI_CMDSIZE, "fpi/0", 0 ); - r300->hw.fpi[0].cmd[R300_FPI_CMD_0] = cmdpacket0(R300_PFS_INSTR0_0, 1); - ALLOC_STATE( fpi[1], variable, R300_FPI_CMDSIZE, "fpi/1", 1 ); - r300->hw.fpi[1].cmd[R300_FPI_CMD_0] = cmdpacket0(R300_PFS_INSTR1_0, 1); - ALLOC_STATE( fpi[2], variable, R300_FPI_CMDSIZE, "fpi/2", 2 ); - r300->hw.fpi[2].cmd[R300_FPI_CMD_0] = cmdpacket0(R300_PFS_INSTR2_0, 1); - ALLOC_STATE( fpi[3], variable, R300_FPI_CMDSIZE, "fpi/3", 3 ); - r300->hw.fpi[3].cmd[R300_FPI_CMD_0] = cmdpacket0(R300_PFS_INSTR3_0, 1); - ALLOC_STATE( fogs, always, R300_FOGS_CMDSIZE, "fogs", 0 ); - r300->hw.fogs.cmd[R300_FOGS_CMD_0] = cmdpacket0(R300_RE_FOG_STATE, 1); - ALLOC_STATE( fogc, always, R300_FOGC_CMDSIZE, "fogc", 0 ); - r300->hw.fogc.cmd[R300_FOGC_CMD_0] = cmdpacket0(R300_FOG_COLOR_R, 3); - ALLOC_STATE( at, always, R300_AT_CMDSIZE, "at", 0 ); - r300->hw.at.cmd[R300_AT_CMD_0] = cmdpacket0(R300_PP_ALPHA_TEST, 2); - ALLOC_STATE( unk4BD8, always, 2, "unk4BD8", 0 ); - r300->hw.unk4BD8.cmd[0] = cmdpacket0(0x4BD8, 1); - ALLOC_STATE( fpp, variable, R300_FPP_CMDSIZE, "fpp", 0 ); - r300->hw.fpp.cmd[R300_FPP_CMD_0] = cmdpacket0(R300_PFS_PARAM_0_X, 0); - ALLOC_STATE( unk4E00, always, 2, "unk4E00", 0 ); - r300->hw.unk4E00.cmd[0] = cmdpacket0(0x4E00, 1); - ALLOC_STATE( bld, always, R300_BLD_CMDSIZE, "bld", 0 ); - r300->hw.bld.cmd[R300_BLD_CMD_0] = cmdpacket0(R300_RB3D_CBLEND, 2); - ALLOC_STATE( cmk, always, R300_CMK_CMDSIZE, "cmk", 0 ); - r300->hw.cmk.cmd[R300_CMK_CMD_0] = cmdpacket0(R300_RB3D_COLORMASK, 1); - ALLOC_STATE( blend_color, always, 4, "blend_color", 0 ); - r300->hw.blend_color.cmd[0] = cmdpacket0(R300_RB3D_BLEND_COLOR, 3); - ALLOC_STATE( cb, always, R300_CB_CMDSIZE, "cb", 0 ); - r300->hw.cb.cmd[R300_CB_CMD_0] = cmdpacket0(R300_RB3D_COLOROFFSET0, 1); - r300->hw.cb.cmd[R300_CB_CMD_1] = cmdpacket0(R300_RB3D_COLORPITCH0, 1); - ALLOC_STATE( unk4E50, always, 10, "unk4E50", 0 ); - r300->hw.unk4E50.cmd[0] = cmdpacket0(0x4E50, 9); - ALLOC_STATE( unk4E88, always, 2, "unk4E88", 0 ); - r300->hw.unk4E88.cmd[0] = cmdpacket0(0x4E88, 1); - ALLOC_STATE( unk4EA0, always, 3, "unk4EA0 R350 only", 0 ); - r300->hw.unk4EA0.cmd[0] = cmdpacket0(0x4EA0, 2); - ALLOC_STATE( zs, always, R300_ZS_CMDSIZE, "zstencil", 0 ); - r300->hw.zs.cmd[R300_ZS_CMD_0] = cmdpacket0(R300_RB3D_ZSTENCIL_CNTL_0, 3); - ALLOC_STATE( zstencil_format, always, 5, "zstencil_format", 0 ); - r300->hw.zstencil_format.cmd[0] = cmdpacket0(R300_RB3D_ZSTENCIL_FORMAT, 4); - ALLOC_STATE( zb, always, R300_ZB_CMDSIZE, "zb", 0 ); - r300->hw.zb.cmd[R300_ZB_CMD_0] = cmdpacket0(R300_RB3D_DEPTHOFFSET, 2); - ALLOC_STATE( unk4F28, always, 2, "unk4F28", 0 ); + ALLOC_STATE(gb_enable, always, 2, "gb_enable", 0); + r300->hw.gb_enable.cmd[0] = cmdpacket0(R300_GB_ENABLE, 1); + ALLOC_STATE(gb_misc, always, R300_GB_MISC_CMDSIZE, "gb_misc", 0); + r300->hw.gb_misc.cmd[0] = cmdpacket0(R300_GB_MSPOS0, 5); + ALLOC_STATE(txe, always, R300_TXE_CMDSIZE, "txe", 0); + r300->hw.txe.cmd[R300_TXE_CMD_0] = cmdpacket0(R300_TX_ENABLE, 1); + ALLOC_STATE(unk4200, always, 5, "unk4200", 0); + r300->hw.unk4200.cmd[0] = cmdpacket0(0x4200, 4); + ALLOC_STATE(unk4214, always, 2, "unk4214", 0); + r300->hw.unk4214.cmd[0] = cmdpacket0(0x4214, 1); + ALLOC_STATE(ps, always, R300_PS_CMDSIZE, "ps", 0); + r300->hw.ps.cmd[0] = cmdpacket0(R300_RE_POINTSIZE, 1); + ALLOC_STATE(unk4230, always, 4, "unk4230", 0); + r300->hw.unk4230.cmd[0] = cmdpacket0(0x4230, 3); + ALLOC_STATE(lcntl, always, 2, "lcntl", 0); + r300->hw.lcntl.cmd[0] = cmdpacket0(R300_RE_LINE_CNT, 1); + ALLOC_STATE(unk4260, always, 4, "unk4260", 0); + r300->hw.unk4260.cmd[0] = cmdpacket0(0x4260, 3); + ALLOC_STATE(shade, always, 5, "shade", 0); + r300->hw.shade.cmd[0] = cmdpacket0(R300_RE_SHADE, 4); + ALLOC_STATE(polygon_mode, always, 4, "polygon_mode", 0); + r300->hw.polygon_mode.cmd[0] = cmdpacket0(R300_RE_POLYGON_MODE, 3); + ALLOC_STATE(fogp, always, 3, "fogp", 0); + r300->hw.fogp.cmd[0] = cmdpacket0(R300_RE_FOG_SCALE, 2); + ALLOC_STATE(zbias_cntl, always, 2, "zbias_cntl", 0); + r300->hw.zbias_cntl.cmd[0] = cmdpacket0(R300_RE_ZBIAS_CNTL, 1); + ALLOC_STATE(zbs, always, R300_ZBS_CMDSIZE, "zbs", 0); + r300->hw.zbs.cmd[R300_ZBS_CMD_0] = + cmdpacket0(R300_RE_ZBIAS_T_FACTOR, 4); + ALLOC_STATE(occlusion_cntl, always, 2, "occlusion_cntl", 0); + r300->hw.occlusion_cntl.cmd[0] = + cmdpacket0(R300_RE_OCCLUSION_CNTL, 1); + ALLOC_STATE(cul, always, R300_CUL_CMDSIZE, "cul", 0); + r300->hw.cul.cmd[R300_CUL_CMD_0] = + cmdpacket0(R300_RE_CULL_CNTL, 1); + ALLOC_STATE(unk42C0, always, 3, "unk42C0", 0); + r300->hw.unk42C0.cmd[0] = cmdpacket0(0x42C0, 2); + ALLOC_STATE(rc, always, R300_RC_CMDSIZE, "rc", 0); + r300->hw.rc.cmd[R300_RC_CMD_0] = cmdpacket0(R300_RS_CNTL_0, 2); + ALLOC_STATE(ri, always, R300_RI_CMDSIZE, "ri", 0); + r300->hw.ri.cmd[R300_RI_CMD_0] = cmdpacket0(R300_RS_INTERP_0, 8); + ALLOC_STATE(rr, variable, R300_RR_CMDSIZE, "rr", 0); + r300->hw.rr.cmd[R300_RR_CMD_0] = cmdpacket0(R300_RS_ROUTE_0, 1); + ALLOC_STATE(unk43A4, always, 3, "unk43A4", 0); + r300->hw.unk43A4.cmd[0] = cmdpacket0(0x43A4, 2); + ALLOC_STATE(unk43E8, always, 2, "unk43E8", 0); + r300->hw.unk43E8.cmd[0] = cmdpacket0(0x43E8, 1); + ALLOC_STATE(fp, always, R300_FP_CMDSIZE, "fp", 0); + r300->hw.fp.cmd[R300_FP_CMD_0] = cmdpacket0(R300_PFS_CNTL_0, 3); + r300->hw.fp.cmd[R300_FP_CMD_1] = cmdpacket0(R300_PFS_NODE_0, 4); + ALLOC_STATE(fpt, variable, R300_FPT_CMDSIZE, "fpt", 0); + r300->hw.fpt.cmd[R300_FPT_CMD_0] = cmdpacket0(R300_PFS_TEXI_0, 0); + ALLOC_STATE(unk46A4, always, 6, "unk46A4", 0); + r300->hw.unk46A4.cmd[0] = cmdpacket0(0x46A4, 5); + ALLOC_STATE(fpi[0], variable, R300_FPI_CMDSIZE, "fpi/0", 0); + r300->hw.fpi[0].cmd[R300_FPI_CMD_0] = + cmdpacket0(R300_PFS_INSTR0_0, 1); + ALLOC_STATE(fpi[1], variable, R300_FPI_CMDSIZE, "fpi/1", 1); + r300->hw.fpi[1].cmd[R300_FPI_CMD_0] = + cmdpacket0(R300_PFS_INSTR1_0, 1); + ALLOC_STATE(fpi[2], variable, R300_FPI_CMDSIZE, "fpi/2", 2); + r300->hw.fpi[2].cmd[R300_FPI_CMD_0] = + cmdpacket0(R300_PFS_INSTR2_0, 1); + ALLOC_STATE(fpi[3], variable, R300_FPI_CMDSIZE, "fpi/3", 3); + r300->hw.fpi[3].cmd[R300_FPI_CMD_0] = + cmdpacket0(R300_PFS_INSTR3_0, 1); + ALLOC_STATE(fogs, always, R300_FOGS_CMDSIZE, "fogs", 0); + r300->hw.fogs.cmd[R300_FOGS_CMD_0] = + cmdpacket0(R300_RE_FOG_STATE, 1); + ALLOC_STATE(fogc, always, R300_FOGC_CMDSIZE, "fogc", 0); + r300->hw.fogc.cmd[R300_FOGC_CMD_0] = + cmdpacket0(R300_FOG_COLOR_R, 3); + ALLOC_STATE(at, always, R300_AT_CMDSIZE, "at", 0); + r300->hw.at.cmd[R300_AT_CMD_0] = cmdpacket0(R300_PP_ALPHA_TEST, 2); + ALLOC_STATE(unk4BD8, always, 2, "unk4BD8", 0); + r300->hw.unk4BD8.cmd[0] = cmdpacket0(0x4BD8, 1); + ALLOC_STATE(fpp, variable, R300_FPP_CMDSIZE, "fpp", 0); + r300->hw.fpp.cmd[R300_FPP_CMD_0] = + cmdpacket0(R300_PFS_PARAM_0_X, 0); + ALLOC_STATE(unk4E00, always, 2, "unk4E00", 0); + r300->hw.unk4E00.cmd[0] = cmdpacket0(0x4E00, 1); + ALLOC_STATE(bld, always, R300_BLD_CMDSIZE, "bld", 0); + r300->hw.bld.cmd[R300_BLD_CMD_0] = cmdpacket0(R300_RB3D_CBLEND, 2); + ALLOC_STATE(cmk, always, R300_CMK_CMDSIZE, "cmk", 0); + r300->hw.cmk.cmd[R300_CMK_CMD_0] = + cmdpacket0(R300_RB3D_COLORMASK, 1); + ALLOC_STATE(blend_color, always, 4, "blend_color", 0); + r300->hw.blend_color.cmd[0] = cmdpacket0(R300_RB3D_BLEND_COLOR, 3); + ALLOC_STATE(cb, always, R300_CB_CMDSIZE, "cb", 0); + r300->hw.cb.cmd[R300_CB_CMD_0] = + cmdpacket0(R300_RB3D_COLOROFFSET0, 1); + r300->hw.cb.cmd[R300_CB_CMD_1] = + cmdpacket0(R300_RB3D_COLORPITCH0, 1); + ALLOC_STATE(unk4E50, always, 10, "unk4E50", 0); + r300->hw.unk4E50.cmd[0] = cmdpacket0(0x4E50, 9); + ALLOC_STATE(unk4E88, always, 2, "unk4E88", 0); + r300->hw.unk4E88.cmd[0] = cmdpacket0(0x4E88, 1); + ALLOC_STATE(unk4EA0, always, 3, "unk4EA0 R350 only", 0); + r300->hw.unk4EA0.cmd[0] = cmdpacket0(0x4EA0, 2); + ALLOC_STATE(zs, always, R300_ZS_CMDSIZE, "zstencil", 0); + r300->hw.zs.cmd[R300_ZS_CMD_0] = + cmdpacket0(R300_RB3D_ZSTENCIL_CNTL_0, 3); + ALLOC_STATE(zstencil_format, always, 5, "zstencil_format", 0); + r300->hw.zstencil_format.cmd[0] = + cmdpacket0(R300_RB3D_ZSTENCIL_FORMAT, 4); + ALLOC_STATE(zb, always, R300_ZB_CMDSIZE, "zb", 0); + r300->hw.zb.cmd[R300_ZB_CMD_0] = + cmdpacket0(R300_RB3D_DEPTHOFFSET, 2); + ALLOC_STATE(unk4F28, always, 2, "unk4F28", 0); r300->hw.unk4F28.cmd[0] = cmdpacket0(0x4F28, 1); - ALLOC_STATE( unk4F30, always, 3, "unk4F30", 0 ); + ALLOC_STATE(unk4F30, always, 3, "unk4F30", 0); r300->hw.unk4F30.cmd[0] = cmdpacket0(0x4F30, 2); - ALLOC_STATE( unk4F44, always, 2, "unk4F44", 0 ); + ALLOC_STATE(unk4F44, always, 2, "unk4F44", 0); r300->hw.unk4F44.cmd[0] = cmdpacket0(0x4F44, 1); - ALLOC_STATE( unk4F54, always, 2, "unk4F54", 0 ); + ALLOC_STATE(unk4F54, always, 2, "unk4F54", 0); r300->hw.unk4F54.cmd[0] = cmdpacket0(0x4F54, 1); /* VPU only on TCL */ if (has_tcl) { - ALLOC_STATE( vpi, vpu, R300_VPI_CMDSIZE, "vpi", 0 ); - r300->hw.vpi.cmd[R300_VPI_CMD_0] = cmdvpu(R300_PVS_UPLOAD_PROGRAM, 0); - ALLOC_STATE( vpp, vpu, R300_VPP_CMDSIZE, "vpp", 0 ); - r300->hw.vpp.cmd[R300_VPP_CMD_0] = cmdvpu(R300_PVS_UPLOAD_PARAMETERS, 0); - ALLOC_STATE( vps, vpu, R300_VPS_CMDSIZE, "vps", 0 ); - r300->hw.vps.cmd[R300_VPS_CMD_0] = cmdvpu(R300_PVS_UPLOAD_POINTSIZE, 1); + ALLOC_STATE(vpi, vpu, R300_VPI_CMDSIZE, "vpi", 0); + r300->hw.vpi.cmd[R300_VPI_CMD_0] = + cmdvpu(R300_PVS_UPLOAD_PROGRAM, 0); + ALLOC_STATE(vpp, vpu, R300_VPP_CMDSIZE, "vpp", 0); + r300->hw.vpp.cmd[R300_VPP_CMD_0] = + cmdvpu(R300_PVS_UPLOAD_PARAMETERS, 0); + ALLOC_STATE(vps, vpu, R300_VPS_CMDSIZE, "vps", 0); + r300->hw.vps.cmd[R300_VPS_CMD_0] = + cmdvpu(R300_PVS_UPLOAD_POINTSIZE, 1); } /* Textures */ - ALLOC_STATE( tex.filter, variable, mtu+1, "tex_filter", 0 ); - r300->hw.tex.filter.cmd[R300_TEX_CMD_0] = cmdpacket0(R300_TX_FILTER_0, 0); - - ALLOC_STATE( tex.filter_1, variable, mtu+1, "tex_filter_1", 0 ); - r300->hw.tex.filter_1.cmd[R300_TEX_CMD_0] = cmdpacket0(R300_TX_FILTER1_0, 0); - - ALLOC_STATE( tex.size, variable, mtu+1, "tex_size", 0 ); - r300->hw.tex.size.cmd[R300_TEX_CMD_0] = cmdpacket0(R300_TX_SIZE_0, 0); - - ALLOC_STATE( tex.format, variable, mtu+1, "tex_format", 0 ); - r300->hw.tex.format.cmd[R300_TEX_CMD_0] = cmdpacket0(R300_TX_FORMAT_0, 0); - - ALLOC_STATE( tex.pitch, variable, mtu+1, "tex_pitch", 0 ); - r300->hw.tex.pitch.cmd[R300_TEX_CMD_0] = cmdpacket0(R300_TX_PITCH_0, 0); - - ALLOC_STATE( tex.offset, variable, mtu+1, "tex_offset", 0 ); - r300->hw.tex.offset.cmd[R300_TEX_CMD_0] = cmdpacket0(R300_TX_OFFSET_0, 0); - - ALLOC_STATE( tex.chroma_key, variable, mtu+1, "tex_chroma_key", 0 ); - r300->hw.tex.chroma_key.cmd[R300_TEX_CMD_0] = cmdpacket0(R300_TX_CHROMA_KEY_0, 0); - - ALLOC_STATE( tex.border_color, variable, mtu+1, "tex_border_color", 0 ); - r300->hw.tex.border_color.cmd[R300_TEX_CMD_0] = cmdpacket0(R300_TX_BORDER_COLOR_0, 0); - - + ALLOC_STATE(tex.filter, variable, mtu + 1, "tex_filter", 0); + r300->hw.tex.filter.cmd[R300_TEX_CMD_0] = + cmdpacket0(R300_TX_FILTER_0, 0); + + ALLOC_STATE(tex.filter_1, variable, mtu + 1, "tex_filter_1", 0); + r300->hw.tex.filter_1.cmd[R300_TEX_CMD_0] = + cmdpacket0(R300_TX_FILTER1_0, 0); + + ALLOC_STATE(tex.size, variable, mtu + 1, "tex_size", 0); + r300->hw.tex.size.cmd[R300_TEX_CMD_0] = + cmdpacket0(R300_TX_SIZE_0, 0); + + ALLOC_STATE(tex.format, variable, mtu + 1, "tex_format", 0); + r300->hw.tex.format.cmd[R300_TEX_CMD_0] = + cmdpacket0(R300_TX_FORMAT_0, 0); + + ALLOC_STATE(tex.pitch, variable, mtu + 1, "tex_pitch", 0); + r300->hw.tex.pitch.cmd[R300_TEX_CMD_0] = + cmdpacket0(R300_TX_PITCH_0, 0); + + ALLOC_STATE(tex.offset, variable, mtu + 1, "tex_offset", 0); + r300->hw.tex.offset.cmd[R300_TEX_CMD_0] = + cmdpacket0(R300_TX_OFFSET_0, 0); + + ALLOC_STATE(tex.chroma_key, variable, mtu + 1, "tex_chroma_key", + 0); + r300->hw.tex.chroma_key.cmd[R300_TEX_CMD_0] = + cmdpacket0(R300_TX_CHROMA_KEY_0, 0); + + ALLOC_STATE(tex.border_color, variable, mtu + 1, + "tex_border_color", 0); + r300->hw.tex.border_color.cmd[R300_TEX_CMD_0] = + cmdpacket0(R300_TX_BORDER_COLOR_0, 0); + /* Setup the atom linked list */ make_empty_list(&r300->hw.atomlist); r300->hw.atomlist.name = "atom-list"; @@ -482,7 +517,7 @@ void r300InitCmdBuf(r300ContextPtr r300) insert_at_tail(&r300->hw.atomlist, &r300->hw.vof); if (has_tcl) - insert_at_tail(&r300->hw.atomlist, &r300->hw.pvs); + insert_at_tail(&r300->hw.atomlist, &r300->hw.pvs); insert_at_tail(&r300->hw.atomlist, &r300->hw.gb_enable); insert_at_tail(&r300->hw.atomlist, &r300->hw.gb_misc); insert_at_tail(&r300->hw.atomlist, &r300->hw.txe); @@ -534,9 +569,9 @@ void r300InitCmdBuf(r300ContextPtr r300) insert_at_tail(&r300->hw.atomlist, &r300->hw.unk4F54); if (has_tcl) { - insert_at_tail(&r300->hw.atomlist, &r300->hw.vpi); - insert_at_tail(&r300->hw.atomlist, &r300->hw.vpp); - insert_at_tail(&r300->hw.atomlist, &r300->hw.vps); + insert_at_tail(&r300->hw.atomlist, &r300->hw.vpi); + insert_at_tail(&r300->hw.atomlist, &r300->hw.vpp); + insert_at_tail(&r300->hw.atomlist, &r300->hw.vps); } insert_at_tail(&r300->hw.atomlist, &r300->hw.tex.filter); @@ -552,36 +587,37 @@ void r300InitCmdBuf(r300ContextPtr r300) r300->hw.all_dirty = GL_TRUE; /* Initialize command buffer */ - size = 256 * driQueryOptioni(&r300->radeon.optionCache, "command_buffer_size"); - if (size < 2*r300->hw.max_state_size) { - size = 2*r300->hw.max_state_size+65535; + size = + 256 * driQueryOptioni(&r300->radeon.optionCache, + "command_buffer_size"); + if (size < 2 * r300->hw.max_state_size) { + size = 2 * r300->hw.max_state_size + 65535; } - if (size > 64*256) - size = 64*256; + if (size > 64 * 256) + size = 64 * 256; - if (RADEON_DEBUG & (DEBUG_IOCTL|DEBUG_DMA)) { + if (RADEON_DEBUG & (DEBUG_IOCTL | DEBUG_DMA)) { fprintf(stderr, "sizeof(drm_r300_cmd_header_t)=%zd\n", sizeof(drm_r300_cmd_header_t)); fprintf(stderr, "sizeof(drm_radeon_cmd_buffer_t)=%zd\n", sizeof(drm_radeon_cmd_buffer_t)); fprintf(stderr, "Allocating %d bytes command buffer (max state is %d bytes)\n", - size*4, r300->hw.max_state_size*4); + size * 4, r300->hw.max_state_size * 4); } r300->cmdbuf.size = size; - r300->cmdbuf.cmd_buf = (uint32_t*)CALLOC(size*4); + r300->cmdbuf.cmd_buf = (uint32_t *) CALLOC(size * 4); r300->cmdbuf.count_used = 0; r300->cmdbuf.count_reemit = 0; } - /** * Destroy the command buffer and state atoms. */ void r300DestroyCmdBuf(r300ContextPtr r300) { - struct r300_state_atom* atom; + struct r300_state_atom *atom; FREE(r300->cmdbuf.cmd_buf); @@ -658,28 +694,28 @@ void r300EmitAOS(r300ContextPtr rmesa, GLuint nr, GLuint offset) drm_radeon_cmd_header_t *cmd = NULL; if (RADEON_DEBUG & DEBUG_VERTS) - fprintf(stderr, "%s: nr=%d, ofs=0x%08x\n", __func__, nr, offset); + fprintf(stderr, "%s: nr=%d, ofs=0x%08x\n", __func__, nr, + offset); - start_packet3(RADEON_CP_PACKET3_3D_LOAD_VBPNTR, sz-1); + start_packet3(RADEON_CP_PACKET3_3D_LOAD_VBPNTR, sz - 1); e32(nr); - for(i=0;i+1state.aos[i].aos_size << 0) - |(rmesa->state.aos[i].aos_stride << 8) - |(rmesa->state.aos[i+1].aos_size << 16) - |(rmesa->state.aos[i+1].aos_stride << 24) - ); + for (i = 0; i + 1 < nr; i += 2) { + e32((rmesa->state.aos[i].aos_size << 0) + | (rmesa->state.aos[i].aos_stride << 8) + | (rmesa->state.aos[i + 1].aos_size << 16) + | (rmesa->state.aos[i + 1].aos_stride << 24) + ); e32(rmesa->state.aos[i].aos_offset + - offset*4*rmesa->state.aos[i].aos_stride); - e32(rmesa->state.aos[i+1].aos_offset + - offset*4*rmesa->state.aos[i+1].aos_stride); + offset * 4 * rmesa->state.aos[i].aos_stride); + e32(rmesa->state.aos[i + 1].aos_offset + + offset * 4 * rmesa->state.aos[i + 1].aos_stride); } - if(nr & 1){ - e32( (rmesa->state.aos[nr-1].aos_size << 0) - |(rmesa->state.aos[nr-1].aos_stride << 8) - ); - e32(rmesa->state.aos[nr-1].aos_offset + - offset*4*rmesa->state.aos[nr-1].aos_stride); + if (nr & 1) { + e32((rmesa->state.aos[nr - 1].aos_size << 0) + | (rmesa->state.aos[nr - 1].aos_stride << 8) + ); + e32(rmesa->state.aos[nr - 1].aos_offset + + offset * 4 * rmesa->state.aos[nr - 1].aos_stride); } } - diff --git a/src/mesa/drivers/dri/r300/r300_cmdbuf.h b/src/mesa/drivers/dri/r300/r300_cmdbuf.h index b471f2ac463..f4fec670bfc 100644 --- a/src/mesa/drivers/dri/r300/r300_cmdbuf.h +++ b/src/mesa/drivers/dri/r300/r300_cmdbuf.h @@ -37,9 +37,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "r300_context.h" - -extern int r300FlushCmdBufLocked(r300ContextPtr r300, const char* caller); -extern int r300FlushCmdBuf(r300ContextPtr r300, const char* caller); +extern int r300FlushCmdBufLocked(r300ContextPtr r300, const char *caller); +extern int r300FlushCmdBuf(r300ContextPtr r300, const char *caller); extern void r300EmitState(r300ContextPtr r300); @@ -48,13 +47,13 @@ extern void r300DestroyCmdBuf(r300ContextPtr r300); extern void r300EmitAOS(r300ContextPtr rmesa, GLuint nr, GLuint offset); - /** * Make sure that enough space is available in the command buffer * by flushing if necessary. */ static __inline__ void r300EnsureCmdBufSpace(r300ContextPtr r300, - int dwords, const char* caller) + int dwords, + const char *caller) { assert(dwords < r300->cmdbuf.size); @@ -62,7 +61,6 @@ static __inline__ void r300EnsureCmdBufSpace(r300ContextPtr r300, r300FlushCmdBuf(r300, caller); } - /** * Allocate the given number of dwords in the command buffer and return * a pointer to the allocated area. @@ -70,10 +68,11 @@ static __inline__ void r300EnsureCmdBufSpace(r300ContextPtr r300, * causes state reemission after a flush. This is necessary to ensure * correct hardware state after an unlock. */ -static __inline__ uint32_t* r300RawAllocCmdBuf(r300ContextPtr r300, - int dwords, const char* caller) +static __inline__ uint32_t *r300RawAllocCmdBuf(r300ContextPtr r300, + int dwords, + const char *caller) { - uint32_t* ptr; + uint32_t *ptr; r300EnsureCmdBufSpace(r300, dwords, caller); @@ -82,16 +81,17 @@ static __inline__ uint32_t* r300RawAllocCmdBuf(r300ContextPtr r300, return ptr; } -static __inline__ uint32_t* r300AllocCmdBuf(r300ContextPtr r300, - int dwords, const char* caller) +static __inline__ uint32_t *r300AllocCmdBuf(r300ContextPtr r300, + int dwords, const char *caller) { - uint32_t* ptr; + uint32_t *ptr; r300EnsureCmdBufSpace(r300, dwords, caller); if (!r300->cmdbuf.count_used) { if (RADEON_DEBUG & DEBUG_IOCTL) - fprintf(stderr, "Reemit state after flush (from %s)\n", + fprintf(stderr, + "Reemit state after flush (from %s)\n", caller); r300EmitState(r300); } @@ -102,17 +102,17 @@ static __inline__ uint32_t* r300AllocCmdBuf(r300ContextPtr r300, } extern void r300EmitBlit(r300ContextPtr rmesa, - GLuint color_fmt, - GLuint src_pitch, - GLuint src_offset, - GLuint dst_pitch, - GLuint dst_offset, - GLint srcx, GLint srcy, - GLint dstx, GLint dsty, GLuint w, GLuint h); + GLuint color_fmt, + GLuint src_pitch, + GLuint src_offset, + GLuint dst_pitch, + GLuint dst_offset, + GLint srcx, GLint srcy, + GLint dstx, GLint dsty, GLuint w, GLuint h); extern void r300EmitWait(r300ContextPtr rmesa, GLuint flags); extern void r300EmitLOAD_VBPNTR(r300ContextPtr rmesa, int start); extern void r300EmitVertexShader(r300ContextPtr rmesa); extern void r300EmitPixelShader(r300ContextPtr rmesa); -#endif /* __R300_CMDBUF_H__ */ +#endif /* __R300_CMDBUF_H__ */ -- cgit v1.2.3 From 36c8bc6141cd8c0aafed02a5fbee15a13b0b0ca1 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 02:52:37 +0000 Subject: r300: Indented r300_emit.h. --- src/mesa/drivers/dri/r300/r300_emit.h | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_emit.h b/src/mesa/drivers/dri/r300/r300_emit.h index 16ea2c66419..90c2b8c1419 100644 --- a/src/mesa/drivers/dri/r300/r300_emit.h +++ b/src/mesa/drivers/dri/r300/r300_emit.h @@ -208,28 +208,28 @@ void static inline end_3d(r300ContextPtr rmesa) { drm_radeon_cmd_header_t *cmd = NULL; - cmd = (drm_radeon_cmd_header_t*)r300AllocCmdBuf(rmesa, - 1, + cmd = + (drm_radeon_cmd_header_t *) r300AllocCmdBuf(rmesa, 1, __FUNCTION__); - cmd[0].header.cmd_type=R300_CMD_END3D; + cmd[0].header.cmd_type = R300_CMD_END3D; } void static inline cp_delay(r300ContextPtr rmesa, unsigned short count) { drm_radeon_cmd_header_t *cmd = NULL; - cmd = (drm_radeon_cmd_header_t*)r300AllocCmdBuf(rmesa, - 1, + cmd = + (drm_radeon_cmd_header_t *) r300AllocCmdBuf(rmesa, 1, __FUNCTION__); - cmd[0].i=cmdcpdelay(count); + cmd[0].i = cmdcpdelay(count); } void static inline cp_wait(r300ContextPtr rmesa, unsigned char flags) { drm_radeon_cmd_header_t *cmd = NULL; - cmd = (drm_radeon_cmd_header_t*)r300AllocCmdBuf(rmesa, - 1, + cmd = + (drm_radeon_cmd_header_t *) r300AllocCmdBuf(rmesa, 1, __FUNCTION__); cmd[0].i = cmdwait(flags); } @@ -237,7 +237,8 @@ void static inline cp_wait(r300ContextPtr rmesa, unsigned char flags) /** * fire vertex buffer */ -static void inline fire_AOS(r300ContextPtr rmesa, int vertex_count, int type) +static void inline +fire_AOS(r300ContextPtr rmesa, int vertex_count, int type) { int cmd_reserved = 0; int cmd_written = 0; @@ -248,8 +249,8 @@ static void inline fire_AOS(r300ContextPtr rmesa, int vertex_count, int type) #ifdef NOTNEEDED_ANYMORE e32(0x840c0024); #endif - e32(R300_VAP_VF_CNTL__PRIM_WALK_VERTEX_LIST | - (vertex_count<<16) | type); + e32(R300_VAP_VF_CNTL__PRIM_WALK_VERTEX_LIST | (vertex_count << 16) + | type); } /** -- cgit v1.2.3 From be56660ba0faf41ec61c79aab2b358c6436dd44b Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 02:59:11 +0000 Subject: r300: Indented r300_state.[ch]. --- src/mesa/drivers/dri/r300/r300_state.c | 1188 ++++++++++++++++++-------------- src/mesa/drivers/dri/r300/r300_state.h | 16 +- 2 files changed, 696 insertions(+), 508 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_state.c b/src/mesa/drivers/dri/r300/r300_state.c index 96678b82a2e..75d606fdcc4 100644 --- a/src/mesa/drivers/dri/r300/r300_state.c +++ b/src/mesa/drivers/dri/r300/r300_state.c @@ -79,7 +79,7 @@ static void r300BlendColor(GLcontext * ctx, const GLfloat cf[4]) CLAMPED_FLOAT_TO_UBYTE(color[3], cf[3]); rmesa->hw.blend_color.cmd[1] = r300PackColor(4, color[3], color[0], - color[1], color[2]); + color[1], color[2]); } /** @@ -133,7 +133,7 @@ static int blend_factor(GLenum factor, GLboolean is_src) break; case GL_SRC_ALPHA_SATURATE: func = (is_src) ? R300_BLEND_GL_SRC_ALPHA_SATURATE : - R300_BLEND_GL_ZERO; + R300_BLEND_GL_ZERO; break; case GL_CONSTANT_COLOR: func = R300_BLEND_GL_CONST_COLOR; @@ -166,12 +166,15 @@ static int blend_factor(GLenum factor, GLboolean is_src) */ /* helper function */ -static void r300_set_blend_cntl(r300ContextPtr r300, int func, int eqn, int cbits, int funcA, int eqnA) +static void r300_set_blend_cntl(r300ContextPtr r300, int func, int eqn, + int cbits, int funcA, int eqnA) { GLuint new_ablend, new_cblend; #if 0 - fprintf(stderr, "eqnA=%08x funcA=%08x eqn=%08x func=%08x cbits=%08x\n", eqnA, funcA, eqn, func, cbits); + fprintf(stderr, + "eqnA=%08x funcA=%08x eqn=%08x func=%08x cbits=%08x\n", + eqnA, funcA, eqn, func, cbits); #endif new_ablend = eqnA | funcA; new_cblend = eqn | func; @@ -184,20 +187,19 @@ static void r300_set_blend_cntl(r300ContextPtr r300, int func, int eqn, int cbit */ #if 0 if (new_ablend == new_cblend) { - new_cblend |= R300_BLEND_NO_SEPARATE; + new_cblend |= R300_BLEND_NO_SEPARATE; } #endif new_cblend |= cbits; - if((new_ablend != r300->hw.bld.cmd[R300_BLD_ABLEND]) || - (new_cblend != r300->hw.bld.cmd[R300_BLD_CBLEND])) { + if ((new_ablend != r300->hw.bld.cmd[R300_BLD_ABLEND]) || + (new_cblend != r300->hw.bld.cmd[R300_BLD_CBLEND])) { R300_STATECHANGE(r300, bld); - r300->hw.bld.cmd[R300_BLD_ABLEND]=new_ablend; - r300->hw.bld.cmd[R300_BLD_CBLEND]=new_cblend; + r300->hw.bld.cmd[R300_BLD_ABLEND] = new_ablend; + r300->hw.bld.cmd[R300_BLD_CBLEND] = new_cblend; } } - static void r300_set_blend_state(GLcontext * ctx) { r300ContextPtr r300 = R300_CONTEXT(ctx); @@ -209,14 +211,15 @@ static void r300_set_blend_state(GLcontext * ctx) int eqnA = R300_COMB_FCN_ADD_CLAMP; if (RGBA_LOGICOP_ENABLED(ctx) || !ctx->Color.BlendEnabled) { - r300_set_blend_cntl(r300, - func, eqn, 0, - func, eqn); + r300_set_blend_cntl(r300, func, eqn, 0, func, eqn); return; } - func = (blend_factor(ctx->Color.BlendSrcRGB, GL_TRUE) << R300_SRC_BLEND_SHIFT) | - (blend_factor(ctx->Color.BlendDstRGB, GL_FALSE) << R300_DST_BLEND_SHIFT); + func = + (blend_factor(ctx->Color.BlendSrcRGB, GL_TRUE) << + R300_SRC_BLEND_SHIFT) | (blend_factor(ctx->Color.BlendDstRGB, + GL_FALSE) << + R300_DST_BLEND_SHIFT); switch (ctx->Color.BlendEquationRGB) { case GL_FUNC_ADD: @@ -250,9 +253,11 @@ static void r300_set_blend_state(GLcontext * ctx) return; } - - funcA = (blend_factor(ctx->Color.BlendSrcA, GL_TRUE) << R300_SRC_BLEND_SHIFT) | - (blend_factor(ctx->Color.BlendDstA, GL_FALSE) << R300_DST_BLEND_SHIFT); + funcA = + (blend_factor(ctx->Color.BlendSrcA, GL_TRUE) << + R300_SRC_BLEND_SHIFT) | (blend_factor(ctx->Color.BlendDstA, + GL_FALSE) << + R300_DST_BLEND_SHIFT); switch (ctx->Color.BlendEquationA) { case GL_FUNC_ADD: @@ -280,14 +285,16 @@ static void r300_set_blend_state(GLcontext * ctx) break; default: - fprintf(stderr, "[%s:%u] Invalid A blend equation (0x%04x).\n", + fprintf(stderr, + "[%s:%u] Invalid A blend equation (0x%04x).\n", __func__, __LINE__, ctx->Color.BlendEquationA); return; } r300_set_blend_cntl(r300, - func, eqn, R300_BLEND_UNKNOWN | R300_BLEND_ENABLE, - funcA, eqnA); + func, eqn, + R300_BLEND_UNKNOWN | R300_BLEND_ENABLE, funcA, + eqnA); } static void r300BlendEquationSeparate(GLcontext * ctx, @@ -306,7 +313,7 @@ static void r300BlendFuncSeparate(GLcontext * ctx, /** * Update our tracked culling state based on Mesa's state. */ -static void r300UpdateCulling(GLcontext* ctx) +static void r300UpdateCulling(GLcontext * ctx) { r300ContextPtr r300 = R300_CONTEXT(ctx); uint32_t val = 0; @@ -314,7 +321,7 @@ static void r300UpdateCulling(GLcontext* ctx) R300_STATECHANGE(r300, cul); if (ctx->Polygon.CullFlag) { if (ctx->Polygon.CullFaceMode == GL_FRONT_AND_BACK) - val = R300_CULL_FRONT|R300_CULL_BACK; + val = R300_CULL_FRONT | R300_CULL_BACK; else if (ctx->Polygon.CullFaceMode == GL_FRONT) val = R300_CULL_FRONT; else @@ -328,13 +335,13 @@ static void r300UpdateCulling(GLcontext* ctx) r300->hw.cul.cmd[R300_CUL_CULL] = val; } -static void update_early_z(GLcontext *ctx) +static void update_early_z(GLcontext * ctx) { /* updates register R300_RB3D_EARLY_Z (0x4F14) if depth test is not enabled it should be R300_EARLY_Z_DISABLE if depth is enabled and alpha not it should be R300_EARLY_Z_ENABLE if depth and alpha is enabled it should be R300_EARLY_Z_DISABLE - */ + */ r300ContextPtr r300 = R300_CONTEXT(ctx); R300_STATECHANGE(r300, zstencil_format); @@ -344,14 +351,16 @@ static void update_early_z(GLcontext *ctx) else { if (ctx->Depth.Test && ctx->Depth.Func != GL_NEVER) /* enable early Z */ - r300->hw.zstencil_format.cmd[2] = R300_EARLY_Z_ENABLE; + r300->hw.zstencil_format.cmd[2] = + R300_EARLY_Z_ENABLE; else /* disable early Z */ - r300->hw.zstencil_format.cmd[2] = R300_EARLY_Z_DISABLE; + r300->hw.zstencil_format.cmd[2] = + R300_EARLY_Z_DISABLE; } } -static void update_alpha(GLcontext *ctx) +static void update_alpha(GLcontext * ctx) { r300ContextPtr r300 = R300_CONTEXT(ctx); GLubyte refByte; @@ -383,7 +392,7 @@ static void update_alpha(GLcontext *ctx) pp_misc |= R300_ALPHA_TEST_GEQUAL; break; case GL_ALWAYS: - /*pp_misc |= R300_ALPHA_TEST_PASS;*/ + /*pp_misc |= R300_ALPHA_TEST_PASS; */ really_enabled = GL_FALSE; break; } @@ -395,7 +404,6 @@ static void update_alpha(GLcontext *ctx) pp_misc = 0x0; } - R300_STATECHANGE(r300, at); r300->hw.at.cmd[R300_AT_ALPHA_TEST] = pp_misc; update_early_z(ctx); @@ -403,8 +411,8 @@ static void update_alpha(GLcontext *ctx) static void r300AlphaFunc(GLcontext * ctx, GLenum func, GLfloat ref) { - (void) func; - (void) ref; + (void)func; + (void)ref; update_alpha(ctx); } @@ -431,24 +439,31 @@ static int translate_func(int func) return 0; } -static void update_depth(GLcontext* ctx) +static void update_depth(GLcontext * ctx) { r300ContextPtr r300 = R300_CONTEXT(ctx); R300_STATECHANGE(r300, zs); r300->hw.zs.cmd[R300_ZS_CNTL_0] &= R300_RB3D_STENCIL_ENABLE; - r300->hw.zs.cmd[R300_ZS_CNTL_1] &= ~(R300_ZS_MASK << R300_RB3D_ZS1_DEPTH_FUNC_SHIFT); + r300->hw.zs.cmd[R300_ZS_CNTL_1] &= + ~(R300_ZS_MASK << R300_RB3D_ZS1_DEPTH_FUNC_SHIFT); if (ctx->Depth.Test && ctx->Depth.Func != GL_NEVER) { if (ctx->Depth.Mask) - r300->hw.zs.cmd[R300_ZS_CNTL_0] |= R300_RB3D_Z_TEST_AND_WRITE; + r300->hw.zs.cmd[R300_ZS_CNTL_0] |= + R300_RB3D_Z_TEST_AND_WRITE; else - r300->hw.zs.cmd[R300_ZS_CNTL_0] |= R300_RB3D_Z_TEST; + r300->hw.zs.cmd[R300_ZS_CNTL_0] |= + R300_RB3D_Z_TEST; - r300->hw.zs.cmd[R300_ZS_CNTL_1] |= translate_func(ctx->Depth.Func) << R300_RB3D_ZS1_DEPTH_FUNC_SHIFT; + r300->hw.zs.cmd[R300_ZS_CNTL_1] |= + translate_func(ctx->Depth. + Func) << R300_RB3D_ZS1_DEPTH_FUNC_SHIFT; } else { r300->hw.zs.cmd[R300_ZS_CNTL_0] |= R300_RB3D_Z_DISABLED_1; - r300->hw.zs.cmd[R300_ZS_CNTL_1] |= translate_func(GL_NEVER) << R300_RB3D_ZS1_DEPTH_FUNC_SHIFT; + r300->hw.zs.cmd[R300_ZS_CNTL_1] |= + translate_func(GL_NEVER) << + R300_RB3D_ZS1_DEPTH_FUNC_SHIFT; } update_early_z(ctx); @@ -459,7 +474,7 @@ static void update_depth(GLcontext* ctx) * * \note Mesa already filters redundant calls to glEnable/glDisable. */ -static void r300Enable(GLcontext* ctx, GLenum cap, GLboolean state) +static void r300Enable(GLcontext * ctx, GLenum cap, GLboolean state) { r300ContextPtr r300 = R300_CONTEXT(ctx); @@ -482,11 +497,14 @@ static void r300Enable(GLcontext* ctx, GLenum cap, GLboolean state) r300->hw.fogs.cmd[R300_FOGS_STATE] |= R300_FOG_ENABLE; - ctx->Driver.Fogfv( ctx, GL_FOG_MODE, NULL ); - ctx->Driver.Fogfv( ctx, GL_FOG_DENSITY, &ctx->Fog.Density ); - ctx->Driver.Fogfv( ctx, GL_FOG_START, &ctx->Fog.Start ); - ctx->Driver.Fogfv( ctx, GL_FOG_END, &ctx->Fog.End ); - ctx->Driver.Fogfv( ctx, GL_FOG_COLOR, ctx->Fog.Color ); + ctx->Driver.Fogfv(ctx, GL_FOG_MODE, NULL); + ctx->Driver.Fogfv(ctx, GL_FOG_DENSITY, + &ctx->Fog.Density); + ctx->Driver.Fogfv(ctx, GL_FOG_START, + &ctx->Fog.Start); + ctx->Driver.Fogfv(ctx, GL_FOG_END, &ctx->Fog.End); + ctx->Driver.Fogfv(ctx, GL_FOG_COLOR, + ctx->Fog.Color); } else { r300->hw.fogs.cmd[R300_FOGS_STATE] &= ~R300_FOG_ENABLE; @@ -519,7 +537,8 @@ static void r300Enable(GLcontext* ctx, GLenum cap, GLboolean state) } } else { #if R200_MERGED - FALLBACK(&r300->radeon, RADEON_FALLBACK_STENCIL, state); + FALLBACK(&r300->radeon, RADEON_FALLBACK_STENCIL, + state); #endif } break; @@ -534,10 +553,10 @@ static void r300Enable(GLcontext* ctx, GLenum cap, GLboolean state) case GL_POLYGON_OFFSET_FILL: R300_STATECHANGE(r300, occlusion_cntl); - if(state){ - r300->hw.occlusion_cntl.cmd[1] |= (3<<0); + if (state) { + r300->hw.occlusion_cntl.cmd[1] |= (3 << 0); } else { - r300->hw.occlusion_cntl.cmd[1] &= ~(3<<0); + r300->hw.occlusion_cntl.cmd[1] &= ~(3 << 0); } break; default: @@ -546,11 +565,10 @@ static void r300Enable(GLcontext* ctx, GLenum cap, GLboolean state) } } - -static void r300UpdatePolygonMode(GLcontext *ctx) +static void r300UpdatePolygonMode(GLcontext * ctx) { r300ContextPtr r300 = R300_CONTEXT(ctx); - uint32_t hw_mode=0; + uint32_t hw_mode = 0; if (ctx->Polygon.FrontMode != GL_FILL || ctx->Polygon.BackMode != GL_FILL) { @@ -569,25 +587,25 @@ static void r300UpdatePolygonMode(GLcontext *ctx) switch (f) { case GL_LINE: hw_mode |= R300_PM_FRONT_LINE; - break; - case GL_POINT: /* noop */ + break; + case GL_POINT: /* noop */ hw_mode |= R300_PM_FRONT_POINT; - break; + break; case GL_FILL: hw_mode |= R300_PM_FRONT_FILL; - break; + break; } switch (b) { case GL_LINE: hw_mode |= R300_PM_BACK_LINE; - break; - case GL_POINT: /* noop */ + break; + case GL_POINT: /* noop */ hw_mode |= R300_PM_BACK_POINT; - break; + break; case GL_FILL: hw_mode |= R300_PM_BACK_FILL; - break; + break; } } @@ -602,20 +620,19 @@ static void r300UpdatePolygonMode(GLcontext *ctx) * * \note Mesa already filters redundant calls to this function. */ -static void r300CullFace(GLcontext* ctx, GLenum mode) +static void r300CullFace(GLcontext * ctx, GLenum mode) { (void)mode; r300UpdateCulling(ctx); } - /** * Change the polygon orientation. * * \note Mesa already filters redundant calls to this function. */ -static void r300FrontFace(GLcontext* ctx, GLenum mode) +static void r300FrontFace(GLcontext * ctx, GLenum mode) { (void)mode; @@ -623,42 +640,39 @@ static void r300FrontFace(GLcontext* ctx, GLenum mode) r300UpdatePolygonMode(ctx); } - /** * Change the depth testing function. * * \note Mesa already filters redundant calls to this function. */ -static void r300DepthFunc(GLcontext* ctx, GLenum func) +static void r300DepthFunc(GLcontext * ctx, GLenum func) { - (void) func; + (void)func; update_depth(ctx); } - /** * Enable/Disable depth writing. * * \note Mesa already filters redundant calls to this function. */ -static void r300DepthMask(GLcontext* ctx, GLboolean mask) +static void r300DepthMask(GLcontext * ctx, GLboolean mask) { - (void) mask; + (void)mask; update_depth(ctx); } - /** * Handle glColorMask() */ -static void r300ColorMask(GLcontext* ctx, - GLboolean r, GLboolean g, GLboolean b, GLboolean a) +static void r300ColorMask(GLcontext * ctx, + GLboolean r, GLboolean g, GLboolean b, + GLboolean a) { r300ContextPtr r300 = R300_CONTEXT(ctx); int mask = (r ? R300_COLORMASK0_R : 0) | - (g ? R300_COLORMASK0_G : 0) | - (b ? R300_COLORMASK0_B : 0) | - (a ? R300_COLORMASK0_A : 0); + (g ? R300_COLORMASK0_G : 0) | + (b ? R300_COLORMASK0_B : 0) | (a ? R300_COLORMASK0_A : 0); if (mask != r300->hw.cmk.cmd[R300_CMK_COLORMASK]) { R300_STATECHANGE(r300, cmk); @@ -669,12 +683,15 @@ static void r300ColorMask(GLcontext* ctx, /* ============================================================= * Fog */ -static void r300Fogfv( GLcontext *ctx, GLenum pname, const GLfloat *param ) +static void r300Fogfv(GLcontext * ctx, GLenum pname, const GLfloat * param) { r300ContextPtr r300 = R300_CONTEXT(ctx); - union { int i; float f; } fogScale, fogStart; + union { + int i; + float f; + } fogScale, fogStart; - (void) param; + (void)param; fogScale.i = r300->hw.fogp.cmd[R300_FOGP_SCALE]; fogStart.i = r300->hw.fogp.cmd[R300_FOGP_START]; @@ -687,29 +704,37 @@ static void r300Fogfv( GLcontext *ctx, GLenum pname, const GLfloat *param ) case GL_LINEAR: R300_STATECHANGE(r300, fogs); r300->hw.fogs.cmd[R300_FOGS_STATE] = - (r300->hw.fogs.cmd[R300_FOGS_STATE] & ~R300_FOG_MODE_MASK) | R300_FOG_MODE_LINEAR; + (r300->hw.fogs. + cmd[R300_FOGS_STATE] & ~R300_FOG_MODE_MASK) | + R300_FOG_MODE_LINEAR; if (ctx->Fog.Start == ctx->Fog.End) { fogScale.f = -1.0; fogStart.f = 1.0; - } - else { - fogScale.f = 1.0 / (ctx->Fog.End-ctx->Fog.Start); - fogStart.f = -ctx->Fog.Start / (ctx->Fog.End-ctx->Fog.Start); + } else { + fogScale.f = + 1.0 / (ctx->Fog.End - ctx->Fog.Start); + fogStart.f = + -ctx->Fog.Start / (ctx->Fog.End - + ctx->Fog.Start); } break; case GL_EXP: R300_STATECHANGE(r300, fogs); r300->hw.fogs.cmd[R300_FOGS_STATE] = - (r300->hw.fogs.cmd[R300_FOGS_STATE] & ~R300_FOG_MODE_MASK) | R300_FOG_MODE_EXP; - fogScale.f = 0.0933*ctx->Fog.Density; + (r300->hw.fogs. + cmd[R300_FOGS_STATE] & ~R300_FOG_MODE_MASK) | + R300_FOG_MODE_EXP; + fogScale.f = 0.0933 * ctx->Fog.Density; fogStart.f = 0.0; break; case GL_EXP2: R300_STATECHANGE(r300, fogs); r300->hw.fogs.cmd[R300_FOGS_STATE] = - (r300->hw.fogs.cmd[R300_FOGS_STATE] & ~R300_FOG_MODE_MASK) | R300_FOG_MODE_EXP2; - fogScale.f = 0.3*ctx->Fog.Density; + (r300->hw.fogs. + cmd[R300_FOGS_STATE] & ~R300_FOG_MODE_MASK) | + R300_FOG_MODE_EXP2; + fogScale.f = 0.3 * ctx->Fog.Density; fogStart.f = 0.0; default: return; @@ -718,11 +743,11 @@ static void r300Fogfv( GLcontext *ctx, GLenum pname, const GLfloat *param ) case GL_FOG_DENSITY: switch (ctx->Fog.Mode) { case GL_EXP: - fogScale.f = 0.0933*ctx->Fog.Density; + fogScale.f = 0.0933 * ctx->Fog.Density; fogStart.f = 0.0; break; case GL_EXP2: - fogScale.f = 0.3*ctx->Fog.Density; + fogScale.f = 0.3 * ctx->Fog.Density; fogStart.f = 0.0; default: break; @@ -734,18 +759,23 @@ static void r300Fogfv( GLcontext *ctx, GLenum pname, const GLfloat *param ) if (ctx->Fog.Start == ctx->Fog.End) { fogScale.f = -1.0; fogStart.f = 1.0; - } - else { - fogScale.f = 1.0 / (ctx->Fog.End-ctx->Fog.Start); - fogStart.f = -ctx->Fog.Start / (ctx->Fog.End-ctx->Fog.Start); + } else { + fogScale.f = + 1.0 / (ctx->Fog.End - ctx->Fog.Start); + fogStart.f = + -ctx->Fog.Start / (ctx->Fog.End - + ctx->Fog.Start); } } break; case GL_FOG_COLOR: R300_STATECHANGE(r300, fogc); - r300->hw.fogc.cmd[R300_FOGC_R] = (GLuint) (ctx->Fog.Color[0]*1023.0F) & 0x3FF; - r300->hw.fogc.cmd[R300_FOGC_G] = (GLuint) (ctx->Fog.Color[1]*1023.0F) & 0x3FF; - r300->hw.fogc.cmd[R300_FOGC_B] = (GLuint) (ctx->Fog.Color[2]*1023.0F) & 0x3FF; + r300->hw.fogc.cmd[R300_FOGC_R] = + (GLuint) (ctx->Fog.Color[0] * 1023.0F) & 0x3FF; + r300->hw.fogc.cmd[R300_FOGC_G] = + (GLuint) (ctx->Fog.Color[1] * 1023.0F) & 0x3FF; + r300->hw.fogc.cmd[R300_FOGC_B] = + (GLuint) (ctx->Fog.Color[2] * 1023.0F) & 0x3FF; break; case GL_FOG_COORD_SRC: break; @@ -772,14 +802,14 @@ static void r300PointSize(GLcontext * ctx, GLfloat size) R300_STATECHANGE(r300, ps); r300->hw.ps.cmd[R300_PS_POINTSIZE] = - ((int)(size * 6) << R300_POINTSIZE_X_SHIFT) | - ((int)(size * 6) << R300_POINTSIZE_Y_SHIFT); + ((int)(size * 6) << R300_POINTSIZE_X_SHIFT) | + ((int)(size * 6) << R300_POINTSIZE_Y_SHIFT); } /* ============================================================= * Line state */ -static void r300LineWidth(GLcontext *ctx, GLfloat widthf) +static void r300LineWidth(GLcontext * ctx, GLfloat widthf) { r300ContextPtr r300 = R300_CONTEXT(ctx); @@ -790,7 +820,7 @@ static void r300LineWidth(GLcontext *ctx, GLfloat widthf) r300->hw.lcntl.cmd[1] |= R300_LINE_CNT_VE; } -static void r300PolygonMode(GLcontext *ctx, GLenum face, GLenum mode) +static void r300PolygonMode(GLcontext * ctx, GLenum face, GLenum mode) { (void)face; (void)mode; @@ -846,70 +876,97 @@ static void r300ShadeModel(GLcontext * ctx, GLenum mode) } static void r300StencilFuncSeparate(GLcontext * ctx, GLenum face, - GLenum func, GLint ref, GLuint mask) + GLenum func, GLint ref, GLuint mask) { r300ContextPtr rmesa = R300_CONTEXT(ctx); - GLuint refmask = (((ctx->Stencil.Ref[0] & 0xff) << R300_RB3D_ZS2_STENCIL_REF_SHIFT) | - ((ctx->Stencil.ValueMask[0] & 0xff) << R300_RB3D_ZS2_STENCIL_MASK_SHIFT)); + GLuint refmask = + (((ctx->Stencil. + Ref[0] & 0xff) << R300_RB3D_ZS2_STENCIL_REF_SHIFT) | ((ctx-> + Stencil. + ValueMask + [0] & + 0xff) + << + R300_RB3D_ZS2_STENCIL_MASK_SHIFT)); GLuint flag; R300_STATECHANGE(rmesa, zs); - rmesa->hw.zs.cmd[R300_ZS_CNTL_1] &= ~( - (R300_ZS_MASK << R300_RB3D_ZS1_FRONT_FUNC_SHIFT) - | (R300_ZS_MASK << R300_RB3D_ZS1_BACK_FUNC_SHIFT)); + rmesa->hw.zs.cmd[R300_ZS_CNTL_1] &= ~((R300_ZS_MASK << + R300_RB3D_ZS1_FRONT_FUNC_SHIFT) + | (R300_ZS_MASK << + R300_RB3D_ZS1_BACK_FUNC_SHIFT)); - rmesa->hw.zs.cmd[R300_ZS_CNTL_2] &= ~((R300_RB3D_ZS2_STENCIL_MASK << R300_RB3D_ZS2_STENCIL_REF_SHIFT) | - (R300_RB3D_ZS2_STENCIL_MASK << R300_RB3D_ZS2_STENCIL_MASK_SHIFT)); + rmesa->hw.zs.cmd[R300_ZS_CNTL_2] &= + ~((R300_RB3D_ZS2_STENCIL_MASK << + R300_RB3D_ZS2_STENCIL_REF_SHIFT) | + (R300_RB3D_ZS2_STENCIL_MASK << + R300_RB3D_ZS2_STENCIL_MASK_SHIFT)); flag = translate_func(ctx->Stencil.Function[0]); - rmesa->hw.zs.cmd[R300_ZS_CNTL_1] |= (flag << R300_RB3D_ZS1_FRONT_FUNC_SHIFT); + rmesa->hw.zs.cmd[R300_ZS_CNTL_1] |= + (flag << R300_RB3D_ZS1_FRONT_FUNC_SHIFT); if (ctx->Stencil._TestTwoSide) flag = translate_func(ctx->Stencil.Function[1]); - rmesa->hw.zs.cmd[R300_ZS_CNTL_1] |= (flag << R300_RB3D_ZS1_BACK_FUNC_SHIFT); + rmesa->hw.zs.cmd[R300_ZS_CNTL_1] |= + (flag << R300_RB3D_ZS1_BACK_FUNC_SHIFT); rmesa->hw.zs.cmd[R300_ZS_CNTL_2] |= refmask; } -static void r300StencilMaskSeparate(GLcontext * ctx, GLenum face, GLuint mask) +static void r300StencilMaskSeparate(GLcontext * ctx, GLenum face, + GLuint mask) { r300ContextPtr rmesa = R300_CONTEXT(ctx); R300_STATECHANGE(rmesa, zs); - rmesa->hw.zs.cmd[R300_ZS_CNTL_2] &= ~(R300_RB3D_ZS2_STENCIL_MASK << R300_RB3D_ZS2_STENCIL_WRITE_MASK_SHIFT); - rmesa->hw.zs.cmd[R300_ZS_CNTL_2] |= (ctx->Stencil.WriteMask[0] & 0xff) << R300_RB3D_ZS2_STENCIL_WRITE_MASK_SHIFT; + rmesa->hw.zs.cmd[R300_ZS_CNTL_2] &= + ~(R300_RB3D_ZS2_STENCIL_MASK << + R300_RB3D_ZS2_STENCIL_WRITE_MASK_SHIFT); + rmesa->hw.zs.cmd[R300_ZS_CNTL_2] |= + (ctx->Stencil. + WriteMask[0] & 0xff) << + R300_RB3D_ZS2_STENCIL_WRITE_MASK_SHIFT; } - -static void r300StencilOpSeparate(GLcontext * ctx, GLenum face, GLenum fail, - GLenum zfail, GLenum zpass) +static void r300StencilOpSeparate(GLcontext * ctx, GLenum face, + GLenum fail, GLenum zfail, GLenum zpass) { r300ContextPtr rmesa = R300_CONTEXT(ctx); R300_STATECHANGE(rmesa, zs); - /* It is easier to mask what's left.. */ + /* It is easier to mask what's left.. */ rmesa->hw.zs.cmd[R300_ZS_CNTL_1] &= (R300_ZS_MASK << R300_RB3D_ZS1_DEPTH_FUNC_SHIFT) | (R300_ZS_MASK << R300_RB3D_ZS1_FRONT_FUNC_SHIFT) | (R300_ZS_MASK << R300_RB3D_ZS1_BACK_FUNC_SHIFT); rmesa->hw.zs.cmd[R300_ZS_CNTL_1] |= - (translate_stencil_op(ctx->Stencil.FailFunc[0]) << R300_RB3D_ZS1_FRONT_FAIL_OP_SHIFT) - |(translate_stencil_op(ctx->Stencil.ZFailFunc[0]) << R300_RB3D_ZS1_FRONT_ZFAIL_OP_SHIFT) - |(translate_stencil_op(ctx->Stencil.ZPassFunc[0]) << R300_RB3D_ZS1_FRONT_ZPASS_OP_SHIFT); + (translate_stencil_op(ctx->Stencil.FailFunc[0]) << + R300_RB3D_ZS1_FRONT_FAIL_OP_SHIFT) + | (translate_stencil_op(ctx->Stencil.ZFailFunc[0]) << + R300_RB3D_ZS1_FRONT_ZFAIL_OP_SHIFT) + | (translate_stencil_op(ctx->Stencil.ZPassFunc[0]) << + R300_RB3D_ZS1_FRONT_ZPASS_OP_SHIFT); if (ctx->Stencil._TestTwoSide) { rmesa->hw.zs.cmd[R300_ZS_CNTL_1] |= - (translate_stencil_op(ctx->Stencil.FailFunc[1]) << R300_RB3D_ZS1_BACK_FAIL_OP_SHIFT) - |(translate_stencil_op(ctx->Stencil.ZFailFunc[1]) << R300_RB3D_ZS1_BACK_ZFAIL_OP_SHIFT) - |(translate_stencil_op(ctx->Stencil.ZPassFunc[1]) << R300_RB3D_ZS1_BACK_ZPASS_OP_SHIFT); + (translate_stencil_op(ctx->Stencil.FailFunc[1]) << + R300_RB3D_ZS1_BACK_FAIL_OP_SHIFT) + | (translate_stencil_op(ctx->Stencil.ZFailFunc[1]) << + R300_RB3D_ZS1_BACK_ZFAIL_OP_SHIFT) + | (translate_stencil_op(ctx->Stencil.ZPassFunc[1]) << + R300_RB3D_ZS1_BACK_ZPASS_OP_SHIFT); } else { rmesa->hw.zs.cmd[R300_ZS_CNTL_1] |= - (translate_stencil_op(ctx->Stencil.FailFunc[0]) << R300_RB3D_ZS1_BACK_FAIL_OP_SHIFT) - |(translate_stencil_op(ctx->Stencil.ZFailFunc[0]) << R300_RB3D_ZS1_BACK_ZFAIL_OP_SHIFT) - |(translate_stencil_op(ctx->Stencil.ZPassFunc[0]) << R300_RB3D_ZS1_BACK_ZPASS_OP_SHIFT); + (translate_stencil_op(ctx->Stencil.FailFunc[0]) << + R300_RB3D_ZS1_BACK_FAIL_OP_SHIFT) + | (translate_stencil_op(ctx->Stencil.ZFailFunc[0]) << + R300_RB3D_ZS1_BACK_ZFAIL_OP_SHIFT) + | (translate_stencil_op(ctx->Stencil.ZPassFunc[0]) << + R300_RB3D_ZS1_BACK_ZPASS_OP_SHIFT); } } @@ -919,8 +976,10 @@ static void r300ClearStencil(GLcontext * ctx, GLint s) rmesa->state.stencil.clear = ((GLuint) (ctx->Stencil.Clear & 0xff) | - (R300_RB3D_ZS2_STENCIL_MASK << R300_RB3D_ZS2_STENCIL_MASK_SHIFT) | - ((ctx->Stencil.WriteMask[0] & 0xff) << R300_RB3D_ZS2_STENCIL_WRITE_MASK_SHIFT)); + (R300_RB3D_ZS2_STENCIL_MASK << + R300_RB3D_ZS2_STENCIL_MASK_SHIFT) | ((ctx->Stencil. + WriteMask[0] & 0xff) << + R300_RB3D_ZS2_STENCIL_WRITE_MASK_SHIFT)); } /* ============================================================= @@ -951,11 +1010,11 @@ void r300UpdateWindow(GLcontext * ctx) R300_FIREVERTICES(rmesa); R300_STATECHANGE(rmesa, vpt); - rmesa->hw.vpt.cmd[R300_VPT_XSCALE] = r300PackFloat32(sx); + rmesa->hw.vpt.cmd[R300_VPT_XSCALE] = r300PackFloat32(sx); rmesa->hw.vpt.cmd[R300_VPT_XOFFSET] = r300PackFloat32(tx); - rmesa->hw.vpt.cmd[R300_VPT_YSCALE] = r300PackFloat32(sy); + rmesa->hw.vpt.cmd[R300_VPT_YSCALE] = r300PackFloat32(sy); rmesa->hw.vpt.cmd[R300_VPT_YOFFSET] = r300PackFloat32(ty); - rmesa->hw.vpt.cmd[R300_VPT_ZSCALE] = r300PackFloat32(sz); + rmesa->hw.vpt.cmd[R300_VPT_ZSCALE] = r300PackFloat32(sz); rmesa->hw.vpt.cmd[R300_VPT_ZOFFSET] = r300PackFloat32(tz); } @@ -969,43 +1028,43 @@ static void r300Viewport(GLcontext * ctx, GLint x, GLint y, r300UpdateWindow(ctx); } -static void r300DepthRange(GLcontext * ctx, GLclampd nearval, GLclampd farval) +static void r300DepthRange(GLcontext * ctx, GLclampd nearval, + GLclampd farval) { r300UpdateWindow(ctx); } -void r300UpdateViewportOffset( GLcontext *ctx ) +void r300UpdateViewportOffset(GLcontext * ctx) { r300ContextPtr rmesa = R300_CONTEXT(ctx); - __DRIdrawablePrivate *dPriv = ((radeonContextPtr)rmesa)->dri.drawable; - GLfloat xoffset = (GLfloat)dPriv->x; - GLfloat yoffset = (GLfloat)dPriv->y + dPriv->h; + __DRIdrawablePrivate *dPriv = + ((radeonContextPtr) rmesa)->dri.drawable; + GLfloat xoffset = (GLfloat) dPriv->x; + GLfloat yoffset = (GLfloat) dPriv->y + dPriv->h; const GLfloat *v = ctx->Viewport._WindowMap.m; GLfloat tx = v[MAT_TX] + xoffset + SUBPIXEL_X; - GLfloat ty = (- v[MAT_TY]) + yoffset + SUBPIXEL_Y; + GLfloat ty = (-v[MAT_TY]) + yoffset + SUBPIXEL_Y; - if ( rmesa->hw.vpt.cmd[R300_VPT_XOFFSET] != r300PackFloat32(tx) || - rmesa->hw.vpt.cmd[R300_VPT_YOFFSET] != r300PackFloat32(ty)) - { - /* Note: this should also modify whatever data the context reset - * code uses... - */ - R300_STATECHANGE( rmesa, vpt ); - rmesa->hw.vpt.cmd[R300_VPT_XOFFSET] = r300PackFloat32(tx); - rmesa->hw.vpt.cmd[R300_VPT_YOFFSET] = r300PackFloat32(ty); + if (rmesa->hw.vpt.cmd[R300_VPT_XOFFSET] != r300PackFloat32(tx) || + rmesa->hw.vpt.cmd[R300_VPT_YOFFSET] != r300PackFloat32(ty)) { + /* Note: this should also modify whatever data the context reset + * code uses... + */ + R300_STATECHANGE(rmesa, vpt); + rmesa->hw.vpt.cmd[R300_VPT_XOFFSET] = r300PackFloat32(tx); + rmesa->hw.vpt.cmd[R300_VPT_YOFFSET] = r300PackFloat32(ty); } - radeonUpdateScissor( ctx ); + radeonUpdateScissor(ctx); } /** * Tell the card where to render (offset, pitch). * Effected by glDrawBuffer, etc */ -void -r300UpdateDrawBuffer(GLcontext *ctx) +void r300UpdateDrawBuffer(GLcontext * ctx) { r300ContextPtr rmesa = R300_CONTEXT(ctx); r300ContextPtr r300 = rmesa; @@ -1014,13 +1073,15 @@ r300UpdateDrawBuffer(GLcontext *ctx) if (fb->_ColorDrawBufferMask[0] == BUFFER_BIT_FRONT_LEFT) { /* draw to front */ - drb = (driRenderbuffer *) fb->Attachment[BUFFER_FRONT_LEFT].Renderbuffer; - } - else if (fb->_ColorDrawBufferMask[0] == BUFFER_BIT_BACK_LEFT) { + drb = + (driRenderbuffer *) fb->Attachment[BUFFER_FRONT_LEFT]. + Renderbuffer; + } else if (fb->_ColorDrawBufferMask[0] == BUFFER_BIT_BACK_LEFT) { /* draw to back */ - drb = (driRenderbuffer *) fb->Attachment[BUFFER_BACK_LEFT].Renderbuffer; - } - else { + drb = + (driRenderbuffer *) fb->Attachment[BUFFER_BACK_LEFT]. + Renderbuffer; + } else { /* drawing to multiple buffers, or none */ return; } @@ -1028,66 +1089,71 @@ r300UpdateDrawBuffer(GLcontext *ctx) assert(drb); assert(drb->flippedPitch); + R300_STATECHANGE(rmesa, cb); - R300_STATECHANGE( rmesa, cb ); - - r300->hw.cb.cmd[R300_CB_OFFSET] = drb->flippedOffset + //r300->radeon.state.color.drawOffset + - r300->radeon.radeonScreen->fbLocation; - r300->hw.cb.cmd[R300_CB_PITCH] = drb->flippedPitch;//r300->radeon.state.color.drawPitch; + r300->hw.cb.cmd[R300_CB_OFFSET] = drb->flippedOffset + //r300->radeon.state.color.drawOffset + + r300->radeon.radeonScreen->fbLocation; + r300->hw.cb.cmd[R300_CB_PITCH] = drb->flippedPitch; //r300->radeon.state.color.drawPitch; if (r300->radeon.radeonScreen->cpp == 4) - r300->hw.cb.cmd[R300_CB_PITCH] |= R300_COLOR_FORMAT_ARGB8888; + r300->hw.cb.cmd[R300_CB_PITCH] |= + R300_COLOR_FORMAT_ARGB8888; else r300->hw.cb.cmd[R300_CB_PITCH] |= R300_COLOR_FORMAT_RGB565; if (r300->radeon.sarea->tiling_enabled) r300->hw.cb.cmd[R300_CB_PITCH] |= R300_COLOR_TILE_ENABLE; #if 0 - R200_STATECHANGE( rmesa, ctx ); + R200_STATECHANGE(rmesa, ctx); /* Note: we used the (possibly) page-flipped values */ rmesa->hw.ctx.cmd[CTX_RB3D_COLOROFFSET] - = ((drb->flippedOffset + rmesa->r200Screen->fbLocation) - & R200_COLOROFFSET_MASK); + = ((drb->flippedOffset + rmesa->r200Screen->fbLocation) + & R200_COLOROFFSET_MASK); rmesa->hw.ctx.cmd[CTX_RB3D_COLORPITCH] = drb->flippedPitch; if (rmesa->sarea->tiling_enabled) { - rmesa->hw.ctx.cmd[CTX_RB3D_COLORPITCH] |= R200_COLOR_TILE_ENABLE; + rmesa->hw.ctx.cmd[CTX_RB3D_COLORPITCH] |= + R200_COLOR_TILE_ENABLE; } #endif } static void -r300FetchStateParameter(GLcontext *ctx, - const gl_state_index state[STATE_LENGTH], - GLfloat *value) +r300FetchStateParameter(GLcontext * ctx, + const gl_state_index state[STATE_LENGTH], + GLfloat * value) { r300ContextPtr r300 = R300_CONTEXT(ctx); - switch(state[0]) { + switch (state[0]) { case STATE_INTERNAL: - switch(state[1]) { + switch (state[1]) { case STATE_R300_WINDOW_DIMENSION: - value[0] = r300->radeon.dri.drawable->w*0.5f;/* width*0.5 */ - value[1] = r300->radeon.dri.drawable->h*0.5f;/* height*0.5 */ - value[2] = 0.5F; /* for moving range [-1 1] -> [0 1] */ - value[3] = 1.0F; /* not used */ + value[0] = r300->radeon.dri.drawable->w * 0.5f; /* width*0.5 */ + value[1] = r300->radeon.dri.drawable->h * 0.5f; /* height*0.5 */ + value[2] = 0.5F; /* for moving range [-1 1] -> [0 1] */ + value[3] = 1.0F; /* not used */ break; - case STATE_R300_TEXRECT_FACTOR: { - struct gl_texture_object* t = ctx->Texture.Unit[state[2]].CurrentRect; - - if (t && t->Image[0][t->BaseLevel]) { - struct gl_texture_image* image = t->Image[0][t->BaseLevel]; - value[0] = 1.0 / image->Width2; - value[1] = 1.0 / image->Height2; - } else { - value[0] = 1.0; - value[1] = 1.0; + case STATE_R300_TEXRECT_FACTOR:{ + struct gl_texture_object *t = + ctx->Texture.Unit[state[2]]. + CurrentRect; + + if (t && t->Image[0][t->BaseLevel]) { + struct gl_texture_image *image = + t->Image[0][t->BaseLevel]; + value[0] = 1.0 / image->Width2; + value[1] = 1.0 / image->Height2; + } else { + value[0] = 1.0; + value[1] = 1.0; + } + value[2] = 1.0; + value[3] = 1.0; + break; } - value[2] = 1.0; - value[3] = 1.0; - break; } default: break; @@ -1109,23 +1175,25 @@ void r300UpdateStateParameters(GLcontext * ctx, GLuint new_state) struct gl_program_parameter_list *paramList; GLuint i; - if(!(new_state & (_NEW_BUFFERS|_NEW_PROGRAM))) - return; + if (!(new_state & (_NEW_BUFFERS | _NEW_PROGRAM))) + return; fp = (struct r300_fragment_program *)ctx->FragmentProgram._Current; if (!fp) - return; + return; paramList = fp->mesa_program.Base.Parameters; if (!paramList) - return; + return; for (i = 0; i < paramList->NumParameters; i++) { - if (paramList->Parameters[i].Type == PROGRAM_STATE_VAR){ + if (paramList->Parameters[i].Type == PROGRAM_STATE_VAR) { r300FetchStateParameter(ctx, - paramList->Parameters[i].StateIndexes, - paramList->ParameterValues[i]); + paramList->Parameters[i]. + StateIndexes, + paramList-> + ParameterValues[i]); } } } @@ -1133,7 +1201,8 @@ void r300UpdateStateParameters(GLcontext * ctx, GLuint new_state) /* ============================================================= * Polygon state */ -static void r300PolygonOffset(GLcontext * ctx, GLfloat factor, GLfloat units) +static void r300PolygonOffset(GLcontext * ctx, GLfloat factor, + GLfloat units) { r300ContextPtr rmesa = R300_CONTEXT(ctx); GLfloat constant = units; @@ -1141,10 +1210,10 @@ static void r300PolygonOffset(GLcontext * ctx, GLfloat factor, GLfloat units) switch (ctx->Visual.depthBits) { case 16: constant *= 4.0; - break; + break; case 24: constant *= 2.0; - break; + break; } factor *= 12.0; @@ -1160,7 +1229,6 @@ static void r300PolygonOffset(GLcontext * ctx, GLfloat factor, GLfloat units) /* Routing and texture-related */ - /* r300 doesnt handle GL_CLAMP and GL_MIRROR_CLAMP_EXT correctly when filter is NEAREST. * Since texwrap produces same results for GL_CLAMP and GL_CLAMP_TO_EDGE we use them instead. * We need to recalculate wrap modes whenever filter mode is changed because someone might do: @@ -1172,70 +1240,75 @@ static void r300PolygonOffset(GLcontext * ctx, GLfloat factor, GLfloat units) */ static unsigned long gen_fixed_filter(unsigned long f) { - unsigned long mag, min, needs_fixing=0; + unsigned long mag, min, needs_fixing = 0; //return f; /* We ignore MIRROR bit so we dont have to do everything twice */ - if((f & ((7-1) << R300_TX_WRAP_S_SHIFT)) == (R300_TX_CLAMP << R300_TX_WRAP_S_SHIFT)){ + if ((f & ((7 - 1) << R300_TX_WRAP_S_SHIFT)) == + (R300_TX_CLAMP << R300_TX_WRAP_S_SHIFT)) { needs_fixing |= 1; } - if((f & ((7-1) << R300_TX_WRAP_T_SHIFT)) == (R300_TX_CLAMP << R300_TX_WRAP_T_SHIFT)){ + if ((f & ((7 - 1) << R300_TX_WRAP_T_SHIFT)) == + (R300_TX_CLAMP << R300_TX_WRAP_T_SHIFT)) { needs_fixing |= 2; } - if((f & ((7-1) << R300_TX_WRAP_Q_SHIFT)) == (R300_TX_CLAMP << R300_TX_WRAP_Q_SHIFT)){ + if ((f & ((7 - 1) << R300_TX_WRAP_Q_SHIFT)) == + (R300_TX_CLAMP << R300_TX_WRAP_Q_SHIFT)) { needs_fixing |= 4; } - if(!needs_fixing) + if (!needs_fixing) return f; - mag=f & R300_TX_MAG_FILTER_MASK; - min=f & R300_TX_MIN_FILTER_MASK; + mag = f & R300_TX_MAG_FILTER_MASK; + min = f & R300_TX_MIN_FILTER_MASK; /* TODO: Check for anisto filters too */ - if((mag != R300_TX_MAG_FILTER_NEAREST) && (min != R300_TX_MIN_FILTER_NEAREST)) + if ((mag != R300_TX_MAG_FILTER_NEAREST) + && (min != R300_TX_MIN_FILTER_NEAREST)) return f; /* r300 cant handle these modes hence we force nearest to linear */ - if((mag == R300_TX_MAG_FILTER_NEAREST) && (min != R300_TX_MIN_FILTER_NEAREST)){ + if ((mag == R300_TX_MAG_FILTER_NEAREST) + && (min != R300_TX_MIN_FILTER_NEAREST)) { f &= ~R300_TX_MAG_FILTER_NEAREST; f |= R300_TX_MAG_FILTER_LINEAR; return f; } - if((min == R300_TX_MIN_FILTER_NEAREST) && (mag != R300_TX_MAG_FILTER_NEAREST)){ + if ((min == R300_TX_MIN_FILTER_NEAREST) + && (mag != R300_TX_MAG_FILTER_NEAREST)) { f &= ~R300_TX_MIN_FILTER_NEAREST; f |= R300_TX_MIN_FILTER_LINEAR; return f; } /* Both are nearest */ - if(needs_fixing & 1){ - f &= ~((7-1) << R300_TX_WRAP_S_SHIFT); + if (needs_fixing & 1) { + f &= ~((7 - 1) << R300_TX_WRAP_S_SHIFT); f |= R300_TX_CLAMP_TO_EDGE << R300_TX_WRAP_S_SHIFT; } - if(needs_fixing & 2){ - f &= ~((7-1) << R300_TX_WRAP_T_SHIFT); + if (needs_fixing & 2) { + f &= ~((7 - 1) << R300_TX_WRAP_T_SHIFT); f |= R300_TX_CLAMP_TO_EDGE << R300_TX_WRAP_T_SHIFT; } - if(needs_fixing & 4){ - f &= ~((7-1) << R300_TX_WRAP_Q_SHIFT); + if (needs_fixing & 4) { + f &= ~((7 - 1) << R300_TX_WRAP_Q_SHIFT); f |= R300_TX_CLAMP_TO_EDGE << R300_TX_WRAP_Q_SHIFT; } return f; } -void r300_setup_textures(GLcontext *ctx) +void r300_setup_textures(GLcontext * ctx) { int i, mtu; struct r300_tex_obj *t; r300ContextPtr r300 = R300_CONTEXT(ctx); - int hw_tmu=0; - int last_hw_tmu=-1; /* -1 translates into no setup costs for fields */ + int hw_tmu = 0; + int last_hw_tmu = -1; /* -1 translates into no setup costs for fields */ int tmu_mappings[R300_MAX_TEXTURE_UNITS] = { -1, }; - struct r300_fragment_program *rp = - (struct r300_fragment_program *) - (char *)ctx->FragmentProgram._Current; + struct r300_fragment_program *rp = (struct r300_fragment_program *) + (char *)ctx->FragmentProgram._Current; R300_STATECHANGE(r300, txe); R300_STATECHANGE(r300, tex.filter); @@ -1247,59 +1320,72 @@ void r300_setup_textures(GLcontext *ctx) R300_STATECHANGE(r300, tex.chroma_key); R300_STATECHANGE(r300, tex.border_color); - r300->hw.txe.cmd[R300_TXE_ENABLE]=0x0; + r300->hw.txe.cmd[R300_TXE_ENABLE] = 0x0; mtu = r300->radeon.glCtx->Const.MaxTextureUnits; if (RADEON_DEBUG & DEBUG_STATE) fprintf(stderr, "mtu=%d\n", mtu); - if(mtu > R300_MAX_TEXTURE_UNITS) { - fprintf(stderr, "Aiiee ! mtu=%d is greater than R300_MAX_TEXTURE_UNITS=%d\n", + if (mtu > R300_MAX_TEXTURE_UNITS) { + fprintf(stderr, + "Aiiee ! mtu=%d is greater than R300_MAX_TEXTURE_UNITS=%d\n", mtu, R300_MAX_TEXTURE_UNITS); exit(-1); } /* We cannot let disabled tmu offsets pass DRM */ - for(i=0; i < mtu; i++) { + for (i = 0; i < mtu; i++) { if (ctx->Texture.Unit[i]._ReallyEnabled) { -#if 0 /* Enables old behaviour */ +#if 0 /* Enables old behaviour */ hw_tmu = i; #endif tmu_mappings[i] = hw_tmu; - t=r300->state.texture.unit[i].texobj; + t = r300->state.texture.unit[i].texobj; /* XXX questionable fix for bug 9170: */ if (!t) continue; - if((t->format & 0xffffff00)==0xffffff00) { - WARN_ONCE("unknown texture format (entry %x) encountered. Help me !\n", t->format & 0xff); + if ((t->format & 0xffffff00) == 0xffffff00) { + WARN_ONCE + ("unknown texture format (entry %x) encountered. Help me !\n", + t->format & 0xff); } if (RADEON_DEBUG & DEBUG_STATE) - fprintf(stderr, "Activating texture unit %d\n", i); + fprintf(stderr, + "Activating texture unit %d\n", i); r300->hw.txe.cmd[R300_TXE_ENABLE] |= (1 << hw_tmu); - r300->hw.tex.filter.cmd[R300_TEX_VALUE_0 + hw_tmu] = gen_fixed_filter(t->filter) | (hw_tmu << 28); + r300->hw.tex.filter.cmd[R300_TEX_VALUE_0 + + hw_tmu] = + gen_fixed_filter(t->filter) | (hw_tmu << 28); /* Currently disabled! */ - r300->hw.tex.filter_1.cmd[R300_TEX_VALUE_0 + hw_tmu] = 0x0; //0x20501f80; - r300->hw.tex.size.cmd[R300_TEX_VALUE_0 + hw_tmu] = t->size; - r300->hw.tex.format.cmd[R300_TEX_VALUE_0 + hw_tmu] = t->format; - r300->hw.tex.pitch.cmd[R300_TEX_VALUE_0 + hw_tmu] = t->pitch_reg; - r300->hw.tex.offset.cmd[R300_TEX_VALUE_0 + hw_tmu] = t->offset; - - if(t->offset & R300_TXO_MACRO_TILE) { + r300->hw.tex.filter_1.cmd[R300_TEX_VALUE_0 + hw_tmu] = 0x0; //0x20501f80; + r300->hw.tex.size.cmd[R300_TEX_VALUE_0 + hw_tmu] = + t->size; + r300->hw.tex.format.cmd[R300_TEX_VALUE_0 + + hw_tmu] = t->format; + r300->hw.tex.pitch.cmd[R300_TEX_VALUE_0 + hw_tmu] = + t->pitch_reg; + r300->hw.tex.offset.cmd[R300_TEX_VALUE_0 + + hw_tmu] = t->offset; + + if (t->offset & R300_TXO_MACRO_TILE) { WARN_ONCE("macro tiling enabled!\n"); } - if(t->offset & R300_TXO_MICRO_TILE) { + if (t->offset & R300_TXO_MICRO_TILE) { WARN_ONCE("micro tiling enabled!\n"); } - r300->hw.tex.chroma_key.cmd[R300_TEX_VALUE_0 + hw_tmu] = 0x0; - r300->hw.tex.border_color.cmd[R300_TEX_VALUE_0 + hw_tmu] = t->pp_border_color; + r300->hw.tex.chroma_key.cmd[R300_TEX_VALUE_0 + + hw_tmu] = 0x0; + r300->hw.tex.border_color.cmd[R300_TEX_VALUE_0 + + hw_tmu] = + t->pp_border_color; last_hw_tmu = hw_tmu; @@ -1307,22 +1393,29 @@ void r300_setup_textures(GLcontext *ctx) } } - r300->hw.tex.filter.cmd[R300_TEX_CMD_0] = cmdpacket0(R300_TX_FILTER_0, last_hw_tmu + 1); - r300->hw.tex.filter_1.cmd[R300_TEX_CMD_0] = cmdpacket0(R300_TX_FILTER1_0, last_hw_tmu + 1); - r300->hw.tex.size.cmd[R300_TEX_CMD_0] = cmdpacket0(R300_TX_SIZE_0, last_hw_tmu + 1); - r300->hw.tex.format.cmd[R300_TEX_CMD_0] = cmdpacket0(R300_TX_FORMAT_0, last_hw_tmu + 1); - r300->hw.tex.pitch.cmd[R300_TEX_CMD_0] = cmdpacket0(R300_TX_PITCH_0, last_hw_tmu + 1); - r300->hw.tex.offset.cmd[R300_TEX_CMD_0] = cmdpacket0(R300_TX_OFFSET_0, last_hw_tmu + 1); - r300->hw.tex.chroma_key.cmd[R300_TEX_CMD_0] = cmdpacket0(R300_TX_CHROMA_KEY_0, last_hw_tmu + 1); - r300->hw.tex.border_color.cmd[R300_TEX_CMD_0] = cmdpacket0(R300_TX_BORDER_COLOR_0, last_hw_tmu + 1); - - - if (!rp) /* should only happenen once, just after context is created */ + r300->hw.tex.filter.cmd[R300_TEX_CMD_0] = + cmdpacket0(R300_TX_FILTER_0, last_hw_tmu + 1); + r300->hw.tex.filter_1.cmd[R300_TEX_CMD_0] = + cmdpacket0(R300_TX_FILTER1_0, last_hw_tmu + 1); + r300->hw.tex.size.cmd[R300_TEX_CMD_0] = + cmdpacket0(R300_TX_SIZE_0, last_hw_tmu + 1); + r300->hw.tex.format.cmd[R300_TEX_CMD_0] = + cmdpacket0(R300_TX_FORMAT_0, last_hw_tmu + 1); + r300->hw.tex.pitch.cmd[R300_TEX_CMD_0] = + cmdpacket0(R300_TX_PITCH_0, last_hw_tmu + 1); + r300->hw.tex.offset.cmd[R300_TEX_CMD_0] = + cmdpacket0(R300_TX_OFFSET_0, last_hw_tmu + 1); + r300->hw.tex.chroma_key.cmd[R300_TEX_CMD_0] = + cmdpacket0(R300_TX_CHROMA_KEY_0, last_hw_tmu + 1); + r300->hw.tex.border_color.cmd[R300_TEX_CMD_0] = + cmdpacket0(R300_TX_BORDER_COLOR_0, last_hw_tmu + 1); + + if (!rp) /* should only happenen once, just after context is created */ return; R300_STATECHANGE(r300, fpt); - for(i = 0; i < rp->tex.length; i++){ + for (i = 0; i < rp->tex.length; i++) { int unit; int opcode; unsigned long val; @@ -1333,37 +1426,45 @@ void r300_setup_textures(GLcontext *ctx) val = rp->tex.inst[i]; val &= ~R300_FPITX_IMAGE_MASK; - opcode = (val & R300_FPITX_OPCODE_MASK) >> R300_FPITX_OPCODE_SHIFT; + opcode = + (val & R300_FPITX_OPCODE_MASK) >> + R300_FPITX_OPCODE_SHIFT; if (opcode == R300_FPITX_OP_KIL) { - r300->hw.fpt.cmd[R300_FPT_INSTR_0+i] = val; + r300->hw.fpt.cmd[R300_FPT_INSTR_0 + i] = val; } else { if (tmu_mappings[unit] >= 0) { - val |= tmu_mappings[unit] << R300_FPITX_IMAGE_SHIFT; - r300->hw.fpt.cmd[R300_FPT_INSTR_0+i] = val; + val |= + tmu_mappings[unit] << + R300_FPITX_IMAGE_SHIFT; + r300->hw.fpt.cmd[R300_FPT_INSTR_0 + i] = + val; } else { // We get here when the corresponding texture image is incomplete // (e.g. incomplete mipmaps etc.) - r300->hw.fpt.cmd[R300_FPT_INSTR_0+i] = val; + r300->hw.fpt.cmd[R300_FPT_INSTR_0 + i] = + val; } } } - r300->hw.fpt.cmd[R300_FPT_CMD_0] = cmdpacket0(R300_PFS_TEXI_0, rp->tex.length); + r300->hw.fpt.cmd[R300_FPT_CMD_0] = + cmdpacket0(R300_PFS_TEXI_0, rp->tex.length); if (RADEON_DEBUG & DEBUG_STATE) - fprintf(stderr, "TX_ENABLE: %08x last_hw_tmu=%d\n", r300->hw.txe.cmd[R300_TXE_ENABLE], last_hw_tmu); + fprintf(stderr, "TX_ENABLE: %08x last_hw_tmu=%d\n", + r300->hw.txe.cmd[R300_TXE_ENABLE], last_hw_tmu); } union r300_outputs_written { - GLuint vp_outputs; /* hw_tcl_on */ - DECLARE_RENDERINPUTS(index_bitset); /* !hw_tcl_on */ + GLuint vp_outputs; /* hw_tcl_on */ + DECLARE_RENDERINPUTS(index_bitset); /* !hw_tcl_on */ }; #define R300_OUTPUTS_WRITTEN_TEST(ow, vp_result, tnl_attrib) \ ((hw_tcl_on) ? (ow).vp_outputs & (1 << (vp_result)) : \ RENDERINPUTS_TEST( (ow.index_bitset), (tnl_attrib) )) -void r300_setup_rs_unit(GLcontext *ctx) +void r300_setup_rs_unit(GLcontext * ctx) { r300ContextPtr r300 = R300_CONTEXT(ctx); /* I'm still unsure if these are needed */ @@ -1383,16 +1484,19 @@ void r300_setup_rs_unit(GLcontext *ctx) int in_texcoords, col_interp_nr; int i; - if(hw_tcl_on) - OutputsWritten.vp_outputs = CURRENT_VERTEX_SHADER(ctx)->key.OutputsWritten; + if (hw_tcl_on) + OutputsWritten.vp_outputs = + CURRENT_VERTEX_SHADER(ctx)->key.OutputsWritten; else - RENDERINPUTS_COPY( OutputsWritten.index_bitset, r300->state.render_inputs_bitset ); + RENDERINPUTS_COPY(OutputsWritten.index_bitset, + r300->state.render_inputs_bitset); if (ctx->FragmentProgram._Current) - InputsRead = ctx->FragmentProgram._Current->Base.InputsRead; + InputsRead = + ctx->FragmentProgram._Current->Base.InputsRead; else { fprintf(stderr, "No ctx->FragmentProgram._Current!!\n"); - return; /* This should only ever happen once.. */ + return; /* This should only ever happen once.. */ } R300_STATECHANGE(r300, ri); @@ -1403,12 +1507,12 @@ void r300_setup_rs_unit(GLcontext *ctx) r300->hw.rr.cmd[R300_RR_ROUTE_1] = 0; - if (InputsRead & FRAG_BIT_WPOS){ + if (InputsRead & FRAG_BIT_WPOS) { for (i = 0; i < ctx->Const.MaxTextureUnits; i++) if (!(InputsRead & (FRAG_BIT_TEX0 << i))) break; - if(i == ctx->Const.MaxTextureUnits){ + if (i == ctx->Const.MaxTextureUnits) { fprintf(stderr, "\tno free texcoord found...\n"); exit(0); } @@ -1417,84 +1521,97 @@ void r300_setup_rs_unit(GLcontext *ctx) InputsRead &= ~FRAG_BIT_WPOS; } - for (i=0;iConst.MaxTextureUnits;i++) { - r300->hw.ri.cmd[R300_RI_INTERP_0+i] = 0 - | R300_RS_INTERP_USED - | (in_texcoords << R300_RS_INTERP_SRC_SHIFT) - | interp_magic[i]; + for (i = 0; i < ctx->Const.MaxTextureUnits; i++) { + r300->hw.ri.cmd[R300_RI_INTERP_0 + i] = 0 + | R300_RS_INTERP_USED + | (in_texcoords << R300_RS_INTERP_SRC_SHIFT) + | interp_magic[i]; r300->hw.rr.cmd[R300_RR_ROUTE_0 + fp_reg] = 0; - if (InputsRead & (FRAG_BIT_TEX0<state.texture.tc_count != 0); - r300->hw.rr.cmd[R300_RR_ROUTE_0 + fp_reg] |= - R300_RS_ROUTE_ENABLE - | i /* source INTERP */ - | (fp_reg << R300_RS_ROUTE_DEST_SHIFT); + r300->hw.rr.cmd[R300_RR_ROUTE_0 + fp_reg] |= R300_RS_ROUTE_ENABLE | i /* source INTERP */ + | (fp_reg << R300_RS_ROUTE_DEST_SHIFT); high_rr = fp_reg; - if (!R300_OUTPUTS_WRITTEN_TEST( OutputsWritten, VERT_RESULT_TEX0+i, _TNL_ATTRIB_TEX(i) )) { + if (!R300_OUTPUTS_WRITTEN_TEST + (OutputsWritten, VERT_RESULT_TEX0 + i, + _TNL_ATTRIB_TEX(i))) { /* Passing invalid data here can lock the GPU. */ - WARN_ONCE("fragprog wants coords for tex%d, vp doesn't provide them!\n", i); + WARN_ONCE + ("fragprog wants coords for tex%d, vp doesn't provide them!\n", + i); //_mesa_print_program(&CURRENT_VERTEX_SHADER(ctx)->Base); //exit(-1); } - InputsRead &= ~(FRAG_BIT_TEX0<Base); //exit(-1); } r300->hw.rr.cmd[R300_RR_ROUTE_0] |= 0 - | R300_RS_ROUTE_0_COLOR - | (fp_reg++ << R300_RS_ROUTE_0_COLOR_DEST_SHIFT); + | R300_RS_ROUTE_0_COLOR + | (fp_reg++ << R300_RS_ROUTE_0_COLOR_DEST_SHIFT); InputsRead &= ~FRAG_BIT_COL0; col_interp_nr++; } - out: + out: if (InputsRead & FRAG_BIT_COL1) { - if (!R300_OUTPUTS_WRITTEN_TEST( OutputsWritten, VERT_RESULT_COL1, _TNL_ATTRIB_COLOR1 )) { - WARN_ONCE("fragprog wants col1, vp doesn't provide it\n"); + if (!R300_OUTPUTS_WRITTEN_TEST + (OutputsWritten, VERT_RESULT_COL1, + _TNL_ATTRIB_COLOR1)) { + WARN_ONCE + ("fragprog wants col1, vp doesn't provide it\n"); //exit(-1); } - r300->hw.rr.cmd[R300_RR_ROUTE_1] |= R300_RS_ROUTE_1_UNKNOWN11 - | R300_RS_ROUTE_1_COLOR1 - | (fp_reg++ << R300_RS_ROUTE_1_COLOR1_DEST_SHIFT); + r300->hw.rr.cmd[R300_RR_ROUTE_1] |= + R300_RS_ROUTE_1_UNKNOWN11 | R300_RS_ROUTE_1_COLOR1 | + (fp_reg++ << R300_RS_ROUTE_1_COLOR1_DEST_SHIFT); InputsRead &= ~FRAG_BIT_COL1; - if (high_rr < 1) high_rr = 1; + if (high_rr < 1) + high_rr = 1; col_interp_nr++; } /* Need at least one. This might still lock as the values are undefined... */ if (in_texcoords == 0 && col_interp_nr == 0) { r300->hw.rr.cmd[R300_RR_ROUTE_0] |= 0 - | R300_RS_ROUTE_0_COLOR - | (fp_reg++ << R300_RS_ROUTE_0_COLOR_DEST_SHIFT); + | R300_RS_ROUTE_0_COLOR + | (fp_reg++ << R300_RS_ROUTE_0_COLOR_DEST_SHIFT); col_interp_nr++; } r300->hw.rc.cmd[1] = 0 - | (in_texcoords << R300_RS_CNTL_TC_CNT_SHIFT) - | (col_interp_nr << R300_RS_CNTL_CI_CNT_SHIFT) - | R300_RS_CNTL_0_UNKNOWN_18; + | (in_texcoords << R300_RS_CNTL_TC_CNT_SHIFT) + | (col_interp_nr << R300_RS_CNTL_CI_CNT_SHIFT) + | R300_RS_CNTL_0_UNKNOWN_18; assert(high_rr >= 0); - r300->hw.rr.cmd[R300_RR_CMD_0] = cmdpacket0(R300_RS_ROUTE_0, high_rr+1); + r300->hw.rr.cmd[R300_RR_CMD_0] = + cmdpacket0(R300_RS_ROUTE_0, high_rr + 1); r300->hw.rc.cmd[2] = 0xC0 | high_rr; if (InputsRead) - WARN_ONCE("Don't know how to satisfy InputsRead=0x%08x\n", InputsRead); + WARN_ONCE("Don't know how to satisfy InputsRead=0x%08x\n", + InputsRead); } #define vpucount(ptr) (((drm_r300_cmd_header_t*)(ptr))->vpu.count) @@ -1506,39 +1623,55 @@ void r300_setup_rs_unit(GLcontext *ctx) if(_nc>_p->vpu.count)_p->vpu.count=_nc;\ }while(0) -void static inline setup_vertex_shader_fragment(r300ContextPtr r300, int dest, struct r300_vertex_shader_fragment *vsf) +void static inline setup_vertex_shader_fragment(r300ContextPtr r300, + int dest, + struct + r300_vertex_shader_fragment + *vsf) { int i; - if(vsf->length==0)return; + if (vsf->length == 0) + return; - if(vsf->length & 0x3){ - fprintf(stderr,"VERTEX_SHADER_FRAGMENT must have length divisible by 4\n"); + if (vsf->length & 0x3) { + fprintf(stderr, + "VERTEX_SHADER_FRAGMENT must have length divisible by 4\n"); exit(-1); - } + } - switch((dest>>8) & 0xf){ + switch ((dest >> 8) & 0xf) { case 0: R300_STATECHANGE(r300, vpi); - for(i=0;ilength;i++) - r300->hw.vpi.cmd[R300_VPI_INSTR_0+i+4*(dest & 0xff)]=(vsf->body.d[i]); - bump_vpu_count(r300->hw.vpi.cmd, vsf->length+4*(dest & 0xff)); + for (i = 0; i < vsf->length; i++) + r300->hw.vpi.cmd[R300_VPI_INSTR_0 + i + + 4 * (dest & 0xff)] = + (vsf->body.d[i]); + bump_vpu_count(r300->hw.vpi.cmd, + vsf->length + 4 * (dest & 0xff)); break; case 2: R300_STATECHANGE(r300, vpp); - for(i=0;ilength;i++) - r300->hw.vpp.cmd[R300_VPP_PARAM_0+i+4*(dest & 0xff)]=(vsf->body.d[i]); - bump_vpu_count(r300->hw.vpp.cmd, vsf->length+4*(dest & 0xff)); + for (i = 0; i < vsf->length; i++) + r300->hw.vpp.cmd[R300_VPP_PARAM_0 + i + + 4 * (dest & 0xff)] = + (vsf->body.d[i]); + bump_vpu_count(r300->hw.vpp.cmd, + vsf->length + 4 * (dest & 0xff)); break; case 4: R300_STATECHANGE(r300, vps); - for(i=0;ilength;i++) - r300->hw.vps.cmd[1+i+4*(dest & 0xff)]=(vsf->body.d[i]); - bump_vpu_count(r300->hw.vps.cmd, vsf->length+4*(dest & 0xff)); + for (i = 0; i < vsf->length; i++) + r300->hw.vps.cmd[1 + i + 4 * (dest & 0xff)] = + (vsf->body.d[i]); + bump_vpu_count(r300->hw.vps.cmd, + vsf->length + 4 * (dest & 0xff)); break; default: - fprintf(stderr, "%s:%s don't know how to handle dest %04x\n", __FILE__, __FUNCTION__, dest); + fprintf(stderr, + "%s:%s don't know how to handle dest %04x\n", + __FILE__, __FUNCTION__, dest); exit(-1); } } @@ -1557,19 +1690,19 @@ static void r300GenerateSimpleVertexShader(r300ContextPtr r300) GLuint o_reg = 0; /* Allocate parameters */ - r300->state.vap_param.transform_offset=0x0; /* transform matrix */ - r300->state.vertex_shader.param_offset=0x0; - r300->state.vertex_shader.param_count=0x4; /* 4 vector values - 4x4 matrix */ + r300->state.vap_param.transform_offset = 0x0; /* transform matrix */ + r300->state.vertex_shader.param_offset = 0x0; + r300->state.vertex_shader.param_count = 0x4; /* 4 vector values - 4x4 matrix */ - r300->state.vertex_shader.program_start=0x0; - r300->state.vertex_shader.unknown_ptr1=0x4; /* magic value ? */ - r300->state.vertex_shader.program_end=0x0; + r300->state.vertex_shader.program_start = 0x0; + r300->state.vertex_shader.unknown_ptr1 = 0x4; /* magic value ? */ + r300->state.vertex_shader.program_end = 0x0; - r300->state.vertex_shader.unknown_ptr2=0x0; /* magic value */ - r300->state.vertex_shader.unknown_ptr3=0x4; /* magic value */ + r300->state.vertex_shader.unknown_ptr2 = 0x0; /* magic value */ + r300->state.vertex_shader.unknown_ptr3 = 0x4; /* magic value */ - r300->state.vertex_shader.unknown1.length=0; - r300->state.vertex_shader.unknown2.length=0; + r300->state.vertex_shader.unknown1.length = 0; + r300->state.vertex_shader.unknown2.length = 0; #define WRITE_OP(oper,source1,source2,source3) {\ r300->state.vertex_shader.program.body.i[r300->state.vertex_shader.program_end].op=(oper); \ @@ -1579,118 +1712,150 @@ static void r300GenerateSimpleVertexShader(r300ContextPtr r300) r300->state.vertex_shader.program_end++; \ } - for (i = VERT_ATTRIB_POS; i < VERT_ATTRIB_MAX; i++) if (r300->state.sw_tcl_inputs[i] != -1) { - WRITE_OP( - EASY_VSF_OP(MUL, o_reg++, ALL, RESULT), - VSF_REG(r300->state.sw_tcl_inputs[i]), - VSF_ATTR_UNITY(r300->state.sw_tcl_inputs[i]), - VSF_UNITY(r300->state.sw_tcl_inputs[i]) - ) + WRITE_OP(EASY_VSF_OP(MUL, o_reg++, ALL, RESULT), + VSF_REG(r300->state.sw_tcl_inputs[i]), + VSF_ATTR_UNITY(r300->state. + sw_tcl_inputs[i]), + VSF_UNITY(r300->state.sw_tcl_inputs[i]) + ) } - r300->state.vertex_shader.program_end--; /* r300 wants program length to be one more - no idea why */ - r300->state.vertex_shader.program.length=(r300->state.vertex_shader.program_end+1)*4; + r300->state.vertex_shader.program_end--; /* r300 wants program length to be one more - no idea why */ + r300->state.vertex_shader.program.length = + (r300->state.vertex_shader.program_end + 1) * 4; - r300->state.vertex_shader.unknown_ptr1=r300->state.vertex_shader.program_end; /* magic value ? */ - r300->state.vertex_shader.unknown_ptr2=r300->state.vertex_shader.program_end; /* magic value ? */ - r300->state.vertex_shader.unknown_ptr3=r300->state.vertex_shader.program_end; /* magic value ? */ + r300->state.vertex_shader.unknown_ptr1 = r300->state.vertex_shader.program_end; /* magic value ? */ + r300->state.vertex_shader.unknown_ptr2 = r300->state.vertex_shader.program_end; /* magic value ? */ + r300->state.vertex_shader.unknown_ptr3 = r300->state.vertex_shader.program_end; /* magic value ? */ } - void r300SetupVertexShader(r300ContextPtr rmesa) { - GLcontext* ctx = rmesa->radeon.glCtx; + GLcontext *ctx = rmesa->radeon.glCtx; /* Reset state, in case we don't use something */ - ((drm_r300_cmd_header_t*)rmesa->hw.vpp.cmd)->vpu.count = 0; - ((drm_r300_cmd_header_t*)rmesa->hw.vpi.cmd)->vpu.count = 0; - ((drm_r300_cmd_header_t*)rmesa->hw.vps.cmd)->vpu.count = 0; + ((drm_r300_cmd_header_t *) rmesa->hw.vpp.cmd)->vpu.count = 0; + ((drm_r300_cmd_header_t *) rmesa->hw.vpi.cmd)->vpu.count = 0; + ((drm_r300_cmd_header_t *) rmesa->hw.vps.cmd)->vpu.count = 0; /* Not sure why this doesnt work... 0x400 area might have something to do with pixel shaders as it appears right after pfs programming. 0x406 is set to { 0.0, 0.0, 1.0, 0.0 } most of the time but should change with smooth points and in other rare cases. */ //setup_vertex_shader_fragment(rmesa, 0x406, &unk4); - if(hw_tcl_on && ((struct r300_vertex_program *)CURRENT_VERTEX_SHADER(ctx))->translated){ + if (hw_tcl_on + && ((struct r300_vertex_program *)CURRENT_VERTEX_SHADER(ctx))-> + translated) { r300SetupVertexProgram(rmesa); - return ; + return; } /* This needs to be replaced by vertex shader generation code */ r300GenerateSimpleVertexShader(rmesa); - setup_vertex_shader_fragment(rmesa, VSF_DEST_PROGRAM, &(rmesa->state.vertex_shader.program)); + setup_vertex_shader_fragment(rmesa, VSF_DEST_PROGRAM, + &(rmesa->state.vertex_shader. + program)); #if 0 - setup_vertex_shader_fragment(rmesa, VSF_DEST_UNKNOWN1, &(rmesa->state.vertex_shader.unknown1)); - setup_vertex_shader_fragment(rmesa, VSF_DEST_UNKNOWN2, &(rmesa->state.vertex_shader.unknown2)); + setup_vertex_shader_fragment(rmesa, VSF_DEST_UNKNOWN1, + &(rmesa->state.vertex_shader. + unknown1)); + setup_vertex_shader_fragment(rmesa, VSF_DEST_UNKNOWN2, + &(rmesa->state.vertex_shader. + unknown2)); #endif R300_STATECHANGE(rmesa, pvs); - rmesa->hw.pvs.cmd[R300_PVS_CNTL_1]=(rmesa->state.vertex_shader.program_start << R300_PVS_CNTL_1_PROGRAM_START_SHIFT) - | (rmesa->state.vertex_shader.unknown_ptr1 << R300_PVS_CNTL_1_POS_END_SHIFT) - | (rmesa->state.vertex_shader.program_end << R300_PVS_CNTL_1_PROGRAM_END_SHIFT); - rmesa->hw.pvs.cmd[R300_PVS_CNTL_2]=(rmesa->state.vertex_shader.param_offset << R300_PVS_CNTL_2_PARAM_OFFSET_SHIFT) - | (rmesa->state.vertex_shader.param_count << R300_PVS_CNTL_2_PARAM_COUNT_SHIFT); - rmesa->hw.pvs.cmd[R300_PVS_CNTL_3]=(rmesa->state.vertex_shader.unknown_ptr2 << R300_PVS_CNTL_3_PROGRAM_UNKNOWN_SHIFT) - | (rmesa->state.vertex_shader.unknown_ptr3 << 0); + rmesa->hw.pvs.cmd[R300_PVS_CNTL_1] = + (rmesa->state.vertex_shader. + program_start << R300_PVS_CNTL_1_PROGRAM_START_SHIFT) + | (rmesa->state.vertex_shader. + unknown_ptr1 << R300_PVS_CNTL_1_POS_END_SHIFT) + | (rmesa->state.vertex_shader. + program_end << R300_PVS_CNTL_1_PROGRAM_END_SHIFT); + rmesa->hw.pvs.cmd[R300_PVS_CNTL_2] = + (rmesa->state.vertex_shader. + param_offset << R300_PVS_CNTL_2_PARAM_OFFSET_SHIFT) + | (rmesa->state.vertex_shader. + param_count << R300_PVS_CNTL_2_PARAM_COUNT_SHIFT); + rmesa->hw.pvs.cmd[R300_PVS_CNTL_3] = + (rmesa->state.vertex_shader. + unknown_ptr2 << R300_PVS_CNTL_3_PROGRAM_UNKNOWN_SHIFT) + | (rmesa->state.vertex_shader.unknown_ptr3 << 0); /* This is done for vertex shader fragments, but also needs to be done for vap_pvs, - so I leave it as a reminder */ + so I leave it as a reminder */ #if 0 - reg_start(R300_VAP_PVS_WAITIDLE,0); - e32(0x00000000); + reg_start(R300_VAP_PVS_WAITIDLE, 0); + e32(0x00000000); #endif } void r300SetupVertexProgram(r300ContextPtr rmesa) { - GLcontext* ctx = rmesa->radeon.glCtx; + GLcontext *ctx = rmesa->radeon.glCtx; int inst_count; int param_count; - struct r300_vertex_program *prog=(struct r300_vertex_program *)CURRENT_VERTEX_SHADER(ctx); + struct r300_vertex_program *prog = + (struct r300_vertex_program *)CURRENT_VERTEX_SHADER(ctx); - - ((drm_r300_cmd_header_t*)rmesa->hw.vpp.cmd)->vpu.count = 0; + ((drm_r300_cmd_header_t *) rmesa->hw.vpp.cmd)->vpu.count = 0; R300_STATECHANGE(rmesa, vpp); - param_count = r300VertexProgUpdateParams(ctx, (struct r300_vertex_program_cont *)ctx->VertexProgram._Current/*prog*/, (float *)&rmesa->hw.vpp.cmd[R300_VPP_PARAM_0]); + param_count = + r300VertexProgUpdateParams(ctx, + (struct r300_vertex_program_cont *) + ctx->VertexProgram. + _Current /*prog */ , + (float *)&rmesa->hw.vpp. + cmd[R300_VPP_PARAM_0]); bump_vpu_count(rmesa->hw.vpp.cmd, param_count); param_count /= 4; /* Reset state, in case we don't use something */ - ((drm_r300_cmd_header_t*)rmesa->hw.vpi.cmd)->vpu.count = 0; - ((drm_r300_cmd_header_t*)rmesa->hw.vps.cmd)->vpu.count = 0; + ((drm_r300_cmd_header_t *) rmesa->hw.vpi.cmd)->vpu.count = 0; + ((drm_r300_cmd_header_t *) rmesa->hw.vps.cmd)->vpu.count = 0; - setup_vertex_shader_fragment(rmesa, VSF_DEST_PROGRAM, &(prog->program)); + setup_vertex_shader_fragment(rmesa, VSF_DEST_PROGRAM, + &(prog->program)); #if 0 - setup_vertex_shader_fragment(rmesa, VSF_DEST_UNKNOWN1, &(rmesa->state.vertex_shader.unknown1)); - setup_vertex_shader_fragment(rmesa, VSF_DEST_UNKNOWN2, &(rmesa->state.vertex_shader.unknown2)); + setup_vertex_shader_fragment(rmesa, VSF_DEST_UNKNOWN1, + &(rmesa->state.vertex_shader. + unknown1)); + setup_vertex_shader_fragment(rmesa, VSF_DEST_UNKNOWN2, + &(rmesa->state.vertex_shader. + unknown2)); #endif - inst_count=prog->program.length/4 - 1; + inst_count = prog->program.length / 4 - 1; R300_STATECHANGE(rmesa, pvs); - rmesa->hw.pvs.cmd[R300_PVS_CNTL_1]=(0 << R300_PVS_CNTL_1_PROGRAM_START_SHIFT) - | (inst_count/*pos_end*/ << R300_PVS_CNTL_1_POS_END_SHIFT) - | (inst_count << R300_PVS_CNTL_1_PROGRAM_END_SHIFT); - rmesa->hw.pvs.cmd[R300_PVS_CNTL_2]=(0 << R300_PVS_CNTL_2_PARAM_OFFSET_SHIFT) - | (param_count << R300_PVS_CNTL_2_PARAM_COUNT_SHIFT); - rmesa->hw.pvs.cmd[R300_PVS_CNTL_3]=(0/*rmesa->state.vertex_shader.unknown_ptr2*/ << R300_PVS_CNTL_3_PROGRAM_UNKNOWN_SHIFT) - | (inst_count /*rmesa->state.vertex_shader.unknown_ptr3*/ << 0); + rmesa->hw.pvs.cmd[R300_PVS_CNTL_1] = + (0 << R300_PVS_CNTL_1_PROGRAM_START_SHIFT) + | (inst_count /*pos_end */ << R300_PVS_CNTL_1_POS_END_SHIFT) + | (inst_count << R300_PVS_CNTL_1_PROGRAM_END_SHIFT); + rmesa->hw.pvs.cmd[R300_PVS_CNTL_2] = + (0 << R300_PVS_CNTL_2_PARAM_OFFSET_SHIFT) + | (param_count << R300_PVS_CNTL_2_PARAM_COUNT_SHIFT); + rmesa->hw.pvs.cmd[R300_PVS_CNTL_3] = + (0 /*rmesa->state.vertex_shader.unknown_ptr2 */ << + R300_PVS_CNTL_3_PROGRAM_UNKNOWN_SHIFT) + | (inst_count /*rmesa->state.vertex_shader.unknown_ptr3 */ << + 0); /* This is done for vertex shader fragments, but also needs to be done for vap_pvs, - so I leave it as a reminder */ + so I leave it as a reminder */ #if 0 - reg_start(R300_VAP_PVS_WAITIDLE,0); - e32(0x00000000); + reg_start(R300_VAP_PVS_WAITIDLE, 0); + e32(0x00000000); #endif } -extern void _tnl_UpdateFixedFunctionProgram( GLcontext *ctx ); +extern void _tnl_UpdateFixedFunctionProgram(GLcontext * ctx); extern int future_hw_tcl_on; void r300UpdateShaders(r300ContextPtr rmesa) @@ -1705,26 +1870,30 @@ void r300UpdateShaders(r300ContextPtr rmesa) rmesa->NewGLState = 0; for (i = _TNL_FIRST_MAT; i <= _TNL_LAST_MAT; i++) { - rmesa->temp_attrib[i] = TNL_CONTEXT(ctx)->vb.AttribPtr[i]; - TNL_CONTEXT(ctx)->vb.AttribPtr[i] = &rmesa->dummy_attrib[i]; + rmesa->temp_attrib[i] = + TNL_CONTEXT(ctx)->vb.AttribPtr[i]; + TNL_CONTEXT(ctx)->vb.AttribPtr[i] = + &rmesa->dummy_attrib[i]; } _tnl_UpdateFixedFunctionProgram(ctx); for (i = _TNL_FIRST_MAT; i <= _TNL_LAST_MAT; i++) { - TNL_CONTEXT(ctx)->vb.AttribPtr[i] = rmesa->temp_attrib[i]; + TNL_CONTEXT(ctx)->vb.AttribPtr[i] = + rmesa->temp_attrib[i]; } r300_select_vertex_shader(rmesa); - vp = (struct r300_vertex_program *)CURRENT_VERTEX_SHADER(ctx); + vp = (struct r300_vertex_program *) + CURRENT_VERTEX_SHADER(ctx); /*if (vp->translated == GL_FALSE) - r300_translate_vertex_shader(vp);*/ + r300_translate_vertex_shader(vp); */ if (vp->translated == GL_FALSE) { fprintf(stderr, "Failing back to sw-tcl\n"); hw_tcl_on = future_hw_tcl_on = 0; r300ResetHwState(rmesa); - return ; + return; } r300UpdateStateParameters(ctx, _NEW_PROGRAM); } @@ -1742,7 +1911,7 @@ void r300UpdateShaderStates(r300ContextPtr rmesa) r300_setup_textures(ctx); if ((rmesa->radeon.radeonScreen->chip_flags & RADEON_CHIPSET_TCL)) - r300SetupVertexShader(rmesa); + r300SetupVertexShader(rmesa); r300_setup_rs_unit(ctx); } @@ -1758,20 +1927,21 @@ static unsigned int r300PackFloat24(float f) int exponent; unsigned int float24 = 0; - if (f == 0.0) return 0; + if (f == 0.0) + return 0; mantissa = frexpf(f, &exponent); /* Handle -ve */ if (mantissa < 0) { - float24 |= (1<<23); + float24 |= (1 << 23); mantissa = mantissa * -1.0; } /* Handle exponent, bias of 63 */ exponent += 62; float24 |= (exponent << 16); /* Kill 7 LSB of mantissa */ - float24 |= (r300PackFloat32(mantissa) & 0x7FFFFF) >> 7; + float24 |= (r300PackFloat32(mantissa) & 0x7FFFFF) >> 7; return float24; } @@ -1779,20 +1949,19 @@ static unsigned int r300PackFloat24(float f) void r300SetupPixelShader(r300ContextPtr rmesa) { GLcontext *ctx = rmesa->radeon.glCtx; - struct r300_fragment_program *rp = - (struct r300_fragment_program *) - (char *)ctx->FragmentProgram._Current; - int i,k; + struct r300_fragment_program *rp = (struct r300_fragment_program *) + (char *)ctx->FragmentProgram._Current; + int i, k; - if (!rp) /* should only happenen once, just after context is created */ + if (!rp) /* should only happenen once, just after context is created */ return; r300_translate_fragment_shader(rmesa, rp); if (!rp->translated) { - fprintf(stderr, "%s: No valid fragment shader, exiting\n", __func__); + fprintf(stderr, "%s: No valid fragment shader, exiting\n", + __func__); return; } - #define OUTPUT_FIELD(st, reg, field) \ R300_STATECHANGE(rmesa, st); \ for(i=0;i<=rp->alu_end;i++) \ @@ -1807,40 +1976,49 @@ void r300SetupPixelShader(r300ContextPtr rmesa) R300_STATECHANGE(rmesa, fp); /* I just want to say, the way these nodes are stored.. weird.. */ - for (i=0,k=(4-(rp->cur_node+1));i<4;i++,k++) { - if (i<(rp->cur_node+1)) { - rmesa->hw.fp.cmd[R300_FP_NODE0+k]= - (rp->node[i].alu_offset << R300_PFS_NODE_ALU_OFFSET_SHIFT) - | (rp->node[i].alu_end << R300_PFS_NODE_ALU_END_SHIFT) - | (rp->node[i].tex_offset << R300_PFS_NODE_TEX_OFFSET_SHIFT) - | (rp->node[i].tex_end << R300_PFS_NODE_TEX_END_SHIFT) - | rp->node[i].flags; /* ( (k==3) ? R300_PFS_NODE_LAST_NODE : 0); */ + for (i = 0, k = (4 - (rp->cur_node + 1)); i < 4; i++, k++) { + if (i < (rp->cur_node + 1)) { + rmesa->hw.fp.cmd[R300_FP_NODE0 + k] = + (rp->node[i]. + alu_offset << R300_PFS_NODE_ALU_OFFSET_SHIFT) + | (rp->node[i]. + alu_end << R300_PFS_NODE_ALU_END_SHIFT) + | (rp->node[i]. + tex_offset << + R300_PFS_NODE_TEX_OFFSET_SHIFT) + | (rp->node[i]. + tex_end << R300_PFS_NODE_TEX_END_SHIFT) + | rp->node[i].flags; /* ( (k==3) ? R300_PFS_NODE_LAST_NODE : 0); */ } else { - rmesa->hw.fp.cmd[R300_FP_NODE0+(3-i)] = 0; + rmesa->hw.fp.cmd[R300_FP_NODE0 + (3 - i)] = 0; } } - /* PFS_CNTL_0 */ - rmesa->hw.fp.cmd[R300_FP_CNTL0]= - rp->cur_node - | (rp->first_node_has_tex<<3); - /* PFS_CNTL_1 */ - rmesa->hw.fp.cmd[R300_FP_CNTL1]=rp->max_temp_idx; - /* PFS_CNTL_2 */ - rmesa->hw.fp.cmd[R300_FP_CNTL2]= - (rp->alu_offset << R300_PFS_CNTL_ALU_OFFSET_SHIFT) - | (rp->alu_end << R300_PFS_CNTL_ALU_END_SHIFT) - | (rp->tex_offset << R300_PFS_CNTL_TEX_OFFSET_SHIFT) - | (rp->tex_end << R300_PFS_CNTL_TEX_END_SHIFT); + /* PFS_CNTL_0 */ + rmesa->hw.fp.cmd[R300_FP_CNTL0] = + rp->cur_node | (rp->first_node_has_tex << 3); + /* PFS_CNTL_1 */ + rmesa->hw.fp.cmd[R300_FP_CNTL1] = rp->max_temp_idx; + /* PFS_CNTL_2 */ + rmesa->hw.fp.cmd[R300_FP_CNTL2] = + (rp->alu_offset << R300_PFS_CNTL_ALU_OFFSET_SHIFT) + | (rp->alu_end << R300_PFS_CNTL_ALU_END_SHIFT) + | (rp->tex_offset << R300_PFS_CNTL_TEX_OFFSET_SHIFT) + | (rp->tex_end << R300_PFS_CNTL_TEX_END_SHIFT); R300_STATECHANGE(rmesa, fpp); - for(i=0;iconst_nr;i++){ - rmesa->hw.fpp.cmd[R300_FPP_PARAM_0+4*i+0]=r300PackFloat24(rp->constant[i][0]); - rmesa->hw.fpp.cmd[R300_FPP_PARAM_0+4*i+1]=r300PackFloat24(rp->constant[i][1]); - rmesa->hw.fpp.cmd[R300_FPP_PARAM_0+4*i+2]=r300PackFloat24(rp->constant[i][2]); - rmesa->hw.fpp.cmd[R300_FPP_PARAM_0+4*i+3]=r300PackFloat24(rp->constant[i][3]); + for (i = 0; i < rp->const_nr; i++) { + rmesa->hw.fpp.cmd[R300_FPP_PARAM_0 + 4 * i + 0] = + r300PackFloat24(rp->constant[i][0]); + rmesa->hw.fpp.cmd[R300_FPP_PARAM_0 + 4 * i + 1] = + r300PackFloat24(rp->constant[i][1]); + rmesa->hw.fpp.cmd[R300_FPP_PARAM_0 + 4 * i + 2] = + r300PackFloat24(rp->constant[i][2]); + rmesa->hw.fpp.cmd[R300_FPP_PARAM_0 + 4 * i + 3] = + r300PackFloat24(rp->constant[i][3]); } - rmesa->hw.fpp.cmd[R300_FPP_CMD_0]=cmdpacket0(R300_PFS_PARAM_0_X, rp->const_nr*4); + rmesa->hw.fpp.cmd[R300_FPP_CMD_0] = + cmdpacket0(R300_PFS_PARAM_0_X, rp->const_nr * 4); } /** @@ -1863,7 +2041,7 @@ static void r300InvalidateState(GLcontext * ctx, GLuint new_state) r300UpdateStateParameters(ctx, new_state); #ifdef HW_VBOS - if(new_state & _NEW_ARRAY) + if (new_state & _NEW_ARRAY) r300->state.VB.lock_uptodate = GL_FALSE; #endif r300->NewGLState |= new_state; @@ -1874,28 +2052,28 @@ static void r300InvalidateState(GLcontext * ctx, GLuint new_state) */ void r300ResetHwState(r300ContextPtr r300) { - GLcontext* ctx = r300->radeon.glCtx; + GLcontext *ctx = r300->radeon.glCtx; int has_tcl = 1; if (!(r300->radeon.radeonScreen->chip_flags & RADEON_CHIPSET_TCL)) - has_tcl = 0; + has_tcl = 0; if (RADEON_DEBUG & DEBUG_STATE) fprintf(stderr, "%s\n", __FUNCTION__); - /* This is a place to initialize registers which - have bitfields accessed by different functions - and not all bits are used */ + /* This is a place to initialize registers which + have bitfields accessed by different functions + and not all bits are used */ - /* go and compute register values from GL state */ + /* go and compute register values from GL state */ r300UpdateWindow(ctx); r300ColorMask(ctx, - ctx->Color.ColorMask[RCOMP], - ctx->Color.ColorMask[GCOMP], - ctx->Color.ColorMask[BCOMP], - ctx->Color.ColorMask[ACOMP]); + ctx->Color.ColorMask[RCOMP], + ctx->Color.ColorMask[GCOMP], + ctx->Color.ColorMask[BCOMP], + ctx->Color.ColorMask[ACOMP]); r300Enable(ctx, GL_DEPTH_TEST, ctx->Depth.Test); r300DepthMask(ctx, ctx->Depth.Mask); @@ -1904,8 +2082,12 @@ void r300ResetHwState(r300ContextPtr r300) /* stencil */ r300Enable(ctx, GL_STENCIL_TEST, ctx->Stencil.Enabled); r300StencilMaskSeparate(ctx, 0, ctx->Stencil.WriteMask[0]); - r300StencilFuncSeparate(ctx, 0, ctx->Stencil.Function[0], ctx->Stencil.Ref[0], ctx->Stencil.ValueMask[0]); - r300StencilOpSeparate(ctx, 0, ctx->Stencil.FailFunc[0], ctx->Stencil.ZFailFunc[0], ctx->Stencil.ZPassFunc[0]); + r300StencilFuncSeparate(ctx, 0, ctx->Stencil.Function[0], + ctx->Stencil.Ref[0], + ctx->Stencil.ValueMask[0]); + r300StencilOpSeparate(ctx, 0, ctx->Stencil.FailFunc[0], + ctx->Stencil.ZFailFunc[0], + ctx->Stencil.ZPassFunc[0]); r300UpdateCulling(ctx); @@ -1916,20 +2098,19 @@ void r300ResetHwState(r300ContextPtr r300) r300AlphaFunc(ctx, ctx->Color.AlphaFunc, ctx->Color.AlphaRef); r300Enable(ctx, GL_ALPHA_TEST, ctx->Color.AlphaEnabled); - /* Initialize magic registers - TODO : learn what they really do, or get rid of - those we don't have to touch */ + /* Initialize magic registers + TODO : learn what they really do, or get rid of + those we don't have to touch */ if (!has_tcl) r300->hw.vap_cntl.cmd[1] = 0x0014045a; else - r300->hw.vap_cntl.cmd[1] = 0x0030045A; //0x0030065a /* Dangerous */ + r300->hw.vap_cntl.cmd[1] = 0x0030045A; //0x0030065a /* Dangerous */ r300->hw.vte.cmd[1] = R300_VPORT_X_SCALE_ENA - | R300_VPORT_X_OFFSET_ENA - | R300_VPORT_Y_SCALE_ENA - | R300_VPORT_Y_OFFSET_ENA - | R300_VPORT_Z_SCALE_ENA - | R300_VPORT_Z_OFFSET_ENA - | R300_VTX_W0_FMT; + | R300_VPORT_X_OFFSET_ENA + | R300_VPORT_Y_SCALE_ENA + | R300_VPORT_Y_OFFSET_ENA + | R300_VPORT_Z_SCALE_ENA + | R300_VPORT_Z_OFFSET_ENA | R300_VTX_W0_FMT; r300->hw.vte.cmd[2] = 0x00000008; r300->hw.unk2134.cmd[1] = 0x00FFFFFF; @@ -1959,31 +2140,34 @@ void r300ResetHwState(r300ContextPtr r300) r300->hw.unk2288.cmd[1] = R300_2288_RV350; r300->hw.gb_enable.cmd[1] = R300_GB_POINT_STUFF_ENABLE - | R300_GB_LINE_STUFF_ENABLE - | R300_GB_TRIANGLE_STUFF_ENABLE /*| R300_GB_UNK31*/; + | R300_GB_LINE_STUFF_ENABLE + | R300_GB_TRIANGLE_STUFF_ENABLE /*| R300_GB_UNK31 */ ; r300->hw.gb_misc.cmd[R300_GB_MISC_MSPOS_0] = 0x66666666; r300->hw.gb_misc.cmd[R300_GB_MISC_MSPOS_1] = 0x06666666; if ((r300->radeon.radeonScreen->chip_family == CHIP_FAMILY_R300) || - (r300->radeon.radeonScreen->chip_family == CHIP_FAMILY_R350)) - r300->hw.gb_misc.cmd[R300_GB_MISC_TILE_CONFIG] = R300_GB_TILE_ENABLE - | R300_GB_TILE_PIPE_COUNT_R300 - | R300_GB_TILE_SIZE_16; - else if (r300->radeon.radeonScreen->chip_family == CHIP_FAMILY_RV410) - r300->hw.gb_misc.cmd[R300_GB_MISC_TILE_CONFIG] = R300_GB_TILE_ENABLE - | R300_GB_TILE_PIPE_COUNT_RV410 - | R300_GB_TILE_SIZE_16; - else if (r300->radeon.radeonScreen->chip_family == CHIP_FAMILY_R420) - r300->hw.gb_misc.cmd[R300_GB_MISC_TILE_CONFIG] = R300_GB_TILE_ENABLE - | R300_GB_TILE_PIPE_COUNT_R420 - | R300_GB_TILE_SIZE_16; + (r300->radeon.radeonScreen->chip_family == CHIP_FAMILY_R350)) + r300->hw.gb_misc.cmd[R300_GB_MISC_TILE_CONFIG] = + R300_GB_TILE_ENABLE | R300_GB_TILE_PIPE_COUNT_R300 | + R300_GB_TILE_SIZE_16; + else if (r300->radeon.radeonScreen->chip_family == + CHIP_FAMILY_RV410) + r300->hw.gb_misc.cmd[R300_GB_MISC_TILE_CONFIG] = + R300_GB_TILE_ENABLE | R300_GB_TILE_PIPE_COUNT_RV410 | + R300_GB_TILE_SIZE_16; + else if (r300->radeon.radeonScreen->chip_family == + CHIP_FAMILY_R420) + r300->hw.gb_misc.cmd[R300_GB_MISC_TILE_CONFIG] = + R300_GB_TILE_ENABLE | R300_GB_TILE_PIPE_COUNT_R420 | + R300_GB_TILE_SIZE_16; else - r300->hw.gb_misc.cmd[R300_GB_MISC_TILE_CONFIG] = R300_GB_TILE_ENABLE - | R300_GB_TILE_PIPE_COUNT_RV300 - | R300_GB_TILE_SIZE_16; + r300->hw.gb_misc.cmd[R300_GB_MISC_TILE_CONFIG] = + R300_GB_TILE_ENABLE | R300_GB_TILE_PIPE_COUNT_RV300 | + R300_GB_TILE_SIZE_16; /* set to 0 when fog is disabled? */ - r300->hw.gb_misc.cmd[R300_GB_MISC_SELECT] = R300_GB_FOG_SELECT_1_1_W; - r300->hw.gb_misc.cmd[R300_GB_MISC_AA_CONFIG] = R300_AA_DISABLE; /* No antialiasing */ + r300->hw.gb_misc.cmd[R300_GB_MISC_SELECT] = + R300_GB_FOG_SELECT_1_1_W; + r300->hw.gb_misc.cmd[R300_GB_MISC_AA_CONFIG] = R300_AA_DISABLE; /* No antialiasing */ r300->hw.unk4200.cmd[1] = r300PackFloat32(0.0); r300->hw.unk4200.cmd[2] = r300PackFloat32(0.0); @@ -2015,13 +2199,13 @@ void r300ResetHwState(r300ContextPtr r300) r300->hw.polygon_mode.cmd[3] = 0x00000000; r300->hw.zbias_cntl.cmd[1] = 0x00000000; - r300PolygonOffset(ctx, ctx->Polygon.OffsetFactor, ctx->Polygon.OffsetUnits); + r300PolygonOffset(ctx, ctx->Polygon.OffsetFactor, + ctx->Polygon.OffsetUnits); r300Enable(ctx, GL_POLYGON_OFFSET_FILL, ctx->Polygon.OffsetFill); r300->hw.unk42C0.cmd[1] = 0x4B7FFFFF; r300->hw.unk42C0.cmd[2] = 0x00000000; - r300->hw.unk43A4.cmd[1] = 0x0000001C; r300->hw.unk43A4.cmd[2] = 0x2DA49525; @@ -2034,12 +2218,12 @@ void r300ResetHwState(r300ContextPtr r300) r300->hw.unk46A4.cmd[5] = 0x00000001; r300Enable(ctx, GL_FOG, ctx->Fog.Enabled); - ctx->Driver.Fogfv( ctx, GL_FOG_MODE, NULL ); - ctx->Driver.Fogfv( ctx, GL_FOG_DENSITY, &ctx->Fog.Density ); - ctx->Driver.Fogfv( ctx, GL_FOG_START, &ctx->Fog.Start ); - ctx->Driver.Fogfv( ctx, GL_FOG_END, &ctx->Fog.End ); - ctx->Driver.Fogfv( ctx, GL_FOG_COLOR, ctx->Fog.Color ); - ctx->Driver.Fogfv( ctx, GL_FOG_COORDINATE_SOURCE_EXT, NULL ); + ctx->Driver.Fogfv(ctx, GL_FOG_MODE, NULL); + ctx->Driver.Fogfv(ctx, GL_FOG_DENSITY, &ctx->Fog.Density); + ctx->Driver.Fogfv(ctx, GL_FOG_START, &ctx->Fog.Start); + ctx->Driver.Fogfv(ctx, GL_FOG_END, &ctx->Fog.End); + ctx->Driver.Fogfv(ctx, GL_FOG_COLOR, ctx->Fog.Color); + ctx->Driver.Fogfv(ctx, GL_FOG_COORDINATE_SOURCE_EXT, NULL); r300->hw.at.cmd[R300_AT_UNKNOWN] = 0; r300->hw.unk4BD8.cmd[1] = 0; @@ -2051,12 +2235,15 @@ void r300ResetHwState(r300ContextPtr r300) r300->hw.blend_color.cmd[3] = 0; /* Again, r300ClearBuffer uses this */ - r300->hw.cb.cmd[R300_CB_OFFSET] = r300->radeon.state.color.drawOffset + - r300->radeon.radeonScreen->fbLocation; - r300->hw.cb.cmd[R300_CB_PITCH] = r300->radeon.state.color.drawPitch; + r300->hw.cb.cmd[R300_CB_OFFSET] = + r300->radeon.state.color.drawOffset + + r300->radeon.radeonScreen->fbLocation; + r300->hw.cb.cmd[R300_CB_PITCH] = + r300->radeon.state.color.drawPitch; if (r300->radeon.radeonScreen->cpp == 4) - r300->hw.cb.cmd[R300_CB_PITCH] |= R300_COLOR_FORMAT_ARGB8888; + r300->hw.cb.cmd[R300_CB_PITCH] |= + R300_COLOR_FORMAT_ARGB8888; else r300->hw.cb.cmd[R300_CB_PITCH] |= R300_COLOR_FORMAT_RGB565; @@ -2080,11 +2267,13 @@ void r300ResetHwState(r300ContextPtr r300) switch (ctx->Visual.depthBits) { case 16: - r300->hw.zstencil_format.cmd[1] = R300_DEPTH_FORMAT_16BIT_INT_Z; - break; + r300->hw.zstencil_format.cmd[1] = + R300_DEPTH_FORMAT_16BIT_INT_Z; + break; case 24: - r300->hw.zstencil_format.cmd[1] = R300_DEPTH_FORMAT_24BIT_INT_Z; - break; + r300->hw.zstencil_format.cmd[1] = + R300_DEPTH_FORMAT_24BIT_INT_Z; + break; default: fprintf(stderr, "Error: Unsupported depth %d... exiting\n", ctx->Visual.depthBits); @@ -2098,16 +2287,18 @@ void r300ResetHwState(r300ContextPtr r300) r300->hw.zstencil_format.cmd[4] = 0x00000000; r300->hw.zb.cmd[R300_ZB_OFFSET] = - r300->radeon.radeonScreen->depthOffset + - r300->radeon.radeonScreen->fbLocation; - r300->hw.zb.cmd[R300_ZB_PITCH] = r300->radeon.radeonScreen->depthPitch; + r300->radeon.radeonScreen->depthOffset + + r300->radeon.radeonScreen->fbLocation; + r300->hw.zb.cmd[R300_ZB_PITCH] = + r300->radeon.radeonScreen->depthPitch; - if (r300->radeon.sarea->tiling_enabled) { + if (r300->radeon.sarea->tiling_enabled) { /* Turn off when clearing buffers ? */ r300->hw.zb.cmd[R300_ZB_PITCH] |= R300_DEPTH_TILE_ENABLE; if (ctx->Visual.depthBits == 24) - r300->hw.zb.cmd[R300_ZB_PITCH] |= R300_DEPTH_MICROTILE_ENABLE; + r300->hw.zb.cmd[R300_ZB_PITCH] |= + R300_DEPTH_MICROTILE_ENABLE; } r300->hw.unk4F28.cmd[1] = 0; @@ -2120,18 +2311,16 @@ void r300ResetHwState(r300ContextPtr r300) r300->hw.unk4F54.cmd[1] = 0; if (has_tcl) { - r300->hw.vps.cmd[R300_VPS_ZERO_0] = 0; - r300->hw.vps.cmd[R300_VPS_ZERO_1] = 0; - r300->hw.vps.cmd[R300_VPS_POINTSIZE] = r300PackFloat32(1.0); - r300->hw.vps.cmd[R300_VPS_ZERO_3] = 0; + r300->hw.vps.cmd[R300_VPS_ZERO_0] = 0; + r300->hw.vps.cmd[R300_VPS_ZERO_1] = 0; + r300->hw.vps.cmd[R300_VPS_POINTSIZE] = + r300PackFloat32(1.0); + r300->hw.vps.cmd[R300_VPS_ZERO_3] = 0; } - //END: TODO r300->hw.all_dirty = GL_TRUE; } - - /** * Calculate initial hardware state and register state functions. * Assumes that the command buffer and state atoms have been @@ -2163,14 +2352,14 @@ void r300InitState(r300ContextPtr r300) /* Only have hw stencil when depth buffer is 24 bits deep */ r300->state.stencil.hw_stencil = (ctx->Visual.stencilBits > 0 && - ctx->Visual.depthBits == 24); + ctx->Visual.depthBits == 24); memset(&(r300->state.texture), 0, sizeof(r300->state.texture)); r300ResetHwState(r300); } -static void r300RenderMode( GLcontext *ctx, GLenum mode ) +static void r300RenderMode(GLcontext * ctx, GLenum mode) { r300ContextPtr rmesa = R300_CONTEXT(ctx); (void)rmesa; @@ -2180,7 +2369,7 @@ static void r300RenderMode( GLcontext *ctx, GLenum mode ) /** * Initialize driver's state callback functions */ -void r300InitStateFuncs(struct dd_function_table* functions) +void r300InitStateFuncs(struct dd_function_table *functions) { radeonInitStateFuncs(functions); @@ -2213,6 +2402,5 @@ void r300InitStateFuncs(struct dd_function_table* functions) functions->PolygonOffset = r300PolygonOffset; functions->PolygonMode = r300PolygonMode; - functions->RenderMode = r300RenderMode; + functions->RenderMode = r300RenderMode; } - diff --git a/src/mesa/drivers/dri/r300/r300_state.h b/src/mesa/drivers/dri/r300/r300_state.h index 52e606f2416..59e6baec921 100644 --- a/src/mesa/drivers/dri/r300/r300_state.h +++ b/src/mesa/drivers/dri/r300/r300_state.h @@ -58,23 +58,23 @@ do { \ \ } while (0) - extern void r300ResetHwState(r300ContextPtr r300); extern void r300UpdateStateParameters(GLcontext * ctx, GLuint new_state); extern void r300InitState(r300ContextPtr r300); -extern void r300InitStateFuncs(struct dd_function_table* functions); -extern void r300UpdateViewportOffset( GLcontext *ctx ); +extern void r300InitStateFuncs(struct dd_function_table *functions); +extern void r300UpdateViewportOffset(GLcontext * ctx); extern void r300UpdateWindow(GLcontext * ctx); -extern void r300UpdateDrawBuffer(GLcontext *ctx); +extern void r300UpdateDrawBuffer(GLcontext * ctx); extern void r300SetupVertexShader(r300ContextPtr rmesa); extern void r300SetupPixelShader(r300ContextPtr rmesa); -extern void r300_setup_textures(GLcontext *ctx); -extern void r300_setup_rs_unit(GLcontext *ctx); +extern void r300_setup_textures(GLcontext * ctx); +extern void r300_setup_rs_unit(GLcontext * ctx); extern void r300UpdateShaders(r300ContextPtr rmesa); extern void r300UpdateShaderStates(r300ContextPtr rmesa); -extern void r300_print_state_atom(r300ContextPtr r300, struct r300_state_atom *state); +extern void r300_print_state_atom(r300ContextPtr r300, + struct r300_state_atom *state); -#endif /* __R300_STATE_H__ */ +#endif /* __R300_STATE_H__ */ -- cgit v1.2.3 From 72608aedc3b8e2fdf0eb57d1a9b5673d4ddeff6b Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 03:12:22 +0000 Subject: r300: Added the Linux Kernel indent script. --- src/mesa/drivers/dri/r300/Lindent | 2 ++ 1 file changed, 2 insertions(+) create mode 100755 src/mesa/drivers/dri/r300/Lindent (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/Lindent b/src/mesa/drivers/dri/r300/Lindent new file mode 100755 index 00000000000..7d8d8896e30 --- /dev/null +++ b/src/mesa/drivers/dri/r300/Lindent @@ -0,0 +1,2 @@ +#!/bin/sh +indent -npro -kr -i8 -ts8 -sob -l80 -ss -ncs "$@" -- cgit v1.2.3 From 504fafe38942bc26ab9595e9d14be4d42421cd5c Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 03:12:51 +0000 Subject: r300: Updated .gitignore. --- src/mesa/drivers/dri/r300/.gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/.gitignore b/src/mesa/drivers/dri/r300/.gitignore index 3773d8ea73f..f8118b7c327 100644 --- a/src/mesa/drivers/dri/r300/.gitignore +++ b/src/mesa/drivers/dri/r300/.gitignore @@ -1,3 +1,3 @@ radeon_chipset.h -radeon_screen.* +radeon_screen.[ch] server -- cgit v1.2.3 From eca50a27e1ecf5721a2570723b06bf22e7855f86 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 03:18:14 +0000 Subject: r300: Removed some obsolete code from r300_tex.c. --- src/mesa/drivers/dri/r300/r300_tex.c | 22 ---------------------- 1 file changed, 22 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_tex.c b/src/mesa/drivers/dri/r300/r300_tex.c index eb72802f8b4..027950bb2db 100644 --- a/src/mesa/drivers/dri/r300/r300_tex.c +++ b/src/mesa/drivers/dri/r300/r300_tex.c @@ -158,11 +158,6 @@ static void r300SetTexWrap(r300TexObjPtr t, GLenum swrap, GLenum twrap, t->filter |= hw_swrap << R300_TX_WRAP_S_SHIFT; t->filter |= hw_twrap << R300_TX_WRAP_T_SHIFT; t->filter |= hw_qwrap << R300_TX_WRAP_Q_SHIFT; - -#if 0 - t->format_x &= ~R200_CLAMP_Q_MASK; - t->border_fallback = (is_clamp && is_clamp_to_border); -#endif } static void r300SetTexMaxAnisotropy(r300TexObjPtr t, GLfloat max) @@ -196,9 +191,6 @@ static void r300SetTexFilter(r300TexObjPtr t, GLenum minf, GLenum magf) GLuint anisotropy = (t->filter & R300_TX_MAX_ANISO_MASK); t->filter &= ~(R300_TX_MIN_FILTER_MASK | R300_TX_MAG_FILTER_MASK); -#if 0 - //t->format_x &= ~R200_VOLUME_FILTER_MASK; -#endif if (anisotropy == R300_TX_MAX_ANISO_1_TO_1) { switch (minf) { @@ -1173,18 +1165,4 @@ void r300InitTextureFuncs(struct dd_function_table *functions) functions->CompressedTexSubImage2D = r300CompressedTexSubImage2D; driInitTextureFormats(); - -#if 0 - /* moved or obsolete code */ - r300ContextPtr rmesa = R300_CONTEXT(ctx); - driInitTextureObjects(ctx, &rmesa->swapped, - DRI_TEXMGR_DO_TEXTURE_1D - | DRI_TEXMGR_DO_TEXTURE_2D); - - /* Hack: r300NewTextureObject is not yet installed when the - * default textures are created. Therefore set MaxAnisotropy of the - * default 2D texture now. */ - ctx->Shared->Default2D->MaxAnisotropy = - driQueryOptionf(&rmesa->optionCache, "def_max_anisotropy"); -#endif } -- cgit v1.2.3 From 4917955205e474fd6c3ad15a7dc886e04e83f34c Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 03:22:37 +0000 Subject: r300: Added a warning when texture state update fails. --- src/mesa/drivers/dri/r300/r300_texstate.c | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_texstate.c b/src/mesa/drivers/dri/r300/r300_texstate.c index 14b0c6063b7..b17652e4ddf 100644 --- a/src/mesa/drivers/dri/r300/r300_texstate.c +++ b/src/mesa/drivers/dri/r300/r300_texstate.c @@ -590,15 +590,13 @@ static GLboolean r300UpdateTextureUnit(GLcontext * ctx, int unit) void r300UpdateTextureState(GLcontext * ctx) { - GLboolean ok; - - ok = (r300UpdateTextureUnit(ctx, 0) && - r300UpdateTextureUnit(ctx, 1) && - r300UpdateTextureUnit(ctx, 2) && - r300UpdateTextureUnit(ctx, 3) && - r300UpdateTextureUnit(ctx, 4) && - r300UpdateTextureUnit(ctx, 5) && - r300UpdateTextureUnit(ctx, 6) && - r300UpdateTextureUnit(ctx, 7) - ); + int i; + + for (i = 0; i < 8; i++) { + if (!r300UpdateTextureUnit(ctx, i)) { + _mesa_warning(ctx, + "failed to update texture state for unit %d.\n", + i); + } + } } -- cgit v1.2.3 From fe2c58d2d520d49bbf4c922885ae4f0bf27fcde9 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 03:25:33 +0000 Subject: r300: Converted a few fprintf calls to _mesa_warning calls. --- src/mesa/drivers/dri/r300/r300_vertprog.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_vertprog.c b/src/mesa/drivers/dri/r300/r300_vertprog.c index 486a3f2f040..6e023ef2ffa 100644 --- a/src/mesa/drivers/dri/r300/r300_vertprog.c +++ b/src/mesa/drivers/dri/r300/r300_vertprog.c @@ -255,7 +255,7 @@ static unsigned long t_src_index(struct r300_vertex_program *vp, struct prog_src return vp->inputs[src->Index]; }else{ if (src->Index < 0) { - fprintf(stderr, "WARNING negative offsets for indirect addressing do not work\n"); + _mesa_warning ("negative offsets for indirect addressing do not work.\n"); return 0; } return src->Index; -- cgit v1.2.3 From 28b47110b617c137ba18b9273c6172135a99b29d Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 03:32:15 +0000 Subject: r300: Converted exit calls to _mesa_exit calls. Note that the exit codes are inconsistent and should be fixed. --- src/mesa/drivers/dri/r300/r300_cmdbuf.c | 2 +- src/mesa/drivers/dri/r300/r300_emit.h | 4 ++-- src/mesa/drivers/dri/r300/r300_ioctl.c | 4 ++-- src/mesa/drivers/dri/r300/r300_maos.c | 4 ++-- src/mesa/drivers/dri/r300/r300_state.c | 18 +++++++++--------- src/mesa/drivers/dri/r300/r300_texmem.c | 2 +- src/mesa/drivers/dri/r300/r300_vertprog.c | 18 +++++++++--------- 7 files changed, 26 insertions(+), 26 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_cmdbuf.c b/src/mesa/drivers/dri/r300/r300_cmdbuf.c index dbb38bf3acd..9bfdc85c4ab 100644 --- a/src/mesa/drivers/dri/r300/r300_cmdbuf.c +++ b/src/mesa/drivers/dri/r300/r300_cmdbuf.c @@ -122,7 +122,7 @@ int r300FlushCmdBuf(r300ContextPtr r300, const char *caller) if (ret) { fprintf(stderr, "drmRadeonCmdBuffer: %d (exiting)\n", ret); - exit(ret); + _mesa_exit(ret); } return ret; diff --git a/src/mesa/drivers/dri/r300/r300_emit.h b/src/mesa/drivers/dri/r300/r300_emit.h index 90c2b8c1419..e616986c08f 100644 --- a/src/mesa/drivers/dri/r300/r300_emit.h +++ b/src/mesa/drivers/dri/r300/r300_emit.h @@ -160,7 +160,7 @@ static __inline__ uint32_t cmdpacify(void) "cmd_written=%d cmd_reserved=%d\n", \ __FILE__, __FUNCTION__, __LINE__, \ cmd_written, cmd_reserved); \ - exit(-1); \ + _mesa_exit(-1); \ } \ } while(0) @@ -195,7 +195,7 @@ static __inline__ uint32_t cmdpacify(void) fprintf(stderr,"Too big packet3 %08x: cannot " \ "store %d dwords\n", \ _p, _n); \ - exit(-1); \ + _mesa_exit(-1); \ } \ cmd[0].i = cmdpacket3(R300_CMD_PACKET3_RAW); \ cmd[1].i = _p | ((_n & 0x3fff)<<16); \ diff --git a/src/mesa/drivers/dri/r300/r300_ioctl.c b/src/mesa/drivers/dri/r300/r300_ioctl.c index de0a482eb5d..05fe5e2c904 100644 --- a/src/mesa/drivers/dri/r300/r300_ioctl.c +++ b/src/mesa/drivers/dri/r300/r300_ioctl.c @@ -465,7 +465,7 @@ static void r300RefillCurrentDmaRegion(r300ContextPtr rmesa, int size) if (dmabuf->id == 0) { fprintf(stderr, "Error: Could not get dma buffer... exiting\n"); - exit(-1); + _mesa_exit(-1); } } @@ -591,7 +591,7 @@ static void r300RefillCurrentDmaRegion(r300ContextPtr rmesa) UNLOCK_HARDWARE(&rmesa->radeon); fprintf(stderr, "Error: Could not get dma buffer... exiting\n"); - exit(-1); + _mesa_exit(-1); } } diff --git a/src/mesa/drivers/dri/r300/r300_maos.c b/src/mesa/drivers/dri/r300/r300_maos.c index c424e7a31a9..94b1f65f263 100644 --- a/src/mesa/drivers/dri/r300/r300_maos.c +++ b/src/mesa/drivers/dri/r300/r300_maos.c @@ -217,7 +217,7 @@ static void emit_vector(GLcontext * ctx, break; default: assert(0); - exit(1); + _mesa_exit(1); break; } @@ -243,7 +243,7 @@ void r300EmitElts(GLcontext * ctx, void *elts, unsigned long n_elts, return; } else if (r300IsGartMemory(rmesa, elts, 1)) { WARN_ONCE("Pointer not within GART memory!\n"); - exit(1); + _mesa_exit(1); } r300AllocDmaRegion(rmesa, rvb, n_elts * elt_size, elt_size); diff --git a/src/mesa/drivers/dri/r300/r300_state.c b/src/mesa/drivers/dri/r300/r300_state.c index 75d606fdcc4..fbdb4ca98f4 100644 --- a/src/mesa/drivers/dri/r300/r300_state.c +++ b/src/mesa/drivers/dri/r300/r300_state.c @@ -1330,7 +1330,7 @@ void r300_setup_textures(GLcontext * ctx) fprintf(stderr, "Aiiee ! mtu=%d is greater than R300_MAX_TEXTURE_UNITS=%d\n", mtu, R300_MAX_TEXTURE_UNITS); - exit(-1); + _mesa_exit(-1); } /* We cannot let disabled tmu offsets pass DRM */ @@ -1514,7 +1514,7 @@ void r300_setup_rs_unit(GLcontext * ctx) if (i == ctx->Const.MaxTextureUnits) { fprintf(stderr, "\tno free texcoord found...\n"); - exit(0); + _mesa_exit(0); } InputsRead |= (FRAG_BIT_TEX0 << i); @@ -1542,7 +1542,7 @@ void r300_setup_rs_unit(GLcontext * ctx) ("fragprog wants coords for tex%d, vp doesn't provide them!\n", i); //_mesa_print_program(&CURRENT_VERTEX_SHADER(ctx)->Base); - //exit(-1); + //_mesa_exit(-1); } InputsRead &= ~(FRAG_BIT_TEX0 << i); fp_reg++; @@ -1562,7 +1562,7 @@ void r300_setup_rs_unit(GLcontext * ctx) ("fragprog wants col0, vp doesn't provide it\n"); goto out; /* FIXME */ //_mesa_print_program(&CURRENT_VERTEX_SHADER(ctx)->Base); - //exit(-1); + //_mesa_exit(-1); } r300->hw.rr.cmd[R300_RR_ROUTE_0] |= 0 @@ -1579,7 +1579,7 @@ void r300_setup_rs_unit(GLcontext * ctx) _TNL_ATTRIB_COLOR1)) { WARN_ONCE ("fragprog wants col1, vp doesn't provide it\n"); - //exit(-1); + //_mesa_exit(-1); } r300->hw.rr.cmd[R300_RR_ROUTE_1] |= @@ -1637,7 +1637,7 @@ void static inline setup_vertex_shader_fragment(r300ContextPtr r300, if (vsf->length & 0x3) { fprintf(stderr, "VERTEX_SHADER_FRAGMENT must have length divisible by 4\n"); - exit(-1); + _mesa_exit(-1); } switch ((dest >> 8) & 0xf) { @@ -1672,7 +1672,7 @@ void static inline setup_vertex_shader_fragment(r300ContextPtr r300, fprintf(stderr, "%s:%s don't know how to handle dest %04x\n", __FILE__, __FUNCTION__, dest); - exit(-1); + _mesa_exit(-1); } } @@ -2277,7 +2277,7 @@ void r300ResetHwState(r300ContextPtr r300) default: fprintf(stderr, "Error: Unsupported depth %d... exiting\n", ctx->Visual.depthBits); - exit(-1); + _mesa_exit(-1); } /* z compress? */ @@ -2347,7 +2347,7 @@ void r300InitState(r300ContextPtr r300) default: fprintf(stderr, "Error: Unsupported depth %d... exiting\n", ctx->Visual.depthBits); - exit(-1); + _mesa_exit(-1); } /* Only have hw stencil when depth buffer is 24 bits deep */ diff --git a/src/mesa/drivers/dri/r300/r300_texmem.c b/src/mesa/drivers/dri/r300/r300_texmem.c index c527677cd0c..4750c468db4 100644 --- a/src/mesa/drivers/dri/r300/r300_texmem.c +++ b/src/mesa/drivers/dri/r300/r300_texmem.c @@ -485,7 +485,7 @@ static void uploadSubImage( r300ContextPtr rmesa, r300TexObjPtr t, fprintf( stderr, " blit width=%d height=%d data=%p\n", t->image[face][hwlevel].width, t->image[face][hwlevel].height, t->image[face][hwlevel].data ); - exit( 1 ); + _mesa_exit( 1 ); } } diff --git a/src/mesa/drivers/dri/r300/r300_vertprog.c b/src/mesa/drivers/dri/r300/r300_vertprog.c index 6e023ef2ffa..c7bfd8e8a81 100644 --- a/src/mesa/drivers/dri/r300/r300_vertprog.c +++ b/src/mesa/drivers/dri/r300/r300_vertprog.c @@ -121,7 +121,7 @@ int r300VertexProgUpdateParams(GLcontext *ctx, struct r300_vertex_program_cont * if(mesa_vp->Base.Parameters->NumParameters * 4 > VSF_MAX_FRAGMENT_LENGTH){ fprintf(stderr, "%s:Params exhausted\n", __FUNCTION__); - exit(-1); + _mesa_exit(-1); } paramList = mesa_vp->Base.Parameters; @@ -173,7 +173,7 @@ static unsigned long t_dst_class(enum register_file file) */ default: fprintf(stderr, "problem in %s", __FUNCTION__); - exit(0); + _mesa_exit(0); } } @@ -207,7 +207,7 @@ static unsigned long t_src_class(enum register_file file) */ default: fprintf(stderr, "problem in %s", __FUNCTION__); - exit(0); + _mesa_exit(0); } } @@ -311,7 +311,7 @@ static unsigned long t_opcode(enum prog_opcode opcode) default: fprintf(stderr, "%s: Should not be called with opcode %d!", __FUNCTION__, opcode); } - exit(-1); + _mesa_exit(-1); return 0; } @@ -325,7 +325,7 @@ static unsigned long op_operands(enum prog_opcode opcode) return op_names[i].ip; fprintf(stderr, "op %d not found in op_names\n", opcode); - exit(-1); + _mesa_exit(-1); return 0; } @@ -796,7 +796,7 @@ static void r300_translate_vertex_shader(struct r300_vertex_program *vp, struct case OPCODE_RCC: fprintf(stderr, "Dont know how to handle op %d yet\n", vpi->Opcode); - exit(-1); + _mesa_exit(-1); break; case OPCODE_END: break; @@ -829,7 +829,7 @@ static void r300_translate_vertex_shader(struct r300_vertex_program *vp, struct default: fprintf(stderr, "scalars and op RCC not handled yet"); - exit(-1); + _mesa_exit(-1); break; } }else{ @@ -854,7 +854,7 @@ static void r300_translate_vertex_shader(struct r300_vertex_program *vp, struct default: fprintf(stderr, "scalars and op RCC not handled yet"); - exit(-1); + _mesa_exit(-1); break; } } @@ -1080,7 +1080,7 @@ void r300_select_vertex_shader(r300ContextPtr r300) if(i == ctx->Const.MaxTextureUnits){ fprintf(stderr, "\tno free texcoord found\n"); - exit(0); + _mesa_exit(0); } InputsRead |= (FRAG_BIT_TEX0 << i); -- cgit v1.2.3 From b8640db021feca2765df8ad3d31e9c818cc352ac Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 03:36:28 +0000 Subject: r300: Corrected the exit codes for consistency; they are all -1 for error now. The one exception is 300FlushCmdBuf. --- src/mesa/drivers/dri/r300/r300_cmdbuf.c | 2 +- src/mesa/drivers/dri/r300/r300_maos.c | 4 ++-- src/mesa/drivers/dri/r300/r300_state.c | 2 +- src/mesa/drivers/dri/r300/r300_texmem.c | 2 +- src/mesa/drivers/dri/r300/r300_vertprog.c | 6 +++--- 5 files changed, 8 insertions(+), 8 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_cmdbuf.c b/src/mesa/drivers/dri/r300/r300_cmdbuf.c index 9bfdc85c4ab..294fcd75948 100644 --- a/src/mesa/drivers/dri/r300/r300_cmdbuf.c +++ b/src/mesa/drivers/dri/r300/r300_cmdbuf.c @@ -121,7 +121,7 @@ int r300FlushCmdBuf(r300ContextPtr r300, const char *caller) UNLOCK_HARDWARE(&r300->radeon); if (ret) { - fprintf(stderr, "drmRadeonCmdBuffer: %d (exiting)\n", ret); + fprintf(stderr, "drmRadeonCmdBuffer: %d\n", ret); _mesa_exit(ret); } diff --git a/src/mesa/drivers/dri/r300/r300_maos.c b/src/mesa/drivers/dri/r300/r300_maos.c index 94b1f65f263..d3105e0d160 100644 --- a/src/mesa/drivers/dri/r300/r300_maos.c +++ b/src/mesa/drivers/dri/r300/r300_maos.c @@ -217,7 +217,7 @@ static void emit_vector(GLcontext * ctx, break; default: assert(0); - _mesa_exit(1); + _mesa_exit(-1); break; } @@ -243,7 +243,7 @@ void r300EmitElts(GLcontext * ctx, void *elts, unsigned long n_elts, return; } else if (r300IsGartMemory(rmesa, elts, 1)) { WARN_ONCE("Pointer not within GART memory!\n"); - _mesa_exit(1); + _mesa_exit(-1); } r300AllocDmaRegion(rmesa, rvb, n_elts * elt_size, elt_size); diff --git a/src/mesa/drivers/dri/r300/r300_state.c b/src/mesa/drivers/dri/r300/r300_state.c index fbdb4ca98f4..18c15ae83de 100644 --- a/src/mesa/drivers/dri/r300/r300_state.c +++ b/src/mesa/drivers/dri/r300/r300_state.c @@ -1514,7 +1514,7 @@ void r300_setup_rs_unit(GLcontext * ctx) if (i == ctx->Const.MaxTextureUnits) { fprintf(stderr, "\tno free texcoord found...\n"); - _mesa_exit(0); + _mesa_exit(-1); } InputsRead |= (FRAG_BIT_TEX0 << i); diff --git a/src/mesa/drivers/dri/r300/r300_texmem.c b/src/mesa/drivers/dri/r300/r300_texmem.c index 4750c468db4..5d52f777e3b 100644 --- a/src/mesa/drivers/dri/r300/r300_texmem.c +++ b/src/mesa/drivers/dri/r300/r300_texmem.c @@ -485,7 +485,7 @@ static void uploadSubImage( r300ContextPtr rmesa, r300TexObjPtr t, fprintf( stderr, " blit width=%d height=%d data=%p\n", t->image[face][hwlevel].width, t->image[face][hwlevel].height, t->image[face][hwlevel].data ); - _mesa_exit( 1 ); + _mesa_exit(-1); } } diff --git a/src/mesa/drivers/dri/r300/r300_vertprog.c b/src/mesa/drivers/dri/r300/r300_vertprog.c index c7bfd8e8a81..245ceb4d122 100644 --- a/src/mesa/drivers/dri/r300/r300_vertprog.c +++ b/src/mesa/drivers/dri/r300/r300_vertprog.c @@ -173,7 +173,7 @@ static unsigned long t_dst_class(enum register_file file) */ default: fprintf(stderr, "problem in %s", __FUNCTION__); - _mesa_exit(0); + _mesa_exit(-1); } } @@ -207,7 +207,7 @@ static unsigned long t_src_class(enum register_file file) */ default: fprintf(stderr, "problem in %s", __FUNCTION__); - _mesa_exit(0); + _mesa_exit(-1); } } @@ -1080,7 +1080,7 @@ void r300_select_vertex_shader(r300ContextPtr r300) if(i == ctx->Const.MaxTextureUnits){ fprintf(stderr, "\tno free texcoord found\n"); - _mesa_exit(0); + _mesa_exit(-1); } InputsRead |= (FRAG_BIT_TEX0 << i); -- cgit v1.2.3 From f0126a76ac9fc9c20b1b1aecf1d476d5fd432f36 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 03:38:45 +0000 Subject: r300: Corrected an error in r300_vertprog.c. Cannot use _mesa_warning here because we don't have a context pointer; perhaps R300 specific warning and error functions are needed. --- src/mesa/drivers/dri/r300/r300_vertprog.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_vertprog.c b/src/mesa/drivers/dri/r300/r300_vertprog.c index 245ceb4d122..ddb4996ee02 100644 --- a/src/mesa/drivers/dri/r300/r300_vertprog.c +++ b/src/mesa/drivers/dri/r300/r300_vertprog.c @@ -255,7 +255,7 @@ static unsigned long t_src_index(struct r300_vertex_program *vp, struct prog_src return vp->inputs[src->Index]; }else{ if (src->Index < 0) { - _mesa_warning ("negative offsets for indirect addressing do not work.\n"); + fprintf (stderr, "negative offsets for indirect addressing do not work.\n"); return 0; } return src->Index; -- cgit v1.2.3 From d316b4dc22f4d5f0b91e665885a090395e2766c7 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 03:40:06 +0000 Subject: r300: Corrected a couple of "control reaches end of non-void function" warnings. --- src/mesa/drivers/dri/r300/r300_vertprog.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_vertprog.c b/src/mesa/drivers/dri/r300/r300_vertprog.c index ddb4996ee02..39d127c64ac 100644 --- a/src/mesa/drivers/dri/r300/r300_vertprog.c +++ b/src/mesa/drivers/dri/r300/r300_vertprog.c @@ -174,6 +174,7 @@ static unsigned long t_dst_class(enum register_file file) default: fprintf(stderr, "problem in %s", __FUNCTION__); _mesa_exit(-1); + return -1; } } @@ -208,6 +209,7 @@ static unsigned long t_src_class(enum register_file file) default: fprintf(stderr, "problem in %s", __FUNCTION__); _mesa_exit(-1); + return -1; } } -- cgit v1.2.3 From 328b307e2f7665bda57afa0739680ca61b54f783 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 03:44:40 +0000 Subject: r300: Cleaned up the R300 Makefile. --- src/mesa/drivers/dri/r300/Makefile | 25 ------------------------- 1 file changed, 25 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/Makefile b/src/mesa/drivers/dri/r300/Makefile index d4bf0ae892f..65a6b03b741 100644 --- a/src/mesa/drivers/dri/r300/Makefile +++ b/src/mesa/drivers/dri/r300/Makefile @@ -1,6 +1,5 @@ # src/mesa/drivers/dri/r300/Makefile - TOP = ../../../../.. include $(TOP)/configs/current @@ -45,30 +44,8 @@ DRIVER_SOURCES = \ r300_maos.c \ $(EGL_SOURCES) -# \ -# r200_context.c \ -# r200_ioctl.c \ -# r200_state.c \ -# r200_state_init.c \ -# r200_cmdbuf.c \ -# r200_pixel.c \ -# r200_tex.c \ -# r200_texmem.c \ -# r200_texstate.c \ -# r200_swtcl.c \ -# r200_maos.c \ -# r200_sanity.c \ -# r200_vtxfmt.c \ -# r200_vtxfmt_c.c \ -# r200_vtxfmt_sse.c \ -# r200_vtxfmt_x86.c - - C_SOURCES = $(COMMON_SOURCES) $(DRIVER_SOURCES) -X86_SOURCES = -#r200_vtxtmp_x86.S - DRIVER_DEFINES = -DCOMPILE_R300 -DGLX_DIRECT_RENDERING -DR200_MERGED=0 \ -DRADEON_COMMON=1 -DRADEON_COMMON_FOR_R300 @@ -87,7 +64,6 @@ COMMON_SYMLINKS = \ ##### TARGETS ##### - include ../Makefile.template server: @@ -100,4 +76,3 @@ $(COMMON_SYMLINKS): @[ -e $@ ] || ln -sf ../radeon/$@ ./ symlinks: $(SYMLINKS) $(COMMON_SYMLINKS) - -- cgit v1.2.3 From 9e91351826002ef86b529ea85c3bfe5d2c58f634 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 04:08:27 +0000 Subject: r300: Indented r300_fragprog.[ch]. --- src/mesa/drivers/dri/r300/r300_fragprog.c | 1081 ++++++++++++++--------------- src/mesa/drivers/dri/r300/r300_fragprog.h | 3 +- 2 files changed, 528 insertions(+), 556 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_fragprog.c b/src/mesa/drivers/dri/r300/r300_fragprog.c index 26b09b4db23..127aa12eb37 100644 --- a/src/mesa/drivers/dri/r300/r300_fragprog.c +++ b/src/mesa/drivers/dri/r300/r300_fragprog.c @@ -95,9 +95,9 @@ #define REG_NEGV_SHIFT 18 #define REG_NEGS_SHIFT 19 #define REG_ABS_SHIFT 20 -#define REG_NO_USE_SHIFT 21 // Hack for refcounting -#define REG_VALID_SHIFT 22 // Does the register contain a defined value? -#define REG_BUILTIN_SHIFT 23 // Is it a builtin (like all zero/all one)? +#define REG_NO_USE_SHIFT 21 // Hack for refcounting +#define REG_VALID_SHIFT 22 // Does the register contain a defined value? +#define REG_BUILTIN_SHIFT 23 // Is it a builtin (like all zero/all one)? #define REG_TYPE_MASK (0x03 << REG_TYPE_SHIFT) #define REG_INDEX_MASK (0x3F << REG_INDEX_SHIFT) @@ -160,7 +160,6 @@ #define REG_NEGS(reg) \ reg = (reg | REG_NEGS_MASK) - /* * Datas structures for fragment program generation */ @@ -172,22 +171,23 @@ static const struct { int v_op; int s_op; } r300_fpop[] = { - { "MAD", 3, R300_FPI0_OUTC_MAD, R300_FPI2_OUTA_MAD }, - { "DP3", 2, R300_FPI0_OUTC_DP3, R300_FPI2_OUTA_DP4 }, - { "DP4", 2, R300_FPI0_OUTC_DP4, R300_FPI2_OUTA_DP4 }, - { "MIN", 2, R300_FPI0_OUTC_MIN, R300_FPI2_OUTA_MIN }, - { "MAX", 2, R300_FPI0_OUTC_MAX, R300_FPI2_OUTA_MAX }, - { "CMP", 3, R300_FPI0_OUTC_CMP, R300_FPI2_OUTA_CMP }, - { "FRC", 1, R300_FPI0_OUTC_FRC, R300_FPI2_OUTA_FRC }, - { "EX2", 1, R300_FPI0_OUTC_REPL_ALPHA, R300_FPI2_OUTA_EX2 }, - { "LG2", 1, R300_FPI0_OUTC_REPL_ALPHA, R300_FPI2_OUTA_LG2 }, - { "RCP", 1, R300_FPI0_OUTC_REPL_ALPHA, R300_FPI2_OUTA_RCP }, - { "RSQ", 1, R300_FPI0_OUTC_REPL_ALPHA, R300_FPI2_OUTA_RSQ }, - { "REPL_ALPHA", 1, R300_FPI0_OUTC_REPL_ALPHA, PFS_INVAL }, - { "CMPH", 3, R300_FPI0_OUTC_CMPH, PFS_INVAL }, + /* *INDENT-OFF* */ + {"MAD", 3, R300_FPI0_OUTC_MAD, R300_FPI2_OUTA_MAD}, + {"DP3", 2, R300_FPI0_OUTC_DP3, R300_FPI2_OUTA_DP4}, + {"DP4", 2, R300_FPI0_OUTC_DP4, R300_FPI2_OUTA_DP4}, + {"MIN", 2, R300_FPI0_OUTC_MIN, R300_FPI2_OUTA_MIN}, + {"MAX", 2, R300_FPI0_OUTC_MAX, R300_FPI2_OUTA_MAX}, + {"CMP", 3, R300_FPI0_OUTC_CMP, R300_FPI2_OUTA_CMP}, + {"FRC", 1, R300_FPI0_OUTC_FRC, R300_FPI2_OUTA_FRC}, + {"EX2", 1, R300_FPI0_OUTC_REPL_ALPHA, R300_FPI2_OUTA_EX2}, + {"LG2", 1, R300_FPI0_OUTC_REPL_ALPHA, R300_FPI2_OUTA_LG2}, + {"RCP", 1, R300_FPI0_OUTC_REPL_ALPHA, R300_FPI2_OUTA_RCP}, + {"RSQ", 1, R300_FPI0_OUTC_REPL_ALPHA, R300_FPI2_OUTA_RSQ}, + {"REPL_ALPHA", 1, R300_FPI0_OUTC_REPL_ALPHA, PFS_INVAL}, + {"CMPH", 3, R300_FPI0_OUTC_CMPH, PFS_INVAL}, + /* *INDENT-ON* */ }; - /* vector swizzles r300 can support natively, with a couple of * cases we handle specially * @@ -201,25 +201,27 @@ static const struct { SWIZZLE_##y, \ SWIZZLE_##z, \ SWIZZLE_ZERO)) +/* native swizzles */ static const struct r300_pfs_swizzle { - GLuint hash; /* swizzle value this matches */ - GLuint base; /* base value for hw swizzle */ - GLuint stride; /* difference in base between arg0/1/2 */ + GLuint hash; /* swizzle value this matches */ + GLuint base; /* base value for hw swizzle */ + GLuint stride; /* difference in base between arg0/1/2 */ GLuint flags; } v_swiz[] = { -/* native swizzles */ - { MAKE_SWZ3(X, Y, Z), R300_FPI0_ARGC_SRC0C_XYZ, 4, SLOT_SRC_VECTOR }, - { MAKE_SWZ3(X, X, X), R300_FPI0_ARGC_SRC0C_XXX, 4, SLOT_SRC_VECTOR }, - { MAKE_SWZ3(Y, Y, Y), R300_FPI0_ARGC_SRC0C_YYY, 4, SLOT_SRC_VECTOR }, - { MAKE_SWZ3(Z, Z, Z), R300_FPI0_ARGC_SRC0C_ZZZ, 4, SLOT_SRC_VECTOR }, - { MAKE_SWZ3(W, W, W), R300_FPI0_ARGC_SRC0A, 1, SLOT_SRC_SCALAR }, - { MAKE_SWZ3(Y, Z, X), R300_FPI0_ARGC_SRC0C_YZX, 1, SLOT_SRC_VECTOR }, - { MAKE_SWZ3(Z, X, Y), R300_FPI0_ARGC_SRC0C_ZXY, 1, SLOT_SRC_VECTOR }, - { MAKE_SWZ3(W, Z, Y), R300_FPI0_ARGC_SRC0CA_WZY, 1, SLOT_SRC_BOTH }, - { MAKE_SWZ3(ONE, ONE, ONE), R300_FPI0_ARGC_ONE, 0, 0}, - { MAKE_SWZ3(ZERO, ZERO, ZERO), R300_FPI0_ARGC_ZERO, 0, 0}, - { MAKE_SWZ3(HALF, HALF, HALF), R300_FPI0_ARGC_HALF, 0, 0}, - { PFS_INVAL, 0, 0, 0}, + /* *INDENT-OFF* */ + {MAKE_SWZ3(X, Y, Z), R300_FPI0_ARGC_SRC0C_XYZ, 4, SLOT_SRC_VECTOR}, + {MAKE_SWZ3(X, X, X), R300_FPI0_ARGC_SRC0C_XXX, 4, SLOT_SRC_VECTOR}, + {MAKE_SWZ3(Y, Y, Y), R300_FPI0_ARGC_SRC0C_YYY, 4, SLOT_SRC_VECTOR}, + {MAKE_SWZ3(Z, Z, Z), R300_FPI0_ARGC_SRC0C_ZZZ, 4, SLOT_SRC_VECTOR}, + {MAKE_SWZ3(W, W, W), R300_FPI0_ARGC_SRC0A, 1, SLOT_SRC_SCALAR}, + {MAKE_SWZ3(Y, Z, X), R300_FPI0_ARGC_SRC0C_YZX, 1, SLOT_SRC_VECTOR}, + {MAKE_SWZ3(Z, X, Y), R300_FPI0_ARGC_SRC0C_ZXY, 1, SLOT_SRC_VECTOR}, + {MAKE_SWZ3(W, Z, Y), R300_FPI0_ARGC_SRC0CA_WZY, 1, SLOT_SRC_BOTH}, + {MAKE_SWZ3(ONE, ONE, ONE), R300_FPI0_ARGC_ONE, 0, 0}, + {MAKE_SWZ3(ZERO, ZERO, ZERO), R300_FPI0_ARGC_ZERO, 0, 0}, + {MAKE_SWZ3(HALF, HALF, HALF), R300_FPI0_ARGC_HALF, 0, 0}, + {PFS_INVAL, 0, 0, 0}, + /* *INDENT-ON* */ }; /* used during matching of non-native swizzles */ @@ -232,28 +234,32 @@ static const struct { int mask; /* actual outmask */ int count; /* count of components matched */ } s_mask[] = { - { SWZ_X_MASK|SWZ_Y_MASK|SWZ_Z_MASK, 1|2|4, 3}, - { SWZ_X_MASK|SWZ_Y_MASK, 1|2, 2}, - { SWZ_X_MASK|SWZ_Z_MASK, 1|4, 2}, - { SWZ_Y_MASK|SWZ_Z_MASK, 2|4, 2}, - { SWZ_X_MASK, 1, 1}, - { SWZ_Y_MASK, 2, 1}, - { SWZ_Z_MASK, 4, 1}, - { PFS_INVAL, PFS_INVAL, PFS_INVAL} + /* *INDENT-OFF* */ + {SWZ_X_MASK | SWZ_Y_MASK | SWZ_Z_MASK, 1 | 2 | 4, 3}, + {SWZ_X_MASK | SWZ_Y_MASK, 1 | 2, 2}, + {SWZ_X_MASK | SWZ_Z_MASK, 1 | 4, 2}, + {SWZ_Y_MASK | SWZ_Z_MASK, 2 | 4, 2}, + {SWZ_X_MASK, 1, 1}, + {SWZ_Y_MASK, 2, 1}, + {SWZ_Z_MASK, 4, 1}, + {PFS_INVAL, PFS_INVAL, PFS_INVAL} + /* *INDENT-ON* */ }; static const struct { - int base; /* hw value of swizzle */ - int stride; /* difference between SRC0/1/2 */ + int base; /* hw value of swizzle */ + int stride; /* difference between SRC0/1/2 */ GLuint flags; } s_swiz[] = { - { R300_FPI2_ARGA_SRC0C_X, 3, SLOT_SRC_VECTOR }, - { R300_FPI2_ARGA_SRC0C_Y, 3, SLOT_SRC_VECTOR }, - { R300_FPI2_ARGA_SRC0C_Z, 3, SLOT_SRC_VECTOR }, - { R300_FPI2_ARGA_SRC0A , 1, SLOT_SRC_SCALAR }, - { R300_FPI2_ARGA_ZERO , 0, 0 }, - { R300_FPI2_ARGA_ONE , 0, 0 }, - { R300_FPI2_ARGA_HALF , 0, 0 } + /* *INDENT-OFF* */ + {R300_FPI2_ARGA_SRC0C_X, 3, SLOT_SRC_VECTOR}, + {R300_FPI2_ARGA_SRC0C_Y, 3, SLOT_SRC_VECTOR}, + {R300_FPI2_ARGA_SRC0C_Z, 3, SLOT_SRC_VECTOR}, + {R300_FPI2_ARGA_SRC0A, 1, SLOT_SRC_SCALAR}, + {R300_FPI2_ARGA_ZERO, 0, 0}, + {R300_FPI2_ARGA_ONE, 0, 0}, + {R300_FPI2_ARGA_HALF, 0, 0} + /* *INDENT-ON* */ }; /* boiler-plate reg, for convenience */ @@ -297,9 +303,8 @@ static const GLuint pfs_zero = REG(REG_TYPE_CONST, */ static void dump_program(struct r300_fragment_program *rp); static void emit_arith(struct r300_fragment_program *rp, int op, - GLuint dest, int mask, - GLuint src0, GLuint src1, GLuint src2, - int flags); + GLuint dest, int mask, + GLuint src0, GLuint src1, GLuint src2, int flags); /** * Get an R300 temporary that can be written to in the given slot. @@ -309,7 +314,7 @@ static int get_hw_temp(struct r300_fragment_program *rp, int slot) COMPILE_STATE; int r; - for(r = 0; r < PFS_NUM_TEMP_REGS; ++r) { + for (r = 0; r < PFS_NUM_TEMP_REGS; ++r) { if (cs->hwtemps[r].free >= 0 && cs->hwtemps[r].free <= slot) break; } @@ -318,7 +323,6 @@ static int get_hw_temp(struct r300_fragment_program *rp, int slot) ERROR("Out of hardware temps\n"); return 0; } - // Reserved is used to avoid the following scenario: // R300 temporary X is first assigned to Mesa temporary Y during vector ops // R300 temporary X is then assigned to Mesa temporary Z for further vector ops @@ -349,7 +353,7 @@ static int get_hw_temp_tex(struct r300_fragment_program *rp) COMPILE_STATE; int r; - for(r = 0; r < PFS_NUM_TEMP_REGS; ++r) { + for (r = 0; r < PFS_NUM_TEMP_REGS; ++r) { if (cs->used_in_node & (1 << r)) continue; @@ -359,7 +363,7 @@ static int get_hw_temp_tex(struct r300_fragment_program *rp) } if (r >= PFS_NUM_TEMP_REGS) - return get_hw_temp(rp, 0); /* Will cause an indirection */ + return get_hw_temp(rp, 0); /* Will cause an indirection */ cs->hwtemps[r].reserved = cs->hwtemps[r].free; cs->hwtemps[r].free = -1; @@ -393,10 +397,9 @@ static void free_hw_temp(struct r300_fragment_program *rp, int idx) // I'm certain the register allocation could be further sanitized, // but it's tricky because of stuff that can happen inside emit_tex // and emit_arith. - cs->hwtemps[idx].free = cs->nrslots+1; + cs->hwtemps[idx].free = cs->nrslots + 1; } - /** * Create a new Mesa temporary register. */ @@ -478,12 +481,13 @@ static void free_temp(struct r300_fragment_program *rp, GLuint r) * of the fragment program (actually, up until the next time the fragment * program is translated). */ -static GLuint emit_const4fv(struct r300_fragment_program *rp, const GLfloat* cp) +static GLuint emit_const4fv(struct r300_fragment_program *rp, + const GLfloat * cp) { GLuint reg = undef; int index; - for(index = 0; index < rp->const_nr; ++index) { + for (index = 0; index < rp->const_nr; ++index) { if (rp->constant[index] == cp) break; } @@ -527,13 +531,10 @@ static inline GLuint absolute(GLuint r) } static int swz_native(struct r300_fragment_program *rp, - GLuint src, - GLuint *r, - GLuint arbneg) + GLuint src, GLuint * r, GLuint arbneg) { /* Native swizzle, handle negation */ - src = (src & ~REG_NEGS_MASK) | - (((arbneg >> 3) & 1) << REG_NEGS_SHIFT); + src = (src & ~REG_NEGS_MASK) | (((arbneg >> 3) & 1) << REG_NEGS_SHIFT); if ((arbneg & 0x7) == 0x0) { src = src & ~REG_NEGV_MASK; @@ -547,21 +548,13 @@ static int swz_native(struct r300_fragment_program *rp, src |= REG_NEGV_MASK; emit_arith(rp, PFS_OP_MAD, - *r, - arbneg & 0x7, - keep(src), - pfs_one, - pfs_zero, - 0); + *r, arbneg & 0x7, keep(src), pfs_one, pfs_zero, 0); src = src & ~REG_NEGV_MASK; emit_arith(rp, PFS_OP_MAD, *r, (arbneg ^ 0x7) | WRITEMASK_W, - src, - pfs_one, - pfs_zero, - 0); + src, pfs_one, pfs_zero, 0); } return 3; @@ -569,10 +562,7 @@ static int swz_native(struct r300_fragment_program *rp, static int swz_emit_partial(struct r300_fragment_program *rp, GLuint src, - GLuint *r, - int mask, - int mc, - GLuint arbneg) + GLuint * r, int mask, int mc, GLuint arbneg) { GLuint tmp; GLuint wmask = 0; @@ -597,9 +587,7 @@ static int swz_emit_partial(struct r300_fragment_program *rp, *r, arbneg & s_mask[mask].mask, keep(src) | REG_NEGV_MASK, - pfs_one, - pfs_zero, - 0); + pfs_one, pfs_zero, 0); if (!wmask) { REG_SET_NO_USE(src, GL_TRUE); } else { @@ -607,12 +595,7 @@ static int swz_emit_partial(struct r300_fragment_program *rp, } emit_arith(rp, PFS_OP_MAD, - *r, - tmp | wmask, - src, - pfs_one, - pfs_zero, - 0); + *r, tmp | wmask, src, pfs_one, pfs_zero, 0); } else { if (!wmask) { REG_SET_NO_USE(src, GL_TRUE); @@ -623,10 +606,7 @@ static int swz_emit_partial(struct r300_fragment_program *rp, PFS_OP_MAD, *r, (arbneg & s_mask[mask].mask) | wmask, - src | REG_NEGV_MASK, - pfs_one, - pfs_zero, - 0); + src | REG_NEGV_MASK, pfs_one, pfs_zero, 0); } } else { if (!wmask) { @@ -637,19 +617,14 @@ static int swz_emit_partial(struct r300_fragment_program *rp, emit_arith(rp, PFS_OP_MAD, *r, s_mask[mask].mask | wmask, - src, - pfs_one, - pfs_zero, - 0); + src, pfs_one, pfs_zero, 0); } return s_mask[mask].count; } static GLuint do_swizzle(struct r300_fragment_program *rp, - GLuint src, - GLuint arbswz, - GLuint arbneg) + GLuint src, GLuint arbswz, GLuint arbneg) { GLuint r = undef; GLuint vswz; @@ -660,41 +635,38 @@ static GLuint do_swizzle(struct r300_fragment_program *rp, * emit result to a temp, and do new swizzle from the temp. */ #if 0 - if (REG_GET_VSWZ(src) != SWIZZLE_XYZ || - REG_GET_SSWZ(src) != SWIZZLE_W) { + if (REG_GET_VSWZ(src) != SWIZZLE_XYZ || REG_GET_SSWZ(src) != SWIZZLE_W) { GLuint temp = get_temp_reg(rp); emit_arith(rp, PFS_OP_MAD, - temp, - WRITEMASK_XYZW, - src, - pfs_one, - pfs_zero, - 0); + temp, WRITEMASK_XYZW, src, pfs_one, pfs_zero, 0); src = temp; } #endif - if (REG_GET_VSWZ(src) != SWIZZLE_XYZ || - REG_GET_SSWZ(src) != SWIZZLE_W) { - GLuint vsrcswz = (v_swiz[REG_GET_VSWZ(src)].hash & (SWZ_X_MASK|SWZ_Y_MASK|SWZ_Z_MASK)) | REG_GET_SSWZ(src) << 9; - GLint i; - - GLuint newswz = 0; - GLuint offset; - for(i=0; i < 4; ++i){ - offset = GET_SWZ(arbswz, i); - - newswz |= (offset <= 3)?GET_SWZ(vsrcswz, offset) << i*3:offset << i*3; - } + if (REG_GET_VSWZ(src) != SWIZZLE_XYZ || REG_GET_SSWZ(src) != SWIZZLE_W) { + GLuint vsrcswz = + (v_swiz[REG_GET_VSWZ(src)]. + hash & (SWZ_X_MASK | SWZ_Y_MASK | SWZ_Z_MASK)) | + REG_GET_SSWZ(src) << 9; + GLint i; + + GLuint newswz = 0; + GLuint offset; + for (i = 0; i < 4; ++i) { + offset = GET_SWZ(arbswz, i); + + newswz |= + (offset <= 3) ? GET_SWZ(vsrcswz, + offset) << i * + 3 : offset << i * 3; + } - arbswz = newswz & (SWZ_X_MASK|SWZ_Y_MASK|SWZ_Z_MASK); - REG_SET_SSWZ(src, GET_SWZ(newswz, 3)); - } - else - { - /* set scalar swizzling */ - REG_SET_SSWZ(src, GET_SWZ(arbswz, 3)); + arbswz = newswz & (SWZ_X_MASK | SWZ_Y_MASK | SWZ_Z_MASK); + REG_SET_SSWZ(src, GET_SWZ(newswz, 3)); + } else { + /* set scalar swizzling */ + REG_SET_SSWZ(src, GET_SWZ(arbswz, 3)); } do { @@ -704,14 +676,12 @@ static GLuint do_swizzle(struct r300_fragment_program *rp, REG_SET_VSWZ(src, vswz); chash = v_swiz[REG_GET_VSWZ(src)].hash & - s_mask[c_mask].hash; + s_mask[c_mask].hash; if (chash == (arbswz & s_mask[c_mask].hash)) { if (s_mask[c_mask].count == 3) { v_match += swz_native(rp, - src, - &r, - arbneg); + src, &r, arbneg); } else { v_match += swz_emit_partial(rp, src, @@ -730,7 +700,7 @@ static GLuint do_swizzle(struct r300_fragment_program *rp, */ arbswz |= (PFS_INVAL & s_mask[c_mask].hash); } - } while(v_swiz[++vswz].hash != PFS_INVAL); + } while (v_swiz[++vswz].hash != PFS_INVAL); REG_SET_VSWZ(src, SWIZZLE_XYZ); } while (s_mask[++c_mask].hash != PFS_INVAL); @@ -756,16 +726,19 @@ static GLuint t_src(struct r300_fragment_program *rp, break; case PROGRAM_LOCAL_PARAM: r = emit_const4fv(rp, - rp->mesa_program.Base.LocalParams[fpsrc.Index]); + rp->mesa_program.Base.LocalParams[fpsrc. + Index]); break; case PROGRAM_ENV_PARAM: r = emit_const4fv(rp, - rp->ctx->FragmentProgram.Parameters[fpsrc.Index]); + rp->ctx->FragmentProgram.Parameters[fpsrc. + Index]); break; case PROGRAM_STATE_VAR: case PROGRAM_NAMED_PARAM: r = emit_const4fv(rp, - rp->mesa_program.Base.Parameters->ParameterValues[fpsrc.Index]); + rp->mesa_program.Base.Parameters-> + ParameterValues[fpsrc.Index]); break; default: ERROR("unknown SrcReg->File %x\n", fpsrc.File); @@ -782,15 +755,15 @@ static GLuint t_scalar_src(struct r300_fragment_program *rp, struct prog_src_register fpsrc) { struct prog_src_register src = fpsrc; - int sc = GET_SWZ(fpsrc.Swizzle, 0); /* X */ + int sc = GET_SWZ(fpsrc.Swizzle, 0); /* X */ - src.Swizzle = ((sc<<0)|(sc<<3)|(sc<<6)|(sc<<9)); + src.Swizzle = ((sc << 0) | (sc << 3) | (sc << 6) | (sc << 9)); return t_src(rp, src); } static GLuint t_dst(struct r300_fragment_program *rp, - struct prog_dst_register dest) + struct prog_dst_register dest) { GLuint r = undef; @@ -818,33 +791,29 @@ static GLuint t_dst(struct r300_fragment_program *rp, } } -static int t_hw_src(struct r300_fragment_program *rp, - GLuint src, - GLboolean tex) +static int t_hw_src(struct r300_fragment_program *rp, GLuint src, GLboolean tex) { COMPILE_STATE; int idx; int index = REG_GET_INDEX(src); - switch(REG_GET_TYPE(src)) { + switch (REG_GET_TYPE(src)) { case REG_TYPE_TEMP: /* NOTE: if reg==-1 here, a source is being read that - * hasn't been written to. Undefined results. + * hasn't been written to. Undefined results. */ if (cs->temps[index].reg == -1) cs->temps[index].reg = get_hw_temp(rp, cs->nrslots); idx = cs->temps[index].reg; - if (!REG_GET_NO_USE(src) && - (--cs->temps[index].refcount == 0)) + if (!REG_GET_NO_USE(src) && (--cs->temps[index].refcount == 0)) free_temp(rp, src); break; case REG_TYPE_INPUT: idx = cs->inputs[index].reg; - if (!REG_GET_NO_USE(src) && - (--cs->inputs[index].refcount == 0)) + if (!REG_GET_NO_USE(src) && (--cs->inputs[index].refcount == 0)) free_hw_temp(rp, cs->inputs[index].reg); break; case REG_TYPE_CONST: @@ -861,16 +830,14 @@ static int t_hw_src(struct r300_fragment_program *rp, } static int t_hw_dst(struct r300_fragment_program *rp, - GLuint dest, - GLboolean tex, - int slot) + GLuint dest, GLboolean tex, int slot) { COMPILE_STATE; int idx; GLuint index = REG_GET_INDEX(dest); assert(REG_GET_VALID(dest)); - switch(REG_GET_TYPE(dest)) { + switch (REG_GET_TYPE(dest)) { case REG_TYPE_TEMP: if (cs->temps[REG_GET_INDEX(dest)].reg == -1) { if (!tex) { @@ -881,20 +848,21 @@ static int t_hw_dst(struct r300_fragment_program *rp, } idx = cs->temps[index].reg; - if (!REG_GET_NO_USE(dest) && - (--cs->temps[index].refcount == 0)) + if (!REG_GET_NO_USE(dest) && (--cs->temps[index].refcount == 0)) free_temp(rp, dest); cs->dest_in_node |= (1 << idx); cs->used_in_node |= (1 << idx); break; case REG_TYPE_OUTPUT: - switch(index) { + switch (index) { case FRAG_RESULT_COLR: - rp->node[rp->cur_node].flags |= R300_PFS_NODE_OUTPUT_COLOR; + rp->node[rp->cur_node].flags |= + R300_PFS_NODE_OUTPUT_COLOR; break; case FRAG_RESULT_DEPR: - rp->node[rp->cur_node].flags |= R300_PFS_NODE_OUTPUT_DEPTH; + rp->node[rp->cur_node].flags |= + R300_PFS_NODE_OUTPUT_DEPTH; break; } return index; @@ -924,8 +892,7 @@ static void emit_nop(struct r300_fragment_program *rp) } static void emit_tex(struct r300_fragment_program *rp, - struct prog_instruction *fpi, - int opcode) + struct prog_instruction *fpi, int opcode) { COMPILE_STATE; GLuint coord = t_src(rp, fpi->SrcReg[0]); @@ -950,19 +917,24 @@ static void emit_tex(struct r300_fragment_program *rp, * support for programs. */ gl_state_index tokens[STATE_LENGTH] = { - STATE_INTERNAL, STATE_R300_TEXRECT_FACTOR, 0, 0, 0 + STATE_INTERNAL, STATE_R300_TEXRECT_FACTOR, 0, 0, + 0 }; int factor_index; GLuint factorreg; tokens[2] = unit; - factor_index = _mesa_add_state_reference(rp->mesa_program.Base.Parameters, tokens); - factorreg = emit_const4fv(rp, - rp->mesa_program.Base.Parameters->ParameterValues[factor_index]); + factor_index = + _mesa_add_state_reference(rp->mesa_program.Base. + Parameters, tokens); + factorreg = + emit_const4fv(rp, + rp->mesa_program.Base.Parameters-> + ParameterValues[factor_index]); tempreg = keep(get_temp_reg(rp)); emit_arith(rp, PFS_OP_MAD, tempreg, WRITEMASK_XYZW, - coord, factorreg, pfs_zero, 0); + coord, factorreg, pfs_zero, 0); /* Ensure correct node indirection */ uin = cs->used_in_node; @@ -980,7 +952,9 @@ static void emit_tex(struct r300_fragment_program *rp, rdest = dest; dest = get_temp_reg_tex(rp); } - hwdest = t_hw_dst(rp, dest, GL_TRUE, rp->node[rp->cur_node].alu_offset); + hwdest = + t_hw_dst(rp, dest, GL_TRUE, + rp->node[rp->cur_node].alu_offset); /* Use a temp that hasn't been used in this node, rather * than causing an indirection @@ -996,19 +970,18 @@ static void emit_tex(struct r300_fragment_program *rp, hwsrc = t_hw_src(rp, coord, GL_TRUE); } - /* Indirection if source has been written in this node, or if the * dest has been read/written in this node */ if ((REG_GET_TYPE(coord) != REG_TYPE_CONST && - (din & (1<node[rp->cur_node].alu_offset == cs->nrslots) emit_nop(rp); rp->node[rp->cur_node].alu_end = - cs->nrslots - rp->node[rp->cur_node].alu_offset - 1; + cs->nrslots - rp->node[rp->cur_node].alu_offset - 1; assert(rp->node[rp->cur_node].alu_end >= 0); if (++rp->cur_node >= PFS_MAX_TEX_INDIRECT) { @@ -1029,12 +1002,11 @@ static void emit_tex(struct r300_fragment_program *rp, if (rp->cur_node == 0) rp->first_node_has_tex = 1; - rp->tex.inst[rp->tex.length++] = 0 - | (hwsrc << R300_FPITX_SRC_SHIFT) - | (hwdest << R300_FPITX_DST_SHIFT) - | (unit << R300_FPITX_IMAGE_SHIFT) - /* not entirely sure about this */ - | (opcode << R300_FPITX_OPCODE_SHIFT); + rp->tex.inst[rp->tex.length++] = 0 | (hwsrc << R300_FPITX_SRC_SHIFT) + | (hwdest << R300_FPITX_DST_SHIFT) + | (unit << R300_FPITX_IMAGE_SHIFT) + /* not entirely sure about this */ + | (opcode << R300_FPITX_OPCODE_SHIFT); cs->dest_in_node |= (1 << hwdest); if (REG_GET_TYPE(coord) != REG_TYPE_CONST) @@ -1054,14 +1026,12 @@ static void emit_tex(struct r300_fragment_program *rp, free_temp(rp, tempreg); } - /** * Returns the first slot where we could possibly allow writing to dest, * according to register allocation. */ -static int get_earliest_allowed_write( - struct r300_fragment_program* rp, - GLuint dest, int mask) +static int get_earliest_allowed_write(struct r300_fragment_program *rp, + GLuint dest, int mask) { COMPILE_STATE; int idx; @@ -1069,18 +1039,18 @@ static int get_earliest_allowed_write( GLuint index = REG_GET_INDEX(dest); assert(REG_GET_VALID(dest)); - switch(REG_GET_TYPE(dest)) { - case REG_TYPE_TEMP: - if (cs->temps[index].reg == -1) - return 0; - - idx = cs->temps[index].reg; - break; - case REG_TYPE_OUTPUT: - return 0; - default: - ERROR("invalid dest reg type %d\n", REG_GET_TYPE(dest)); + switch (REG_GET_TYPE(dest)) { + case REG_TYPE_TEMP: + if (cs->temps[index].reg == -1) return 0; + + idx = cs->temps[index].reg; + break; + case REG_TYPE_OUTPUT: + return 0; + default: + ERROR("invalid dest reg type %d\n", REG_GET_TYPE(dest)); + return 0; } pos = cs->hwtemps[idx].reserved; @@ -1096,7 +1066,6 @@ static int get_earliest_allowed_write( return pos; } - /** * Allocates a slot for an ALU instruction that can consist of * a vertex part or a scalar part or both. @@ -1111,13 +1080,10 @@ static int get_earliest_allowed_write( * * @return the index of the slot */ -static int find_and_prepare_slot(struct r300_fragment_program* rp, - GLboolean emit_vop, - GLboolean emit_sop, - int argc, - GLuint* src, - GLuint dest, - int mask) +static int find_and_prepare_slot(struct r300_fragment_program *rp, + GLboolean emit_vop, + GLboolean emit_sop, + int argc, GLuint * src, GLuint dest, int mask) { COMPILE_STATE; int hwsrc[3]; @@ -1128,7 +1094,7 @@ static int find_and_prepare_slot(struct r300_fragment_program* rp, int tempssrc[3]; int pos; int regnr; - int i,j; + int i, j; // Determine instruction slots, whether sources are required on // vector or scalar side, and the smallest slot number where @@ -1143,7 +1109,7 @@ static int find_and_prepare_slot(struct r300_fragment_program* rp, if (rp->node[rp->cur_node].alu_offset > pos) pos = rp->node[rp->cur_node].alu_offset; - for(i = 0; i < argc; ++i) { + for (i = 0; i < argc; ++i) { if (!REG_GET_BUILTIN(src[i])) { if (emit_vop) used |= v_swiz[REG_GET_VSWZ(src[i])].flags << i; @@ -1151,7 +1117,7 @@ static int find_and_prepare_slot(struct r300_fragment_program* rp, used |= s_swiz[REG_GET_SSWZ(src[i])].flags << i; } - hwsrc[i] = t_hw_src(rp, src[i], GL_FALSE); /* Note: sideeffects wrt refcounting! */ + hwsrc[i] = t_hw_src(rp, src[i], GL_FALSE); /* Note: sideeffects wrt refcounting! */ regnr = hwsrc[i] & 31; if (REG_GET_TYPE(src[i]) == REG_TYPE_TEMP) { @@ -1167,7 +1133,7 @@ static int find_and_prepare_slot(struct r300_fragment_program* rp, } // Find a slot that fits - for(; ; ++pos) { + for (;; ++pos) { if (cs->slot[pos].used & used & SLOT_OP_BOTH) continue; @@ -1184,19 +1150,18 @@ static int find_and_prepare_slot(struct r300_fragment_program* rp, cs->nrslots++; } - // Note: When we need both parts (vector and scalar) of a source, // we always try to put them into the same position. This makes the // code easier to read, and it is optimal (i.e. one doesn't gain // anything by splitting the parts). // It also avoids headaches with swizzles that access both parts (i.e WXY) tempused = cs->slot[pos].used; - for(i = 0; i < 3; ++i) { + for (i = 0; i < 3; ++i) { tempvsrc[i] = cs->slot[pos].vsrc[i]; tempssrc[i] = cs->slot[pos].ssrc[i]; } - for(i = 0; i < argc; ++i) { + for (i = 0; i < argc; ++i) { int flags = (used >> i) & SLOT_SRC_BOTH; if (!flags) { @@ -1204,7 +1169,7 @@ static int find_and_prepare_slot(struct r300_fragment_program* rp, continue; } - for(j = 0; j < 3; ++j) { + for (j = 0; j < 3; ++j) { if ((tempused >> j) & flags & SLOT_SRC_VECTOR) { if (tempvsrc[j] != hwsrc[i]) continue; @@ -1235,22 +1200,24 @@ static int find_and_prepare_slot(struct r300_fragment_program* rp, // Found a slot, reserve it cs->slot[pos].used = tempused | (used & SLOT_OP_BOTH); - for(i = 0; i < 3; ++i) { + for (i = 0; i < 3; ++i) { cs->slot[pos].vsrc[i] = tempvsrc[i]; cs->slot[pos].ssrc[i] = tempssrc[i]; } - for(i = 0; i < argc; ++i) { + for (i = 0; i < argc; ++i) { if (REG_GET_TYPE(src[i]) == REG_TYPE_TEMP) { int regnr = hwsrc[i] & 31; if (used & (SLOT_SRC_VECTOR << i)) { if (cs->hwtemps[regnr].vector_lastread < pos) - cs->hwtemps[regnr].vector_lastread = pos; + cs->hwtemps[regnr].vector_lastread = + pos; } if (used & (SLOT_SRC_SCALAR << i)) { if (cs->hwtemps[regnr].scalar_lastread < pos) - cs->hwtemps[regnr].scalar_lastread = pos; + cs->hwtemps[regnr].scalar_lastread = + pos; } } } @@ -1258,65 +1225,78 @@ static int find_and_prepare_slot(struct r300_fragment_program* rp, // Emit the source fetch code rp->alu.inst[pos].inst1 &= ~R300_FPI1_SRC_MASK; rp->alu.inst[pos].inst1 |= - ((cs->slot[pos].vsrc[0] << R300_FPI1_SRC0C_SHIFT) | - (cs->slot[pos].vsrc[1] << R300_FPI1_SRC1C_SHIFT) | - (cs->slot[pos].vsrc[2] << R300_FPI1_SRC2C_SHIFT)); + ((cs->slot[pos].vsrc[0] << R300_FPI1_SRC0C_SHIFT) | + (cs->slot[pos].vsrc[1] << R300_FPI1_SRC1C_SHIFT) | + (cs->slot[pos].vsrc[2] << R300_FPI1_SRC2C_SHIFT)); rp->alu.inst[pos].inst3 &= ~R300_FPI3_SRC_MASK; rp->alu.inst[pos].inst3 |= - ((cs->slot[pos].ssrc[0] << R300_FPI3_SRC0A_SHIFT) | - (cs->slot[pos].ssrc[1] << R300_FPI3_SRC1A_SHIFT) | - (cs->slot[pos].ssrc[2] << R300_FPI3_SRC2A_SHIFT)); + ((cs->slot[pos].ssrc[0] << R300_FPI3_SRC0A_SHIFT) | + (cs->slot[pos].ssrc[1] << R300_FPI3_SRC1A_SHIFT) | + (cs->slot[pos].ssrc[2] << R300_FPI3_SRC2A_SHIFT)); // Emit the argument selection code if (emit_vop) { int swz[3]; - for(i = 0; i < 3; ++i) { + for (i = 0; i < 3; ++i) { if (i < argc) { swz[i] = (v_swiz[REG_GET_VSWZ(src[i])].base + - (srcpos[i] * v_swiz[REG_GET_VSWZ(src[i])].stride)) | - ((src[i] & REG_NEGV_MASK) ? ARG_NEG : 0) | - ((src[i] & REG_ABS_MASK) ? ARG_ABS : 0); + (srcpos[i] * + v_swiz[REG_GET_VSWZ(src[i])]. + stride)) | ((src[i] & REG_NEGV_MASK) + ? ARG_NEG : 0) | ((src[i] + & + REG_ABS_MASK) + ? + ARG_ABS + : 0); } else { swz[i] = R300_FPI0_ARGC_ZERO; } } rp->alu.inst[pos].inst0 &= - ~(R300_FPI0_ARG0C_MASK|R300_FPI0_ARG1C_MASK|R300_FPI0_ARG2C_MASK); + ~(R300_FPI0_ARG0C_MASK | R300_FPI0_ARG1C_MASK | + R300_FPI0_ARG2C_MASK); rp->alu.inst[pos].inst0 |= - (swz[0] << R300_FPI0_ARG0C_SHIFT) | - (swz[1] << R300_FPI0_ARG1C_SHIFT) | - (swz[2] << R300_FPI0_ARG2C_SHIFT); + (swz[0] << R300_FPI0_ARG0C_SHIFT) | (swz[1] << + R300_FPI0_ARG1C_SHIFT) + | (swz[2] << R300_FPI0_ARG2C_SHIFT); } if (emit_sop) { int swz[3]; - for(i = 0; i < 3; ++i) { + for (i = 0; i < 3; ++i) { if (i < argc) { swz[i] = (s_swiz[REG_GET_SSWZ(src[i])].base + - (srcpos[i] * s_swiz[REG_GET_SSWZ(src[i])].stride)) | - ((src[i] & REG_NEGV_MASK) ? ARG_NEG : 0) | - ((src[i] & REG_ABS_MASK) ? ARG_ABS : 0); + (srcpos[i] * + s_swiz[REG_GET_SSWZ(src[i])]. + stride)) | ((src[i] & REG_NEGV_MASK) + ? ARG_NEG : 0) | ((src[i] + & + REG_ABS_MASK) + ? + ARG_ABS + : 0); } else { swz[i] = R300_FPI2_ARGA_ZERO; } } rp->alu.inst[pos].inst2 &= - ~(R300_FPI2_ARG0A_MASK|R300_FPI2_ARG1A_MASK|R300_FPI2_ARG2A_MASK); + ~(R300_FPI2_ARG0A_MASK | R300_FPI2_ARG1A_MASK | + R300_FPI2_ARG2A_MASK); rp->alu.inst[pos].inst2 |= - (swz[0] << R300_FPI2_ARG0A_SHIFT) | - (swz[1] << R300_FPI2_ARG1A_SHIFT) | - (swz[2] << R300_FPI2_ARG2A_SHIFT); + (swz[0] << R300_FPI2_ARG0A_SHIFT) | (swz[1] << + R300_FPI2_ARG1A_SHIFT) + | (swz[2] << R300_FPI2_ARG2A_SHIFT); } return pos; } - /** * Append an ALU instruction to the instruction list. */ @@ -1324,10 +1304,7 @@ static void emit_arith(struct r300_fragment_program *rp, int op, GLuint dest, int mask, - GLuint src0, - GLuint src1, - GLuint src2, - int flags) + GLuint src0, GLuint src1, GLuint src2, int flags) { COMPILE_STATE; GLuint src[3] = { src0, src1, src2 }; @@ -1356,11 +1333,13 @@ static void emit_arith(struct r300_fragment_program *rp, if ((mask & WRITEMASK_W) || vop == R300_FPI0_OUTC_REPL_ALPHA) emit_sop = GL_TRUE; - pos = find_and_prepare_slot(rp, emit_vop, emit_sop, argc, src, dest, mask); + pos = + find_and_prepare_slot(rp, emit_vop, emit_sop, argc, src, dest, + mask); if (pos < 0) return; - hwdest = t_hw_dst(rp, dest, GL_FALSE, pos); /* Note: Side effects wrt register allocation */ + hwdest = t_hw_dst(rp, dest, GL_FALSE, pos); /* Note: Side effects wrt register allocation */ if (flags & PFS_FLAG_SAT) { vop |= R300_FPI0_OUTC_SAT; @@ -1376,13 +1355,16 @@ static void emit_arith(struct r300_fragment_program *rp, if (REG_GET_TYPE(dest) == REG_TYPE_OUTPUT) { if (REG_GET_INDEX(dest) == FRAG_RESULT_COLR) { rp->alu.inst[pos].inst1 |= - (mask & WRITEMASK_XYZ) << R300_FPI1_DSTC_OUTPUT_MASK_SHIFT; - } else assert(0); + (mask & WRITEMASK_XYZ) << + R300_FPI1_DSTC_OUTPUT_MASK_SHIFT; + } else + assert(0); } else { rp->alu.inst[pos].inst1 |= - (mask & WRITEMASK_XYZ) << R300_FPI1_DSTC_REG_MASK_SHIFT; + (mask & WRITEMASK_XYZ) << + R300_FPI1_DSTC_REG_MASK_SHIFT; - cs->hwtemps[hwdest].vector_valid = pos+1; + cs->hwtemps[hwdest].vector_valid = pos + 1; } } @@ -1394,15 +1376,20 @@ static void emit_arith(struct r300_fragment_program *rp, if (REG_GET_TYPE(dest) == REG_TYPE_OUTPUT) { if (REG_GET_INDEX(dest) == FRAG_RESULT_COLR) { rp->alu.inst[pos].inst3 |= - (hwdest << R300_FPI3_DSTA_SHIFT) | R300_FPI3_DSTA_OUTPUT; - } else if (REG_GET_INDEX(dest) == FRAG_RESULT_DEPR) { - rp->alu.inst[pos].inst3 |= R300_FPI3_DSTA_DEPTH; - } else assert(0); + (hwdest << R300_FPI3_DSTA_SHIFT) | + R300_FPI3_DSTA_OUTPUT; + } else if (REG_GET_INDEX(dest) == + FRAG_RESULT_DEPR) { + rp->alu.inst[pos].inst3 |= + R300_FPI3_DSTA_DEPTH; + } else + assert(0); } else { rp->alu.inst[pos].inst3 |= - (hwdest << R300_FPI3_DSTA_SHIFT) | R300_FPI3_DSTA_REG; + (hwdest << R300_FPI3_DSTA_SHIFT) | + R300_FPI3_DSTA_REG; - cs->hwtemps[hwdest].scalar_valid = pos+1; + cs->hwtemps[hwdest].scalar_valid = pos + 1; } } } @@ -1416,7 +1403,7 @@ static GLuint get_attrib(struct r300_fragment_program *rp, GLuint attr) struct gl_fragment_program *mp = &rp->mesa_program; GLuint r = undef; - if (!(mp->Base.InputsRead & (1<Base.InputsRead & (1 << attr))) { ERROR("Attribute %d was not provided!\n", attr); return undef; } @@ -1430,20 +1417,19 @@ static GLuint get_attrib(struct r300_fragment_program *rp, GLuint attr) static GLfloat SinCosConsts[2][4] = { { - 1.273239545, // 4/PI - -0.405284735, // -4/(PI*PI) - 3.141592654, // PI - 0.2225 // weight - }, + 1.273239545, // 4/PI + -0.405284735, // -4/(PI*PI) + 3.141592654, // PI + 0.2225 // weight + }, { - 0.75, - 0.0, - 0.159154943, // 1/(2*PI) - 6.283185307 // 2*PI - } + 0.75, + 0.0, + 0.159154943, // 1/(2*PI) + 6.283185307 // 2*PI + } }; - /** * Emit a LIT instruction. * \p flags may be PFS_FLAG_SAT @@ -1466,13 +1452,11 @@ static GLfloat SinCosConsts[2][4] = { * emit_arith is a bit too conservative because it doesn't understand * partial writes to the vector component. */ -static const GLfloat LitConst[4] = { 127.999999, 127.999999, 127.999999, -127.999999 }; +static const GLfloat LitConst[4] = + { 127.999999, 127.999999, 127.999999, -127.999999 }; static void emit_lit(struct r300_fragment_program *rp, - GLuint dest, - int mask, - GLuint src, - int flags) + GLuint dest, int mask, GLuint src, int flags) { COMPILE_STATE; GLuint cnst; @@ -1503,39 +1487,38 @@ static void emit_lit(struct r300_fragment_program *rp, // First slot emit_arith(rp, PFS_OP_MAX, temp, WRITEMASK_XY, - keep(src), pfs_zero, undef, 0); - emit_arith(rp, PFS_OP_MAX, temp, WRITEMASK_W, - src, cnst, undef, 0); + keep(src), pfs_zero, undef, 0); + emit_arith(rp, PFS_OP_MAX, temp, WRITEMASK_W, src, cnst, undef, 0); // Second slot emit_arith(rp, PFS_OP_MIN, temp, WRITEMASK_Z, - swizzle(temp, W, W, W, W), cnst, undef, 0); + swizzle(temp, W, W, W, W), cnst, undef, 0); emit_arith(rp, PFS_OP_LG2, temp, WRITEMASK_W, - swizzle(temp, Y, Y, Y, Y), undef, undef, 0); + swizzle(temp, Y, Y, Y, Y), undef, undef, 0); // Third slot // If desired, we saturate the y result here. // This does not affect the use as a condition variable in the CMP later emit_arith(rp, PFS_OP_MAD, temp, WRITEMASK_W, - temp, swizzle(temp, Z, Z, Z, Z), pfs_zero, 0); + temp, swizzle(temp, Z, Z, Z, Z), pfs_zero, 0); emit_arith(rp, PFS_OP_MAD, temp, WRITEMASK_Y, - swizzle(temp, X, X, X, X), pfs_one, pfs_zero, flags); + swizzle(temp, X, X, X, X), pfs_one, pfs_zero, flags); // Fourth slot emit_arith(rp, PFS_OP_MAD, temp, WRITEMASK_X, - pfs_one, pfs_one, pfs_zero, 0); - emit_arith(rp, PFS_OP_EX2, temp, WRITEMASK_W, - temp, undef, undef, 0); + pfs_one, pfs_one, pfs_zero, 0); + emit_arith(rp, PFS_OP_EX2, temp, WRITEMASK_W, temp, undef, undef, 0); // Fifth slot emit_arith(rp, PFS_OP_CMP, temp, WRITEMASK_Z, - pfs_zero, swizzle(temp, W, W, W, W), negate(swizzle(temp, Y, Y, Y, Y)), flags); - emit_arith(rp, PFS_OP_MAD, temp, WRITEMASK_W, - pfs_one, pfs_one, pfs_zero, 0); + pfs_zero, swizzle(temp, W, W, W, W), + negate(swizzle(temp, Y, Y, Y, Y)), flags); + emit_arith(rp, PFS_OP_MAD, temp, WRITEMASK_W, pfs_one, pfs_one, + pfs_zero, 0); if (needTemporary) { emit_arith(rp, PFS_OP_MAD, dest, mask, - temp, pfs_one, pfs_zero, flags); + temp, pfs_one, pfs_zero, flags); free_temp(rp, temp); } else { // Decrease refcount of the destination @@ -1543,7 +1526,6 @@ static void emit_lit(struct r300_fragment_program *rp, } } - static GLboolean parse_program(struct r300_fragment_program *rp) { struct gl_fragment_program *mp = &rp->mesa_program; @@ -1558,7 +1540,7 @@ static GLboolean parse_program(struct r300_fragment_program *rp) return GL_FALSE; } - for (fpi=mp->Base.Instructions; fpi->Opcode != OPCODE_END; fpi++) { + for (fpi = mp->Base.Instructions; fpi->Opcode != OPCODE_END; fpi++) { if (fpi->SaturateMode == SATURATE_ZERO_ONE) flags = PFS_FLAG_SAT; else @@ -1573,15 +1555,13 @@ static GLboolean parse_program(struct r300_fragment_program *rp) case OPCODE_ABS: src[0] = t_src(rp, fpi->SrcReg[0]); emit_arith(rp, PFS_OP_MAD, dest, mask, - absolute(src[0]), pfs_one, pfs_zero, - flags); + absolute(src[0]), pfs_one, pfs_zero, flags); break; case OPCODE_ADD: src[0] = t_src(rp, fpi->SrcReg[0]); src[1] = t_src(rp, fpi->SrcReg[1]); emit_arith(rp, PFS_OP_MAD, dest, mask, - src[0], pfs_one, src[1], - flags); + src[0], pfs_one, src[1], flags); break; case OPCODE_CMP: src[0] = t_src(rp, fpi->SrcReg[0]); @@ -1591,8 +1571,7 @@ static GLboolean parse_program(struct r300_fragment_program *rp) * r300 - if src2.c < 0.0 ? src1.c : src0.c */ emit_arith(rp, PFS_OP_CMP, dest, mask, - src[2], src[1], src[0], - flags); + src[2], src[1], src[0], flags); break; case OPCODE_COS: /* @@ -1613,47 +1592,38 @@ static GLboolean parse_program(struct r300_fragment_program *rp) emit_arith(rp, PFS_OP_MAD, temp[0], WRITEMASK_X, swizzle(src[0], X, X, X, X), swizzle(const_sin[1], Z, Z, Z, Z), - swizzle(const_sin[1], X, X, X, X), - 0); + swizzle(const_sin[1], X, X, X, X), 0); emit_arith(rp, PFS_OP_FRC, temp[0], WRITEMASK_X, swizzle(temp[0], X, X, X, X), - undef, - undef, - 0); + undef, undef, 0); - emit_arith(rp, PFS_OP_MAD, temp[0], WRITEMASK_Z, - swizzle(temp[0], X, X, X, X), - swizzle(const_sin[1], W, W, W, W), //2*PI - negate(swizzle(const_sin[0], Z, Z, Z, Z)), //-PI + emit_arith(rp, PFS_OP_MAD, temp[0], WRITEMASK_Z, swizzle(temp[0], X, X, X, X), swizzle(const_sin[1], W, W, W, W), //2*PI + negate(swizzle(const_sin[0], Z, Z, Z, Z)), //-PI 0); /* SIN */ - emit_arith(rp, PFS_OP_MAD, temp[0], WRITEMASK_X | WRITEMASK_Y, - swizzle(temp[0], Z, Z, Z, Z), - const_sin[0], - pfs_zero, - 0); + emit_arith(rp, PFS_OP_MAD, temp[0], + WRITEMASK_X | WRITEMASK_Y, swizzle(temp[0], + Z, Z, Z, + Z), + const_sin[0], pfs_zero, 0); emit_arith(rp, PFS_OP_MAD, temp[0], WRITEMASK_X, swizzle(temp[0], Y, Y, Y, Y), absolute(swizzle(temp[0], Z, Z, Z, Z)), - swizzle(temp[0], X, X, X, X), - 0); + swizzle(temp[0], X, X, X, X), 0); emit_arith(rp, PFS_OP_MAD, temp[0], WRITEMASK_Y, swizzle(temp[0], X, X, X, X), absolute(swizzle(temp[0], X, X, X, X)), - negate(swizzle(temp[0], X, X, X, X)), - 0); - + negate(swizzle(temp[0], X, X, X, X)), 0); - emit_arith(rp, PFS_OP_MAD, dest, mask, + emit_arith(rp, PFS_OP_MAD, dest, mask, swizzle(temp[0], Y, Y, Y, Y), swizzle(const_sin[0], W, W, W, W), - swizzle(temp[0], X, X, X, X), - flags); + swizzle(temp[0], X, X, X, X), flags); free_temp(rp, temp[0]); break; @@ -1661,15 +1631,13 @@ static GLboolean parse_program(struct r300_fragment_program *rp) src[0] = t_src(rp, fpi->SrcReg[0]); src[1] = t_src(rp, fpi->SrcReg[1]); emit_arith(rp, PFS_OP_DP3, dest, mask, - src[0], src[1], undef, - flags); + src[0], src[1], undef, flags); break; case OPCODE_DP4: src[0] = t_src(rp, fpi->SrcReg[0]); src[1] = t_src(rp, fpi->SrcReg[1]); emit_arith(rp, PFS_OP_DP4, dest, mask, - src[0], src[1], undef, - flags); + src[0], src[1], undef, flags); break; case OPCODE_DPH: src[0] = t_src(rp, fpi->SrcReg[0]); @@ -1681,11 +1649,9 @@ static GLboolean parse_program(struct r300_fragment_program *rp) temp[0] = get_temp_reg(rp); src[0].s_swz = SWIZZLE_ONE; emit_arith(rp, PFS_OP_MAD, temp[0], mask, - src[0], pfs_one, pfs_zero, - 0); + src[0], pfs_one, pfs_zero, 0); emit_arith(rp, PFS_OP_DP4, dest, mask, - temp[0], src[1], undef, - flags); + temp[0], src[1], undef, flags); free_temp(rp, temp[0]); #else emit_arith(rp, PFS_OP_DP4, dest, mask, @@ -1708,18 +1674,16 @@ static GLboolean parse_program(struct r300_fragment_program *rp) /* result.x = 1.0 * result.w = src1.w */ if (mask & WRITEMASK_XW) { - REG_SET_VSWZ(src[1], SWIZZLE_111); /*Cheat*/ + REG_SET_VSWZ(src[1], SWIZZLE_111); /*Cheat */ emit_arith(rp, PFS_OP_MAD, dest, mask & WRITEMASK_XW, - src[1], pfs_one, pfs_zero, - flags); + src[1], pfs_one, pfs_zero, flags); } break; case OPCODE_EX2: src[0] = t_scalar_src(rp, fpi->SrcReg[0]); emit_arith(rp, PFS_OP_EX2, dest, mask, - src[0], undef, undef, - flags); + src[0], undef, undef, flags); break; case OPCODE_FLR: src[0] = t_src(rp, fpi->SrcReg[0]); @@ -1728,18 +1692,15 @@ static GLboolean parse_program(struct r300_fragment_program *rp) * MAD dest, src0, 1.0, -temp */ emit_arith(rp, PFS_OP_FRC, temp[0], mask, - keep(src[0]), undef, undef, - 0); + keep(src[0]), undef, undef, 0); emit_arith(rp, PFS_OP_MAD, dest, mask, - src[0], pfs_one, negate(temp[0]), - flags); + src[0], pfs_one, negate(temp[0]), flags); free_temp(rp, temp[0]); break; case OPCODE_FRC: src[0] = t_src(rp, fpi->SrcReg[0]); emit_arith(rp, PFS_OP_FRC, dest, mask, - src[0], undef, undef, - flags); + src[0], undef, undef, flags); break; case OPCODE_KIL: emit_tex(rp, fpi, R300_FPITX_OP_KIL); @@ -1747,8 +1708,7 @@ static GLboolean parse_program(struct r300_fragment_program *rp) case OPCODE_LG2: src[0] = t_scalar_src(rp, fpi->SrcReg[0]); emit_arith(rp, PFS_OP_LG2, dest, mask, - src[0], undef, undef, - flags); + src[0], undef, undef, flags); break; case OPCODE_LIT: src[0] = t_src(rp, fpi->SrcReg[0]); @@ -1768,8 +1728,7 @@ static GLboolean parse_program(struct r300_fragment_program *rp) negate(keep(src[0])), keep(src[2]), src[2], 0); emit_arith(rp, PFS_OP_MAD, dest, mask, - src[0], src[1], temp[0], - flags); + src[0], src[1], temp[0], flags); free_temp(rp, temp[0]); break; case OPCODE_MAD: @@ -1777,63 +1736,53 @@ static GLboolean parse_program(struct r300_fragment_program *rp) src[1] = t_src(rp, fpi->SrcReg[1]); src[2] = t_src(rp, fpi->SrcReg[2]); emit_arith(rp, PFS_OP_MAD, dest, mask, - src[0], src[1], src[2], - flags); + src[0], src[1], src[2], flags); break; case OPCODE_MAX: src[0] = t_src(rp, fpi->SrcReg[0]); src[1] = t_src(rp, fpi->SrcReg[1]); emit_arith(rp, PFS_OP_MAX, dest, mask, - src[0], src[1], undef, - flags); + src[0], src[1], undef, flags); break; case OPCODE_MIN: src[0] = t_src(rp, fpi->SrcReg[0]); src[1] = t_src(rp, fpi->SrcReg[1]); emit_arith(rp, PFS_OP_MIN, dest, mask, - src[0], src[1], undef, - flags); + src[0], src[1], undef, flags); break; case OPCODE_MOV: case OPCODE_SWZ: src[0] = t_src(rp, fpi->SrcReg[0]); emit_arith(rp, PFS_OP_MAD, dest, mask, - src[0], pfs_one, pfs_zero, - flags); + src[0], pfs_one, pfs_zero, flags); break; case OPCODE_MUL: src[0] = t_src(rp, fpi->SrcReg[0]); src[1] = t_src(rp, fpi->SrcReg[1]); emit_arith(rp, PFS_OP_MAD, dest, mask, - src[0], src[1], pfs_zero, - flags); + src[0], src[1], pfs_zero, flags); break; case OPCODE_POW: src[0] = t_scalar_src(rp, fpi->SrcReg[0]); src[1] = t_scalar_src(rp, fpi->SrcReg[1]); temp[0] = get_temp_reg(rp); emit_arith(rp, PFS_OP_LG2, temp[0], WRITEMASK_W, - src[0], undef, undef, - 0); + src[0], undef, undef, 0); emit_arith(rp, PFS_OP_MAD, temp[0], WRITEMASK_W, - temp[0], src[1], pfs_zero, - 0); + temp[0], src[1], pfs_zero, 0); emit_arith(rp, PFS_OP_EX2, dest, fpi->DstReg.WriteMask, - temp[0], undef, undef, - 0); + temp[0], undef, undef, 0); free_temp(rp, temp[0]); break; case OPCODE_RCP: src[0] = t_scalar_src(rp, fpi->SrcReg[0]); emit_arith(rp, PFS_OP_RCP, dest, mask, - src[0], undef, undef, - flags); + src[0], undef, undef, flags); break; case OPCODE_RSQ: src[0] = t_scalar_src(rp, fpi->SrcReg[0]); emit_arith(rp, PFS_OP_RSQ, dest, mask, - absolute(src[0]), pfs_zero, pfs_zero, - flags); + absolute(src[0]), pfs_zero, pfs_zero, flags); break; case OPCODE_SCS: /* @@ -1850,61 +1799,55 @@ static GLboolean parse_program(struct r300_fragment_program *rp) src[0] = t_scalar_src(rp, fpi->SrcReg[0]); /* x = -abs(x)+0.5*PI */ - emit_arith(rp, PFS_OP_MAD, temp[0], WRITEMASK_Z, - swizzle(const_sin[0], Z, Z, Z, Z), //PI + emit_arith(rp, PFS_OP_MAD, temp[0], WRITEMASK_Z, swizzle(const_sin[0], Z, Z, Z, Z), //PI pfs_half, - negate(abs(swizzle(keep(src[0]), X, X, X, X))), + negate(abs + (swizzle(keep(src[0]), X, X, X, X))), 0); /* C*x (sin) */ emit_arith(rp, PFS_OP_MAD, temp[0], WRITEMASK_W, swizzle(const_sin[0], Y, Y, Y, Y), swizzle(keep(src[0]), X, X, X, X), - pfs_zero, - 0); + pfs_zero, 0); /* B*x, C*x (cos) */ - emit_arith(rp, PFS_OP_MAD, temp[0], WRITEMASK_X | WRITEMASK_Y, - swizzle(temp[0], Z, Z, Z, Z), - const_sin[0], - pfs_zero, - 0); + emit_arith(rp, PFS_OP_MAD, temp[0], + WRITEMASK_X | WRITEMASK_Y, swizzle(temp[0], + Z, Z, Z, + Z), + const_sin[0], pfs_zero, 0); /* B*x (sin) */ emit_arith(rp, PFS_OP_MAD, temp[1], WRITEMASK_W, swizzle(const_sin[0], X, X, X, X), - keep(src[0]), - pfs_zero, - 0); + keep(src[0]), pfs_zero, 0); - /* y = B*x + C*x*abs(x) (sin)*/ - emit_arith(rp, PFS_OP_MAD, temp[1], WRITEMASK_Z, + /* y = B*x + C*x*abs(x) (sin) */ + emit_arith(rp, PFS_OP_MAD, temp[1], WRITEMASK_Z, absolute(src[0]), swizzle(temp[0], W, W, W, W), - swizzle(temp[1], W, W, W, W), - 0); + swizzle(temp[1], W, W, W, W), 0); - /* y = B*x + C*x*abs(x) (cos)*/ + /* y = B*x + C*x*abs(x) (cos) */ emit_arith(rp, PFS_OP_MAD, temp[1], WRITEMASK_W, swizzle(temp[0], Y, Y, Y, Y), absolute(swizzle(temp[0], Z, Z, Z, Z)), - swizzle(temp[0], X, X, X, X), - 0); + swizzle(temp[0], X, X, X, X), 0); /* y*abs(y) - y (cos), y*abs(y) - y (sin) */ - emit_arith(rp, PFS_OP_MAD, temp[0], WRITEMASK_X | WRITEMASK_Y, - swizzle(temp[1], W, Z, Y, X), + emit_arith(rp, PFS_OP_MAD, temp[0], + WRITEMASK_X | WRITEMASK_Y, swizzle(temp[1], + W, Z, Y, + X), absolute(swizzle(temp[1], W, Z, Y, X)), - negate(swizzle(temp[1], W, Z, Y, X)), - - 0); + negate(swizzle(temp[1], W, Z, Y, X)), 0); /* dest.xy = mad(temp.xy, P, temp2.wz) */ - emit_arith(rp, PFS_OP_MAD, dest, mask & (WRITEMASK_X | WRITEMASK_Y), - temp[0], + emit_arith(rp, PFS_OP_MAD, dest, + mask & (WRITEMASK_X | WRITEMASK_Y), temp[0], swizzle(const_sin[0], W, W, W, W), - swizzle(temp[1], W, Z, Y, X), - flags); + swizzle(temp[1], W, Z, Y, X), flags); free_temp(rp, temp[0]); free_temp(rp, temp[1]); @@ -1917,11 +1860,9 @@ static GLboolean parse_program(struct r300_fragment_program *rp) * dest.c = (temp.c < 0.0) ? 0 : 1 */ emit_arith(rp, PFS_OP_MAD, temp[0], mask, - src[0], pfs_one, negate(src[1]), - 0); + src[0], pfs_one, negate(src[1]), 0); emit_arith(rp, PFS_OP_CMP, dest, mask, - pfs_one, pfs_zero, temp[0], - 0); + pfs_one, pfs_zero, temp[0], 0); free_temp(rp, temp[0]); break; case OPCODE_SIN: @@ -1937,53 +1878,43 @@ static GLboolean parse_program(struct r300_fragment_program *rp) const_sin[1] = emit_const4fv(rp, SinCosConsts[1]); src[0] = t_scalar_src(rp, fpi->SrcReg[0]); - /* do range reduction */ emit_arith(rp, PFS_OP_MAD, temp[0], WRITEMASK_X, swizzle(keep(src[0]), X, X, X, X), swizzle(const_sin[1], Z, Z, Z, Z), - pfs_half, - 0); + pfs_half, 0); emit_arith(rp, PFS_OP_FRC, temp[0], WRITEMASK_X, swizzle(temp[0], X, X, X, X), - undef, - undef, - 0); + undef, undef, 0); - emit_arith(rp, PFS_OP_MAD, temp[0], WRITEMASK_Z, - swizzle(temp[0], X, X, X, X), - swizzle(const_sin[1], W, W, W, W), //2*PI - negate(swizzle(const_sin[0], Z, Z, Z, Z)), //PI + emit_arith(rp, PFS_OP_MAD, temp[0], WRITEMASK_Z, swizzle(temp[0], X, X, X, X), swizzle(const_sin[1], W, W, W, W), //2*PI + negate(swizzle(const_sin[0], Z, Z, Z, Z)), //PI 0); /* SIN */ - emit_arith(rp, PFS_OP_MAD, temp[0], WRITEMASK_X | WRITEMASK_Y, - swizzle(temp[0], Z, Z, Z, Z), - const_sin[0], - pfs_zero, - 0); + emit_arith(rp, PFS_OP_MAD, temp[0], + WRITEMASK_X | WRITEMASK_Y, swizzle(temp[0], + Z, Z, Z, + Z), + const_sin[0], pfs_zero, 0); emit_arith(rp, PFS_OP_MAD, temp[0], WRITEMASK_X, swizzle(temp[0], Y, Y, Y, Y), absolute(swizzle(temp[0], Z, Z, Z, Z)), - swizzle(temp[0], X, X, X, X), - 0); + swizzle(temp[0], X, X, X, X), 0); emit_arith(rp, PFS_OP_MAD, temp[0], WRITEMASK_Y, swizzle(temp[0], X, X, X, X), absolute(swizzle(temp[0], X, X, X, X)), - negate(swizzle(temp[0], X, X, X, X)), - 0); - + negate(swizzle(temp[0], X, X, X, X)), 0); - emit_arith(rp, PFS_OP_MAD, dest, mask, + emit_arith(rp, PFS_OP_MAD, dest, mask, swizzle(temp[0], Y, Y, Y, Y), swizzle(const_sin[0], W, W, W, W), - swizzle(temp[0], X, X, X, X), - flags); + swizzle(temp[0], X, X, X, X), flags); free_temp(rp, temp[0]); break; @@ -1995,19 +1926,16 @@ static GLboolean parse_program(struct r300_fragment_program *rp) * dest.c = (temp.c < 0.0) ? 1 : 0 */ emit_arith(rp, PFS_OP_MAD, temp[0], mask, - src[0], pfs_one, negate(src[1]), - 0); + src[0], pfs_one, negate(src[1]), 0); emit_arith(rp, PFS_OP_CMP, dest, mask, - pfs_zero, pfs_one, temp[0], - 0); + pfs_zero, pfs_one, temp[0], 0); free_temp(rp, temp[0]); break; case OPCODE_SUB: src[0] = t_src(rp, fpi->SrcReg[0]); src[1] = t_src(rp, fpi->SrcReg[1]); emit_arith(rp, PFS_OP_MAD, dest, mask, - src[0], pfs_one, negate(src[1]), - flags); + src[0], pfs_one, negate(src[1]), flags); break; case OPCODE_TEX: emit_tex(rp, fpi, R300_FPITX_OP_TEX); @@ -2018,28 +1946,29 @@ static GLboolean parse_program(struct r300_fragment_program *rp) case OPCODE_TXP: emit_tex(rp, fpi, R300_FPITX_OP_TXP); break; - case OPCODE_XPD: { - src[0] = t_src(rp, fpi->SrcReg[0]); - src[1] = t_src(rp, fpi->SrcReg[1]); - temp[0] = get_temp_reg(rp); - /* temp = src0.zxy * src1.yzx */ - emit_arith(rp, PFS_OP_MAD, temp[0], WRITEMASK_XYZ, - swizzle(keep(src[0]), Z, X, Y, W), - swizzle(keep(src[1]), Y, Z, X, W), - pfs_zero, - 0); - /* dest.xyz = src0.yzx * src1.zxy - temp - * dest.w = undefined - * */ - emit_arith(rp, PFS_OP_MAD, dest, mask & WRITEMASK_XYZ, - swizzle(src[0], Y, Z, X, W), - swizzle(src[1], Z, X, Y, W), - negate(temp[0]), - flags); - /* cleanup */ - free_temp(rp, temp[0]); - break; - } + case OPCODE_XPD:{ + src[0] = t_src(rp, fpi->SrcReg[0]); + src[1] = t_src(rp, fpi->SrcReg[1]); + temp[0] = get_temp_reg(rp); + /* temp = src0.zxy * src1.yzx */ + emit_arith(rp, PFS_OP_MAD, temp[0], + WRITEMASK_XYZ, swizzle(keep(src[0]), + Z, X, Y, W), + swizzle(keep(src[1]), Y, Z, X, W), + pfs_zero, 0); + /* dest.xyz = src0.yzx * src1.zxy - temp + * dest.w = undefined + * */ + emit_arith(rp, PFS_OP_MAD, dest, + mask & WRITEMASK_XYZ, swizzle(src[0], + Y, Z, + X, W), + swizzle(src[1], Z, X, Y, W), + negate(temp[0]), flags); + /* cleanup */ + free_temp(rp, temp[0]); + break; + } default: ERROR("unknown fpi->Opcode %d\n", fpi->Opcode); break; @@ -2065,8 +1994,8 @@ static void insert_wpos(struct gl_program *prog) /* should do something else if no temps left... */ prog->NumTemporaries++; - fpi = _mesa_alloc_instructions (prog->NumInstructions + 3); - _mesa_init_instructions (fpi, prog->NumInstructions + 3); + fpi = _mesa_alloc_instructions(prog->NumInstructions + 3); + _mesa_init_instructions(fpi, prog->NumInstructions + 3); /* perspective divide */ fpi[i].Opcode = OPCODE_RCP; @@ -2109,35 +2038,39 @@ static void insert_wpos(struct gl_program *prog) fpi[i].SrcReg[0].File = PROGRAM_TEMPORARY; fpi[i].SrcReg[0].Index = tempregi; - fpi[i].SrcReg[0].Swizzle = MAKE_SWIZZLE4(SWIZZLE_X, SWIZZLE_Y, SWIZZLE_Z, SWIZZLE_ZERO); + fpi[i].SrcReg[0].Swizzle = + MAKE_SWIZZLE4(SWIZZLE_X, SWIZZLE_Y, SWIZZLE_Z, SWIZZLE_ZERO); fpi[i].SrcReg[1].File = PROGRAM_STATE_VAR; fpi[i].SrcReg[1].Index = window_index; - fpi[i].SrcReg[1].Swizzle = MAKE_SWIZZLE4(SWIZZLE_X, SWIZZLE_Y, SWIZZLE_Z, SWIZZLE_ZERO); + fpi[i].SrcReg[1].Swizzle = + MAKE_SWIZZLE4(SWIZZLE_X, SWIZZLE_Y, SWIZZLE_Z, SWIZZLE_ZERO); fpi[i].SrcReg[2].File = PROGRAM_STATE_VAR; fpi[i].SrcReg[2].Index = window_index; - fpi[i].SrcReg[2].Swizzle = MAKE_SWIZZLE4(SWIZZLE_X, SWIZZLE_Y, SWIZZLE_Z, SWIZZLE_ZERO); + fpi[i].SrcReg[2].Swizzle = + MAKE_SWIZZLE4(SWIZZLE_X, SWIZZLE_Y, SWIZZLE_Z, SWIZZLE_ZERO); i++; - _mesa_copy_instructions (&fpi[i], prog->Instructions, prog->NumInstructions); + _mesa_copy_instructions(&fpi[i], prog->Instructions, + prog->NumInstructions); free(prog->Instructions); prog->Instructions = fpi; prog->NumInstructions += i; - fpi = &prog->Instructions[prog->NumInstructions-1]; + fpi = &prog->Instructions[prog->NumInstructions - 1]; assert(fpi->Opcode == OPCODE_END); - for(fpi = &prog->Instructions[3]; fpi->Opcode != OPCODE_END; fpi++){ - for(i=0; i<3; i++) - if( fpi->SrcReg[i].File == PROGRAM_INPUT && - fpi->SrcReg[i].Index == FRAG_ATTRIB_WPOS ){ - fpi->SrcReg[i].File = PROGRAM_TEMPORARY; - fpi->SrcReg[i].Index = tempregi; - } + for (fpi = &prog->Instructions[3]; fpi->Opcode != OPCODE_END; fpi++) { + for (i = 0; i < 3; i++) + if (fpi->SrcReg[i].File == PROGRAM_INPUT && + fpi->SrcReg[i].Index == FRAG_ATTRIB_WPOS) { + fpi->SrcReg[i].File = PROGRAM_TEMPORARY; + fpi->SrcReg[i].Index = tempregi; + } } } @@ -2150,25 +2083,26 @@ static void init_program(r300ContextPtr r300, struct r300_fragment_program *rp) struct gl_fragment_program *mp = &rp->mesa_program; struct prog_instruction *fpi; GLuint InputsRead = mp->Base.InputsRead; - GLuint temps_used = 0; /* for rp->temps[] */ - int i,j; + GLuint temps_used = 0; /* for rp->temps[] */ + int i, j; /* New compile, reset tracking data */ - rp->optimization = driQueryOptioni(&r300->radeon.optionCache, "fp_optimization"); + rp->optimization = + driQueryOptioni(&r300->radeon.optionCache, "fp_optimization"); rp->translated = GL_FALSE; - rp->error = GL_FALSE; - rp->cs = cs = &(R300_CONTEXT(rp->ctx)->state.pfs_compile); + rp->error = GL_FALSE; + rp->cs = cs = &(R300_CONTEXT(rp->ctx)->state.pfs_compile); rp->tex.length = 0; - rp->cur_node = 0; + rp->cur_node = 0; rp->first_node_has_tex = 0; - rp->const_nr = 0; + rp->const_nr = 0; rp->max_temp_idx = 0; rp->node[0].alu_end = -1; rp->node[0].tex_end = -1; _mesa_memset(cs, 0, sizeof(*rp->cs)); - for (i=0;islot[i].vsrc[j] = SRC_CONST; cs->slot[i].ssrc[j] = SRC_CONST; } @@ -2183,10 +2117,11 @@ static void init_program(r300ContextPtr r300, struct r300_fragment_program *rp) */ /* Texcoords come first */ - for (i=0;ictx->Const.MaxTextureUnits;i++) { + for (i = 0; i < rp->ctx->Const.MaxTextureUnits; i++) { if (InputsRead & (FRAG_BIT_TEX0 << i)) { - cs->inputs[FRAG_ATTRIB_TEX0+i].refcount = 0; - cs->inputs[FRAG_ATTRIB_TEX0+i].reg = get_hw_temp(rp, 0); + cs->inputs[FRAG_ATTRIB_TEX0 + i].refcount = 0; + cs->inputs[FRAG_ATTRIB_TEX0 + i].reg = + get_hw_temp(rp, 0); } } InputsRead &= ~FRAG_BITS_TEX_ANY; @@ -2215,11 +2150,11 @@ static void init_program(r300ContextPtr r300, struct r300_fragment_program *rp) /* Anything else */ if (InputsRead) { - WARN_ONCE("Don't know how to handle inputs 0x%x\n", - InputsRead); + WARN_ONCE("Don't know how to handle inputs 0x%x\n", InputsRead); /* force read from hwreg 0 for now */ - for (i=0;i<32;i++) - if (InputsRead & (1<inputs[i].reg = 0; + for (i = 0; i < 32; i++) + if (InputsRead & (1 << i)) + cs->inputs[i].reg = 0; } /* Pre-parse the mesa program, grabbing refcounts on input/temp regs. @@ -2230,14 +2165,14 @@ static void init_program(r300ContextPtr r300, struct r300_fragment_program *rp) return; } - for (fpi=mp->Base.Instructions;fpi->Opcode != OPCODE_END; fpi++) { + for (fpi = mp->Base.Instructions; fpi->Opcode != OPCODE_END; fpi++) { int idx; - for (i=0;i<3;i++) { + for (i = 0; i < 3; i++) { idx = fpi->SrcReg[i].Index; switch (fpi->SrcReg[i].File) { case PROGRAM_TEMPORARY: - if (!(temps_used & (1<temps[idx].reg = -1; cs->temps[idx].refcount = 1; temps_used |= (1 << idx); @@ -2247,13 +2182,14 @@ static void init_program(r300ContextPtr r300, struct r300_fragment_program *rp) case PROGRAM_INPUT: cs->inputs[idx].refcount++; break; - default: break; + default: + break; } } idx = fpi->DstReg.Index; if (fpi->DstReg.File == PROGRAM_TEMPORARY) { - if (!(temps_used & (1<temps[idx].reg = -1; cs->temps[idx].refcount = 1; temps_used |= (1 << idx); @@ -2273,7 +2209,8 @@ static void update_params(struct r300_fragment_program *rp) _mesa_load_state_parameters(rp->ctx, mp->Base.Parameters); } -void r300_translate_fragment_shader(r300ContextPtr r300, struct r300_fragment_program *rp) +void r300_translate_fragment_shader(r300ContextPtr r300, + struct r300_fragment_program *rp) { struct r300_pfs_compile_state *cs = NULL; @@ -2289,18 +2226,19 @@ void r300_translate_fragment_shader(r300ContextPtr r300, struct r300_fragment_pr /* Finish off */ rp->node[rp->cur_node].alu_end = - cs->nrslots - rp->node[rp->cur_node].alu_offset - 1; + cs->nrslots - rp->node[rp->cur_node].alu_offset - 1; if (rp->node[rp->cur_node].tex_end < 0) rp->node[rp->cur_node].tex_end = 0; rp->alu_offset = 0; - rp->alu_end = cs->nrslots - 1; + rp->alu_end = cs->nrslots - 1; rp->tex_offset = 0; - rp->tex_end = rp->tex.length ? rp->tex.length - 1 : 0; + rp->tex_end = rp->tex.length ? rp->tex.length - 1 : 0; assert(rp->node[rp->cur_node].alu_end >= 0); assert(rp->alu_end >= 0); rp->translated = GL_TRUE; - if (RADEON_DEBUG & DEBUG_PIXEL) dump_program(rp); + if (RADEON_DEBUG & DEBUG_PIXEL) + dump_program(rp); r300UpdateStateParameters(rp->ctx, _NEW_PROGRAM); } @@ -2317,26 +2255,29 @@ static void dump_program(struct r300_fragment_program *rp) fprintf(stderr, "Mesa program:\n"); fprintf(stderr, "-------------\n"); - _mesa_print_program(&rp->mesa_program.Base); + _mesa_print_program(&rp->mesa_program.Base); fflush(stdout); fprintf(stderr, "Hardware program\n"); fprintf(stderr, "----------------\n"); - for (n = 0; n < (rp->cur_node+1); n++) { - fprintf(stderr, "NODE %d: alu_offset: %d, tex_offset: %d, "\ + for (n = 0; n < (rp->cur_node + 1); n++) { + fprintf(stderr, "NODE %d: alu_offset: %d, tex_offset: %d, " "alu_end: %d, tex_end: %d\n", n, rp->node[n].alu_offset, rp->node[n].tex_offset, - rp->node[n].alu_end, - rp->node[n].tex_end); + rp->node[n].alu_end, rp->node[n].tex_end); if (rp->tex.length) { fprintf(stderr, " TEX:\n"); - for(i = rp->node[n].tex_offset; i <= rp->node[n].tex_offset+rp->node[n].tex_end; ++i) { - const char* instr; - - switch((rp->tex.inst[i] >> R300_FPITX_OPCODE_SHIFT) & 15) { + for (i = rp->node[n].tex_offset; + i <= rp->node[n].tex_offset + rp->node[n].tex_end; + ++i) { + const char *instr; + + switch ((rp->tex. + inst[i] >> R300_FPITX_OPCODE_SHIFT) & + 15) { case R300_FPITX_OP_TEX: instr = "TEX"; break; @@ -2353,94 +2294,121 @@ static void dump_program(struct r300_fragment_program *rp) instr = "UNKNOWN"; } - fprintf(stderr, " %s t%i, %c%i, texture[%i] (%08x)\n", - instr, - (rp->tex.inst[i] >> R300_FPITX_DST_SHIFT) & 31, - (rp->tex.inst[i] & R300_FPITX_SRC_CONST) ? 'c': 't', - (rp->tex.inst[i] >> R300_FPITX_SRC_SHIFT) & 31, - (rp->tex.inst[i] & R300_FPITX_IMAGE_MASK) >> R300_FPITX_IMAGE_SHIFT, - rp->tex.inst[i]); + fprintf(stderr, + " %s t%i, %c%i, texture[%i] (%08x)\n", + instr, + (rp->tex. + inst[i] >> R300_FPITX_DST_SHIFT) & 31, + (rp->tex. + inst[i] & R300_FPITX_SRC_CONST) ? 'c' : + 't', + (rp->tex. + inst[i] >> R300_FPITX_SRC_SHIFT) & 31, + (rp->tex. + inst[i] & R300_FPITX_IMAGE_MASK) >> + R300_FPITX_IMAGE_SHIFT, + rp->tex.inst[i]); } } - for(i = rp->node[n].alu_offset; i <= rp->node[n].alu_offset+rp->node[n].alu_end; ++i) { + for (i = rp->node[n].alu_offset; + i <= rp->node[n].alu_offset + rp->node[n].alu_end; ++i) { char srcc[3][10], dstc[20]; char srca[3][10], dsta[20]; char argc[3][20]; char arga[3][20]; char flags[5], tmp[10]; - for(j = 0; j < 3; ++j) { - int regc = rp->alu.inst[i].inst1 >> (j*6); - int rega = rp->alu.inst[i].inst3 >> (j*6); + for (j = 0; j < 3; ++j) { + int regc = rp->alu.inst[i].inst1 >> (j * 6); + int rega = rp->alu.inst[i].inst3 >> (j * 6); - sprintf(srcc[j], "%c%i", (regc & 32) ? 'c' : 't', regc & 31); - sprintf(srca[j], "%c%i", (rega & 32) ? 'c' : 't', rega & 31); + sprintf(srcc[j], "%c%i", + (regc & 32) ? 'c' : 't', regc & 31); + sprintf(srca[j], "%c%i", + (rega & 32) ? 'c' : 't', rega & 31); } dstc[0] = 0; sprintf(flags, "%s%s%s", - (rp->alu.inst[i].inst1 & R300_FPI1_DSTC_REG_X) ? "x" : "", - (rp->alu.inst[i].inst1 & R300_FPI1_DSTC_REG_Y) ? "y" : "", - (rp->alu.inst[i].inst1 & R300_FPI1_DSTC_REG_Z) ? "z" : ""); + (rp->alu.inst[i]. + inst1 & R300_FPI1_DSTC_REG_X) ? "x" : "", + (rp->alu.inst[i]. + inst1 & R300_FPI1_DSTC_REG_Y) ? "y" : "", + (rp->alu.inst[i]. + inst1 & R300_FPI1_DSTC_REG_Z) ? "z" : ""); if (flags[0] != 0) { sprintf(dstc, "t%i.%s ", - (rp->alu.inst[i].inst1 >> R300_FPI1_DSTC_SHIFT) & 31, - flags); + (rp->alu.inst[i]. + inst1 >> R300_FPI1_DSTC_SHIFT) & 31, + flags); } sprintf(flags, "%s%s%s", - (rp->alu.inst[i].inst1 & R300_FPI1_DSTC_OUTPUT_X) ? "x" : "", - (rp->alu.inst[i].inst1 & R300_FPI1_DSTC_OUTPUT_Y) ? "y" : "", - (rp->alu.inst[i].inst1 & R300_FPI1_DSTC_OUTPUT_Z) ? "z" : ""); + (rp->alu.inst[i]. + inst1 & R300_FPI1_DSTC_OUTPUT_X) ? "x" : "", + (rp->alu.inst[i]. + inst1 & R300_FPI1_DSTC_OUTPUT_Y) ? "y" : "", + (rp->alu.inst[i]. + inst1 & R300_FPI1_DSTC_OUTPUT_Z) ? "z" : ""); if (flags[0] != 0) { sprintf(tmp, "o%i.%s", - (rp->alu.inst[i].inst1 >> R300_FPI1_DSTC_SHIFT) & 31, - flags); + (rp->alu.inst[i]. + inst1 >> R300_FPI1_DSTC_SHIFT) & 31, + flags); strcat(dstc, tmp); } dsta[0] = 0; if (rp->alu.inst[i].inst3 & R300_FPI3_DSTA_REG) { - sprintf(dsta, "t%i.w ", (rp->alu.inst[i].inst3 >> R300_FPI3_DSTA_SHIFT) & 31); + sprintf(dsta, "t%i.w ", + (rp->alu.inst[i]. + inst3 >> R300_FPI3_DSTA_SHIFT) & 31); } if (rp->alu.inst[i].inst3 & R300_FPI3_DSTA_OUTPUT) { - sprintf(tmp, "o%i.w ", (rp->alu.inst[i].inst3 >> R300_FPI3_DSTA_SHIFT) & 31); + sprintf(tmp, "o%i.w ", + (rp->alu.inst[i]. + inst3 >> R300_FPI3_DSTA_SHIFT) & 31); strcat(dsta, tmp); } if (rp->alu.inst[i].inst3 & R300_FPI3_DSTA_DEPTH) { strcat(dsta, "Z"); } - fprintf(stderr, "%3i: xyz: %3s %3s %3s -> %-20s (%08x)\n" - " w: %3s %3s %3s -> %-20s (%08x)\n", - i, - srcc[0], srcc[1], srcc[2], dstc, rp->alu.inst[i].inst1, - srca[0], srca[1], srca[2], dsta, rp->alu.inst[i].inst3); + fprintf(stderr, + "%3i: xyz: %3s %3s %3s -> %-20s (%08x)\n" + " w: %3s %3s %3s -> %-20s (%08x)\n", i, + srcc[0], srcc[1], srcc[2], dstc, + rp->alu.inst[i].inst1, srca[0], srca[1], + srca[2], dsta, rp->alu.inst[i].inst3); - for(j = 0; j < 3; ++j) { - int regc = rp->alu.inst[i].inst0 >> (j*7); - int rega = rp->alu.inst[i].inst2 >> (j*7); + for (j = 0; j < 3; ++j) { + int regc = rp->alu.inst[i].inst0 >> (j * 7); + int rega = rp->alu.inst[i].inst2 >> (j * 7); int d; char buf[20]; d = regc & 31; if (d < 12) { - switch(d % 4) { - case R300_FPI0_ARGC_SRC0C_XYZ: - sprintf(buf, "%s.xyz", srcc[d / 4]); - break; - case R300_FPI0_ARGC_SRC0C_XXX: - sprintf(buf, "%s.xxx", srcc[d / 4]); - break; - case R300_FPI0_ARGC_SRC0C_YYY: - sprintf(buf, "%s.yyy", srcc[d / 4]); - break; - case R300_FPI0_ARGC_SRC0C_ZZZ: - sprintf(buf, "%s.zzz", srcc[d / 4]); - break; + switch (d % 4) { + case R300_FPI0_ARGC_SRC0C_XYZ: + sprintf(buf, "%s.xyz", + srcc[d / 4]); + break; + case R300_FPI0_ARGC_SRC0C_XXX: + sprintf(buf, "%s.xxx", + srcc[d / 4]); + break; + case R300_FPI0_ARGC_SRC0C_YYY: + sprintf(buf, "%s.yyy", + srcc[d / 4]); + break; + case R300_FPI0_ARGC_SRC0C_ZZZ: + sprintf(buf, "%s.zzz", + srcc[d / 4]); + break; } } else if (d < 15) { - sprintf(buf, "%s.www", srca[d-12]); + sprintf(buf, "%s.www", srca[d - 12]); } else if (d == 20) { sprintf(buf, "0.0"); } else if (d == 21) { @@ -2449,32 +2417,35 @@ static void dump_program(struct r300_fragment_program *rp) sprintf(buf, "0.5"); } else if (d >= 23 && d < 32) { d -= 23; - switch(d/3) { - case 0: - sprintf(buf, "%s.yzx", srcc[d % 3]); - break; - case 1: - sprintf(buf, "%s.zxy", srcc[d % 3]); - break; - case 2: - sprintf(buf, "%s.Wzy", srcc[d % 3]); - break; + switch (d / 3) { + case 0: + sprintf(buf, "%s.yzx", + srcc[d % 3]); + break; + case 1: + sprintf(buf, "%s.zxy", + srcc[d % 3]); + break; + case 2: + sprintf(buf, "%s.Wzy", + srcc[d % 3]); + break; } } else { sprintf(buf, "%i", d); } sprintf(argc[j], "%s%s%s%s", - (regc & 32) ? "-" : "", - (regc & 64) ? "|" : "", - buf, - (regc & 64) ? "|" : ""); + (regc & 32) ? "-" : "", + (regc & 64) ? "|" : "", + buf, (regc & 64) ? "|" : ""); d = rega & 31; if (d < 9) { - sprintf(buf, "%s.%c", srcc[d / 3], 'x' + (char)(d%3)); + sprintf(buf, "%s.%c", srcc[d / 3], + 'x' + (char)(d % 3)); } else if (d < 12) { - sprintf(buf, "%s.w", srca[d-9]); + sprintf(buf, "%s.w", srca[d - 9]); } else if (d == 16) { sprintf(buf, "0.0"); } else if (d == 17) { @@ -2486,16 +2457,16 @@ static void dump_program(struct r300_fragment_program *rp) } sprintf(arga[j], "%s%s%s%s", - (rega & 32) ? "-" : "", - (rega & 64) ? "|" : "", - buf, - (rega & 64) ? "|" : ""); + (rega & 32) ? "-" : "", + (rega & 64) ? "|" : "", + buf, (rega & 64) ? "|" : ""); } fprintf(stderr, " xyz: %8s %8s %8s op: %08x\n" - " w: %8s %8s %8s op: %08x\n", - argc[0], argc[1], argc[2], rp->alu.inst[i].inst0, - arga[0], arga[1], arga[2], rp->alu.inst[i].inst2); + " w: %8s %8s %8s op: %08x\n", + argc[0], argc[1], argc[2], + rp->alu.inst[i].inst0, arga[0], arga[1], + arga[2], rp->alu.inst[i].inst2); } } } diff --git a/src/mesa/drivers/dri/r300/r300_fragprog.h b/src/mesa/drivers/dri/r300/r300_fragprog.h index 1d683acdd92..79f3e70fa63 100644 --- a/src/mesa/drivers/dri/r300/r300_fragprog.h +++ b/src/mesa/drivers/dri/r300/r300_fragprog.h @@ -98,6 +98,7 @@ typedef struct r300_fragment_program_swizzle { struct r300_fragment_program; -extern void r300_translate_fragment_shader(r300ContextPtr r300, struct r300_fragment_program *rp); +extern void r300_translate_fragment_shader(r300ContextPtr r300, + struct r300_fragment_program *rp); #endif -- cgit v1.2.3 From 81c6516af1f3f7284032cb54ffca5225a54f6b26 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 04:12:04 +0000 Subject: r300: Indented r300_vertprog.[ch]. --- src/mesa/drivers/dri/r300/r300_vertprog.c | 1158 +++++++++++++++++------------ src/mesa/drivers/dri/r300/r300_vertprog.h | 7 +- 2 files changed, 674 insertions(+), 491 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_vertprog.c b/src/mesa/drivers/dri/r300/r300_vertprog.c index 39d127c64ac..4d0c9c27190 100644 --- a/src/mesa/drivers/dri/r300/r300_vertprog.c +++ b/src/mesa/drivers/dri/r300/r300_vertprog.c @@ -56,62 +56,66 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. #define SCALAR_FLAG (1<<31) #define FLAG_MASK (1<<31) -#define OP_MASK (0xf) /* we are unlikely to have more than 15 */ +#define OP_MASK (0xf) /* we are unlikely to have more than 15 */ #define OPN(operator, ip) {#operator, OPCODE_##operator, ip} -static struct{ +static struct { char *name; int opcode; - unsigned long ip; /* number of input operands and flags */ -}op_names[]={ + unsigned long ip; /* number of input operands and flags */ +} op_names[] = { + /* *INDENT-OFF* */ OPN(ABS, 1), OPN(ADD, 2), - OPN(ARL, 1|SCALAR_FLAG), + OPN(ARL, 1 | SCALAR_FLAG), OPN(DP3, 2), OPN(DP4, 2), OPN(DPH, 2), OPN(DST, 2), - OPN(EX2, 1|SCALAR_FLAG), - OPN(EXP, 1|SCALAR_FLAG), + OPN(EX2, 1 | SCALAR_FLAG), + OPN(EXP, 1 | SCALAR_FLAG), OPN(FLR, 1), OPN(FRC, 1), - OPN(LG2, 1|SCALAR_FLAG), + OPN(LG2, 1 | SCALAR_FLAG), OPN(LIT, 1), - OPN(LOG, 1|SCALAR_FLAG), + OPN(LOG, 1 | SCALAR_FLAG), OPN(MAD, 3), OPN(MAX, 2), OPN(MIN, 2), OPN(MOV, 1), OPN(MUL, 2), - OPN(POW, 2|SCALAR_FLAG), - OPN(RCP, 1|SCALAR_FLAG), - OPN(RSQ, 1|SCALAR_FLAG), + OPN(POW, 2 | SCALAR_FLAG), + OPN(RCP, 1 | SCALAR_FLAG), + OPN(RSQ, 1 | SCALAR_FLAG), OPN(SGE, 2), OPN(SLT, 2), OPN(SUB, 2), OPN(SWZ, 1), OPN(XPD, 2), - OPN(RCC, 0), //extra + OPN(RCC, 0), //extra OPN(PRINT, 0), - OPN(END, 0), + OPN(END, 0) + /* *INDENT-ON* */ }; + #undef OPN -int r300VertexProgUpdateParams(GLcontext *ctx, struct r300_vertex_program_cont *vp, float *dst) +int r300VertexProgUpdateParams(GLcontext * ctx, + struct r300_vertex_program_cont *vp, float *dst) { int pi; struct gl_vertex_program *mesa_vp = &vp->mesa_program; - float *dst_o=dst; - struct gl_program_parameter_list *paramList; + float *dst_o = dst; + struct gl_program_parameter_list *paramList; if (mesa_vp->IsNVProgram) { _mesa_load_tracked_matrices(ctx); - for (pi=0; pi < MAX_NV_VERTEX_PROGRAM_PARAMS; pi++) { - *dst++=ctx->VertexProgram.Parameters[pi][0]; - *dst++=ctx->VertexProgram.Parameters[pi][1]; - *dst++=ctx->VertexProgram.Parameters[pi][2]; - *dst++=ctx->VertexProgram.Parameters[pi][3]; + for (pi = 0; pi < MAX_NV_VERTEX_PROGRAM_PARAMS; pi++) { + *dst++ = ctx->VertexProgram.Parameters[pi][0]; + *dst++ = ctx->VertexProgram.Parameters[pi][1]; + *dst++ = ctx->VertexProgram.Parameters[pi][2]; + *dst++ = ctx->VertexProgram.Parameters[pi][3]; } return dst - dst_o; } @@ -119,26 +123,29 @@ int r300VertexProgUpdateParams(GLcontext *ctx, struct r300_vertex_program_cont * assert(mesa_vp->Base.Parameters); _mesa_load_state_parameters(ctx, mesa_vp->Base.Parameters); - if(mesa_vp->Base.Parameters->NumParameters * 4 > VSF_MAX_FRAGMENT_LENGTH){ + if (mesa_vp->Base.Parameters->NumParameters * 4 > + VSF_MAX_FRAGMENT_LENGTH) { fprintf(stderr, "%s:Params exhausted\n", __FUNCTION__); _mesa_exit(-1); } - paramList = mesa_vp->Base.Parameters; - for(pi=0; pi < paramList->NumParameters; pi++){ - switch(paramList->Parameters[pi].Type){ + paramList = mesa_vp->Base.Parameters; + for (pi = 0; pi < paramList->NumParameters; pi++) { + switch (paramList->Parameters[pi].Type) { case PROGRAM_STATE_VAR: case PROGRAM_NAMED_PARAM: //fprintf(stderr, "%s", vp->Parameters->Parameters[pi].Name); case PROGRAM_CONSTANT: - *dst++=paramList->ParameterValues[pi][0]; - *dst++=paramList->ParameterValues[pi][1]; - *dst++=paramList->ParameterValues[pi][2]; - *dst++=paramList->ParameterValues[pi][3]; - break; + *dst++ = paramList->ParameterValues[pi][0]; + *dst++ = paramList->ParameterValues[pi][1]; + *dst++ = paramList->ParameterValues[pi][2]; + *dst++ = paramList->ParameterValues[pi][3]; + break; - default: _mesa_problem(NULL, "Bad param type in %s", __FUNCTION__); + default: + _mesa_problem(NULL, "Bad param type in %s", + __FUNCTION__); } } @@ -155,32 +162,33 @@ static unsigned long t_dst_mask(GLuint mask) static unsigned long t_dst_class(enum register_file file) { - switch(file){ - case PROGRAM_TEMPORARY: - return VSF_OUT_CLASS_TMP; - case PROGRAM_OUTPUT: - return VSF_OUT_CLASS_RESULT; - case PROGRAM_ADDRESS: - return VSF_OUT_CLASS_ADDR; + switch (file) { + case PROGRAM_TEMPORARY: + return VSF_OUT_CLASS_TMP; + case PROGRAM_OUTPUT: + return VSF_OUT_CLASS_RESULT; + case PROGRAM_ADDRESS: + return VSF_OUT_CLASS_ADDR; /* - case PROGRAM_INPUT: - case PROGRAM_LOCAL_PARAM: - case PROGRAM_ENV_PARAM: - case PROGRAM_NAMED_PARAM: - case PROGRAM_STATE_VAR: - case PROGRAM_WRITE_ONLY: - case PROGRAM_ADDRESS: - */ - default: - fprintf(stderr, "problem in %s", __FUNCTION__); - _mesa_exit(-1); - return -1; + case PROGRAM_INPUT: + case PROGRAM_LOCAL_PARAM: + case PROGRAM_ENV_PARAM: + case PROGRAM_NAMED_PARAM: + case PROGRAM_STATE_VAR: + case PROGRAM_WRITE_ONLY: + case PROGRAM_ADDRESS: + */ + default: + fprintf(stderr, "problem in %s", __FUNCTION__); + _mesa_exit(-1); + return -1; } } -static unsigned long t_dst_index(struct r300_vertex_program *vp, struct prog_dst_register *dst) +static unsigned long t_dst_index(struct r300_vertex_program *vp, + struct prog_dst_register *dst) { - if(dst->File == PROGRAM_OUTPUT) + if (dst->File == PROGRAM_OUTPUT) return vp->outputs[dst->Index]; return dst->Index; @@ -189,27 +197,27 @@ static unsigned long t_dst_index(struct r300_vertex_program *vp, struct prog_dst static unsigned long t_src_class(enum register_file file) { - switch(file){ - case PROGRAM_TEMPORARY: - return VSF_IN_CLASS_TMP; + switch (file) { + case PROGRAM_TEMPORARY: + return VSF_IN_CLASS_TMP; - case PROGRAM_INPUT: - return VSF_IN_CLASS_ATTR; + case PROGRAM_INPUT: + return VSF_IN_CLASS_ATTR; - case PROGRAM_LOCAL_PARAM: - case PROGRAM_ENV_PARAM: - case PROGRAM_NAMED_PARAM: - case PROGRAM_STATE_VAR: - return VSF_IN_CLASS_PARAM; + case PROGRAM_LOCAL_PARAM: + case PROGRAM_ENV_PARAM: + case PROGRAM_NAMED_PARAM: + case PROGRAM_STATE_VAR: + return VSF_IN_CLASS_PARAM; /* - case PROGRAM_OUTPUT: - case PROGRAM_WRITE_ONLY: - case PROGRAM_ADDRESS: - */ - default: - fprintf(stderr, "problem in %s", __FUNCTION__); - _mesa_exit(-1); - return -1; + case PROGRAM_OUTPUT: + case PROGRAM_WRITE_ONLY: + case PROGRAM_ADDRESS: + */ + default: + fprintf(stderr, "problem in %s", __FUNCTION__); + _mesa_exit(-1); + return -1; } } @@ -224,94 +232,104 @@ static void vp_dump_inputs(struct r300_vertex_program *vp, char *caller) { int i; - if(vp == NULL){ - fprintf(stderr, "vp null in call to %s from %s\n", __FUNCTION__, caller); - return ; + if (vp == NULL) { + fprintf(stderr, "vp null in call to %s from %s\n", __FUNCTION__, + caller); + return; } fprintf(stderr, "%s:<", caller); - for(i=0; i < VERT_ATTRIB_MAX; i++) + for (i = 0; i < VERT_ATTRIB_MAX; i++) fprintf(stderr, "%d ", vp->inputs[i]); fprintf(stderr, ">\n"); } #endif -static unsigned long t_src_index(struct r300_vertex_program *vp, struct prog_src_register *src) +static unsigned long t_src_index(struct r300_vertex_program *vp, + struct prog_src_register *src) { int i; - int max_reg=-1; + int max_reg = -1; - if(src->File == PROGRAM_INPUT){ - if(vp->inputs[src->Index] != -1) + if (src->File == PROGRAM_INPUT) { + if (vp->inputs[src->Index] != -1) return vp->inputs[src->Index]; - for(i=0; i < VERT_ATTRIB_MAX; i++) - if(vp->inputs[i] > max_reg) - max_reg=vp->inputs[i]; + for (i = 0; i < VERT_ATTRIB_MAX; i++) + if (vp->inputs[i] > max_reg) + max_reg = vp->inputs[i]; - vp->inputs[src->Index]=max_reg+1; + vp->inputs[src->Index] = max_reg + 1; //vp_dump_inputs(vp, __FUNCTION__); return vp->inputs[src->Index]; - }else{ + } else { if (src->Index < 0) { - fprintf (stderr, "negative offsets for indirect addressing do not work.\n"); + fprintf(stderr, + "negative offsets for indirect addressing do not work.\n"); return 0; } return src->Index; } } -static unsigned long t_src(struct r300_vertex_program *vp, struct prog_src_register *src) +static unsigned long t_src(struct r300_vertex_program *vp, + struct prog_src_register *src) { /* src->NegateBase uses the NEGATE_ flags from program_instruction.h, * which equal our VSF_FLAGS_ values, so it's safe to just pass it here. */ return MAKE_VSF_SOURCE(t_src_index(vp, src), - t_swizzle(GET_SWZ(src->Swizzle, 0)), - t_swizzle(GET_SWZ(src->Swizzle, 1)), - t_swizzle(GET_SWZ(src->Swizzle, 2)), - t_swizzle(GET_SWZ(src->Swizzle, 3)), - t_src_class(src->File), - src->NegateBase) | (src->RelAddr << 4); + t_swizzle(GET_SWZ(src->Swizzle, 0)), + t_swizzle(GET_SWZ(src->Swizzle, 1)), + t_swizzle(GET_SWZ(src->Swizzle, 2)), + t_swizzle(GET_SWZ(src->Swizzle, 3)), + t_src_class(src->File), + src->NegateBase) | (src->RelAddr << 4); } -static unsigned long t_src_scalar(struct r300_vertex_program *vp, struct prog_src_register *src) +static unsigned long t_src_scalar(struct r300_vertex_program *vp, + struct prog_src_register *src) { return MAKE_VSF_SOURCE(t_src_index(vp, src), - t_swizzle(GET_SWZ(src->Swizzle, 0)), - t_swizzle(GET_SWZ(src->Swizzle, 0)), - t_swizzle(GET_SWZ(src->Swizzle, 0)), - t_swizzle(GET_SWZ(src->Swizzle, 0)), - t_src_class(src->File), - src->NegateBase ? VSF_FLAG_ALL : VSF_FLAG_NONE) | (src->RelAddr << 4); + t_swizzle(GET_SWZ(src->Swizzle, 0)), + t_swizzle(GET_SWZ(src->Swizzle, 0)), + t_swizzle(GET_SWZ(src->Swizzle, 0)), + t_swizzle(GET_SWZ(src->Swizzle, 0)), + t_src_class(src->File), + src-> + NegateBase ? VSF_FLAG_ALL : VSF_FLAG_NONE) | + (src->RelAddr << 4); } static unsigned long t_opcode(enum prog_opcode opcode) { - switch(opcode){ - case OPCODE_ARL: return R300_VPI_OUT_OP_ARL; - case OPCODE_DST: return R300_VPI_OUT_OP_DST; - case OPCODE_EX2: return R300_VPI_OUT_OP_EX2; - case OPCODE_EXP: return R300_VPI_OUT_OP_EXP; - case OPCODE_FRC: return R300_VPI_OUT_OP_FRC; - case OPCODE_LG2: return R300_VPI_OUT_OP_LG2; - case OPCODE_LOG: return R300_VPI_OUT_OP_LOG; - case OPCODE_MAX: return R300_VPI_OUT_OP_MAX; - case OPCODE_MIN: return R300_VPI_OUT_OP_MIN; - case OPCODE_MUL: return R300_VPI_OUT_OP_MUL; - case OPCODE_RCP: return R300_VPI_OUT_OP_RCP; - case OPCODE_RSQ: return R300_VPI_OUT_OP_RSQ; - case OPCODE_SGE: return R300_VPI_OUT_OP_SGE; - case OPCODE_SLT: return R300_VPI_OUT_OP_SLT; - case OPCODE_DP4: return R300_VPI_OUT_OP_DOT; - - default: - fprintf(stderr, "%s: Should not be called with opcode %d!", __FUNCTION__, opcode); + switch (opcode) { + /* *INDENT-OFF* */ + case OPCODE_ARL: return R300_VPI_OUT_OP_ARL; + case OPCODE_DST: return R300_VPI_OUT_OP_DST; + case OPCODE_EX2: return R300_VPI_OUT_OP_EX2; + case OPCODE_EXP: return R300_VPI_OUT_OP_EXP; + case OPCODE_FRC: return R300_VPI_OUT_OP_FRC; + case OPCODE_LG2: return R300_VPI_OUT_OP_LG2; + case OPCODE_LOG: return R300_VPI_OUT_OP_LOG; + case OPCODE_MAX: return R300_VPI_OUT_OP_MAX; + case OPCODE_MIN: return R300_VPI_OUT_OP_MIN; + case OPCODE_MUL: return R300_VPI_OUT_OP_MUL; + case OPCODE_RCP: return R300_VPI_OUT_OP_RCP; + case OPCODE_RSQ: return R300_VPI_OUT_OP_RSQ; + case OPCODE_SGE: return R300_VPI_OUT_OP_SGE; + case OPCODE_SLT: return R300_VPI_OUT_OP_SLT; + case OPCODE_DP4: return R300_VPI_OUT_OP_DOT; + /* *INDENT-ON* */ + + default: + fprintf(stderr, "%s: Should not be called with opcode %d!", + __FUNCTION__, opcode); } _mesa_exit(-1); return 0; @@ -322,8 +340,8 @@ static unsigned long op_operands(enum prog_opcode opcode) int i; /* Can we trust mesas opcodes to be in order ? */ - for(i=0; i < sizeof(op_names) / sizeof(*op_names); i++) - if(op_names[i].opcode == opcode) + for (i = 0; i < sizeof(op_names) / sizeof(*op_names); i++) + if (op_names[i].opcode == opcode) return op_names[i].ip; fprintf(stderr, "op %d not found in op_names\n", opcode); @@ -331,11 +349,12 @@ static unsigned long op_operands(enum prog_opcode opcode) return 0; } -static GLboolean valid_dst(struct r300_vertex_program *vp, struct prog_dst_register *dst) +static GLboolean valid_dst(struct r300_vertex_program *vp, + struct prog_dst_register *dst) { - if(dst->File == PROGRAM_OUTPUT && vp->outputs[dst->Index] == -1) { + if (dst->File == PROGRAM_OUTPUT && vp->outputs[dst->Index] == -1) { return GL_FALSE; - } else if(dst->File == PROGRAM_ADDRESS) { + } else if (dst->File == PROGRAM_ADDRESS) { assert(dst->Index == 0); } @@ -391,9 +410,10 @@ static GLboolean valid_dst(struct r300_vertex_program *vp, struct prog_dst_regis u_temp_i=VSF_MAX_FRAGMENT_TEMPS-1; \ } while (0) -static void r300_translate_vertex_shader(struct r300_vertex_program *vp, struct prog_instruction *vpi) +static void r300_translate_vertex_shader(struct r300_vertex_program *vp, + struct prog_instruction *vpi) { - int i, cur_reg=0; + int i, cur_reg = 0; VERTEX_SHADER_INSTRUCTION *o_inst; unsigned long operands; int are_srcs_scalar; @@ -401,341 +421,475 @@ static void r300_translate_vertex_shader(struct r300_vertex_program *vp, struct /* Initial value should be last tmp reg that hw supports. Strangely enough r300 doesnt mind even though these would be out of range. Smart enough to realize that it doesnt need it? */ - int u_temp_i=VSF_MAX_FRAGMENT_TEMPS-1; + int u_temp_i = VSF_MAX_FRAGMENT_TEMPS - 1; struct prog_src_register src[3]; - vp->pos_end=0; /* Not supported yet */ - vp->program.length=0; - /*vp->num_temporaries=mesa_vp->Base.NumTemporaries;*/ + vp->pos_end = 0; /* Not supported yet */ + vp->program.length = 0; + /*vp->num_temporaries=mesa_vp->Base.NumTemporaries; */ - for(i=0; i < VERT_ATTRIB_MAX; i++) + for (i = 0; i < VERT_ATTRIB_MAX; i++) vp->inputs[i] = -1; - for(i=0; i < VERT_RESULT_MAX; i++) + for (i = 0; i < VERT_RESULT_MAX; i++) vp->outputs[i] = -1; assert(vp->key.OutputsWritten & (1 << VERT_RESULT_HPOS)); /* Assign outputs */ - if(vp->key.OutputsWritten & (1 << VERT_RESULT_HPOS)) + if (vp->key.OutputsWritten & (1 << VERT_RESULT_HPOS)) vp->outputs[VERT_RESULT_HPOS] = cur_reg++; - if(vp->key.OutputsWritten & (1 << VERT_RESULT_PSIZ)) + if (vp->key.OutputsWritten & (1 << VERT_RESULT_PSIZ)) vp->outputs[VERT_RESULT_PSIZ] = cur_reg++; - if(vp->key.OutputsWritten & (1 << VERT_RESULT_COL0)) + if (vp->key.OutputsWritten & (1 << VERT_RESULT_COL0)) vp->outputs[VERT_RESULT_COL0] = cur_reg++; - if(vp->key.OutputsWritten & (1 << VERT_RESULT_COL1)) + if (vp->key.OutputsWritten & (1 << VERT_RESULT_COL1)) vp->outputs[VERT_RESULT_COL1] = cur_reg++; -#if 0 /* Not supported yet */ - if(vp->key.OutputsWritten & (1 << VERT_RESULT_BFC0)) +#if 0 /* Not supported yet */ + if (vp->key.OutputsWritten & (1 << VERT_RESULT_BFC0)) vp->outputs[VERT_RESULT_BFC0] = cur_reg++; - if(vp->key.OutputsWritten & (1 << VERT_RESULT_BFC1)) + if (vp->key.OutputsWritten & (1 << VERT_RESULT_BFC1)) vp->outputs[VERT_RESULT_BFC1] = cur_reg++; - if(vp->key.OutputsWritten & (1 << VERT_RESULT_FOGC)) + if (vp->key.OutputsWritten & (1 << VERT_RESULT_FOGC)) vp->outputs[VERT_RESULT_FOGC] = cur_reg++; #endif - for(i=VERT_RESULT_TEX0; i <= VERT_RESULT_TEX7; i++) - if(vp->key.OutputsWritten & (1 << i)) + for (i = VERT_RESULT_TEX0; i <= VERT_RESULT_TEX7; i++) + if (vp->key.OutputsWritten & (1 << i)) vp->outputs[i] = cur_reg++; vp->translated = GL_TRUE; vp->native = GL_TRUE; - o_inst=vp->program.body.i; - for(; vpi->Opcode != OPCODE_END; vpi++, o_inst++){ + o_inst = vp->program.body.i; + for (; vpi->Opcode != OPCODE_END; vpi++, o_inst++) { FREE_TEMPS(); - if(!valid_dst(vp, &vpi->DstReg)) - { + if (!valid_dst(vp, &vpi->DstReg)) { /* redirect result to unused temp */ vpi->DstReg.File = PROGRAM_TEMPORARY; vpi->DstReg.Index = u_temp_i; } - operands=op_operands(vpi->Opcode); - are_srcs_scalar=operands & SCALAR_FLAG; + operands = op_operands(vpi->Opcode); + are_srcs_scalar = operands & SCALAR_FLAG; operands &= OP_MASK; - for(i=0; i < operands; i++) - src[i]=vpi->SrcReg[i]; - - if(operands == 3){ /* TODO: scalars */ - if( CMP_SRCS(src[1], src[2]) || CMP_SRCS(src[0], src[2]) ){ - o_inst->op=MAKE_VSF_OP(R300_VPI_OUT_OP_ADD, u_temp_i, - VSF_FLAG_ALL, VSF_OUT_CLASS_TMP); - - o_inst->src[0]=MAKE_VSF_SOURCE(t_src_index(vp, &src[2]), - SWIZZLE_X, SWIZZLE_Y, - SWIZZLE_Z, SWIZZLE_W, - t_src_class(src[2].File), VSF_FLAG_NONE) | (src[2].RelAddr << 4); - - o_inst->src[1]=ZERO_SRC_2; - o_inst->src[2]=ZERO_SRC_2; + for (i = 0; i < operands; i++) + src[i] = vpi->SrcReg[i]; + + if (operands == 3) { /* TODO: scalars */ + if (CMP_SRCS(src[1], src[2]) + || CMP_SRCS(src[0], src[2])) { + o_inst->op = + MAKE_VSF_OP(R300_VPI_OUT_OP_ADD, u_temp_i, + VSF_FLAG_ALL, + VSF_OUT_CLASS_TMP); + + o_inst->src[0] = + MAKE_VSF_SOURCE(t_src_index(vp, &src[2]), + SWIZZLE_X, SWIZZLE_Y, + SWIZZLE_Z, SWIZZLE_W, + t_src_class(src[2].File), + VSF_FLAG_NONE) | (src[2]. + RelAddr << + 4); + + o_inst->src[1] = ZERO_SRC_2; + o_inst->src[2] = ZERO_SRC_2; o_inst++; - src[2].File=PROGRAM_TEMPORARY; - src[2].Index=u_temp_i; - src[2].RelAddr=0; + src[2].File = PROGRAM_TEMPORARY; + src[2].Index = u_temp_i; + src[2].RelAddr = 0; u_temp_i--; } } - if(operands >= 2){ - if( CMP_SRCS(src[1], src[0]) ){ - o_inst->op=MAKE_VSF_OP(R300_VPI_OUT_OP_ADD, u_temp_i, - VSF_FLAG_ALL, VSF_OUT_CLASS_TMP); - - o_inst->src[0]=MAKE_VSF_SOURCE(t_src_index(vp, &src[0]), - SWIZZLE_X, SWIZZLE_Y, - SWIZZLE_Z, SWIZZLE_W, - t_src_class(src[0].File), VSF_FLAG_NONE) | (src[0].RelAddr << 4); - - o_inst->src[1]=ZERO_SRC_0; - o_inst->src[2]=ZERO_SRC_0; + if (operands >= 2) { + if (CMP_SRCS(src[1], src[0])) { + o_inst->op = + MAKE_VSF_OP(R300_VPI_OUT_OP_ADD, u_temp_i, + VSF_FLAG_ALL, + VSF_OUT_CLASS_TMP); + + o_inst->src[0] = + MAKE_VSF_SOURCE(t_src_index(vp, &src[0]), + SWIZZLE_X, SWIZZLE_Y, + SWIZZLE_Z, SWIZZLE_W, + t_src_class(src[0].File), + VSF_FLAG_NONE) | (src[0]. + RelAddr << + 4); + + o_inst->src[1] = ZERO_SRC_0; + o_inst->src[2] = ZERO_SRC_0; o_inst++; - src[0].File=PROGRAM_TEMPORARY; - src[0].Index=u_temp_i; - src[0].RelAddr=0; + src[0].File = PROGRAM_TEMPORARY; + src[0].Index = u_temp_i; + src[0].RelAddr = 0; u_temp_i--; } } /* These ops need special handling. */ - switch(vpi->Opcode){ + switch (vpi->Opcode) { case OPCODE_POW: - o_inst->op=MAKE_VSF_OP(R300_VPI_OUT_OP_POW, t_dst_index(vp, &vpi->DstReg), - t_dst_mask(vpi->DstReg.WriteMask), t_dst_class(vpi->DstReg.File)); - o_inst->src[0]=t_src_scalar(vp, &src[0]); - o_inst->src[1]=ZERO_SRC_0; - o_inst->src[2]=t_src_scalar(vp, &src[1]); + o_inst->op = + MAKE_VSF_OP(R300_VPI_OUT_OP_POW, + t_dst_index(vp, &vpi->DstReg), + t_dst_mask(vpi->DstReg.WriteMask), + t_dst_class(vpi->DstReg.File)); + o_inst->src[0] = t_src_scalar(vp, &src[0]); + o_inst->src[1] = ZERO_SRC_0; + o_inst->src[2] = t_src_scalar(vp, &src[1]); goto next; - case OPCODE_MOV://ADD RESULT 1.X Y Z W PARAM 0{} {X Y Z W} PARAM 0{} {ZERO ZERO ZERO ZERO} + case OPCODE_MOV: //ADD RESULT 1.X Y Z W PARAM 0{} {X Y Z W} PARAM 0{} {ZERO ZERO ZERO ZERO} case OPCODE_SWZ: #if 1 - o_inst->op=MAKE_VSF_OP(R300_VPI_OUT_OP_ADD, t_dst_index(vp, &vpi->DstReg), - t_dst_mask(vpi->DstReg.WriteMask), t_dst_class(vpi->DstReg.File)); - o_inst->src[0]=t_src(vp, &src[0]); - o_inst->src[1]=ZERO_SRC_0; - o_inst->src[2]=ZERO_SRC_0; + o_inst->op = + MAKE_VSF_OP(R300_VPI_OUT_OP_ADD, + t_dst_index(vp, &vpi->DstReg), + t_dst_mask(vpi->DstReg.WriteMask), + t_dst_class(vpi->DstReg.File)); + o_inst->src[0] = t_src(vp, &src[0]); + o_inst->src[1] = ZERO_SRC_0; + o_inst->src[2] = ZERO_SRC_0; #else - hw_op=(src[0].File == PROGRAM_TEMPORARY) ? R300_VPI_OUT_OP_MAD_2 : R300_VPI_OUT_OP_MAD; - - o_inst->op=MAKE_VSF_OP(hw_op, t_dst_index(vp, &vpi->DstReg), - t_dst_mask(vpi->DstReg.WriteMask), t_dst_class(vpi->DstReg.File)); - o_inst->src[0]=t_src(vp, &src[0]); - o_inst->src[1]=ONE_SRC_0; - o_inst->src[2]=ZERO_SRC_0; + hw_op = + (src[0].File == + PROGRAM_TEMPORARY) ? R300_VPI_OUT_OP_MAD_2 : + R300_VPI_OUT_OP_MAD; + + o_inst->op = + MAKE_VSF_OP(hw_op, t_dst_index(vp, &vpi->DstReg), + t_dst_mask(vpi->DstReg.WriteMask), + t_dst_class(vpi->DstReg.File)); + o_inst->src[0] = t_src(vp, &src[0]); + o_inst->src[1] = ONE_SRC_0; + o_inst->src[2] = ZERO_SRC_0; #endif goto next; case OPCODE_ADD: #if 1 - hw_op=(src[0].File == PROGRAM_TEMPORARY && - src[1].File == PROGRAM_TEMPORARY) ? R300_VPI_OUT_OP_MAD_2 : R300_VPI_OUT_OP_MAD; - - o_inst->op=MAKE_VSF_OP(hw_op, t_dst_index(vp, &vpi->DstReg), - t_dst_mask(vpi->DstReg.WriteMask), t_dst_class(vpi->DstReg.File)); - o_inst->src[0]=ONE_SRC_0; - o_inst->src[1]=t_src(vp, &src[0]); - o_inst->src[2]=t_src(vp, &src[1]); + hw_op = (src[0].File == PROGRAM_TEMPORARY && + src[1].File == + PROGRAM_TEMPORARY) ? R300_VPI_OUT_OP_MAD_2 : + R300_VPI_OUT_OP_MAD; + + o_inst->op = + MAKE_VSF_OP(hw_op, t_dst_index(vp, &vpi->DstReg), + t_dst_mask(vpi->DstReg.WriteMask), + t_dst_class(vpi->DstReg.File)); + o_inst->src[0] = ONE_SRC_0; + o_inst->src[1] = t_src(vp, &src[0]); + o_inst->src[2] = t_src(vp, &src[1]); #else - o_inst->op=MAKE_VSF_OP(R300_VPI_OUT_OP_ADD, t_dst_index(vp, &vpi->DstReg), - t_dst_mask(vpi->DstReg.WriteMask), t_dst_class(vpi->DstReg.File)); - o_inst->src[0]=t_src(vp, &src[0]); - o_inst->src[1]=t_src(vp, &src[1]); - o_inst->src[2]=ZERO_SRC_1; + o_inst->op = + MAKE_VSF_OP(R300_VPI_OUT_OP_ADD, + t_dst_index(vp, &vpi->DstReg), + t_dst_mask(vpi->DstReg.WriteMask), + t_dst_class(vpi->DstReg.File)); + o_inst->src[0] = t_src(vp, &src[0]); + o_inst->src[1] = t_src(vp, &src[1]); + o_inst->src[2] = ZERO_SRC_1; #endif goto next; case OPCODE_MAD: - hw_op=(src[0].File == PROGRAM_TEMPORARY && - src[1].File == PROGRAM_TEMPORARY && - src[2].File == PROGRAM_TEMPORARY) ? R300_VPI_OUT_OP_MAD_2 : R300_VPI_OUT_OP_MAD; - - o_inst->op=MAKE_VSF_OP(hw_op, t_dst_index(vp, &vpi->DstReg), - t_dst_mask(vpi->DstReg.WriteMask), t_dst_class(vpi->DstReg.File)); - o_inst->src[0]=t_src(vp, &src[0]); - o_inst->src[1]=t_src(vp, &src[1]); - o_inst->src[2]=t_src(vp, &src[2]); + hw_op = (src[0].File == PROGRAM_TEMPORARY && + src[1].File == PROGRAM_TEMPORARY && + src[2].File == + PROGRAM_TEMPORARY) ? R300_VPI_OUT_OP_MAD_2 : + R300_VPI_OUT_OP_MAD; + + o_inst->op = + MAKE_VSF_OP(hw_op, t_dst_index(vp, &vpi->DstReg), + t_dst_mask(vpi->DstReg.WriteMask), + t_dst_class(vpi->DstReg.File)); + o_inst->src[0] = t_src(vp, &src[0]); + o_inst->src[1] = t_src(vp, &src[1]); + o_inst->src[2] = t_src(vp, &src[2]); goto next; - case OPCODE_MUL: /* HW mul can take third arg but appears to have some other limitations. */ - hw_op=(src[0].File == PROGRAM_TEMPORARY && - src[1].File == PROGRAM_TEMPORARY) ? R300_VPI_OUT_OP_MAD_2 : R300_VPI_OUT_OP_MAD; + case OPCODE_MUL: /* HW mul can take third arg but appears to have some other limitations. */ + hw_op = (src[0].File == PROGRAM_TEMPORARY && + src[1].File == + PROGRAM_TEMPORARY) ? R300_VPI_OUT_OP_MAD_2 : + R300_VPI_OUT_OP_MAD; - o_inst->op=MAKE_VSF_OP(hw_op, t_dst_index(vp, &vpi->DstReg), - t_dst_mask(vpi->DstReg.WriteMask), t_dst_class(vpi->DstReg.File)); - o_inst->src[0]=t_src(vp, &src[0]); - o_inst->src[1]=t_src(vp, &src[1]); + o_inst->op = + MAKE_VSF_OP(hw_op, t_dst_index(vp, &vpi->DstReg), + t_dst_mask(vpi->DstReg.WriteMask), + t_dst_class(vpi->DstReg.File)); + o_inst->src[0] = t_src(vp, &src[0]); + o_inst->src[1] = t_src(vp, &src[1]); - o_inst->src[2]=ZERO_SRC_1; + o_inst->src[2] = ZERO_SRC_1; goto next; - case OPCODE_DP3://DOT RESULT 1.X Y Z W PARAM 0{} {X Y Z ZERO} PARAM 0{} {X Y Z ZERO} - o_inst->op=MAKE_VSF_OP(R300_VPI_OUT_OP_DOT, t_dst_index(vp, &vpi->DstReg), - t_dst_mask(vpi->DstReg.WriteMask), t_dst_class(vpi->DstReg.File)); - - o_inst->src[0]=MAKE_VSF_SOURCE(t_src_index(vp, &src[0]), - t_swizzle(GET_SWZ(src[0].Swizzle, 0)), - t_swizzle(GET_SWZ(src[0].Swizzle, 1)), - t_swizzle(GET_SWZ(src[0].Swizzle, 2)), - SWIZZLE_ZERO, - t_src_class(src[0].File), - src[0].NegateBase ? VSF_FLAG_XYZ : VSF_FLAG_NONE) | (src[0].RelAddr << 4); - - o_inst->src[1]=MAKE_VSF_SOURCE(t_src_index(vp, &src[1]), - t_swizzle(GET_SWZ(src[1].Swizzle, 0)), - t_swizzle(GET_SWZ(src[1].Swizzle, 1)), - t_swizzle(GET_SWZ(src[1].Swizzle, 2)), - SWIZZLE_ZERO, - t_src_class(src[1].File), - src[1].NegateBase ? VSF_FLAG_XYZ : VSF_FLAG_NONE) | (src[1].RelAddr << 4); - - o_inst->src[2]=ZERO_SRC_1; + case OPCODE_DP3: //DOT RESULT 1.X Y Z W PARAM 0{} {X Y Z ZERO} PARAM 0{} {X Y Z ZERO} + o_inst->op = + MAKE_VSF_OP(R300_VPI_OUT_OP_DOT, + t_dst_index(vp, &vpi->DstReg), + t_dst_mask(vpi->DstReg.WriteMask), + t_dst_class(vpi->DstReg.File)); + + o_inst->src[0] = + MAKE_VSF_SOURCE(t_src_index(vp, &src[0]), + t_swizzle(GET_SWZ + (src[0].Swizzle, 0)), + t_swizzle(GET_SWZ + (src[0].Swizzle, 1)), + t_swizzle(GET_SWZ + (src[0].Swizzle, 2)), + SWIZZLE_ZERO, + t_src_class(src[0].File), + src[0]. + NegateBase ? VSF_FLAG_XYZ : + VSF_FLAG_NONE) | (src[0]. + RelAddr << 4); + + o_inst->src[1] = + MAKE_VSF_SOURCE(t_src_index(vp, &src[1]), + t_swizzle(GET_SWZ + (src[1].Swizzle, 0)), + t_swizzle(GET_SWZ + (src[1].Swizzle, 1)), + t_swizzle(GET_SWZ + (src[1].Swizzle, 2)), + SWIZZLE_ZERO, + t_src_class(src[1].File), + src[1]. + NegateBase ? VSF_FLAG_XYZ : + VSF_FLAG_NONE) | (src[1]. + RelAddr << 4); + + o_inst->src[2] = ZERO_SRC_1; goto next; - case OPCODE_SUB://ADD RESULT 1.X Y Z W TMP 0{} {X Y Z W} PARAM 1{X Y Z W } {X Y Z W} neg Xneg Yneg Zneg W + case OPCODE_SUB: //ADD RESULT 1.X Y Z W TMP 0{} {X Y Z W} PARAM 1{X Y Z W } {X Y Z W} neg Xneg Yneg Zneg W #if 1 - hw_op=(src[0].File == PROGRAM_TEMPORARY && - src[1].File == PROGRAM_TEMPORARY) ? R300_VPI_OUT_OP_MAD_2 : R300_VPI_OUT_OP_MAD; - - o_inst->op=MAKE_VSF_OP(hw_op, t_dst_index(vp, &vpi->DstReg), - t_dst_mask(vpi->DstReg.WriteMask), t_dst_class(vpi->DstReg.File)); - o_inst->src[0]=t_src(vp, &src[0]); - o_inst->src[1]=ONE_SRC_0; - o_inst->src[2]=MAKE_VSF_SOURCE(t_src_index(vp, &src[1]), - t_swizzle(GET_SWZ(src[1].Swizzle, 0)), - t_swizzle(GET_SWZ(src[1].Swizzle, 1)), - t_swizzle(GET_SWZ(src[1].Swizzle, 2)), - t_swizzle(GET_SWZ(src[1].Swizzle, 3)), - t_src_class(src[1].File), - (!src[1].NegateBase) ? VSF_FLAG_ALL : VSF_FLAG_NONE) | (src[1].RelAddr << 4); + hw_op = (src[0].File == PROGRAM_TEMPORARY && + src[1].File == + PROGRAM_TEMPORARY) ? R300_VPI_OUT_OP_MAD_2 : + R300_VPI_OUT_OP_MAD; + + o_inst->op = + MAKE_VSF_OP(hw_op, t_dst_index(vp, &vpi->DstReg), + t_dst_mask(vpi->DstReg.WriteMask), + t_dst_class(vpi->DstReg.File)); + o_inst->src[0] = t_src(vp, &src[0]); + o_inst->src[1] = ONE_SRC_0; + o_inst->src[2] = + MAKE_VSF_SOURCE(t_src_index(vp, &src[1]), + t_swizzle(GET_SWZ + (src[1].Swizzle, 0)), + t_swizzle(GET_SWZ + (src[1].Swizzle, 1)), + t_swizzle(GET_SWZ + (src[1].Swizzle, 2)), + t_swizzle(GET_SWZ + (src[1].Swizzle, 3)), + t_src_class(src[1].File), + (!src[1]. + NegateBase) ? VSF_FLAG_ALL : + VSF_FLAG_NONE) | (src[1]. + RelAddr << 4); #else - o_inst->op=MAKE_VSF_OP(R300_VPI_OUT_OP_ADD, t_dst_index(vp, &vpi->DstReg), - t_dst_mask(vpi->DstReg.WriteMask), t_dst_class(vpi->DstReg.File)); - - o_inst->src[0]=t_src(vp, &src[0]); - o_inst->src[1]=MAKE_VSF_SOURCE(t_src_index(vp, &src[1]), - t_swizzle(GET_SWZ(src[1].Swizzle, 0)), - t_swizzle(GET_SWZ(src[1].Swizzle, 1)), - t_swizzle(GET_SWZ(src[1].Swizzle, 2)), - t_swizzle(GET_SWZ(src[1].Swizzle, 3)), - t_src_class(src[1].File), - (!src[1].NegateBase) ? VSF_FLAG_ALL : VSF_FLAG_NONE) | (src[1].RelAddr << 4); - o_inst->src[2]=0; + o_inst->op = + MAKE_VSF_OP(R300_VPI_OUT_OP_ADD, + t_dst_index(vp, &vpi->DstReg), + t_dst_mask(vpi->DstReg.WriteMask), + t_dst_class(vpi->DstReg.File)); + + o_inst->src[0] = t_src(vp, &src[0]); + o_inst->src[1] = + MAKE_VSF_SOURCE(t_src_index(vp, &src[1]), + t_swizzle(GET_SWZ + (src[1].Swizzle, 0)), + t_swizzle(GET_SWZ + (src[1].Swizzle, 1)), + t_swizzle(GET_SWZ + (src[1].Swizzle, 2)), + t_swizzle(GET_SWZ + (src[1].Swizzle, 3)), + t_src_class(src[1].File), + (!src[1]. + NegateBase) ? VSF_FLAG_ALL : + VSF_FLAG_NONE) | (src[1]. + RelAddr << 4); + o_inst->src[2] = 0; #endif goto next; - case OPCODE_ABS://MAX RESULT 1.X Y Z W PARAM 0{} {X Y Z W} PARAM 0{X Y Z W } {X Y Z W} neg Xneg Yneg Zneg W - o_inst->op=MAKE_VSF_OP(R300_VPI_OUT_OP_MAX, t_dst_index(vp, &vpi->DstReg), - t_dst_mask(vpi->DstReg.WriteMask), t_dst_class(vpi->DstReg.File)); - - o_inst->src[0]=t_src(vp, &src[0]); - o_inst->src[1]=MAKE_VSF_SOURCE(t_src_index(vp, &src[0]), - t_swizzle(GET_SWZ(src[0].Swizzle, 0)), - t_swizzle(GET_SWZ(src[0].Swizzle, 1)), - t_swizzle(GET_SWZ(src[0].Swizzle, 2)), - t_swizzle(GET_SWZ(src[0].Swizzle, 3)), - t_src_class(src[0].File), - (!src[0].NegateBase) ? VSF_FLAG_ALL : VSF_FLAG_NONE) | (src[0].RelAddr << 4); - o_inst->src[2]=0; + case OPCODE_ABS: //MAX RESULT 1.X Y Z W PARAM 0{} {X Y Z W} PARAM 0{X Y Z W } {X Y Z W} neg Xneg Yneg Zneg W + o_inst->op = + MAKE_VSF_OP(R300_VPI_OUT_OP_MAX, + t_dst_index(vp, &vpi->DstReg), + t_dst_mask(vpi->DstReg.WriteMask), + t_dst_class(vpi->DstReg.File)); + + o_inst->src[0] = t_src(vp, &src[0]); + o_inst->src[1] = + MAKE_VSF_SOURCE(t_src_index(vp, &src[0]), + t_swizzle(GET_SWZ + (src[0].Swizzle, 0)), + t_swizzle(GET_SWZ + (src[0].Swizzle, 1)), + t_swizzle(GET_SWZ + (src[0].Swizzle, 2)), + t_swizzle(GET_SWZ + (src[0].Swizzle, 3)), + t_src_class(src[0].File), + (!src[0]. + NegateBase) ? VSF_FLAG_ALL : + VSF_FLAG_NONE) | (src[0]. + RelAddr << 4); + o_inst->src[2] = 0; goto next; case OPCODE_FLR: - /* FRC TMP 0.X Y Z W PARAM 0{} {X Y Z W} - ADD RESULT 1.X Y Z W PARAM 0{} {X Y Z W} TMP 0{X Y Z W } {X Y Z W} neg Xneg Yneg Zneg W */ + /* FRC TMP 0.X Y Z W PARAM 0{} {X Y Z W} + ADD RESULT 1.X Y Z W PARAM 0{} {X Y Z W} TMP 0{X Y Z W } {X Y Z W} neg Xneg Yneg Zneg W */ - o_inst->op=MAKE_VSF_OP(R300_VPI_OUT_OP_FRC, u_temp_i, - t_dst_mask(vpi->DstReg.WriteMask), VSF_OUT_CLASS_TMP); + o_inst->op = MAKE_VSF_OP(R300_VPI_OUT_OP_FRC, u_temp_i, + t_dst_mask(vpi->DstReg. + WriteMask), + VSF_OUT_CLASS_TMP); - o_inst->src[0]=t_src(vp, &src[0]); - o_inst->src[1]=ZERO_SRC_0; - o_inst->src[2]=ZERO_SRC_0; + o_inst->src[0] = t_src(vp, &src[0]); + o_inst->src[1] = ZERO_SRC_0; + o_inst->src[2] = ZERO_SRC_0; o_inst++; - o_inst->op=MAKE_VSF_OP(R300_VPI_OUT_OP_ADD, t_dst_index(vp, &vpi->DstReg), - t_dst_mask(vpi->DstReg.WriteMask), t_dst_class(vpi->DstReg.File)); - - o_inst->src[0]=t_src(vp, &src[0]); - o_inst->src[1]=MAKE_VSF_SOURCE(u_temp_i, - VSF_IN_COMPONENT_X, - VSF_IN_COMPONENT_Y, - VSF_IN_COMPONENT_Z, - VSF_IN_COMPONENT_W, - VSF_IN_CLASS_TMP, - /* Not 100% sure about this */ - (!src[0].NegateBase) ? VSF_FLAG_ALL : VSF_FLAG_NONE/*VSF_FLAG_ALL*/); - - o_inst->src[2]=ZERO_SRC_0; + o_inst->op = + MAKE_VSF_OP(R300_VPI_OUT_OP_ADD, + t_dst_index(vp, &vpi->DstReg), + t_dst_mask(vpi->DstReg.WriteMask), + t_dst_class(vpi->DstReg.File)); + + o_inst->src[0] = t_src(vp, &src[0]); + o_inst->src[1] = MAKE_VSF_SOURCE(u_temp_i, + VSF_IN_COMPONENT_X, + VSF_IN_COMPONENT_Y, + VSF_IN_COMPONENT_Z, + VSF_IN_COMPONENT_W, + VSF_IN_CLASS_TMP, + /* Not 100% sure about this */ + (!src[0]. + NegateBase) ? + VSF_FLAG_ALL : + VSF_FLAG_NONE + /*VSF_FLAG_ALL */ ); + + o_inst->src[2] = ZERO_SRC_0; u_temp_i--; goto next; - case OPCODE_LG2:// LG2 RESULT 1.X Y Z W PARAM 0{} {X X X X} - o_inst->op=MAKE_VSF_OP(R300_VPI_OUT_OP_LG2, t_dst_index(vp, &vpi->DstReg), - t_dst_mask(vpi->DstReg.WriteMask), t_dst_class(vpi->DstReg.File)); - - o_inst->src[0]=MAKE_VSF_SOURCE(t_src_index(vp, &src[0]), - t_swizzle(GET_SWZ(src[0].Swizzle, 0)), - t_swizzle(GET_SWZ(src[0].Swizzle, 0)), - t_swizzle(GET_SWZ(src[0].Swizzle, 0)), - t_swizzle(GET_SWZ(src[0].Swizzle, 0)), - t_src_class(src[0].File), - src[0].NegateBase ? VSF_FLAG_ALL : VSF_FLAG_NONE) | (src[0].RelAddr << 4); - o_inst->src[1]=ZERO_SRC_0; - o_inst->src[2]=ZERO_SRC_0; + case OPCODE_LG2: // LG2 RESULT 1.X Y Z W PARAM 0{} {X X X X} + o_inst->op = + MAKE_VSF_OP(R300_VPI_OUT_OP_LG2, + t_dst_index(vp, &vpi->DstReg), + t_dst_mask(vpi->DstReg.WriteMask), + t_dst_class(vpi->DstReg.File)); + + o_inst->src[0] = + MAKE_VSF_SOURCE(t_src_index(vp, &src[0]), + t_swizzle(GET_SWZ + (src[0].Swizzle, 0)), + t_swizzle(GET_SWZ + (src[0].Swizzle, 0)), + t_swizzle(GET_SWZ + (src[0].Swizzle, 0)), + t_swizzle(GET_SWZ + (src[0].Swizzle, 0)), + t_src_class(src[0].File), + src[0]. + NegateBase ? VSF_FLAG_ALL : + VSF_FLAG_NONE) | (src[0]. + RelAddr << 4); + o_inst->src[1] = ZERO_SRC_0; + o_inst->src[2] = ZERO_SRC_0; goto next; - case OPCODE_LIT://LIT TMP 1.Y Z TMP 1{} {X W Z Y} TMP 1{} {Y W Z X} TMP 1{} {Y X Z W} - o_inst->op=MAKE_VSF_OP(R300_VPI_OUT_OP_LIT, t_dst_index(vp, &vpi->DstReg), - t_dst_mask(vpi->DstReg.WriteMask), t_dst_class(vpi->DstReg.File)); + case OPCODE_LIT: //LIT TMP 1.Y Z TMP 1{} {X W Z Y} TMP 1{} {Y W Z X} TMP 1{} {Y X Z W} + o_inst->op = + MAKE_VSF_OP(R300_VPI_OUT_OP_LIT, + t_dst_index(vp, &vpi->DstReg), + t_dst_mask(vpi->DstReg.WriteMask), + t_dst_class(vpi->DstReg.File)); /* NOTE: Users swizzling might not work. */ - o_inst->src[0]=MAKE_VSF_SOURCE(t_src_index(vp, &src[0]), - t_swizzle(GET_SWZ(src[0].Swizzle, 0)), // x - t_swizzle(GET_SWZ(src[0].Swizzle, 3)), // w - VSF_IN_COMPONENT_ZERO, // z - t_swizzle(GET_SWZ(src[0].Swizzle, 1)), // y - t_src_class(src[0].File), - src[0].NegateBase ? VSF_FLAG_ALL : VSF_FLAG_NONE) | (src[0].RelAddr << 4); - o_inst->src[1]=MAKE_VSF_SOURCE(t_src_index(vp, &src[0]), - t_swizzle(GET_SWZ(src[0].Swizzle, 1)), // y - t_swizzle(GET_SWZ(src[0].Swizzle, 3)), // w - VSF_IN_COMPONENT_ZERO, // z - t_swizzle(GET_SWZ(src[0].Swizzle, 0)), // x - t_src_class(src[0].File), - src[0].NegateBase ? VSF_FLAG_ALL : VSF_FLAG_NONE) | (src[0].RelAddr << 4); - o_inst->src[2]=MAKE_VSF_SOURCE(t_src_index(vp, &src[0]), - t_swizzle(GET_SWZ(src[0].Swizzle, 1)), // y - t_swizzle(GET_SWZ(src[0].Swizzle, 0)), // x - VSF_IN_COMPONENT_ZERO, // z - t_swizzle(GET_SWZ(src[0].Swizzle, 3)), // w - t_src_class(src[0].File), - src[0].NegateBase ? VSF_FLAG_ALL : VSF_FLAG_NONE) | (src[0].RelAddr << 4); + o_inst->src[0] = MAKE_VSF_SOURCE(t_src_index(vp, &src[0]), t_swizzle(GET_SWZ(src[0].Swizzle, 0)), // x + t_swizzle(GET_SWZ(src[0].Swizzle, 3)), // w + VSF_IN_COMPONENT_ZERO, // z + t_swizzle(GET_SWZ(src[0].Swizzle, 1)), // y + t_src_class(src[0]. + File), + src[0]. + NegateBase ? + VSF_FLAG_ALL : + VSF_FLAG_NONE) | + (src[0].RelAddr << 4); + o_inst->src[1] = MAKE_VSF_SOURCE(t_src_index(vp, &src[0]), t_swizzle(GET_SWZ(src[0].Swizzle, 1)), // y + t_swizzle(GET_SWZ(src[0].Swizzle, 3)), // w + VSF_IN_COMPONENT_ZERO, // z + t_swizzle(GET_SWZ(src[0].Swizzle, 0)), // x + t_src_class(src[0]. + File), + src[0]. + NegateBase ? + VSF_FLAG_ALL : + VSF_FLAG_NONE) | + (src[0].RelAddr << 4); + o_inst->src[2] = MAKE_VSF_SOURCE(t_src_index(vp, &src[0]), t_swizzle(GET_SWZ(src[0].Swizzle, 1)), // y + t_swizzle(GET_SWZ(src[0].Swizzle, 0)), // x + VSF_IN_COMPONENT_ZERO, // z + t_swizzle(GET_SWZ(src[0].Swizzle, 3)), // w + t_src_class(src[0]. + File), + src[0]. + NegateBase ? + VSF_FLAG_ALL : + VSF_FLAG_NONE) | + (src[0].RelAddr << 4); goto next; - case OPCODE_DPH://DOT RESULT 1.X Y Z W PARAM 0{} {X Y Z ONE} PARAM 0{} {X Y Z W} - o_inst->op=MAKE_VSF_OP(R300_VPI_OUT_OP_DOT, t_dst_index(vp, &vpi->DstReg), - t_dst_mask(vpi->DstReg.WriteMask), t_dst_class(vpi->DstReg.File)); - - o_inst->src[0]=MAKE_VSF_SOURCE(t_src_index(vp, &src[0]), - t_swizzle(GET_SWZ(src[0].Swizzle, 0)), - t_swizzle(GET_SWZ(src[0].Swizzle, 1)), - t_swizzle(GET_SWZ(src[0].Swizzle, 2)), - VSF_IN_COMPONENT_ONE, - t_src_class(src[0].File), - src[0].NegateBase ? VSF_FLAG_XYZ : VSF_FLAG_NONE) | (src[0].RelAddr << 4); - o_inst->src[1]=t_src(vp, &src[1]); - o_inst->src[2]=ZERO_SRC_1; + case OPCODE_DPH: //DOT RESULT 1.X Y Z W PARAM 0{} {X Y Z ONE} PARAM 0{} {X Y Z W} + o_inst->op = + MAKE_VSF_OP(R300_VPI_OUT_OP_DOT, + t_dst_index(vp, &vpi->DstReg), + t_dst_mask(vpi->DstReg.WriteMask), + t_dst_class(vpi->DstReg.File)); + + o_inst->src[0] = + MAKE_VSF_SOURCE(t_src_index(vp, &src[0]), + t_swizzle(GET_SWZ + (src[0].Swizzle, 0)), + t_swizzle(GET_SWZ + (src[0].Swizzle, 1)), + t_swizzle(GET_SWZ + (src[0].Swizzle, 2)), + VSF_IN_COMPONENT_ONE, + t_src_class(src[0].File), + src[0]. + NegateBase ? VSF_FLAG_XYZ : + VSF_FLAG_NONE) | (src[0]. + RelAddr << 4); + o_inst->src[1] = t_src(vp, &src[1]); + o_inst->src[2] = ZERO_SRC_1; goto next; case OPCODE_XPD: @@ -744,135 +898,162 @@ static void r300_translate_vertex_shader(struct r300_vertex_program *vp, struct NOTE: might need MAD_2 */ - o_inst->op=MAKE_VSF_OP(R300_VPI_OUT_OP_MAD, u_temp_i, - t_dst_mask(vpi->DstReg.WriteMask), VSF_OUT_CLASS_TMP); - - o_inst->src[0]=MAKE_VSF_SOURCE(t_src_index(vp, &src[0]), - t_swizzle(GET_SWZ(src[0].Swizzle, 1)), // y - t_swizzle(GET_SWZ(src[0].Swizzle, 2)), // z - t_swizzle(GET_SWZ(src[0].Swizzle, 0)), // x - t_swizzle(GET_SWZ(src[0].Swizzle, 3)), // w - t_src_class(src[0].File), - src[0].NegateBase ? VSF_FLAG_ALL : VSF_FLAG_NONE) | (src[0].RelAddr << 4); - - o_inst->src[1]=MAKE_VSF_SOURCE(t_src_index(vp, &src[1]), - t_swizzle(GET_SWZ(src[1].Swizzle, 2)), // z - t_swizzle(GET_SWZ(src[1].Swizzle, 0)), // x - t_swizzle(GET_SWZ(src[1].Swizzle, 1)), // y - t_swizzle(GET_SWZ(src[1].Swizzle, 3)), // w - t_src_class(src[1].File), - src[1].NegateBase ? VSF_FLAG_ALL : VSF_FLAG_NONE) | (src[1].RelAddr << 4); - - o_inst->src[2]=ZERO_SRC_1; + o_inst->op = MAKE_VSF_OP(R300_VPI_OUT_OP_MAD, u_temp_i, + t_dst_mask(vpi->DstReg. + WriteMask), + VSF_OUT_CLASS_TMP); + + o_inst->src[0] = MAKE_VSF_SOURCE(t_src_index(vp, &src[0]), t_swizzle(GET_SWZ(src[0].Swizzle, 1)), // y + t_swizzle(GET_SWZ(src[0].Swizzle, 2)), // z + t_swizzle(GET_SWZ(src[0].Swizzle, 0)), // x + t_swizzle(GET_SWZ(src[0].Swizzle, 3)), // w + t_src_class(src[0]. + File), + src[0]. + NegateBase ? + VSF_FLAG_ALL : + VSF_FLAG_NONE) | + (src[0].RelAddr << 4); + + o_inst->src[1] = MAKE_VSF_SOURCE(t_src_index(vp, &src[1]), t_swizzle(GET_SWZ(src[1].Swizzle, 2)), // z + t_swizzle(GET_SWZ(src[1].Swizzle, 0)), // x + t_swizzle(GET_SWZ(src[1].Swizzle, 1)), // y + t_swizzle(GET_SWZ(src[1].Swizzle, 3)), // w + t_src_class(src[1]. + File), + src[1]. + NegateBase ? + VSF_FLAG_ALL : + VSF_FLAG_NONE) | + (src[1].RelAddr << 4); + + o_inst->src[2] = ZERO_SRC_1; o_inst++; u_temp_i--; - o_inst->op=MAKE_VSF_OP(R300_VPI_OUT_OP_MAD, t_dst_index(vp, &vpi->DstReg), - t_dst_mask(vpi->DstReg.WriteMask), t_dst_class(vpi->DstReg.File)); - - o_inst->src[0]=MAKE_VSF_SOURCE(t_src_index(vp, &src[1]), - t_swizzle(GET_SWZ(src[1].Swizzle, 1)), // y - t_swizzle(GET_SWZ(src[1].Swizzle, 2)), // z - t_swizzle(GET_SWZ(src[1].Swizzle, 0)), // x - t_swizzle(GET_SWZ(src[1].Swizzle, 3)), // w - t_src_class(src[1].File), - (!src[1].NegateBase) ? VSF_FLAG_ALL : VSF_FLAG_NONE) | (src[1].RelAddr << 4); - - o_inst->src[1]=MAKE_VSF_SOURCE(t_src_index(vp, &src[0]), - t_swizzle(GET_SWZ(src[0].Swizzle, 2)), // z - t_swizzle(GET_SWZ(src[0].Swizzle, 0)), // x - t_swizzle(GET_SWZ(src[0].Swizzle, 1)), // y - t_swizzle(GET_SWZ(src[0].Swizzle, 3)), // w - t_src_class(src[0].File), - src[0].NegateBase ? VSF_FLAG_ALL : VSF_FLAG_NONE) | (src[0].RelAddr << 4); - - o_inst->src[2]=MAKE_VSF_SOURCE(u_temp_i+1, - VSF_IN_COMPONENT_X, - VSF_IN_COMPONENT_Y, - VSF_IN_COMPONENT_Z, - VSF_IN_COMPONENT_W, - VSF_IN_CLASS_TMP, - VSF_FLAG_NONE); + o_inst->op = + MAKE_VSF_OP(R300_VPI_OUT_OP_MAD, + t_dst_index(vp, &vpi->DstReg), + t_dst_mask(vpi->DstReg.WriteMask), + t_dst_class(vpi->DstReg.File)); + + o_inst->src[0] = MAKE_VSF_SOURCE(t_src_index(vp, &src[1]), t_swizzle(GET_SWZ(src[1].Swizzle, 1)), // y + t_swizzle(GET_SWZ(src[1].Swizzle, 2)), // z + t_swizzle(GET_SWZ(src[1].Swizzle, 0)), // x + t_swizzle(GET_SWZ(src[1].Swizzle, 3)), // w + t_src_class(src[1]. + File), + (!src[1]. + NegateBase) ? + VSF_FLAG_ALL : + VSF_FLAG_NONE) | + (src[1].RelAddr << 4); + + o_inst->src[1] = MAKE_VSF_SOURCE(t_src_index(vp, &src[0]), t_swizzle(GET_SWZ(src[0].Swizzle, 2)), // z + t_swizzle(GET_SWZ(src[0].Swizzle, 0)), // x + t_swizzle(GET_SWZ(src[0].Swizzle, 1)), // y + t_swizzle(GET_SWZ(src[0].Swizzle, 3)), // w + t_src_class(src[0]. + File), + src[0]. + NegateBase ? + VSF_FLAG_ALL : + VSF_FLAG_NONE) | + (src[0].RelAddr << 4); + + o_inst->src[2] = MAKE_VSF_SOURCE(u_temp_i + 1, + VSF_IN_COMPONENT_X, + VSF_IN_COMPONENT_Y, + VSF_IN_COMPONENT_Z, + VSF_IN_COMPONENT_W, + VSF_IN_CLASS_TMP, + VSF_FLAG_NONE); goto next; case OPCODE_RCC: - fprintf(stderr, "Dont know how to handle op %d yet\n", vpi->Opcode); + fprintf(stderr, "Dont know how to handle op %d yet\n", + vpi->Opcode); _mesa_exit(-1); - break; + break; case OPCODE_END: break; default: break; } - o_inst->op=MAKE_VSF_OP(t_opcode(vpi->Opcode), t_dst_index(vp, &vpi->DstReg), - t_dst_mask(vpi->DstReg.WriteMask), t_dst_class(vpi->DstReg.File)); - - if(are_srcs_scalar){ - switch(operands){ - case 1: - o_inst->src[0]=t_src_scalar(vp, &src[0]); - o_inst->src[1]=ZERO_SRC_0; - o_inst->src[2]=ZERO_SRC_0; + o_inst->op = + MAKE_VSF_OP(t_opcode(vpi->Opcode), + t_dst_index(vp, &vpi->DstReg), + t_dst_mask(vpi->DstReg.WriteMask), + t_dst_class(vpi->DstReg.File)); + + if (are_srcs_scalar) { + switch (operands) { + case 1: + o_inst->src[0] = t_src_scalar(vp, &src[0]); + o_inst->src[1] = ZERO_SRC_0; + o_inst->src[2] = ZERO_SRC_0; break; - case 2: - o_inst->src[0]=t_src_scalar(vp, &src[0]); - o_inst->src[1]=t_src_scalar(vp, &src[1]); - o_inst->src[2]=ZERO_SRC_1; + case 2: + o_inst->src[0] = t_src_scalar(vp, &src[0]); + o_inst->src[1] = t_src_scalar(vp, &src[1]); + o_inst->src[2] = ZERO_SRC_1; break; - case 3: - o_inst->src[0]=t_src_scalar(vp, &src[0]); - o_inst->src[1]=t_src_scalar(vp, &src[1]); - o_inst->src[2]=t_src_scalar(vp, &src[2]); + case 3: + o_inst->src[0] = t_src_scalar(vp, &src[0]); + o_inst->src[1] = t_src_scalar(vp, &src[1]); + o_inst->src[2] = t_src_scalar(vp, &src[2]); break; - default: - fprintf(stderr, "scalars and op RCC not handled yet"); - _mesa_exit(-1); + default: + fprintf(stderr, + "scalars and op RCC not handled yet"); + _mesa_exit(-1); break; } - }else{ - switch(operands){ - case 1: - o_inst->src[0]=t_src(vp, &src[0]); - o_inst->src[1]=ZERO_SRC_0; - o_inst->src[2]=ZERO_SRC_0; + } else { + switch (operands) { + case 1: + o_inst->src[0] = t_src(vp, &src[0]); + o_inst->src[1] = ZERO_SRC_0; + o_inst->src[2] = ZERO_SRC_0; break; - case 2: - o_inst->src[0]=t_src(vp, &src[0]); - o_inst->src[1]=t_src(vp, &src[1]); - o_inst->src[2]=ZERO_SRC_1; + case 2: + o_inst->src[0] = t_src(vp, &src[0]); + o_inst->src[1] = t_src(vp, &src[1]); + o_inst->src[2] = ZERO_SRC_1; break; - case 3: - o_inst->src[0]=t_src(vp, &src[0]); - o_inst->src[1]=t_src(vp, &src[1]); - o_inst->src[2]=t_src(vp, &src[2]); + case 3: + o_inst->src[0] = t_src(vp, &src[0]); + o_inst->src[1] = t_src(vp, &src[1]); + o_inst->src[2] = t_src(vp, &src[2]); break; - default: - fprintf(stderr, "scalars and op RCC not handled yet"); - _mesa_exit(-1); + default: + fprintf(stderr, + "scalars and op RCC not handled yet"); + _mesa_exit(-1); break; } } - next: ; + next:; } /* Will most likely segfault before we get here... fix later. */ - if(o_inst - vp->program.body.i >= VSF_MAX_FRAGMENT_LENGTH/4) { + if (o_inst - vp->program.body.i >= VSF_MAX_FRAGMENT_LENGTH / 4) { vp->program.length = 0; vp->native = GL_FALSE; - return ; + return; } - vp->program.length=(o_inst - vp->program.body.i) * 4; + vp->program.length = (o_inst - vp->program.body.i) * 4; #if 0 fprintf(stderr, "hw program:\n"); - for(i=0; i < vp->program.length; i++) + for (i = 0; i < vp->program.length; i++) fprintf(stderr, "%08x\n", vp->program.body.d[i]); #endif } @@ -885,20 +1066,20 @@ static void position_invariant(struct gl_program *prog) gl_state_index tokens[STATE_LENGTH] = { STATE_MVP_MATRIX, 0, 0, 0, 0 }; - /* tokens[4] = matrix modifier */ + /* tokens[4] = matrix modifier */ #ifdef PREFER_DP4 - tokens[4] = 0; /* not transposed or inverted */ + tokens[4] = 0; /* not transposed or inverted */ #else tokens[4] = STATE_MATRIX_TRANSPOSE; #endif paramList = prog->Parameters; - vpi = _mesa_alloc_instructions (prog->NumInstructions + 4); - _mesa_init_instructions (vpi, prog->NumInstructions + 4); + vpi = _mesa_alloc_instructions(prog->NumInstructions + 4); + _mesa_init_instructions(vpi, prog->NumInstructions + 4); - for (i=0; i < 4; i++) { + for (i = 0; i < 4; i++) { GLint idx; - tokens[2] = tokens[3] = i; /* matrix row[i]..row[i] */ + tokens[2] = tokens[3] = i; /* matrix row[i]..row[i] */ idx = _mesa_add_state_reference(paramList, tokens); #ifdef PREFER_DP4 vpi[i].Opcode = OPCODE_DP4; @@ -950,34 +1131,35 @@ static void position_invariant(struct gl_program *prog) #endif } - _mesa_copy_instructions (&vpi[i], prog->Instructions, prog->NumInstructions); + _mesa_copy_instructions(&vpi[i], prog->Instructions, + prog->NumInstructions); free(prog->Instructions); prog->Instructions = vpi; prog->NumInstructions += 4; - vpi = &prog->Instructions[prog->NumInstructions-1]; + vpi = &prog->Instructions[prog->NumInstructions - 1]; assert(vpi->Opcode == OPCODE_END); } static void insert_wpos(struct r300_vertex_program *vp, - struct gl_program *prog, - GLuint temp_index) + struct gl_program *prog, GLuint temp_index) { struct prog_instruction *vpi; struct prog_instruction *vpi_insert; int i = 0; - vpi = _mesa_alloc_instructions (prog->NumInstructions + 2); - _mesa_init_instructions (vpi, prog->NumInstructions + 2); + vpi = _mesa_alloc_instructions(prog->NumInstructions + 2); + _mesa_init_instructions(vpi, prog->NumInstructions + 2); /* all but END */ - _mesa_copy_instructions (vpi, prog->Instructions, prog->NumInstructions - 1); + _mesa_copy_instructions(vpi, prog->Instructions, + prog->NumInstructions - 1); /* END */ - _mesa_copy_instructions (&vpi[prog->NumInstructions + 1], - &prog->Instructions[prog->NumInstructions - 1], - 1); + _mesa_copy_instructions(&vpi[prog->NumInstructions + 1], + &prog->Instructions[prog->NumInstructions - 1], + 1); vpi_insert = &vpi[prog->NumInstructions - 1]; vpi_insert[i].Opcode = OPCODE_MOV; @@ -995,7 +1177,7 @@ static void insert_wpos(struct r300_vertex_program *vp, vpi_insert[i].Opcode = OPCODE_MOV; vpi_insert[i].DstReg.File = PROGRAM_OUTPUT; - vpi_insert[i].DstReg.Index = VERT_RESULT_TEX0+vp->wpos_idx; + vpi_insert[i].DstReg.Index = VERT_RESULT_TEX0 + vp->wpos_idx; vpi_insert[i].DstReg.WriteMask = WRITEMASK_XYZW; vpi_insert[i].DstReg.CondMask = COND_TR; @@ -1009,7 +1191,7 @@ static void insert_wpos(struct r300_vertex_program *vp, prog->Instructions = vpi; prog->NumInstructions += i; - vpi = &prog->Instructions[prog->NumInstructions-1]; + vpi = &prog->Instructions[prog->NumInstructions - 1]; assert(vpi->Opcode == OPCODE_END); } @@ -1022,9 +1204,9 @@ static void pos_as_texcoord(struct r300_vertex_program *vp, /* should do something else if no temps left... */ prog->NumTemporaries++; - for(vpi = prog->Instructions; vpi->Opcode != OPCODE_END; vpi++){ - if( vpi->DstReg.File == PROGRAM_OUTPUT && - vpi->DstReg.Index == VERT_RESULT_HPOS ){ + for (vpi = prog->Instructions; vpi->Opcode != OPCODE_END; vpi++) { + if (vpi->DstReg.File == PROGRAM_OUTPUT && + vpi->DstReg.Index == VERT_RESULT_HPOS) { vpi->DstReg.File = PROGRAM_TEMPORARY; vpi->DstReg.Index = tempregi; } @@ -1032,9 +1214,10 @@ static void pos_as_texcoord(struct r300_vertex_program *vp, insert_wpos(vp, prog, tempregi); } -static struct r300_vertex_program *build_program(struct r300_vertex_program_key *wanted_key, - struct gl_vertex_program *mesa_vp, - GLint wpos_idx) +static struct r300_vertex_program *build_program(struct r300_vertex_program_key + *wanted_key, + struct gl_vertex_program + *mesa_vp, GLint wpos_idx) { struct r300_vertex_program *vp; @@ -1043,16 +1226,16 @@ static struct r300_vertex_program *build_program(struct r300_vertex_program_key vp->wpos_idx = wpos_idx; - if(mesa_vp->IsPositionInvariant) { + if (mesa_vp->IsPositionInvariant) { position_invariant(&mesa_vp->Base); } - if(wpos_idx > -1) + if (wpos_idx > -1) pos_as_texcoord(vp, &mesa_vp->Base); assert(mesa_vp->Base.NumInstructions); - vp->num_temporaries=mesa_vp->Base.NumTemporaries; + vp->num_temporaries = mesa_vp->Base.NumTemporaries; r300_translate_vertex_shader(vp, mesa_vp->Base.Instructions); @@ -1075,12 +1258,12 @@ void r300_select_vertex_shader(r300ContextPtr r300) wanted_key.OutputsWritten |= 1 << VERT_RESULT_HPOS; wpos_idx = -1; - if (InputsRead & FRAG_BIT_WPOS){ + if (InputsRead & FRAG_BIT_WPOS) { for (i = 0; i < ctx->Const.MaxTextureUnits; i++) if (!(InputsRead & (FRAG_BIT_TEX0 << i))) break; - if(i == ctx->Const.MaxTextureUnits){ + if (i == ctx->Const.MaxTextureUnits) { fprintf(stderr, "\tno free texcoord found\n"); _mesa_exit(-1); } @@ -1092,26 +1275,27 @@ void r300_select_vertex_shader(r300ContextPtr r300) if (InputsRead & FRAG_BIT_COL0) wanted_key.OutputsWritten |= 1 << VERT_RESULT_COL0; - if ((InputsRead & FRAG_BIT_COL1) /*|| - (InputsRead & FRAG_BIT_FOGC)*/) + if ((InputsRead & FRAG_BIT_COL1) /*|| + (InputsRead & FRAG_BIT_FOGC) */ ) wanted_key.OutputsWritten |= 1 << VERT_RESULT_COL1; for (i = 0; i < ctx->Const.MaxTextureUnits; i++) if (InputsRead & (FRAG_BIT_TEX0 << i)) - wanted_key.OutputsWritten |= 1 << (VERT_RESULT_TEX0 + i); + wanted_key.OutputsWritten |= + 1 << (VERT_RESULT_TEX0 + i); wanted_key.InputsRead = vpc->mesa_program.Base.InputsRead; - if(vpc->mesa_program.IsPositionInvariant) { + if (vpc->mesa_program.IsPositionInvariant) { /* we wan't position don't we ? */ wanted_key.InputsRead |= (1 << VERT_ATTRIB_POS); } for (vp = vpc->progs; vp; vp = vp->next) - if (_mesa_memcmp(&vp->key, &wanted_key, sizeof(wanted_key)) == 0) { + if (_mesa_memcmp(&vp->key, &wanted_key, sizeof(wanted_key)) == + 0) { r300->selected_vp = vp; - return ; + return; } - //_mesa_print_program(&vpc->mesa_program.Base); vp = build_program(&wanted_key, &vpc->mesa_program, wpos_idx); diff --git a/src/mesa/drivers/dri/r300/r300_vertprog.h b/src/mesa/drivers/dri/r300/r300_vertprog.h index 005fca976b6..252d5a901f4 100644 --- a/src/mesa/drivers/dri/r300/r300_vertprog.h +++ b/src/mesa/drivers/dri/r300/r300_vertprog.h @@ -20,7 +20,6 @@ typedef struct { #define VSF_OUT_CLASS_ADDR 1 #define VSF_OUT_CLASS_RESULT 2 - /* first DWORD of an instruction */ /* possible operations: @@ -57,7 +56,7 @@ typedef struct { | ((comp_z)< Date: Wed, 9 May 2007 04:20:35 +0000 Subject: r300: Don't indent the tables in r300_texstate.c. --- src/mesa/drivers/dri/r300/r300_texstate.c | 170 +++++++++++++++--------------- 1 file changed, 87 insertions(+), 83 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_texstate.c b/src/mesa/drivers/dri/r300/r300_texstate.c index b17652e4ddf..6a104719269 100644 --- a/src/mesa/drivers/dri/r300/r300_texstate.c +++ b/src/mesa/drivers/dri/r300/r300_texstate.c @@ -55,96 +55,100 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define _ASSIGN(entry, format) \ [ MESA_FORMAT_ ## entry ] = { format, 0, 1} +/* + * Note that the _REV formats are the same as the non-REV formats. This is + * because the REV and non-REV formats are identical as a byte string, but + * differ when accessed as 16-bit or 32-bit words depending on the endianness of + * the host. Since the textures are transferred to the R300 as a byte string + * (i.e. without any byte-swapping), the R300 sees the REV and non-REV formats + * identically. -- paulus + */ + static const struct { GLuint format, filter, flag; } tx_table_be[] = { - /* - * Note that the _REV formats are the same as the non-REV formats. - * This is because the REV and non-REV formats are identical as a - * byte string, but differ when accessed as 16-bit or 32-bit words - * depending on the endianness of the host. Since the textures are - * transferred to the R300 as a byte string (i.e. without any - * byte-swapping), the R300 sees the REV and non-REV formats - * identically. -- paulus - */ - _ASSIGN(RGBA8888, R300_EASY_TX_FORMAT(Z, Y, X, W, W8Z8Y8X8)), - _ASSIGN(RGBA8888_REV, R300_EASY_TX_FORMAT(Y, Z, W, X, W8Z8Y8X8)), - _ASSIGN(ARGB8888, R300_EASY_TX_FORMAT(W, Z, Y, X, W8Z8Y8X8)), - _ASSIGN(ARGB8888_REV, R300_EASY_TX_FORMAT(X, Y, Z, W, W8Z8Y8X8)), - _ASSIGN(RGB888, 0xffffffff), - _ASSIGN(RGB565, R300_EASY_TX_FORMAT(X, Y, Z, ONE, Z5Y6X5)), - _ASSIGN(RGB565_REV, R300_EASY_TX_FORMAT(X, Y, Z, ONE, Z5Y6X5)), - _ASSIGN(ARGB4444, R300_EASY_TX_FORMAT(X, Y, Z, W, W4Z4Y4X4)), - _ASSIGN(ARGB4444_REV, R300_EASY_TX_FORMAT(X, Y, Z, W, W4Z4Y4X4)), - _ASSIGN(ARGB1555, R300_EASY_TX_FORMAT(X, Y, Z, W, W1Z5Y5X5)), - _ASSIGN(ARGB1555_REV, R300_EASY_TX_FORMAT(X, Y, Z, W, W1Z5Y5X5)), - _ASSIGN(AL88, R300_EASY_TX_FORMAT(X, X, X, Y, Y8X8)), - _ASSIGN(AL88_REV, R300_EASY_TX_FORMAT(X, X, X, Y, Y8X8)), - _ASSIGN(RGB332, R300_EASY_TX_FORMAT(X, Y, Z, ONE, Z3Y3X2)), - _ASSIGN(A8, R300_EASY_TX_FORMAT(ZERO, ZERO, ZERO, X, X8)), - _ASSIGN(L8, R300_EASY_TX_FORMAT(X, X, X, ONE, X8)), - _ASSIGN(I8, R300_EASY_TX_FORMAT(X, X, X, X, X8)), - _ASSIGN(CI8, R300_EASY_TX_FORMAT(X, X, X, X, X8)), - _ASSIGN(YCBCR, R300_EASY_TX_FORMAT(X, Y, Z, ONE, G8R8_G8B8)|R300_TX_FORMAT_YUV_MODE ), - _ASSIGN(YCBCR_REV, R300_EASY_TX_FORMAT(X, Y, Z, ONE, G8R8_G8B8)|R300_TX_FORMAT_YUV_MODE), - _ASSIGN(RGB_DXT1, R300_EASY_TX_FORMAT(X, Y, Z, ONE, DXT1)), - _ASSIGN(RGBA_DXT1, R300_EASY_TX_FORMAT(X, Y, Z, W, DXT1)), - _ASSIGN(RGBA_DXT3, R300_EASY_TX_FORMAT(X, Y, Z, W, DXT3)), - _ASSIGN(RGBA_DXT5, R300_EASY_TX_FORMAT(Y, Z, W, X, DXT5)), - _ASSIGN(RGBA_FLOAT32, R300_EASY_TX_FORMAT(Z, Y, X, W, FL_R32G32B32A32)), - _ASSIGN(RGBA_FLOAT16, R300_EASY_TX_FORMAT(Z, Y, X, W, FL_R16G16B16A16)), - _ASSIGN(RGB_FLOAT32, 0xffffffff), - _ASSIGN(RGB_FLOAT16, 0xffffffff), - _ASSIGN(ALPHA_FLOAT32, R300_EASY_TX_FORMAT(ZERO, ZERO, ZERO, X, FL_I32)), - _ASSIGN(ALPHA_FLOAT16, R300_EASY_TX_FORMAT(ZERO, ZERO, ZERO, X, FL_I16)), - _ASSIGN(LUMINANCE_FLOAT32, R300_EASY_TX_FORMAT(X, X, X, ONE, FL_I32)), - _ASSIGN(LUMINANCE_FLOAT16, R300_EASY_TX_FORMAT(X, X, X, ONE, FL_I16)), - _ASSIGN(LUMINANCE_ALPHA_FLOAT32, R300_EASY_TX_FORMAT(X, X, X, Y, FL_I32A32)), - _ASSIGN(LUMINANCE_ALPHA_FLOAT16, R300_EASY_TX_FORMAT(X, X, X, Y, FL_I16A16)), - _ASSIGN(INTENSITY_FLOAT32, R300_EASY_TX_FORMAT(X, X, X, X, FL_I32)), - _ASSIGN(INTENSITY_FLOAT16, R300_EASY_TX_FORMAT(X, X, X, X, FL_I16)), - }; + /* *INDENT-OFF* */ + _ASSIGN(RGBA8888, R300_EASY_TX_FORMAT(Z, Y, X, W, W8Z8Y8X8)), + _ASSIGN(RGBA8888_REV, R300_EASY_TX_FORMAT(Y, Z, W, X, W8Z8Y8X8)), + _ASSIGN(ARGB8888, R300_EASY_TX_FORMAT(W, Z, Y, X, W8Z8Y8X8)), + _ASSIGN(ARGB8888_REV, R300_EASY_TX_FORMAT(X, Y, Z, W, W8Z8Y8X8)), + _ASSIGN(RGB888, 0xffffffff), + _ASSIGN(RGB565, R300_EASY_TX_FORMAT(X, Y, Z, ONE, Z5Y6X5)), + _ASSIGN(RGB565_REV, R300_EASY_TX_FORMAT(X, Y, Z, ONE, Z5Y6X5)), + _ASSIGN(ARGB4444, R300_EASY_TX_FORMAT(X, Y, Z, W, W4Z4Y4X4)), + _ASSIGN(ARGB4444_REV, R300_EASY_TX_FORMAT(X, Y, Z, W, W4Z4Y4X4)), + _ASSIGN(ARGB1555, R300_EASY_TX_FORMAT(X, Y, Z, W, W1Z5Y5X5)), + _ASSIGN(ARGB1555_REV, R300_EASY_TX_FORMAT(X, Y, Z, W, W1Z5Y5X5)), + _ASSIGN(AL88, R300_EASY_TX_FORMAT(X, X, X, Y, Y8X8)), + _ASSIGN(AL88_REV, R300_EASY_TX_FORMAT(X, X, X, Y, Y8X8)), + _ASSIGN(RGB332, R300_EASY_TX_FORMAT(X, Y, Z, ONE, Z3Y3X2)), + _ASSIGN(A8, R300_EASY_TX_FORMAT(ZERO, ZERO, ZERO, X, X8)), + _ASSIGN(L8, R300_EASY_TX_FORMAT(X, X, X, ONE, X8)), + _ASSIGN(I8, R300_EASY_TX_FORMAT(X, X, X, X, X8)), + _ASSIGN(CI8, R300_EASY_TX_FORMAT(X, X, X, X, X8)), + _ASSIGN(YCBCR, R300_EASY_TX_FORMAT(X, Y, Z, ONE, G8R8_G8B8)|R300_TX_FORMAT_YUV_MODE ), + _ASSIGN(YCBCR_REV, R300_EASY_TX_FORMAT(X, Y, Z, ONE, G8R8_G8B8)|R300_TX_FORMAT_YUV_MODE), + _ASSIGN(RGB_DXT1, R300_EASY_TX_FORMAT(X, Y, Z, ONE, DXT1)), + _ASSIGN(RGBA_DXT1, R300_EASY_TX_FORMAT(X, Y, Z, W, DXT1)), + _ASSIGN(RGBA_DXT3, R300_EASY_TX_FORMAT(X, Y, Z, W, DXT3)), + _ASSIGN(RGBA_DXT5, R300_EASY_TX_FORMAT(Y, Z, W, X, DXT5)), + _ASSIGN(RGBA_FLOAT32, R300_EASY_TX_FORMAT(Z, Y, X, W, FL_R32G32B32A32)), + _ASSIGN(RGBA_FLOAT16, R300_EASY_TX_FORMAT(Z, Y, X, W, FL_R16G16B16A16)), + _ASSIGN(RGB_FLOAT32, 0xffffffff), + _ASSIGN(RGB_FLOAT16, 0xffffffff), + _ASSIGN(ALPHA_FLOAT32, R300_EASY_TX_FORMAT(ZERO, ZERO, ZERO, X, FL_I32)), + _ASSIGN(ALPHA_FLOAT16, R300_EASY_TX_FORMAT(ZERO, ZERO, ZERO, X, FL_I16)), + _ASSIGN(LUMINANCE_FLOAT32, R300_EASY_TX_FORMAT(X, X, X, ONE, FL_I32)), + _ASSIGN(LUMINANCE_FLOAT16, R300_EASY_TX_FORMAT(X, X, X, ONE, FL_I16)), + _ASSIGN(LUMINANCE_ALPHA_FLOAT32, R300_EASY_TX_FORMAT(X, X, X, Y, FL_I32A32)), + _ASSIGN(LUMINANCE_ALPHA_FLOAT16, R300_EASY_TX_FORMAT(X, X, X, Y, FL_I16A16)), + _ASSIGN(INTENSITY_FLOAT32, R300_EASY_TX_FORMAT(X, X, X, X, FL_I32)), + _ASSIGN(INTENSITY_FLOAT16, R300_EASY_TX_FORMAT(X, X, X, X, FL_I16)), + /* *INDENT-ON* */ +}; static const struct { GLuint format, filter, flag; } tx_table_le[] = { - _ASSIGN(RGBA8888, R300_EASY_TX_FORMAT(Y, Z, W, X, W8Z8Y8X8)), - _ASSIGN(RGBA8888_REV, R300_EASY_TX_FORMAT(Z, Y, X, W, W8Z8Y8X8)), - _ASSIGN(ARGB8888, R300_EASY_TX_FORMAT(X, Y, Z, W, W8Z8Y8X8)), - _ASSIGN(ARGB8888_REV, R300_EASY_TX_FORMAT(W, Z, Y, X, W8Z8Y8X8)), - _ASSIGN(RGB888, 0xffffffff), - _ASSIGN(RGB565, R300_EASY_TX_FORMAT(X, Y, Z, ONE, Z5Y6X5)), - _ASSIGN(RGB565_REV, R300_EASY_TX_FORMAT(X, Y, Z, ONE, Z5Y6X5)), - _ASSIGN(ARGB4444, R300_EASY_TX_FORMAT(X, Y, Z, W, W4Z4Y4X4)), - _ASSIGN(ARGB4444_REV, R300_EASY_TX_FORMAT(X, Y, Z, W, W4Z4Y4X4)), - _ASSIGN(ARGB1555, R300_EASY_TX_FORMAT(X, Y, Z, W, W1Z5Y5X5)), - _ASSIGN(ARGB1555_REV, R300_EASY_TX_FORMAT(X, Y, Z, W, W1Z5Y5X5)), - _ASSIGN(AL88, R300_EASY_TX_FORMAT(X, X, X, Y, Y8X8)), - _ASSIGN(AL88_REV, R300_EASY_TX_FORMAT(X, X, X, Y, Y8X8)), - _ASSIGN(RGB332, R300_EASY_TX_FORMAT(X, Y, Z, ONE, Z3Y3X2)), - _ASSIGN(A8, R300_EASY_TX_FORMAT(ZERO, ZERO, ZERO, X, X8)), - _ASSIGN(L8, R300_EASY_TX_FORMAT(X, X, X, ONE, X8)), - _ASSIGN(I8, R300_EASY_TX_FORMAT(X, X, X, X, X8)), - _ASSIGN(CI8, R300_EASY_TX_FORMAT(X, X, X, X, X8)), - _ASSIGN(YCBCR, R300_EASY_TX_FORMAT(X, Y, Z, ONE, G8R8_G8B8)|R300_TX_FORMAT_YUV_MODE ), - _ASSIGN(YCBCR_REV, R300_EASY_TX_FORMAT(X, Y, Z, ONE, G8R8_G8B8)|R300_TX_FORMAT_YUV_MODE), - _ASSIGN(RGB_DXT1, R300_EASY_TX_FORMAT(X, Y, Z, ONE, DXT1)), - _ASSIGN(RGBA_DXT1, R300_EASY_TX_FORMAT(X, Y, Z, W, DXT1)), - _ASSIGN(RGBA_DXT3, R300_EASY_TX_FORMAT(X, Y, Z, W, DXT3)), - _ASSIGN(RGBA_DXT5, R300_EASY_TX_FORMAT(Y, Z, W, X, DXT5)), - _ASSIGN(RGBA_FLOAT32, R300_EASY_TX_FORMAT(Z, Y, X, W, FL_R32G32B32A32)), - _ASSIGN(RGBA_FLOAT16, R300_EASY_TX_FORMAT(Z, Y, X, W, FL_R16G16B16A16)), - _ASSIGN(RGB_FLOAT32, 0xffffffff), - _ASSIGN(RGB_FLOAT16, 0xffffffff), - _ASSIGN(ALPHA_FLOAT32, R300_EASY_TX_FORMAT(ZERO, ZERO, ZERO, X, FL_I32)), - _ASSIGN(ALPHA_FLOAT16, R300_EASY_TX_FORMAT(ZERO, ZERO, ZERO, X, FL_I16)), - _ASSIGN(LUMINANCE_FLOAT32, R300_EASY_TX_FORMAT(X, X, X, ONE, FL_I32)), - _ASSIGN(LUMINANCE_FLOAT16, R300_EASY_TX_FORMAT(X, X, X, ONE, FL_I16)), - _ASSIGN(LUMINANCE_ALPHA_FLOAT32, R300_EASY_TX_FORMAT(X, X, X, Y, FL_I32A32)), - _ASSIGN(LUMINANCE_ALPHA_FLOAT16, R300_EASY_TX_FORMAT(X, X, X, Y, FL_I16A16)), - _ASSIGN(INTENSITY_FLOAT32, R300_EASY_TX_FORMAT(X, X, X, X, FL_I32)), - _ASSIGN(INTENSITY_FLOAT16, R300_EASY_TX_FORMAT(X, X, X, X, FL_I16)), - }; + /* *INDENT-OFF* */ + _ASSIGN(RGBA8888, R300_EASY_TX_FORMAT(Y, Z, W, X, W8Z8Y8X8)), + _ASSIGN(RGBA8888_REV, R300_EASY_TX_FORMAT(Z, Y, X, W, W8Z8Y8X8)), + _ASSIGN(ARGB8888, R300_EASY_TX_FORMAT(X, Y, Z, W, W8Z8Y8X8)), + _ASSIGN(ARGB8888_REV, R300_EASY_TX_FORMAT(W, Z, Y, X, W8Z8Y8X8)), + _ASSIGN(RGB888, 0xffffffff), + _ASSIGN(RGB565, R300_EASY_TX_FORMAT(X, Y, Z, ONE, Z5Y6X5)), + _ASSIGN(RGB565_REV, R300_EASY_TX_FORMAT(X, Y, Z, ONE, Z5Y6X5)), + _ASSIGN(ARGB4444, R300_EASY_TX_FORMAT(X, Y, Z, W, W4Z4Y4X4)), + _ASSIGN(ARGB4444_REV, R300_EASY_TX_FORMAT(X, Y, Z, W, W4Z4Y4X4)), + _ASSIGN(ARGB1555, R300_EASY_TX_FORMAT(X, Y, Z, W, W1Z5Y5X5)), + _ASSIGN(ARGB1555_REV, R300_EASY_TX_FORMAT(X, Y, Z, W, W1Z5Y5X5)), + _ASSIGN(AL88, R300_EASY_TX_FORMAT(X, X, X, Y, Y8X8)), + _ASSIGN(AL88_REV, R300_EASY_TX_FORMAT(X, X, X, Y, Y8X8)), + _ASSIGN(RGB332, R300_EASY_TX_FORMAT(X, Y, Z, ONE, Z3Y3X2)), + _ASSIGN(A8, R300_EASY_TX_FORMAT(ZERO, ZERO, ZERO, X, X8)), + _ASSIGN(L8, R300_EASY_TX_FORMAT(X, X, X, ONE, X8)), + _ASSIGN(I8, R300_EASY_TX_FORMAT(X, X, X, X, X8)), + _ASSIGN(CI8, R300_EASY_TX_FORMAT(X, X, X, X, X8)), + _ASSIGN(YCBCR, R300_EASY_TX_FORMAT(X, Y, Z, ONE, G8R8_G8B8)|R300_TX_FORMAT_YUV_MODE ), + _ASSIGN(YCBCR_REV, R300_EASY_TX_FORMAT(X, Y, Z, ONE, G8R8_G8B8)|R300_TX_FORMAT_YUV_MODE), + _ASSIGN(RGB_DXT1, R300_EASY_TX_FORMAT(X, Y, Z, ONE, DXT1)), + _ASSIGN(RGBA_DXT1, R300_EASY_TX_FORMAT(X, Y, Z, W, DXT1)), + _ASSIGN(RGBA_DXT3, R300_EASY_TX_FORMAT(X, Y, Z, W, DXT3)), + _ASSIGN(RGBA_DXT5, R300_EASY_TX_FORMAT(Y, Z, W, X, DXT5)), + _ASSIGN(RGBA_FLOAT32, R300_EASY_TX_FORMAT(Z, Y, X, W, FL_R32G32B32A32)), + _ASSIGN(RGBA_FLOAT16, R300_EASY_TX_FORMAT(Z, Y, X, W, FL_R16G16B16A16)), + _ASSIGN(RGB_FLOAT32, 0xffffffff), + _ASSIGN(RGB_FLOAT16, 0xffffffff), + _ASSIGN(ALPHA_FLOAT32, R300_EASY_TX_FORMAT(ZERO, ZERO, ZERO, X, FL_I32)), + _ASSIGN(ALPHA_FLOAT16, R300_EASY_TX_FORMAT(ZERO, ZERO, ZERO, X, FL_I16)), + _ASSIGN(LUMINANCE_FLOAT32, R300_EASY_TX_FORMAT(X, X, X, ONE, FL_I32)), + _ASSIGN(LUMINANCE_FLOAT16, R300_EASY_TX_FORMAT(X, X, X, ONE, FL_I16)), + _ASSIGN(LUMINANCE_ALPHA_FLOAT32, R300_EASY_TX_FORMAT(X, X, X, Y, FL_I32A32)), + _ASSIGN(LUMINANCE_ALPHA_FLOAT16, R300_EASY_TX_FORMAT(X, X, X, Y, FL_I16A16)), + _ASSIGN(INTENSITY_FLOAT32, R300_EASY_TX_FORMAT(X, X, X, X, FL_I32)), + _ASSIGN(INTENSITY_FLOAT16, R300_EASY_TX_FORMAT(X, X, X, X, FL_I16)), + /* *INDENT-ON* */ +}; #undef _ASSIGN -- cgit v1.2.3 From 93e957cc65003367b70f23611ef58c1c2bb64b7c Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 04:25:27 +0000 Subject: r300: Removed some disabled R200 code from the R300 driver. --- src/mesa/drivers/dri/r300/r300_tex.c | 2 -- src/mesa/drivers/dri/r300/r300_texstate.c | 51 +------------------------------ 2 files changed, 1 insertion(+), 52 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_tex.c b/src/mesa/drivers/dri/r300/r300_tex.c index 027950bb2db..3eb575cbddb 100644 --- a/src/mesa/drivers/dri/r300/r300_tex.c +++ b/src/mesa/drivers/dri/r300/r300_tex.c @@ -240,11 +240,9 @@ static void r300SetTexFilter(r300TexObjPtr t, GLenum minf, GLenum magf) switch (magf) { case GL_NEAREST: t->filter |= R300_TX_MAG_FILTER_NEAREST; - /*t->format_x |= R200_VOLUME_FILTER_NEAREST;*/ break; case GL_LINEAR: t->filter |= R300_TX_MAG_FILTER_LINEAR; - /*t->format_x |= R200_VOLUME_FILTER_LINEAR;*/ break; } } diff --git a/src/mesa/drivers/dri/r300/r300_texstate.c b/src/mesa/drivers/dri/r300/r300_texstate.c index 6a104719269..9e72b6fa6e0 100644 --- a/src/mesa/drivers/dri/r300/r300_texstate.c +++ b/src/mesa/drivers/dri/r300/r300_texstate.c @@ -340,37 +340,6 @@ static void r300SetTexImages(r300ContextPtr rmesa, t->base.totalSize *= 6; /* total texmem needed */ } - /* Hardware state: - */ -#if 0 - t->format &= ~(R200_TXFORMAT_WIDTH_MASK | - R200_TXFORMAT_HEIGHT_MASK | - R200_TXFORMAT_CUBIC_MAP_ENABLE | - R200_TXFORMAT_F5_WIDTH_MASK | - R200_TXFORMAT_F5_HEIGHT_MASK); - t->format |= ((log2Width << R200_TXFORMAT_WIDTH_SHIFT) | - (log2Height << R200_TXFORMAT_HEIGHT_SHIFT)); -#endif -#if 0 - t->format_x &= ~(R200_DEPTH_LOG2_MASK | R200_TEXCOORD_MASK); - if (tObj->Target == GL_TEXTURE_3D) { - t->format_x |= (log2Depth << R200_DEPTH_LOG2_SHIFT); - t->format_x |= R200_TEXCOORD_VOLUME; - } else if (tObj->Target == GL_TEXTURE_CUBE_MAP) { - ASSERT(log2Width == log2Height); - t->format |= R300_TX_FORMAT_CUBIC_MAP; - - t->format_x |= R200_TEXCOORD_CUBIC_ENV; - t->pp_cubic_faces = ((log2Width << R200_FACE_WIDTH_1_SHIFT) | - (log2Height << R200_FACE_HEIGHT_1_SHIFT) | - (log2Width << R200_FACE_WIDTH_2_SHIFT) | - (log2Height << R200_FACE_HEIGHT_2_SHIFT) | - (log2Width << R200_FACE_WIDTH_3_SHIFT) | - (log2Height << R200_FACE_HEIGHT_3_SHIFT) | - (log2Width << R200_FACE_WIDTH_4_SHIFT) | - (log2Height << R200_FACE_HEIGHT_4_SHIFT)); - } -#endif if (tObj->Target == GL_TEXTURE_CUBE_MAP) { ASSERT(log2Width == log2Height); t->format |= R300_TX_FORMAT_CUBIC_MAP; @@ -439,18 +408,9 @@ static GLboolean enable_tex_3d(GLcontext * ctx, int unit) struct gl_texture_object *tObj = texUnit->_Current; r300TexObjPtr t = (r300TexObjPtr) tObj->DriverData; - /* Need to load the 3d images associated with this unit. - */ -#if 0 - if (t->format & R200_TXFORMAT_NON_POWER2) { - t->format &= ~R200_TXFORMAT_NON_POWER2; - t->base.dirty_images[0] = ~0; - } -#endif ASSERT(tObj->Target == GL_TEXTURE_3D); - /* R100 & R200 do not support mipmaps for 3D textures. - */ + /* r300 does not support mipmaps for 3D textures. */ if ((tObj->MinFilter != GL_NEAREST) && (tObj->MinFilter != GL_LINEAR)) { return GL_FALSE; } @@ -475,15 +435,6 @@ static GLboolean enable_tex_cube(GLcontext * ctx, int unit) r300TexObjPtr t = (r300TexObjPtr) tObj->DriverData; GLuint face; - /* Need to load the 2d images associated with this unit. - */ -#if 0 - if (t->format & R200_TXFORMAT_NON_POWER2) { - t->format &= ~R200_TXFORMAT_NON_POWER2; - for (face = 0; face < 6; face++) - t->base.dirty_images[face] = ~0; - } -#endif ASSERT(tObj->Target == GL_TEXTURE_CUBE_MAP); if (t->base.dirty_images[0] || t->base.dirty_images[1] || -- cgit v1.2.3 From 5d61cfd1fd4032ae08513979bfd6d7dc1afa9c35 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 04:27:31 +0000 Subject: r300: Removed a disabled/obsolete e32 in the AOS function. --- src/mesa/drivers/dri/r300/r300_emit.h | 3 --- 1 file changed, 3 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_emit.h b/src/mesa/drivers/dri/r300/r300_emit.h index e616986c08f..e4aecba9483 100644 --- a/src/mesa/drivers/dri/r300/r300_emit.h +++ b/src/mesa/drivers/dri/r300/r300_emit.h @@ -246,9 +246,6 @@ fire_AOS(r300ContextPtr rmesa, int vertex_count, int type) check_space(9); start_packet3(RADEON_CP_PACKET3_3D_DRAW_VBUF_2, 0); -#ifdef NOTNEEDED_ANYMORE - e32(0x840c0024); -#endif e32(R300_VAP_VF_CNTL__PRIM_WALK_VERTEX_LIST | (vertex_count << 16) | type); } -- cgit v1.2.3 From c9b87b8ad880755fb522cf4abd6d2499022312cf Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 04:30:16 +0000 Subject: r300: Removed the unused immediate vertices mode macro. Immediate vertices mode hasn't been supported since early CVS versions of the R300 driver. --- src/mesa/drivers/dri/r300/r300_emit.h | 15 --------------- 1 file changed, 15 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_emit.h b/src/mesa/drivers/dri/r300/r300_emit.h index e4aecba9483..cf428524d6f 100644 --- a/src/mesa/drivers/dri/r300/r300_emit.h +++ b/src/mesa/drivers/dri/r300/r300_emit.h @@ -272,19 +272,4 @@ fire_AOS(r300ContextPtr rmesa, int vertex_count, int type) type); \ } while (0); -/** - * Interestingly enough this ones needs the call to setup_AOS, even thought - * some of the data so setup is not needed and some is not as arbitrary - * as when used by DRAW_VBUF_2 or DRAW_INDX_2 - */ -#define start_immediate_packet(vertex_count, type, vertex_size) \ - do { \ - int _vc; \ - _vc = (vertex_count); \ - start_packet3(RADEON_CP_PACKET3_3D_DRAW_IMMD_2, \ - _vc*(vertex_size)); \ - e32(R300_VAP_VF_CNTL__PRIM_WALK_VERTEX_EMBEDDED | \ - (_vc<<16) | type); \ - } while (0); - #endif -- cgit v1.2.3 From 32c8d002d02194241f4b64234f5dcd6652a1f58d Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 13:55:14 +0000 Subject: r300: Indented r300_context.[ch]. --- src/mesa/drivers/dri/r300/r300_context.c | 118 +++++++++++-------- src/mesa/drivers/dri/r300/r300_context.h | 193 +++++++++++++++---------------- 2 files changed, 165 insertions(+), 146 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_context.c b/src/mesa/drivers/dri/r300/r300_context.c index dd348e223c2..4092ebe0101 100644 --- a/src/mesa/drivers/dri/r300/r300_context.c +++ b/src/mesa/drivers/dri/r300/r300_context.c @@ -70,8 +70,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "xmlpool.h" /* for symbolic values of enum-type options */ /* hw_tcl_on derives from future_hw_tcl_on when its safe to change it. */ -int future_hw_tcl_on=1; -int hw_tcl_on=1; +int future_hw_tcl_on = 1; +int hw_tcl_on = 1; #define need_GL_EXT_stencil_two_side #define need_GL_ARB_multisample @@ -88,6 +88,7 @@ int hw_tcl_on=1; #include "extension_helper.h" const struct dri_extension card_extensions[] = { + /* *INDENT-OFF* */ {"GL_ARB_multisample", GL_ARB_multisample_functions}, {"GL_ARB_multitexture", NULL}, {"GL_ARB_texture_border_clamp", NULL}, @@ -126,6 +127,7 @@ const struct dri_extension card_extensions[] = { {"GL_NV_vertex_program", GL_NV_vertex_program_functions}, {"GL_SGIS_generate_mipmap", NULL}, {NULL, NULL} + /* *INDENT-ON* */ }; extern struct tnl_pipeline_stage _r300_render_stage; @@ -164,7 +166,6 @@ static const struct tnl_pipeline_stage *r300_pipeline[] = { 0, }; - /* Create the device specific rendering context. */ GLboolean r300CreateContext(const __GLcontextModes * glVisual, @@ -183,7 +184,7 @@ GLboolean r300CreateContext(const __GLcontextModes * glVisual, assert(screen); /* Allocate the R300 context */ - r300 = (r300ContextPtr)CALLOC(sizeof(*r300)); + r300 = (r300ContextPtr) CALLOC(sizeof(*r300)); if (!r300) return GL_FALSE; @@ -219,13 +220,15 @@ GLboolean r300CreateContext(const __GLcontextModes * glVisual, } #endif if (!radeonInitContext(&r300->radeon, &functions, - glVisual, driContextPriv, sharedContextPrivate)) { + glVisual, driContextPriv, + sharedContextPrivate)) { FREE(r300); return GL_FALSE; } /* Init r300 context data */ - r300->dma.buf0_address = r300->radeon.radeonScreen->buffers->list[0].address; + r300->dma.buf0_address = + r300->radeon.radeonScreen->buffers->list[0].address; (void)memset(r300->texture_heaps, 0, sizeof(r300->texture_heaps)); make_empty_list(&r300->swapped); @@ -233,6 +236,7 @@ GLboolean r300CreateContext(const __GLcontextModes * glVisual, r300->nr_heaps = 1 /* screen->numTexHeaps */ ; assert(r300->nr_heaps < RADEON_NR_TEX_HEAPS); for (i = 0; i < r300->nr_heaps; i++) { + /* *INDENT-OFF* */ r300->texture_heaps[i] = driCreateTextureHeap(i, r300, screen-> texSize[i], 12, @@ -248,9 +252,10 @@ GLboolean r300CreateContext(const __GLcontextModes * glVisual, (destroy_texture_object_t *) r300DestroyTexObj); + /* *INDENT-ON* */ } r300->texture_depth = driQueryOptioni(&r300->radeon.optionCache, - "texture_depth"); + "texture_depth"); if (r300->texture_depth == DRI_CONF_TEXTURE_DEPTH_FB) r300->texture_depth = (screen->cpp == 4) ? DRI_CONF_TEXTURE_DEPTH_32 : DRI_CONF_TEXTURE_DEPTH_16; @@ -262,12 +267,13 @@ GLboolean r300CreateContext(const __GLcontextModes * glVisual, ctx = r300->radeon.glCtx; - ctx->Const.MaxTextureImageUnits = driQueryOptioni(&r300->radeon.optionCache, - "texture_image_units"); - ctx->Const.MaxTextureCoordUnits = driQueryOptioni(&r300->radeon.optionCache, - "texture_coord_units"); - ctx->Const.MaxTextureUnits = MIN2(ctx->Const.MaxTextureImageUnits, - ctx->Const.MaxTextureCoordUnits); + ctx->Const.MaxTextureImageUnits = + driQueryOptioni(&r300->radeon.optionCache, "texture_image_units"); + ctx->Const.MaxTextureCoordUnits = + driQueryOptioni(&r300->radeon.optionCache, "texture_coord_units"); + ctx->Const.MaxTextureUnits = + MIN2(ctx->Const.MaxTextureImageUnits, + ctx->Const.MaxTextureCoordUnits); ctx->Const.MaxTextureMaxAnisotropy = 16.0; ctx->Const.MinPointSize = 1.0; @@ -283,7 +289,8 @@ GLboolean r300CreateContext(const __GLcontextModes * glVisual, #ifdef USER_BUFFERS /* Needs further modifications */ #if 0 - ctx->Const.MaxArrayLockSize = (/*512*/RADEON_BUFFER_SIZE*16*1024) / (4*4); + ctx->Const.MaxArrayLockSize = + ( /*512 */ RADEON_BUFFER_SIZE * 16 * 1024) / (4 * 4); #endif #endif @@ -313,39 +320,48 @@ GLboolean r300CreateContext(const __GLcontextModes * glVisual, _tnl_allow_vertex_fog(ctx, GL_TRUE); /* currently bogus data */ - ctx->Const.VertexProgram.MaxInstructions=VSF_MAX_FRAGMENT_LENGTH/4; - ctx->Const.VertexProgram.MaxNativeInstructions=VSF_MAX_FRAGMENT_LENGTH/4; - ctx->Const.VertexProgram.MaxNativeAttribs=16; /* r420 */ - ctx->Const.VertexProgram.MaxTemps=32; - ctx->Const.VertexProgram.MaxNativeTemps=/*VSF_MAX_FRAGMENT_TEMPS*/32; - ctx->Const.VertexProgram.MaxNativeParameters=256; /* r420 */ - ctx->Const.VertexProgram.MaxNativeAddressRegs=1; + ctx->Const.VertexProgram.MaxInstructions = VSF_MAX_FRAGMENT_LENGTH / 4; + ctx->Const.VertexProgram.MaxNativeInstructions = + VSF_MAX_FRAGMENT_LENGTH / 4; + ctx->Const.VertexProgram.MaxNativeAttribs = 16; /* r420 */ + ctx->Const.VertexProgram.MaxTemps = 32; + ctx->Const.VertexProgram.MaxNativeTemps = + /*VSF_MAX_FRAGMENT_TEMPS */ 32; + ctx->Const.VertexProgram.MaxNativeParameters = 256; /* r420 */ + ctx->Const.VertexProgram.MaxNativeAddressRegs = 1; ctx->Const.FragmentProgram.MaxNativeTemps = PFS_NUM_TEMP_REGS; - ctx->Const.FragmentProgram.MaxNativeAttribs = 11; /* copy i915... */ + ctx->Const.FragmentProgram.MaxNativeAttribs = 11; /* copy i915... */ ctx->Const.FragmentProgram.MaxNativeParameters = PFS_NUM_CONST_REGS; ctx->Const.FragmentProgram.MaxNativeAluInstructions = PFS_MAX_ALU_INST; ctx->Const.FragmentProgram.MaxNativeTexInstructions = PFS_MAX_TEX_INST; - ctx->Const.FragmentProgram.MaxNativeInstructions = PFS_MAX_ALU_INST+PFS_MAX_TEX_INST; - ctx->Const.FragmentProgram.MaxNativeTexIndirections = PFS_MAX_TEX_INDIRECT; - ctx->Const.FragmentProgram.MaxNativeAddressRegs = 0; /* and these are?? */ + ctx->Const.FragmentProgram.MaxNativeInstructions = + PFS_MAX_ALU_INST + PFS_MAX_TEX_INST; + ctx->Const.FragmentProgram.MaxNativeTexIndirections = + PFS_MAX_TEX_INDIRECT; + ctx->Const.FragmentProgram.MaxNativeAddressRegs = 0; /* and these are?? */ _tnl_ProgramCacheInit(ctx); ctx->FragmentProgram._MaintainTexEnvProgram = GL_TRUE; driInitExtensions(ctx, card_extensions, GL_TRUE); - if (driQueryOptionb(&r300->radeon.optionCache, "disable_stencil_two_side")) - _mesa_disable_extension(ctx, "GL_EXT_stencil_two_side"); - - if (r300->radeon.glCtx->Mesa_DXTn && !driQueryOptionb (&r300->radeon.optionCache, "disable_s3tc")) { - _mesa_enable_extension( ctx, "GL_EXT_texture_compression_s3tc" ); - _mesa_enable_extension( ctx, "GL_S3_s3tc" ); - } - else if (driQueryOptionb (&r300->radeon.optionCache, "force_s3tc_enable")) { - _mesa_enable_extension( ctx, "GL_EXT_texture_compression_s3tc" ); + if (driQueryOptionb + (&r300->radeon.optionCache, "disable_stencil_two_side")) + _mesa_disable_extension(ctx, "GL_EXT_stencil_two_side"); + + if (r300->radeon.glCtx->Mesa_DXTn + && !driQueryOptionb(&r300->radeon.optionCache, "disable_s3tc")) { + _mesa_enable_extension(ctx, "GL_EXT_texture_compression_s3tc"); + _mesa_enable_extension(ctx, "GL_S3_s3tc"); + } else + if (driQueryOptionb(&r300->radeon.optionCache, "force_s3tc_enable")) + { + _mesa_enable_extension(ctx, "GL_EXT_texture_compression_s3tc"); } - r300->disable_lowimpact_fallback = driQueryOptionb(&r300->radeon.optionCache, "disable_lowimpact_fallback"); + r300->disable_lowimpact_fallback = + driQueryOptionb(&r300->radeon.optionCache, + "disable_lowimpact_fallback"); radeonInitSpanFuncs(ctx); r300InitCmdBuf(r300); @@ -367,10 +383,12 @@ GLboolean r300CreateContext(const __GLcontextModes * glVisual, if (tcl_mode == DRI_CONF_TCL_SW || !(r300->radeon.radeonScreen->chip_flags & RADEON_CHIPSET_TCL)) { if (r300->radeon.radeonScreen->chip_flags & RADEON_CHIPSET_TCL) { - r300->radeon.radeonScreen->chip_flags &= ~RADEON_CHIPSET_TCL; + r300->radeon.radeonScreen->chip_flags &= + ~RADEON_CHIPSET_TCL; fprintf(stderr, "Disabling HW TCL support\n"); } - TCL_FALLBACK(r300->radeon.glCtx, RADEON_TCL_FALLBACK_TCL_DISABLE, 1); + TCL_FALLBACK(r300->radeon.glCtx, + RADEON_TCL_FALLBACK_TCL_DISABLE, 1); } return GL_TRUE; @@ -378,7 +396,7 @@ GLboolean r300CreateContext(const __GLcontextModes * glVisual, static void r300FreeGartAllocations(r300ContextPtr r300) { - int i, ret, tries=0, done_age, in_use=0; + int i, ret, tries = 0, done_age, in_use = 0; drm_radeon_mem_free_t memfree; memfree.region = RADEON_MEM_REGION_GART; @@ -398,7 +416,7 @@ static void r300FreeGartAllocations(r300ContextPtr r300) if (in_use) r300FlushCmdBuf(r300, __FUNCTION__); - done_age = radeonGetAge((radeonContextPtr)r300); + done_age = radeonGetAge((radeonContextPtr) r300); for (i = r300->rmm->u_last; i > 0; i--) { if (r300->rmm->u_list[i].ptr == NULL) { @@ -413,19 +431,20 @@ static void r300FreeGartAllocations(r300ContextPtr r300) assert(r300->rmm->u_list[i].h_pending == 0); tries = 0; - while(r300->rmm->u_list[i].age > done_age && tries++ < 1000) { + while (r300->rmm->u_list[i].age > done_age && tries++ < 1000) { usleep(10); - done_age = radeonGetAge((radeonContextPtr)r300); + done_age = radeonGetAge((radeonContextPtr) r300); } if (tries >= 1000) { WARN_ONCE("Failed to idle region!"); } memfree.region_offset = (char *)r300->rmm->u_list[i].ptr - - (char *)r300->radeon.radeonScreen->gartTextures.map; + (char *)r300->radeon.radeonScreen->gartTextures.map; ret = drmCommandWrite(r300->radeon.radeonScreen->driScreen->fd, - DRM_RADEON_FREE, &memfree, sizeof(memfree)); + DRM_RADEON_FREE, &memfree, + sizeof(memfree)); if (ret) { fprintf(stderr, "Failed to free at %p\nret = %s\n", r300->rmm->u_list[i].ptr, strerror(-ret)); @@ -439,14 +458,15 @@ static void r300FreeGartAllocations(r300ContextPtr r300) LOCK_HARDWARE(&(r300->radeon)); ret = mmFreeMem(r300->rmm->u_list[i].fb); UNLOCK_HARDWARE(&(r300->radeon)); - if (ret) fprintf(stderr, "failed to free!\n"); + if (ret) + fprintf(stderr, "failed to free!\n"); r300->rmm->u_list[i].fb = NULL; } r300->rmm->u_list[i].ref_count = 0; } } - r300->rmm->u_head = i; -#endif /* USER_BUFFERS */ + r300->rmm->u_head = i; +#endif /* USER_BUFFERS */ } /* Destroy the device specific context. @@ -474,7 +494,8 @@ void r300DestroyContext(__DRIcontextPrivate * driContextPriv) if (r300) { GLboolean release_texture_heaps; - release_texture_heaps = (r300->radeon.glCtx->Shared->RefCount == 1); + release_texture_heaps = + (r300->radeon.glCtx->Shared->RefCount == 1); _swsetup_DestroyContext(r300->radeon.glCtx); _tnl_ProgramCacheDestroy(r300->radeon.glCtx); _tnl_DestroyContext(r300->radeon.glCtx); @@ -482,7 +503,8 @@ void r300DestroyContext(__DRIcontextPrivate * driContextPriv) _swrast_DestroyContext(r300->radeon.glCtx); if (r300->dma.current.buf) { - r300ReleaseDmaRegion(r300, &r300->dma.current, __FUNCTION__ ); + r300ReleaseDmaRegion(r300, &r300->dma.current, + __FUNCTION__); #ifndef USER_BUFFERS r300FlushCmdBuf(r300, __FUNCTION__); #endif diff --git a/src/mesa/drivers/dri/r300/r300_context.h b/src/mesa/drivers/dri/r300/r300_context.h index 0473bc23be8..4cc3352ab0f 100644 --- a/src/mesa/drivers/dri/r300/r300_context.h +++ b/src/mesa/drivers/dri/r300/r300_context.h @@ -97,13 +97,15 @@ typedef struct r300_context *r300ContextPtr; static __inline__ uint32_t r300PackFloat32(float fl) { - union { float fl; uint32_t u; } u; + union { + float fl; + uint32_t u; + } u; u.fl = fl; return u.u; } - /************ DMA BUFFERS **************/ /* Need refcounting on dma buffers: @@ -128,10 +130,10 @@ struct r300_dma_region { char *address; /* == buf->address */ int start, end, ptr; /* offsets from start of buf */ - int aos_offset; /* address in GART memory */ - int aos_stride; /* distance between elements, in dwords */ - int aos_size; /* number of components (1-4) */ - int aos_reg; /* VAP register assignment */ + int aos_offset; /* address in GART memory */ + int aos_stride; /* distance between elements, in dwords */ + int aos_size; /* number of components (1-4) */ + int aos_reg; /* VAP register assignment */ }; struct r300_dma { @@ -173,16 +175,15 @@ struct r300_tex_obj { drm_radeon_tex_image_t image[6][RADEON_MAX_TEXTURE_LEVELS]; /* Six, for the cube faces */ - - GLuint pitch; /* this isn't sent to hardware just used in calculations */ + GLuint pitch; /* this isn't sent to hardware just used in calculations */ /* hardware register values */ /* Note that R200 has 8 registers per texture and R300 only 7 */ GLuint filter; GLuint filter_1; GLuint pitch_reg; - GLuint size; /* npot only */ + GLuint size; /* npot only */ GLuint format; - GLuint offset; /* Image location in the card's address space. + GLuint offset; /* Image location in the card's address space. All cube faces follow. */ GLuint unknown4; GLuint unknown5; @@ -196,10 +197,9 @@ struct r300_tex_obj { GLuint pp_cubic_faces; /* cube face 1,2,3,4 log2 sizes */ GLuint format_x; - GLboolean border_fallback; - GLuint tile_bits; /* hw texture tile bits used on this texture */ + GLuint tile_bits; /* hw texture tile bits used on this texture */ }; struct r300_texture_env_state { @@ -208,7 +208,6 @@ struct r300_texture_env_state { GLenum envMode; }; - /* The blit width for texture uploads */ #define R300_BLIT_WIDTH_BYTES 1024 @@ -216,7 +215,7 @@ struct r300_texture_env_state { struct r300_texture_state { struct r300_texture_env_state unit[R300_MAX_TEXTURE_UNITS]; - int tc_count; /* number of incoming texture coordinates from VAP */ + int tc_count; /* number of incoming texture coordinates from VAP */ }; /** @@ -228,16 +227,15 @@ struct r300_texture_state { */ struct r300_state_atom { struct r300_state_atom *next, *prev; - const char* name; /* for debug */ + const char *name; /* for debug */ int cmd_size; /* maximum size in dwords */ GLuint idx; /* index in an array (e.g. textures) */ - uint32_t* cmd; + uint32_t *cmd; GLboolean dirty; - int (*check)(r300ContextPtr, struct r300_state_atom* atom); + int (*check) (r300ContextPtr, struct r300_state_atom * atom); }; - #define R300_VPT_CMD_0 0 #define R300_VPT_XSCALE 1 #define R300_VPT_XOFFSET 2 @@ -247,7 +245,7 @@ struct r300_state_atom { #define R300_VPT_ZOFFSET 6 #define R300_VPT_CMDSIZE 7 -#define R300_VIR_CMD_0 0 /* vir is variable size (at least 1) */ +#define R300_VIR_CMD_0 0 /* vir is variable size (at least 1) */ #define R300_VIR_CNTL_0 1 #define R300_VIR_CNTL_1 2 #define R300_VIR_CNTL_2 3 @@ -268,7 +266,6 @@ struct r300_state_atom { #define R300_VOF_CNTL_1 2 #define R300_VOF_CMDSIZE 3 - #define R300_PVS_CMD_0 0 #define R300_PVS_CNTL_1 1 #define R300_PVS_CNTL_2 2 @@ -318,7 +315,7 @@ struct r300_state_atom { #define R300_RI_INTERP_7 8 #define R300_RI_CMDSIZE 9 -#define R300_RR_CMD_0 0 /* rr is variable size (at least 1) */ +#define R300_RR_CMD_0 0 /* rr is variable size (at least 1) */ #define R300_RR_ROUTE_0 1 #define R300_RR_ROUTE_1 2 #define R300_RR_ROUTE_2 3 @@ -400,11 +397,11 @@ struct r300_state_atom { #define R300_VPI_CMD_0 0 #define R300_VPI_INSTR_0 1 -#define R300_VPI_CMDSIZE 1025 /* 256 16 byte instructions */ +#define R300_VPI_CMDSIZE 1025 /* 256 16 byte instructions */ #define R300_VPP_CMD_0 0 #define R300_VPP_PARAM_0 1 -#define R300_VPP_CMDSIZE 1025 /* 256 4-component parameters */ +#define R300_VPP_CMDSIZE 1025 /* 256 4-component parameters */ #define R300_VPS_CMD_0 0 #define R300_VPS_ZERO_0 1 @@ -426,54 +423,54 @@ struct r300_state_atom { struct r300_hw_state { struct r300_state_atom atomlist; - GLboolean is_dirty; - GLboolean all_dirty; - int max_state_size; /* in dwords */ + GLboolean is_dirty; + GLboolean all_dirty; + int max_state_size; /* in dwords */ struct r300_state_atom vpt; /* viewport (1D98) */ struct r300_state_atom vap_cntl; - struct r300_state_atom vof; /* VAP output format register 0x2090 */ + struct r300_state_atom vof; /* VAP output format register 0x2090 */ struct r300_state_atom vte; /* (20B0) */ struct r300_state_atom unk2134; /* (2134) */ struct r300_state_atom vap_cntl_status; struct r300_state_atom vir[2]; /* vap input route (2150/21E0) */ struct r300_state_atom vic; /* vap input control (2180) */ - struct r300_state_atom unk21DC; /* (21DC) */ - struct r300_state_atom unk221C; /* (221C) */ - struct r300_state_atom unk2220; /* (2220) */ - struct r300_state_atom unk2288; /* (2288) */ + struct r300_state_atom unk21DC; /* (21DC) */ + struct r300_state_atom unk221C; /* (221C) */ + struct r300_state_atom unk2220; /* (2220) */ + struct r300_state_atom unk2288; /* (2288) */ struct r300_state_atom pvs; /* pvs_cntl (22D0) */ - struct r300_state_atom gb_enable; /* (4008) */ - struct r300_state_atom gb_misc; /* Multisampling position shifts ? (4010) */ - struct r300_state_atom unk4200; /* (4200) */ - struct r300_state_atom unk4214; /* (4214) */ + struct r300_state_atom gb_enable; /* (4008) */ + struct r300_state_atom gb_misc; /* Multisampling position shifts ? (4010) */ + struct r300_state_atom unk4200; /* (4200) */ + struct r300_state_atom unk4214; /* (4214) */ struct r300_state_atom ps; /* pointsize (421C) */ - struct r300_state_atom unk4230; /* (4230) */ + struct r300_state_atom unk4230; /* (4230) */ struct r300_state_atom lcntl; /* line control */ - struct r300_state_atom unk4260; /* (4260) */ + struct r300_state_atom unk4260; /* (4260) */ struct r300_state_atom shade; struct r300_state_atom polygon_mode; struct r300_state_atom fogp; /* fog parameters (4294) */ - struct r300_state_atom unk429C; /* (429C) */ + struct r300_state_atom unk429C; /* (429C) */ struct r300_state_atom zbias_cntl; struct r300_state_atom zbs; /* zbias (42A4) */ struct r300_state_atom occlusion_cntl; struct r300_state_atom cul; /* cull cntl (42B8) */ - struct r300_state_atom unk42C0; /* (42C0) */ + struct r300_state_atom unk42C0; /* (42C0) */ struct r300_state_atom rc; /* rs control (4300) */ struct r300_state_atom ri; /* rs interpolators (4310) */ struct r300_state_atom rr; /* rs route (4330) */ struct r300_state_atom unk43A4; /* (43A4) */ struct r300_state_atom unk43E8; /* (43E8) */ struct r300_state_atom fp; /* fragment program cntl + nodes (4600) */ - struct r300_state_atom fpt; /* texi - (4620) */ + struct r300_state_atom fpt; /* texi - (4620) */ struct r300_state_atom unk46A4; /* (46A4) */ struct r300_state_atom fpi[4]; /* fp instructions (46C0/47C0/48C0/49C0) */ struct r300_state_atom fogs; /* fog state (4BC0) */ struct r300_state_atom fogc; /* fog color (4BC8) */ struct r300_state_atom at; /* alpha test (4BD4) */ struct r300_state_atom unk4BD8; /* (4BD8) */ - struct r300_state_atom fpp; /* 0x4C00 and following */ + struct r300_state_atom fpp; /* 0x4C00 and following */ struct r300_state_atom unk4E00; /* (4E00) */ struct r300_state_atom bld; /* blending (4E04) */ struct r300_state_atom cmk; /* colormask (4E0C) */ @@ -493,11 +490,11 @@ struct r300_hw_state { struct r300_state_atom vpi; /* vp instructions */ struct r300_state_atom vpp; /* vp parameters */ struct r300_state_atom vps; /* vertex point size (?) */ - /* 8 texture units */ - /* the state is grouped by function and not by - texture unit. This makes single unit updates - really awkward - we are much better off - updating the whole thing at once */ + /* 8 texture units */ + /* the state is grouped by function and not by + texture unit. This makes single unit updates + really awkward - we are much better off + updating the whole thing at once */ struct { struct r300_state_atom filter; struct r300_state_atom filter_1; @@ -507,11 +504,10 @@ struct r300_hw_state { struct r300_state_atom offset; struct r300_state_atom chroma_key; struct r300_state_atom border_color; - } tex; + } tex; struct r300_state_atom txe; /* tex enable (4104) */ }; - /** * This structure holds the command buffer while it is being constructed. * @@ -520,13 +516,12 @@ struct r300_hw_state { * otherwise. */ struct r300_cmdbuf { - int size; /* DWORDs allocated for buffer */ - uint32_t* cmd_buf; - int count_used; /* DWORDs filled so far */ - int count_reemit; /* size of re-emission batch */ + int size; /* DWORDs allocated for buffer */ + uint32_t *cmd_buf; + int count_used; /* DWORDs filled so far */ + int count_reemit; /* size of re-emission batch */ }; - /** * State cache */ @@ -558,9 +553,9 @@ struct r300_vertex_shader_fragment { union { GLuint d[VSF_MAX_FRAGMENT_LENGTH]; float f[VSF_MAX_FRAGMENT_LENGTH]; - VERTEX_SHADER_INSTRUCTION i[VSF_MAX_FRAGMENT_LENGTH/4]; - } body; - }; + VERTEX_SHADER_INSTRUCTION i[VSF_MAX_FRAGMENT_LENGTH / 4]; + } body; +}; #define VSF_DEST_PROGRAM 0x0 #define VSF_DEST_MATRIX0 0x200 @@ -578,15 +573,15 @@ struct r300_vertex_shader_state { struct r300_vertex_shader_fragment unknown2; int program_start; - int unknown_ptr1; /* pointer within program space */ + int unknown_ptr1; /* pointer within program space */ int program_end; int param_offset; int param_count; - int unknown_ptr2; /* pointer within program space */ - int unknown_ptr3; /* pointer within program space */ - }; + int unknown_ptr2; /* pointer within program space */ + int unknown_ptr3; /* pointer within program space */ +}; extern int hw_tcl_on; @@ -596,7 +591,6 @@ extern int hw_tcl_on; /* Should but doesnt work */ //#define CURRENT_VERTEX_SHADER(ctx) (R300_CONTEXT(ctx)->curr_vp) - /* r300_vertex_shader_state and r300_vertex_program should probably be merged together someday. * Keeping them them seperate for now should ensure fixed pipeline keeps functioning properly. */ @@ -614,7 +608,7 @@ struct r300_vertex_program { struct r300_vertex_shader_fragment program; int pos_end; - int num_temporaries; /* Number of temp vars used by program */ + int num_temporaries; /* Number of temp vars used by program */ int wpos_idx; int inputs[VERT_ATTRIB_MAX]; int outputs[VERT_RESULT_MAX]; @@ -624,7 +618,7 @@ struct r300_vertex_program { }; struct r300_vertex_program_cont { - struct gl_vertex_program mesa_program; /* Must be first */ + struct gl_vertex_program mesa_program; /* Must be first */ struct r300_vertex_shader_fragment params; struct r300_vertex_program *progs; }; @@ -637,8 +631,8 @@ struct r300_vertex_program_cont { /* Mapping Mesa registers to R300 temporaries */ struct reg_acc { - int reg; /* Assigned hw temp */ - unsigned int refcount; /* Number of uses by mesa program */ + int reg; /* Assigned hw temp */ + unsigned int refcount; /* Number of uses by mesa program */ }; /** @@ -669,7 +663,6 @@ struct reg_lifetime { int scalar_lastread; }; - /** * Store usage information about an ALU instruction slot during the * compilation of a fragment program. @@ -695,7 +688,7 @@ struct r300_pfs_compile_slot { * Store information during compilation of fragment programs. */ struct r300_pfs_compile_state { - int nrslots; /* number of ALU slots used so far */ + int nrslots; /* number of ALU slots used so far */ /* Track which (parts of) slots are already filled with instructions */ struct r300_pfs_compile_slot slot[PFS_MAX_ALU_INST]; @@ -706,7 +699,7 @@ struct r300_pfs_compile_state { /* Used to map Mesa's inputs/temps onto hardware temps */ int temp_in_use; struct reg_acc temps[PFS_NUM_TEMP_REGS]; - struct reg_acc inputs[32]; /* don't actually need 32... */ + struct reg_acc inputs[32]; /* don't actually need 32... */ /* Track usage of hardware temps, for register allocation, * indirection detection, etc. */ @@ -762,7 +755,7 @@ struct r300_fragment_program { * gl_program_parameter_list::ParameterValues, or a pointer to a * global constant (e.g. for sin/cos-approximation) */ - const GLfloat* constant[PFS_NUM_CONST_REGS]; + const GLfloat *constant[PFS_NUM_CONST_REGS]; int const_nr; int max_temp_idx; @@ -792,12 +785,12 @@ struct radeon_vertex_buffer { int Count; void *Elts; int elt_size; - int elt_min, elt_max; /* debug */ + int elt_min, elt_max; /* debug */ struct dt AttribPtr[VERT_ATTRIB_MAX]; - const struct _mesa_prim *Primitive; - GLuint PrimitiveCount; + const struct _mesa_prim *Primitive; + GLuint PrimitiveCount; GLint LockFirst; GLsizei LockCount; int lock_uptodate; @@ -805,16 +798,16 @@ struct radeon_vertex_buffer { struct r300_aos_rec { GLuint offset; - int element_size; /* in dwords */ - int stride; /* distance between elements, in dwords */ + int element_size; /* in dwords */ + int stride; /* distance between elements, in dwords */ int format; - int ncomponents; /* number of components - between 1 and 4, inclusive */ + int ncomponents; /* number of components - between 1 and 4, inclusive */ - int reg; /* which register they are assigned to. */ + int reg; /* which register they are assigned to. */ - }; +}; struct r300_state { struct r300_depthbuffer_state depth; @@ -829,12 +822,12 @@ struct r300_state { GLuint *Elts; struct r300_dma_region elt_dma; - DECLARE_RENDERINPUTS(render_inputs_bitset); /* actual render inputs that R300 was configured for. - They are the same as tnl->render_inputs for fixed pipeline */ + DECLARE_RENDERINPUTS(render_inputs_bitset); /* actual render inputs that R300 was configured for. + They are the same as tnl->render_inputs for fixed pipeline */ struct { - int transform_offset; /* Transform matrix offset, -1 if none */ - } vap_param; /* vertex processor parameter allocation - tells where to write parameters */ + int transform_offset; /* Transform matrix offset, -1 if none */ + } vap_param; /* vertex processor parameter allocation - tells where to write parameters */ struct r300_stencilbuffer_state stencil; @@ -848,7 +841,7 @@ struct r300_state { * R300 context structure. */ struct r300_context { - struct radeon_context radeon; /* parent class, must be first */ + struct radeon_context radeon; /* parent class, must be first */ struct r300_hw_state hw; struct r300_cmdbuf cmdbuf; @@ -892,18 +885,17 @@ struct r300_buffer_object { #define R300_CONTEXT(ctx) ((r300ContextPtr)(ctx->DriverCtx)) -static __inline GLuint r300PackColor( GLuint cpp, - GLubyte r, GLubyte g, - GLubyte b, GLubyte a ) +static __inline GLuint r300PackColor(GLuint cpp, + GLubyte r, GLubyte g, GLubyte b, GLubyte a) { - switch ( cpp ) { - case 2: - return PACK_COLOR_565( r, g, b ); - case 4: - return PACK_COLOR_8888( r, g, b, a ); - default: - return 0; - } + switch (cpp) { + case 2: + return PACK_COLOR_565(r, g, b); + case 4: + return PACK_COLOR_8888(r, g, b, a); + default: + return 0; + } } extern void r300DestroyContext(__DRIcontextPrivate * driContextPriv); extern GLboolean r300CreateContext(const __GLcontextModes * glVisual, @@ -914,11 +906,16 @@ extern int r300_get_num_verts(r300ContextPtr rmesa, int num_verts, int prim); extern void r300_select_vertex_shader(r300ContextPtr r300); extern void r300InitShaderFuncs(struct dd_function_table *functions); -extern int r300VertexProgUpdateParams(GLcontext *ctx, struct r300_vertex_program_cont *vp, float *dst); -extern int r300Fallback(GLcontext *ctx); +extern int r300VertexProgUpdateParams(GLcontext * ctx, + struct r300_vertex_program_cont *vp, + float *dst); +extern int r300Fallback(GLcontext * ctx); -extern void radeon_vb_to_rvb(r300ContextPtr rmesa, struct radeon_vertex_buffer *rvb, struct vertex_buffer *vb); -extern GLboolean r300_run_vb_render(GLcontext *ctx, struct tnl_pipeline_stage *stage); +extern void radeon_vb_to_rvb(r300ContextPtr rmesa, + struct radeon_vertex_buffer *rvb, + struct vertex_buffer *vb); +extern GLboolean r300_run_vb_render(GLcontext * ctx, + struct tnl_pipeline_stage *stage); #ifdef RADEON_VTXFMT_A extern void radeon_init_vtxfmt_a(r300ContextPtr rmesa); @@ -926,7 +923,7 @@ extern void radeon_init_vtxfmt_a(r300ContextPtr rmesa); #ifdef HW_VBOS extern void r300InitVBOFuncs(struct dd_function_table *functions); -extern void r300EvictVBOs(GLcontext *ctx, int amount); +extern void r300EvictVBOs(GLcontext * ctx, int amount); #endif #define RADEON_D_CAPTURE 0 -- cgit v1.2.3 From dcc8e5f4c1b504c3ddfabda6da2c3d0f2d685c9e Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 13:59:28 +0000 Subject: r300: Indented r300_tex.[ch]. --- src/mesa/drivers/dri/r300/r300_tex.c | 304 ++++++++++++++++++----------------- 1 file changed, 157 insertions(+), 147 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_tex.c b/src/mesa/drivers/dri/r300/r300_tex.c index 3eb575cbddb..e8005163617 100644 --- a/src/mesa/drivers/dri/r300/r300_tex.c +++ b/src/mesa/drivers/dri/r300/r300_tex.c @@ -63,7 +63,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. static void r300SetTexWrap(r300TexObjPtr t, GLenum swrap, GLenum twrap, GLenum rwrap) { - unsigned long hw_swrap=0, hw_twrap=0, hw_qwrap=0; + unsigned long hw_swrap = 0, hw_twrap = 0, hw_qwrap = 0; t->filter &= ~(R300_TX_WRAP_S_MASK | R300_TX_WRAP_T_MASK | R300_TX_WRAP_Q_MASK); @@ -224,12 +224,12 @@ static void r300SetTexFilter(r300TexObjPtr t, GLenum minf, GLenum magf) case GL_NEAREST_MIPMAP_NEAREST: case GL_LINEAR_MIPMAP_NEAREST: t->filter |= - R300_TX_MIN_FILTER_ANISO_NEAREST_MIP_NEAREST; + R300_TX_MIN_FILTER_ANISO_NEAREST_MIP_NEAREST; break; case GL_NEAREST_MIPMAP_LINEAR: case GL_LINEAR_MIPMAP_LINEAR: t->filter |= - R300_TX_MIN_FILTER_ANISO_NEAREST_MIP_LINEAR; + R300_TX_MIN_FILTER_ANISO_NEAREST_MIP_LINEAR; break; } } @@ -287,35 +287,37 @@ static r300TexObjPtr r300AllocTexObj(struct gl_texture_object *texObj) } /* try to find a format which will only need a memcopy */ -static const struct gl_texture_format *r300Choose8888TexFormat( GLenum srcFormat, - GLenum srcType ) +static const struct gl_texture_format *r300Choose8888TexFormat(GLenum srcFormat, + GLenum srcType) { const GLuint ui = 1; - const GLubyte littleEndian = *((const GLubyte *) &ui); + const GLubyte littleEndian = *((const GLubyte *)&ui); if ((srcFormat == GL_RGBA && srcType == GL_UNSIGNED_INT_8_8_8_8) || - (srcFormat == GL_RGBA && srcType == GL_UNSIGNED_BYTE && !littleEndian) || - (srcFormat == GL_ABGR_EXT && srcType == GL_UNSIGNED_INT_8_8_8_8_REV) || - (srcFormat == GL_ABGR_EXT && srcType == GL_UNSIGNED_BYTE && littleEndian)) { + (srcFormat == GL_RGBA && srcType == GL_UNSIGNED_BYTE + && !littleEndian) || (srcFormat == GL_ABGR_EXT + && srcType == GL_UNSIGNED_INT_8_8_8_8_REV) + || (srcFormat == GL_ABGR_EXT && srcType == GL_UNSIGNED_BYTE + && littleEndian)) { return &_mesa_texformat_rgba8888; - } - else if ((srcFormat == GL_RGBA && srcType == GL_UNSIGNED_INT_8_8_8_8_REV) || - (srcFormat == GL_RGBA && srcType == GL_UNSIGNED_BYTE && littleEndian) || - (srcFormat == GL_ABGR_EXT && srcType == GL_UNSIGNED_INT_8_8_8_8) || - (srcFormat == GL_ABGR_EXT && srcType == GL_UNSIGNED_BYTE && !littleEndian)) { + } else + if ((srcFormat == GL_RGBA && srcType == GL_UNSIGNED_INT_8_8_8_8_REV) + || (srcFormat == GL_RGBA && srcType == GL_UNSIGNED_BYTE + && littleEndian) || (srcFormat == GL_ABGR_EXT + && srcType == GL_UNSIGNED_INT_8_8_8_8) + || (srcFormat == GL_ABGR_EXT && srcType == GL_UNSIGNED_BYTE + && !littleEndian)) { return &_mesa_texformat_rgba8888_rev; - } - else if (srcFormat == GL_BGRA && - ((srcType == GL_UNSIGNED_BYTE && !littleEndian) || - srcType == GL_UNSIGNED_INT_8_8_8_8)) { + } else if (srcFormat == GL_BGRA && + ((srcType == GL_UNSIGNED_BYTE && !littleEndian) || + srcType == GL_UNSIGNED_INT_8_8_8_8)) { return &_mesa_texformat_argb8888_rev; - } - else if (srcFormat == GL_BGRA && - ((srcType == GL_UNSIGNED_BYTE && littleEndian) || - srcType == GL_UNSIGNED_INT_8_8_8_8_REV)) { + } else if (srcFormat == GL_BGRA && + ((srcType == GL_UNSIGNED_BYTE && littleEndian) || + srcType == GL_UNSIGNED_INT_8_8_8_8_REV)) { return &_mesa_texformat_argb8888; - } - else return _dri_texformat_argb8888; + } else + return _dri_texformat_argb8888; } static const struct gl_texture_format *r300ChooseTextureFormat(GLcontext * ctx, @@ -334,10 +336,8 @@ static const struct gl_texture_format *r300ChooseTextureFormat(GLcontext * ctx, #if 0 fprintf(stderr, "InternalFormat=%s(%d) type=%s format=%s\n", _mesa_lookup_enum_by_nr(internalFormat), internalFormat, - _mesa_lookup_enum_by_nr(type), - _mesa_lookup_enum_by_nr(format)); - fprintf(stderr, "do32bpt=%d force16bpt=%d\n", - do32bpt, force16bpt); + _mesa_lookup_enum_by_nr(type), _mesa_lookup_enum_by_nr(format)); + fprintf(stderr, "do32bpt=%d force16bpt=%d\n", do32bpt, force16bpt); #endif switch (internalFormat) { @@ -383,7 +383,8 @@ static const struct gl_texture_format *r300ChooseTextureFormat(GLcontext * ctx, case GL_RGBA12: case GL_RGBA16: return !force16bpt ? - r300Choose8888TexFormat(format, type) : _dri_texformat_argb4444; + r300Choose8888TexFormat(format, + type) : _dri_texformat_argb4444; case GL_RGBA4: case GL_RGBA2: @@ -450,43 +451,43 @@ static const struct gl_texture_format *r300ChooseTextureFormat(GLcontext * ctx, case GL_RGB_S3TC: case GL_RGB4_S3TC: case GL_COMPRESSED_RGB_S3TC_DXT1_EXT: - return &_mesa_texformat_rgb_dxt1; - + return &_mesa_texformat_rgb_dxt1; + case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: - return &_mesa_texformat_rgba_dxt1; - + return &_mesa_texformat_rgba_dxt1; + case GL_RGBA_S3TC: case GL_RGBA4_S3TC: case GL_COMPRESSED_RGBA_S3TC_DXT3_EXT: - return &_mesa_texformat_rgba_dxt3; - + return &_mesa_texformat_rgba_dxt3; + case GL_COMPRESSED_RGBA_S3TC_DXT5_EXT: - return &_mesa_texformat_rgba_dxt5; - - case GL_ALPHA16F_ARB: - return &_mesa_texformat_alpha_float16; + return &_mesa_texformat_rgba_dxt5; + + case GL_ALPHA16F_ARB: + return &_mesa_texformat_alpha_float16; case GL_ALPHA32F_ARB: - return &_mesa_texformat_alpha_float32; + return &_mesa_texformat_alpha_float32; case GL_LUMINANCE16F_ARB: - return &_mesa_texformat_luminance_float16; + return &_mesa_texformat_luminance_float16; case GL_LUMINANCE32F_ARB: - return &_mesa_texformat_luminance_float32; + return &_mesa_texformat_luminance_float32; case GL_LUMINANCE_ALPHA16F_ARB: - return &_mesa_texformat_luminance_alpha_float16; + return &_mesa_texformat_luminance_alpha_float16; case GL_LUMINANCE_ALPHA32F_ARB: - return &_mesa_texformat_luminance_alpha_float32; + return &_mesa_texformat_luminance_alpha_float32; case GL_INTENSITY16F_ARB: - return &_mesa_texformat_intensity_float16; + return &_mesa_texformat_intensity_float16; case GL_INTENSITY32F_ARB: - return &_mesa_texformat_intensity_float32; + return &_mesa_texformat_intensity_float32; case GL_RGB16F_ARB: - return &_mesa_texformat_rgba_float16; + return &_mesa_texformat_rgba_float16; case GL_RGB32F_ARB: - return &_mesa_texformat_rgba_float32; + return &_mesa_texformat_rgba_float32; case GL_RGBA16F_ARB: - return &_mesa_texformat_rgba_float16; + return &_mesa_texformat_rgba_float16; case GL_RGBA32F_ARB: - return &_mesa_texformat_rgba_float32; + return &_mesa_texformat_rgba_float32; default: _mesa_problem(ctx, @@ -761,43 +762,44 @@ static void r300TexSubImage2D(GLcontext * ctx, GLenum target, GLint level, t->dirty_images[face] |= (1 << level); } -static void r300CompressedTexImage2D( GLcontext *ctx, GLenum target, GLint level, - GLint internalFormat, - GLint width, GLint height, GLint border, - GLsizei imageSize, const GLvoid *data, - struct gl_texture_object *texObj, - struct gl_texture_image *texImage ) +static void r300CompressedTexImage2D(GLcontext * ctx, GLenum target, + GLint level, GLint internalFormat, + GLint width, GLint height, GLint border, + GLsizei imageSize, const GLvoid * data, + struct gl_texture_object *texObj, + struct gl_texture_image *texImage) { - driTextureObject * t = (driTextureObject *) texObj->DriverData; - GLuint face; - - /* which cube face or ordinary 2D image */ - switch (target) { - case GL_TEXTURE_CUBE_MAP_POSITIVE_X: - case GL_TEXTURE_CUBE_MAP_NEGATIVE_X: - case GL_TEXTURE_CUBE_MAP_POSITIVE_Y: - case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y: - case GL_TEXTURE_CUBE_MAP_POSITIVE_Z: - case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: - face = (GLuint) target - (GLuint) GL_TEXTURE_CUBE_MAP_POSITIVE_X; - ASSERT(face < 6); - break; - default: - face = 0; - } + driTextureObject *t = (driTextureObject *) texObj->DriverData; + GLuint face; - if ( t != NULL ) { - driSwapOutTextureObject( t ); - } - else { - t = (driTextureObject *) r300AllocTexObj( texObj ); - if (!t) { - _mesa_error(ctx, GL_OUT_OF_MEMORY, "glCompressedTexImage2D"); - return; - } - } + /* which cube face or ordinary 2D image */ + switch (target) { + case GL_TEXTURE_CUBE_MAP_POSITIVE_X: + case GL_TEXTURE_CUBE_MAP_NEGATIVE_X: + case GL_TEXTURE_CUBE_MAP_POSITIVE_Y: + case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y: + case GL_TEXTURE_CUBE_MAP_POSITIVE_Z: + case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: + face = + (GLuint) target - (GLuint) GL_TEXTURE_CUBE_MAP_POSITIVE_X; + ASSERT(face < 6); + break; + default: + face = 0; + } + + if (t != NULL) { + driSwapOutTextureObject(t); + } else { + t = (driTextureObject *) r300AllocTexObj(texObj); + if (!t) { + _mesa_error(ctx, GL_OUT_OF_MEMORY, + "glCompressedTexImage2D"); + return; + } + } - texImage->IsClientData = GL_FALSE; + texImage->IsClientData = GL_FALSE; /* can't call this, different parameters. Would never evaluate to true anyway currently if (r300ValidateClientStorage( ctx, target, internalFormat, @@ -807,67 +809,70 @@ static void r300CompressedTexImage2D( GLcontext *ctx, GLenum target, GLint level if (RADEON_DEBUG & DEBUG_TEXTURE) fprintf(stderr, "%s: Using client storage\n", __FUNCTION__); } - else */{ - if (RADEON_DEBUG & DEBUG_TEXTURE) - fprintf(stderr, "%s: Using normal storage\n", __FUNCTION__); - - /* Normal path: copy (to cached memory) and eventually upload - * via another copy to GART memory and then a blit... Could - * eliminate one copy by going straight to (permanent) GART. - * - * Note, this will call r300ChooseTextureFormat. - */ - _mesa_store_compressed_teximage2d(ctx, target, level, internalFormat, width, - height, border, imageSize, data, texObj, texImage); - - t->dirty_images[face] |= (1 << level); - } -} + else */ { + if (RADEON_DEBUG & DEBUG_TEXTURE) + fprintf(stderr, "%s: Using normal storage\n", + __FUNCTION__); + /* Normal path: copy (to cached memory) and eventually upload + * via another copy to GART memory and then a blit... Could + * eliminate one copy by going straight to (permanent) GART. + * + * Note, this will call r300ChooseTextureFormat. + */ + _mesa_store_compressed_teximage2d(ctx, target, level, + internalFormat, width, height, + border, imageSize, data, + texObj, texImage); + + t->dirty_images[face] |= (1 << level); + } +} -static void r300CompressedTexSubImage2D( GLcontext *ctx, GLenum target, GLint level, - GLint xoffset, GLint yoffset, - GLsizei width, GLsizei height, - GLenum format, - GLsizei imageSize, const GLvoid *data, - struct gl_texture_object *texObj, - struct gl_texture_image *texImage ) +static void r300CompressedTexSubImage2D(GLcontext * ctx, GLenum target, + GLint level, GLint xoffset, + GLint yoffset, GLsizei width, + GLsizei height, GLenum format, + GLsizei imageSize, const GLvoid * data, + struct gl_texture_object *texObj, + struct gl_texture_image *texImage) { - driTextureObject * t = (driTextureObject *) texObj->DriverData; - GLuint face; - - - /* which cube face or ordinary 2D image */ - switch (target) { - case GL_TEXTURE_CUBE_MAP_POSITIVE_X: - case GL_TEXTURE_CUBE_MAP_NEGATIVE_X: - case GL_TEXTURE_CUBE_MAP_POSITIVE_Y: - case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y: - case GL_TEXTURE_CUBE_MAP_POSITIVE_Z: - case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: - face = (GLuint) target - (GLuint) GL_TEXTURE_CUBE_MAP_POSITIVE_X; - ASSERT(face < 6); - break; - default: - face = 0; - } + driTextureObject *t = (driTextureObject *) texObj->DriverData; + GLuint face; - assert( t ); /* this _should_ be true */ - if ( t ) { - driSwapOutTextureObject( t ); - } - else { - t = (driTextureObject *) r300AllocTexObj( texObj ); - if (!t) { - _mesa_error(ctx, GL_OUT_OF_MEMORY, "glCompressedTexSubImage3D"); - return; - } - } + /* which cube face or ordinary 2D image */ + switch (target) { + case GL_TEXTURE_CUBE_MAP_POSITIVE_X: + case GL_TEXTURE_CUBE_MAP_NEGATIVE_X: + case GL_TEXTURE_CUBE_MAP_POSITIVE_Y: + case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y: + case GL_TEXTURE_CUBE_MAP_POSITIVE_Z: + case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: + face = + (GLuint) target - (GLuint) GL_TEXTURE_CUBE_MAP_POSITIVE_X; + ASSERT(face < 6); + break; + default: + face = 0; + } + + assert(t); /* this _should_ be true */ + if (t) { + driSwapOutTextureObject(t); + } else { + t = (driTextureObject *) r300AllocTexObj(texObj); + if (!t) { + _mesa_error(ctx, GL_OUT_OF_MEMORY, + "glCompressedTexSubImage3D"); + return; + } + } - _mesa_store_compressed_texsubimage2d(ctx, target, level, xoffset, yoffset, width, - height, format, imageSize, data, texObj, texImage); + _mesa_store_compressed_texsubimage2d(ctx, target, level, xoffset, + yoffset, width, height, format, + imageSize, data, texObj, texImage); - t->dirty_images[face] |= (1 << level); + t->dirty_images[face] |= (1 << level); } #if ENABLE_HW_3D_TEXTURE @@ -976,7 +981,7 @@ static void r300TexEnv(GLcontext * ctx, GLenum target, */ switch (pname) { case GL_TEXTURE_LOD_BIAS_EXT:{ -#if 0 /* Needs to be relocated in order to make sure we got the right tmu */ +#if 0 /* Needs to be relocated in order to make sure we got the right tmu */ GLfloat bias, min; GLuint b; @@ -996,10 +1001,16 @@ static void r300TexEnv(GLcontext * ctx, GLenum target, b = 0x1000 / 16.0 * bias; b &= R300_LOD_BIAS_MASK; - if(b != (rmesa->hw.tex.unknown1.cmd[R300_TEX_VALUE_0+unit] & R300_LOD_BIAS_MASK)){ + if (b != + (rmesa->hw.tex.unknown1. + cmd[R300_TEX_VALUE_0 + + unit] & R300_LOD_BIAS_MASK)) { R300_STATECHANGE(rmesa, tex.unknown1); - rmesa->hw.tex.unknown1.cmd[R300_TEX_VALUE_0+unit] &= ~R300_LOD_BIAS_MASK; - rmesa->hw.tex.unknown1.cmd[R300_TEX_VALUE_0+unit] |= b; + rmesa->hw.tex.unknown1.cmd[R300_TEX_VALUE_0 + + unit] &= + ~R300_LOD_BIAS_MASK; + rmesa->hw.tex.unknown1.cmd[R300_TEX_VALUE_0 + + unit] |= b; } #endif break; @@ -1130,7 +1141,6 @@ static struct gl_texture_object *r300NewTextureObject(GLcontext * ctx, return obj; } - void r300InitTextureFuncs(struct dd_function_table *functions) { /* Note: we only plug in the functions we implement in the driver @@ -1158,9 +1168,9 @@ void r300InitTextureFuncs(struct dd_function_table *functions) functions->TexEnv = r300TexEnv; functions->TexParameter = r300TexParameter; - - functions->CompressedTexImage2D = r300CompressedTexImage2D; - functions->CompressedTexSubImage2D = r300CompressedTexSubImage2D; + + functions->CompressedTexImage2D = r300CompressedTexImage2D; + functions->CompressedTexSubImage2D = r300CompressedTexSubImage2D; driInitTextureFormats(); } -- cgit v1.2.3 From 516259d609d1f9c598fefb38d82103211c9463db Mon Sep 17 00:00:00 2001 From: Brian Date: Wed, 9 May 2007 08:07:10 -0600 Subject: Clean-up in I830AllocVidMem(), s/int/unsigned long/ for ret variable. --- src/mesa/drivers/dri/i915/server/intel_dri.c | 27 +++++++++++++------------ src/mesa/drivers/dri/i915tex/server/intel_dri.c | 27 +++++++++++++------------ 2 files changed, 28 insertions(+), 26 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/i915/server/intel_dri.c b/src/mesa/drivers/dri/i915/server/intel_dri.c index 169fdbece30..b6946b75d20 100644 --- a/src/mesa/drivers/dri/i915/server/intel_dri.c +++ b/src/mesa/drivers/dri/i915/server/intel_dri.c @@ -455,12 +455,14 @@ static unsigned long AllocFromAGP(const DRIDriverContext *ctx, I830Rec *pI830, l } unsigned long -I830AllocVidMem(const DRIDriverContext *ctx, I830Rec *pI830, I830MemRange *result, I830MemPool *pool, long size, unsigned long alignment, int flags) +I830AllocVidMem(const DRIDriverContext *ctx, I830Rec *pI830, + I830MemRange *result, I830MemPool *pool, long size, + unsigned long alignment, int flags) { - int ret; + unsigned long ret; - if (!result) - return 0; + if (!result) + return 0; /* Make sure these are initialised. */ result->Size = 0; @@ -470,16 +472,15 @@ I830AllocVidMem(const DRIDriverContext *ctx, I830Rec *pI830, I830MemRange *resul return 0; } - if (pool->Free.Size < size) - return AllocFromAGP(ctx, pI830, size, alignment, result); - else - { - ret = AllocFromPool(ctx, pI830, result, pool, size, alignment, flags); - - if (ret==0) - return AllocFromAGP(ctx, pI830, size, alignment, result); - return ret; + if (pool->Free.Size < size) { + ret = AllocFromAGP(ctx, pI830, size, alignment, result); + } + else { + ret = AllocFromPool(ctx, pI830, result, pool, size, alignment, flags); + if (ret == 0) + ret = AllocFromAGP(ctx, pI830, size, alignment, result); } + return ret; } static Bool BindAgpRange(const DRIDriverContext *ctx, I830MemRange *mem) diff --git a/src/mesa/drivers/dri/i915tex/server/intel_dri.c b/src/mesa/drivers/dri/i915tex/server/intel_dri.c index 2d425d04ac3..e49c4214ad4 100644 --- a/src/mesa/drivers/dri/i915tex/server/intel_dri.c +++ b/src/mesa/drivers/dri/i915tex/server/intel_dri.c @@ -483,12 +483,14 @@ static unsigned long AllocFromAGP(const DRIDriverContext *ctx, I830Rec *pI830, l } unsigned long -I830AllocVidMem(const DRIDriverContext *ctx, I830Rec *pI830, I830MemRange *result, I830MemPool *pool, long size, unsigned long alignment, int flags) +I830AllocVidMem(const DRIDriverContext *ctx, I830Rec *pI830, + I830MemRange *result, I830MemPool *pool, long size, + unsigned long alignment, int flags) { - int ret; + unsigned long ret; - if (!result) - return 0; + if (!result) + return 0; /* Make sure these are initialised. */ result->Size = 0; @@ -498,16 +500,15 @@ I830AllocVidMem(const DRIDriverContext *ctx, I830Rec *pI830, I830MemRange *resul return 0; } - if (pool->Free.Size < size) - return AllocFromAGP(ctx, pI830, size, alignment, result); - else - { - ret = AllocFromPool(ctx, pI830, result, pool, size, alignment, flags); - - if (ret==0) - return AllocFromAGP(ctx, pI830, size, alignment, result); - return ret; + if (pool->Free.Size < size) { + ret = AllocFromAGP(ctx, pI830, size, alignment, result); + } + else { + ret = AllocFromPool(ctx, pI830, result, pool, size, alignment, flags); + if (ret == 0) + ret = AllocFromAGP(ctx, pI830, size, alignment, result); } + return ret; } static Bool BindAgpRange(const DRIDriverContext *ctx, I830MemRange *mem) -- cgit v1.2.3 From bb97694fad934e53d24012dde42ee6434e4c8397 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 14:09:35 +0000 Subject: r300: Indented r300_texstate.[ch] --- src/mesa/drivers/dri/r300/r300_texstate.c | 104 ++++++++++++++++++------------ 1 file changed, 61 insertions(+), 43 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_texstate.c b/src/mesa/drivers/dri/r300/r300_texstate.c index 9e72b6fa6e0..d20a61e07ee 100644 --- a/src/mesa/drivers/dri/r300/r300_texstate.c +++ b/src/mesa/drivers/dri/r300/r300_texstate.c @@ -46,7 +46,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "r300_tex.h" #include "r300_reg.h" - #define VALID_FORMAT(f) ( ((f) <= MESA_FORMAT_RGBA_DXT5 \ || ((f) >= MESA_FORMAT_RGBA_FLOAT32 && \ (f) <= MESA_FORMAT_INTENSITY_FLOAT16)) \ @@ -152,7 +151,6 @@ static const struct { #undef _ASSIGN - /** * This function computes the number of bytes of storage needed for * the given texture object (all mipmap levels, all cube faces). @@ -180,14 +178,18 @@ static void r300SetTexImages(r300ContextPtr rmesa, if (VALID_FORMAT(baseImage->TexFormat->MesaFormat)) { if (_mesa_little_endian()) { t->format = - tx_table_le[baseImage->TexFormat->MesaFormat].format; + tx_table_le[baseImage->TexFormat->MesaFormat]. + format; t->filter |= - tx_table_le[baseImage->TexFormat->MesaFormat].filter; + tx_table_le[baseImage->TexFormat->MesaFormat]. + filter; } else { t->format = - tx_table_be[baseImage->TexFormat->MesaFormat].format; + tx_table_be[baseImage->TexFormat->MesaFormat]. + format; t->filter |= - tx_table_be[baseImage->TexFormat->MesaFormat].filter; + tx_table_be[baseImage->TexFormat->MesaFormat]. + filter; } } else { _mesa_problem(NULL, "unexpected texture format in %s", @@ -217,18 +219,22 @@ static void r300SetTexImages(r300ContextPtr rmesa, t->tile_bits = 0; /* figure out if this texture is suitable for tiling. */ -#if 0 /* Disabled for now */ +#if 0 /* Disabled for now */ if (texelBytes) { - if (rmesa->texmicrotile && (tObj->Target != GL_TEXTURE_RECTANGLE_NV) && - /* texrect might be able to use micro tiling too in theory? */ - (baseImage->Height > 1)) { + if (rmesa->texmicrotile + && (tObj->Target != GL_TEXTURE_RECTANGLE_NV) && + /* texrect might be able to use micro tiling too in theory? */ + (baseImage->Height > 1)) { /* allow 32 (bytes) x 1 mip (which will use two times the space the non-tiled version would use) max if base texture is large enough */ if ((numLevels == 1) || - (((baseImage->Width * texelBytes / baseImage->Height) <= 32) && - (baseImage->Width * texelBytes > 64)) || - ((baseImage->Width * texelBytes / baseImage->Height) <= 16)) { + (((baseImage->Width * texelBytes / + baseImage->Height) <= 32) + && (baseImage->Width * texelBytes > 64)) + || + ((baseImage->Width * texelBytes / + baseImage->Height) <= 16)) { t->tile_bits |= R300_TXO_MICRO_TILE; } } @@ -250,9 +256,10 @@ static void r300SetTexImages(r300ContextPtr rmesa, /* find image size in bytes */ if (texImage->IsCompressed) { - if ((t->format & R300_TX_FORMAT_DXT1) == R300_TX_FORMAT_DXT1) { + if ((t->format & R300_TX_FORMAT_DXT1) == + R300_TX_FORMAT_DXT1) { // fprintf(stderr,"DXT 1 %d %08X\n", texImage->Width, t->format); - if ((texImage->Width + 3) < 8) /* width one block */ + if ((texImage->Width + 3) < 8) /* width one block */ size = texImage->CompressedSize * 4; else if ((texImage->Width + 3) < 16) size = texImage->CompressedSize * 2; @@ -260,7 +267,8 @@ static void r300SetTexImages(r300ContextPtr rmesa, size = texImage->CompressedSize; } else { /* DXT3/5, 16 bytes per block */ - WARN_ONCE("DXT 3/5 suffers from multitexturing problems!\n"); + WARN_ONCE + ("DXT 3/5 suffers from multitexturing problems!\n"); // fprintf(stderr,"DXT 3/5 %d\n", texImage->Width); if ((texImage->Width + 3) < 8) size = texImage->CompressedSize * 2; @@ -268,14 +276,18 @@ static void r300SetTexImages(r300ContextPtr rmesa, size = texImage->CompressedSize; } } else if (tObj->Target == GL_TEXTURE_RECTANGLE_NV) { - size = ((texImage->Width * texelBytes + 63) & ~63) * texImage->Height; + size = + ((texImage->Width * texelBytes + + 63) & ~63) * texImage->Height; blitWidth = 64 / texelBytes; } else if (t->tile_bits & R300_TXO_MICRO_TILE) { /* tile pattern is 16 bytes x2. mipmaps stay 32 byte aligned, - though the actual offset may be different (if texture is less than - 32 bytes width) to the untiled case */ + though the actual offset may be different (if texture is less than + 32 bytes width) to the untiled case */ int w = (texImage->Width * texelBytes * 2 + 31) & ~31; - size = (w * ((texImage->Height + 1) / 2)) * texImage->Depth; + size = + (w * ((texImage->Height + 1) / 2)) * + texImage->Depth; blitWidth = MAX2(texImage->Width, 64 / texelBytes); } else { int w = (texImage->Width * texelBytes + 31) & ~31; @@ -284,11 +296,12 @@ static void r300SetTexImages(r300ContextPtr rmesa, } assert(size > 0); - if(0) + if (0) fprintf(stderr, "w=%d h=%d d=%d tb=%d intFormat=%d\n", - texImage->Width, texImage->Height, - texImage->Depth, texImage->TexFormat->TexelBytes, - texImage->InternalFormat); + texImage->Width, texImage->Height, + texImage->Depth, + texImage->TexFormat->TexelBytes, + texImage->InternalFormat); /* Align to 32-byte offset. It is faster to do this unconditionally * (no branch penalty). @@ -300,22 +313,25 @@ static void r300SetTexImages(r300ContextPtr rmesa, /* fix x and y coords up later together with offset */ t->image[0][i].x = curOffset; t->image[0][i].y = 0; - t->image[0][i].width = MIN2(size / texelBytes, blitWidth); - t->image[0][i].height = (size / texelBytes) / t->image[0][i].width; + t->image[0][i].width = + MIN2(size / texelBytes, blitWidth); + t->image[0][i].height = + (size / texelBytes) / t->image[0][i].width; } else { t->image[0][i].x = curOffset % R300_BLIT_WIDTH_BYTES; t->image[0][i].y = curOffset / R300_BLIT_WIDTH_BYTES; - t->image[0][i].width = MIN2(size, R300_BLIT_WIDTH_BYTES); + t->image[0][i].width = + MIN2(size, R300_BLIT_WIDTH_BYTES); t->image[0][i].height = size / t->image[0][i].width; } if (0) fprintf(stderr, - "level %d: %dx%d x=%d y=%d w=%d h=%d size=%d at %d\n", - i, texImage->Width, texImage->Height, - t->image[0][i].x, t->image[0][i].y, - t->image[0][i].width, t->image[0][i].height, - size, curOffset); + "level %d: %dx%d x=%d y=%d w=%d h=%d size=%d at %d\n", + i, texImage->Width, texImage->Height, + t->image[0][i].x, t->image[0][i].y, + t->image[0][i].width, t->image[0][i].height, + size, curOffset); curOffset += size; } @@ -345,9 +361,12 @@ static void r300SetTexImages(r300ContextPtr rmesa, t->format |= R300_TX_FORMAT_CUBIC_MAP; } - t->size = (((tObj->Image[0][t->base.firstLevel]->Width - 1) << R300_TX_WIDTHMASK_SHIFT) - |((tObj->Image[0][t->base.firstLevel]->Height - 1) << R300_TX_HEIGHTMASK_SHIFT)) - |((numLevels - 1) << R300_TX_MAX_MIP_LEVEL_SHIFT); + t->size = + (((tObj->Image[0][t->base.firstLevel]->Width - + 1) << R300_TX_WIDTHMASK_SHIFT) + | ((tObj->Image[0][t->base.firstLevel]->Height - 1) << + R300_TX_HEIGHTMASK_SHIFT)) + | ((numLevels - 1) << R300_TX_MAX_MIP_LEVEL_SHIFT); /* Only need to round to nearest 32 for textures, but the blitter * requires 64-byte aligned pitches, and we may/may not need the @@ -356,15 +375,15 @@ static void r300SetTexImages(r300ContextPtr rmesa, if (baseImage->IsCompressed) { t->pitch = (tObj->Image[0][t->base.firstLevel]->Width + 63) & ~(63); - } - else if (tObj->Target == GL_TEXTURE_RECTANGLE_NV) { + } else if (tObj->Target == GL_TEXTURE_RECTANGLE_NV) { unsigned int align = blitWidth - 1; t->pitch = ((tObj->Image[0][t->base.firstLevel]->Width * - texelBytes) + 63) & ~(63); + texelBytes) + 63) & ~(63); t->size |= R300_TX_SIZE_TXPITCH_EN; - t->pitch_reg = (((tObj->Image[0][t->base.firstLevel]->Width) + align) & ~align) - 1; - } - else { + t->pitch_reg = + (((tObj->Image[0][t->base.firstLevel]->Width) + + align) & ~align) - 1; + } else { t->pitch = ((tObj->Image[0][t->base.firstLevel]->Width * texelBytes) + 63) & ~(63); @@ -375,7 +394,6 @@ static void r300SetTexImages(r300ContextPtr rmesa, /* FYI: r300UploadTexImages( rmesa, t ) used to be called here */ } - /* ================================================================ * Texture unit state management */ @@ -540,7 +558,7 @@ static GLboolean r300UpdateTextureUnit(GLcontext * ctx, int unit) return GL_FALSE; } else { return GL_TRUE; - } + } } void r300UpdateTextureState(GLcontext * ctx) -- cgit v1.2.3 From c970811dab9e289b9f021cb67f39990f175c7ec5 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 14:11:17 +0000 Subject: r300: Indented r300_texmem.[ch]. --- src/mesa/drivers/dri/r300/r300_texmem.c | 157 +++++++++++++++++--------------- 1 file changed, 83 insertions(+), 74 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_texmem.c b/src/mesa/drivers/dri/r300/r300_texmem.c index 5d52f777e3b..221dda41b0e 100644 --- a/src/mesa/drivers/dri/r300/r300_texmem.c +++ b/src/mesa/drivers/dri/r300/r300_texmem.c @@ -210,10 +210,8 @@ static void r300UploadRectSubImage(r300ContextPtr rmesa, /* In this case, could also use GART texturing. This is * currently disabled, but has been tested & works. */ - t->offset = - r300GartOffsetFromVirtual(rmesa, texImage->Data); - t->pitch = - texImage->RowStride * texFormat->TexelBytes - 32; + t->offset = r300GartOffsetFromVirtual(rmesa, texImage->Data); + t->pitch = texImage->RowStride * texFormat->TexelBytes - 32; if (RADEON_DEBUG & DEBUG_TEXTURE) fprintf(stderr, @@ -283,10 +281,7 @@ static void r300UploadRectSubImage(r300ContextPtr rmesa, blit_format, dstPitch, GET_START(®ion), dstPitch | (t->tile_bits >> 16), - t->bufAddr, - 0, 0, - 0, done, - width, lines); + t->bufAddr, 0, 0, 0, done, width, lines); r300EmitWait(rmesa, R300_WAIT_2D); #ifdef USER_BUFFERS @@ -303,10 +298,10 @@ static void r300UploadRectSubImage(r300ContextPtr rmesa, * Upload the texture image associated with texture \a t at the specified * level at the address relative to \a start. */ -static void uploadSubImage( r300ContextPtr rmesa, r300TexObjPtr t, - GLint hwlevel, - GLint x, GLint y, GLint width, GLint height, - GLuint face ) +static void uploadSubImage(r300ContextPtr rmesa, r300TexObjPtr t, + GLint hwlevel, + GLint x, GLint y, GLint width, GLint height, + GLuint face) { struct gl_texture_image *texImage = NULL; GLuint offset; @@ -316,71 +311,74 @@ static void uploadSubImage( r300ContextPtr rmesa, r300TexObjPtr t, drm_radeon_tex_image_t tmp; const int level = hwlevel + t->base.firstLevel; - if ( RADEON_DEBUG & DEBUG_TEXTURE ) { - fprintf( stderr, "%s( %p, %p ) level/width/height/face = %d/%d/%d/%u\n", - __FUNCTION__, (void *)t, (void *)t->base.tObj, - level, width, height, face ); + if (RADEON_DEBUG & DEBUG_TEXTURE) { + fprintf(stderr, + "%s( %p, %p ) level/width/height/face = %d/%d/%d/%u\n", + __FUNCTION__, (void *)t, (void *)t->base.tObj, level, + width, height, face); } ASSERT(face < 6); /* Ensure we have a valid texture to upload */ - if ( ( hwlevel < 0 ) || ( hwlevel >= RADEON_MAX_TEXTURE_LEVELS ) ) { + if ((hwlevel < 0) || (hwlevel >= RADEON_MAX_TEXTURE_LEVELS)) { _mesa_problem(NULL, "bad texture level in %s", __FUNCTION__); return; } texImage = t->base.tObj->Image[face][level]; - if ( !texImage ) { - if ( RADEON_DEBUG & DEBUG_TEXTURE ) - fprintf( stderr, "%s: texImage %d is NULL!\n", __FUNCTION__, level ); + if (!texImage) { + if (RADEON_DEBUG & DEBUG_TEXTURE) + fprintf(stderr, "%s: texImage %d is NULL!\n", + __FUNCTION__, level); return; } - if ( !texImage->Data ) { - if ( RADEON_DEBUG & DEBUG_TEXTURE ) - fprintf( stderr, "%s: image data is NULL!\n", __FUNCTION__ ); + if (!texImage->Data) { + if (RADEON_DEBUG & DEBUG_TEXTURE) + fprintf(stderr, "%s: image data is NULL!\n", + __FUNCTION__); return; } - if (t->base.tObj->Target == GL_TEXTURE_RECTANGLE_NV) { assert(level == 0); assert(hwlevel == 0); - if ( RADEON_DEBUG & DEBUG_TEXTURE ) - fprintf( stderr, "%s: image data is rectangular\n", __FUNCTION__); - r300UploadRectSubImage( rmesa, t, texImage, x, y, width, height ); + if (RADEON_DEBUG & DEBUG_TEXTURE) + fprintf(stderr, "%s: image data is rectangular\n", + __FUNCTION__); + r300UploadRectSubImage(rmesa, t, texImage, x, y, width, height); return; } else if (texImage->IsClientData) { - if ( RADEON_DEBUG & DEBUG_TEXTURE ) - fprintf( stderr, "%s: image data is in GART client storage\n", - __FUNCTION__); - r300UploadGARTClientSubImage( rmesa, t, texImage, hwlevel, - x, y, width, height ); + if (RADEON_DEBUG & DEBUG_TEXTURE) + fprintf(stderr, + "%s: image data is in GART client storage\n", + __FUNCTION__); + r300UploadGARTClientSubImage(rmesa, t, texImage, hwlevel, x, y, + width, height); return; - } else if ( RADEON_DEBUG & DEBUG_TEXTURE ) - fprintf( stderr, "%s: image data is in normal memory\n", + } else if (RADEON_DEBUG & DEBUG_TEXTURE) + fprintf(stderr, "%s: image data is in normal memory\n", __FUNCTION__); - imageWidth = texImage->Width; imageHeight = texImage->Height; offset = t->bufAddr + t->base.totalSize / 6 * face; - if ( RADEON_DEBUG & (DEBUG_TEXTURE|DEBUG_IOCTL) ) { + if (RADEON_DEBUG & (DEBUG_TEXTURE | DEBUG_IOCTL)) { GLint imageX = 0; GLint imageY = 0; GLint blitX = t->image[face][hwlevel].x; GLint blitY = t->image[face][hwlevel].y; GLint blitWidth = t->image[face][hwlevel].width; GLint blitHeight = t->image[face][hwlevel].height; - fprintf( stderr, " upload image: %d,%d at %d,%d\n", - imageWidth, imageHeight, imageX, imageY ); - fprintf( stderr, " upload blit: %d,%d at %d,%d\n", - blitWidth, blitHeight, blitX, blitY ); - fprintf( stderr, " blit ofs: 0x%07x level: %d/%d\n", - (GLuint)offset, hwlevel, level ); + fprintf(stderr, " upload image: %d,%d at %d,%d\n", + imageWidth, imageHeight, imageX, imageY); + fprintf(stderr, " upload blit: %d,%d at %d,%d\n", + blitWidth, blitHeight, blitX, blitY); + fprintf(stderr, " blit ofs: 0x%07x level: %d/%d\n", + (GLuint) offset, hwlevel, level); } t->image[face][hwlevel].data = texImage->Data; @@ -395,12 +393,15 @@ static void uploadSubImage( r300ContextPtr rmesa, r300TexObjPtr t, tex.offset = offset; tex.image = &tmp; /* copy (x,y,width,height,data) */ - memcpy( &tmp, &t->image[face][hwlevel], sizeof(tmp) ); + memcpy(&tmp, &t->image[face][hwlevel], sizeof(tmp)); if (texImage->TexFormat->TexelBytes > 4) { - const int log2TexelBytes = (3 + (texImage->TexFormat->TexelBytes >> 4)); - tex.format = RADEON_TXFORMAT_I8; /* any 1-byte texel format */ - tex.pitch = MAX2((texImage->Width * texImage->TexFormat->TexelBytes) / 64, 1); + const int log2TexelBytes = + (3 + (texImage->TexFormat->TexelBytes >> 4)); + tex.format = RADEON_TXFORMAT_I8; /* any 1-byte texel format */ + tex.pitch = + MAX2((texImage->Width * texImage->TexFormat->TexelBytes) / + 64, 1); tex.height = imageHeight; tex.width = imageWidth << log2TexelBytes; tex.offset += (tmp.x << log2TexelBytes) & ~1023; @@ -410,7 +411,7 @@ static void uploadSubImage( r300ContextPtr rmesa, r300TexObjPtr t, /* use multi-byte upload scheme */ tex.height = imageHeight; tex.width = imageWidth; - switch(texImage->TexFormat->TexelBytes) { + switch (texImage->TexFormat->TexelBytes) { case 1: tex.format = RADEON_TXFORMAT_I8; break; @@ -421,23 +422,29 @@ static void uploadSubImage( r300ContextPtr rmesa, r300TexObjPtr t, tex.format = RADEON_TXFORMAT_ARGB8888; break; } - tex.pitch = MAX2((texImage->Width * texImage->TexFormat->TexelBytes) / 64, 1); + tex.pitch = + MAX2((texImage->Width * texImage->TexFormat->TexelBytes) / + 64, 1); tex.offset += tmp.x & ~1023; tmp.x = tmp.x % 1024; if (t->tile_bits & R300_TXO_MICRO_TILE) { /* need something like "tiled coordinates" ? */ tmp.y = tmp.x / (tex.pitch * 128) * 2; - tmp.x = tmp.x % (tex.pitch * 128) / 2 / texImage->TexFormat->TexelBytes; + tmp.x = + tmp.x % (tex.pitch * 128) / 2 / + texImage->TexFormat->TexelBytes; tex.pitch |= RADEON_DST_TILE_MICRO >> 22; } else { tmp.x = tmp.x >> (texImage->TexFormat->TexelBytes >> 1); } #if 1 if ((t->tile_bits & R300_TXO_MACRO_TILE) && - (texImage->Width * texImage->TexFormat->TexelBytes >= 256) && - ((!(t->tile_bits & R300_TXO_MICRO_TILE) && (texImage->Height >= 8)) || - (texImage->Height >= 16))) { + (texImage->Width * texImage->TexFormat->TexelBytes >= 256) + && + ((!(t->tile_bits & R300_TXO_MICRO_TILE) + && (texImage->Height >= 8)) + || (texImage->Height >= 16))) { /* weird: R200 disables macro tiling if mip width is smaller than 256 bytes, OR if height is smaller than 8 automatically, but if micro tiling is active the limit is height 16 instead ? */ @@ -451,40 +458,42 @@ static void uploadSubImage( r300ContextPtr rmesa, r300TexObjPtr t, /* set tex.height to 1/4 since 1 "macropixel" (dxt-block) has 4 real pixels. Needed so the kernel module reads the right amount of data. */ - tex.format = RADEON_TXFORMAT_I8; /* any 1-byte texel format */ + tex.format = RADEON_TXFORMAT_I8; /* any 1-byte texel format */ tex.pitch = (R300_BLIT_WIDTH_BYTES / 64); tex.height = (imageHeight + 3) / 4; tex.width = (imageWidth + 3) / 4; - if ((t->format & R300_TX_FORMAT_DXT1) == R300_TX_FORMAT_DXT1) - { + if ((t->format & R300_TX_FORMAT_DXT1) == R300_TX_FORMAT_DXT1) { tex.width *= 8; } else { tex.width *= 16; } } - LOCK_HARDWARE( &rmesa->radeon ); + LOCK_HARDWARE(&rmesa->radeon); do { - ret = drmCommandWriteRead( rmesa->radeon.dri.fd, DRM_RADEON_TEXTURE, - &tex, sizeof(drm_radeon_texture_t) ); + ret = + drmCommandWriteRead(rmesa->radeon.dri.fd, + DRM_RADEON_TEXTURE, &tex, + sizeof(drm_radeon_texture_t)); if (ret) { - if (RADEON_DEBUG & DEBUG_IOCTL) - fprintf(stderr, "DRM_RADEON_TEXTURE: again!\n"); - usleep(1); + if (RADEON_DEBUG & DEBUG_IOCTL) + fprintf(stderr, + "DRM_RADEON_TEXTURE: again!\n"); + usleep(1); } - } while ( ret == -EAGAIN ); - - UNLOCK_HARDWARE( &rmesa->radeon ); - - if ( ret ) { - fprintf( stderr, "DRM_RADEON_TEXTURE: return = %d\n", ret ); - fprintf( stderr, " offset=0x%08x\n", - offset ); - fprintf( stderr, " image width=%d height=%d\n", - imageWidth, imageHeight ); - fprintf( stderr, " blit width=%d height=%d data=%p\n", - t->image[face][hwlevel].width, t->image[face][hwlevel].height, - t->image[face][hwlevel].data ); + } while (ret == -EAGAIN); + + UNLOCK_HARDWARE(&rmesa->radeon); + + if (ret) { + fprintf(stderr, "DRM_RADEON_TEXTURE: return = %d\n", ret); + fprintf(stderr, " offset=0x%08x\n", offset); + fprintf(stderr, " image width=%d height=%d\n", + imageWidth, imageHeight); + fprintf(stderr, " blit width=%d height=%d data=%p\n", + t->image[face][hwlevel].width, + t->image[face][hwlevel].height, + t->image[face][hwlevel].data); _mesa_exit(-1); } } -- cgit v1.2.3 From 901fc0de18ea1fe7b148d0eb9883080c59b406b1 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 14:12:34 +0000 Subject: r300: Indented r300_state.[ch]. --- src/mesa/drivers/dri/r300/r300_state.c | 151 +++++++++++---------------------- 1 file changed, 50 insertions(+), 101 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_state.c b/src/mesa/drivers/dri/r300/r300_state.c index 18c15ae83de..2d5b10d3ce2 100644 --- a/src/mesa/drivers/dri/r300/r300_state.c +++ b/src/mesa/drivers/dri/r300/r300_state.c @@ -351,12 +351,10 @@ static void update_early_z(GLcontext * ctx) else { if (ctx->Depth.Test && ctx->Depth.Func != GL_NEVER) /* enable early Z */ - r300->hw.zstencil_format.cmd[2] = - R300_EARLY_Z_ENABLE; + r300->hw.zstencil_format.cmd[2] = R300_EARLY_Z_ENABLE; else /* disable early Z */ - r300->hw.zstencil_format.cmd[2] = - R300_EARLY_Z_DISABLE; + r300->hw.zstencil_format.cmd[2] = R300_EARLY_Z_DISABLE; } } @@ -453,8 +451,7 @@ static void update_depth(GLcontext * ctx) r300->hw.zs.cmd[R300_ZS_CNTL_0] |= R300_RB3D_Z_TEST_AND_WRITE; else - r300->hw.zs.cmd[R300_ZS_CNTL_0] |= - R300_RB3D_Z_TEST; + r300->hw.zs.cmd[R300_ZS_CNTL_0] |= R300_RB3D_Z_TEST; r300->hw.zs.cmd[R300_ZS_CNTL_1] |= translate_func(ctx->Depth. @@ -462,8 +459,7 @@ static void update_depth(GLcontext * ctx) } else { r300->hw.zs.cmd[R300_ZS_CNTL_0] |= R300_RB3D_Z_DISABLED_1; r300->hw.zs.cmd[R300_ZS_CNTL_1] |= - translate_func(GL_NEVER) << - R300_RB3D_ZS1_DEPTH_FUNC_SHIFT; + translate_func(GL_NEVER) << R300_RB3D_ZS1_DEPTH_FUNC_SHIFT; } update_early_z(ctx); @@ -494,20 +490,16 @@ static void r300Enable(GLcontext * ctx, GLenum cap, GLboolean state) case GL_FOG: R300_STATECHANGE(r300, fogs); if (state) { - r300->hw.fogs.cmd[R300_FOGS_STATE] |= - R300_FOG_ENABLE; + r300->hw.fogs.cmd[R300_FOGS_STATE] |= R300_FOG_ENABLE; ctx->Driver.Fogfv(ctx, GL_FOG_MODE, NULL); ctx->Driver.Fogfv(ctx, GL_FOG_DENSITY, &ctx->Fog.Density); - ctx->Driver.Fogfv(ctx, GL_FOG_START, - &ctx->Fog.Start); + ctx->Driver.Fogfv(ctx, GL_FOG_START, &ctx->Fog.Start); ctx->Driver.Fogfv(ctx, GL_FOG_END, &ctx->Fog.End); - ctx->Driver.Fogfv(ctx, GL_FOG_COLOR, - ctx->Fog.Color); + ctx->Driver.Fogfv(ctx, GL_FOG_COLOR, ctx->Fog.Color); } else { - r300->hw.fogs.cmd[R300_FOGS_STATE] &= - ~R300_FOG_ENABLE; + r300->hw.fogs.cmd[R300_FOGS_STATE] &= ~R300_FOG_ENABLE; } break; @@ -537,8 +529,7 @@ static void r300Enable(GLcontext * ctx, GLenum cap, GLboolean state) } } else { #if R200_MERGED - FALLBACK(&r300->radeon, RADEON_FALLBACK_STENCIL, - state); + FALLBACK(&r300->radeon, RADEON_FALLBACK_STENCIL, state); #endif } break; @@ -666,8 +657,7 @@ static void r300DepthMask(GLcontext * ctx, GLboolean mask) * Handle glColorMask() */ static void r300ColorMask(GLcontext * ctx, - GLboolean r, GLboolean g, GLboolean b, - GLboolean a) + GLboolean r, GLboolean g, GLboolean b, GLboolean a) { r300ContextPtr r300 = R300_CONTEXT(ctx); int mask = (r ? R300_COLORMASK0_R : 0) | @@ -901,8 +891,7 @@ static void r300StencilFuncSeparate(GLcontext * ctx, GLenum face, rmesa->hw.zs.cmd[R300_ZS_CNTL_2] &= ~((R300_RB3D_ZS2_STENCIL_MASK << R300_RB3D_ZS2_STENCIL_REF_SHIFT) | - (R300_RB3D_ZS2_STENCIL_MASK << - R300_RB3D_ZS2_STENCIL_MASK_SHIFT)); + (R300_RB3D_ZS2_STENCIL_MASK << R300_RB3D_ZS2_STENCIL_MASK_SHIFT)); flag = translate_func(ctx->Stencil.Function[0]); rmesa->hw.zs.cmd[R300_ZS_CNTL_1] |= @@ -916,8 +905,7 @@ static void r300StencilFuncSeparate(GLcontext * ctx, GLenum face, rmesa->hw.zs.cmd[R300_ZS_CNTL_2] |= refmask; } -static void r300StencilMaskSeparate(GLcontext * ctx, GLenum face, - GLuint mask) +static void r300StencilMaskSeparate(GLcontext * ctx, GLenum face, GLuint mask) { r300ContextPtr rmesa = R300_CONTEXT(ctx); @@ -927,8 +915,7 @@ static void r300StencilMaskSeparate(GLcontext * ctx, GLenum face, R300_RB3D_ZS2_STENCIL_WRITE_MASK_SHIFT); rmesa->hw.zs.cmd[R300_ZS_CNTL_2] |= (ctx->Stencil. - WriteMask[0] & 0xff) << - R300_RB3D_ZS2_STENCIL_WRITE_MASK_SHIFT; + WriteMask[0] & 0xff) << R300_RB3D_ZS2_STENCIL_WRITE_MASK_SHIFT; } static void r300StencilOpSeparate(GLcontext * ctx, GLenum face, @@ -1028,8 +1015,7 @@ static void r300Viewport(GLcontext * ctx, GLint x, GLint y, r300UpdateWindow(ctx); } -static void r300DepthRange(GLcontext * ctx, GLclampd nearval, - GLclampd farval) +static void r300DepthRange(GLcontext * ctx, GLclampd nearval, GLclampd farval) { r300UpdateWindow(ctx); } @@ -1037,8 +1023,7 @@ static void r300DepthRange(GLcontext * ctx, GLclampd nearval, void r300UpdateViewportOffset(GLcontext * ctx) { r300ContextPtr rmesa = R300_CONTEXT(ctx); - __DRIdrawablePrivate *dPriv = - ((radeonContextPtr) rmesa)->dri.drawable; + __DRIdrawablePrivate *dPriv = ((radeonContextPtr) rmesa)->dri.drawable; GLfloat xoffset = (GLfloat) dPriv->x; GLfloat yoffset = (GLfloat) dPriv->y + dPriv->h; const GLfloat *v = ctx->Viewport._WindowMap.m; @@ -1096,8 +1081,7 @@ void r300UpdateDrawBuffer(GLcontext * ctx) r300->hw.cb.cmd[R300_CB_PITCH] = drb->flippedPitch; //r300->radeon.state.color.drawPitch; if (r300->radeon.radeonScreen->cpp == 4) - r300->hw.cb.cmd[R300_CB_PITCH] |= - R300_COLOR_FORMAT_ARGB8888; + r300->hw.cb.cmd[R300_CB_PITCH] |= R300_COLOR_FORMAT_ARGB8888; else r300->hw.cb.cmd[R300_CB_PITCH] |= R300_COLOR_FORMAT_RGB565; @@ -1138,8 +1122,7 @@ r300FetchStateParameter(GLcontext * ctx, case STATE_R300_TEXRECT_FACTOR:{ struct gl_texture_object *t = - ctx->Texture.Unit[state[2]]. - CurrentRect; + ctx->Texture.Unit[state[2]].CurrentRect; if (t && t->Image[0][t->BaseLevel]) { struct gl_texture_image *image = @@ -1192,8 +1175,7 @@ void r300UpdateStateParameters(GLcontext * ctx, GLuint new_state) r300FetchStateParameter(ctx, paramList->Parameters[i]. StateIndexes, - paramList-> - ParameterValues[i]); + paramList->ParameterValues[i]); } } } @@ -1201,8 +1183,7 @@ void r300UpdateStateParameters(GLcontext * ctx, GLuint new_state) /* ============================================================= * Polygon state */ -static void r300PolygonOffset(GLcontext * ctx, GLfloat factor, - GLfloat units) +static void r300PolygonOffset(GLcontext * ctx, GLfloat factor, GLfloat units) { r300ContextPtr rmesa = R300_CONTEXT(ctx); GLfloat constant = units; @@ -1427,8 +1408,7 @@ void r300_setup_textures(GLcontext * ctx) val &= ~R300_FPITX_IMAGE_MASK; opcode = - (val & R300_FPITX_OPCODE_MASK) >> - R300_FPITX_OPCODE_SHIFT; + (val & R300_FPITX_OPCODE_MASK) >> R300_FPITX_OPCODE_SHIFT; if (opcode == R300_FPITX_OP_KIL) { r300->hw.fpt.cmd[R300_FPT_INSTR_0 + i] = val; } else { @@ -1436,13 +1416,11 @@ void r300_setup_textures(GLcontext * ctx) val |= tmu_mappings[unit] << R300_FPITX_IMAGE_SHIFT; - r300->hw.fpt.cmd[R300_FPT_INSTR_0 + i] = - val; + r300->hw.fpt.cmd[R300_FPT_INSTR_0 + i] = val; } else { // We get here when the corresponding texture image is incomplete // (e.g. incomplete mipmaps etc.) - r300->hw.fpt.cmd[R300_FPT_INSTR_0 + i] = - val; + r300->hw.fpt.cmd[R300_FPT_INSTR_0 + i] = val; } } } @@ -1492,8 +1470,7 @@ void r300_setup_rs_unit(GLcontext * ctx) r300->state.render_inputs_bitset); if (ctx->FragmentProgram._Current) - InputsRead = - ctx->FragmentProgram._Current->Base.InputsRead; + InputsRead = ctx->FragmentProgram._Current->Base.InputsRead; else { fprintf(stderr, "No ctx->FragmentProgram._Current!!\n"); return; /* This should only ever happen once.. */ @@ -1549,15 +1526,13 @@ void r300_setup_rs_unit(GLcontext * ctx) } /* Need to count all coords enabled at vof */ if (R300_OUTPUTS_WRITTEN_TEST - (OutputsWritten, VERT_RESULT_TEX0 + i, - _TNL_ATTRIB_TEX(i))) + (OutputsWritten, VERT_RESULT_TEX0 + i, _TNL_ATTRIB_TEX(i))) in_texcoords++; } if (InputsRead & FRAG_BIT_COL0) { if (!R300_OUTPUTS_WRITTEN_TEST - (OutputsWritten, VERT_RESULT_COL0, - _TNL_ATTRIB_COLOR0)) { + (OutputsWritten, VERT_RESULT_COL0, _TNL_ATTRIB_COLOR0)) { WARN_ONCE ("fragprog wants col0, vp doesn't provide it\n"); goto out; /* FIXME */ @@ -1575,8 +1550,7 @@ void r300_setup_rs_unit(GLcontext * ctx) if (InputsRead & FRAG_BIT_COL1) { if (!R300_OUTPUTS_WRITTEN_TEST - (OutputsWritten, VERT_RESULT_COL1, - _TNL_ATTRIB_COLOR1)) { + (OutputsWritten, VERT_RESULT_COL1, _TNL_ATTRIB_COLOR1)) { WARN_ONCE ("fragprog wants col1, vp doesn't provide it\n"); //_mesa_exit(-1); @@ -1599,8 +1573,7 @@ void r300_setup_rs_unit(GLcontext * ctx) col_interp_nr++; } - r300->hw.rc.cmd[1] = 0 - | (in_texcoords << R300_RS_CNTL_TC_CNT_SHIFT) + r300->hw.rc.cmd[1] = 0 | (in_texcoords << R300_RS_CNTL_TC_CNT_SHIFT) | (col_interp_nr << R300_RS_CNTL_CI_CNT_SHIFT) | R300_RS_CNTL_0_UNKNOWN_18; @@ -1623,9 +1596,7 @@ void r300_setup_rs_unit(GLcontext * ctx) if(_nc>_p->vpu.count)_p->vpu.count=_nc;\ }while(0) -void static inline setup_vertex_shader_fragment(r300ContextPtr r300, - int dest, - struct +void static inline setup_vertex_shader_fragment(r300ContextPtr r300, int dest, struct r300_vertex_shader_fragment *vsf) { @@ -1645,8 +1616,7 @@ void static inline setup_vertex_shader_fragment(r300ContextPtr r300, R300_STATECHANGE(r300, vpi); for (i = 0; i < vsf->length; i++) r300->hw.vpi.cmd[R300_VPI_INSTR_0 + i + - 4 * (dest & 0xff)] = - (vsf->body.d[i]); + 4 * (dest & 0xff)] = (vsf->body.d[i]); bump_vpu_count(r300->hw.vpi.cmd, vsf->length + 4 * (dest & 0xff)); break; @@ -1655,8 +1625,7 @@ void static inline setup_vertex_shader_fragment(r300ContextPtr r300, R300_STATECHANGE(r300, vpp); for (i = 0; i < vsf->length; i++) r300->hw.vpp.cmd[R300_VPP_PARAM_0 + i + - 4 * (dest & 0xff)] = - (vsf->body.d[i]); + 4 * (dest & 0xff)] = (vsf->body.d[i]); bump_vpu_count(r300->hw.vpp.cmd, vsf->length + 4 * (dest & 0xff)); break; @@ -1757,16 +1726,13 @@ void r300SetupVertexShader(r300ContextPtr rmesa) r300GenerateSimpleVertexShader(rmesa); setup_vertex_shader_fragment(rmesa, VSF_DEST_PROGRAM, - &(rmesa->state.vertex_shader. - program)); + &(rmesa->state.vertex_shader.program)); #if 0 setup_vertex_shader_fragment(rmesa, VSF_DEST_UNKNOWN1, - &(rmesa->state.vertex_shader. - unknown1)); + &(rmesa->state.vertex_shader.unknown1)); setup_vertex_shader_fragment(rmesa, VSF_DEST_UNKNOWN2, - &(rmesa->state.vertex_shader. - unknown2)); + &(rmesa->state.vertex_shader.unknown2)); #endif R300_STATECHANGE(rmesa, pvs); @@ -1806,10 +1772,8 @@ void r300SetupVertexProgram(r300ContextPtr rmesa) ((drm_r300_cmd_header_t *) rmesa->hw.vpp.cmd)->vpu.count = 0; R300_STATECHANGE(rmesa, vpp); param_count = - r300VertexProgUpdateParams(ctx, - (struct r300_vertex_program_cont *) - ctx->VertexProgram. - _Current /*prog */ , + r300VertexProgUpdateParams(ctx, (struct r300_vertex_program_cont *) + ctx->VertexProgram._Current /*prog */ , (float *)&rmesa->hw.vpp. cmd[R300_VPP_PARAM_0]); bump_vpu_count(rmesa->hw.vpp.cmd, param_count); @@ -1819,16 +1783,13 @@ void r300SetupVertexProgram(r300ContextPtr rmesa) ((drm_r300_cmd_header_t *) rmesa->hw.vpi.cmd)->vpu.count = 0; ((drm_r300_cmd_header_t *) rmesa->hw.vps.cmd)->vpu.count = 0; - setup_vertex_shader_fragment(rmesa, VSF_DEST_PROGRAM, - &(prog->program)); + setup_vertex_shader_fragment(rmesa, VSF_DEST_PROGRAM, &(prog->program)); #if 0 setup_vertex_shader_fragment(rmesa, VSF_DEST_UNKNOWN1, - &(rmesa->state.vertex_shader. - unknown1)); + &(rmesa->state.vertex_shader.unknown1)); setup_vertex_shader_fragment(rmesa, VSF_DEST_UNKNOWN2, - &(rmesa->state.vertex_shader. - unknown2)); + &(rmesa->state.vertex_shader.unknown2)); #endif inst_count = prog->program.length / 4 - 1; @@ -1984,8 +1945,7 @@ void r300SetupPixelShader(r300ContextPtr rmesa) | (rp->node[i]. alu_end << R300_PFS_NODE_ALU_END_SHIFT) | (rp->node[i]. - tex_offset << - R300_PFS_NODE_TEX_OFFSET_SHIFT) + tex_offset << R300_PFS_NODE_TEX_OFFSET_SHIFT) | (rp->node[i]. tex_end << R300_PFS_NODE_TEX_END_SHIFT) | rp->node[i].flags; /* ( (k==3) ? R300_PFS_NODE_LAST_NODE : 0); */ @@ -2072,8 +2032,7 @@ void r300ResetHwState(r300ContextPtr r300) r300ColorMask(ctx, ctx->Color.ColorMask[RCOMP], ctx->Color.ColorMask[GCOMP], - ctx->Color.ColorMask[BCOMP], - ctx->Color.ColorMask[ACOMP]); + ctx->Color.ColorMask[BCOMP], ctx->Color.ColorMask[ACOMP]); r300Enable(ctx, GL_DEPTH_TEST, ctx->Depth.Test); r300DepthMask(ctx, ctx->Depth.Mask); @@ -2083,8 +2042,7 @@ void r300ResetHwState(r300ContextPtr r300) r300Enable(ctx, GL_STENCIL_TEST, ctx->Stencil.Enabled); r300StencilMaskSeparate(ctx, 0, ctx->Stencil.WriteMask[0]); r300StencilFuncSeparate(ctx, 0, ctx->Stencil.Function[0], - ctx->Stencil.Ref[0], - ctx->Stencil.ValueMask[0]); + ctx->Stencil.Ref[0], ctx->Stencil.ValueMask[0]); r300StencilOpSeparate(ctx, 0, ctx->Stencil.FailFunc[0], ctx->Stencil.ZFailFunc[0], ctx->Stencil.ZPassFunc[0]); @@ -2150,13 +2108,11 @@ void r300ResetHwState(r300ContextPtr r300) r300->hw.gb_misc.cmd[R300_GB_MISC_TILE_CONFIG] = R300_GB_TILE_ENABLE | R300_GB_TILE_PIPE_COUNT_R300 | R300_GB_TILE_SIZE_16; - else if (r300->radeon.radeonScreen->chip_family == - CHIP_FAMILY_RV410) + else if (r300->radeon.radeonScreen->chip_family == CHIP_FAMILY_RV410) r300->hw.gb_misc.cmd[R300_GB_MISC_TILE_CONFIG] = R300_GB_TILE_ENABLE | R300_GB_TILE_PIPE_COUNT_RV410 | R300_GB_TILE_SIZE_16; - else if (r300->radeon.radeonScreen->chip_family == - CHIP_FAMILY_R420) + else if (r300->radeon.radeonScreen->chip_family == CHIP_FAMILY_R420) r300->hw.gb_misc.cmd[R300_GB_MISC_TILE_CONFIG] = R300_GB_TILE_ENABLE | R300_GB_TILE_PIPE_COUNT_R420 | R300_GB_TILE_SIZE_16; @@ -2165,8 +2121,7 @@ void r300ResetHwState(r300ContextPtr r300) R300_GB_TILE_ENABLE | R300_GB_TILE_PIPE_COUNT_RV300 | R300_GB_TILE_SIZE_16; /* set to 0 when fog is disabled? */ - r300->hw.gb_misc.cmd[R300_GB_MISC_SELECT] = - R300_GB_FOG_SELECT_1_1_W; + r300->hw.gb_misc.cmd[R300_GB_MISC_SELECT] = R300_GB_FOG_SELECT_1_1_W; r300->hw.gb_misc.cmd[R300_GB_MISC_AA_CONFIG] = R300_AA_DISABLE; /* No antialiasing */ r300->hw.unk4200.cmd[1] = r300PackFloat32(0.0); @@ -2238,12 +2193,10 @@ void r300ResetHwState(r300ContextPtr r300) r300->hw.cb.cmd[R300_CB_OFFSET] = r300->radeon.state.color.drawOffset + r300->radeon.radeonScreen->fbLocation; - r300->hw.cb.cmd[R300_CB_PITCH] = - r300->radeon.state.color.drawPitch; + r300->hw.cb.cmd[R300_CB_PITCH] = r300->radeon.state.color.drawPitch; if (r300->radeon.radeonScreen->cpp == 4) - r300->hw.cb.cmd[R300_CB_PITCH] |= - R300_COLOR_FORMAT_ARGB8888; + r300->hw.cb.cmd[R300_CB_PITCH] |= R300_COLOR_FORMAT_ARGB8888; else r300->hw.cb.cmd[R300_CB_PITCH] |= R300_COLOR_FORMAT_RGB565; @@ -2267,12 +2220,10 @@ void r300ResetHwState(r300ContextPtr r300) switch (ctx->Visual.depthBits) { case 16: - r300->hw.zstencil_format.cmd[1] = - R300_DEPTH_FORMAT_16BIT_INT_Z; + r300->hw.zstencil_format.cmd[1] = R300_DEPTH_FORMAT_16BIT_INT_Z; break; case 24: - r300->hw.zstencil_format.cmd[1] = - R300_DEPTH_FORMAT_24BIT_INT_Z; + r300->hw.zstencil_format.cmd[1] = R300_DEPTH_FORMAT_24BIT_INT_Z; break; default: fprintf(stderr, "Error: Unsupported depth %d... exiting\n", @@ -2289,8 +2240,7 @@ void r300ResetHwState(r300ContextPtr r300) r300->hw.zb.cmd[R300_ZB_OFFSET] = r300->radeon.radeonScreen->depthOffset + r300->radeon.radeonScreen->fbLocation; - r300->hw.zb.cmd[R300_ZB_PITCH] = - r300->radeon.radeonScreen->depthPitch; + r300->hw.zb.cmd[R300_ZB_PITCH] = r300->radeon.radeonScreen->depthPitch; if (r300->radeon.sarea->tiling_enabled) { /* Turn off when clearing buffers ? */ @@ -2313,8 +2263,7 @@ void r300ResetHwState(r300ContextPtr r300) if (has_tcl) { r300->hw.vps.cmd[R300_VPS_ZERO_0] = 0; r300->hw.vps.cmd[R300_VPS_ZERO_1] = 0; - r300->hw.vps.cmd[R300_VPS_POINTSIZE] = - r300PackFloat32(1.0); + r300->hw.vps.cmd[R300_VPS_POINTSIZE] = r300PackFloat32(1.0); r300->hw.vps.cmd[R300_VPS_ZERO_3] = 0; } //END: TODO -- cgit v1.2.3 From 76d7b62cd27fba8b5739e6523fdbf9a14eedefe7 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 14:17:16 +0000 Subject: r300: Indented r300_cmdbuf.[ch]. --- src/mesa/drivers/dri/r300/r300_cmdbuf.c | 78 +++++++++++---------------------- src/mesa/drivers/dri/r300/r300_cmdbuf.h | 9 ++-- 2 files changed, 29 insertions(+), 58 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_cmdbuf.c b/src/mesa/drivers/dri/r300/r300_cmdbuf.c index 294fcd75948..37cb508d723 100644 --- a/src/mesa/drivers/dri/r300/r300_cmdbuf.c +++ b/src/mesa/drivers/dri/r300/r300_cmdbuf.c @@ -87,8 +87,7 @@ int r300FlushCmdBufLocked(r300ContextPtr r300, const char *caller) if (r300->radeon.state.scissor.enabled) { cmd.nbox = r300->radeon.state.scissor.numClipRects; cmd.boxes = - (drm_clip_rect_t *) r300->radeon.state.scissor. - pClipRects; + (drm_clip_rect_t *) r300->radeon.state.scissor.pClipRects; } else { cmd.nbox = r300->radeon.numClipRects; cmd.boxes = (drm_clip_rect_t *) r300->radeon.pClipRects; @@ -128,8 +127,7 @@ int r300FlushCmdBuf(r300ContextPtr r300, const char *caller) return ret; } -void r300_print_state_atom(r300ContextPtr r300, - struct r300_state_atom *state) +void r300_print_state_atom(r300ContextPtr r300, struct r300_state_atom *state) { int i; int dwords = (*state->check) (r300, state); @@ -149,8 +147,7 @@ void r300_print_state_atom(r300ContextPtr r300, * The caller must have ensured that there is enough space in the command * buffer. */ -static __inline__ void r300DoEmitState(r300ContextPtr r300, - GLboolean dirty) +static __inline__ void r300DoEmitState(r300ContextPtr r300, GLboolean dirty) { struct r300_state_atom *atom; uint32_t *dest; @@ -259,8 +256,7 @@ static int check_##NM( r300ContextPtr r300, \ #define vpu_count(ptr) (((drm_r300_cmd_header_t*)(ptr))->vpu.count) CHECK(always, atom->cmd_size) - CHECK(variable, - packet0_count(atom->cmd) ? (1 + packet0_count(atom->cmd)) : 0) + CHECK(variable, packet0_count(atom->cmd) ? (1 + packet0_count(atom->cmd)) : 0) CHECK(vpu, vpu_count(atom->cmd) ? (1 + vpu_count(atom->cmd) * 4) : 0) #undef packet0_count #undef vpu_count @@ -295,8 +291,7 @@ void r300InitCmdBuf(r300ContextPtr r300) /* Initialize state atoms */ ALLOC_STATE(vpt, always, R300_VPT_CMDSIZE, "vpt", 0); - r300->hw.vpt.cmd[R300_VPT_CMD_0] = - cmdpacket0(R300_SE_VPORT_XSCALE, 6); + r300->hw.vpt.cmd[R300_VPT_CMD_0] = cmdpacket0(R300_SE_VPORT_XSCALE, 6); ALLOC_STATE(vap_cntl, always, 2, "vap_cntl", 0); r300->hw.vap_cntl.cmd[0] = cmdpacket0(R300_VAP_CNTL, 1); ALLOC_STATE(vte, always, 3, "vte", 0); @@ -304,8 +299,7 @@ void r300InitCmdBuf(r300ContextPtr r300) ALLOC_STATE(unk2134, always, 3, "unk2134", 0); r300->hw.unk2134.cmd[0] = cmdpacket0(0x2134, 2); ALLOC_STATE(vap_cntl_status, always, 2, "vap_cntl_status", 0); - r300->hw.vap_cntl_status.cmd[0] = - cmdpacket0(R300_VAP_CNTL_STATUS, 1); + r300->hw.vap_cntl_status.cmd[0] = cmdpacket0(R300_VAP_CNTL_STATUS, 1); ALLOC_STATE(vir[0], variable, R300_VIR_CMDSIZE, "vir/0", 0); r300->hw.vir[0].cmd[R300_VIR_CMD_0] = cmdpacket0(R300_VAP_INPUT_ROUTE_0_0, 1); @@ -313,8 +307,7 @@ void r300InitCmdBuf(r300ContextPtr r300) r300->hw.vir[1].cmd[R300_VIR_CMD_0] = cmdpacket0(R300_VAP_INPUT_ROUTE_1_0, 1); ALLOC_STATE(vic, always, R300_VIC_CMDSIZE, "vic", 0); - r300->hw.vic.cmd[R300_VIC_CMD_0] = - cmdpacket0(R300_VAP_INPUT_CNTL_0, 2); + r300->hw.vic.cmd[R300_VIC_CMD_0] = cmdpacket0(R300_VAP_INPUT_CNTL_0, 2); ALLOC_STATE(unk21DC, always, 2, "unk21DC", 0); r300->hw.unk21DC.cmd[0] = cmdpacket0(0x21DC, 1); ALLOC_STATE(unk221C, always, 2, "unk221C", 0); @@ -363,11 +356,9 @@ void r300InitCmdBuf(r300ContextPtr r300) r300->hw.zbs.cmd[R300_ZBS_CMD_0] = cmdpacket0(R300_RE_ZBIAS_T_FACTOR, 4); ALLOC_STATE(occlusion_cntl, always, 2, "occlusion_cntl", 0); - r300->hw.occlusion_cntl.cmd[0] = - cmdpacket0(R300_RE_OCCLUSION_CNTL, 1); + r300->hw.occlusion_cntl.cmd[0] = cmdpacket0(R300_RE_OCCLUSION_CNTL, 1); ALLOC_STATE(cul, always, R300_CUL_CMDSIZE, "cul", 0); - r300->hw.cul.cmd[R300_CUL_CMD_0] = - cmdpacket0(R300_RE_CULL_CNTL, 1); + r300->hw.cul.cmd[R300_CUL_CMD_0] = cmdpacket0(R300_RE_CULL_CNTL, 1); ALLOC_STATE(unk42C0, always, 3, "unk42C0", 0); r300->hw.unk42C0.cmd[0] = cmdpacket0(0x42C0, 2); ALLOC_STATE(rc, always, R300_RC_CMDSIZE, "rc", 0); @@ -388,44 +379,34 @@ void r300InitCmdBuf(r300ContextPtr r300) ALLOC_STATE(unk46A4, always, 6, "unk46A4", 0); r300->hw.unk46A4.cmd[0] = cmdpacket0(0x46A4, 5); ALLOC_STATE(fpi[0], variable, R300_FPI_CMDSIZE, "fpi/0", 0); - r300->hw.fpi[0].cmd[R300_FPI_CMD_0] = - cmdpacket0(R300_PFS_INSTR0_0, 1); + r300->hw.fpi[0].cmd[R300_FPI_CMD_0] = cmdpacket0(R300_PFS_INSTR0_0, 1); ALLOC_STATE(fpi[1], variable, R300_FPI_CMDSIZE, "fpi/1", 1); - r300->hw.fpi[1].cmd[R300_FPI_CMD_0] = - cmdpacket0(R300_PFS_INSTR1_0, 1); + r300->hw.fpi[1].cmd[R300_FPI_CMD_0] = cmdpacket0(R300_PFS_INSTR1_0, 1); ALLOC_STATE(fpi[2], variable, R300_FPI_CMDSIZE, "fpi/2", 2); - r300->hw.fpi[2].cmd[R300_FPI_CMD_0] = - cmdpacket0(R300_PFS_INSTR2_0, 1); + r300->hw.fpi[2].cmd[R300_FPI_CMD_0] = cmdpacket0(R300_PFS_INSTR2_0, 1); ALLOC_STATE(fpi[3], variable, R300_FPI_CMDSIZE, "fpi/3", 3); - r300->hw.fpi[3].cmd[R300_FPI_CMD_0] = - cmdpacket0(R300_PFS_INSTR3_0, 1); + r300->hw.fpi[3].cmd[R300_FPI_CMD_0] = cmdpacket0(R300_PFS_INSTR3_0, 1); ALLOC_STATE(fogs, always, R300_FOGS_CMDSIZE, "fogs", 0); - r300->hw.fogs.cmd[R300_FOGS_CMD_0] = - cmdpacket0(R300_RE_FOG_STATE, 1); + r300->hw.fogs.cmd[R300_FOGS_CMD_0] = cmdpacket0(R300_RE_FOG_STATE, 1); ALLOC_STATE(fogc, always, R300_FOGC_CMDSIZE, "fogc", 0); - r300->hw.fogc.cmd[R300_FOGC_CMD_0] = - cmdpacket0(R300_FOG_COLOR_R, 3); + r300->hw.fogc.cmd[R300_FOGC_CMD_0] = cmdpacket0(R300_FOG_COLOR_R, 3); ALLOC_STATE(at, always, R300_AT_CMDSIZE, "at", 0); r300->hw.at.cmd[R300_AT_CMD_0] = cmdpacket0(R300_PP_ALPHA_TEST, 2); ALLOC_STATE(unk4BD8, always, 2, "unk4BD8", 0); r300->hw.unk4BD8.cmd[0] = cmdpacket0(0x4BD8, 1); ALLOC_STATE(fpp, variable, R300_FPP_CMDSIZE, "fpp", 0); - r300->hw.fpp.cmd[R300_FPP_CMD_0] = - cmdpacket0(R300_PFS_PARAM_0_X, 0); + r300->hw.fpp.cmd[R300_FPP_CMD_0] = cmdpacket0(R300_PFS_PARAM_0_X, 0); ALLOC_STATE(unk4E00, always, 2, "unk4E00", 0); r300->hw.unk4E00.cmd[0] = cmdpacket0(0x4E00, 1); ALLOC_STATE(bld, always, R300_BLD_CMDSIZE, "bld", 0); r300->hw.bld.cmd[R300_BLD_CMD_0] = cmdpacket0(R300_RB3D_CBLEND, 2); ALLOC_STATE(cmk, always, R300_CMK_CMDSIZE, "cmk", 0); - r300->hw.cmk.cmd[R300_CMK_CMD_0] = - cmdpacket0(R300_RB3D_COLORMASK, 1); + r300->hw.cmk.cmd[R300_CMK_CMD_0] = cmdpacket0(R300_RB3D_COLORMASK, 1); ALLOC_STATE(blend_color, always, 4, "blend_color", 0); r300->hw.blend_color.cmd[0] = cmdpacket0(R300_RB3D_BLEND_COLOR, 3); ALLOC_STATE(cb, always, R300_CB_CMDSIZE, "cb", 0); - r300->hw.cb.cmd[R300_CB_CMD_0] = - cmdpacket0(R300_RB3D_COLOROFFSET0, 1); - r300->hw.cb.cmd[R300_CB_CMD_1] = - cmdpacket0(R300_RB3D_COLORPITCH0, 1); + r300->hw.cb.cmd[R300_CB_CMD_0] = cmdpacket0(R300_RB3D_COLOROFFSET0, 1); + r300->hw.cb.cmd[R300_CB_CMD_1] = cmdpacket0(R300_RB3D_COLORPITCH0, 1); ALLOC_STATE(unk4E50, always, 10, "unk4E50", 0); r300->hw.unk4E50.cmd[0] = cmdpacket0(0x4E50, 9); ALLOC_STATE(unk4E88, always, 2, "unk4E88", 0); @@ -439,8 +420,7 @@ void r300InitCmdBuf(r300ContextPtr r300) r300->hw.zstencil_format.cmd[0] = cmdpacket0(R300_RB3D_ZSTENCIL_FORMAT, 4); ALLOC_STATE(zb, always, R300_ZB_CMDSIZE, "zb", 0); - r300->hw.zb.cmd[R300_ZB_CMD_0] = - cmdpacket0(R300_RB3D_DEPTHOFFSET, 2); + r300->hw.zb.cmd[R300_ZB_CMD_0] = cmdpacket0(R300_RB3D_DEPTHOFFSET, 2); ALLOC_STATE(unk4F28, always, 2, "unk4F28", 0); r300->hw.unk4F28.cmd[0] = cmdpacket0(0x4F28, 1); ALLOC_STATE(unk4F30, always, 3, "unk4F30", 0); @@ -473,28 +453,24 @@ void r300InitCmdBuf(r300ContextPtr r300) cmdpacket0(R300_TX_FILTER1_0, 0); ALLOC_STATE(tex.size, variable, mtu + 1, "tex_size", 0); - r300->hw.tex.size.cmd[R300_TEX_CMD_0] = - cmdpacket0(R300_TX_SIZE_0, 0); + r300->hw.tex.size.cmd[R300_TEX_CMD_0] = cmdpacket0(R300_TX_SIZE_0, 0); ALLOC_STATE(tex.format, variable, mtu + 1, "tex_format", 0); r300->hw.tex.format.cmd[R300_TEX_CMD_0] = cmdpacket0(R300_TX_FORMAT_0, 0); ALLOC_STATE(tex.pitch, variable, mtu + 1, "tex_pitch", 0); - r300->hw.tex.pitch.cmd[R300_TEX_CMD_0] = - cmdpacket0(R300_TX_PITCH_0, 0); + r300->hw.tex.pitch.cmd[R300_TEX_CMD_0] = cmdpacket0(R300_TX_PITCH_0, 0); ALLOC_STATE(tex.offset, variable, mtu + 1, "tex_offset", 0); r300->hw.tex.offset.cmd[R300_TEX_CMD_0] = cmdpacket0(R300_TX_OFFSET_0, 0); - ALLOC_STATE(tex.chroma_key, variable, mtu + 1, "tex_chroma_key", - 0); + ALLOC_STATE(tex.chroma_key, variable, mtu + 1, "tex_chroma_key", 0); r300->hw.tex.chroma_key.cmd[R300_TEX_CMD_0] = cmdpacket0(R300_TX_CHROMA_KEY_0, 0); - ALLOC_STATE(tex.border_color, variable, mtu + 1, - "tex_border_color", 0); + ALLOC_STATE(tex.border_color, variable, mtu + 1, "tex_border_color", 0); r300->hw.tex.border_color.cmd[R300_TEX_CMD_0] = cmdpacket0(R300_TX_BORDER_COLOR_0, 0); @@ -650,8 +626,7 @@ void r300EmitBlit(r300ContextPtr rmesa, assert(w < (1 << 16)); assert(h < (1 << 16)); - cmd = (drm_r300_cmd_header_t *) r300AllocCmdBuf(rmesa, 8, - __FUNCTION__); + cmd = (drm_r300_cmd_header_t *) r300AllocCmdBuf(rmesa, 8, __FUNCTION__); cmd[0].header.cmd_type = R300_CMD_PACKET3; cmd[0].header.pad0 = R300_CMD_PACKET3_RAW; @@ -678,8 +653,7 @@ void r300EmitWait(r300ContextPtr rmesa, GLuint flags) assert(!(flags & ~(R300_WAIT_2D | R300_WAIT_3D))); - cmd = (drm_r300_cmd_header_t *) r300AllocCmdBuf(rmesa, 1, - __FUNCTION__); + cmd = (drm_r300_cmd_header_t *) r300AllocCmdBuf(rmesa, 1, __FUNCTION__); cmd[0].u = 0; cmd[0].wait.cmd_type = R300_CMD_WAIT; cmd[0].wait.flags = flags; diff --git a/src/mesa/drivers/dri/r300/r300_cmdbuf.h b/src/mesa/drivers/dri/r300/r300_cmdbuf.h index f4fec670bfc..9ef1cdbe622 100644 --- a/src/mesa/drivers/dri/r300/r300_cmdbuf.h +++ b/src/mesa/drivers/dri/r300/r300_cmdbuf.h @@ -52,8 +52,7 @@ extern void r300EmitAOS(r300ContextPtr rmesa, GLuint nr, GLuint offset); * by flushing if necessary. */ static __inline__ void r300EnsureCmdBufSpace(r300ContextPtr r300, - int dwords, - const char *caller) + int dwords, const char *caller) { assert(dwords < r300->cmdbuf.size); @@ -69,8 +68,7 @@ static __inline__ void r300EnsureCmdBufSpace(r300ContextPtr r300, * correct hardware state after an unlock. */ static __inline__ uint32_t *r300RawAllocCmdBuf(r300ContextPtr r300, - int dwords, - const char *caller) + int dwords, const char *caller) { uint32_t *ptr; @@ -91,8 +89,7 @@ static __inline__ uint32_t *r300AllocCmdBuf(r300ContextPtr r300, if (!r300->cmdbuf.count_used) { if (RADEON_DEBUG & DEBUG_IOCTL) fprintf(stderr, - "Reemit state after flush (from %s)\n", - caller); + "Reemit state after flush (from %s)\n", caller); r300EmitState(r300); } -- cgit v1.2.3 From 7b165de5f8a4c3d99b8b9f1820e12d5899b3884f Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 14:19:45 +0000 Subject: r300: Last of the indent changes. :) --- src/mesa/drivers/dri/r300/r300_emit.h | 12 ++++------ src/mesa/drivers/dri/r300/r300_fragprog.c | 2 +- src/mesa/drivers/dri/r300/r300_ioctl.c | 31 ++++++++----------------- src/mesa/drivers/dri/r300/r300_maos.c | 38 +++++++++++-------------------- src/mesa/drivers/dri/r300/r300_program.h | 6 ++--- src/mesa/drivers/dri/r300/r300_render.c | 9 +++----- src/mesa/drivers/dri/r300/r300_shader.c | 9 +++----- src/mesa/drivers/dri/r300/r300_texmem.c | 7 +++--- src/mesa/drivers/dri/r300/r300_vertprog.c | 3 +-- 9 files changed, 41 insertions(+), 76 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_emit.h b/src/mesa/drivers/dri/r300/r300_emit.h index cf428524d6f..8922d8c57d9 100644 --- a/src/mesa/drivers/dri/r300/r300_emit.h +++ b/src/mesa/drivers/dri/r300/r300_emit.h @@ -209,8 +209,7 @@ void static inline end_3d(r300ContextPtr rmesa) drm_radeon_cmd_header_t *cmd = NULL; cmd = - (drm_radeon_cmd_header_t *) r300AllocCmdBuf(rmesa, 1, - __FUNCTION__); + (drm_radeon_cmd_header_t *) r300AllocCmdBuf(rmesa, 1, __FUNCTION__); cmd[0].header.cmd_type = R300_CMD_END3D; } @@ -219,8 +218,7 @@ void static inline cp_delay(r300ContextPtr rmesa, unsigned short count) drm_radeon_cmd_header_t *cmd = NULL; cmd = - (drm_radeon_cmd_header_t *) r300AllocCmdBuf(rmesa, 1, - __FUNCTION__); + (drm_radeon_cmd_header_t *) r300AllocCmdBuf(rmesa, 1, __FUNCTION__); cmd[0].i = cmdcpdelay(count); } @@ -229,16 +227,14 @@ void static inline cp_wait(r300ContextPtr rmesa, unsigned char flags) drm_radeon_cmd_header_t *cmd = NULL; cmd = - (drm_radeon_cmd_header_t *) r300AllocCmdBuf(rmesa, 1, - __FUNCTION__); + (drm_radeon_cmd_header_t *) r300AllocCmdBuf(rmesa, 1, __FUNCTION__); cmd[0].i = cmdwait(flags); } /** * fire vertex buffer */ -static void inline -fire_AOS(r300ContextPtr rmesa, int vertex_count, int type) +static void inline fire_AOS(r300ContextPtr rmesa, int vertex_count, int type) { int cmd_reserved = 0; int cmd_written = 0; diff --git a/src/mesa/drivers/dri/r300/r300_fragprog.c b/src/mesa/drivers/dri/r300/r300_fragprog.c index 127aa12eb37..0efdf686f03 100644 --- a/src/mesa/drivers/dri/r300/r300_fragprog.c +++ b/src/mesa/drivers/dri/r300/r300_fragprog.c @@ -918,7 +918,7 @@ static void emit_tex(struct r300_fragment_program *rp, */ gl_state_index tokens[STATE_LENGTH] = { STATE_INTERNAL, STATE_R300_TEXRECT_FACTOR, 0, 0, - 0 + 0 }; int factor_index; GLuint factorreg; diff --git a/src/mesa/drivers/dri/r300/r300_ioctl.c b/src/mesa/drivers/dri/r300/r300_ioctl.c index 05fe5e2c904..884a7d49e45 100644 --- a/src/mesa/drivers/dri/r300/r300_ioctl.c +++ b/src/mesa/drivers/dri/r300/r300_ioctl.c @@ -127,8 +127,7 @@ static void r300ClearBuffer(r300ContextPtr r300, int flags, int buffer) if (flags & CLEARBUFFER_DEPTH) { t1 |= R300_RB3D_Z_WRITE_ONLY; t2 |= - (R300_ZS_ALWAYS << - R300_RB3D_ZS1_DEPTH_FUNC_SHIFT); + (R300_ZS_ALWAYS << R300_RB3D_ZS1_DEPTH_FUNC_SHIFT); } else { t1 |= R300_RB3D_Z_DISABLED_1; // disable } @@ -159,9 +158,7 @@ static void r300ClearBuffer(r300ContextPtr r300, int flags, int buffer) e32(r300->state.stencil.clear); } - cmd2 = - (drm_r300_cmd_header_t *) r300AllocCmdBuf(r300, 9, - __FUNCTION__); + cmd2 = (drm_r300_cmd_header_t *) r300AllocCmdBuf(r300, 9, __FUNCTION__); cmd2[0].packet3.cmd_type = R300_CMD_PACKET3; cmd2[0].packet3.packet = R300_CMD_PACKET3_CLEAR; cmd2[1].u = r300PackFloat32(dPriv->w / 2.0); @@ -297,8 +294,7 @@ static void r300EmitClearState(GLcontext * ctx) R300_STATECHANGE(r300, fpi[3]); reg_start(R300_PFS_INSTR0_0, 0); - e32(FP_INSTRC - (MAD, FP_ARGC(SRC0C_XYZ), FP_ARGC(ONE), FP_ARGC(ZERO))); + e32(FP_INSTRC(MAD, FP_ARGC(SRC0C_XYZ), FP_ARGC(ONE), FP_ARGC(ZERO))); reg_start(R300_PFS_INSTR1_0, 0); e32(FP_SELC(0, NO, XYZ, FP_TMP(0), 0, 0)); @@ -396,8 +392,7 @@ static void r300Clear(GLcontext * ctx, GLbitfield mask) } if (flags & BUFFER_BIT_BACK_LEFT) { - r300ClearBuffer(r300, bits | CLEARBUFFER_COLOR, - swapped ^ 1); + r300ClearBuffer(r300, bits | CLEARBUFFER_COLOR, swapped ^ 1); bits = 0; } @@ -433,8 +428,7 @@ static void r300RefillCurrentDmaRegion(r300ContextPtr rmesa, int size) } if (rmesa->dma.current.buf) - r300ReleaseDmaRegion(rmesa, &rmesa->dma.current, - __FUNCTION__); + r300ReleaseDmaRegion(rmesa, &rmesa->dma.current, __FUNCTION__); if (rmesa->dma.nr_released_bufs > 4) r300FlushCmdBuf(rmesa, __FUNCTION__); @@ -477,8 +471,7 @@ static void r300RefillCurrentDmaRegion(r300ContextPtr rmesa, int size) } void r300ReleaseDmaRegion(r300ContextPtr rmesa, - struct r300_dma_region *region, - const char *caller) + struct r300_dma_region *region, const char *caller) { if (RADEON_DEBUG & DEBUG_IOCTL) fprintf(stderr, "%s from %s\n", __FUNCTION__, caller); @@ -554,8 +547,7 @@ static void r300RefillCurrentDmaRegion(r300ContextPtr rmesa) } if (rmesa->dma.current.buf) - r300ReleaseDmaRegion(rmesa, &rmesa->dma.current, - __FUNCTION__); + r300ReleaseDmaRegion(rmesa, &rmesa->dma.current, __FUNCTION__); if (rmesa->dma.nr_released_bufs > 4) r300FlushCmdBuf(rmesa, __FUNCTION__); @@ -612,8 +604,7 @@ static void r300RefillCurrentDmaRegion(r300ContextPtr rmesa) } void r300ReleaseDmaRegion(r300ContextPtr rmesa, - struct r300_dma_region *region, - const char *caller) + struct r300_dma_region *region, const char *caller) { if (RADEON_DEBUG & DEBUG_IOCTL) fprintf(stderr, "%s from %s\n", __FUNCTION__, caller); @@ -723,8 +714,7 @@ GLboolean r300IsGartMemory(r300ContextPtr rmesa, const GLvoid * pointer, return valid; } -GLuint r300GartOffsetFromVirtual(r300ContextPtr rmesa, - const GLvoid * pointer) +GLuint r300GartOffsetFromVirtual(r300ContextPtr rmesa, const GLvoid * pointer) { int offset = (char *)pointer - @@ -736,8 +726,7 @@ GLuint r300GartOffsetFromVirtual(r300ContextPtr rmesa, || offset > rmesa->radeon.radeonScreen->gartTextures.size) return ~0; else - return rmesa->radeon.radeonScreen->gart_texture_offset + - offset; + return rmesa->radeon.radeonScreen->gart_texture_offset + offset; } void r300InitIoctlFuncs(struct dd_function_table *functions) diff --git a/src/mesa/drivers/dri/r300/r300_maos.c b/src/mesa/drivers/dri/r300/r300_maos.c index d3105e0d160..15bb41ddc0c 100644 --- a/src/mesa/drivers/dri/r300/r300_maos.c +++ b/src/mesa/drivers/dri/r300/r300_maos.c @@ -137,8 +137,7 @@ static void emit_vec12(GLcontext * ctx, if (RADEON_DEBUG & DEBUG_VERTS) fprintf(stderr, "%s count %d stride %d out %p data %p\n", - __FUNCTION__, count, stride, (void *)out, - (void *)data); + __FUNCTION__, count, stride, (void *)out, (void *)data); if (stride == 12) COPY_DWORDS(out, data, count * 3); @@ -233,8 +232,7 @@ void r300EmitElts(GLcontext * ctx, void *elts, unsigned long n_elts, assert(elt_size == 2 || elt_size == 4); if (r300IsGartMemory(rmesa, elts, n_elts * elt_size)) { - rvb->address = - rmesa->radeon.radeonScreen->gartTextures.map; + rvb->address = rmesa->radeon.radeonScreen->gartTextures.map; rvb->start = ((char *)elts) - rvb->address; rvb->aos_offset = rmesa->radeon.radeonScreen->gart_texture_offset + @@ -357,8 +355,7 @@ static GLuint t_vir1(uint32_t * dst, int swizzle[][4], GLuint nr) GLuint i; for (i = 0; i + 1 < nr; i += 2) { - dst[i >> 1] = - t_swizzle(swizzle[i]) | R300_INPUT_ROUTE_ENABLE; + dst[i >> 1] = t_swizzle(swizzle[i]) | R300_INPUT_ROUTE_ENABLE; dst[i >> 1] |= (t_swizzle(swizzle[i + 1]) | R300_INPUT_ROUTE_ENABLE) << 16; @@ -425,8 +422,7 @@ int r300EmitArrays(GLcontext * ctx) CURRENT_VERTEX_SHADER(ctx); inputs = prog->inputs; InputsRead = CURRENT_VERTEX_SHADER(ctx)->key.InputsRead; - OutputsWritten = - CURRENT_VERTEX_SHADER(ctx)->key.OutputsWritten; + OutputsWritten = CURRENT_VERTEX_SHADER(ctx)->key.OutputsWritten; } else { DECLARE_RENDERINPUTS(inputs_bitset); inputs = r300->state.sw_tcl_inputs; @@ -441,8 +437,7 @@ int r300EmitArrays(GLcontext * ctx) assert(RENDERINPUTS_TEST(inputs_bitset, _TNL_ATTRIB_NORMAL) == 0); - assert(RENDERINPUTS_TEST - (inputs_bitset, _TNL_ATTRIB_COLOR0)); + assert(RENDERINPUTS_TEST(inputs_bitset, _TNL_ATTRIB_COLOR0)); InputsRead |= 1 << VERT_ATTRIB_COLOR0; OutputsWritten |= 1 << VERT_RESULT_COL0; @@ -455,8 +450,7 @@ int r300EmitArrays(GLcontext * ctx) if (RENDERINPUTS_TEST (inputs_bitset, _TNL_ATTRIB_TEX(i))) { InputsRead |= 1 << (VERT_ATTRIB_TEX0 + i); - OutputsWritten |= - 1 << (VERT_RESULT_TEX0 + i); + OutputsWritten |= 1 << (VERT_RESULT_TEX0 + i); } for (i = 0, nr = 0; i < VERT_ATTRIB_MAX; i++) @@ -482,11 +476,9 @@ int r300EmitArrays(GLcontext * ctx) if (InputsRead & (1 << VERT_ATTRIB_COLOR1)) inputs[VERT_ATTRIB_COLOR1] = 3; - for (i = VERT_ATTRIB_TEX0; i <= VERT_ATTRIB_TEX7; - i++) + for (i = VERT_ATTRIB_TEX0; i <= VERT_ATTRIB_TEX7; i++) if (InputsRead & (1 << i)) - inputs[i] = - 6 + (i - VERT_ATTRIB_TEX0); + inputs[i] = 6 + (i - VERT_ATTRIB_TEX0); } RENDERINPUTS_COPY(rmesa->state.render_inputs_bitset, @@ -528,9 +520,8 @@ int r300EmitArrays(GLcontext * ctx) } #endif /* MESA_BIG_ENDIAN */ - if (r300IsGartMemory - (rmesa, VB->AttribPtr[tab[i]].data, - /*(count-1)*stride */ 4)) { + if (r300IsGartMemory(rmesa, VB->AttribPtr[tab[i]].data, + /*(count-1)*stride */ 4)) { if (VB->AttribPtr[tab[i]].stride % 4) return R300_FALLBACK_TCL; @@ -540,8 +531,7 @@ int r300EmitArrays(GLcontext * ctx) rmesa->state.aos[i].aos_offset = r300GartOffsetFromVirtual(rmesa, VB-> - AttribPtr[tab[i]]. - data); + AttribPtr[tab[i]].data); rmesa->state.aos[i].aos_stride = VB->AttribPtr[tab[i]].stride / 4; @@ -639,8 +629,7 @@ int r300EmitArrays(GLcontext * ctx) for (i = 0; i < ctx->Const.MaxTextureUnits; i++) if (OutputsWritten & (1 << (VERT_RESULT_TEX0 + i))) - r300->hw.vof.cmd[R300_VOF_CNTL_1] |= - (4 << (3 * i)); + r300->hw.vof.cmd[R300_VOF_CNTL_1] |= (4 << (3 * i)); rmesa->state.aos_count = nr; @@ -696,7 +685,6 @@ void r300ReleaseArrays(GLcontext * ctx) r300ReleaseDmaRegion(rmesa, &rmesa->state.elt_dma, __FUNCTION__); for (i = 0; i < rmesa->state.aos_count; i++) { - r300ReleaseDmaRegion(rmesa, &rmesa->state.aos[i], - __FUNCTION__); + r300ReleaseDmaRegion(rmesa, &rmesa->state.aos[i], __FUNCTION__); } } diff --git a/src/mesa/drivers/dri/r300/r300_program.h b/src/mesa/drivers/dri/r300/r300_program.h index 3210660df1c..eddd783f073 100644 --- a/src/mesa/drivers/dri/r300/r300_program.h +++ b/src/mesa/drivers/dri/r300/r300_program.h @@ -145,6 +145,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ((arg1) << R300_FPI2_ARG1A_SHIFT) | \ ((arg2) << R300_FPI2_ARG2A_SHIFT)) -extern void debug_vp(GLcontext *ctx, struct gl_vertex_program *vp); - -#endif /* __R300_PROGRAM_H__ */ +extern void debug_vp(GLcontext * ctx, struct gl_vertex_program *vp); + +#endif /* __R300_PROGRAM_H__ */ diff --git a/src/mesa/drivers/dri/r300/r300_render.c b/src/mesa/drivers/dri/r300/r300_render.c index be10a185875..6b8c908fb3b 100644 --- a/src/mesa/drivers/dri/r300/r300_render.c +++ b/src/mesa/drivers/dri/r300/r300_render.c @@ -73,8 +73,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. #include "r300_emit.h" extern int future_hw_tcl_on; -static int r300PrimitiveType(r300ContextPtr rmesa, GLcontext * ctx, - int prim) +static int r300PrimitiveType(r300ContextPtr rmesa, GLcontext * ctx, int prim) { int type = -1; @@ -309,8 +308,7 @@ static GLboolean r300RunRender(GLcontext * ctx, GLuint start = VB->Primitive[i].start; GLuint length = VB->Primitive[i].count; - r300RunRenderPrimitive(rmesa, ctx, start, start + length, - prim); + r300RunRenderPrimitive(rmesa, ctx, start, start + length, prim); } reg_start(R300_RB3D_DSTCACHE_CTLSTAT, 0); @@ -359,8 +357,7 @@ int r300Fallback(GLcontext * ctx) FALLBACK_IF(ctx->Color.ColorLogicOpEnabled); - if (ctx->Extensions.NV_point_sprite - || ctx->Extensions.ARB_point_sprite) + if (ctx->Extensions.NV_point_sprite || ctx->Extensions.ARB_point_sprite) FALLBACK_IF(ctx->Point.PointSprite); if (!r300->disable_lowimpact_fallback) { diff --git a/src/mesa/drivers/dri/r300/r300_shader.c b/src/mesa/drivers/dri/r300/r300_shader.c index 9f300e0d95b..0953d32e3d6 100644 --- a/src/mesa/drivers/dri/r300/r300_shader.c +++ b/src/mesa/drivers/dri/r300/r300_shader.c @@ -54,12 +54,10 @@ static void r300DeleteProgram(GLcontext * ctx, struct gl_program *prog) } static void -r300ProgramStringNotify(GLcontext * ctx, GLenum target, - struct gl_program *prog) +r300ProgramStringNotify(GLcontext * ctx, GLenum target, struct gl_program *prog) { struct r300_vertex_program_cont *vp = (void *)prog; - struct r300_fragment_program *fp = - (struct r300_fragment_program *)prog; + struct r300_fragment_program *fp = (struct r300_fragment_program *)prog; switch (target) { case GL_VERTEX_PROGRAM_ARB: @@ -77,8 +75,7 @@ r300ProgramStringNotify(GLcontext * ctx, GLenum target, } static GLboolean -r300IsProgramNative(GLcontext * ctx, GLenum target, - struct gl_program *prog) +r300IsProgramNative(GLcontext * ctx, GLenum target, struct gl_program *prog) { return 1; } diff --git a/src/mesa/drivers/dri/r300/r300_texmem.c b/src/mesa/drivers/dri/r300/r300_texmem.c index 221dda41b0e..2c8740bff76 100644 --- a/src/mesa/drivers/dri/r300/r300_texmem.c +++ b/src/mesa/drivers/dri/r300/r300_texmem.c @@ -441,10 +441,9 @@ static void uploadSubImage(r300ContextPtr rmesa, r300TexObjPtr t, #if 1 if ((t->tile_bits & R300_TXO_MACRO_TILE) && (texImage->Width * texImage->TexFormat->TexelBytes >= 256) - && - ((!(t->tile_bits & R300_TXO_MICRO_TILE) - && (texImage->Height >= 8)) - || (texImage->Height >= 16))) { + && ((!(t->tile_bits & R300_TXO_MICRO_TILE) + && (texImage->Height >= 8)) + || (texImage->Height >= 16))) { /* weird: R200 disables macro tiling if mip width is smaller than 256 bytes, OR if height is smaller than 8 automatically, but if micro tiling is active the limit is height 16 instead ? */ diff --git a/src/mesa/drivers/dri/r300/r300_vertprog.c b/src/mesa/drivers/dri/r300/r300_vertprog.c index 4d0c9c27190..3e664e933ef 100644 --- a/src/mesa/drivers/dri/r300/r300_vertprog.c +++ b/src/mesa/drivers/dri/r300/r300_vertprog.c @@ -1215,8 +1215,7 @@ static void pos_as_texcoord(struct r300_vertex_program *vp, } static struct r300_vertex_program *build_program(struct r300_vertex_program_key - *wanted_key, - struct gl_vertex_program + *wanted_key, struct gl_vertex_program *mesa_vp, GLint wpos_idx) { struct r300_vertex_program *vp; -- cgit v1.2.3 From faf47d9f84d4089e49917bc9a0f7836d3d26436c Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 14:45:42 +0000 Subject: r300: Added a "not implemented yet" comment back. --- src/mesa/drivers/dri/r300/r300_render.c | 1 + 1 file changed, 1 insertion(+) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_render.c b/src/mesa/drivers/dri/r300/r300_render.c index 6b8c908fb3b..c0ce8c0ca22 100644 --- a/src/mesa/drivers/dri/r300/r300_render.c +++ b/src/mesa/drivers/dri/r300/r300_render.c @@ -258,6 +258,7 @@ static void r300RunRenderPrimitive(r300ContextPtr rmesa, GLcontext * ctx, if (rmesa->state.VB.Elts) { r300EmitAOS(rmesa, rmesa->state.aos_count, start); if (num_verts > 65535) { + /* not implemented yet */ WARN_ONCE("Too many elts\n"); return; } -- cgit v1.2.3 From fe6a2c4295a138160088fb29a9d89a5d9b8c522a Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 15:07:34 +0000 Subject: r300: Changed r300_run_vb_render calls to r300RunRender in some conditionally disabled code. --- src/mesa/drivers/dri/r300/r300_context.h | 4 ++-- src/mesa/drivers/dri/r300/radeon_vtxfmt_a.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_context.h b/src/mesa/drivers/dri/r300/r300_context.h index 4cc3352ab0f..b7d2552b189 100644 --- a/src/mesa/drivers/dri/r300/r300_context.h +++ b/src/mesa/drivers/dri/r300/r300_context.h @@ -914,8 +914,8 @@ extern int r300Fallback(GLcontext * ctx); extern void radeon_vb_to_rvb(r300ContextPtr rmesa, struct radeon_vertex_buffer *rvb, struct vertex_buffer *vb); -extern GLboolean r300_run_vb_render(GLcontext * ctx, - struct tnl_pipeline_stage *stage); +extern GLboolean r300RunRender(GLcontext * ctx, + struct tnl_pipeline_stage *stage); #ifdef RADEON_VTXFMT_A extern void radeon_init_vtxfmt_a(r300ContextPtr rmesa); diff --git a/src/mesa/drivers/dri/r300/radeon_vtxfmt_a.c b/src/mesa/drivers/dri/r300/radeon_vtxfmt_a.c index a15a17d1d33..bdd731fdf59 100644 --- a/src/mesa/drivers/dri/r300/radeon_vtxfmt_a.c +++ b/src/mesa/drivers/dri/r300/radeon_vtxfmt_a.c @@ -337,7 +337,7 @@ static void radeonDrawRangeElements(GLcontext *ctx, rmesa->state.VB.elt_min = min; rmesa->state.VB.elt_max = max; - if (r300_run_vb_render(ctx, NULL)) { + if (r300RunRender(ctx, NULL)) { r300ReleaseDmaRegion(rmesa, &rvb, __FUNCTION__); return GL_FALSE; } @@ -398,7 +398,7 @@ static GLboolean radeonDrawArrays( GLcontext *ctx, rmesa->state.VB.elt_min = 0; rmesa->state.VB.elt_max = 0; - if (r300_run_vb_render(ctx, NULL)) + if (r300RunRender(ctx, NULL)) return GL_FALSE; return GL_TRUE; -- cgit v1.2.3 From d28f6d91760374e2eb71b541b0f259f81dd73c69 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 15:19:05 +0000 Subject: r300: Fixed some more function names. Note there might be some calls to the old function names in conditionally disabled code, but I think I've got them all. --- src/mesa/drivers/dri/r300/r300_cmdbuf.c | 4 ++-- src/mesa/drivers/dri/r300/r300_context.h | 4 ++-- src/mesa/drivers/dri/r300/r300_fragprog.c | 2 +- src/mesa/drivers/dri/r300/r300_fragprog.h | 2 +- src/mesa/drivers/dri/r300/r300_render.c | 2 +- src/mesa/drivers/dri/r300/r300_shader.c | 2 +- src/mesa/drivers/dri/r300/r300_state.c | 30 ++++++++++++++--------------- src/mesa/drivers/dri/r300/r300_state.h | 6 ++---- src/mesa/drivers/dri/r300/r300_vertprog.c | 6 +++--- src/mesa/drivers/dri/r300/radeon_vtxfmt_a.c | 2 +- 10 files changed, 29 insertions(+), 31 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_cmdbuf.c b/src/mesa/drivers/dri/r300/r300_cmdbuf.c index 37cb508d723..369dc0b366b 100644 --- a/src/mesa/drivers/dri/r300/r300_cmdbuf.c +++ b/src/mesa/drivers/dri/r300/r300_cmdbuf.c @@ -127,7 +127,7 @@ int r300FlushCmdBuf(r300ContextPtr r300, const char *caller) return ret; } -void r300_print_state_atom(r300ContextPtr r300, struct r300_state_atom *state) +void r300PrintStateAtom(r300ContextPtr r300, struct r300_state_atom *state) { int i; int dwords = (*state->check) (r300, state); @@ -160,7 +160,7 @@ static __inline__ void r300DoEmitState(r300ContextPtr r300, GLboolean dirty) int dwords = (*atom->check) (r300, atom); if (dwords) - r300_print_state_atom(r300, atom); + r300PrintStateAtom(r300, atom); else fprintf(stderr, " skip state %s\n", diff --git a/src/mesa/drivers/dri/r300/r300_context.h b/src/mesa/drivers/dri/r300/r300_context.h index b7d2552b189..31ce210f8de 100644 --- a/src/mesa/drivers/dri/r300/r300_context.h +++ b/src/mesa/drivers/dri/r300/r300_context.h @@ -902,9 +902,9 @@ extern GLboolean r300CreateContext(const __GLcontextModes * glVisual, __DRIcontextPrivate * driContextPriv, void *sharedContextPrivate); -extern int r300_get_num_verts(r300ContextPtr rmesa, int num_verts, int prim); +extern int r300NumVerts(r300ContextPtr rmesa, int num_verts, int prim); -extern void r300_select_vertex_shader(r300ContextPtr r300); +extern void r300SelectVertexShader(r300ContextPtr r300); extern void r300InitShaderFuncs(struct dd_function_table *functions); extern int r300VertexProgUpdateParams(GLcontext * ctx, struct r300_vertex_program_cont *vp, diff --git a/src/mesa/drivers/dri/r300/r300_fragprog.c b/src/mesa/drivers/dri/r300/r300_fragprog.c index 0efdf686f03..7a82dc4ba1b 100644 --- a/src/mesa/drivers/dri/r300/r300_fragprog.c +++ b/src/mesa/drivers/dri/r300/r300_fragprog.c @@ -2209,7 +2209,7 @@ static void update_params(struct r300_fragment_program *rp) _mesa_load_state_parameters(rp->ctx, mp->Base.Parameters); } -void r300_translate_fragment_shader(r300ContextPtr r300, +void r300TranslateFragmentShader(r300ContextPtr r300, struct r300_fragment_program *rp) { struct r300_pfs_compile_state *cs = NULL; diff --git a/src/mesa/drivers/dri/r300/r300_fragprog.h b/src/mesa/drivers/dri/r300/r300_fragprog.h index 79f3e70fa63..218a3c965da 100644 --- a/src/mesa/drivers/dri/r300/r300_fragprog.h +++ b/src/mesa/drivers/dri/r300/r300_fragprog.h @@ -98,7 +98,7 @@ typedef struct r300_fragment_program_swizzle { struct r300_fragment_program; -extern void r300_translate_fragment_shader(r300ContextPtr r300, +extern void r300TranslateFragmentShader(r300ContextPtr r300, struct r300_fragment_program *rp); #endif diff --git a/src/mesa/drivers/dri/r300/r300_render.c b/src/mesa/drivers/dri/r300/r300_render.c index c0ce8c0ca22..a4b8be25bd5 100644 --- a/src/mesa/drivers/dri/r300/r300_render.c +++ b/src/mesa/drivers/dri/r300/r300_render.c @@ -343,7 +343,7 @@ int r300Fallback(GLcontext * ctx) if (fp) { if (!fp->translated) - r300_translate_fragment_shader(r300, fp); + r300TranslateFragmentShader(r300, fp); FALLBACK_IF(!fp->translated); } diff --git a/src/mesa/drivers/dri/r300/r300_shader.c b/src/mesa/drivers/dri/r300/r300_shader.c index 0953d32e3d6..f54a4f9f474 100644 --- a/src/mesa/drivers/dri/r300/r300_shader.c +++ b/src/mesa/drivers/dri/r300/r300_shader.c @@ -64,7 +64,7 @@ r300ProgramStringNotify(GLcontext * ctx, GLenum target, struct gl_program *prog) vp->progs = NULL; /*vp->translated = GL_FALSE; memset(&vp->translated, 0, sizeof(struct r300_vertex_program) - sizeof(struct gl_vertex_program)); */ - /*r300_translate_vertex_shader(vp); */ + /*r300TranslateVertexShader(vp); */ break; case GL_FRAGMENT_PROGRAM_ARB: fp->translated = GL_FALSE; diff --git a/src/mesa/drivers/dri/r300/r300_state.c b/src/mesa/drivers/dri/r300/r300_state.c index 2d5b10d3ce2..5a7ba8d0f0a 100644 --- a/src/mesa/drivers/dri/r300/r300_state.c +++ b/src/mesa/drivers/dri/r300/r300_state.c @@ -166,7 +166,7 @@ static int blend_factor(GLenum factor, GLboolean is_src) */ /* helper function */ -static void r300_set_blend_cntl(r300ContextPtr r300, int func, int eqn, +static void r300SetBlendCntl(r300ContextPtr r300, int func, int eqn, int cbits, int funcA, int eqnA) { GLuint new_ablend, new_cblend; @@ -200,7 +200,7 @@ static void r300_set_blend_cntl(r300ContextPtr r300, int func, int eqn, } } -static void r300_set_blend_state(GLcontext * ctx) +static void r300SetBlendState(GLcontext * ctx) { r300ContextPtr r300 = R300_CONTEXT(ctx); int func = (R300_BLEND_GL_ONE << R300_SRC_BLEND_SHIFT) | @@ -211,7 +211,7 @@ static void r300_set_blend_state(GLcontext * ctx) int eqnA = R300_COMB_FCN_ADD_CLAMP; if (RGBA_LOGICOP_ENABLED(ctx) || !ctx->Color.BlendEnabled) { - r300_set_blend_cntl(r300, func, eqn, 0, func, eqn); + r300SetBlendCntl(r300, func, eqn, 0, func, eqn); return; } @@ -291,7 +291,7 @@ static void r300_set_blend_state(GLcontext * ctx) return; } - r300_set_blend_cntl(r300, + r300SetBlendCntl(r300, func, eqn, R300_BLEND_UNKNOWN | R300_BLEND_ENABLE, funcA, eqnA); @@ -300,14 +300,14 @@ static void r300_set_blend_state(GLcontext * ctx) static void r300BlendEquationSeparate(GLcontext * ctx, GLenum modeRGB, GLenum modeA) { - r300_set_blend_state(ctx); + r300SetBlendState(ctx); } static void r300BlendFuncSeparate(GLcontext * ctx, GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorA, GLenum dfactorA) { - r300_set_blend_state(ctx); + r300SetBlendState(ctx); } /** @@ -510,7 +510,7 @@ static void r300Enable(GLcontext * ctx, GLenum cap, GLboolean state) case GL_BLEND: case GL_COLOR_LOGIC_OP: - r300_set_blend_state(ctx); + r300SetBlendState(ctx); break; case GL_DEPTH_TEST: @@ -1280,7 +1280,7 @@ static unsigned long gen_fixed_filter(unsigned long f) return f; } -void r300_setup_textures(GLcontext * ctx) +static void r300SetupTextures(GLcontext * ctx) { int i, mtu; struct r300_tex_obj *t; @@ -1442,7 +1442,7 @@ union r300_outputs_written { ((hw_tcl_on) ? (ow).vp_outputs & (1 << (vp_result)) : \ RENDERINPUTS_TEST( (ow.index_bitset), (tnl_attrib) )) -void r300_setup_rs_unit(GLcontext * ctx) +void r300SetupRSUnit(GLcontext * ctx) { r300ContextPtr r300 = R300_CONTEXT(ctx); /* I'm still unsure if these are needed */ @@ -1844,11 +1844,11 @@ void r300UpdateShaders(r300ContextPtr rmesa) rmesa->temp_attrib[i]; } - r300_select_vertex_shader(rmesa); + r300SelectVertexShader(rmesa); vp = (struct r300_vertex_program *) CURRENT_VERTEX_SHADER(ctx); /*if (vp->translated == GL_FALSE) - r300_translate_vertex_shader(vp); */ + r300TranslateVertexShader(vp); */ if (vp->translated == GL_FALSE) { fprintf(stderr, "Failing back to sw-tcl\n"); hw_tcl_on = future_hw_tcl_on = 0; @@ -1869,11 +1869,11 @@ void r300UpdateShaderStates(r300ContextPtr rmesa) r300UpdateTextureState(ctx); r300SetupPixelShader(rmesa); - r300_setup_textures(ctx); + r300SetupTextures(ctx); if ((rmesa->radeon.radeonScreen->chip_flags & RADEON_CHIPSET_TCL)) r300SetupVertexShader(rmesa); - r300_setup_rs_unit(ctx); + r300SetupRSUnit(ctx); } /* This is probably wrong for some values, I need to test this @@ -1917,7 +1917,7 @@ void r300SetupPixelShader(r300ContextPtr rmesa) if (!rp) /* should only happenen once, just after context is created */ return; - r300_translate_fragment_shader(rmesa, rp); + r300TranslateFragmentShader(rmesa, rp); if (!rp->translated) { fprintf(stderr, "%s: No valid fragment shader, exiting\n", __func__); @@ -2051,7 +2051,7 @@ void r300ResetHwState(r300ContextPtr r300) r300UpdateTextureState(ctx); - r300_set_blend_state(ctx); + r300SetBlendState(ctx); r300AlphaFunc(ctx, ctx->Color.AlphaFunc, ctx->Color.AlphaRef); r300Enable(ctx, GL_ALPHA_TEST, ctx->Color.AlphaEnabled); diff --git a/src/mesa/drivers/dri/r300/r300_state.h b/src/mesa/drivers/dri/r300/r300_state.h index 59e6baec921..00323cd834e 100644 --- a/src/mesa/drivers/dri/r300/r300_state.h +++ b/src/mesa/drivers/dri/r300/r300_state.h @@ -44,7 +44,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. } while(0) #define R300_PRINT_STATE(r300, atom) \ - r300_print_state_atom(r300, &r300->hw.atom) + r300PrintStateAtom(r300, &r300->hw.atom) /* Fire the buffered vertices no matter what. TODO: This has not been implemented yet @@ -69,12 +69,10 @@ extern void r300UpdateDrawBuffer(GLcontext * ctx); extern void r300SetupVertexShader(r300ContextPtr rmesa); extern void r300SetupPixelShader(r300ContextPtr rmesa); -extern void r300_setup_textures(GLcontext * ctx); -extern void r300_setup_rs_unit(GLcontext * ctx); extern void r300UpdateShaders(r300ContextPtr rmesa); extern void r300UpdateShaderStates(r300ContextPtr rmesa); -extern void r300_print_state_atom(r300ContextPtr r300, +extern void r300PrintStateAtom(r300ContextPtr r300, struct r300_state_atom *state); #endif /* __R300_STATE_H__ */ diff --git a/src/mesa/drivers/dri/r300/r300_vertprog.c b/src/mesa/drivers/dri/r300/r300_vertprog.c index 3e664e933ef..b0a7a66137e 100644 --- a/src/mesa/drivers/dri/r300/r300_vertprog.c +++ b/src/mesa/drivers/dri/r300/r300_vertprog.c @@ -410,7 +410,7 @@ static GLboolean valid_dst(struct r300_vertex_program *vp, u_temp_i=VSF_MAX_FRAGMENT_TEMPS-1; \ } while (0) -static void r300_translate_vertex_shader(struct r300_vertex_program *vp, +static void r300TranslateVertexShader(struct r300_vertex_program *vp, struct prog_instruction *vpi) { int i, cur_reg = 0; @@ -1236,12 +1236,12 @@ static struct r300_vertex_program *build_program(struct r300_vertex_program_key vp->num_temporaries = mesa_vp->Base.NumTemporaries; - r300_translate_vertex_shader(vp, mesa_vp->Base.Instructions); + r300TranslateVertexShader(vp, mesa_vp->Base.Instructions); return vp; } -void r300_select_vertex_shader(r300ContextPtr r300) +void r300SelectVertexShader(r300ContextPtr r300) { GLcontext *ctx = ctx = r300->radeon.glCtx; GLuint InputsRead; diff --git a/src/mesa/drivers/dri/r300/radeon_vtxfmt_a.c b/src/mesa/drivers/dri/r300/radeon_vtxfmt_a.c index bdd731fdf59..f9c4e2db0c9 100644 --- a/src/mesa/drivers/dri/r300/radeon_vtxfmt_a.c +++ b/src/mesa/drivers/dri/r300/radeon_vtxfmt_a.c @@ -205,7 +205,7 @@ static void radeonDrawRangeElements(GLcontext *ctx, mode == GL_TRIANGLES) { while (count) { - i = r300_get_num_verts(rmesa, MIN2(count, 65535), mode); + i = r300NumVerts(rmesa, MIN2(count, 65535), mode); radeonDrawRangeElements(mode, min, max, i, type, indices); -- cgit v1.2.3 From 4f20fe8a930007ca8fd5ddaf3969902fa60a7714 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 15:21:13 +0000 Subject: r300: Added R300_PRIM_NUM_VERTICES_MASK suggested by Jerome Glisse. --- src/mesa/drivers/dri/r300/r300_reg.h | 1 + 1 file changed, 1 insertion(+) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_reg.h b/src/mesa/drivers/dri/r300/r300_reg.h index 3754a5be395..8131478e548 100644 --- a/src/mesa/drivers/dri/r300/r300_reg.h +++ b/src/mesa/drivers/dri/r300/r300_reg.h @@ -1555,6 +1555,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. #define R300_PRIM_COLOR_ORDER_BGRA (0 << 6) #define R300_PRIM_COLOR_ORDER_RGBA (1 << 6) #define R300_PRIM_NUM_VERTICES_SHIFT 16 +#define R300_PRIM_NUM_VERTICES_MASK 0xffff /* Draw a primitive from vertex data in arrays loaded via 3D_LOAD_VBPNTR. * Two parameter dwords: -- cgit v1.2.3 From c48e4c6f09e4951a871163537a1e2117116e620b Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 15:28:38 +0000 Subject: r300: Fixed indenting from previous commit d28f6d91760374e2eb71b541b0f259f81dd73c69. --- src/mesa/drivers/dri/r300/r300_fragprog.c | 2 +- src/mesa/drivers/dri/r300/r300_fragprog.h | 2 +- src/mesa/drivers/dri/r300/r300_state.c | 7 +++---- src/mesa/drivers/dri/r300/r300_state.h | 2 +- src/mesa/drivers/dri/r300/r300_vertprog.c | 2 +- 5 files changed, 7 insertions(+), 8 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_fragprog.c b/src/mesa/drivers/dri/r300/r300_fragprog.c index 7a82dc4ba1b..53866414f93 100644 --- a/src/mesa/drivers/dri/r300/r300_fragprog.c +++ b/src/mesa/drivers/dri/r300/r300_fragprog.c @@ -2210,7 +2210,7 @@ static void update_params(struct r300_fragment_program *rp) } void r300TranslateFragmentShader(r300ContextPtr r300, - struct r300_fragment_program *rp) + struct r300_fragment_program *rp) { struct r300_pfs_compile_state *cs = NULL; diff --git a/src/mesa/drivers/dri/r300/r300_fragprog.h b/src/mesa/drivers/dri/r300/r300_fragprog.h index 218a3c965da..b92312aef09 100644 --- a/src/mesa/drivers/dri/r300/r300_fragprog.h +++ b/src/mesa/drivers/dri/r300/r300_fragprog.h @@ -99,6 +99,6 @@ typedef struct r300_fragment_program_swizzle { struct r300_fragment_program; extern void r300TranslateFragmentShader(r300ContextPtr r300, - struct r300_fragment_program *rp); + struct r300_fragment_program *rp); #endif diff --git a/src/mesa/drivers/dri/r300/r300_state.c b/src/mesa/drivers/dri/r300/r300_state.c index 5a7ba8d0f0a..af4326ed7e5 100644 --- a/src/mesa/drivers/dri/r300/r300_state.c +++ b/src/mesa/drivers/dri/r300/r300_state.c @@ -167,7 +167,7 @@ static int blend_factor(GLenum factor, GLboolean is_src) /* helper function */ static void r300SetBlendCntl(r300ContextPtr r300, int func, int eqn, - int cbits, int funcA, int eqnA) + int cbits, int funcA, int eqnA) { GLuint new_ablend, new_cblend; @@ -292,9 +292,8 @@ static void r300SetBlendState(GLcontext * ctx) } r300SetBlendCntl(r300, - func, eqn, - R300_BLEND_UNKNOWN | R300_BLEND_ENABLE, funcA, - eqnA); + func, eqn, + R300_BLEND_UNKNOWN | R300_BLEND_ENABLE, funcA, eqnA); } static void r300BlendEquationSeparate(GLcontext * ctx, diff --git a/src/mesa/drivers/dri/r300/r300_state.h b/src/mesa/drivers/dri/r300/r300_state.h index 00323cd834e..3b9d8e74041 100644 --- a/src/mesa/drivers/dri/r300/r300_state.h +++ b/src/mesa/drivers/dri/r300/r300_state.h @@ -73,6 +73,6 @@ extern void r300UpdateShaders(r300ContextPtr rmesa); extern void r300UpdateShaderStates(r300ContextPtr rmesa); extern void r300PrintStateAtom(r300ContextPtr r300, - struct r300_state_atom *state); + struct r300_state_atom *state); #endif /* __R300_STATE_H__ */ diff --git a/src/mesa/drivers/dri/r300/r300_vertprog.c b/src/mesa/drivers/dri/r300/r300_vertprog.c index b0a7a66137e..8b1143758e8 100644 --- a/src/mesa/drivers/dri/r300/r300_vertprog.c +++ b/src/mesa/drivers/dri/r300/r300_vertprog.c @@ -411,7 +411,7 @@ static GLboolean valid_dst(struct r300_vertex_program *vp, } while (0) static void r300TranslateVertexShader(struct r300_vertex_program *vp, - struct prog_instruction *vpi) + struct prog_instruction *vpi) { int i, cur_reg = 0; VERTEX_SHADER_INSTRUCTION *o_inst; -- cgit v1.2.3 From 7e7b1f7c4d928e433e60d0d115dcf21a740db57c Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 15:38:18 +0000 Subject: r300: Fix a couple of static errors. --- src/mesa/drivers/dri/r300/r300_render.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_render.c b/src/mesa/drivers/dri/r300/r300_render.c index a4b8be25bd5..665b7dc29d9 100644 --- a/src/mesa/drivers/dri/r300/r300_render.c +++ b/src/mesa/drivers/dri/r300/r300_render.c @@ -118,7 +118,7 @@ static int r300PrimitiveType(r300ContextPtr rmesa, GLcontext * ctx, int prim) return type; } -static int r300NumVerts(r300ContextPtr rmesa, int num_verts, int prim) +int r300NumVerts(r300ContextPtr rmesa, int num_verts, int prim) { int verts_off = 0; @@ -272,7 +272,7 @@ static void r300RunRenderPrimitive(r300ContextPtr rmesa, GLcontext * ctx, } } -static GLboolean r300RunRender(GLcontext * ctx, +GLboolean r300RunRender(GLcontext * ctx, struct tnl_pipeline_stage *stage) { r300ContextPtr rmesa = R300_CONTEXT(ctx); -- cgit v1.2.3 From 4ed59c6012490e83622057bd16075070fdc49d7f Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 15:57:30 +0000 Subject: r300: The empty check_space doesn't and never has done anything; removed it. --- src/mesa/drivers/dri/r300/r300_emit.h | 5 ----- src/mesa/drivers/dri/r300/r300_render.c | 2 -- 2 files changed, 7 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_emit.h b/src/mesa/drivers/dri/r300/r300_emit.h index 8922d8c57d9..bccb84933ad 100644 --- a/src/mesa/drivers/dri/r300/r300_emit.h +++ b/src/mesa/drivers/dri/r300/r300_emit.h @@ -59,10 +59,6 @@ #define CP_PACKET0(reg, n) (RADEON_CP_PACKET0 | ((n)<<16) | ((reg)>>2)) -void static inline check_space(int dwords) -{ -} - static __inline__ uint32_t cmdpacket0(int reg, int count) { drm_r300_cmd_header_t cmd; @@ -239,7 +235,6 @@ static void inline fire_AOS(r300ContextPtr rmesa, int vertex_count, int type) int cmd_reserved = 0; int cmd_written = 0; drm_radeon_cmd_header_t *cmd = NULL; - check_space(9); start_packet3(RADEON_CP_PACKET3_3D_DRAW_VBUF_2, 0); e32(R300_VAP_VF_CNTL__PRIM_WALK_VERTEX_LIST | (vertex_count << 16) diff --git a/src/mesa/drivers/dri/r300/r300_render.c b/src/mesa/drivers/dri/r300/r300_render.c index 665b7dc29d9..87990247457 100644 --- a/src/mesa/drivers/dri/r300/r300_render.c +++ b/src/mesa/drivers/dri/r300/r300_render.c @@ -207,8 +207,6 @@ static void inline r300FireEB(r300ContextPtr rmesa, unsigned long addr, t_addr = addr & ~0x1d; magic_2 = (vertex_count + 1 + (t_addr & 0x2)) / 2 + magic_1; - check_space(6); - start_packet3(RADEON_CP_PACKET3_3D_DRAW_INDX_2, 0); if (elt_size == 4) { e32(R300_VAP_VF_CNTL__PRIM_WALK_INDICES | -- cgit v1.2.3 From 2b5ef29a7b90724c47454547acd387f0629fdd1b Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 16:10:08 +0000 Subject: r300: Removed the deprecated VTXFMT code. This was okayed by Jerome Glisse and Keith Whitwell on the dri-devel IRC channel and list, respectively. --- src/mesa/drivers/dri/r300/Makefile | 1 - src/mesa/drivers/dri/r300/r300_context.c | 10 +- src/mesa/drivers/dri/r300/r300_context.h | 19 - src/mesa/drivers/dri/r300/r300_ioctl.c | 8 - src/mesa/drivers/dri/r300/r300_maos.c | 26 -- src/mesa/drivers/dri/r300/r300_render.c | 44 ++ src/mesa/drivers/dri/r300/r300_state.c | 4 - src/mesa/drivers/dri/r300/radeon_vtxfmt_a.c | 662 ---------------------------- 8 files changed, 45 insertions(+), 729 deletions(-) delete mode 100644 src/mesa/drivers/dri/r300/radeon_vtxfmt_a.c (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/Makefile b/src/mesa/drivers/dri/r300/Makefile index 65a6b03b741..cd05927e5e3 100644 --- a/src/mesa/drivers/dri/r300/Makefile +++ b/src/mesa/drivers/dri/r300/Makefile @@ -28,7 +28,6 @@ DRIVER_SOURCES = \ radeon_span.c \ radeon_state.c \ radeon_mm.c \ - radeon_vtxfmt_a.c \ \ r300_context.c \ r300_ioctl.c \ diff --git a/src/mesa/drivers/dri/r300/r300_context.c b/src/mesa/drivers/dri/r300/r300_context.c index 4092ebe0101..12308af45fd 100644 --- a/src/mesa/drivers/dri/r300/r300_context.c +++ b/src/mesa/drivers/dri/r300/r300_context.c @@ -214,11 +214,7 @@ GLboolean r300CreateContext(const __GLcontextModes * glVisual, #ifdef USER_BUFFERS radeon_mm_init(r300); #endif -#ifdef HW_VBOS - if (hw_tcl_on) { - r300InitVBOFuncs(&functions); - } -#endif + if (!radeonInitContext(&r300->radeon, &functions, glVisual, driContextPriv, sharedContextPrivate)) { @@ -367,10 +363,6 @@ GLboolean r300CreateContext(const __GLcontextModes * glVisual, r300InitCmdBuf(r300); r300InitState(r300); -#ifdef RADEON_VTXFMT_A - radeon_init_vtxfmt_a(r300); -#endif - TNL_CONTEXT(ctx)->Driver.RunPipeline = _tnl_run_pipeline; tcl_mode = driQueryOptioni(&r300->radeon.optionCache, "tcl_mode"); diff --git a/src/mesa/drivers/dri/r300/r300_context.h b/src/mesa/drivers/dri/r300/r300_context.h index 31ce210f8de..9bda2409bd0 100644 --- a/src/mesa/drivers/dri/r300/r300_context.h +++ b/src/mesa/drivers/dri/r300/r300_context.h @@ -48,13 +48,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "radeon_context.h" #define USER_BUFFERS -/* KW: Disable this code. Driver should hook into vbo module - * directly, see i965 driver for example. - */ -/* #define RADEON_VTXFMT_A */ -#ifdef RADEON_VTXFMT_A -#define HW_VBOS -#endif /* We don't handle 16 bits elts swapping yet */ #ifdef MESA_BIG_ENDIAN @@ -911,21 +904,9 @@ extern int r300VertexProgUpdateParams(GLcontext * ctx, float *dst); extern int r300Fallback(GLcontext * ctx); -extern void radeon_vb_to_rvb(r300ContextPtr rmesa, - struct radeon_vertex_buffer *rvb, - struct vertex_buffer *vb); extern GLboolean r300RunRender(GLcontext * ctx, struct tnl_pipeline_stage *stage); -#ifdef RADEON_VTXFMT_A -extern void radeon_init_vtxfmt_a(r300ContextPtr rmesa); -#endif - -#ifdef HW_VBOS -extern void r300InitVBOFuncs(struct dd_function_table *functions); -extern void r300EvictVBOs(GLcontext * ctx, int amount); -#endif - #define RADEON_D_CAPTURE 0 #define RADEON_D_PLAYBACK 1 #define RADEON_D_PLAYBACK_RAW 2 diff --git a/src/mesa/drivers/dri/r300/r300_ioctl.c b/src/mesa/drivers/dri/r300/r300_ioctl.c index 884a7d49e45..ace9131b33b 100644 --- a/src/mesa/drivers/dri/r300/r300_ioctl.c +++ b/src/mesa/drivers/dri/r300/r300_ioctl.c @@ -446,14 +446,6 @@ static void r300RefillCurrentDmaRegion(r300ContextPtr rmesa, int size) dmabuf->id = radeon_mm_alloc(rmesa, 4, size); -#ifdef HW_VBOS - if (dmabuf->id == 0) { - /* Just kick all */ - r300EvictVBOs(rmesa->radeon.glCtx, - /*RADEON_BUFFER_SIZE*16 */ 1 << 30); - dmabuf->id = radeon_mm_alloc(rmesa, 4, size); - } -#endif UNLOCK_HARDWARE(&rmesa->radeon); if (dmabuf->id == 0) { diff --git a/src/mesa/drivers/dri/r300/r300_maos.c b/src/mesa/drivers/dri/r300/r300_maos.c index 15bb41ddc0c..3beeb7b1ab8 100644 --- a/src/mesa/drivers/dri/r300/r300_maos.c +++ b/src/mesa/drivers/dri/r300/r300_maos.c @@ -649,32 +649,6 @@ void r300UseArrays(GLcontext * ctx) if (rmesa->state.aos[i].buf) radeon_mm_use(rmesa, rmesa->state.aos[i].buf->id); } - -#ifdef HW_VBOS - -#define USE_VBO(a) \ - do { \ - if (ctx->Array.ArrayObj->a.BufferObj->Name \ - && ctx->Array.ArrayObj->a.Enabled) \ - radeon_mm_use(rmesa, ((struct r300_buffer_object *)ctx->Array.ArrayObj->a.BufferObj)->id); \ - } while(0) - - if (ctx->Array.ElementArrayBufferObj->Name - && ctx->Array.ElementArrayBufferObj->OnCard) - radeon_mm_use(rmesa, - ((struct r300_buffer_object *)ctx->Array. - ElementArrayBufferObj)->id); - - USE_VBO(Vertex); - USE_VBO(Normal); - USE_VBO(Color); - USE_VBO(SecondaryColor); - USE_VBO(FogCoord); - - for (i = 0; i < MAX_TEXTURE_COORD_UNITS; i++) - USE_VBO(TexCoord[i]); -#endif - } #endif diff --git a/src/mesa/drivers/dri/r300/r300_render.c b/src/mesa/drivers/dri/r300/r300_render.c index 87990247457..1dac3142ee6 100644 --- a/src/mesa/drivers/dri/r300/r300_render.c +++ b/src/mesa/drivers/dri/r300/r300_render.c @@ -270,6 +270,50 @@ static void r300RunRenderPrimitive(r300ContextPtr rmesa, GLcontext * ctx, } } +#define CONV_VB(a, b) rvb->AttribPtr[(a)].size = vb->b->size, \ + rvb->AttribPtr[(a)].type = GL_FLOAT, \ + rvb->AttribPtr[(a)].stride = vb->b->stride, \ + rvb->AttribPtr[(a)].data = vb->b->data + +static void radeon_vb_to_rvb(r300ContextPtr rmesa, struct radeon_vertex_buffer *rvb, struct vertex_buffer *vb) +{ + int i; + GLcontext *ctx; + ctx = rmesa->radeon.glCtx; + + memset(rvb, 0, sizeof(*rvb)); + + rvb->Elts = vb->Elts; + rvb->elt_size = 4; + rvb->elt_min = 0; + rvb->elt_max = vb->Count; + + rvb->Count = vb->Count; + + if (hw_tcl_on) { + CONV_VB(VERT_ATTRIB_POS, ObjPtr); + } else { + assert(vb->ClipPtr); + CONV_VB(VERT_ATTRIB_POS, ClipPtr); + } + + CONV_VB(VERT_ATTRIB_NORMAL, NormalPtr); + CONV_VB(VERT_ATTRIB_COLOR0, ColorPtr[0]); + CONV_VB(VERT_ATTRIB_COLOR1, SecondaryColorPtr[0]); + CONV_VB(VERT_ATTRIB_FOG, FogCoordPtr); + + for (i=0; i < ctx->Const.MaxTextureCoordUnits; i++) + CONV_VB(VERT_ATTRIB_TEX0 + i, TexCoordPtr[i]); + + for (i=0; i < MAX_VERTEX_PROGRAM_ATTRIBS; i++) + CONV_VB(VERT_ATTRIB_GENERIC0 + i, AttribPtr[VERT_ATTRIB_GENERIC0 + i]); + + rvb->Primitive = vb->Primitive; + rvb->PrimitiveCount = vb->PrimitiveCount; + rvb->LockFirst = rvb->LockCount = 0; + rvb->lock_uptodate = GL_FALSE; +} + GLboolean r300RunRender(GLcontext * ctx, struct tnl_pipeline_stage *stage) { diff --git a/src/mesa/drivers/dri/r300/r300_state.c b/src/mesa/drivers/dri/r300/r300_state.c index af4326ed7e5..3b595d98fa6 100644 --- a/src/mesa/drivers/dri/r300/r300_state.c +++ b/src/mesa/drivers/dri/r300/r300_state.c @@ -1999,10 +1999,6 @@ static void r300InvalidateState(GLcontext * ctx, GLuint new_state) r300UpdateStateParameters(ctx, new_state); -#ifdef HW_VBOS - if (new_state & _NEW_ARRAY) - r300->state.VB.lock_uptodate = GL_FALSE; -#endif r300->NewGLState |= new_state; } diff --git a/src/mesa/drivers/dri/r300/radeon_vtxfmt_a.c b/src/mesa/drivers/dri/r300/radeon_vtxfmt_a.c deleted file mode 100644 index f9c4e2db0c9..00000000000 --- a/src/mesa/drivers/dri/r300/radeon_vtxfmt_a.c +++ /dev/null @@ -1,662 +0,0 @@ -/* - * Copyright (C) 2005 Aapo Tahkola. - * - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial - * portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - */ - -/* - * Authors: - * Aapo Tahkola - */ - -#include "context.h" -#include "r300_context.h" -#include "r300_cmdbuf.h" -#include "r300_ioctl.h" -#include "r300_maos.h" -#include "r300_state.h" -#include "radeon_mm.h" - -#include "hash.h" -#include "dispatch.h" -#include "bufferobj.h" -#include "vtxfmt.h" -#include "api_validate.h" -#include "state.h" -#include "image.h" - -#include "vbo/vbo_context.h" - -#define CONV_VB(a, b) rvb->AttribPtr[(a)].size = vb->b->size, \ - rvb->AttribPtr[(a)].type = GL_FLOAT, \ - rvb->AttribPtr[(a)].stride = vb->b->stride, \ - rvb->AttribPtr[(a)].data = vb->b->data - -void radeon_vb_to_rvb(r300ContextPtr rmesa, struct radeon_vertex_buffer *rvb, struct vertex_buffer *vb) -{ - int i; - GLcontext *ctx; - ctx = rmesa->radeon.glCtx; - - memset(rvb, 0, sizeof(*rvb)); - - rvb->Elts = vb->Elts; - rvb->elt_size = 4; - rvb->elt_min = 0; - rvb->elt_max = vb->Count; - - rvb->Count = vb->Count; - - if (hw_tcl_on) { - CONV_VB(VERT_ATTRIB_POS, ObjPtr); - } else { - assert(vb->ClipPtr); - CONV_VB(VERT_ATTRIB_POS, ClipPtr); - } - - CONV_VB(VERT_ATTRIB_NORMAL, NormalPtr); - CONV_VB(VERT_ATTRIB_COLOR0, ColorPtr[0]); - CONV_VB(VERT_ATTRIB_COLOR1, SecondaryColorPtr[0]); - CONV_VB(VERT_ATTRIB_FOG, FogCoordPtr); - - for (i=0; i < ctx->Const.MaxTextureCoordUnits; i++) - CONV_VB(VERT_ATTRIB_TEX0 + i, TexCoordPtr[i]); - - for (i=0; i < MAX_VERTEX_PROGRAM_ATTRIBS; i++) - CONV_VB(VERT_ATTRIB_GENERIC0 + i, AttribPtr[VERT_ATTRIB_GENERIC0 + i]); - - rvb->Primitive = vb->Primitive; - rvb->PrimitiveCount = vb->PrimitiveCount; - rvb->LockFirst = rvb->LockCount = 0; - rvb->lock_uptodate = GL_FALSE; -} - -#ifdef RADEON_VTXFMT_A - -extern void _tnl_array_init( GLcontext *ctx ); - -#define CONV(a, b) \ - do { \ - if (ctx->Array.ArrayObj->b.Enabled) { \ - rmesa->state.VB.AttribPtr[(a)].size = ctx->Array.ArrayObj->b.Size; \ - rmesa->state.VB.AttribPtr[(a)].data = ctx->Array.ArrayObj->b.BufferObj->Name \ - ? (void *)ADD_POINTERS(ctx->Array.ArrayObj->b.Ptr, ctx->Array.ArrayObj->b.BufferObj->Data) \ - : (void *)ctx->Array.ArrayObj->b.Ptr; \ - rmesa->state.VB.AttribPtr[(a)].stride = ctx->Array.ArrayObj->b.StrideB; \ - rmesa->state.VB.AttribPtr[(a)].type = ctx->Array.ArrayObj->b.Type; \ - enabled |= 1 << (a); \ - } \ - } while (0) - -static int setup_arrays(r300ContextPtr rmesa, GLint start) -{ - int i; - struct dt def = { 4, GL_FLOAT, 0, NULL }; - GLcontext *ctx; - GLuint enabled = 0; - - ctx = rmesa->radeon.glCtx; - i = r300Fallback(ctx); - if (i) - return i; - - memset(rmesa->state.VB.AttribPtr, 0, VERT_ATTRIB_MAX*sizeof(struct dt)); - - CONV(VERT_ATTRIB_POS, Vertex); - CONV(VERT_ATTRIB_NORMAL, Normal); - CONV(VERT_ATTRIB_COLOR0, Color); - CONV(VERT_ATTRIB_COLOR1, SecondaryColor); - CONV(VERT_ATTRIB_FOG, FogCoord); - - for (i=0; i < MAX_TEXTURE_COORD_UNITS; i++) - CONV(VERT_ATTRIB_TEX0 + i, TexCoord[i]); - - if (ctx->VertexProgram._Enabled) - for (i=0; i < VERT_ATTRIB_MAX; i++) - CONV(i, VertexAttrib[i]); - - for (i=0; i < VERT_ATTRIB_MAX; i++) { - rmesa->state.VB.AttribPtr[i].data += rmesa->state.VB.AttribPtr[i].stride * start; - } - - for(i=0; i < VERT_ATTRIB_MAX; i++){ - if(rmesa->state.VB.AttribPtr[i].type != GL_UNSIGNED_BYTE && -#if MESA_LITTLE_ENDIAN - rmesa->state.VB.AttribPtr[i].type != GL_SHORT && -#endif - rmesa->state.VB.AttribPtr[i].type != GL_FLOAT){ - WARN_ONCE("Unsupported format %d at index %d\n", rmesa->state.VB.AttribPtr[i].type, i); - return R300_FALLBACK_TCL; - } - - /*fprintf(stderr, "%d: ", i); - - switch(rmesa->state.VB.AttribPtr[i].type){ - case GL_BYTE: fprintf(stderr, "byte "); break; - case GL_UNSIGNED_BYTE: fprintf(stderr, "u byte "); break; - case GL_SHORT: fprintf(stderr, "short "); break; - case GL_UNSIGNED_SHORT: fprintf(stderr, "u short "); break; - case GL_INT: fprintf(stderr, "int "); break; - case GL_UNSIGNED_INT: fprintf(stderr, "u int "); break; - case GL_FLOAT: fprintf(stderr, "float "); break; - case GL_2_BYTES: fprintf(stderr, "2 bytes "); break; - case GL_3_BYTES: fprintf(stderr, "3 bytes "); break; - case GL_4_BYTES: fprintf(stderr, "4 bytes "); break; - case GL_DOUBLE: fprintf(stderr, "double "); break; - default: fprintf(stderr, "unknown "); break; - } - - fprintf(stderr, "Size %d ", rmesa->state.VB.AttribPtr[i].size); - fprintf(stderr, "Ptr %p ", rmesa->state.VB.AttribPtr[i].data); - fprintf(stderr, "Stride %d ", rmesa->state.VB.AttribPtr[i].stride); - fprintf(stderr, "\n");*/ - } - return R300_FALLBACK_NONE; -} - -void radeon_init_vtxfmt_a(r300ContextPtr rmesa); - - -static void radeonDrawRangeElements(GLcontext *ctx, - GLenum mode, - GLuint min, - GLuint max, - GLsizei count, - GLenum type, - const GLvoid *c_indices) -{ -#if 1 - return GL_FALSE; -#else - r300ContextPtr rmesa = R300_CONTEXT(ctx); - struct tnl_prim prim; - int elt_size; - int i; - void *ptr = NULL; - struct r300_dma_region rvb; - const GLvoid *indices = c_indices; - - if (count > 65535) { - /* TODO */ - if (mode == GL_POINTS || - mode == GL_LINES || - mode == GL_QUADS || - mode == GL_TRIANGLES) { - - while (count) { - i = r300NumVerts(rmesa, MIN2(count, 65535), mode); - - radeonDrawRangeElements(mode, min, max, i, type, indices); - - indices += i * _mesa_sizeof_type(type); - count -= i; - } - return GL_TRUE; - } - WARN_ONCE("Too many verts!\n"); - return GL_FALSE; - } - - if (ctx->Array.ElementArrayBufferObj->Name) { - /* use indices in the buffer object */ - if (!ctx->Array.ElementArrayBufferObj->Data) { - _mesa_warning(ctx, "DrawRangeElements with empty vertex elements buffer!"); - return GL_TRUE; - } - /* actual address is the sum of pointers */ - indices = (GLvoid *) - ADD_POINTERS(ctx->Array.ElementArrayBufferObj->Data, (const GLubyte *) c_indices); - } - - FLUSH_CURRENT( ctx, 0 ); -#ifdef OPTIMIZE_ELTS - min = 0; -#endif - - memset(&rvb, 0, sizeof(rvb)); - switch (type){ - case GL_UNSIGNED_BYTE: -#ifdef FORCE_32BITS_ELTS - elt_size = 4; -#else - elt_size = 2; -#endif - r300AllocDmaRegion(rmesa, &rvb, count * elt_size, elt_size); - rvb.aos_offset = GET_START(&rvb); - ptr = rvb.address + rvb.start; - -#ifdef FORCE_32BITS_ELTS - for(i=0; i < count; i++) - ((unsigned int *)ptr)[i] = ((unsigned char *)indices)[i] - min; -#else - for(i=0; i < count; i++) - ((unsigned short int *)ptr)[i] = ((unsigned char *)indices)[i] - min; -#endif - break; - - case GL_UNSIGNED_SHORT: -#ifdef FORCE_32BITS_ELTS - elt_size = 4; -#else - elt_size = 2; -#endif -#ifdef OPTIMIZE_ELTS - if (min == 0 && ctx->Array.ElementArrayBufferObj->Name){ - ptr = indices; - break; - } -#endif - r300AllocDmaRegion(rmesa, &rvb, count * elt_size, elt_size); - rvb.aos_offset = GET_START(&rvb); - ptr = rvb.address + rvb.start; - -#ifdef FORCE_32BITS_ELTS - for(i=0; i < count; i++) - ((unsigned int *)ptr)[i] = ((unsigned short int *)indices)[i] - min; -#else - for(i=0; i < count; i++) - ((unsigned short int *)ptr)[i] = ((unsigned short int *)indices)[i] - min; -#endif - break; - - case GL_UNSIGNED_INT: -#ifdef FORCE_32BITS_ELTS - elt_size = 4; -#else - if (max - min <= 65535) - elt_size = 2; - else - elt_size = 4; -#endif - r300AllocDmaRegion(rmesa, &rvb, count * elt_size, elt_size); - rvb.aos_offset = GET_START(&rvb); - ptr = rvb.address + rvb.start; - - if (elt_size == 2) - for (i=0; i < count; i++) - ((unsigned short int *)ptr)[i] = ((unsigned int *)indices)[i] - min; - else - for (i=0; i < count; i++) - ((unsigned int *)ptr)[i] = ((unsigned int *)indices)[i] - min; - break; - - default: - WARN_ONCE("Unknown elt type!\n"); - return GL_FALSE; - } - - /* XXX: setup_arrays before state update? */ - - if (ctx->NewState) - _mesa_update_state( ctx ); - - r300UpdateShaders(rmesa); - - if (setup_arrays(rmesa, min) >= R300_FALLBACK_TCL) { - r300ReleaseDmaRegion(rmesa, &rvb, __FUNCTION__); - return GL_FALSE; - } - - rmesa->state.VB.Count = max - min + 1; - - r300UpdateShaderStates(rmesa); - - rmesa->state.VB.Primitive = &prim; - rmesa->state.VB.PrimitiveCount = 1; - - prim.mode = mode | PRIM_BEGIN | PRIM_END; - if (rmesa->state.VB.LockCount) - prim.start = min - rmesa->state.VB.LockFirst; - else - prim.start = 0; - prim.count = count; - - rmesa->state.VB.Elts = ptr; - rmesa->state.VB.elt_size = elt_size; - rmesa->state.VB.elt_min = min; - rmesa->state.VB.elt_max = max; - - if (r300RunRender(ctx, NULL)) { - r300ReleaseDmaRegion(rmesa, &rvb, __FUNCTION__); - return GL_FALSE; - } - - if(rvb.buf) - radeon_mm_use(rmesa, rvb.buf->id); - - r300ReleaseDmaRegion(rmesa, &rvb, __FUNCTION__); - return GL_TRUE; -#endif -} - -static GLboolean radeonDrawArrays( GLcontext *ctx, - GLenum mode, GLint start, GLsizei count ) -{ -#if 1 - return GL_FALSE; -#else - GET_CURRENT_CONTEXT(ctx); - r300ContextPtr rmesa = R300_CONTEXT(ctx); - struct tnl_prim prim; - - if (count > 65535) { - /* TODO: split into multiple draws. - */ - WARN_ONCE("Too many verts!\n"); - return GL_FALSE; - } - - FLUSH_CURRENT( ctx, 0 ); - - if (ctx->NewState) - _mesa_update_state( ctx ); - - /* XXX: setup_arrays before state update? */ - - r300UpdateShaders(rmesa); - - if (setup_arrays(rmesa, start) >= R300_FALLBACK_TCL) - return GL_FALSE; - - rmesa->state.VB.Count = count; - - r300UpdateShaderStates(rmesa); - - rmesa->state.VB.Primitive = &prim; - rmesa->state.VB.PrimitiveCount = 1; - - prim.mode = mode | PRIM_BEGIN | PRIM_END; - if (rmesa->state.VB.LockCount) - prim.start = start - rmesa->state.VB.LockFirst; - else - prim.start = 0; - prim.count = count; - - rmesa->state.VB.Elts = NULL; - rmesa->state.VB.elt_size = 0; - rmesa->state.VB.elt_min = 0; - rmesa->state.VB.elt_max = 0; - - if (r300RunRender(ctx, NULL)) - return GL_FALSE; - - return GL_TRUE; -#endif -} - -static void radeon_draw_prims( GLcontext *ctx, - const struct gl_client_array *arrays[], - const struct _mesa_prim *prim, - GLuint nr_prims, - const struct _mesa_index_buffer *ib, - GLuint min_index, - GLuint max_index) -{ - if (ib == NULL) { - for (i = 0; i < nr_prims; i++) { - if (!radeonDrawArrays(ctx, - prim->mode, - prim->start, - prim->count)) { - /* Fallback - */ - _tnl_draw_prims(ctx, - arrays, - prim + i, - nr_prims - i, - ib, - min_index, - max_index); - return; - } - } - } else { - for (i = 0; i < nr_prims; i++) { - if (!radeonDrawRangeElements(ctx, - prim->mode, - min_index, - max_index, - prim->count, - ib->types, - ib->ptr)) { - /* Fallback - */ - _tnl_draw_prims(ctx, - arrays, - prim + i, - nr_prims - i, - ib, - min_index, - max_index); - return; - } - } - } -} - -void radeon_init_vtxfmt_a(r300ContextPtr rmesa) -{ - GLcontext *ctx; - struct vbo_context *vbo = vbo_context(ctx); - - vbo->draw_prims = radeon_draw_prims; -} - -#endif - -#ifdef HW_VBOS - -static struct gl_buffer_object * -r300NewBufferObject(GLcontext *ctx, GLuint name, GLenum target ) -{ - struct r300_buffer_object *obj; - - (void) ctx; - - obj = MALLOC_STRUCT(r300_buffer_object); - _mesa_initialize_buffer_object(&obj->mesa_obj, name, target); - return &obj->mesa_obj; -} - -static void r300BufferData(GLcontext *ctx, GLenum target, GLsizeiptrARB size, - const GLvoid *data, GLenum usage, struct gl_buffer_object *obj) -{ - r300ContextPtr rmesa = R300_CONTEXT(ctx); - struct r300_buffer_object *r300_obj = (struct r300_buffer_object *)obj; - - /* Free previous buffer */ - if (obj->OnCard) { - radeon_mm_free(rmesa, r300_obj->id); - obj->OnCard = GL_FALSE; - } else { - if (obj->Data) - _mesa_free(obj->Data); - } -#ifdef OPTIMIZE_ELTS - if (0) { -#else - if (target == GL_ELEMENT_ARRAY_BUFFER_ARB) { -#endif - fallback: - obj->Data = malloc(size); - - if (data) - _mesa_memcpy(obj->Data, data, size); - - obj->OnCard = GL_FALSE; - } else { - r300_obj->id = radeon_mm_alloc(rmesa, 4, size); - if (r300_obj->id == 0) - goto fallback; - - obj->Data = radeon_mm_map(rmesa, r300_obj->id, RADEON_MM_W); - - if (data) - _mesa_memcpy(obj->Data, data, size); - - radeon_mm_unmap(rmesa, r300_obj->id); - obj->OnCard = GL_TRUE; - } - - obj->Size = size; - obj->Usage = usage; -} - -static void r300BufferSubData(GLcontext *ctx, GLenum target, GLintptrARB offset, - GLsizeiptrARB size, const GLvoid * data, struct gl_buffer_object * bufObj) -{ - r300ContextPtr rmesa = R300_CONTEXT(ctx); - struct r300_buffer_object *r300_obj = (struct r300_buffer_object *)bufObj; - (void) ctx; (void) target; - void *ptr; - - if (bufObj->Data && ((GLuint) (size + offset) <= bufObj->Size)) { - if (bufObj->OnCard){ - ptr = radeon_mm_map(rmesa, r300_obj->id, RADEON_MM_W); - - _mesa_memcpy( (GLubyte *) ptr + offset, data, size ); - - radeon_mm_unmap(rmesa, r300_obj->id); - } else { - _mesa_memcpy( (GLubyte *) bufObj->Data + offset, data, size ); - } - } -} - -static void *r300MapBuffer(GLcontext *ctx, GLenum target, GLenum access, - struct gl_buffer_object *bufObj) -{ - r300ContextPtr rmesa = R300_CONTEXT(ctx); - struct r300_buffer_object *r300_obj = (struct r300_buffer_object *)bufObj; - - (void) ctx; - (void) target; - (void) access; - //ASSERT(!bufObj->OnCard); - /* Just return a direct pointer to the data */ - if (bufObj->Pointer) { - /* already mapped! */ - return NULL; - } - - if (!bufObj->OnCard) { - bufObj->Pointer = bufObj->Data; - return bufObj->Pointer; - } - - switch (access) { - case GL_READ_ONLY: - bufObj->Pointer = radeon_mm_map(rmesa, r300_obj->id, RADEON_MM_R); - break; - - case GL_WRITE_ONLY: - bufObj->Pointer = radeon_mm_map(rmesa, r300_obj->id, RADEON_MM_W); - break; - - case GL_READ_WRITE: - bufObj->Pointer = radeon_mm_map(rmesa, r300_obj->id, RADEON_MM_RW); - break; - - default: - WARN_ONCE("Unknown access type\n"); - bufObj->Pointer = NULL; - break; - } - - return bufObj->Pointer; -} - -static GLboolean r300UnmapBuffer(GLcontext *ctx, GLenum target, struct gl_buffer_object *bufObj) -{ - r300ContextPtr rmesa = R300_CONTEXT(ctx); - struct r300_buffer_object *r300_obj = (struct r300_buffer_object *)bufObj; - - (void) ctx; - (void) target; - //ASSERT(!bufObj->OnCard); - /* XXX we might assert here that bufObj->Pointer is non-null */ - if (!bufObj->OnCard) { - bufObj->Pointer = NULL; - return GL_TRUE; - } - radeon_mm_unmap(rmesa, r300_obj->id); - - bufObj->Pointer = NULL; - return GL_TRUE; -} - -static void r300DeleteBuffer(GLcontext *ctx, struct gl_buffer_object *obj) -{ - r300ContextPtr rmesa = R300_CONTEXT(ctx); - struct r300_buffer_object *r300_obj = (struct r300_buffer_object *)obj; - - if (obj->OnCard) { - radeon_mm_free(rmesa, r300_obj->id); - obj->Data = NULL; - } - _mesa_delete_buffer_object(ctx, obj); -} - -void r300EvictVBOs(GLcontext *ctx, int amount) -{ - r300ContextPtr rmesa = R300_CONTEXT(ctx); - struct _mesa_HashTable *hash = ctx->Shared->BufferObjects; - GLuint k = _mesa_HashFirstEntry(hash); - - while (amount > 0 && k) { - struct gl_buffer_object *obj = _mesa_lookup_bufferobj(ctx, k); - struct r300_buffer_object *r300_obj - = (struct r300_buffer_object *) obj; - - if (obj->OnCard && obj->Size) { - GLvoid *data; - obj->Data = _mesa_malloc(obj->Size); - - data = radeon_mm_map(rmesa, r300_obj->id, RADEON_MM_R); - _mesa_memcpy(obj->Data, data, obj->Size); - radeon_mm_unmap(rmesa, r300_obj->id); - - radeon_mm_free(rmesa, r300_obj->id); - r300_obj->id = 0; - obj->OnCard = GL_FALSE; - - amount -= obj->Size; - } - - k = _mesa_HashNextEntry(hash, k); - } - -} - -void r300InitVBOFuncs(struct dd_function_table *functions) -{ - functions->NewBufferObject = r300NewBufferObject; - functions->BufferData = r300BufferData; - functions->BufferSubData = r300BufferSubData; - functions->MapBuffer = r300MapBuffer; - functions->UnmapBuffer = r300UnmapBuffer; - functions->DeleteBuffer = r300DeleteBuffer; -} - -#endif -- cgit v1.2.3 From cea0c2b14426bf315ae606656274dae5eedd1b6a Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 18:01:43 +0000 Subject: r300: Indented both copies of radeon_span.[ch] in preparation for merging. --- src/mesa/drivers/dri/r300/radeon_span.c | 189 ++++++++++++++---------------- src/mesa/drivers/dri/r300/radeon_span.h | 12 +- src/mesa/drivers/dri/radeon/radeon_span.c | 163 ++++++++++++-------------- src/mesa/drivers/dri/radeon/radeon_span.h | 10 +- 4 files changed, 173 insertions(+), 201 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/radeon_span.c b/src/mesa/drivers/dri/r300/radeon_span.c index cc779d684fb..9cae955de8b 100644 --- a/src/mesa/drivers/dri/r300/radeon_span.c +++ b/src/mesa/drivers/dri/r300/radeon_span.c @@ -39,6 +39,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * Keith Whitwell * */ + #include #include "glheader.h" #include "imports.h" @@ -51,10 +52,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "drirenderbuffer.h" - #define DBG 0 - /* * Note that all information needed to access pixels in a renderbuffer * should be obtained through the gl_renderbuffer parameter, not per-context @@ -85,8 +84,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define HW_UNLOCK() - - /* ================================================================ * Color buffer */ @@ -101,7 +98,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define GET_PTR(X,Y) (buf + ((Y) * drb->flippedPitch + (X)) * 2) #include "spantmp2.h" - /* 32 bit, ARGB8888 color spanline and pixel functions */ #define SPANTMP_PIXEL_FMT GL_BGRA @@ -112,7 +108,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define GET_PTR(X,Y) (buf + ((Y) * drb->flippedPitch + (X)) * 4) #include "spantmp2.h" - /* ================================================================ * Depth buffer */ @@ -127,59 +122,52 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * too... */ -static GLuint -radeon_mba_z32( const driRenderbuffer *drb, GLint x, GLint y ) +static GLuint radeon_mba_z32(const driRenderbuffer * drb, GLint x, GLint y) { - GLuint pitch = drb->pitch; - if (1 /*|| drb->depthHasSurface */) { - return 4 * (x + y * pitch); - } - else { - GLuint ba, address = 0; /* a[0..1] = 0 */ - - ba = (y / 8) * (pitch / 8) + (x / 8); - - address |= (x & 0x7) << 2; /* a[2..4] = x[0..2] */ - address |= (y & 0x3) << 5; /* a[5..6] = y[0..1] */ - address |= - (((x & 0x10) >> 2) ^ (y & 0x4)) << 5; /* a[7] = x[4] ^ y[2] */ - address |= (ba & 0x3) << 8; /* a[8..9] = ba[0..1] */ - - address |= (y & 0x8) << 7; /* a[10] = y[3] */ - address |= - (((x & 0x8) << 1) ^ (y & 0x10)) << 7; /* a[11] = x[3] ^ y[4] */ - address |= (ba & ~0x3) << 10; /* a[12..] = ba[2..] */ - - return address; - } -} + GLuint pitch = drb->pitch; + if (1 /*|| drb->depthHasSurface */ ) { + return 4 * (x + y * pitch); + } else { + GLuint ba, address = 0; /* a[0..1] = 0 */ + + ba = (y / 8) * (pitch / 8) + (x / 8); + + address |= (x & 0x7) << 2; /* a[2..4] = x[0..2] */ + address |= (y & 0x3) << 5; /* a[5..6] = y[0..1] */ + address |= (((x & 0x10) >> 2) ^ (y & 0x4)) << 5; /* a[7] = x[4] ^ y[2] */ + address |= (ba & 0x3) << 8; /* a[8..9] = ba[0..1] */ + address |= (y & 0x8) << 7; /* a[10] = y[3] */ + address |= (((x & 0x8) << 1) ^ (y & 0x10)) << 7; /* a[11] = x[3] ^ y[4] */ + address |= (ba & ~0x3) << 10; /* a[12..] = ba[2..] */ + + return address; + } +} static INLINE GLuint -radeon_mba_z16( const driRenderbuffer *drb, GLint x, GLint y ) +radeon_mba_z16(const driRenderbuffer * drb, GLint x, GLint y) { - GLuint pitch = drb->pitch; - if (1 /*|| drb->depthHasSurface */) { - return 2 * (x + y * pitch); - } - else { - GLuint ba, address = 0; /* a[0] = 0 */ - - ba = (y / 16) * (pitch / 32) + (x / 32); - - address |= (x & 0x7) << 1; /* a[1..3] = x[0..2] */ - address |= (y & 0x7) << 4; /* a[4..6] = y[0..2] */ - address |= (x & 0x8) << 4; /* a[7] = x[3] */ - address |= (ba & 0x3) << 8; /* a[8..9] = ba[0..1] */ - address |= (y & 0x8) << 7; /* a[10] = y[3] */ - address |= ((x & 0x10) ^ (y & 0x10)) << 7;/* a[11] = x[4] ^ y[4] */ - address |= (ba & ~0x3) << 10; /* a[12..] = ba[2..] */ - - return address; - } + GLuint pitch = drb->pitch; + if (1 /*|| drb->depthHasSurface */ ) { + return 2 * (x + y * pitch); + } else { + GLuint ba, address = 0; /* a[0] = 0 */ + + ba = (y / 16) * (pitch / 32) + (x / 32); + + address |= (x & 0x7) << 1; /* a[1..3] = x[0..2] */ + address |= (y & 0x7) << 4; /* a[4..6] = y[0..2] */ + address |= (x & 0x8) << 4; /* a[7] = x[3] */ + address |= (ba & 0x3) << 8; /* a[8..9] = ba[0..1] */ + address |= (y & 0x8) << 7; /* a[10] = y[3] */ + address |= ((x & 0x10) ^ (y & 0x10)) << 7; /* a[11] = x[4] ^ y[4] */ + address |= (ba & ~0x3) << 10; /* a[12..] = ba[2..] */ + + return address; + } } - /* 16-bit depth buffer functions */ #define WRITE_DEPTH( _x, _y, d ) \ @@ -191,7 +179,6 @@ radeon_mba_z16( const driRenderbuffer *drb, GLint x, GLint y ) #define TAG(x) radeon##x##_z16 #include "depthtmp.h" - /* 24 bit depth, 8 bit stencil depthbuffer functions * * Careful: It looks like the R300 uses ZZZS byte order while the R200 @@ -215,7 +202,6 @@ do { \ #define TAG(x) radeon##x##_z24_s8 #include "depthtmp.h" - /* ================================================================ * Stencil buffer */ @@ -241,84 +227,79 @@ do { \ #define TAG(x) radeon##x##_z24_s8 #include "stenciltmp.h" - - /* Move locking out to get reasonable span performance (10x better * than doing this in HW_LOCK above). WaitForIdle() is the main * culprit. */ -static void radeonSpanRenderStart( GLcontext *ctx ) +static void radeonSpanRenderStart(GLcontext * ctx) { - radeonContextPtr rmesa = RADEON_CONTEXT( ctx ); - { + radeonContextPtr rmesa = RADEON_CONTEXT(ctx); + static int first = 1; - r300ContextPtr r300 = (r300ContextPtr)rmesa; - + r300ContextPtr r300 = (r300ContextPtr) rmesa; + if (first) { - r300->span_dlocking = getenv("R300_SPAN_DISABLE_LOCKING") ? 1 : 0; + r300->span_dlocking = + getenv("R300_SPAN_DISABLE_LOCKING") ? 1 : 0; if (r300->span_dlocking == 0) { - fprintf(stderr, "Try R300_SPAN_DISABLE_LOCKING env var if this hangs.\n"); + fprintf(stderr, + "Try R300_SPAN_DISABLE_LOCKING env var if this hangs.\n"); fflush(stderr); sleep(1); } first = 0; } - + if (r300->span_dlocking) { r300Flush(ctx); - LOCK_HARDWARE( rmesa ); - radeonWaitForIdleLocked( rmesa ); - UNLOCK_HARDWARE( rmesa ); - + LOCK_HARDWARE(rmesa); + radeonWaitForIdleLocked(rmesa); + UNLOCK_HARDWARE(rmesa); + return; } - } - // R300_FIREVERTICES( rmesa ); - // old code has flush - r300Flush(ctx); - LOCK_HARDWARE( rmesa ); - radeonWaitForIdleLocked( rmesa ); + // R300_FIREVERTICES( rmesa ); + // old code has flush + r300Flush(ctx); + LOCK_HARDWARE(rmesa); + radeonWaitForIdleLocked(rmesa); } -static void radeonSpanRenderFinish( GLcontext *ctx ) +static void radeonSpanRenderFinish(GLcontext * ctx) { - radeonContextPtr rmesa = RADEON_CONTEXT( ctx ); - r300ContextPtr r300 = (r300ContextPtr)rmesa; - _swrast_flush( ctx ); - if (r300->span_dlocking == 0) - UNLOCK_HARDWARE( rmesa ); + radeonContextPtr rmesa = RADEON_CONTEXT(ctx); + r300ContextPtr r300 = (r300ContextPtr) rmesa; + _swrast_flush(ctx); + if (r300->span_dlocking == 0) + UNLOCK_HARDWARE(rmesa); } -void radeonInitSpanFuncs( GLcontext *ctx ) +void radeonInitSpanFuncs(GLcontext * ctx) { - struct swrast_device_driver *swdd = _swrast_GetDeviceDriverReference(ctx); - swdd->SpanRenderStart = radeonSpanRenderStart; - swdd->SpanRenderFinish = radeonSpanRenderFinish; + struct swrast_device_driver *swdd = + _swrast_GetDeviceDriverReference(ctx); + swdd->SpanRenderStart = radeonSpanRenderStart; + swdd->SpanRenderFinish = radeonSpanRenderFinish; } - /** * Plug in the Get/Put routines for the given driRenderbuffer. */ -void -radeonSetSpanFunctions(driRenderbuffer *drb, const GLvisual *vis) +void radeonSetSpanFunctions(driRenderbuffer * drb, const GLvisual * vis) { - if (drb->Base.InternalFormat == GL_RGBA) { - if (vis->redBits == 5 && vis->greenBits == 6 && vis->blueBits == 5) { - radeonInitPointers_RGB565(&drb->Base); - } - else { - radeonInitPointers_ARGB8888(&drb->Base); - } - } - else if (drb->Base.InternalFormat == GL_DEPTH_COMPONENT16) { - radeonInitDepthPointers_z16(&drb->Base); - } - else if (drb->Base.InternalFormat == GL_DEPTH_COMPONENT24) { - radeonInitDepthPointers_z24_s8(&drb->Base); - } - else if (drb->Base.InternalFormat == GL_STENCIL_INDEX8_EXT) { - radeonInitStencilPointers_z24_s8(&drb->Base); - } + if (drb->Base.InternalFormat == GL_RGBA) { + if (vis->redBits == 5 && vis->greenBits == 6 + && vis->blueBits == 5) { + radeonInitPointers_RGB565(&drb->Base); + } else { + radeonInitPointers_ARGB8888(&drb->Base); + } + } else if (drb->Base.InternalFormat == GL_DEPTH_COMPONENT16) { + radeonInitDepthPointers_z16(&drb->Base); + } else if (drb->Base.InternalFormat == GL_DEPTH_COMPONENT24) { + radeonInitDepthPointers_z24_s8(&drb->Base); + } else if (drb->Base.InternalFormat == GL_STENCIL_INDEX8_EXT) { + radeonInitStencilPointers_z24_s8(&drb->Base); + } } diff --git a/src/mesa/drivers/dri/r300/radeon_span.h b/src/mesa/drivers/dri/r300/radeon_span.h index c4280b1b6d1..8f0823f412b 100644 --- a/src/mesa/drivers/dri/r300/radeon_span.h +++ b/src/mesa/drivers/dri/r300/radeon_span.h @@ -1,10 +1,15 @@ -/* +/************************************************************************** + +Copyright 2000, 2001 ATI Technologies Inc., Ontario, Canada, and + VA Linux Systems Inc., Fremont, California. Copyright (C) The Weather Channel, Inc. 2002. All Rights Reserved. The Weather Channel (TM) funded Tungsten Graphics to develop the initial release of the Radeon 8500 driver under the XFree86 license. This notice must be preserved. +All Rights Reserved. + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including @@ -29,18 +34,17 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* * Authors: + * Gareth Hughes * Keith Whitwell + * Kevin E. Martin */ #ifndef __RADEON_SPAN_H__ #define __RADEON_SPAN_H__ -#ifdef GLX_DIRECT_RENDERING - #include "drirenderbuffer.h" extern void radeonInitSpanFuncs(GLcontext * ctx); extern void radeonSetSpanFunctions(driRenderbuffer *rb, const GLvisual *vis); #endif -#endif diff --git a/src/mesa/drivers/dri/radeon/radeon_span.c b/src/mesa/drivers/dri/radeon/radeon_span.c index c49f5870c63..39452f8b4e7 100644 --- a/src/mesa/drivers/dri/radeon/radeon_span.c +++ b/src/mesa/drivers/dri/radeon/radeon_span.c @@ -1,9 +1,13 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/radeon/radeon_span.c,v 1.6 2002/10/30 12:51:56 alanh Exp $ */ /************************************************************************** +Copyright (C) The Weather Channel, Inc. 2002. All Rights Reserved. Copyright 2000, 2001 ATI Technologies Inc., Ontario, Canada, and VA Linux Systems Inc., Fremont, California. +The Weather Channel (TM) funded Tungsten Graphics to develop the +initial release of the Radeon 8500 driver under the XFree86 license. +This notice must be preserved. + All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining @@ -47,10 +51,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "drirenderbuffer.h" - #define DBG 0 - /* * Note that all information needed to access pixels in a renderbuffer * should be obtained through the gl_renderbuffer parameter, not per-context @@ -81,8 +83,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define HW_UNLOCK() - - /* ================================================================ * Color buffer */ @@ -97,7 +97,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define GET_PTR(X,Y) (buf + ((Y) * drb->flippedPitch + (X)) * 2) #include "spantmp2.h" - /* 32 bit, ARGB8888 color spanline and pixel functions */ #define SPANTMP_PIXEL_FMT GL_BGRA @@ -108,7 +107,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define GET_PTR(X,Y) (buf + ((Y) * drb->flippedPitch + (X)) * 4) #include "spantmp2.h" - /* ================================================================ * Depth buffer */ @@ -123,59 +121,52 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * too... */ -static GLuint -radeon_mba_z32( const driRenderbuffer *drb, GLint x, GLint y ) +static GLuint radeon_mba_z32(const driRenderbuffer * drb, GLint x, GLint y) { - GLuint pitch = drb->pitch; - if (drb->depthHasSurface) { - return 4 * (x + y * pitch); - } - else { - GLuint ba, address = 0; /* a[0..1] = 0 */ - - ba = (y / 16) * (pitch / 16) + (x / 16); - - address |= (x & 0x7) << 2; /* a[2..4] = x[0..2] */ - address |= (y & 0x3) << 5; /* a[5..6] = y[0..1] */ - address |= - (((x & 0x10) >> 2) ^ (y & 0x4)) << 5; /* a[7] = x[4] ^ y[2] */ - address |= (ba & 0x3) << 8; /* a[8..9] = ba[0..1] */ - - address |= (y & 0x8) << 7; /* a[10] = y[3] */ - address |= - (((x & 0x8) << 1) ^ (y & 0x10)) << 7; /* a[11] = x[3] ^ y[4] */ - address |= (ba & ~0x3) << 10; /* a[12..] = ba[2..] */ - - return address; - } -} + GLuint pitch = drb->pitch; + if (drb->depthHasSurface) { + return 4 * (x + y * pitch); + } else { + GLuint ba, address = 0; /* a[0..1] = 0 */ + + ba = (y / 16) * (pitch / 16) + (x / 16); + address |= (x & 0x7) << 2; /* a[2..4] = x[0..2] */ + address |= (y & 0x3) << 5; /* a[5..6] = y[0..1] */ + address |= (((x & 0x10) >> 2) ^ (y & 0x4)) << 5; /* a[7] = x[4] ^ y[2] */ + address |= (ba & 0x3) << 8; /* a[8..9] = ba[0..1] */ + + address |= (y & 0x8) << 7; /* a[10] = y[3] */ + address |= (((x & 0x8) << 1) ^ (y & 0x10)) << 7; /* a[11] = x[3] ^ y[4] */ + address |= (ba & ~0x3) << 10; /* a[12..] = ba[2..] */ + + return address; + } +} static INLINE GLuint -radeon_mba_z16( const driRenderbuffer *drb, GLint x, GLint y ) +radeon_mba_z16(const driRenderbuffer * drb, GLint x, GLint y) { - GLuint pitch = drb->pitch; - if (drb->depthHasSurface) { - return 2 * (x + y * pitch); - } - else { - GLuint ba, address = 0; /* a[0] = 0 */ - - ba = (y / 16) * (pitch / 32) + (x / 32); - - address |= (x & 0x7) << 1; /* a[1..3] = x[0..2] */ - address |= (y & 0x7) << 4; /* a[4..6] = y[0..2] */ - address |= (x & 0x8) << 4; /* a[7] = x[3] */ - address |= (ba & 0x3) << 8; /* a[8..9] = ba[0..1] */ - address |= (y & 0x8) << 7; /* a[10] = y[3] */ - address |= ((x & 0x10) ^ (y & 0x10)) << 7;/* a[11] = x[4] ^ y[4] */ - address |= (ba & ~0x3) << 10; /* a[12..] = ba[2..] */ - - return address; - } + GLuint pitch = drb->pitch; + if (drb->depthHasSurface) { + return 2 * (x + y * pitch); + } else { + GLuint ba, address = 0; /* a[0] = 0 */ + + ba = (y / 16) * (pitch / 32) + (x / 32); + + address |= (x & 0x7) << 1; /* a[1..3] = x[0..2] */ + address |= (y & 0x7) << 4; /* a[4..6] = y[0..2] */ + address |= (x & 0x8) << 4; /* a[7] = x[3] */ + address |= (ba & 0x3) << 8; /* a[8..9] = ba[0..1] */ + address |= (y & 0x8) << 7; /* a[10] = y[3] */ + address |= ((x & 0x10) ^ (y & 0x10)) << 7; /* a[11] = x[4] ^ y[4] */ + address |= (ba & ~0x3) << 10; /* a[12..] = ba[2..] */ + + return address; + } } - /* 16-bit depth buffer functions */ #define WRITE_DEPTH( _x, _y, d ) \ @@ -187,7 +178,6 @@ radeon_mba_z16( const driRenderbuffer *drb, GLint x, GLint y ) #define TAG(x) radeon##x##_z16 #include "depthtmp.h" - /* 24 bit depth, 8 bit stencil depthbuffer functions */ #define WRITE_DEPTH( _x, _y, d ) \ @@ -206,7 +196,6 @@ do { \ #define TAG(x) radeon##x##_z24_s8 #include "depthtmp.h" - /* ================================================================ * Stencil buffer */ @@ -233,57 +222,51 @@ do { \ #define TAG(x) radeon##x##_z24_s8 #include "stenciltmp.h" - - /* Move locking out to get reasonable span performance (10x better * than doing this in HW_LOCK above). WaitForIdle() is the main * culprit. */ -static void radeonSpanRenderStart( GLcontext *ctx ) +static void radeonSpanRenderStart(GLcontext * ctx) { - radeonContextPtr rmesa = RADEON_CONTEXT( ctx ); - RADEON_FIREVERTICES( rmesa ); - LOCK_HARDWARE( rmesa ); - radeonWaitForIdleLocked( rmesa ); + radeonContextPtr rmesa = RADEON_CONTEXT(ctx); + RADEON_FIREVERTICES(rmesa); + LOCK_HARDWARE(rmesa); + radeonWaitForIdleLocked(rmesa); } -static void radeonSpanRenderFinish( GLcontext *ctx ) +static void radeonSpanRenderFinish(GLcontext * ctx) { - radeonContextPtr rmesa = RADEON_CONTEXT( ctx ); - _swrast_flush( ctx ); - UNLOCK_HARDWARE( rmesa ); + radeonContextPtr rmesa = RADEON_CONTEXT(ctx); + _swrast_flush(ctx); + UNLOCK_HARDWARE(rmesa); } -void radeonInitSpanFuncs( GLcontext *ctx ) +void radeonInitSpanFuncs(GLcontext * ctx) { - struct swrast_device_driver *swdd = _swrast_GetDeviceDriverReference(ctx); - swdd->SpanRenderStart = radeonSpanRenderStart; - swdd->SpanRenderFinish = radeonSpanRenderFinish; + struct swrast_device_driver *swdd = + _swrast_GetDeviceDriverReference(ctx); + swdd->SpanRenderStart = radeonSpanRenderStart; + swdd->SpanRenderFinish = radeonSpanRenderFinish; } - /** * Plug in the Get/Put routines for the given driRenderbuffer. */ -void -radeonSetSpanFunctions(driRenderbuffer *drb, const GLvisual *vis) +void radeonSetSpanFunctions(driRenderbuffer * drb, const GLvisual * vis) { - if (drb->Base.InternalFormat == GL_RGBA) { - if (vis->redBits == 5 && vis->greenBits == 6 && vis->blueBits == 5) { - radeonInitPointers_RGB565(&drb->Base); - } - else { - radeonInitPointers_ARGB8888(&drb->Base); - } - } - else if (drb->Base.InternalFormat == GL_DEPTH_COMPONENT16) { - radeonInitDepthPointers_z16(&drb->Base); - } - else if (drb->Base.InternalFormat == GL_DEPTH_COMPONENT24) { - radeonInitDepthPointers_z24_s8(&drb->Base); - } - else if (drb->Base.InternalFormat == GL_STENCIL_INDEX8_EXT) { - radeonInitStencilPointers_z24_s8(&drb->Base); - } + if (drb->Base.InternalFormat == GL_RGBA) { + if (vis->redBits == 5 && vis->greenBits == 6 + && vis->blueBits == 5) { + radeonInitPointers_RGB565(&drb->Base); + } else { + radeonInitPointers_ARGB8888(&drb->Base); + } + } else if (drb->Base.InternalFormat == GL_DEPTH_COMPONENT16) { + radeonInitDepthPointers_z16(&drb->Base); + } else if (drb->Base.InternalFormat == GL_DEPTH_COMPONENT24) { + radeonInitDepthPointers_z24_s8(&drb->Base); + } else if (drb->Base.InternalFormat == GL_STENCIL_INDEX8_EXT) { + radeonInitStencilPointers_z24_s8(&drb->Base); + } } diff --git a/src/mesa/drivers/dri/radeon/radeon_span.h b/src/mesa/drivers/dri/radeon/radeon_span.h index 13b308e1c41..56bbb5a713e 100644 --- a/src/mesa/drivers/dri/radeon/radeon_span.h +++ b/src/mesa/drivers/dri/radeon/radeon_span.h @@ -1,8 +1,12 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/radeon/radeon_span.h,v 1.2 2002/02/22 21:45:01 dawes Exp $ */ /************************************************************************** Copyright 2000, 2001 ATI Technologies Inc., Ontario, Canada, and VA Linux Systems Inc., Fremont, California. +Copyright (C) The Weather Channel, Inc. 2002. All Rights Reserved. + +The Weather Channel (TM) funded Tungsten Graphics to develop the +initial release of the Radeon 8500 driver under the XFree86 license. +This notice must be preserved. All Rights Reserved. @@ -30,8 +34,9 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* * Authors: - * Kevin E. Martin * Gareth Hughes + * Keith Whitwell + * Kevin E. Martin */ #ifndef __RADEON_SPAN_H__ @@ -40,7 +45,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "drirenderbuffer.h" extern void radeonInitSpanFuncs( GLcontext *ctx ); - extern void radeonSetSpanFunctions(driRenderbuffer *rb, const GLvisual *vis); #endif -- cgit v1.2.3 From 2db667290a19d15122d8d0c011f4b813bb542bc5 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 18:06:10 +0000 Subject: r300: Further reduced the diff between radeon_span.[ch]. --- src/mesa/drivers/dri/r300/radeon_span.c | 2 -- src/mesa/drivers/dri/radeon/radeon_span.c | 3 +++ 2 files changed, 3 insertions(+), 2 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/radeon_span.c b/src/mesa/drivers/dri/r300/radeon_span.c index 9cae955de8b..8b20034b191 100644 --- a/src/mesa/drivers/dri/r300/radeon_span.c +++ b/src/mesa/drivers/dri/r300/radeon_span.c @@ -40,9 +40,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ -#include #include "glheader.h" -#include "imports.h" #include "swrast/swrast.h" #include "r300_state.h" diff --git a/src/mesa/drivers/dri/radeon/radeon_span.c b/src/mesa/drivers/dri/radeon/radeon_span.c index 39452f8b4e7..fd7a8c4fbfc 100644 --- a/src/mesa/drivers/dri/radeon/radeon_span.c +++ b/src/mesa/drivers/dri/radeon/radeon_span.c @@ -179,6 +179,9 @@ radeon_mba_z16(const driRenderbuffer * drb, GLint x, GLint y) #include "depthtmp.h" /* 24 bit depth, 8 bit stencil depthbuffer functions + * + * Careful: It looks like the R300 uses ZZZS byte order while the R200 + * uses SZZZ for 24 bit depth, 8 bit stencil mode. */ #define WRITE_DEPTH( _x, _y, d ) \ do { \ -- cgit v1.2.3 From ed42bd6e2005e8d725b29b26f6062e5c008efcce Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 18:07:16 +0000 Subject: r300: Removed the obsolete GLX_DIRECT_RENDERING define. --- src/mesa/drivers/dri/r300/Makefile | 2 +- src/mesa/drivers/dri/r300/r300_maos.h | 3 --- src/mesa/drivers/dri/r300/r300_tex.h | 3 --- 3 files changed, 1 insertion(+), 7 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/Makefile b/src/mesa/drivers/dri/r300/Makefile index cd05927e5e3..b0b47be4a24 100644 --- a/src/mesa/drivers/dri/r300/Makefile +++ b/src/mesa/drivers/dri/r300/Makefile @@ -45,7 +45,7 @@ DRIVER_SOURCES = \ C_SOURCES = $(COMMON_SOURCES) $(DRIVER_SOURCES) -DRIVER_DEFINES = -DCOMPILE_R300 -DGLX_DIRECT_RENDERING -DR200_MERGED=0 \ +DRIVER_DEFINES = -DCOMPILE_R300 -DR200_MERGED=0 \ -DRADEON_COMMON=1 -DRADEON_COMMON_FOR_R300 SYMLINKS = \ diff --git a/src/mesa/drivers/dri/r300/r300_maos.h b/src/mesa/drivers/dri/r300/r300_maos.h index 67fc6e2490d..055e8c58eaf 100644 --- a/src/mesa/drivers/dri/r300/r300_maos.h +++ b/src/mesa/drivers/dri/r300/r300_maos.h @@ -35,8 +35,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef __R300_MAOS_H__ #define __R300_MAOS_H__ -#ifdef GLX_DIRECT_RENDERING - #include "r300_context.h" extern void r300EmitElts(GLcontext * ctx, void *elts, unsigned long n_elts, @@ -50,4 +48,3 @@ void r300UseArrays(GLcontext * ctx); extern void r300ReleaseArrays(GLcontext * ctx); #endif -#endif diff --git a/src/mesa/drivers/dri/r300/r300_tex.h b/src/mesa/drivers/dri/r300/r300_tex.h index 10aabc8b4b7..74fa08e97d9 100644 --- a/src/mesa/drivers/dri/r300/r300_tex.h +++ b/src/mesa/drivers/dri/r300/r300_tex.h @@ -35,8 +35,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef __r300_TEX_H__ #define __r300_TEX_H__ -#ifdef GLX_DIRECT_RENDERING - extern void r300UpdateTextureState(GLcontext * ctx); extern int r300UploadTexImages(r300ContextPtr rmesa, r300TexObjPtr t, @@ -46,5 +44,4 @@ extern void r300DestroyTexObj(r300ContextPtr rmesa, r300TexObjPtr t); extern void r300InitTextureFuncs(struct dd_function_table *functions); -#endif #endif /* __r300_TEX_H__ */ -- cgit v1.2.3 From 0e6b7eb9c018e2b1e25144ac652350c33768788b Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 18:11:38 +0000 Subject: r300: Don't need to sleep here; might cause performance problems the first time. --- src/mesa/drivers/dri/r300/radeon_span.c | 1 - 1 file changed, 1 deletion(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/radeon_span.c b/src/mesa/drivers/dri/r300/radeon_span.c index 8b20034b191..5e85733ae66 100644 --- a/src/mesa/drivers/dri/r300/radeon_span.c +++ b/src/mesa/drivers/dri/r300/radeon_span.c @@ -244,7 +244,6 @@ static void radeonSpanRenderStart(GLcontext * ctx) fprintf(stderr, "Try R300_SPAN_DISABLE_LOCKING env var if this hangs.\n"); fflush(stderr); - sleep(1); } first = 0; } -- cgit v1.2.3 From 967c2d220d795d9f16dbba413d57cb9dcd58ae6d Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 18:14:42 +0000 Subject: r300: Converted "rp" variables (r300_fragment_program) to "fp". --- src/mesa/drivers/dri/r300/r300_fragprog.c | 742 +++++++++++++++--------------- src/mesa/drivers/dri/r300/r300_fragprog.h | 2 +- src/mesa/drivers/dri/r300/r300_state.c | 64 +-- 3 files changed, 404 insertions(+), 404 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_fragprog.c b/src/mesa/drivers/dri/r300/r300_fragprog.c index 53866414f93..556e3041ed7 100644 --- a/src/mesa/drivers/dri/r300/r300_fragprog.c +++ b/src/mesa/drivers/dri/r300/r300_fragprog.c @@ -58,11 +58,11 @@ #define ERROR(fmt, args...) do { \ fprintf(stderr, "%s::%s(): " fmt "\n", \ __FILE__, __func__, ##args); \ - rp->error = GL_TRUE; \ + fp->error = GL_TRUE; \ } while(0) #define PFS_INVAL 0xFFFFFFFF -#define COMPILE_STATE struct r300_pfs_compile_state *cs = rp->cs +#define COMPILE_STATE struct r300_pfs_compile_state *cs = fp->cs #define SWIZZLE_XYZ 0 #define SWIZZLE_XXX 1 @@ -76,7 +76,7 @@ #define SWIZZLE_000 9 #define SWIZZLE_HHH 10 -#define swizzle(r, x, y, z, w) do_swizzle(rp, r, \ +#define swizzle(r, x, y, z, w) do_swizzle(fp, r, \ ((SWIZZLE_##x<<0)| \ (SWIZZLE_##y<<3)| \ (SWIZZLE_##z<<6)| \ @@ -301,15 +301,15 @@ static const GLuint pfs_zero = REG(REG_TYPE_CONST, /* * Common functions prototypes */ -static void dump_program(struct r300_fragment_program *rp); -static void emit_arith(struct r300_fragment_program *rp, int op, +static void dump_program(struct r300_fragment_program *fp); +static void emit_arith(struct r300_fragment_program *fp, int op, GLuint dest, int mask, GLuint src0, GLuint src1, GLuint src2, int flags); /** * Get an R300 temporary that can be written to in the given slot. */ -static int get_hw_temp(struct r300_fragment_program *rp, int slot) +static int get_hw_temp(struct r300_fragment_program *fp, int slot) { COMPILE_STATE; int r; @@ -339,8 +339,8 @@ static int get_hw_temp(struct r300_fragment_program *rp, int slot) cs->hwtemps[r].vector_valid = 0; cs->hwtemps[r].scalar_valid = 0; - if (r > rp->max_temp_idx) - rp->max_temp_idx = r; + if (r > fp->max_temp_idx) + fp->max_temp_idx = r; return r; } @@ -348,7 +348,7 @@ static int get_hw_temp(struct r300_fragment_program *rp, int slot) /** * Get an R300 temporary that will act as a TEX destination register. */ -static int get_hw_temp_tex(struct r300_fragment_program *rp) +static int get_hw_temp_tex(struct r300_fragment_program *fp) { COMPILE_STATE; int r; @@ -363,7 +363,7 @@ static int get_hw_temp_tex(struct r300_fragment_program *rp) } if (r >= PFS_NUM_TEMP_REGS) - return get_hw_temp(rp, 0); /* Will cause an indirection */ + return get_hw_temp(fp, 0); /* Will cause an indirection */ cs->hwtemps[r].reserved = cs->hwtemps[r].free; cs->hwtemps[r].free = -1; @@ -375,8 +375,8 @@ static int get_hw_temp_tex(struct r300_fragment_program *rp) cs->hwtemps[r].vector_valid = cs->nrslots; cs->hwtemps[r].scalar_valid = cs->nrslots; - if (r > rp->max_temp_idx) - rp->max_temp_idx = r; + if (r > fp->max_temp_idx) + fp->max_temp_idx = r; return r; } @@ -384,7 +384,7 @@ static int get_hw_temp_tex(struct r300_fragment_program *rp) /** * Mark the given hardware register as free. */ -static void free_hw_temp(struct r300_fragment_program *rp, int idx) +static void free_hw_temp(struct r300_fragment_program *fp, int idx) { COMPILE_STATE; @@ -403,7 +403,7 @@ static void free_hw_temp(struct r300_fragment_program *rp, int idx) /** * Create a new Mesa temporary register. */ -static GLuint get_temp_reg(struct r300_fragment_program *rp) +static GLuint get_temp_reg(struct r300_fragment_program *fp) { COMPILE_STATE; GLuint r = undef; @@ -429,7 +429,7 @@ static GLuint get_temp_reg(struct r300_fragment_program *rp) * Create a new Mesa temporary register that will act as the destination * register for a texture read. */ -static GLuint get_temp_reg_tex(struct r300_fragment_program *rp) +static GLuint get_temp_reg_tex(struct r300_fragment_program *fp) { COMPILE_STATE; GLuint r = undef; @@ -443,7 +443,7 @@ static GLuint get_temp_reg_tex(struct r300_fragment_program *rp) cs->temp_in_use |= (1 << --index); cs->temps[index].refcount = 0xFFFFFFFF; - cs->temps[index].reg = get_hw_temp_tex(rp); + cs->temps[index].reg = get_hw_temp_tex(fp); REG_SET_TYPE(r, REG_TYPE_TEMP); REG_SET_INDEX(r, index); @@ -454,7 +454,7 @@ static GLuint get_temp_reg_tex(struct r300_fragment_program *rp) /** * Free a Mesa temporary and the associated R300 temporary. */ -static void free_temp(struct r300_fragment_program *rp, GLuint r) +static void free_temp(struct r300_fragment_program *fp, GLuint r) { COMPILE_STATE; GLuint index = REG_GET_INDEX(r); @@ -463,11 +463,11 @@ static void free_temp(struct r300_fragment_program *rp, GLuint r) return; if (REG_GET_TYPE(r) == REG_TYPE_TEMP) { - free_hw_temp(rp, cs->temps[index].reg); + free_hw_temp(fp, cs->temps[index].reg); cs->temps[index].reg = -1; cs->temp_in_use &= ~(1 << index); } else if (REG_GET_TYPE(r) == REG_TYPE_INPUT) { - free_hw_temp(rp, cs->inputs[index].reg); + free_hw_temp(fp, cs->inputs[index].reg); cs->inputs[index].reg = -1; } } @@ -481,25 +481,25 @@ static void free_temp(struct r300_fragment_program *rp, GLuint r) * of the fragment program (actually, up until the next time the fragment * program is translated). */ -static GLuint emit_const4fv(struct r300_fragment_program *rp, +static GLuint emit_const4fv(struct r300_fragment_program *fp, const GLfloat * cp) { GLuint reg = undef; int index; - for (index = 0; index < rp->const_nr; ++index) { - if (rp->constant[index] == cp) + for (index = 0; index < fp->const_nr; ++index) { + if (fp->constant[index] == cp) break; } - if (index >= rp->const_nr) { + if (index >= fp->const_nr) { if (index >= PFS_NUM_CONST_REGS) { ERROR("Out of hw constants!\n"); return reg; } - rp->const_nr++; - rp->constant[index] = cp; + fp->const_nr++; + fp->constant[index] = cp; } REG_SET_TYPE(reg, REG_TYPE_CONST); @@ -530,7 +530,7 @@ static inline GLuint absolute(GLuint r) return r; } -static int swz_native(struct r300_fragment_program *rp, +static int swz_native(struct r300_fragment_program *fp, GLuint src, GLuint * r, GLuint arbneg) { /* Native swizzle, handle negation */ @@ -544,13 +544,13 @@ static int swz_native(struct r300_fragment_program *rp, *r = src; } else { if (!REG_GET_VALID(*r)) - *r = get_temp_reg(rp); + *r = get_temp_reg(fp); src |= REG_NEGV_MASK; - emit_arith(rp, + emit_arith(fp, PFS_OP_MAD, *r, arbneg & 0x7, keep(src), pfs_one, pfs_zero, 0); src = src & ~REG_NEGV_MASK; - emit_arith(rp, + emit_arith(fp, PFS_OP_MAD, *r, (arbneg ^ 0x7) | WRITEMASK_W, @@ -560,7 +560,7 @@ static int swz_native(struct r300_fragment_program *rp, return 3; } -static int swz_emit_partial(struct r300_fragment_program *rp, +static int swz_emit_partial(struct r300_fragment_program *fp, GLuint src, GLuint * r, int mask, int mc, GLuint arbneg) { @@ -568,7 +568,7 @@ static int swz_emit_partial(struct r300_fragment_program *rp, GLuint wmask = 0; if (!REG_GET_VALID(*r)) - *r = get_temp_reg(rp); + *r = get_temp_reg(fp); /* A partial match, VSWZ/mask define what parts of the * desired swizzle we match @@ -582,7 +582,7 @@ static int swz_emit_partial(struct r300_fragment_program *rp, if (tmp) { tmp = tmp ^ s_mask[mask].mask; if (tmp) { - emit_arith(rp, + emit_arith(fp, PFS_OP_MAD, *r, arbneg & s_mask[mask].mask, @@ -593,7 +593,7 @@ static int swz_emit_partial(struct r300_fragment_program *rp, } else { REG_SET_NO_USE(src, GL_FALSE); } - emit_arith(rp, + emit_arith(fp, PFS_OP_MAD, *r, tmp | wmask, src, pfs_one, pfs_zero, 0); } else { @@ -602,7 +602,7 @@ static int swz_emit_partial(struct r300_fragment_program *rp, } else { REG_SET_NO_USE(src, GL_FALSE); } - emit_arith(rp, + emit_arith(fp, PFS_OP_MAD, *r, (arbneg & s_mask[mask].mask) | wmask, @@ -614,7 +614,7 @@ static int swz_emit_partial(struct r300_fragment_program *rp, } else { REG_SET_NO_USE(src, GL_FALSE); } - emit_arith(rp, PFS_OP_MAD, + emit_arith(fp, PFS_OP_MAD, *r, s_mask[mask].mask | wmask, src, pfs_one, pfs_zero, 0); @@ -623,7 +623,7 @@ static int swz_emit_partial(struct r300_fragment_program *rp, return s_mask[mask].count; } -static GLuint do_swizzle(struct r300_fragment_program *rp, +static GLuint do_swizzle(struct r300_fragment_program *fp, GLuint src, GLuint arbswz, GLuint arbneg) { GLuint r = undef; @@ -636,8 +636,8 @@ static GLuint do_swizzle(struct r300_fragment_program *rp, */ #if 0 if (REG_GET_VSWZ(src) != SWIZZLE_XYZ || REG_GET_SSWZ(src) != SWIZZLE_W) { - GLuint temp = get_temp_reg(rp); - emit_arith(rp, + GLuint temp = get_temp_reg(fp); + emit_arith(fp, PFS_OP_MAD, temp, WRITEMASK_XYZW, src, pfs_one, pfs_zero, 0); src = temp; @@ -680,10 +680,10 @@ static GLuint do_swizzle(struct r300_fragment_program *rp, if (chash == (arbswz & s_mask[c_mask].hash)) { if (s_mask[c_mask].count == 3) { - v_match += swz_native(rp, + v_match += swz_native(fp, src, &r, arbneg); } else { - v_match += swz_emit_partial(rp, + v_match += swz_emit_partial(fp, src, &r, c_mask, @@ -708,7 +708,7 @@ static GLuint do_swizzle(struct r300_fragment_program *rp, return r; } -static GLuint t_src(struct r300_fragment_program *rp, +static GLuint t_src(struct r300_fragment_program *fp, struct prog_src_register fpsrc) { GLuint r = undef; @@ -725,19 +725,19 @@ static GLuint t_src(struct r300_fragment_program *rp, REG_SET_TYPE(r, REG_TYPE_INPUT); break; case PROGRAM_LOCAL_PARAM: - r = emit_const4fv(rp, - rp->mesa_program.Base.LocalParams[fpsrc. + r = emit_const4fv(fp, + fp->mesa_program.Base.LocalParams[fpsrc. Index]); break; case PROGRAM_ENV_PARAM: - r = emit_const4fv(rp, - rp->ctx->FragmentProgram.Parameters[fpsrc. + r = emit_const4fv(fp, + fp->ctx->FragmentProgram.Parameters[fpsrc. Index]); break; case PROGRAM_STATE_VAR: case PROGRAM_NAMED_PARAM: - r = emit_const4fv(rp, - rp->mesa_program.Base.Parameters-> + r = emit_const4fv(fp, + fp->mesa_program.Base.Parameters-> ParameterValues[fpsrc.Index]); break; default: @@ -747,11 +747,11 @@ static GLuint t_src(struct r300_fragment_program *rp, /* no point swizzling ONE/ZERO/HALF constants... */ if (REG_GET_VSWZ(r) < SWIZZLE_111 || REG_GET_SSWZ(r) < SWIZZLE_ZERO) - r = do_swizzle(rp, r, fpsrc.Swizzle, fpsrc.NegateBase); + r = do_swizzle(fp, r, fpsrc.Swizzle, fpsrc.NegateBase); return r; } -static GLuint t_scalar_src(struct r300_fragment_program *rp, +static GLuint t_scalar_src(struct r300_fragment_program *fp, struct prog_src_register fpsrc) { struct prog_src_register src = fpsrc; @@ -759,10 +759,10 @@ static GLuint t_scalar_src(struct r300_fragment_program *rp, src.Swizzle = ((sc << 0) | (sc << 3) | (sc << 6) | (sc << 9)); - return t_src(rp, src); + return t_src(fp, src); } -static GLuint t_dst(struct r300_fragment_program *rp, +static GLuint t_dst(struct r300_fragment_program *fp, struct prog_dst_register dest) { GLuint r = undef; @@ -791,7 +791,7 @@ static GLuint t_dst(struct r300_fragment_program *rp, } } -static int t_hw_src(struct r300_fragment_program *rp, GLuint src, GLboolean tex) +static int t_hw_src(struct r300_fragment_program *fp, GLuint src, GLboolean tex) { COMPILE_STATE; int idx; @@ -803,18 +803,18 @@ static int t_hw_src(struct r300_fragment_program *rp, GLuint src, GLboolean tex) * hasn't been written to. Undefined results. */ if (cs->temps[index].reg == -1) - cs->temps[index].reg = get_hw_temp(rp, cs->nrslots); + cs->temps[index].reg = get_hw_temp(fp, cs->nrslots); idx = cs->temps[index].reg; if (!REG_GET_NO_USE(src) && (--cs->temps[index].refcount == 0)) - free_temp(rp, src); + free_temp(fp, src); break; case REG_TYPE_INPUT: idx = cs->inputs[index].reg; if (!REG_GET_NO_USE(src) && (--cs->inputs[index].refcount == 0)) - free_hw_temp(rp, cs->inputs[index].reg); + free_hw_temp(fp, cs->inputs[index].reg); break; case REG_TYPE_CONST: return (index | SRC_CONST); @@ -829,7 +829,7 @@ static int t_hw_src(struct r300_fragment_program *rp, GLuint src, GLboolean tex) return idx; } -static int t_hw_dst(struct r300_fragment_program *rp, +static int t_hw_dst(struct r300_fragment_program *fp, GLuint dest, GLboolean tex, int slot) { COMPILE_STATE; @@ -841,15 +841,15 @@ static int t_hw_dst(struct r300_fragment_program *rp, case REG_TYPE_TEMP: if (cs->temps[REG_GET_INDEX(dest)].reg == -1) { if (!tex) { - cs->temps[index].reg = get_hw_temp(rp, slot); + cs->temps[index].reg = get_hw_temp(fp, slot); } else { - cs->temps[index].reg = get_hw_temp_tex(rp); + cs->temps[index].reg = get_hw_temp_tex(fp); } } idx = cs->temps[index].reg; if (!REG_GET_NO_USE(dest) && (--cs->temps[index].refcount == 0)) - free_temp(rp, dest); + free_temp(fp, dest); cs->dest_in_node |= (1 << idx); cs->used_in_node |= (1 << idx); @@ -857,11 +857,11 @@ static int t_hw_dst(struct r300_fragment_program *rp, case REG_TYPE_OUTPUT: switch (index) { case FRAG_RESULT_COLR: - rp->node[rp->cur_node].flags |= + fp->node[fp->cur_node].flags |= R300_PFS_NODE_OUTPUT_COLOR; break; case FRAG_RESULT_DEPR: - rp->node[rp->cur_node].flags |= + fp->node[fp->cur_node].flags |= R300_PFS_NODE_OUTPUT_DEPTH; break; } @@ -875,7 +875,7 @@ static int t_hw_dst(struct r300_fragment_program *rp, return idx; } -static void emit_nop(struct r300_fragment_program *rp) +static void emit_nop(struct r300_fragment_program *fp) { COMPILE_STATE; @@ -884,18 +884,18 @@ static void emit_nop(struct r300_fragment_program *rp) return; } - rp->alu.inst[cs->nrslots].inst0 = NOP_INST0; - rp->alu.inst[cs->nrslots].inst1 = NOP_INST1; - rp->alu.inst[cs->nrslots].inst2 = NOP_INST2; - rp->alu.inst[cs->nrslots].inst3 = NOP_INST3; + fp->alu.inst[cs->nrslots].inst0 = NOP_INST0; + fp->alu.inst[cs->nrslots].inst1 = NOP_INST1; + fp->alu.inst[cs->nrslots].inst2 = NOP_INST2; + fp->alu.inst[cs->nrslots].inst3 = NOP_INST3; cs->nrslots++; } -static void emit_tex(struct r300_fragment_program *rp, +static void emit_tex(struct r300_fragment_program *fp, struct prog_instruction *fpi, int opcode) { COMPILE_STATE; - GLuint coord = t_src(rp, fpi->SrcReg[0]); + GLuint coord = t_src(fp, fpi->SrcReg[0]); GLuint dest = undef, rdest = undef; GLuint din, uin; int unit = fpi->TexSrcUnit; @@ -925,49 +925,49 @@ static void emit_tex(struct r300_fragment_program *rp, tokens[2] = unit; factor_index = - _mesa_add_state_reference(rp->mesa_program.Base. + _mesa_add_state_reference(fp->mesa_program.Base. Parameters, tokens); factorreg = - emit_const4fv(rp, - rp->mesa_program.Base.Parameters-> + emit_const4fv(fp, + fp->mesa_program.Base.Parameters-> ParameterValues[factor_index]); - tempreg = keep(get_temp_reg(rp)); + tempreg = keep(get_temp_reg(fp)); - emit_arith(rp, PFS_OP_MAD, tempreg, WRITEMASK_XYZW, + emit_arith(fp, PFS_OP_MAD, tempreg, WRITEMASK_XYZW, coord, factorreg, pfs_zero, 0); /* Ensure correct node indirection */ uin = cs->used_in_node; din = cs->dest_in_node; - hwsrc = t_hw_src(rp, tempreg, GL_TRUE); + hwsrc = t_hw_src(fp, tempreg, GL_TRUE); } else { - hwsrc = t_hw_src(rp, coord, GL_TRUE); + hwsrc = t_hw_src(fp, coord, GL_TRUE); } - dest = t_dst(rp, fpi->DstReg); + dest = t_dst(fp, fpi->DstReg); /* r300 doesn't seem to be able to do TEX->output reg */ if (REG_GET_TYPE(dest) == REG_TYPE_OUTPUT) { rdest = dest; - dest = get_temp_reg_tex(rp); + dest = get_temp_reg_tex(fp); } hwdest = - t_hw_dst(rp, dest, GL_TRUE, - rp->node[rp->cur_node].alu_offset); + t_hw_dst(fp, dest, GL_TRUE, + fp->node[fp->cur_node].alu_offset); /* Use a temp that hasn't been used in this node, rather * than causing an indirection */ if (uin & (1 << hwdest)) { - free_hw_temp(rp, hwdest); - hwdest = get_hw_temp_tex(rp); + free_hw_temp(fp, hwdest); + hwdest = get_hw_temp_tex(fp); cs->temps[REG_GET_INDEX(dest)].reg = hwdest; } } else { hwdest = 0; unit = 0; - hwsrc = t_hw_src(rp, coord, GL_TRUE); + hwsrc = t_hw_src(fp, coord, GL_TRUE); } /* Indirection if source has been written in this node, or if the @@ -977,32 +977,32 @@ static void emit_tex(struct r300_fragment_program *rp, (din & (1 << hwsrc))) || (uin & (1 << hwdest))) { /* Finish off current node */ - if (rp->node[rp->cur_node].alu_offset == cs->nrslots) - emit_nop(rp); + if (fp->node[fp->cur_node].alu_offset == cs->nrslots) + emit_nop(fp); - rp->node[rp->cur_node].alu_end = - cs->nrslots - rp->node[rp->cur_node].alu_offset - 1; - assert(rp->node[rp->cur_node].alu_end >= 0); + fp->node[fp->cur_node].alu_end = + cs->nrslots - fp->node[fp->cur_node].alu_offset - 1; + assert(fp->node[fp->cur_node].alu_end >= 0); - if (++rp->cur_node >= PFS_MAX_TEX_INDIRECT) { + if (++fp->cur_node >= PFS_MAX_TEX_INDIRECT) { ERROR("too many levels of texture indirection\n"); return; } /* Start new node */ - rp->node[rp->cur_node].tex_offset = rp->tex.length; - rp->node[rp->cur_node].alu_offset = cs->nrslots; - rp->node[rp->cur_node].tex_end = -1; - rp->node[rp->cur_node].alu_end = -1; - rp->node[rp->cur_node].flags = 0; + fp->node[fp->cur_node].tex_offset = fp->tex.length; + fp->node[fp->cur_node].alu_offset = cs->nrslots; + fp->node[fp->cur_node].tex_end = -1; + fp->node[fp->cur_node].alu_end = -1; + fp->node[fp->cur_node].flags = 0; cs->used_in_node = 0; cs->dest_in_node = 0; } - if (rp->cur_node == 0) - rp->first_node_has_tex = 1; + if (fp->cur_node == 0) + fp->first_node_has_tex = 1; - rp->tex.inst[rp->tex.length++] = 0 | (hwsrc << R300_FPITX_SRC_SHIFT) + fp->tex.inst[fp->tex.length++] = 0 | (hwsrc << R300_FPITX_SRC_SHIFT) | (hwdest << R300_FPITX_DST_SHIFT) | (unit << R300_FPITX_IMAGE_SHIFT) /* not entirely sure about this */ @@ -1012,25 +1012,25 @@ static void emit_tex(struct r300_fragment_program *rp, if (REG_GET_TYPE(coord) != REG_TYPE_CONST) cs->used_in_node |= (1 << hwsrc); - rp->node[rp->cur_node].tex_end++; + fp->node[fp->cur_node].tex_end++; /* Copy from temp to output if needed */ if (REG_GET_VALID(rdest)) { - emit_arith(rp, PFS_OP_MAD, rdest, WRITEMASK_XYZW, dest, + emit_arith(fp, PFS_OP_MAD, rdest, WRITEMASK_XYZW, dest, pfs_one, pfs_zero, 0); - free_temp(rp, dest); + free_temp(fp, dest); } /* Free temp register */ if (tempreg != 0) - free_temp(rp, tempreg); + free_temp(fp, tempreg); } /** * Returns the first slot where we could possibly allow writing to dest, * according to register allocation. */ -static int get_earliest_allowed_write(struct r300_fragment_program *rp, +static int get_earliest_allowed_write(struct r300_fragment_program *fp, GLuint dest, int mask) { COMPILE_STATE; @@ -1080,7 +1080,7 @@ static int get_earliest_allowed_write(struct r300_fragment_program *rp, * * @return the index of the slot */ -static int find_and_prepare_slot(struct r300_fragment_program *rp, +static int find_and_prepare_slot(struct r300_fragment_program *fp, GLboolean emit_vop, GLboolean emit_sop, int argc, GLuint * src, GLuint dest, int mask) @@ -1105,10 +1105,10 @@ static int find_and_prepare_slot(struct r300_fragment_program *rp, if (emit_sop) used |= SLOT_OP_SCALAR; - pos = get_earliest_allowed_write(rp, dest, mask); + pos = get_earliest_allowed_write(fp, dest, mask); - if (rp->node[rp->cur_node].alu_offset > pos) - pos = rp->node[rp->cur_node].alu_offset; + if (fp->node[fp->cur_node].alu_offset > pos) + pos = fp->node[fp->cur_node].alu_offset; for (i = 0; i < argc; ++i) { if (!REG_GET_BUILTIN(src[i])) { if (emit_vop) @@ -1117,7 +1117,7 @@ static int find_and_prepare_slot(struct r300_fragment_program *rp, used |= s_swiz[REG_GET_SSWZ(src[i])].flags << i; } - hwsrc[i] = t_hw_src(rp, src[i], GL_FALSE); /* Note: sideeffects wrt refcounting! */ + hwsrc[i] = t_hw_src(fp, src[i], GL_FALSE); /* Note: sideeffects wrt refcounting! */ regnr = hwsrc[i] & 31; if (REG_GET_TYPE(src[i]) == REG_TYPE_TEMP) { @@ -1143,10 +1143,10 @@ static int find_and_prepare_slot(struct r300_fragment_program *rp, return -1; } - rp->alu.inst[pos].inst0 = NOP_INST0; - rp->alu.inst[pos].inst1 = NOP_INST1; - rp->alu.inst[pos].inst2 = NOP_INST2; - rp->alu.inst[pos].inst3 = NOP_INST3; + fp->alu.inst[pos].inst0 = NOP_INST0; + fp->alu.inst[pos].inst1 = NOP_INST1; + fp->alu.inst[pos].inst2 = NOP_INST2; + fp->alu.inst[pos].inst3 = NOP_INST3; cs->nrslots++; } @@ -1223,14 +1223,14 @@ static int find_and_prepare_slot(struct r300_fragment_program *rp, } // Emit the source fetch code - rp->alu.inst[pos].inst1 &= ~R300_FPI1_SRC_MASK; - rp->alu.inst[pos].inst1 |= + fp->alu.inst[pos].inst1 &= ~R300_FPI1_SRC_MASK; + fp->alu.inst[pos].inst1 |= ((cs->slot[pos].vsrc[0] << R300_FPI1_SRC0C_SHIFT) | (cs->slot[pos].vsrc[1] << R300_FPI1_SRC1C_SHIFT) | (cs->slot[pos].vsrc[2] << R300_FPI1_SRC2C_SHIFT)); - rp->alu.inst[pos].inst3 &= ~R300_FPI3_SRC_MASK; - rp->alu.inst[pos].inst3 |= + fp->alu.inst[pos].inst3 &= ~R300_FPI3_SRC_MASK; + fp->alu.inst[pos].inst3 |= ((cs->slot[pos].ssrc[0] << R300_FPI3_SRC0A_SHIFT) | (cs->slot[pos].ssrc[1] << R300_FPI3_SRC1A_SHIFT) | (cs->slot[pos].ssrc[2] << R300_FPI3_SRC2A_SHIFT)); @@ -1256,10 +1256,10 @@ static int find_and_prepare_slot(struct r300_fragment_program *rp, } } - rp->alu.inst[pos].inst0 &= + fp->alu.inst[pos].inst0 &= ~(R300_FPI0_ARG0C_MASK | R300_FPI0_ARG1C_MASK | R300_FPI0_ARG2C_MASK); - rp->alu.inst[pos].inst0 |= + fp->alu.inst[pos].inst0 |= (swz[0] << R300_FPI0_ARG0C_SHIFT) | (swz[1] << R300_FPI0_ARG1C_SHIFT) | (swz[2] << R300_FPI0_ARG2C_SHIFT); @@ -1285,10 +1285,10 @@ static int find_and_prepare_slot(struct r300_fragment_program *rp, } } - rp->alu.inst[pos].inst2 &= + fp->alu.inst[pos].inst2 &= ~(R300_FPI2_ARG0A_MASK | R300_FPI2_ARG1A_MASK | R300_FPI2_ARG2A_MASK); - rp->alu.inst[pos].inst2 |= + fp->alu.inst[pos].inst2 |= (swz[0] << R300_FPI2_ARG0A_SHIFT) | (swz[1] << R300_FPI2_ARG1A_SHIFT) | (swz[2] << R300_FPI2_ARG2A_SHIFT); @@ -1300,7 +1300,7 @@ static int find_and_prepare_slot(struct r300_fragment_program *rp, /** * Append an ALU instruction to the instruction list. */ -static void emit_arith(struct r300_fragment_program *rp, +static void emit_arith(struct r300_fragment_program *fp, int op, GLuint dest, int mask, @@ -1334,12 +1334,12 @@ static void emit_arith(struct r300_fragment_program *rp, emit_sop = GL_TRUE; pos = - find_and_prepare_slot(rp, emit_vop, emit_sop, argc, src, dest, + find_and_prepare_slot(fp, emit_vop, emit_sop, argc, src, dest, mask); if (pos < 0) return; - hwdest = t_hw_dst(rp, dest, GL_FALSE, pos); /* Note: Side effects wrt register allocation */ + hwdest = t_hw_dst(fp, dest, GL_FALSE, pos); /* Note: Side effects wrt register allocation */ if (flags & PFS_FLAG_SAT) { vop |= R300_FPI0_OUTC_SAT; @@ -1348,19 +1348,19 @@ static void emit_arith(struct r300_fragment_program *rp, /* Throw the pieces together and get FPI0/1 */ if (emit_vop) { - rp->alu.inst[pos].inst0 |= vop; + fp->alu.inst[pos].inst0 |= vop; - rp->alu.inst[pos].inst1 |= hwdest << R300_FPI1_DSTC_SHIFT; + fp->alu.inst[pos].inst1 |= hwdest << R300_FPI1_DSTC_SHIFT; if (REG_GET_TYPE(dest) == REG_TYPE_OUTPUT) { if (REG_GET_INDEX(dest) == FRAG_RESULT_COLR) { - rp->alu.inst[pos].inst1 |= + fp->alu.inst[pos].inst1 |= (mask & WRITEMASK_XYZ) << R300_FPI1_DSTC_OUTPUT_MASK_SHIFT; } else assert(0); } else { - rp->alu.inst[pos].inst1 |= + fp->alu.inst[pos].inst1 |= (mask & WRITEMASK_XYZ) << R300_FPI1_DSTC_REG_MASK_SHIFT; @@ -1370,22 +1370,22 @@ static void emit_arith(struct r300_fragment_program *rp, /* And now FPI2/3 */ if (emit_sop) { - rp->alu.inst[pos].inst2 |= sop; + fp->alu.inst[pos].inst2 |= sop; if (mask & WRITEMASK_W) { if (REG_GET_TYPE(dest) == REG_TYPE_OUTPUT) { if (REG_GET_INDEX(dest) == FRAG_RESULT_COLR) { - rp->alu.inst[pos].inst3 |= + fp->alu.inst[pos].inst3 |= (hwdest << R300_FPI3_DSTA_SHIFT) | R300_FPI3_DSTA_OUTPUT; } else if (REG_GET_INDEX(dest) == FRAG_RESULT_DEPR) { - rp->alu.inst[pos].inst3 |= + fp->alu.inst[pos].inst3 |= R300_FPI3_DSTA_DEPTH; } else assert(0); } else { - rp->alu.inst[pos].inst3 |= + fp->alu.inst[pos].inst3 |= (hwdest << R300_FPI3_DSTA_SHIFT) | R300_FPI3_DSTA_REG; @@ -1398,9 +1398,9 @@ static void emit_arith(struct r300_fragment_program *rp, } #if 0 -static GLuint get_attrib(struct r300_fragment_program *rp, GLuint attr) +static GLuint get_attrib(struct r300_fragment_program *fp, GLuint attr) { - struct gl_fragment_program *mp = &rp->mesa_program; + struct gl_fragment_program *mp = &fp->mesa_program; GLuint r = undef; if (!(mp->Base.InputsRead & (1 << attr))) { @@ -1455,7 +1455,7 @@ static GLfloat SinCosConsts[2][4] = { static const GLfloat LitConst[4] = { 127.999999, 127.999999, 127.999999, -127.999999 }; -static void emit_lit(struct r300_fragment_program *rp, +static void emit_lit(struct r300_fragment_program *fp, GLuint dest, int mask, GLuint src, int flags) { COMPILE_STATE; @@ -1463,7 +1463,7 @@ static void emit_lit(struct r300_fragment_program *rp, int needTemporary; GLuint temp; - cnst = emit_const4fv(rp, LitConst); + cnst = emit_const4fv(fp, LitConst); needTemporary = 0; if ((mask & WRITEMASK_XYZW) != WRITEMASK_XYZW) { @@ -1475,7 +1475,7 @@ static void emit_lit(struct r300_fragment_program *rp, } if (needTemporary) { - temp = keep(get_temp_reg(rp)); + temp = keep(get_temp_reg(fp)); } else { temp = keep(dest); } @@ -1486,49 +1486,49 @@ static void emit_lit(struct r300_fragment_program *rp, // so swizzling between the two parts can create fake dependencies. // First slot - emit_arith(rp, PFS_OP_MAX, temp, WRITEMASK_XY, + emit_arith(fp, PFS_OP_MAX, temp, WRITEMASK_XY, keep(src), pfs_zero, undef, 0); - emit_arith(rp, PFS_OP_MAX, temp, WRITEMASK_W, src, cnst, undef, 0); + emit_arith(fp, PFS_OP_MAX, temp, WRITEMASK_W, src, cnst, undef, 0); // Second slot - emit_arith(rp, PFS_OP_MIN, temp, WRITEMASK_Z, + emit_arith(fp, PFS_OP_MIN, temp, WRITEMASK_Z, swizzle(temp, W, W, W, W), cnst, undef, 0); - emit_arith(rp, PFS_OP_LG2, temp, WRITEMASK_W, + emit_arith(fp, PFS_OP_LG2, temp, WRITEMASK_W, swizzle(temp, Y, Y, Y, Y), undef, undef, 0); // Third slot // If desired, we saturate the y result here. // This does not affect the use as a condition variable in the CMP later - emit_arith(rp, PFS_OP_MAD, temp, WRITEMASK_W, + emit_arith(fp, PFS_OP_MAD, temp, WRITEMASK_W, temp, swizzle(temp, Z, Z, Z, Z), pfs_zero, 0); - emit_arith(rp, PFS_OP_MAD, temp, WRITEMASK_Y, + emit_arith(fp, PFS_OP_MAD, temp, WRITEMASK_Y, swizzle(temp, X, X, X, X), pfs_one, pfs_zero, flags); // Fourth slot - emit_arith(rp, PFS_OP_MAD, temp, WRITEMASK_X, + emit_arith(fp, PFS_OP_MAD, temp, WRITEMASK_X, pfs_one, pfs_one, pfs_zero, 0); - emit_arith(rp, PFS_OP_EX2, temp, WRITEMASK_W, temp, undef, undef, 0); + emit_arith(fp, PFS_OP_EX2, temp, WRITEMASK_W, temp, undef, undef, 0); // Fifth slot - emit_arith(rp, PFS_OP_CMP, temp, WRITEMASK_Z, + emit_arith(fp, PFS_OP_CMP, temp, WRITEMASK_Z, pfs_zero, swizzle(temp, W, W, W, W), negate(swizzle(temp, Y, Y, Y, Y)), flags); - emit_arith(rp, PFS_OP_MAD, temp, WRITEMASK_W, pfs_one, pfs_one, + emit_arith(fp, PFS_OP_MAD, temp, WRITEMASK_W, pfs_one, pfs_one, pfs_zero, 0); if (needTemporary) { - emit_arith(rp, PFS_OP_MAD, dest, mask, + emit_arith(fp, PFS_OP_MAD, dest, mask, temp, pfs_one, pfs_zero, flags); - free_temp(rp, temp); + free_temp(fp, temp); } else { // Decrease refcount of the destination - t_hw_dst(rp, dest, GL_FALSE, cs->nrslots); + t_hw_dst(fp, dest, GL_FALSE, cs->nrslots); } } -static GLboolean parse_program(struct r300_fragment_program *rp) +static GLboolean parse_program(struct r300_fragment_program *fp) { - struct gl_fragment_program *mp = &rp->mesa_program; + struct gl_fragment_program *mp = &fp->mesa_program; const struct prog_instruction *inst = mp->Base.Instructions; struct prog_instruction *fpi; GLuint src[3], dest, temp[2]; @@ -1547,30 +1547,30 @@ static GLboolean parse_program(struct r300_fragment_program *rp) flags = 0; if (fpi->Opcode != OPCODE_KIL) { - dest = t_dst(rp, fpi->DstReg); + dest = t_dst(fp, fpi->DstReg); mask = fpi->DstReg.WriteMask; } switch (fpi->Opcode) { case OPCODE_ABS: - src[0] = t_src(rp, fpi->SrcReg[0]); - emit_arith(rp, PFS_OP_MAD, dest, mask, + src[0] = t_src(fp, fpi->SrcReg[0]); + emit_arith(fp, PFS_OP_MAD, dest, mask, absolute(src[0]), pfs_one, pfs_zero, flags); break; case OPCODE_ADD: - src[0] = t_src(rp, fpi->SrcReg[0]); - src[1] = t_src(rp, fpi->SrcReg[1]); - emit_arith(rp, PFS_OP_MAD, dest, mask, + src[0] = t_src(fp, fpi->SrcReg[0]); + src[1] = t_src(fp, fpi->SrcReg[1]); + emit_arith(fp, PFS_OP_MAD, dest, mask, src[0], pfs_one, src[1], flags); break; case OPCODE_CMP: - src[0] = t_src(rp, fpi->SrcReg[0]); - src[1] = t_src(rp, fpi->SrcReg[1]); - src[2] = t_src(rp, fpi->SrcReg[2]); + src[0] = t_src(fp, fpi->SrcReg[0]); + src[1] = t_src(fp, fpi->SrcReg[1]); + src[2] = t_src(fp, fpi->SrcReg[2]); /* ARB_f_p - if src0.c < 0.0 ? src1.c : src2.c * r300 - if src2.c < 0.0 ? src1.c : src0.c */ - emit_arith(rp, PFS_OP_CMP, dest, mask, + emit_arith(fp, PFS_OP_CMP, dest, mask, src[2], src[1], src[0], flags); break; case OPCODE_COS: @@ -1582,206 +1582,206 @@ static GLboolean parse_program(struct r300_fragment_program *rp) * x = (x*2*PI)-PI * result = sin(x) */ - temp[0] = get_temp_reg(rp); - const_sin[0] = emit_const4fv(rp, SinCosConsts[0]); - const_sin[1] = emit_const4fv(rp, SinCosConsts[1]); - src[0] = t_scalar_src(rp, fpi->SrcReg[0]); + temp[0] = get_temp_reg(fp); + const_sin[0] = emit_const4fv(fp, SinCosConsts[0]); + const_sin[1] = emit_const4fv(fp, SinCosConsts[1]); + src[0] = t_scalar_src(fp, fpi->SrcReg[0]); /* add 0.5*PI and do range reduction */ - emit_arith(rp, PFS_OP_MAD, temp[0], WRITEMASK_X, + emit_arith(fp, PFS_OP_MAD, temp[0], WRITEMASK_X, swizzle(src[0], X, X, X, X), swizzle(const_sin[1], Z, Z, Z, Z), swizzle(const_sin[1], X, X, X, X), 0); - emit_arith(rp, PFS_OP_FRC, temp[0], WRITEMASK_X, + emit_arith(fp, PFS_OP_FRC, temp[0], WRITEMASK_X, swizzle(temp[0], X, X, X, X), undef, undef, 0); - emit_arith(rp, PFS_OP_MAD, temp[0], WRITEMASK_Z, swizzle(temp[0], X, X, X, X), swizzle(const_sin[1], W, W, W, W), //2*PI + emit_arith(fp, PFS_OP_MAD, temp[0], WRITEMASK_Z, swizzle(temp[0], X, X, X, X), swizzle(const_sin[1], W, W, W, W), //2*PI negate(swizzle(const_sin[0], Z, Z, Z, Z)), //-PI 0); /* SIN */ - emit_arith(rp, PFS_OP_MAD, temp[0], + emit_arith(fp, PFS_OP_MAD, temp[0], WRITEMASK_X | WRITEMASK_Y, swizzle(temp[0], Z, Z, Z, Z), const_sin[0], pfs_zero, 0); - emit_arith(rp, PFS_OP_MAD, temp[0], WRITEMASK_X, + emit_arith(fp, PFS_OP_MAD, temp[0], WRITEMASK_X, swizzle(temp[0], Y, Y, Y, Y), absolute(swizzle(temp[0], Z, Z, Z, Z)), swizzle(temp[0], X, X, X, X), 0); - emit_arith(rp, PFS_OP_MAD, temp[0], WRITEMASK_Y, + emit_arith(fp, PFS_OP_MAD, temp[0], WRITEMASK_Y, swizzle(temp[0], X, X, X, X), absolute(swizzle(temp[0], X, X, X, X)), negate(swizzle(temp[0], X, X, X, X)), 0); - emit_arith(rp, PFS_OP_MAD, dest, mask, + emit_arith(fp, PFS_OP_MAD, dest, mask, swizzle(temp[0], Y, Y, Y, Y), swizzle(const_sin[0], W, W, W, W), swizzle(temp[0], X, X, X, X), flags); - free_temp(rp, temp[0]); + free_temp(fp, temp[0]); break; case OPCODE_DP3: - src[0] = t_src(rp, fpi->SrcReg[0]); - src[1] = t_src(rp, fpi->SrcReg[1]); - emit_arith(rp, PFS_OP_DP3, dest, mask, + src[0] = t_src(fp, fpi->SrcReg[0]); + src[1] = t_src(fp, fpi->SrcReg[1]); + emit_arith(fp, PFS_OP_DP3, dest, mask, src[0], src[1], undef, flags); break; case OPCODE_DP4: - src[0] = t_src(rp, fpi->SrcReg[0]); - src[1] = t_src(rp, fpi->SrcReg[1]); - emit_arith(rp, PFS_OP_DP4, dest, mask, + src[0] = t_src(fp, fpi->SrcReg[0]); + src[1] = t_src(fp, fpi->SrcReg[1]); + emit_arith(fp, PFS_OP_DP4, dest, mask, src[0], src[1], undef, flags); break; case OPCODE_DPH: - src[0] = t_src(rp, fpi->SrcReg[0]); - src[1] = t_src(rp, fpi->SrcReg[1]); + src[0] = t_src(fp, fpi->SrcReg[0]); + src[1] = t_src(fp, fpi->SrcReg[1]); /* src0.xyz1 -> temp * DP4 dest, temp, src1 */ #if 0 - temp[0] = get_temp_reg(rp); + temp[0] = get_temp_reg(fp); src[0].s_swz = SWIZZLE_ONE; - emit_arith(rp, PFS_OP_MAD, temp[0], mask, + emit_arith(fp, PFS_OP_MAD, temp[0], mask, src[0], pfs_one, pfs_zero, 0); - emit_arith(rp, PFS_OP_DP4, dest, mask, + emit_arith(fp, PFS_OP_DP4, dest, mask, temp[0], src[1], undef, flags); - free_temp(rp, temp[0]); + free_temp(fp, temp[0]); #else - emit_arith(rp, PFS_OP_DP4, dest, mask, + emit_arith(fp, PFS_OP_DP4, dest, mask, swizzle(src[0], X, Y, Z, ONE), src[1], undef, flags); #endif break; case OPCODE_DST: - src[0] = t_src(rp, fpi->SrcReg[0]); - src[1] = t_src(rp, fpi->SrcReg[1]); + src[0] = t_src(fp, fpi->SrcReg[0]); + src[1] = t_src(fp, fpi->SrcReg[1]); /* dest.y = src0.y * src1.y */ if (mask & WRITEMASK_Y) - emit_arith(rp, PFS_OP_MAD, dest, WRITEMASK_Y, + emit_arith(fp, PFS_OP_MAD, dest, WRITEMASK_Y, keep(src[0]), keep(src[1]), pfs_zero, flags); /* dest.z = src0.z */ if (mask & WRITEMASK_Z) - emit_arith(rp, PFS_OP_MAD, dest, WRITEMASK_Z, + emit_arith(fp, PFS_OP_MAD, dest, WRITEMASK_Z, src[0], pfs_one, pfs_zero, flags); /* result.x = 1.0 * result.w = src1.w */ if (mask & WRITEMASK_XW) { REG_SET_VSWZ(src[1], SWIZZLE_111); /*Cheat */ - emit_arith(rp, PFS_OP_MAD, dest, + emit_arith(fp, PFS_OP_MAD, dest, mask & WRITEMASK_XW, src[1], pfs_one, pfs_zero, flags); } break; case OPCODE_EX2: - src[0] = t_scalar_src(rp, fpi->SrcReg[0]); - emit_arith(rp, PFS_OP_EX2, dest, mask, + src[0] = t_scalar_src(fp, fpi->SrcReg[0]); + emit_arith(fp, PFS_OP_EX2, dest, mask, src[0], undef, undef, flags); break; case OPCODE_FLR: - src[0] = t_src(rp, fpi->SrcReg[0]); - temp[0] = get_temp_reg(rp); + src[0] = t_src(fp, fpi->SrcReg[0]); + temp[0] = get_temp_reg(fp); /* FRC temp, src0 * MAD dest, src0, 1.0, -temp */ - emit_arith(rp, PFS_OP_FRC, temp[0], mask, + emit_arith(fp, PFS_OP_FRC, temp[0], mask, keep(src[0]), undef, undef, 0); - emit_arith(rp, PFS_OP_MAD, dest, mask, + emit_arith(fp, PFS_OP_MAD, dest, mask, src[0], pfs_one, negate(temp[0]), flags); - free_temp(rp, temp[0]); + free_temp(fp, temp[0]); break; case OPCODE_FRC: - src[0] = t_src(rp, fpi->SrcReg[0]); - emit_arith(rp, PFS_OP_FRC, dest, mask, + src[0] = t_src(fp, fpi->SrcReg[0]); + emit_arith(fp, PFS_OP_FRC, dest, mask, src[0], undef, undef, flags); break; case OPCODE_KIL: - emit_tex(rp, fpi, R300_FPITX_OP_KIL); + emit_tex(fp, fpi, R300_FPITX_OP_KIL); break; case OPCODE_LG2: - src[0] = t_scalar_src(rp, fpi->SrcReg[0]); - emit_arith(rp, PFS_OP_LG2, dest, mask, + src[0] = t_scalar_src(fp, fpi->SrcReg[0]); + emit_arith(fp, PFS_OP_LG2, dest, mask, src[0], undef, undef, flags); break; case OPCODE_LIT: - src[0] = t_src(rp, fpi->SrcReg[0]); - emit_lit(rp, dest, mask, src[0], flags); + src[0] = t_src(fp, fpi->SrcReg[0]); + emit_lit(fp, dest, mask, src[0], flags); break; case OPCODE_LRP: - src[0] = t_src(rp, fpi->SrcReg[0]); - src[1] = t_src(rp, fpi->SrcReg[1]); - src[2] = t_src(rp, fpi->SrcReg[2]); + src[0] = t_src(fp, fpi->SrcReg[0]); + src[1] = t_src(fp, fpi->SrcReg[1]); + src[2] = t_src(fp, fpi->SrcReg[2]); /* result = tmp0tmp1 + (1 - tmp0)tmp2 * = tmp0tmp1 + tmp2 + (-tmp0)tmp2 * MAD temp, -tmp0, tmp2, tmp2 * MAD result, tmp0, tmp1, temp */ - temp[0] = get_temp_reg(rp); - emit_arith(rp, PFS_OP_MAD, temp[0], mask, + temp[0] = get_temp_reg(fp); + emit_arith(fp, PFS_OP_MAD, temp[0], mask, negate(keep(src[0])), keep(src[2]), src[2], 0); - emit_arith(rp, PFS_OP_MAD, dest, mask, + emit_arith(fp, PFS_OP_MAD, dest, mask, src[0], src[1], temp[0], flags); - free_temp(rp, temp[0]); + free_temp(fp, temp[0]); break; case OPCODE_MAD: - src[0] = t_src(rp, fpi->SrcReg[0]); - src[1] = t_src(rp, fpi->SrcReg[1]); - src[2] = t_src(rp, fpi->SrcReg[2]); - emit_arith(rp, PFS_OP_MAD, dest, mask, + src[0] = t_src(fp, fpi->SrcReg[0]); + src[1] = t_src(fp, fpi->SrcReg[1]); + src[2] = t_src(fp, fpi->SrcReg[2]); + emit_arith(fp, PFS_OP_MAD, dest, mask, src[0], src[1], src[2], flags); break; case OPCODE_MAX: - src[0] = t_src(rp, fpi->SrcReg[0]); - src[1] = t_src(rp, fpi->SrcReg[1]); - emit_arith(rp, PFS_OP_MAX, dest, mask, + src[0] = t_src(fp, fpi->SrcReg[0]); + src[1] = t_src(fp, fpi->SrcReg[1]); + emit_arith(fp, PFS_OP_MAX, dest, mask, src[0], src[1], undef, flags); break; case OPCODE_MIN: - src[0] = t_src(rp, fpi->SrcReg[0]); - src[1] = t_src(rp, fpi->SrcReg[1]); - emit_arith(rp, PFS_OP_MIN, dest, mask, + src[0] = t_src(fp, fpi->SrcReg[0]); + src[1] = t_src(fp, fpi->SrcReg[1]); + emit_arith(fp, PFS_OP_MIN, dest, mask, src[0], src[1], undef, flags); break; case OPCODE_MOV: case OPCODE_SWZ: - src[0] = t_src(rp, fpi->SrcReg[0]); - emit_arith(rp, PFS_OP_MAD, dest, mask, + src[0] = t_src(fp, fpi->SrcReg[0]); + emit_arith(fp, PFS_OP_MAD, dest, mask, src[0], pfs_one, pfs_zero, flags); break; case OPCODE_MUL: - src[0] = t_src(rp, fpi->SrcReg[0]); - src[1] = t_src(rp, fpi->SrcReg[1]); - emit_arith(rp, PFS_OP_MAD, dest, mask, + src[0] = t_src(fp, fpi->SrcReg[0]); + src[1] = t_src(fp, fpi->SrcReg[1]); + emit_arith(fp, PFS_OP_MAD, dest, mask, src[0], src[1], pfs_zero, flags); break; case OPCODE_POW: - src[0] = t_scalar_src(rp, fpi->SrcReg[0]); - src[1] = t_scalar_src(rp, fpi->SrcReg[1]); - temp[0] = get_temp_reg(rp); - emit_arith(rp, PFS_OP_LG2, temp[0], WRITEMASK_W, + src[0] = t_scalar_src(fp, fpi->SrcReg[0]); + src[1] = t_scalar_src(fp, fpi->SrcReg[1]); + temp[0] = get_temp_reg(fp); + emit_arith(fp, PFS_OP_LG2, temp[0], WRITEMASK_W, src[0], undef, undef, 0); - emit_arith(rp, PFS_OP_MAD, temp[0], WRITEMASK_W, + emit_arith(fp, PFS_OP_MAD, temp[0], WRITEMASK_W, temp[0], src[1], pfs_zero, 0); - emit_arith(rp, PFS_OP_EX2, dest, fpi->DstReg.WriteMask, + emit_arith(fp, PFS_OP_EX2, dest, fpi->DstReg.WriteMask, temp[0], undef, undef, 0); - free_temp(rp, temp[0]); + free_temp(fp, temp[0]); break; case OPCODE_RCP: - src[0] = t_scalar_src(rp, fpi->SrcReg[0]); - emit_arith(rp, PFS_OP_RCP, dest, mask, + src[0] = t_scalar_src(fp, fpi->SrcReg[0]); + emit_arith(fp, PFS_OP_RCP, dest, mask, src[0], undef, undef, flags); break; case OPCODE_RSQ: - src[0] = t_scalar_src(rp, fpi->SrcReg[0]); - emit_arith(rp, PFS_OP_RSQ, dest, mask, + src[0] = t_scalar_src(fp, fpi->SrcReg[0]); + emit_arith(fp, PFS_OP_RSQ, dest, mask, absolute(src[0]), pfs_zero, pfs_zero, flags); break; case OPCODE_SCS: @@ -1792,51 +1792,51 @@ static GLboolean parse_program(struct r300_fragment_program *rp) * result.y = sin(x) (sin) * */ - temp[0] = get_temp_reg(rp); - temp[1] = get_temp_reg(rp); - const_sin[0] = emit_const4fv(rp, SinCosConsts[0]); - const_sin[1] = emit_const4fv(rp, SinCosConsts[1]); - src[0] = t_scalar_src(rp, fpi->SrcReg[0]); + temp[0] = get_temp_reg(fp); + temp[1] = get_temp_reg(fp); + const_sin[0] = emit_const4fv(fp, SinCosConsts[0]); + const_sin[1] = emit_const4fv(fp, SinCosConsts[1]); + src[0] = t_scalar_src(fp, fpi->SrcReg[0]); /* x = -abs(x)+0.5*PI */ - emit_arith(rp, PFS_OP_MAD, temp[0], WRITEMASK_Z, swizzle(const_sin[0], Z, Z, Z, Z), //PI + emit_arith(fp, PFS_OP_MAD, temp[0], WRITEMASK_Z, swizzle(const_sin[0], Z, Z, Z, Z), //PI pfs_half, negate(abs (swizzle(keep(src[0]), X, X, X, X))), 0); /* C*x (sin) */ - emit_arith(rp, PFS_OP_MAD, temp[0], WRITEMASK_W, + emit_arith(fp, PFS_OP_MAD, temp[0], WRITEMASK_W, swizzle(const_sin[0], Y, Y, Y, Y), swizzle(keep(src[0]), X, X, X, X), pfs_zero, 0); /* B*x, C*x (cos) */ - emit_arith(rp, PFS_OP_MAD, temp[0], + emit_arith(fp, PFS_OP_MAD, temp[0], WRITEMASK_X | WRITEMASK_Y, swizzle(temp[0], Z, Z, Z, Z), const_sin[0], pfs_zero, 0); /* B*x (sin) */ - emit_arith(rp, PFS_OP_MAD, temp[1], WRITEMASK_W, + emit_arith(fp, PFS_OP_MAD, temp[1], WRITEMASK_W, swizzle(const_sin[0], X, X, X, X), keep(src[0]), pfs_zero, 0); /* y = B*x + C*x*abs(x) (sin) */ - emit_arith(rp, PFS_OP_MAD, temp[1], WRITEMASK_Z, + emit_arith(fp, PFS_OP_MAD, temp[1], WRITEMASK_Z, absolute(src[0]), swizzle(temp[0], W, W, W, W), swizzle(temp[1], W, W, W, W), 0); /* y = B*x + C*x*abs(x) (cos) */ - emit_arith(rp, PFS_OP_MAD, temp[1], WRITEMASK_W, + emit_arith(fp, PFS_OP_MAD, temp[1], WRITEMASK_W, swizzle(temp[0], Y, Y, Y, Y), absolute(swizzle(temp[0], Z, Z, Z, Z)), swizzle(temp[0], X, X, X, X), 0); /* y*abs(y) - y (cos), y*abs(y) - y (sin) */ - emit_arith(rp, PFS_OP_MAD, temp[0], + emit_arith(fp, PFS_OP_MAD, temp[0], WRITEMASK_X | WRITEMASK_Y, swizzle(temp[1], W, Z, Y, X), @@ -1844,26 +1844,26 @@ static GLboolean parse_program(struct r300_fragment_program *rp) negate(swizzle(temp[1], W, Z, Y, X)), 0); /* dest.xy = mad(temp.xy, P, temp2.wz) */ - emit_arith(rp, PFS_OP_MAD, dest, + emit_arith(fp, PFS_OP_MAD, dest, mask & (WRITEMASK_X | WRITEMASK_Y), temp[0], swizzle(const_sin[0], W, W, W, W), swizzle(temp[1], W, Z, Y, X), flags); - free_temp(rp, temp[0]); - free_temp(rp, temp[1]); + free_temp(fp, temp[0]); + free_temp(fp, temp[1]); break; case OPCODE_SGE: - src[0] = t_src(rp, fpi->SrcReg[0]); - src[1] = t_src(rp, fpi->SrcReg[1]); - temp[0] = get_temp_reg(rp); + src[0] = t_src(fp, fpi->SrcReg[0]); + src[1] = t_src(fp, fpi->SrcReg[1]); + temp[0] = get_temp_reg(fp); /* temp = src0 - src1 * dest.c = (temp.c < 0.0) ? 0 : 1 */ - emit_arith(rp, PFS_OP_MAD, temp[0], mask, + emit_arith(fp, PFS_OP_MAD, temp[0], mask, src[0], pfs_one, negate(src[1]), 0); - emit_arith(rp, PFS_OP_CMP, dest, mask, + emit_arith(fp, PFS_OP_CMP, dest, mask, pfs_one, pfs_zero, temp[0], 0); - free_temp(rp, temp[0]); + free_temp(fp, temp[0]); break; case OPCODE_SIN: /* @@ -1873,85 +1873,85 @@ static GLboolean parse_program(struct r300_fragment_program *rp) * itself squared. */ - temp[0] = get_temp_reg(rp); - const_sin[0] = emit_const4fv(rp, SinCosConsts[0]); - const_sin[1] = emit_const4fv(rp, SinCosConsts[1]); - src[0] = t_scalar_src(rp, fpi->SrcReg[0]); + temp[0] = get_temp_reg(fp); + const_sin[0] = emit_const4fv(fp, SinCosConsts[0]); + const_sin[1] = emit_const4fv(fp, SinCosConsts[1]); + src[0] = t_scalar_src(fp, fpi->SrcReg[0]); /* do range reduction */ - emit_arith(rp, PFS_OP_MAD, temp[0], WRITEMASK_X, + emit_arith(fp, PFS_OP_MAD, temp[0], WRITEMASK_X, swizzle(keep(src[0]), X, X, X, X), swizzle(const_sin[1], Z, Z, Z, Z), pfs_half, 0); - emit_arith(rp, PFS_OP_FRC, temp[0], WRITEMASK_X, + emit_arith(fp, PFS_OP_FRC, temp[0], WRITEMASK_X, swizzle(temp[0], X, X, X, X), undef, undef, 0); - emit_arith(rp, PFS_OP_MAD, temp[0], WRITEMASK_Z, swizzle(temp[0], X, X, X, X), swizzle(const_sin[1], W, W, W, W), //2*PI + emit_arith(fp, PFS_OP_MAD, temp[0], WRITEMASK_Z, swizzle(temp[0], X, X, X, X), swizzle(const_sin[1], W, W, W, W), //2*PI negate(swizzle(const_sin[0], Z, Z, Z, Z)), //PI 0); /* SIN */ - emit_arith(rp, PFS_OP_MAD, temp[0], + emit_arith(fp, PFS_OP_MAD, temp[0], WRITEMASK_X | WRITEMASK_Y, swizzle(temp[0], Z, Z, Z, Z), const_sin[0], pfs_zero, 0); - emit_arith(rp, PFS_OP_MAD, temp[0], WRITEMASK_X, + emit_arith(fp, PFS_OP_MAD, temp[0], WRITEMASK_X, swizzle(temp[0], Y, Y, Y, Y), absolute(swizzle(temp[0], Z, Z, Z, Z)), swizzle(temp[0], X, X, X, X), 0); - emit_arith(rp, PFS_OP_MAD, temp[0], WRITEMASK_Y, + emit_arith(fp, PFS_OP_MAD, temp[0], WRITEMASK_Y, swizzle(temp[0], X, X, X, X), absolute(swizzle(temp[0], X, X, X, X)), negate(swizzle(temp[0], X, X, X, X)), 0); - emit_arith(rp, PFS_OP_MAD, dest, mask, + emit_arith(fp, PFS_OP_MAD, dest, mask, swizzle(temp[0], Y, Y, Y, Y), swizzle(const_sin[0], W, W, W, W), swizzle(temp[0], X, X, X, X), flags); - free_temp(rp, temp[0]); + free_temp(fp, temp[0]); break; case OPCODE_SLT: - src[0] = t_src(rp, fpi->SrcReg[0]); - src[1] = t_src(rp, fpi->SrcReg[1]); - temp[0] = get_temp_reg(rp); + src[0] = t_src(fp, fpi->SrcReg[0]); + src[1] = t_src(fp, fpi->SrcReg[1]); + temp[0] = get_temp_reg(fp); /* temp = src0 - src1 * dest.c = (temp.c < 0.0) ? 1 : 0 */ - emit_arith(rp, PFS_OP_MAD, temp[0], mask, + emit_arith(fp, PFS_OP_MAD, temp[0], mask, src[0], pfs_one, negate(src[1]), 0); - emit_arith(rp, PFS_OP_CMP, dest, mask, + emit_arith(fp, PFS_OP_CMP, dest, mask, pfs_zero, pfs_one, temp[0], 0); - free_temp(rp, temp[0]); + free_temp(fp, temp[0]); break; case OPCODE_SUB: - src[0] = t_src(rp, fpi->SrcReg[0]); - src[1] = t_src(rp, fpi->SrcReg[1]); - emit_arith(rp, PFS_OP_MAD, dest, mask, + src[0] = t_src(fp, fpi->SrcReg[0]); + src[1] = t_src(fp, fpi->SrcReg[1]); + emit_arith(fp, PFS_OP_MAD, dest, mask, src[0], pfs_one, negate(src[1]), flags); break; case OPCODE_TEX: - emit_tex(rp, fpi, R300_FPITX_OP_TEX); + emit_tex(fp, fpi, R300_FPITX_OP_TEX); break; case OPCODE_TXB: - emit_tex(rp, fpi, R300_FPITX_OP_TXB); + emit_tex(fp, fpi, R300_FPITX_OP_TXB); break; case OPCODE_TXP: - emit_tex(rp, fpi, R300_FPITX_OP_TXP); + emit_tex(fp, fpi, R300_FPITX_OP_TXP); break; case OPCODE_XPD:{ - src[0] = t_src(rp, fpi->SrcReg[0]); - src[1] = t_src(rp, fpi->SrcReg[1]); - temp[0] = get_temp_reg(rp); + src[0] = t_src(fp, fpi->SrcReg[0]); + src[1] = t_src(fp, fpi->SrcReg[1]); + temp[0] = get_temp_reg(fp); /* temp = src0.zxy * src1.yzx */ - emit_arith(rp, PFS_OP_MAD, temp[0], + emit_arith(fp, PFS_OP_MAD, temp[0], WRITEMASK_XYZ, swizzle(keep(src[0]), Z, X, Y, W), swizzle(keep(src[1]), Y, Z, X, W), @@ -1959,14 +1959,14 @@ static GLboolean parse_program(struct r300_fragment_program *rp) /* dest.xyz = src0.yzx * src1.zxy - temp * dest.w = undefined * */ - emit_arith(rp, PFS_OP_MAD, dest, + emit_arith(fp, PFS_OP_MAD, dest, mask & WRITEMASK_XYZ, swizzle(src[0], Y, Z, X, W), swizzle(src[1], Z, X, Y, W), negate(temp[0]), flags); /* cleanup */ - free_temp(rp, temp[0]); + free_temp(fp, temp[0]); break; } default: @@ -1974,7 +1974,7 @@ static GLboolean parse_program(struct r300_fragment_program *rp) break; } - if (rp->error) + if (fp->error) return GL_FALSE; } @@ -2077,30 +2077,30 @@ static void insert_wpos(struct gl_program *prog) /* - Init structures * - Determine what hwregs each input corresponds to */ -static void init_program(r300ContextPtr r300, struct r300_fragment_program *rp) +static void init_program(r300ContextPtr r300, struct r300_fragment_program *fp) { struct r300_pfs_compile_state *cs = NULL; - struct gl_fragment_program *mp = &rp->mesa_program; + struct gl_fragment_program *mp = &fp->mesa_program; struct prog_instruction *fpi; GLuint InputsRead = mp->Base.InputsRead; - GLuint temps_used = 0; /* for rp->temps[] */ + GLuint temps_used = 0; /* for fp->temps[] */ int i, j; /* New compile, reset tracking data */ - rp->optimization = + fp->optimization = driQueryOptioni(&r300->radeon.optionCache, "fp_optimization"); - rp->translated = GL_FALSE; - rp->error = GL_FALSE; - rp->cs = cs = &(R300_CONTEXT(rp->ctx)->state.pfs_compile); - rp->tex.length = 0; - rp->cur_node = 0; - rp->first_node_has_tex = 0; - rp->const_nr = 0; - rp->max_temp_idx = 0; - rp->node[0].alu_end = -1; - rp->node[0].tex_end = -1; - - _mesa_memset(cs, 0, sizeof(*rp->cs)); + fp->translated = GL_FALSE; + fp->error = GL_FALSE; + fp->cs = cs = &(R300_CONTEXT(fp->ctx)->state.pfs_compile); + fp->tex.length = 0; + fp->cur_node = 0; + fp->first_node_has_tex = 0; + fp->const_nr = 0; + fp->max_temp_idx = 0; + fp->node[0].alu_end = -1; + fp->node[0].tex_end = -1; + + _mesa_memset(cs, 0, sizeof(*fp->cs)); for (i = 0; i < PFS_MAX_ALU_INST; i++) { for (j = 0; j < 3; j++) { cs->slot[i].vsrc[j] = SRC_CONST; @@ -2117,11 +2117,11 @@ static void init_program(r300ContextPtr r300, struct r300_fragment_program *rp) */ /* Texcoords come first */ - for (i = 0; i < rp->ctx->Const.MaxTextureUnits; i++) { + for (i = 0; i < fp->ctx->Const.MaxTextureUnits; i++) { if (InputsRead & (FRAG_BIT_TEX0 << i)) { cs->inputs[FRAG_ATTRIB_TEX0 + i].refcount = 0; cs->inputs[FRAG_ATTRIB_TEX0 + i].reg = - get_hw_temp(rp, 0); + get_hw_temp(fp, 0); } } InputsRead &= ~FRAG_BITS_TEX_ANY; @@ -2129,7 +2129,7 @@ static void init_program(r300ContextPtr r300, struct r300_fragment_program *rp) /* fragment position treated as a texcoord */ if (InputsRead & FRAG_BIT_WPOS) { cs->inputs[FRAG_ATTRIB_WPOS].refcount = 0; - cs->inputs[FRAG_ATTRIB_WPOS].reg = get_hw_temp(rp, 0); + cs->inputs[FRAG_ATTRIB_WPOS].reg = get_hw_temp(fp, 0); insert_wpos(&mp->Base); } InputsRead &= ~FRAG_BIT_WPOS; @@ -2137,14 +2137,14 @@ static void init_program(r300ContextPtr r300, struct r300_fragment_program *rp) /* Then primary colour */ if (InputsRead & FRAG_BIT_COL0) { cs->inputs[FRAG_ATTRIB_COL0].refcount = 0; - cs->inputs[FRAG_ATTRIB_COL0].reg = get_hw_temp(rp, 0); + cs->inputs[FRAG_ATTRIB_COL0].reg = get_hw_temp(fp, 0); } InputsRead &= ~FRAG_BIT_COL0; /* Secondary color */ if (InputsRead & FRAG_BIT_COL1) { cs->inputs[FRAG_ATTRIB_COL1].refcount = 0; - cs->inputs[FRAG_ATTRIB_COL1].reg = get_hw_temp(rp, 0); + cs->inputs[FRAG_ATTRIB_COL1].reg = get_hw_temp(fp, 0); } InputsRead &= ~FRAG_BIT_COL1; @@ -2200,53 +2200,53 @@ static void init_program(r300ContextPtr r300, struct r300_fragment_program *rp) cs->temp_in_use = temps_used; } -static void update_params(struct r300_fragment_program *rp) +static void update_params(struct r300_fragment_program *fp) { - struct gl_fragment_program *mp = &rp->mesa_program; + struct gl_fragment_program *mp = &fp->mesa_program; /* Ask Mesa nicely to fill in ParameterValues for us */ if (mp->Base.Parameters) - _mesa_load_state_parameters(rp->ctx, mp->Base.Parameters); + _mesa_load_state_parameters(fp->ctx, mp->Base.Parameters); } void r300TranslateFragmentShader(r300ContextPtr r300, - struct r300_fragment_program *rp) + struct r300_fragment_program *fp) { struct r300_pfs_compile_state *cs = NULL; - if (!rp->translated) { + if (!fp->translated) { - init_program(r300, rp); - cs = rp->cs; + init_program(r300, fp); + cs = fp->cs; - if (parse_program(rp) == GL_FALSE) { - dump_program(rp); + if (parse_program(fp) == GL_FALSE) { + dump_program(fp); return; } /* Finish off */ - rp->node[rp->cur_node].alu_end = - cs->nrslots - rp->node[rp->cur_node].alu_offset - 1; - if (rp->node[rp->cur_node].tex_end < 0) - rp->node[rp->cur_node].tex_end = 0; - rp->alu_offset = 0; - rp->alu_end = cs->nrslots - 1; - rp->tex_offset = 0; - rp->tex_end = rp->tex.length ? rp->tex.length - 1 : 0; - assert(rp->node[rp->cur_node].alu_end >= 0); - assert(rp->alu_end >= 0); - - rp->translated = GL_TRUE; + fp->node[fp->cur_node].alu_end = + cs->nrslots - fp->node[fp->cur_node].alu_offset - 1; + if (fp->node[fp->cur_node].tex_end < 0) + fp->node[fp->cur_node].tex_end = 0; + fp->alu_offset = 0; + fp->alu_end = cs->nrslots - 1; + fp->tex_offset = 0; + fp->tex_end = fp->tex.length ? fp->tex.length - 1 : 0; + assert(fp->node[fp->cur_node].alu_end >= 0); + assert(fp->alu_end >= 0); + + fp->translated = GL_TRUE; if (RADEON_DEBUG & DEBUG_PIXEL) - dump_program(rp); - r300UpdateStateParameters(rp->ctx, _NEW_PROGRAM); + dump_program(fp); + r300UpdateStateParameters(fp->ctx, _NEW_PROGRAM); } - update_params(rp); + update_params(fp); } /* just some random things... */ -static void dump_program(struct r300_fragment_program *rp) +static void dump_program(struct r300_fragment_program *fp) { int n, i, j; static int pc = 0; @@ -2255,27 +2255,27 @@ static void dump_program(struct r300_fragment_program *rp) fprintf(stderr, "Mesa program:\n"); fprintf(stderr, "-------------\n"); - _mesa_print_program(&rp->mesa_program.Base); + _mesa_print_program(&fp->mesa_program.Base); fflush(stdout); fprintf(stderr, "Hardware program\n"); fprintf(stderr, "----------------\n"); - for (n = 0; n < (rp->cur_node + 1); n++) { + for (n = 0; n < (fp->cur_node + 1); n++) { fprintf(stderr, "NODE %d: alu_offset: %d, tex_offset: %d, " "alu_end: %d, tex_end: %d\n", n, - rp->node[n].alu_offset, - rp->node[n].tex_offset, - rp->node[n].alu_end, rp->node[n].tex_end); + fp->node[n].alu_offset, + fp->node[n].tex_offset, + fp->node[n].alu_end, fp->node[n].tex_end); - if (rp->tex.length) { + if (fp->tex.length) { fprintf(stderr, " TEX:\n"); - for (i = rp->node[n].tex_offset; - i <= rp->node[n].tex_offset + rp->node[n].tex_end; + for (i = fp->node[n].tex_offset; + i <= fp->node[n].tex_offset + fp->node[n].tex_end; ++i) { const char *instr; - switch ((rp->tex. + switch ((fp->tex. inst[i] >> R300_FPITX_OPCODE_SHIFT) & 15) { case R300_FPITX_OP_TEX: @@ -2297,22 +2297,22 @@ static void dump_program(struct r300_fragment_program *rp) fprintf(stderr, " %s t%i, %c%i, texture[%i] (%08x)\n", instr, - (rp->tex. + (fp->tex. inst[i] >> R300_FPITX_DST_SHIFT) & 31, - (rp->tex. + (fp->tex. inst[i] & R300_FPITX_SRC_CONST) ? 'c' : 't', - (rp->tex. + (fp->tex. inst[i] >> R300_FPITX_SRC_SHIFT) & 31, - (rp->tex. + (fp->tex. inst[i] & R300_FPITX_IMAGE_MASK) >> R300_FPITX_IMAGE_SHIFT, - rp->tex.inst[i]); + fp->tex.inst[i]); } } - for (i = rp->node[n].alu_offset; - i <= rp->node[n].alu_offset + rp->node[n].alu_end; ++i) { + for (i = fp->node[n].alu_offset; + i <= fp->node[n].alu_offset + fp->node[n].alu_end; ++i) { char srcc[3][10], dstc[20]; char srca[3][10], dsta[20]; char argc[3][20]; @@ -2320,8 +2320,8 @@ static void dump_program(struct r300_fragment_program *rp) char flags[5], tmp[10]; for (j = 0; j < 3; ++j) { - int regc = rp->alu.inst[i].inst1 >> (j * 6); - int rega = rp->alu.inst[i].inst3 >> (j * 6); + int regc = fp->alu.inst[i].inst1 >> (j * 6); + int rega = fp->alu.inst[i].inst3 >> (j * 6); sprintf(srcc[j], "%c%i", (regc & 32) ? 'c' : 't', regc & 31); @@ -2331,46 +2331,46 @@ static void dump_program(struct r300_fragment_program *rp) dstc[0] = 0; sprintf(flags, "%s%s%s", - (rp->alu.inst[i]. + (fp->alu.inst[i]. inst1 & R300_FPI1_DSTC_REG_X) ? "x" : "", - (rp->alu.inst[i]. + (fp->alu.inst[i]. inst1 & R300_FPI1_DSTC_REG_Y) ? "y" : "", - (rp->alu.inst[i]. + (fp->alu.inst[i]. inst1 & R300_FPI1_DSTC_REG_Z) ? "z" : ""); if (flags[0] != 0) { sprintf(dstc, "t%i.%s ", - (rp->alu.inst[i]. + (fp->alu.inst[i]. inst1 >> R300_FPI1_DSTC_SHIFT) & 31, flags); } sprintf(flags, "%s%s%s", - (rp->alu.inst[i]. + (fp->alu.inst[i]. inst1 & R300_FPI1_DSTC_OUTPUT_X) ? "x" : "", - (rp->alu.inst[i]. + (fp->alu.inst[i]. inst1 & R300_FPI1_DSTC_OUTPUT_Y) ? "y" : "", - (rp->alu.inst[i]. + (fp->alu.inst[i]. inst1 & R300_FPI1_DSTC_OUTPUT_Z) ? "z" : ""); if (flags[0] != 0) { sprintf(tmp, "o%i.%s", - (rp->alu.inst[i]. + (fp->alu.inst[i]. inst1 >> R300_FPI1_DSTC_SHIFT) & 31, flags); strcat(dstc, tmp); } dsta[0] = 0; - if (rp->alu.inst[i].inst3 & R300_FPI3_DSTA_REG) { + if (fp->alu.inst[i].inst3 & R300_FPI3_DSTA_REG) { sprintf(dsta, "t%i.w ", - (rp->alu.inst[i]. + (fp->alu.inst[i]. inst3 >> R300_FPI3_DSTA_SHIFT) & 31); } - if (rp->alu.inst[i].inst3 & R300_FPI3_DSTA_OUTPUT) { + if (fp->alu.inst[i].inst3 & R300_FPI3_DSTA_OUTPUT) { sprintf(tmp, "o%i.w ", - (rp->alu.inst[i]. + (fp->alu.inst[i]. inst3 >> R300_FPI3_DSTA_SHIFT) & 31); strcat(dsta, tmp); } - if (rp->alu.inst[i].inst3 & R300_FPI3_DSTA_DEPTH) { + if (fp->alu.inst[i].inst3 & R300_FPI3_DSTA_DEPTH) { strcat(dsta, "Z"); } @@ -2378,12 +2378,12 @@ static void dump_program(struct r300_fragment_program *rp) "%3i: xyz: %3s %3s %3s -> %-20s (%08x)\n" " w: %3s %3s %3s -> %-20s (%08x)\n", i, srcc[0], srcc[1], srcc[2], dstc, - rp->alu.inst[i].inst1, srca[0], srca[1], - srca[2], dsta, rp->alu.inst[i].inst3); + fp->alu.inst[i].inst1, srca[0], srca[1], + srca[2], dsta, fp->alu.inst[i].inst3); for (j = 0; j < 3; ++j) { - int regc = rp->alu.inst[i].inst0 >> (j * 7); - int rega = rp->alu.inst[i].inst2 >> (j * 7); + int regc = fp->alu.inst[i].inst0 >> (j * 7); + int rega = fp->alu.inst[i].inst2 >> (j * 7); int d; char buf[20]; @@ -2465,8 +2465,8 @@ static void dump_program(struct r300_fragment_program *rp) fprintf(stderr, " xyz: %8s %8s %8s op: %08x\n" " w: %8s %8s %8s op: %08x\n", argc[0], argc[1], argc[2], - rp->alu.inst[i].inst0, arga[0], arga[1], - arga[2], rp->alu.inst[i].inst2); + fp->alu.inst[i].inst0, arga[0], arga[1], + arga[2], fp->alu.inst[i].inst2); } } } diff --git a/src/mesa/drivers/dri/r300/r300_fragprog.h b/src/mesa/drivers/dri/r300/r300_fragprog.h index b92312aef09..72fca778455 100644 --- a/src/mesa/drivers/dri/r300/r300_fragprog.h +++ b/src/mesa/drivers/dri/r300/r300_fragprog.h @@ -99,6 +99,6 @@ typedef struct r300_fragment_program_swizzle { struct r300_fragment_program; extern void r300TranslateFragmentShader(r300ContextPtr r300, - struct r300_fragment_program *rp); + struct r300_fragment_program *fp); #endif diff --git a/src/mesa/drivers/dri/r300/r300_state.c b/src/mesa/drivers/dri/r300/r300_state.c index 3b595d98fa6..5689b4ac594 100644 --- a/src/mesa/drivers/dri/r300/r300_state.c +++ b/src/mesa/drivers/dri/r300/r300_state.c @@ -1287,7 +1287,7 @@ static void r300SetupTextures(GLcontext * ctx) int hw_tmu = 0; int last_hw_tmu = -1; /* -1 translates into no setup costs for fields */ int tmu_mappings[R300_MAX_TEXTURE_UNITS] = { -1, }; - struct r300_fragment_program *rp = (struct r300_fragment_program *) + struct r300_fragment_program *fp = (struct r300_fragment_program *) (char *)ctx->FragmentProgram._Current; R300_STATECHANGE(r300, txe); @@ -1390,20 +1390,20 @@ static void r300SetupTextures(GLcontext * ctx) r300->hw.tex.border_color.cmd[R300_TEX_CMD_0] = cmdpacket0(R300_TX_BORDER_COLOR_0, last_hw_tmu + 1); - if (!rp) /* should only happenen once, just after context is created */ + if (!fp) /* should only happenen once, just after context is created */ return; R300_STATECHANGE(r300, fpt); - for (i = 0; i < rp->tex.length; i++) { + for (i = 0; i < fp->tex.length; i++) { int unit; int opcode; unsigned long val; - unit = rp->tex.inst[i] >> R300_FPITX_IMAGE_SHIFT; + unit = fp->tex.inst[i] >> R300_FPITX_IMAGE_SHIFT; unit &= 15; - val = rp->tex.inst[i]; + val = fp->tex.inst[i]; val &= ~R300_FPITX_IMAGE_MASK; opcode = @@ -1425,7 +1425,7 @@ static void r300SetupTextures(GLcontext * ctx) } r300->hw.fpt.cmd[R300_FPT_CMD_0] = - cmdpacket0(R300_PFS_TEXI_0, rp->tex.length); + cmdpacket0(R300_PFS_TEXI_0, fp->tex.length); if (RADEON_DEBUG & DEBUG_STATE) fprintf(stderr, "TX_ENABLE: %08x last_hw_tmu=%d\n", @@ -1909,24 +1909,24 @@ static unsigned int r300PackFloat24(float f) void r300SetupPixelShader(r300ContextPtr rmesa) { GLcontext *ctx = rmesa->radeon.glCtx; - struct r300_fragment_program *rp = (struct r300_fragment_program *) + struct r300_fragment_program *fp = (struct r300_fragment_program *) (char *)ctx->FragmentProgram._Current; int i, k; - if (!rp) /* should only happenen once, just after context is created */ + if (!fp) /* should only happenen once, just after context is created */ return; - r300TranslateFragmentShader(rmesa, rp); - if (!rp->translated) { + r300TranslateFragmentShader(rmesa, fp); + if (!fp->translated) { fprintf(stderr, "%s: No valid fragment shader, exiting\n", __func__); return; } #define OUTPUT_FIELD(st, reg, field) \ R300_STATECHANGE(rmesa, st); \ - for(i=0;i<=rp->alu_end;i++) \ - rmesa->hw.st.cmd[R300_FPI_INSTR_0+i]=rp->alu.inst[i].field;\ - rmesa->hw.st.cmd[R300_FPI_CMD_0]=cmdpacket0(reg, rp->alu_end+1); + for(i=0;i<=fp->alu_end;i++) \ + rmesa->hw.st.cmd[R300_FPI_INSTR_0+i]=fp->alu.inst[i].field;\ + rmesa->hw.st.cmd[R300_FPI_CMD_0]=cmdpacket0(reg, fp->alu_end+1); OUTPUT_FIELD(fpi[0], R300_PFS_INSTR0_0, inst0); OUTPUT_FIELD(fpi[1], R300_PFS_INSTR1_0, inst1); @@ -1936,18 +1936,18 @@ void r300SetupPixelShader(r300ContextPtr rmesa) R300_STATECHANGE(rmesa, fp); /* I just want to say, the way these nodes are stored.. weird.. */ - for (i = 0, k = (4 - (rp->cur_node + 1)); i < 4; i++, k++) { - if (i < (rp->cur_node + 1)) { + for (i = 0, k = (4 - (fp->cur_node + 1)); i < 4; i++, k++) { + if (i < (fp->cur_node + 1)) { rmesa->hw.fp.cmd[R300_FP_NODE0 + k] = - (rp->node[i]. + (fp->node[i]. alu_offset << R300_PFS_NODE_ALU_OFFSET_SHIFT) - | (rp->node[i]. + | (fp->node[i]. alu_end << R300_PFS_NODE_ALU_END_SHIFT) - | (rp->node[i]. + | (fp->node[i]. tex_offset << R300_PFS_NODE_TEX_OFFSET_SHIFT) - | (rp->node[i]. + | (fp->node[i]. tex_end << R300_PFS_NODE_TEX_END_SHIFT) - | rp->node[i].flags; /* ( (k==3) ? R300_PFS_NODE_LAST_NODE : 0); */ + | fp->node[i].flags; /* ( (k==3) ? R300_PFS_NODE_LAST_NODE : 0); */ } else { rmesa->hw.fp.cmd[R300_FP_NODE0 + (3 - i)] = 0; } @@ -1955,29 +1955,29 @@ void r300SetupPixelShader(r300ContextPtr rmesa) /* PFS_CNTL_0 */ rmesa->hw.fp.cmd[R300_FP_CNTL0] = - rp->cur_node | (rp->first_node_has_tex << 3); + fp->cur_node | (fp->first_node_has_tex << 3); /* PFS_CNTL_1 */ - rmesa->hw.fp.cmd[R300_FP_CNTL1] = rp->max_temp_idx; + rmesa->hw.fp.cmd[R300_FP_CNTL1] = fp->max_temp_idx; /* PFS_CNTL_2 */ rmesa->hw.fp.cmd[R300_FP_CNTL2] = - (rp->alu_offset << R300_PFS_CNTL_ALU_OFFSET_SHIFT) - | (rp->alu_end << R300_PFS_CNTL_ALU_END_SHIFT) - | (rp->tex_offset << R300_PFS_CNTL_TEX_OFFSET_SHIFT) - | (rp->tex_end << R300_PFS_CNTL_TEX_END_SHIFT); + (fp->alu_offset << R300_PFS_CNTL_ALU_OFFSET_SHIFT) + | (fp->alu_end << R300_PFS_CNTL_ALU_END_SHIFT) + | (fp->tex_offset << R300_PFS_CNTL_TEX_OFFSET_SHIFT) + | (fp->tex_end << R300_PFS_CNTL_TEX_END_SHIFT); R300_STATECHANGE(rmesa, fpp); - for (i = 0; i < rp->const_nr; i++) { + for (i = 0; i < fp->const_nr; i++) { rmesa->hw.fpp.cmd[R300_FPP_PARAM_0 + 4 * i + 0] = - r300PackFloat24(rp->constant[i][0]); + r300PackFloat24(fp->constant[i][0]); rmesa->hw.fpp.cmd[R300_FPP_PARAM_0 + 4 * i + 1] = - r300PackFloat24(rp->constant[i][1]); + r300PackFloat24(fp->constant[i][1]); rmesa->hw.fpp.cmd[R300_FPP_PARAM_0 + 4 * i + 2] = - r300PackFloat24(rp->constant[i][2]); + r300PackFloat24(fp->constant[i][2]); rmesa->hw.fpp.cmd[R300_FPP_PARAM_0 + 4 * i + 3] = - r300PackFloat24(rp->constant[i][3]); + r300PackFloat24(fp->constant[i][3]); } rmesa->hw.fpp.cmd[R300_FPP_CMD_0] = - cmdpacket0(R300_PFS_PARAM_0_X, rp->const_nr * 4); + cmdpacket0(R300_PFS_PARAM_0_X, fp->const_nr * 4); } /** -- cgit v1.2.3 From a6aa1f80168a8134286040920d804a8fc86773ce Mon Sep 17 00:00:00 2001 From: Christoph Bill Date: Wed, 9 May 2007 18:24:06 +0000 Subject: r300: Added some Doxygen comments. --- src/mesa/drivers/dri/r300/r300_context.h | 28 ++++++++++------------------ src/mesa/drivers/dri/r300/r300_state.c | 2 +- src/mesa/drivers/dri/r300/r300_tex.c | 2 +- src/mesa/drivers/dri/r300/radeon_context.h | 13 ------------- 4 files changed, 12 insertions(+), 33 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_context.h b/src/mesa/drivers/dri/r300/r300_context.h index 9bda2409bd0..9f36c4238cd 100644 --- a/src/mesa/drivers/dri/r300/r300_context.h +++ b/src/mesa/drivers/dri/r300/r300_context.h @@ -27,10 +27,11 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. **************************************************************************/ -/* - * Authors: - * Keith Whitwell - * Nicolai Haehnle +/** + * \file + * + * \author Keith Whitwell + * \author Nicolai Haehnle */ #ifndef __R300_CONTEXT_H__ @@ -88,6 +89,9 @@ typedef struct r300_context *r300ContextPtr; #include "r300_vertprog.h" #include "r300_fragprog.h" +/** + * This function takes a float and packs it into a uint32_t + */ static __inline__ uint32_t r300PackFloat32(float fl) { union { @@ -104,7 +108,7 @@ static __inline__ uint32_t r300PackFloat32(float fl) /* Need refcounting on dma buffers: */ struct r300_dma_buffer { - int refcount; /* the number of retained regions in buf */ + int refcount; /**< the number of retained regions in buf */ drmBufPtr buf; int id; }; @@ -831,7 +835,7 @@ struct r300_state { #define R300_FALLBACK_RAST 2 /** - * R300 context structure. + * \brief R300 context structure. */ struct r300_context { struct radeon_context radeon; /* parent class, must be first */ @@ -878,18 +882,6 @@ struct r300_buffer_object { #define R300_CONTEXT(ctx) ((r300ContextPtr)(ctx->DriverCtx)) -static __inline GLuint r300PackColor(GLuint cpp, - GLubyte r, GLubyte g, GLubyte b, GLubyte a) -{ - switch (cpp) { - case 2: - return PACK_COLOR_565(r, g, b); - case 4: - return PACK_COLOR_8888(r, g, b, a); - default: - return 0; - } -} extern void r300DestroyContext(__DRIcontextPrivate * driContextPriv); extern GLboolean r300CreateContext(const __GLcontextModes * glVisual, __DRIcontextPrivate * driContextPriv, diff --git a/src/mesa/drivers/dri/r300/r300_state.c b/src/mesa/drivers/dri/r300/r300_state.c index 5689b4ac594..a173ff298a8 100644 --- a/src/mesa/drivers/dri/r300/r300_state.c +++ b/src/mesa/drivers/dri/r300/r300_state.c @@ -78,7 +78,7 @@ static void r300BlendColor(GLcontext * ctx, const GLfloat cf[4]) CLAMPED_FLOAT_TO_UBYTE(color[2], cf[2]); CLAMPED_FLOAT_TO_UBYTE(color[3], cf[3]); - rmesa->hw.blend_color.cmd[1] = r300PackColor(4, color[3], color[0], + rmesa->hw.blend_color.cmd[1] = PACK_COLOR_8888(color[3], color[0], color[1], color[2]); } diff --git a/src/mesa/drivers/dri/r300/r300_tex.c b/src/mesa/drivers/dri/r300/r300_tex.c index e8005163617..71673e857b8 100644 --- a/src/mesa/drivers/dri/r300/r300_tex.c +++ b/src/mesa/drivers/dri/r300/r300_tex.c @@ -249,7 +249,7 @@ static void r300SetTexFilter(r300TexObjPtr t, GLenum minf, GLenum magf) static void r300SetTexBorderColor(r300TexObjPtr t, GLubyte c[4]) { - t->pp_border_color = r300PackColor(4, c[0], c[1], c[2], c[3]); + t->pp_border_color = PACK_COLOR_8888(c[0], c[1], c[2], c[3]); } /** diff --git a/src/mesa/drivers/dri/r300/radeon_context.h b/src/mesa/drivers/dri/r300/radeon_context.h index 07a0c7cbd6d..edcea3bce1e 100644 --- a/src/mesa/drivers/dri/r300/radeon_context.h +++ b/src/mesa/drivers/dri/r300/radeon_context.h @@ -46,19 +46,6 @@ struct radeon_context; typedef struct radeon_context radeonContextRec; typedef struct radeon_context* radeonContextPtr; -static __inline GLuint radeonPackColor(GLuint cpp, - GLubyte r, GLubyte g, GLubyte b, GLubyte a) -{ - switch (cpp) { - case 2: - return PACK_COLOR_565(r, g, b); - case 4: - return PACK_COLOR_8888(a, r, g, b); - default: - return 0; - } -} - #define TEX_0 0x1 #define TEX_1 0x2 #define TEX_2 0x4 -- cgit v1.2.3 From 3c9e5cb0bda24b73b4e02fc1dbe77ac9c6aed426 Mon Sep 17 00:00:00 2001 From: Christoph Bill Date: Wed, 9 May 2007 18:25:12 +0000 Subject: r300: Added a few more Doxygen comments. --- src/mesa/drivers/dri/r300/r300_cmdbuf.h | 9 ++++++--- src/mesa/drivers/dri/r300/r300_fragprog.c | 12 ++++++------ 2 files changed, 12 insertions(+), 9 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_cmdbuf.h b/src/mesa/drivers/dri/r300/r300_cmdbuf.h index 9ef1cdbe622..3c336e1589b 100644 --- a/src/mesa/drivers/dri/r300/r300_cmdbuf.h +++ b/src/mesa/drivers/dri/r300/r300_cmdbuf.h @@ -27,9 +27,10 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. **************************************************************************/ -/* - * Authors: - * Nicolai Haehnle +/** + * \file + * + * \author Nicolai Haehnle */ #ifndef __R300_CMDBUF_H__ @@ -50,6 +51,8 @@ extern void r300EmitAOS(r300ContextPtr rmesa, GLuint nr, GLuint offset); /** * Make sure that enough space is available in the command buffer * by flushing if necessary. + * + * \param dwords The number of dwords we need to be free on the command buffer */ static __inline__ void r300EnsureCmdBufSpace(r300ContextPtr r300, int dwords, const char *caller) diff --git a/src/mesa/drivers/dri/r300/r300_fragprog.c b/src/mesa/drivers/dri/r300/r300_fragprog.c index 556e3041ed7..4bc4320f988 100644 --- a/src/mesa/drivers/dri/r300/r300_fragprog.c +++ b/src/mesa/drivers/dri/r300/r300_fragprog.c @@ -31,13 +31,13 @@ * Jerome Glisse */ -/*TODO'S +/** + * \todo Depth write, WPOS/FOGC inputs + * + * \todo FogOption * - * - Depth write, WPOS/FOGC inputs - * - FogOption - * - Verify results of opcodes for accuracy, I've only checked them - * in specific cases. - * - and more... + * \todo Verify results of opcodes for accuracy, I've only checked them in + * specific cases. */ #include "glheader.h" -- cgit v1.2.3 From 01fdb34b3933e567a902bbec27c942d510872ca1 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 18:31:04 +0000 Subject: r300; Indent would destroy r300_reg.h, so add *INDENT-OFF*. --- src/mesa/drivers/dri/r300/r300_reg.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_reg.h b/src/mesa/drivers/dri/r300/r300_reg.h index 8131478e548..e309a48c423 100644 --- a/src/mesa/drivers/dri/r300/r300_reg.h +++ b/src/mesa/drivers/dri/r300/r300_reg.h @@ -26,6 +26,8 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef _R300_REG_H #define _R300_REG_H +/* *INDENT-OFF* */ + #define R300_MC_INIT_MISC_LAT_TIMER 0x180 # define R300_MC_MISC__MC_CPR_INIT_LAT_SHIFT 0 # define R300_MC_MISC__MC_VF_INIT_LAT_SHIFT 4 @@ -1604,5 +1606,6 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. */ #define R300_CP_CMD_BITBLT_MULTI 0xC0009B00 +/* *INDENT-ON* */ #endif /* _R300_REG_H */ -- cgit v1.2.3 From ff7a41a159099f92248c6560140d1b947c0e8cc5 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 18:37:46 +0000 Subject: r300: Don't need to include the deprecated r300_program.h in some files. The only file that still requires r300_program.h is r300_ioctl.c; and it should use the new defines in r300_reg.h! --- src/mesa/drivers/dri/r300/r300_render.c | 1 - src/mesa/drivers/dri/r300/r300_state.c | 1 - src/mesa/drivers/dri/r300/r300_vertprog.c | 1 - 3 files changed, 3 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_render.c b/src/mesa/drivers/dri/r300/r300_render.c index 1dac3142ee6..e459cad65ac 100644 --- a/src/mesa/drivers/dri/r300/r300_render.c +++ b/src/mesa/drivers/dri/r300/r300_render.c @@ -67,7 +67,6 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. #include "r300_ioctl.h" #include "r300_state.h" #include "r300_reg.h" -#include "r300_program.h" #include "r300_tex.h" #include "r300_maos.h" #include "r300_emit.h" diff --git a/src/mesa/drivers/dri/r300/r300_state.c b/src/mesa/drivers/dri/r300/r300_state.c index a173ff298a8..9f391a27a09 100644 --- a/src/mesa/drivers/dri/r300/r300_state.c +++ b/src/mesa/drivers/dri/r300/r300_state.c @@ -58,7 +58,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "r300_ioctl.h" #include "r300_state.h" #include "r300_reg.h" -#include "r300_program.h" #include "r300_emit.h" #include "r300_fragprog.h" #include "r300_tex.h" diff --git a/src/mesa/drivers/dri/r300/r300_vertprog.c b/src/mesa/drivers/dri/r300/r300_vertprog.c index 8b1143758e8..90f18ad2257 100644 --- a/src/mesa/drivers/dri/r300/r300_vertprog.c +++ b/src/mesa/drivers/dri/r300/r300_vertprog.c @@ -39,7 +39,6 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. #include "tnl/tnl.h" #include "r300_context.h" -#include "r300_program.h" #if SWIZZLE_X != VSF_IN_COMPONENT_X || \ SWIZZLE_Y != VSF_IN_COMPONENT_Y || \ -- cgit v1.2.3 From df747eb354ca71227c9aa8aa10753be11203ca23 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 18:44:56 +0000 Subject: r300: Removed a bit of disabled code. --- src/mesa/drivers/dri/r300/r300_ioctl.c | 3 --- 1 file changed, 3 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_ioctl.c b/src/mesa/drivers/dri/r300/r300_ioctl.c index ace9131b33b..c787b3fd56c 100644 --- a/src/mesa/drivers/dri/r300/r300_ioctl.c +++ b/src/mesa/drivers/dri/r300/r300_ioctl.c @@ -326,9 +326,6 @@ static void r300EmitClearState(GLcontext * ctx) e32(VP_ZERO()); e32(0); } - - /*reg_start(0x4500,0); - e32(2560-1); */ } /** -- cgit v1.2.3 From 56c2f7bb42eaeb443e2e273383d1d5974fc89e03 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 19:24:59 +0000 Subject: r300: Removed the dangerous R300_SPAN_DISABLE_LOCKING flag. Enabling R300_SPAN_DISABLE_LOCKING would probably cause more lockups; I think there are a couple of other little bugs in this code, too. It's best to remove it. --- src/mesa/drivers/dri/r300/r300_context.h | 1 - src/mesa/drivers/dri/r300/radeon_span.c | 34 ++++++-------------------------- 2 files changed, 6 insertions(+), 29 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_context.h b/src/mesa/drivers/dri/r300/r300_context.h index 9f36c4238cd..8dc8f981994 100644 --- a/src/mesa/drivers/dri/r300/r300_context.h +++ b/src/mesa/drivers/dri/r300/r300_context.h @@ -871,7 +871,6 @@ struct r300_context { #endif GLboolean texmicrotile; - GLboolean span_dlocking; GLboolean disable_lowimpact_fallback; }; diff --git a/src/mesa/drivers/dri/r300/radeon_span.c b/src/mesa/drivers/dri/r300/radeon_span.c index 5e85733ae66..5003f7cbc87 100644 --- a/src/mesa/drivers/dri/r300/radeon_span.c +++ b/src/mesa/drivers/dri/r300/radeon_span.c @@ -233,32 +233,12 @@ do { \ static void radeonSpanRenderStart(GLcontext * ctx) { radeonContextPtr rmesa = RADEON_CONTEXT(ctx); - - static int first = 1; +#if COMPILE_R300 r300ContextPtr r300 = (r300ContextPtr) rmesa; - - if (first) { - r300->span_dlocking = - getenv("R300_SPAN_DISABLE_LOCKING") ? 1 : 0; - if (r300->span_dlocking == 0) { - fprintf(stderr, - "Try R300_SPAN_DISABLE_LOCKING env var if this hangs.\n"); - fflush(stderr); - } - first = 0; - } - - if (r300->span_dlocking) { - r300Flush(ctx); - LOCK_HARDWARE(rmesa); - radeonWaitForIdleLocked(rmesa); - UNLOCK_HARDWARE(rmesa); - - return; - } - // R300_FIREVERTICES( rmesa ); - // old code has flush - r300Flush(ctx); + R300_FIREVERTICES(r300); +#else + RADEON_FIREVERTICES(rmesa); +#endif LOCK_HARDWARE(rmesa); radeonWaitForIdleLocked(rmesa); } @@ -266,10 +246,8 @@ static void radeonSpanRenderStart(GLcontext * ctx) static void radeonSpanRenderFinish(GLcontext * ctx) { radeonContextPtr rmesa = RADEON_CONTEXT(ctx); - r300ContextPtr r300 = (r300ContextPtr) rmesa; _swrast_flush(ctx); - if (r300->span_dlocking == 0) - UNLOCK_HARDWARE(rmesa); + UNLOCK_HARDWARE(rmesa); } void radeonInitSpanFuncs(GLcontext * ctx) -- cgit v1.2.3 From f4a2b9f83d2b9571a2baea3c430ec15e28ac833c Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 19:30:59 +0000 Subject: r300: I have no idea why this was forced on, but it seems to work fine when restored to the previous behaviour. --- src/mesa/drivers/dri/r300/radeon_span.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/radeon_span.c b/src/mesa/drivers/dri/r300/radeon_span.c index 5003f7cbc87..5f1ff7ade79 100644 --- a/src/mesa/drivers/dri/r300/radeon_span.c +++ b/src/mesa/drivers/dri/r300/radeon_span.c @@ -123,7 +123,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. static GLuint radeon_mba_z32(const driRenderbuffer * drb, GLint x, GLint y) { GLuint pitch = drb->pitch; - if (1 /*|| drb->depthHasSurface */ ) { + if (drb->depthHasSurface) { return 4 * (x + y * pitch); } else { GLuint ba, address = 0; /* a[0..1] = 0 */ @@ -147,7 +147,7 @@ static INLINE GLuint radeon_mba_z16(const driRenderbuffer * drb, GLint x, GLint y) { GLuint pitch = drb->pitch; - if (1 /*|| drb->depthHasSurface */ ) { + if (drb->depthHasSurface) { return 2 * (x + y * pitch); } else { GLuint ba, address = 0; /* a[0] = 0 */ -- cgit v1.2.3 From 6fe41a4c01f4ec9f280f52901554a58aa8b30627 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 20:36:48 +0000 Subject: r300: Further reduced the radeon_span.c diff. --- src/mesa/drivers/dri/r300/radeon_span.c | 43 +++++++++++++++++++++++++- src/mesa/drivers/dri/radeon/radeon_span.c | 51 +++++++++++++++++++++++++++++-- 2 files changed, 91 insertions(+), 3 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/radeon_span.c b/src/mesa/drivers/dri/r300/radeon_span.c index 5f1ff7ade79..eae09d6b35e 100644 --- a/src/mesa/drivers/dri/r300/radeon_span.c +++ b/src/mesa/drivers/dri/r300/radeon_span.c @@ -128,7 +128,11 @@ static GLuint radeon_mba_z32(const driRenderbuffer * drb, GLint x, GLint y) } else { GLuint ba, address = 0; /* a[0..1] = 0 */ +#ifdef COMPILE_R300 ba = (y / 8) * (pitch / 8) + (x / 8); +#else + ba = (y / 16) * (pitch / 16) + (x / 16); +#endif address |= (x & 0x7) << 2; /* a[2..4] = x[0..2] */ address |= (y & 0x3) << 5; /* a[5..6] = y[0..1] */ @@ -182,6 +186,7 @@ radeon_mba_z16(const driRenderbuffer * drb, GLint x, GLint y) * Careful: It looks like the R300 uses ZZZS byte order while the R200 * uses SZZZ for 24 bit depth, 8 bit stencil mode. */ +#ifdef COMPILE_R300 #define WRITE_DEPTH( _x, _y, d ) \ do { \ GLuint offset = radeon_mba_z32( drb, _x + xo, _y + yo ); \ @@ -190,12 +195,28 @@ do { \ tmp |= ((d << 8) & 0xffffff00); \ *(GLuint *)(buf + offset) = tmp; \ } while (0) +#else +#define WRITE_DEPTH( _x, _y, d ) \ +do { \ + GLuint offset = radeon_mba_z32( drb, _x + xo, _y + yo ); \ + GLuint tmp = *(GLuint *)(buf + offset); \ + tmp &= 0xff000000; \ + tmp |= ((d) & 0x00ffffff); \ + *(GLuint *)(buf + offset) = tmp; \ +} while (0) +#endif +#ifdef COMPILE_R300 #define READ_DEPTH( d, _x, _y ) \ do { \ d = (*(GLuint *)(buf + radeon_mba_z32( drb, _x + xo, \ _y + yo )) & 0xffffff00) >> 8; \ }while(0) +#else +#define READ_DEPTH( d, _x, _y ) \ + d = *(GLuint *)(buf + radeon_mba_z32( drb, _x + xo, \ + _y + yo )) & 0x00ffffff; +#endif #define TAG(x) radeon##x##_z24_s8 #include "depthtmp.h" @@ -206,6 +227,7 @@ do { \ /* 24 bit depth, 8 bit stencil depthbuffer functions */ +#ifdef COMPILE_R300 #define WRITE_STENCIL( _x, _y, d ) \ do { \ GLuint offset = radeon_mba_z32( drb, _x + xo, _y + yo ); \ @@ -214,13 +236,32 @@ do { \ tmp |= (d) & 0xff; \ *(GLuint *)(buf + offset) = tmp; \ } while (0) +#else +#define WRITE_STENCIL( _x, _y, d ) \ +do { \ + GLuint offset = radeon_mba_z32( drb, _x + xo, _y + yo ); \ + GLuint tmp = *(GLuint *)(buf + offset); \ + tmp &= 0x00ffffff; \ + tmp |= (((d) & 0xff) << 24); \ + *(GLuint *)(buf + offset) = tmp; \ +} while (0) +#endif +#ifdef COMPILE_R300 #define READ_STENCIL( d, _x, _y ) \ do { \ GLuint offset = radeon_mba_z32( drb, _x + xo, _y + yo ); \ GLuint tmp = *(GLuint *)(buf + offset); \ d = tmp & 0x000000ff; \ } while (0) +#else +#define READ_STENCIL( d, _x, _y ) \ +do { \ + GLuint offset = radeon_mba_z32( drb, _x + xo, _y + yo ); \ + GLuint tmp = *(GLuint *)(buf + offset); \ + d = (tmp & 0xff000000) >> 24; \ +} while (0) +#endif #define TAG(x) radeon##x##_z24_s8 #include "stenciltmp.h" @@ -233,7 +274,7 @@ do { \ static void radeonSpanRenderStart(GLcontext * ctx) { radeonContextPtr rmesa = RADEON_CONTEXT(ctx); -#if COMPILE_R300 +#ifdef COMPILE_R300 r300ContextPtr r300 = (r300ContextPtr) rmesa; R300_FIREVERTICES(r300); #else diff --git a/src/mesa/drivers/dri/radeon/radeon_span.c b/src/mesa/drivers/dri/radeon/radeon_span.c index fd7a8c4fbfc..732a85ecf0b 100644 --- a/src/mesa/drivers/dri/radeon/radeon_span.c +++ b/src/mesa/drivers/dri/radeon/radeon_span.c @@ -129,7 +129,11 @@ static GLuint radeon_mba_z32(const driRenderbuffer * drb, GLint x, GLint y) } else { GLuint ba, address = 0; /* a[0..1] = 0 */ +#ifdef COMPILE_R300 + ba = (y / 8) * (pitch / 8) + (x / 8); +#else ba = (y / 16) * (pitch / 16) + (x / 16); +#endif address |= (x & 0x7) << 2; /* a[2..4] = x[0..2] */ address |= (y & 0x3) << 5; /* a[5..6] = y[0..1] */ @@ -183,6 +187,16 @@ radeon_mba_z16(const driRenderbuffer * drb, GLint x, GLint y) * Careful: It looks like the R300 uses ZZZS byte order while the R200 * uses SZZZ for 24 bit depth, 8 bit stencil mode. */ +#ifdef COMPILE_R300 +#define WRITE_DEPTH( _x, _y, d ) \ +do { \ + GLuint offset = radeon_mba_z32( drb, _x + xo, _y + yo ); \ + GLuint tmp = *(GLuint *)(buf + offset); \ + tmp &= 0x000000ff; \ + tmp |= ((d << 8) & 0xffffff00); \ + *(GLuint *)(buf + offset) = tmp; \ +} while (0) +#else #define WRITE_DEPTH( _x, _y, d ) \ do { \ GLuint offset = radeon_mba_z32( drb, _x + xo, _y + yo ); \ @@ -191,10 +205,19 @@ do { \ tmp |= ((d) & 0x00ffffff); \ *(GLuint *)(buf + offset) = tmp; \ } while (0) +#endif +#ifdef COMPILE_R300 +#define READ_DEPTH( d, _x, _y ) \ + do { \ + d = (*(GLuint *)(buf + radeon_mba_z32( drb, _x + xo, \ + _y + yo )) & 0xffffff00) >> 8; \ + }while(0) +#else #define READ_DEPTH( d, _x, _y ) \ d = *(GLuint *)(buf + radeon_mba_z32( drb, _x + xo, \ _y + yo )) & 0x00ffffff; +#endif #define TAG(x) radeon##x##_z24_s8 #include "depthtmp.h" @@ -205,6 +228,16 @@ do { \ /* 24 bit depth, 8 bit stencil depthbuffer functions */ +#ifdef COMPILE_R300 +#define WRITE_STENCIL( _x, _y, d ) \ +do { \ + GLuint offset = radeon_mba_z32( drb, _x + xo, _y + yo ); \ + GLuint tmp = *(GLuint *)(buf + offset); \ + tmp &= 0xffffff00; \ + tmp |= (d) & 0xff; \ + *(GLuint *)(buf + offset) = tmp; \ +} while (0) +#else #define WRITE_STENCIL( _x, _y, d ) \ do { \ GLuint offset = radeon_mba_z32( drb, _x + xo, _y + yo ); \ @@ -213,14 +246,23 @@ do { \ tmp |= (((d) & 0xff) << 24); \ *(GLuint *)(buf + offset) = tmp; \ } while (0) +#endif +#ifdef COMPILE_R300 #define READ_STENCIL( d, _x, _y ) \ do { \ GLuint offset = radeon_mba_z32( drb, _x + xo, _y + yo ); \ GLuint tmp = *(GLuint *)(buf + offset); \ - tmp &= 0xff000000; \ - d = tmp >> 24; \ + d = tmp & 0x000000ff; \ +} while (0) +#else +#define READ_STENCIL( d, _x, _y ) \ +do { \ + GLuint offset = radeon_mba_z32( drb, _x + xo, _y + yo ); \ + GLuint tmp = *(GLuint *)(buf + offset); \ + d = (tmp & 0xff000000) >> 24; \ } while (0) +#endif #define TAG(x) radeon##x##_z24_s8 #include "stenciltmp.h" @@ -233,7 +275,12 @@ do { \ static void radeonSpanRenderStart(GLcontext * ctx) { radeonContextPtr rmesa = RADEON_CONTEXT(ctx); +#ifdef COMPILE_R300 + r300ContextPtr r300 = (r300ContextPtr) rmesa; + R300_FIREVERTICES(r300); +#else RADEON_FIREVERTICES(rmesa); +#endif LOCK_HARDWARE(rmesa); radeonWaitForIdleLocked(rmesa); } -- cgit v1.2.3 From a15470606125478ae314e7dc00821e46292ac810 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 20:41:27 +0000 Subject: r300: Indented radeon_span.h --- src/mesa/drivers/dri/r300/radeon_span.h | 2 +- src/mesa/drivers/dri/radeon/radeon_span.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/radeon_span.h b/src/mesa/drivers/dri/r300/radeon_span.h index 8f0823f412b..9abe0864b17 100644 --- a/src/mesa/drivers/dri/r300/radeon_span.h +++ b/src/mesa/drivers/dri/r300/radeon_span.h @@ -45,6 +45,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "drirenderbuffer.h" extern void radeonInitSpanFuncs(GLcontext * ctx); -extern void radeonSetSpanFunctions(driRenderbuffer *rb, const GLvisual *vis); +extern void radeonSetSpanFunctions(driRenderbuffer * rb, const GLvisual * vis); #endif diff --git a/src/mesa/drivers/dri/radeon/radeon_span.h b/src/mesa/drivers/dri/radeon/radeon_span.h index 56bbb5a713e..9abe0864b17 100644 --- a/src/mesa/drivers/dri/radeon/radeon_span.h +++ b/src/mesa/drivers/dri/radeon/radeon_span.h @@ -44,7 +44,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "drirenderbuffer.h" -extern void radeonInitSpanFuncs( GLcontext *ctx ); -extern void radeonSetSpanFunctions(driRenderbuffer *rb, const GLvisual *vis); +extern void radeonInitSpanFuncs(GLcontext * ctx); +extern void radeonSetSpanFunctions(driRenderbuffer * rb, const GLvisual * vis); #endif -- cgit v1.2.3 From 88288b614eb89b8995cbc2ece4bbdb25b7adb191 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 20:49:49 +0000 Subject: r300: Renamed the R300 memory manager from "radeon" to "r300"; it's R300 specific. --- src/mesa/drivers/dri/r300/Makefile | 2 +- src/mesa/drivers/dri/r300/r300_context.c | 6 +- src/mesa/drivers/dri/r300/r300_context.h | 2 +- src/mesa/drivers/dri/r300/r300_ioctl.c | 10 +- src/mesa/drivers/dri/r300/r300_maos.c | 6 +- src/mesa/drivers/dri/r300/r300_mem.c | 492 +++++++++++++++++++++++++++++++ src/mesa/drivers/dri/r300/r300_mem.h | 40 +++ src/mesa/drivers/dri/r300/r300_texmem.c | 4 +- src/mesa/drivers/dri/r300/radeon_mm.c | 492 ------------------------------- src/mesa/drivers/dri/r300/radeon_mm.h | 40 --- 10 files changed, 547 insertions(+), 547 deletions(-) create mode 100644 src/mesa/drivers/dri/r300/r300_mem.c create mode 100644 src/mesa/drivers/dri/r300/r300_mem.h delete mode 100644 src/mesa/drivers/dri/r300/radeon_mm.c delete mode 100644 src/mesa/drivers/dri/r300/radeon_mm.h (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/Makefile b/src/mesa/drivers/dri/r300/Makefile index b0b47be4a24..9b4ba0d7380 100644 --- a/src/mesa/drivers/dri/r300/Makefile +++ b/src/mesa/drivers/dri/r300/Makefile @@ -27,7 +27,7 @@ DRIVER_SOURCES = \ radeon_lock.c \ radeon_span.c \ radeon_state.c \ - radeon_mm.c \ + r300_mem.c \ \ r300_context.c \ r300_ioctl.c \ diff --git a/src/mesa/drivers/dri/r300/r300_context.c b/src/mesa/drivers/dri/r300/r300_context.c index 12308af45fd..4407f8c4b58 100644 --- a/src/mesa/drivers/dri/r300/r300_context.c +++ b/src/mesa/drivers/dri/r300/r300_context.c @@ -62,7 +62,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "r300_maos.h" #ifdef USER_BUFFERS -#include "radeon_mm.h" +#include "r300_mem.h" #endif #include "vblank.h" @@ -212,7 +212,7 @@ GLboolean r300CreateContext(const __GLcontextModes * glVisual, r300InitShaderFuncs(&functions); #ifdef USER_BUFFERS - radeon_mm_init(r300); + r300_mem_init(r300); #endif if (!radeonInitContext(&r300->radeon, &functions, @@ -529,7 +529,7 @@ void r300DestroyContext(__DRIcontextPrivate * driContextPriv) /* the memory manager might be accessed when Mesa frees the shared * state, so don't destroy it earlier */ - radeon_mm_destroy(r300); + r300_mem_destroy(r300); #endif /* free the option cache */ diff --git a/src/mesa/drivers/dri/r300/r300_context.h b/src/mesa/drivers/dri/r300/r300_context.h index 8dc8f981994..8c4ed51af50 100644 --- a/src/mesa/drivers/dri/r300/r300_context.h +++ b/src/mesa/drivers/dri/r300/r300_context.h @@ -865,7 +865,7 @@ struct r300_context { GLuint prefer_gart_client_texturing; #ifdef USER_BUFFERS - struct radeon_memory_manager *rmm; + struct r300_memory_manager *rmm; GLvector4f dummy_attrib[_TNL_ATTRIB_MAX]; GLvector4f *temp_attrib[_TNL_ATTRIB_MAX]; #endif diff --git a/src/mesa/drivers/dri/r300/r300_ioctl.c b/src/mesa/drivers/dri/r300/r300_ioctl.c index c787b3fd56c..1bf19850b79 100644 --- a/src/mesa/drivers/dri/r300/r300_ioctl.c +++ b/src/mesa/drivers/dri/r300/r300_ioctl.c @@ -410,7 +410,7 @@ void r300Flush(GLcontext * ctx) } #ifdef USER_BUFFERS -#include "radeon_mm.h" +#include "r300_mem.h" static void r300RefillCurrentDmaRegion(r300ContextPtr rmesa, int size) { @@ -434,14 +434,14 @@ static void r300RefillCurrentDmaRegion(r300ContextPtr rmesa, int size) dmabuf->buf = (void *)1; /* hack */ dmabuf->refcount = 1; - dmabuf->id = radeon_mm_alloc(rmesa, 4, size); + dmabuf->id = r300_mem_alloc(rmesa, 4, size); if (dmabuf->id == 0) { LOCK_HARDWARE(&rmesa->radeon); /* no need to validate */ r300FlushCmdBufLocked(rmesa, __FUNCTION__); radeonWaitForIdleLocked(&rmesa->radeon); - dmabuf->id = radeon_mm_alloc(rmesa, 4, size); + dmabuf->id = r300_mem_alloc(rmesa, 4, size); UNLOCK_HARDWARE(&rmesa->radeon); @@ -453,7 +453,7 @@ static void r300RefillCurrentDmaRegion(r300ContextPtr rmesa, int size) } rmesa->dma.current.buf = dmabuf; - rmesa->dma.current.address = radeon_mm_ptr(rmesa, dmabuf->id); + rmesa->dma.current.address = r300_mem_ptr(rmesa, dmabuf->id); rmesa->dma.current.end = size; rmesa->dma.current.start = 0; rmesa->dma.current.ptr = 0; @@ -472,7 +472,7 @@ void r300ReleaseDmaRegion(r300ContextPtr rmesa, rmesa->dma.flush(rmesa); if (--region->buf->refcount == 0) { - radeon_mm_free(rmesa, region->buf->id); + r300_mem_free(rmesa, region->buf->id); FREE(region->buf); rmesa->dma.nr_released_bufs++; } diff --git a/src/mesa/drivers/dri/r300/r300_maos.c b/src/mesa/drivers/dri/r300/r300_maos.c index 3beeb7b1ab8..54557c8eda3 100644 --- a/src/mesa/drivers/dri/r300/r300_maos.c +++ b/src/mesa/drivers/dri/r300/r300_maos.c @@ -51,7 +51,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "r300_ioctl.h" #ifdef USER_BUFFERS -#include "radeon_mm.h" +#include "r300_mem.h" #endif #if SWIZZLE_X != R300_INPUT_ROUTE_SELECT_X || \ @@ -643,11 +643,11 @@ void r300UseArrays(GLcontext * ctx) int i; if (rmesa->state.elt_dma.buf) - radeon_mm_use(rmesa, rmesa->state.elt_dma.buf->id); + r300_mem_use(rmesa, rmesa->state.elt_dma.buf->id); for (i = 0; i < rmesa->state.aos_count; i++) { if (rmesa->state.aos[i].buf) - radeon_mm_use(rmesa, rmesa->state.aos[i].buf->id); + r300_mem_use(rmesa, rmesa->state.aos[i].buf->id); } } #endif diff --git a/src/mesa/drivers/dri/r300/r300_mem.c b/src/mesa/drivers/dri/r300/r300_mem.c new file mode 100644 index 00000000000..2c1deddb246 --- /dev/null +++ b/src/mesa/drivers/dri/r300/r300_mem.c @@ -0,0 +1,492 @@ +/* + * Copyright (C) 2005 Aapo Tahkola. + * + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial + * portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + */ + +/* + * Authors: + * Aapo Tahkola + */ +#include + +#include "r300_context.h" +#include "r300_cmdbuf.h" +#include "r300_ioctl.h" +#include "r300_mem.h" +#include "radeon_ioctl.h" + +#ifdef USER_BUFFERS + +static void resize_u_list(r300ContextPtr rmesa) +{ + void *temp; + int nsize; + + temp = rmesa->rmm->u_list; + nsize = rmesa->rmm->u_size * 2; + + rmesa->rmm->u_list = _mesa_malloc(nsize * sizeof(*rmesa->rmm->u_list)); + _mesa_memset(rmesa->rmm->u_list, 0, nsize * sizeof(*rmesa->rmm->u_list)); + + if (temp) { + r300FlushCmdBuf(rmesa, __FUNCTION__); + + _mesa_memcpy(rmesa->rmm->u_list, temp, rmesa->rmm->u_size * sizeof(*rmesa->rmm->u_list)); + _mesa_free(temp); + } + + rmesa->rmm->u_size = nsize; +} + +void r300_mem_init(r300ContextPtr rmesa) +{ + rmesa->rmm = malloc(sizeof(struct r300_memory_manager)); + memset(rmesa->rmm, 0, sizeof(struct r300_memory_manager)); + + rmesa->rmm->u_size = 128; + resize_u_list(rmesa); +} + +void r300_mem_destroy(r300ContextPtr rmesa) +{ + _mesa_free(rmesa->rmm->u_list); + rmesa->rmm->u_list = NULL; + + _mesa_free(rmesa->rmm); + rmesa->rmm = NULL; +} + +void *r300_mem_ptr(r300ContextPtr rmesa, int id) +{ + assert(id <= rmesa->rmm->u_last); + return rmesa->rmm->u_list[id].ptr; +} + +int r300_mem_find(r300ContextPtr rmesa, void *ptr) +{ + int i; + + for (i=1; i < rmesa->rmm->u_size+1; i++) + if(rmesa->rmm->u_list[i].ptr && + ptr >= rmesa->rmm->u_list[i].ptr && + ptr < rmesa->rmm->u_list[i].ptr + rmesa->rmm->u_list[i].size) + break; + + if (i < rmesa->rmm->u_size + 1) + return i; + + fprintf(stderr, "%p failed\n", ptr); + return 0; +} + +//#define MM_DEBUG +int r300_mem_alloc(r300ContextPtr rmesa, int alignment, int size) +{ + drm_radeon_mem_alloc_t alloc; + int offset = 0, ret; + int i, free=-1; + int done_age; + drm_radeon_mem_free_t memfree; + int tries=0; + static int bytes_wasted=0, allocated=0; + + if(size < 4096) + bytes_wasted += 4096 - size; + + allocated += size; + +#if 0 + static int t=0; + if (t != time(NULL)) { + t = time(NULL); + fprintf(stderr, "slots used %d, wasted %d kb, allocated %d\n", rmesa->rmm->u_last, bytes_wasted/1024, allocated/1024); + } +#endif + + memfree.region = RADEON_MEM_REGION_GART; + + again: + + done_age = radeonGetAge((radeonContextPtr)rmesa); + + if (rmesa->rmm->u_last + 1 >= rmesa->rmm->u_size) + resize_u_list(rmesa); + + for (i = rmesa->rmm->u_last + 1; i > 0; i --) { + if (rmesa->rmm->u_list[i].ptr == NULL) { + free = i; + continue; + } + + if (rmesa->rmm->u_list[i].h_pending == 0 && + rmesa->rmm->u_list[i].pending && rmesa->rmm->u_list[i].age <= done_age) { + memfree.region_offset = (char *)rmesa->rmm->u_list[i].ptr - + (char *)rmesa->radeon.radeonScreen->gartTextures.map; + + ret = drmCommandWrite(rmesa->radeon.radeonScreen->driScreen->fd, + DRM_RADEON_FREE, &memfree, sizeof(memfree)); + + if (ret) { + fprintf(stderr, "Failed to free at %p\n", rmesa->rmm->u_list[i].ptr); + fprintf(stderr, "ret = %s\n", strerror(-ret)); + exit(1); + } else { +#ifdef MM_DEBUG + fprintf(stderr, "really freed %d at age %x\n", i, radeonGetAge((radeonContextPtr)rmesa)); +#endif + if (i == rmesa->rmm->u_last) + rmesa->rmm->u_last --; + + if(rmesa->rmm->u_list[i].size < 4096) + bytes_wasted -= 4096 - rmesa->rmm->u_list[i].size; + + allocated -= rmesa->rmm->u_list[i].size; + rmesa->rmm->u_list[i].pending = 0; + rmesa->rmm->u_list[i].ptr = NULL; + + if (rmesa->rmm->u_list[i].fb) { + LOCK_HARDWARE(&(rmesa->radeon)); + ret = mmFreeMem(rmesa->rmm->u_list[i].fb); + UNLOCK_HARDWARE(&(rmesa->radeon)); + + if (ret != 0) + fprintf(stderr, "failed to free!\n"); + rmesa->rmm->u_list[i].fb = NULL; + } + rmesa->rmm->u_list[i].ref_count = 0; + free = i; + } + } + } + rmesa->rmm->u_head = i; + + if (free == -1) { + WARN_ONCE("Ran out of slots!\n"); + //usleep(100); + r300FlushCmdBuf(rmesa, __FUNCTION__); + tries++; + if(tries>100){ + WARN_ONCE("Ran out of slots!\n"); + exit(1); + } + goto again; + } + + alloc.region = RADEON_MEM_REGION_GART; + alloc.alignment = alignment; + alloc.size = size; + alloc.region_offset = &offset; + + ret = drmCommandWriteRead( rmesa->radeon.dri.fd, DRM_RADEON_ALLOC, &alloc, sizeof(alloc)); + if (ret) { +#if 0 + WARN_ONCE("Ran out of mem!\n"); + r300FlushCmdBuf(rmesa, __FUNCTION__); + //usleep(100); + tries2++; + tries = 0; + if(tries2>100){ + WARN_ONCE("Ran out of GART memory!\n"); + exit(1); + } + goto again; +#else + WARN_ONCE("Ran out of GART memory (for %d)!\nPlease consider adjusting GARTSize option.\n", size); + return 0; +#endif + } + + i = free; + + if (i > rmesa->rmm->u_last) + rmesa->rmm->u_last = i; + + rmesa->rmm->u_list[i].ptr = ((GLubyte *)rmesa->radeon.radeonScreen->gartTextures.map) + offset; + rmesa->rmm->u_list[i].size = size; + rmesa->rmm->u_list[i].age = 0; + rmesa->rmm->u_list[i].fb = NULL; + //fprintf(stderr, "alloc %p at id %d\n", rmesa->rmm->u_list[i].ptr, i); + +#ifdef MM_DEBUG + fprintf(stderr, "allocated %d at age %x\n", i, radeonGetAge((radeonContextPtr)rmesa)); +#endif + + return i; +} + +#include "r300_emit.h" +static void emit_lin_cp(r300ContextPtr rmesa, unsigned long dst, unsigned long src, unsigned long size) +{ + int cmd_reserved = 0; + int cmd_written = 0; + drm_radeon_cmd_header_t *cmd = NULL; + int cp_size; + + + while (size > 0){ + cp_size = size; + if(cp_size > /*8190*/4096) + cp_size = /*8190*/4096; + + reg_start(0x146c,1); + e32(0x52cc32fb); + + reg_start(0x15ac,1); + e32(src); + e32(cp_size); + + reg_start(0x1704,0); + e32(0x0); + + reg_start(0x1404,1); + e32(dst); + e32(cp_size); + + reg_start(0x1700,0); + e32(0x0); + + reg_start(0x1640,3); + e32(0x00000000); + e32(0x00001fff); + e32(0x00000000); + e32(0x00001fff); + + start_packet3(RADEON_CP_PACKET3_UNK1B, 2); + e32(0 << 16 | 0); + e32(0 << 16 | 0); + e32(cp_size << 16 | 0x1); + + dst += cp_size; + src += cp_size; + size -= cp_size; + } + + reg_start(R300_RB3D_DSTCACHE_CTLSTAT,0); + e32(R300_RB3D_DSTCACHE_UNKNOWN_0A); + + reg_start(0x342c,0); + e32(0x00000005); + + reg_start(0x1720,0); + e32(0x00010000); +} + +void r300_mem_use(r300ContextPtr rmesa, int id) +{ + uint64_t ull; +#ifdef MM_DEBUG + fprintf(stderr, "%s: %d at age %x\n", __FUNCTION__, id, radeonGetAge((radeonContextPtr)rmesa)); +#endif + drm_r300_cmd_header_t *cmd; + + assert(id <= rmesa->rmm->u_last); + + if(id == 0) + return; + +#if 0 /* FB VBOs. Needs further changes... */ + rmesa->rmm->u_list[id].ref_count ++; + if (rmesa->rmm->u_list[id].ref_count > 100 && rmesa->rmm->u_list[id].fb == NULL && + rmesa->rmm->u_list[id].size != RADEON_BUFFER_SIZE*16 /*&& rmesa->rmm->u_list[id].size > 40*/) { + driTexHeap *heap; + struct mem_block *mb; + + LOCK_HARDWARE(&(rmesa->radeon)); + + heap = rmesa->texture_heaps[0]; + + mb = mmAllocMem(heap->memory_heap, rmesa->rmm->u_list[id].size, heap->alignmentShift, 0); + + UNLOCK_HARDWARE(&(rmesa->radeon)); + + if (mb) { + rmesa->rmm->u_list[id].fb = mb; + + emit_lin_cp(rmesa, rmesa->radeon.radeonScreen->texOffset[0] + rmesa->rmm->u_list[id].fb->ofs, + r300GartOffsetFromVirtual(rmesa, rmesa->rmm->u_list[id].ptr), + rmesa->rmm->u_list[id].size); + } else { + WARN_ONCE("Upload to fb failed, %d, %d\n", rmesa->rmm->u_list[id].size, id); + } + //fprintf(stderr, "Upload to fb! %d, %d\n", rmesa->rmm->u_list[id].ref_count, id); + } + /*if (rmesa->rmm->u_list[id].fb) { + emit_lin_cp(rmesa, rmesa->radeon.radeonScreen->texOffset[0] + rmesa->rmm->u_list[id].fb->ofs, + r300GartOffsetFromVirtual(rmesa, rmesa->rmm->u_list[id].ptr), + rmesa->rmm->u_list[id].size); + }*/ +#endif + + cmd = (drm_r300_cmd_header_t *)r300AllocCmdBuf(rmesa, 2 + sizeof(ull) / 4, __FUNCTION__); + cmd[0].scratch.cmd_type = R300_CMD_SCRATCH; + cmd[0].scratch.reg = R300_MEM_SCRATCH; + cmd[0].scratch.n_bufs = 1; + cmd[0].scratch.flags = 0; + cmd ++; + + ull = (uint64_t)(intptr_t)&rmesa->rmm->u_list[id].age; + _mesa_memcpy(cmd, &ull, sizeof(ull)); + cmd += sizeof(ull) / 4; + + cmd[0].u = /*id*/0; + + LOCK_HARDWARE(&rmesa->radeon); /* Protect from DRM. */ + rmesa->rmm->u_list[id].h_pending ++; + UNLOCK_HARDWARE(&rmesa->radeon); +} + +unsigned long r300_mem_offset(r300ContextPtr rmesa, int id) +{ + unsigned long offset; + + assert(id <= rmesa->rmm->u_last); + + if (rmesa->rmm->u_list[id].fb) { + offset = rmesa->radeon.radeonScreen->texOffset[0] + rmesa->rmm->u_list[id].fb->ofs; + } else { + offset = (char *)rmesa->rmm->u_list[id].ptr - + (char *)rmesa->radeon.radeonScreen->gartTextures.map; + offset += rmesa->radeon.radeonScreen->gart_texture_offset; + } + + return offset; +} + +int r300_mem_on_card(r300ContextPtr rmesa, int id) +{ + assert(id <= rmesa->rmm->u_last); + + if (rmesa->rmm->u_list[id].fb) + return GL_TRUE; + + return GL_FALSE; +} + +void *r300_mem_map(r300ContextPtr rmesa, int id, int access) +{ +#ifdef MM_DEBUG + fprintf(stderr, "%s: %d at age %x\n", __FUNCTION__, id, radeonGetAge((radeonContextPtr)rmesa)); +#endif + void *ptr; + int tries = 0; + + assert(id <= rmesa->rmm->u_last); + + rmesa->rmm->u_list[id].ref_count = 0; + if (rmesa->rmm->u_list[id].fb) { + WARN_ONCE("Mapping fb!\n"); + /* Idle gart only and do upload on unmap */ + //rmesa->rmm->u_list[id].fb = NULL; + + + if(rmesa->rmm->u_list[id].mapped == 1) + WARN_ONCE("buffer %d already mapped\n", id); + + rmesa->rmm->u_list[id].mapped = 1; + ptr = r300_mem_ptr(rmesa, id); + + return ptr; + } + + if (access == R300_MEM_R) { + + if(rmesa->rmm->u_list[id].mapped == 1) + WARN_ONCE("buffer %d already mapped\n", id); + + rmesa->rmm->u_list[id].mapped = 1; + ptr = r300_mem_ptr(rmesa, id); + + return ptr; + } + + + if (rmesa->rmm->u_list[id].h_pending) + r300FlushCmdBuf(rmesa, __FUNCTION__); + + if (rmesa->rmm->u_list[id].h_pending) { + return NULL; + } + + while(rmesa->rmm->u_list[id].age > radeonGetAge((radeonContextPtr)rmesa) && tries++ < 1000) + usleep(10); + + if (tries >= 1000) { + fprintf(stderr, "Idling failed (%x vs %x)\n", + rmesa->rmm->u_list[id].age, radeonGetAge((radeonContextPtr)rmesa)); + return NULL; + } + + if(rmesa->rmm->u_list[id].mapped == 1) + WARN_ONCE("buffer %d already mapped\n", id); + + rmesa->rmm->u_list[id].mapped = 1; + ptr = r300_mem_ptr(rmesa, id); + + return ptr; +} + +void r300_mem_unmap(r300ContextPtr rmesa, int id) +{ +#ifdef MM_DEBUG + fprintf(stderr, "%s: %d at age %x\n", __FUNCTION__, id, radeonGetAge((radeonContextPtr)rmesa)); +#endif + + assert(id <= rmesa->rmm->u_last); + + if(rmesa->rmm->u_list[id].mapped == 0) + WARN_ONCE("buffer %d not mapped\n", id); + + rmesa->rmm->u_list[id].mapped = 0; + + if (rmesa->rmm->u_list[id].fb) + emit_lin_cp(rmesa, rmesa->radeon.radeonScreen->texOffset[0] + rmesa->rmm->u_list[id].fb->ofs, + r300GartOffsetFromVirtual(rmesa, rmesa->rmm->u_list[id].ptr), + rmesa->rmm->u_list[id].size); +} + +void r300_mem_free(r300ContextPtr rmesa, int id) +{ +#ifdef MM_DEBUG + fprintf(stderr, "%s: %d at age %x\n", __FUNCTION__, id, radeonGetAge((radeonContextPtr)rmesa)); +#endif + + assert(id <= rmesa->rmm->u_last); + + if(id == 0) + return; + + if(rmesa->rmm->u_list[id].ptr == NULL){ + WARN_ONCE("Not allocated!\n"); + return ; + } + + if(rmesa->rmm->u_list[id].pending){ + WARN_ONCE("%p already pended!\n", rmesa->rmm->u_list[id].ptr); + return ; + } + + rmesa->rmm->u_list[id].pending = 1; +} +#endif diff --git a/src/mesa/drivers/dri/r300/r300_mem.h b/src/mesa/drivers/dri/r300/r300_mem.h new file mode 100644 index 00000000000..1e99b176383 --- /dev/null +++ b/src/mesa/drivers/dri/r300/r300_mem.h @@ -0,0 +1,40 @@ +#ifndef __R300_MEM_H__ +#define __R300_MEM_H__ + +//#define R300_MEM_PDL 0 +#define R300_MEM_UL 1 + +#define R300_MEM_R 1 +#define R300_MEM_W 2 +#define R300_MEM_RW (R300_MEM_R | R300_MEM_W) + +#define R300_MEM_SCRATCH 2 + +struct r300_memory_manager { + struct { + void *ptr; + uint32_t size; + uint32_t age; + uint32_t h_pending; + int pending; + int mapped; + int ref_count; + struct mem_block *fb; + } *u_list; + int u_head, u_tail, u_size, u_last; + +}; + +extern void r300_mem_init(r300ContextPtr rmesa); +extern void r300_mem_destroy(r300ContextPtr rmesa); +extern void *r300_mem_ptr(r300ContextPtr rmesa, int id); +extern int r300_mem_find(r300ContextPtr rmesa, void *ptr); +extern int r300_mem_alloc(r300ContextPtr rmesa, int alignment, int size); +extern void r300_mem_use(r300ContextPtr rmesa, int id); +extern unsigned long r300_mem_offset(r300ContextPtr rmesa, int id); +extern int r300_mem_on_card(r300ContextPtr rmesa, int id); +extern void *r300_mem_map(r300ContextPtr rmesa, int id, int access); +extern void r300_mem_unmap(r300ContextPtr rmesa, int id); +extern void r300_mem_free(r300ContextPtr rmesa, int id); + +#endif diff --git a/src/mesa/drivers/dri/r300/r300_texmem.c b/src/mesa/drivers/dri/r300/r300_texmem.c index 2c8740bff76..4377b7cdc7b 100644 --- a/src/mesa/drivers/dri/r300/r300_texmem.c +++ b/src/mesa/drivers/dri/r300/r300_texmem.c @@ -56,7 +56,7 @@ SOFTWARE. #include /* for usleep() */ #ifdef USER_BUFFERS -#include "radeon_mm.h" +#include "r300_mem.h" #endif /** @@ -285,7 +285,7 @@ static void r300UploadRectSubImage(r300ContextPtr rmesa, r300EmitWait(rmesa, R300_WAIT_2D); #ifdef USER_BUFFERS - radeon_mm_use(rmesa, region.buf->id); + r300_mem_use(rmesa, region.buf->id); #endif r300ReleaseDmaRegion(rmesa, ®ion, __FUNCTION__); diff --git a/src/mesa/drivers/dri/r300/radeon_mm.c b/src/mesa/drivers/dri/r300/radeon_mm.c deleted file mode 100644 index 1502dac8fc3..00000000000 --- a/src/mesa/drivers/dri/r300/radeon_mm.c +++ /dev/null @@ -1,492 +0,0 @@ -/* - * Copyright (C) 2005 Aapo Tahkola. - * - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial - * portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - */ - -/* - * Authors: - * Aapo Tahkola - */ -#include - -#include "r300_context.h" -#include "r300_cmdbuf.h" -#include "r300_ioctl.h" -#include "radeon_mm.h" -#include "radeon_ioctl.h" - -#ifdef USER_BUFFERS - -static void resize_u_list(r300ContextPtr rmesa) -{ - void *temp; - int nsize; - - temp = rmesa->rmm->u_list; - nsize = rmesa->rmm->u_size * 2; - - rmesa->rmm->u_list = _mesa_malloc(nsize * sizeof(*rmesa->rmm->u_list)); - _mesa_memset(rmesa->rmm->u_list, 0, nsize * sizeof(*rmesa->rmm->u_list)); - - if (temp) { - r300FlushCmdBuf(rmesa, __FUNCTION__); - - _mesa_memcpy(rmesa->rmm->u_list, temp, rmesa->rmm->u_size * sizeof(*rmesa->rmm->u_list)); - _mesa_free(temp); - } - - rmesa->rmm->u_size = nsize; -} - -void radeon_mm_init(r300ContextPtr rmesa) -{ - rmesa->rmm = malloc(sizeof(struct radeon_memory_manager)); - memset(rmesa->rmm, 0, sizeof(struct radeon_memory_manager)); - - rmesa->rmm->u_size = 128; - resize_u_list(rmesa); -} - -void radeon_mm_destroy(r300ContextPtr rmesa) -{ - _mesa_free(rmesa->rmm->u_list); - rmesa->rmm->u_list = NULL; - - _mesa_free(rmesa->rmm); - rmesa->rmm = NULL; -} - -void *radeon_mm_ptr(r300ContextPtr rmesa, int id) -{ - assert(id <= rmesa->rmm->u_last); - return rmesa->rmm->u_list[id].ptr; -} - -int radeon_mm_find(r300ContextPtr rmesa, void *ptr) -{ - int i; - - for (i=1; i < rmesa->rmm->u_size+1; i++) - if(rmesa->rmm->u_list[i].ptr && - ptr >= rmesa->rmm->u_list[i].ptr && - ptr < rmesa->rmm->u_list[i].ptr + rmesa->rmm->u_list[i].size) - break; - - if (i < rmesa->rmm->u_size + 1) - return i; - - fprintf(stderr, "%p failed\n", ptr); - return 0; -} - -//#define MM_DEBUG -int radeon_mm_alloc(r300ContextPtr rmesa, int alignment, int size) -{ - drm_radeon_mem_alloc_t alloc; - int offset = 0, ret; - int i, free=-1; - int done_age; - drm_radeon_mem_free_t memfree; - int tries=0; - static int bytes_wasted=0, allocated=0; - - if(size < 4096) - bytes_wasted += 4096 - size; - - allocated += size; - -#if 0 - static int t=0; - if (t != time(NULL)) { - t = time(NULL); - fprintf(stderr, "slots used %d, wasted %d kb, allocated %d\n", rmesa->rmm->u_last, bytes_wasted/1024, allocated/1024); - } -#endif - - memfree.region = RADEON_MEM_REGION_GART; - - again: - - done_age = radeonGetAge((radeonContextPtr)rmesa); - - if (rmesa->rmm->u_last + 1 >= rmesa->rmm->u_size) - resize_u_list(rmesa); - - for (i = rmesa->rmm->u_last + 1; i > 0; i --) { - if (rmesa->rmm->u_list[i].ptr == NULL) { - free = i; - continue; - } - - if (rmesa->rmm->u_list[i].h_pending == 0 && - rmesa->rmm->u_list[i].pending && rmesa->rmm->u_list[i].age <= done_age) { - memfree.region_offset = (char *)rmesa->rmm->u_list[i].ptr - - (char *)rmesa->radeon.radeonScreen->gartTextures.map; - - ret = drmCommandWrite(rmesa->radeon.radeonScreen->driScreen->fd, - DRM_RADEON_FREE, &memfree, sizeof(memfree)); - - if (ret) { - fprintf(stderr, "Failed to free at %p\n", rmesa->rmm->u_list[i].ptr); - fprintf(stderr, "ret = %s\n", strerror(-ret)); - exit(1); - } else { -#ifdef MM_DEBUG - fprintf(stderr, "really freed %d at age %x\n", i, radeonGetAge((radeonContextPtr)rmesa)); -#endif - if (i == rmesa->rmm->u_last) - rmesa->rmm->u_last --; - - if(rmesa->rmm->u_list[i].size < 4096) - bytes_wasted -= 4096 - rmesa->rmm->u_list[i].size; - - allocated -= rmesa->rmm->u_list[i].size; - rmesa->rmm->u_list[i].pending = 0; - rmesa->rmm->u_list[i].ptr = NULL; - - if (rmesa->rmm->u_list[i].fb) { - LOCK_HARDWARE(&(rmesa->radeon)); - ret = mmFreeMem(rmesa->rmm->u_list[i].fb); - UNLOCK_HARDWARE(&(rmesa->radeon)); - - if (ret != 0) - fprintf(stderr, "failed to free!\n"); - rmesa->rmm->u_list[i].fb = NULL; - } - rmesa->rmm->u_list[i].ref_count = 0; - free = i; - } - } - } - rmesa->rmm->u_head = i; - - if (free == -1) { - WARN_ONCE("Ran out of slots!\n"); - //usleep(100); - r300FlushCmdBuf(rmesa, __FUNCTION__); - tries++; - if(tries>100){ - WARN_ONCE("Ran out of slots!\n"); - exit(1); - } - goto again; - } - - alloc.region = RADEON_MEM_REGION_GART; - alloc.alignment = alignment; - alloc.size = size; - alloc.region_offset = &offset; - - ret = drmCommandWriteRead( rmesa->radeon.dri.fd, DRM_RADEON_ALLOC, &alloc, sizeof(alloc)); - if (ret) { -#if 0 - WARN_ONCE("Ran out of mem!\n"); - r300FlushCmdBuf(rmesa, __FUNCTION__); - //usleep(100); - tries2++; - tries = 0; - if(tries2>100){ - WARN_ONCE("Ran out of GART memory!\n"); - exit(1); - } - goto again; -#else - WARN_ONCE("Ran out of GART memory (for %d)!\nPlease consider adjusting GARTSize option.\n", size); - return 0; -#endif - } - - i = free; - - if (i > rmesa->rmm->u_last) - rmesa->rmm->u_last = i; - - rmesa->rmm->u_list[i].ptr = ((GLubyte *)rmesa->radeon.radeonScreen->gartTextures.map) + offset; - rmesa->rmm->u_list[i].size = size; - rmesa->rmm->u_list[i].age = 0; - rmesa->rmm->u_list[i].fb = NULL; - //fprintf(stderr, "alloc %p at id %d\n", rmesa->rmm->u_list[i].ptr, i); - -#ifdef MM_DEBUG - fprintf(stderr, "allocated %d at age %x\n", i, radeonGetAge((radeonContextPtr)rmesa)); -#endif - - return i; -} - -#include "r300_emit.h" -static void emit_lin_cp(r300ContextPtr rmesa, unsigned long dst, unsigned long src, unsigned long size) -{ - int cmd_reserved = 0; - int cmd_written = 0; - drm_radeon_cmd_header_t *cmd = NULL; - int cp_size; - - - while (size > 0){ - cp_size = size; - if(cp_size > /*8190*/4096) - cp_size = /*8190*/4096; - - reg_start(0x146c,1); - e32(0x52cc32fb); - - reg_start(0x15ac,1); - e32(src); - e32(cp_size); - - reg_start(0x1704,0); - e32(0x0); - - reg_start(0x1404,1); - e32(dst); - e32(cp_size); - - reg_start(0x1700,0); - e32(0x0); - - reg_start(0x1640,3); - e32(0x00000000); - e32(0x00001fff); - e32(0x00000000); - e32(0x00001fff); - - start_packet3(RADEON_CP_PACKET3_UNK1B, 2); - e32(0 << 16 | 0); - e32(0 << 16 | 0); - e32(cp_size << 16 | 0x1); - - dst += cp_size; - src += cp_size; - size -= cp_size; - } - - reg_start(R300_RB3D_DSTCACHE_CTLSTAT,0); - e32(R300_RB3D_DSTCACHE_UNKNOWN_0A); - - reg_start(0x342c,0); - e32(0x00000005); - - reg_start(0x1720,0); - e32(0x00010000); -} - -void radeon_mm_use(r300ContextPtr rmesa, int id) -{ - uint64_t ull; -#ifdef MM_DEBUG - fprintf(stderr, "%s: %d at age %x\n", __FUNCTION__, id, radeonGetAge((radeonContextPtr)rmesa)); -#endif - drm_r300_cmd_header_t *cmd; - - assert(id <= rmesa->rmm->u_last); - - if(id == 0) - return; - -#if 0 /* FB VBOs. Needs further changes... */ - rmesa->rmm->u_list[id].ref_count ++; - if (rmesa->rmm->u_list[id].ref_count > 100 && rmesa->rmm->u_list[id].fb == NULL && - rmesa->rmm->u_list[id].size != RADEON_BUFFER_SIZE*16 /*&& rmesa->rmm->u_list[id].size > 40*/) { - driTexHeap *heap; - struct mem_block *mb; - - LOCK_HARDWARE(&(rmesa->radeon)); - - heap = rmesa->texture_heaps[0]; - - mb = mmAllocMem(heap->memory_heap, rmesa->rmm->u_list[id].size, heap->alignmentShift, 0); - - UNLOCK_HARDWARE(&(rmesa->radeon)); - - if (mb) { - rmesa->rmm->u_list[id].fb = mb; - - emit_lin_cp(rmesa, rmesa->radeon.radeonScreen->texOffset[0] + rmesa->rmm->u_list[id].fb->ofs, - r300GartOffsetFromVirtual(rmesa, rmesa->rmm->u_list[id].ptr), - rmesa->rmm->u_list[id].size); - } else { - WARN_ONCE("Upload to fb failed, %d, %d\n", rmesa->rmm->u_list[id].size, id); - } - //fprintf(stderr, "Upload to fb! %d, %d\n", rmesa->rmm->u_list[id].ref_count, id); - } - /*if (rmesa->rmm->u_list[id].fb) { - emit_lin_cp(rmesa, rmesa->radeon.radeonScreen->texOffset[0] + rmesa->rmm->u_list[id].fb->ofs, - r300GartOffsetFromVirtual(rmesa, rmesa->rmm->u_list[id].ptr), - rmesa->rmm->u_list[id].size); - }*/ -#endif - - cmd = (drm_r300_cmd_header_t *)r300AllocCmdBuf(rmesa, 2 + sizeof(ull) / 4, __FUNCTION__); - cmd[0].scratch.cmd_type = R300_CMD_SCRATCH; - cmd[0].scratch.reg = RADEON_MM_SCRATCH; - cmd[0].scratch.n_bufs = 1; - cmd[0].scratch.flags = 0; - cmd ++; - - ull = (uint64_t)(intptr_t)&rmesa->rmm->u_list[id].age; - _mesa_memcpy(cmd, &ull, sizeof(ull)); - cmd += sizeof(ull) / 4; - - cmd[0].u = /*id*/0; - - LOCK_HARDWARE(&rmesa->radeon); /* Protect from DRM. */ - rmesa->rmm->u_list[id].h_pending ++; - UNLOCK_HARDWARE(&rmesa->radeon); -} - -unsigned long radeon_mm_offset(r300ContextPtr rmesa, int id) -{ - unsigned long offset; - - assert(id <= rmesa->rmm->u_last); - - if (rmesa->rmm->u_list[id].fb) { - offset = rmesa->radeon.radeonScreen->texOffset[0] + rmesa->rmm->u_list[id].fb->ofs; - } else { - offset = (char *)rmesa->rmm->u_list[id].ptr - - (char *)rmesa->radeon.radeonScreen->gartTextures.map; - offset += rmesa->radeon.radeonScreen->gart_texture_offset; - } - - return offset; -} - -int radeon_mm_on_card(r300ContextPtr rmesa, int id) -{ - assert(id <= rmesa->rmm->u_last); - - if (rmesa->rmm->u_list[id].fb) - return GL_TRUE; - - return GL_FALSE; -} - -void *radeon_mm_map(r300ContextPtr rmesa, int id, int access) -{ -#ifdef MM_DEBUG - fprintf(stderr, "%s: %d at age %x\n", __FUNCTION__, id, radeonGetAge((radeonContextPtr)rmesa)); -#endif - void *ptr; - int tries = 0; - - assert(id <= rmesa->rmm->u_last); - - rmesa->rmm->u_list[id].ref_count = 0; - if (rmesa->rmm->u_list[id].fb) { - WARN_ONCE("Mapping fb!\n"); - /* Idle gart only and do upload on unmap */ - //rmesa->rmm->u_list[id].fb = NULL; - - - if(rmesa->rmm->u_list[id].mapped == 1) - WARN_ONCE("buffer %d already mapped\n", id); - - rmesa->rmm->u_list[id].mapped = 1; - ptr = radeon_mm_ptr(rmesa, id); - - return ptr; - } - - if (access == RADEON_MM_R) { - - if(rmesa->rmm->u_list[id].mapped == 1) - WARN_ONCE("buffer %d already mapped\n", id); - - rmesa->rmm->u_list[id].mapped = 1; - ptr = radeon_mm_ptr(rmesa, id); - - return ptr; - } - - - if (rmesa->rmm->u_list[id].h_pending) - r300FlushCmdBuf(rmesa, __FUNCTION__); - - if (rmesa->rmm->u_list[id].h_pending) { - return NULL; - } - - while(rmesa->rmm->u_list[id].age > radeonGetAge((radeonContextPtr)rmesa) && tries++ < 1000) - usleep(10); - - if (tries >= 1000) { - fprintf(stderr, "Idling failed (%x vs %x)\n", - rmesa->rmm->u_list[id].age, radeonGetAge((radeonContextPtr)rmesa)); - return NULL; - } - - if(rmesa->rmm->u_list[id].mapped == 1) - WARN_ONCE("buffer %d already mapped\n", id); - - rmesa->rmm->u_list[id].mapped = 1; - ptr = radeon_mm_ptr(rmesa, id); - - return ptr; -} - -void radeon_mm_unmap(r300ContextPtr rmesa, int id) -{ -#ifdef MM_DEBUG - fprintf(stderr, "%s: %d at age %x\n", __FUNCTION__, id, radeonGetAge((radeonContextPtr)rmesa)); -#endif - - assert(id <= rmesa->rmm->u_last); - - if(rmesa->rmm->u_list[id].mapped == 0) - WARN_ONCE("buffer %d not mapped\n", id); - - rmesa->rmm->u_list[id].mapped = 0; - - if (rmesa->rmm->u_list[id].fb) - emit_lin_cp(rmesa, rmesa->radeon.radeonScreen->texOffset[0] + rmesa->rmm->u_list[id].fb->ofs, - r300GartOffsetFromVirtual(rmesa, rmesa->rmm->u_list[id].ptr), - rmesa->rmm->u_list[id].size); -} - -void radeon_mm_free(r300ContextPtr rmesa, int id) -{ -#ifdef MM_DEBUG - fprintf(stderr, "%s: %d at age %x\n", __FUNCTION__, id, radeonGetAge((radeonContextPtr)rmesa)); -#endif - - assert(id <= rmesa->rmm->u_last); - - if(id == 0) - return; - - if(rmesa->rmm->u_list[id].ptr == NULL){ - WARN_ONCE("Not allocated!\n"); - return ; - } - - if(rmesa->rmm->u_list[id].pending){ - WARN_ONCE("%p already pended!\n", rmesa->rmm->u_list[id].ptr); - return ; - } - - rmesa->rmm->u_list[id].pending = 1; -} -#endif diff --git a/src/mesa/drivers/dri/r300/radeon_mm.h b/src/mesa/drivers/dri/r300/radeon_mm.h deleted file mode 100644 index 81f89917e60..00000000000 --- a/src/mesa/drivers/dri/r300/radeon_mm.h +++ /dev/null @@ -1,40 +0,0 @@ -#ifndef __RADEON_MM_H__ -#define __RADEON_MM_H__ - -//#define RADEON_MM_PDL 0 -#define RADEON_MM_UL 1 - -#define RADEON_MM_R 1 -#define RADEON_MM_W 2 -#define RADEON_MM_RW (RADEON_MM_R | RADEON_MM_W) - -#define RADEON_MM_SCRATCH 2 - -struct radeon_memory_manager { - struct { - void *ptr; - uint32_t size; - uint32_t age; - uint32_t h_pending; - int pending; - int mapped; - int ref_count; - struct mem_block *fb; - } *u_list; - int u_head, u_tail, u_size, u_last; - -}; - -extern void radeon_mm_init(r300ContextPtr rmesa); -extern void radeon_mm_destroy(r300ContextPtr rmesa); -extern void *radeon_mm_ptr(r300ContextPtr rmesa, int id); -extern int radeon_mm_find(r300ContextPtr rmesa, void *ptr); -extern int radeon_mm_alloc(r300ContextPtr rmesa, int alignment, int size); -extern void radeon_mm_use(r300ContextPtr rmesa, int id); -extern unsigned long radeon_mm_offset(r300ContextPtr rmesa, int id); -extern int radeon_mm_on_card(r300ContextPtr rmesa, int id); -extern void *radeon_mm_map(r300ContextPtr rmesa, int id, int access); -extern void radeon_mm_unmap(r300ContextPtr rmesa, int id); -extern void radeon_mm_free(r300ContextPtr rmesa, int id); - -#endif -- cgit v1.2.3 From a9ab36b8f2f650d6af362ed3be5fd2c1fe40e7eb Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 20:52:09 +0000 Subject: r300: radeon_span.h is now common code; radeon_span.c still needs some work. --- src/mesa/drivers/dri/r300/.gitignore | 1 + src/mesa/drivers/dri/r300/Makefile | 3 +- src/mesa/drivers/dri/r300/radeon_span.h | 50 --------------------------------- 3 files changed, 3 insertions(+), 51 deletions(-) delete mode 100644 src/mesa/drivers/dri/r300/radeon_span.h (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/.gitignore b/src/mesa/drivers/dri/r300/.gitignore index f8118b7c327..3689a6a78e5 100644 --- a/src/mesa/drivers/dri/r300/.gitignore +++ b/src/mesa/drivers/dri/r300/.gitignore @@ -1,3 +1,4 @@ radeon_chipset.h radeon_screen.[ch] +radeon_span.h server diff --git a/src/mesa/drivers/dri/r300/Makefile b/src/mesa/drivers/dri/r300/Makefile index 9b4ba0d7380..9e60f970d67 100644 --- a/src/mesa/drivers/dri/r300/Makefile +++ b/src/mesa/drivers/dri/r300/Makefile @@ -59,7 +59,8 @@ SYMLINKS = \ COMMON_SYMLINKS = \ radeon_chipset.h \ radeon_screen.c \ - radeon_screen.h + radeon_screen.h \ + radeon_span.h ##### TARGETS ##### diff --git a/src/mesa/drivers/dri/r300/radeon_span.h b/src/mesa/drivers/dri/r300/radeon_span.h deleted file mode 100644 index 9abe0864b17..00000000000 --- a/src/mesa/drivers/dri/r300/radeon_span.h +++ /dev/null @@ -1,50 +0,0 @@ -/************************************************************************** - -Copyright 2000, 2001 ATI Technologies Inc., Ontario, Canada, and - VA Linux Systems Inc., Fremont, California. -Copyright (C) The Weather Channel, Inc. 2002. All Rights Reserved. - -The Weather Channel (TM) funded Tungsten Graphics to develop the -initial release of the Radeon 8500 driver under the XFree86 license. -This notice must be preserved. - -All Rights Reserved. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice (including the -next paragraph) shall be included in all copies or substantial -portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -**************************************************************************/ - -/* - * Authors: - * Gareth Hughes - * Keith Whitwell - * Kevin E. Martin - */ - -#ifndef __RADEON_SPAN_H__ -#define __RADEON_SPAN_H__ - -#include "drirenderbuffer.h" - -extern void radeonInitSpanFuncs(GLcontext * ctx); -extern void radeonSetSpanFunctions(driRenderbuffer * rb, const GLvisual * vis); - -#endif -- cgit v1.2.3 From 4d5d4e1f97bf8d5c55ef817f7a28f920accc151b Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 21:06:28 +0000 Subject: r300: Cleaned up radeon_context.h slightly; mostly Indent. --- src/mesa/drivers/dri/r300/r300_context.h | 1 - src/mesa/drivers/dri/r300/radeon_context.h | 40 +- src/mesa/drivers/dri/r300/radeon_state.h | 2 - src/mesa/drivers/dri/radeon/radeon_context.h | 669 +++++++++++++-------------- 4 files changed, 347 insertions(+), 365 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_context.h b/src/mesa/drivers/dri/r300/r300_context.h index 8c4ed51af50..bae188397d2 100644 --- a/src/mesa/drivers/dri/r300/r300_context.h +++ b/src/mesa/drivers/dri/r300/r300_context.h @@ -46,7 +46,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "macros.h" #include "mtypes.h" #include "colormac.h" -#include "radeon_context.h" #define USER_BUFFERS diff --git a/src/mesa/drivers/dri/r300/radeon_context.h b/src/mesa/drivers/dri/r300/radeon_context.h index edcea3bce1e..2f239417a97 100644 --- a/src/mesa/drivers/dri/r300/radeon_context.h +++ b/src/mesa/drivers/dri/r300/radeon_context.h @@ -1,10 +1,15 @@ -/* +/************************************************************************** + +Copyright 2000, 2001 ATI Technologies Inc., Ontario, Canada, and + VA Linux Systems Inc., Fremont, California. Copyright (C) The Weather Channel, Inc. 2002. All Rights Reserved. The Weather Channel (TM) funded Tungsten Graphics to develop the initial release of the Radeon 8500 driver under the XFree86 license. This notice must be preserved. +All Rights Reserved. + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including @@ -29,7 +34,9 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* * Authors: + * Gareth Hughes * Keith Whitwell + * Kevin E. Martin * Nicolai Haehnle */ @@ -44,7 +51,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. struct radeon_context; typedef struct radeon_context radeonContextRec; -typedef struct radeon_context* radeonContextPtr; +typedef struct radeon_context *radeonContextPtr; #define TEX_0 0x1 #define TEX_1 0x2 @@ -56,17 +63,16 @@ typedef struct radeon_context* radeonContextPtr; #define TEX_7 0x80 #define TEX_ALL 0xff - /* Rasterizing fallbacks */ /* See correponding strings in r200_swtcl.c */ -#define RADEON_FALLBACK_TEXTURE 0x01 -#define RADEON_FALLBACK_DRAW_BUFFER 0x02 -#define RADEON_FALLBACK_STENCIL 0x04 -#define RADEON_FALLBACK_RENDER_MODE 0x08 -#define RADEON_FALLBACK_BLEND_EQ 0x10 -#define RADEON_FALLBACK_BLEND_FUNC 0x20 -#define RADEON_FALLBACK_DISABLE 0x40 -#define RADEON_FALLBACK_BORDER_MODE 0x80 +#define RADEON_FALLBACK_TEXTURE 0x0001 +#define RADEON_FALLBACK_DRAW_BUFFER 0x0002 +#define RADEON_FALLBACK_STENCIL 0x0004 +#define RADEON_FALLBACK_RENDER_MODE 0x0008 +#define RADEON_FALLBACK_BLEND_EQ 0x0010 +#define RADEON_FALLBACK_BLEND_FUNC 0x0020 +#define RADEON_FALLBACK_DISABLE 0x0040 +#define RADEON_FALLBACK_BORDER_MODE 0x0080 #if R200_MERGED extern void radeonFallback(GLcontext * ctx, GLuint bit, GLboolean mode); @@ -103,19 +109,18 @@ extern void radeonTclFallback(GLcontext * ctx, GLuint bit, GLboolean mode); #define TCL_FALLBACK( ctx, bit, mode ) ; #endif - struct radeon_dri_mirror { __DRIcontextPrivate *context; /* DRI context */ __DRIscreenPrivate *screen; /* DRI screen */ /** * DRI drawable bound to this context for drawing. */ - __DRIdrawablePrivate *drawable; + __DRIdrawablePrivate *drawable; /** * DRI drawable bound to this context for reading. */ - __DRIdrawablePrivate *readable; + __DRIdrawablePrivate *readable; drm_context_t hwContext; drm_hw_lock_t *hwLock; @@ -151,7 +156,7 @@ struct radeon_state { * structure. */ struct radeon_context { - GLcontext *glCtx; /* Mesa context */ + GLcontext *glCtx; /* Mesa context */ radeonScreenPtr radeonScreen; /* Screen private DRI data */ /* Fallback state */ @@ -187,7 +192,6 @@ struct radeon_context { GLuint swap_count; GLuint swap_missed_count; - /* Derived state */ struct radeon_state state; @@ -202,7 +206,7 @@ extern void radeonSwapBuffers(__DRIdrawablePrivate * dPriv); extern void radeonCopySubBuffer(__DRIdrawablePrivate * dPriv, int x, int y, int w, int h); extern GLboolean radeonInitContext(radeonContextPtr radeon, - struct dd_function_table* functions, + struct dd_function_table *functions, const __GLcontextModes * glVisual, __DRIcontextPrivate * driContextPriv, void *sharedContextPrivate); @@ -239,4 +243,4 @@ extern int RADEON_DEBUG; #define DEBUG_PIXEL 0x2000 #define DEBUG_MEMORY 0x4000 -#endif /* __RADEON_CONTEXT_H__ */ +#endif /* __RADEON_CONTEXT_H__ */ diff --git a/src/mesa/drivers/dri/r300/radeon_state.h b/src/mesa/drivers/dri/r300/radeon_state.h index c2d041eb4ae..821cb40c7eb 100644 --- a/src/mesa/drivers/dri/r300/radeon_state.h +++ b/src/mesa/drivers/dri/r300/radeon_state.h @@ -31,8 +31,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef __RADEON_STATE_H__ #define __RADEON_STATE_H__ -#include "radeon_context.h" - extern void radeonRecalcScissorRects(radeonContextPtr radeon); extern void radeonSetCliprects(radeonContextPtr radeon); extern void radeonUpdateScissor(GLcontext* ctx); diff --git a/src/mesa/drivers/dri/radeon/radeon_context.h b/src/mesa/drivers/dri/radeon/radeon_context.h index 02cea2f4e37..8dedd66f563 100644 --- a/src/mesa/drivers/dri/radeon/radeon_context.h +++ b/src/mesa/drivers/dri/radeon/radeon_context.h @@ -1,8 +1,12 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/radeon/radeon_context.h,v 1.6 2002/12/16 16:18:58 dawes Exp $ */ /************************************************************************** Copyright 2000, 2001 ATI Technologies Inc., Ontario, Canada, and VA Linux Systems Inc., Fremont, California. +Copyright (C) The Weather Channel, Inc. 2002. All Rights Reserved. + +The Weather Channel (TM) funded Tungsten Graphics to develop the +initial release of the Radeon 8500 driver under the XFree86 license. +This notice must be preserved. All Rights Reserved. @@ -30,9 +34,10 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* * Authors: - * Kevin E. Martin * Gareth Hughes * Keith Whitwell + * Kevin E. Martin + * Nicolai Haehnle */ #ifndef __RADEON_CONTEXT_H__ @@ -54,7 +59,10 @@ typedef struct radeon_context *radeonContextPtr; /* This union is used to avoid warnings/miscompilation with float to uint32_t casts due to strict-aliasing */ -typedef union { GLfloat f; uint32_t ui32; } float_ui32_type; +typedef union { + GLfloat f; + uint32_t ui32; +} float_ui32_type; #include "radeon_lock.h" #include "radeon_screen.h" @@ -62,8 +70,13 @@ typedef union { GLfloat f; uint32_t ui32; } float_ui32_type; #include "math/m_vector.h" -/* Flags for software fallback cases */ -/* See correponding strings in radeon_swtcl.c */ +#define TEX_0 0x1 +#define TEX_1 0x2 +#define TEX_2 0x4 +#define TEX_ALL 0x7 + +/* Rasterizing fallbacks */ +/* See correponding strings in r200_swtcl.c */ #define RADEON_FALLBACK_TEXTURE 0x0001 #define RADEON_FALLBACK_DRAW_BUFFER 0x0002 #define RADEON_FALLBACK_STENCIL 0x0004 @@ -84,46 +97,41 @@ typedef union { GLfloat f; uint32_t ui32; } float_ui32_type; #include "tnl_dd/t_dd_vertex.h" #undef TAG -typedef void (*radeon_tri_func)( radeonContextPtr, +typedef void (*radeon_tri_func) (radeonContextPtr, radeonVertex *, - radeonVertex *, - radeonVertex * ); - -typedef void (*radeon_line_func)( radeonContextPtr, - radeonVertex *, - radeonVertex * ); + radeonVertex *, radeonVertex *); -typedef void (*radeon_point_func)( radeonContextPtr, - radeonVertex * ); +typedef void (*radeon_line_func) (radeonContextPtr, + radeonVertex *, radeonVertex *); +typedef void (*radeon_point_func) (radeonContextPtr, radeonVertex *); struct radeon_colorbuffer_state { - GLuint clear; - int roundEnable; + GLuint clear; + int roundEnable; }; - struct radeon_depthbuffer_state { - GLuint clear; - GLfloat scale; + GLuint clear; + GLfloat scale; }; struct radeon_scissor_state { - drm_clip_rect_t rect; - GLboolean enabled; + drm_clip_rect_t rect; + GLboolean enabled; - GLuint numClipRects; /* Cliprects active */ - GLuint numAllocedClipRects; /* Cliprects available */ - drm_clip_rect_t *pClipRects; + GLuint numClipRects; /* Cliprects active */ + GLuint numAllocedClipRects; /* Cliprects available */ + drm_clip_rect_t *pClipRects; }; struct radeon_stencilbuffer_state { - GLboolean hwBuffer; - GLuint clear; /* rb3d_stencilrefmask value */ + GLboolean hwBuffer; + GLuint clear; /* rb3d_stencilrefmask value */ }; struct radeon_stipple_state { - GLuint mask[32]; + GLuint mask[32]; }; /* used for both tcl_vtx and vc_frmt tex bits (they are identical) */ @@ -133,70 +141,61 @@ struct radeon_stipple_state { #define RADEON_Q_BIT(unit) \ (unit == 0 ? RADEON_CP_VC_FRMT_Q0 : (RADEON_CP_VC_FRMT_Q1 >> 2) << (2 * unit)) -#define TEX_0 0x1 -#define TEX_1 0x2 -#define TEX_2 0x4 -#define TEX_ALL 0x7 - typedef struct radeon_tex_obj radeonTexObj, *radeonTexObjPtr; /* Texture object in locally shared texture space. */ struct radeon_tex_obj { - driTextureObject base; + driTextureObject base; - GLuint bufAddr; /* Offset to start of locally - shared texture block */ + GLuint bufAddr; /* Offset to start of locally + shared texture block */ - GLuint dirty_state; /* Flags (1 per texunit) for - whether or not this texobj - has dirty hardware state - (pp_*) that needs to be - brought into the - texunit. */ + GLuint dirty_state; /* Flags (1 per texunit) for + whether or not this texobj + has dirty hardware state + (pp_*) that needs to be + brought into the + texunit. */ - drm_radeon_tex_image_t image[6][RADEON_MAX_TEXTURE_LEVELS]; - /* Six, for the cube faces */ + drm_radeon_tex_image_t image[6][RADEON_MAX_TEXTURE_LEVELS]; + /* Six, for the cube faces */ - GLuint pp_txfilter; /* hardware register values */ - GLuint pp_txformat; - GLuint pp_txoffset; /* Image location in texmem. - All cube faces follow. */ - GLuint pp_txsize; /* npot only */ - GLuint pp_txpitch; /* npot only */ - GLuint pp_border_color; - GLuint pp_cubic_faces; /* cube face 1,2,3,4 log2 sizes */ + GLuint pp_txfilter; /* hardware register values */ + GLuint pp_txformat; + GLuint pp_txoffset; /* Image location in texmem. + All cube faces follow. */ + GLuint pp_txsize; /* npot only */ + GLuint pp_txpitch; /* npot only */ + GLuint pp_border_color; + GLuint pp_cubic_faces; /* cube face 1,2,3,4 log2 sizes */ - GLboolean border_fallback; + GLboolean border_fallback; - GLuint tile_bits; /* hw texture tile bits used on this texture */ + GLuint tile_bits; /* hw texture tile bits used on this texture */ }; - struct radeon_texture_env_state { - radeonTexObjPtr texobj; - GLenum format; - GLenum envMode; + radeonTexObjPtr texobj; + GLenum format; + GLenum envMode; }; struct radeon_texture_state { - struct radeon_texture_env_state unit[RADEON_MAX_TEXTURE_UNITS]; + struct radeon_texture_env_state unit[RADEON_MAX_TEXTURE_UNITS]; }; - struct radeon_state_atom { - struct radeon_state_atom *next, *prev; - const char *name; /* for debug */ - int cmd_size; /* size in bytes */ - GLuint is_tcl; - int *cmd; /* one or more cmd's */ - int *lastcmd; /* one or more cmd's */ - GLboolean dirty; /* dirty-mark in emit_state_list */ - GLboolean (*check)( GLcontext * ); /* is this state active? */ + struct radeon_state_atom *next, *prev; + const char *name; /* for debug */ + int cmd_size; /* size in bytes */ + GLuint is_tcl; + int *cmd; /* one or more cmd's */ + int *lastcmd; /* one or more cmd's */ + GLboolean dirty; /* dirty-mark in emit_state_list */ + GLboolean(*check) (GLcontext *); /* is this state active? */ }; - - /* Trying to keep these relatively short as the variables are becoming * extravagently long. Drop the driver name prefix off the front of * everything - I think we know which driver we're in by now, and keep the @@ -263,9 +262,9 @@ struct radeon_state_atom { #define TEX_PP_BORDER_COLOR 8 #define TEX_STATE_SIZE 9 -#define TXR_CMD_0 0 /* rectangle textures */ -#define TXR_PP_TEX_SIZE 1 /* 0x1d04, 0x1d0c for NPOT! */ -#define TXR_PP_TEX_PITCH 2 /* 0x1d08, 0x1d10 for NPOT! */ +#define TXR_CMD_0 0 /* rectangle textures */ +#define TXR_PP_TEX_SIZE 1 /* 0x1d04, 0x1d0c for NPOT! */ +#define TXR_PP_TEX_PITCH 2 /* 0x1d08, 0x1d10 for NPOT! */ #define TXR_STATE_SIZE 3 #define CUBE_CMD_0 0 @@ -297,11 +296,11 @@ struct radeon_state_atom { #define TCL_PER_LIGHT_CTL_3 11 #define TCL_STATE_SIZE 12 -#define MTL_CMD_0 0 -#define MTL_EMMISSIVE_RED 1 -#define MTL_EMMISSIVE_GREEN 2 -#define MTL_EMMISSIVE_BLUE 3 -#define MTL_EMMISSIVE_ALPHA 4 +#define MTL_CMD_0 0 +#define MTL_EMMISSIVE_RED 1 +#define MTL_EMMISSIVE_GREEN 2 +#define MTL_EMMISSIVE_BLUE 3 +#define MTL_EMMISSIVE_ALPHA 4 #define MTL_AMBIENT_RED 5 #define MTL_AMBIENT_GREEN 6 #define MTL_AMBIENT_BLUE 7 @@ -365,7 +364,7 @@ struct radeon_state_atom { #define LIT_SPOT_EXPONENT 27 #define LIT_SPOT_CUTOFF 28 #define LIT_SPECULAR_THRESH 29 -#define LIT_RANGE_CUTOFF 30 /* ? */ +#define LIT_RANGE_CUTOFF 30 /* ? */ #define LIT_ATTEN_CONST_INV 31 #define LIT_STATE_SIZE 32 @@ -409,59 +408,54 @@ struct radeon_state_atom { #define SHN_SHININESS 1 #define SHN_STATE_SIZE 2 - - - - struct radeon_hw_state { - /* Head of the linked list of state atoms. */ - struct radeon_state_atom atomlist; - - /* Hardware state, stored as cmdbuf commands: - * -- Need to doublebuffer for - * - eliding noop statechange loops? (except line stipple count) - */ - struct radeon_state_atom ctx; - struct radeon_state_atom set; - struct radeon_state_atom lin; - struct radeon_state_atom msk; - struct radeon_state_atom vpt; - struct radeon_state_atom tcl; - struct radeon_state_atom msc; - struct radeon_state_atom tex[3]; - struct radeon_state_atom cube[3]; - struct radeon_state_atom zbs; - struct radeon_state_atom mtl; - struct radeon_state_atom mat[6]; - struct radeon_state_atom lit[8]; /* includes vec, scl commands */ - struct radeon_state_atom ucp[6]; - struct radeon_state_atom eye; /* eye pos */ - struct radeon_state_atom grd; /* guard band clipping */ - struct radeon_state_atom fog; - struct radeon_state_atom glt; - struct radeon_state_atom txr[3]; /* for NPOT */ - - int max_state_size; /* Number of bytes necessary for a full state emit. */ - GLboolean is_dirty, all_dirty; + /* Head of the linked list of state atoms. */ + struct radeon_state_atom atomlist; + + /* Hardware state, stored as cmdbuf commands: + * -- Need to doublebuffer for + * - eliding noop statechange loops? (except line stipple count) + */ + struct radeon_state_atom ctx; + struct radeon_state_atom set; + struct radeon_state_atom lin; + struct radeon_state_atom msk; + struct radeon_state_atom vpt; + struct radeon_state_atom tcl; + struct radeon_state_atom msc; + struct radeon_state_atom tex[3]; + struct radeon_state_atom cube[3]; + struct radeon_state_atom zbs; + struct radeon_state_atom mtl; + struct radeon_state_atom mat[6]; + struct radeon_state_atom lit[8]; /* includes vec, scl commands */ + struct radeon_state_atom ucp[6]; + struct radeon_state_atom eye; /* eye pos */ + struct radeon_state_atom grd; /* guard band clipping */ + struct radeon_state_atom fog; + struct radeon_state_atom glt; + struct radeon_state_atom txr[3]; /* for NPOT */ + + int max_state_size; /* Number of bytes necessary for a full state emit. */ + GLboolean is_dirty, all_dirty; }; struct radeon_state { - /* Derived state for internal purposes: - */ - struct radeon_colorbuffer_state color; - struct radeon_depthbuffer_state depth; - struct radeon_scissor_state scissor; - struct radeon_stencilbuffer_state stencil; - struct radeon_stipple_state stipple; - struct radeon_texture_state texture; + /* Derived state for internal purposes: + */ + struct radeon_colorbuffer_state color; + struct radeon_depthbuffer_state depth; + struct radeon_scissor_state scissor; + struct radeon_stencilbuffer_state stencil; + struct radeon_stipple_state stipple; + struct radeon_texture_state texture; }; - /* Need refcounting on dma buffers: */ struct radeon_dma_buffer { - int refcount; /* the number of retained regions in buf */ - drmBufPtr buf; + int refcount; /* the number of retained regions in buf */ + drmBufPtr buf; }; #define GET_START(rvb) (rmesa->radeonScreen->gart_buffer_offset + \ @@ -471,139 +465,130 @@ struct radeon_dma_buffer { /* A retained region, eg vertices for indexed vertices. */ struct radeon_dma_region { - struct radeon_dma_buffer *buf; - char *address; /* == buf->address */ - int start, end, ptr; /* offsets from start of buf */ - int aos_start; - int aos_stride; - int aos_size; + struct radeon_dma_buffer *buf; + char *address; /* == buf->address */ + int start, end, ptr; /* offsets from start of buf */ + int aos_start; + int aos_stride; + int aos_size; }; - struct radeon_dma { - /* Active dma region. Allocations for vertices and retained - * regions come from here. Also used for emitting random vertices, - * these may be flushed by calling flush_current(); - */ - struct radeon_dma_region current; - - void (*flush)( radeonContextPtr ); + /* Active dma region. Allocations for vertices and retained + * regions come from here. Also used for emitting random vertices, + * these may be flushed by calling flush_current(); + */ + struct radeon_dma_region current; - char *buf0_address; /* start of buf[0], for index calcs */ - GLuint nr_released_bufs; /* flush after so many buffers released */ + void (*flush) (radeonContextPtr); + + char *buf0_address; /* start of buf[0], for index calcs */ + GLuint nr_released_bufs; /* flush after so many buffers released */ }; struct radeon_dri_mirror { - __DRIcontextPrivate *context; /* DRI context */ - __DRIscreenPrivate *screen; /* DRI screen */ + __DRIcontextPrivate *context; /* DRI context */ + __DRIscreenPrivate *screen; /* DRI screen */ /** * DRI drawable bound to this context for drawing. */ - __DRIdrawablePrivate *drawable; + __DRIdrawablePrivate *drawable; /** * DRI drawable bound to this context for reading. */ - __DRIdrawablePrivate *readable; + __DRIdrawablePrivate *readable; - drm_context_t hwContext; - drm_hw_lock_t *hwLock; - int fd; - int drmMinor; + drm_context_t hwContext; + drm_hw_lock_t *hwLock; + int fd; + int drmMinor; }; - -#define RADEON_CMD_BUF_SZ (8*1024) +#define RADEON_CMD_BUF_SZ (8*1024) struct radeon_store { - GLuint statenr; - GLuint primnr; - char cmd_buf[RADEON_CMD_BUF_SZ]; - int cmd_used; - int elts_start; + GLuint statenr; + GLuint primnr; + char cmd_buf[RADEON_CMD_BUF_SZ]; + int cmd_used; + int elts_start; }; - /* radeon_tcl.c */ struct radeon_tcl_info { - GLuint vertex_format; - GLuint hw_primitive; - - /* Temporary for cases where incoming vertex data is incompatible - * with maos code. - */ - GLvector4f ObjClean; - - struct radeon_dma_region *aos_components[8]; - GLuint nr_aos_components; - - GLuint *Elts; - - struct radeon_dma_region indexed_verts; - struct radeon_dma_region obj; - struct radeon_dma_region rgba; - struct radeon_dma_region spec; - struct radeon_dma_region fog; - struct radeon_dma_region tex[RADEON_MAX_TEXTURE_UNITS]; - struct radeon_dma_region norm; + GLuint vertex_format; + GLuint hw_primitive; + + /* Temporary for cases where incoming vertex data is incompatible + * with maos code. + */ + GLvector4f ObjClean; + + struct radeon_dma_region *aos_components[8]; + GLuint nr_aos_components; + + GLuint *Elts; + + struct radeon_dma_region indexed_verts; + struct radeon_dma_region obj; + struct radeon_dma_region rgba; + struct radeon_dma_region spec; + struct radeon_dma_region fog; + struct radeon_dma_region tex[RADEON_MAX_TEXTURE_UNITS]; + struct radeon_dma_region norm; }; - /* radeon_swtcl.c */ struct radeon_swtcl_info { - GLuint RenderIndex; - GLuint vertex_size; - GLuint vertex_format; + GLuint RenderIndex; + GLuint vertex_size; + GLuint vertex_format; - struct tnl_attr_map vertex_attrs[VERT_ATTRIB_MAX]; - GLuint vertex_attr_count; + struct tnl_attr_map vertex_attrs[VERT_ATTRIB_MAX]; + GLuint vertex_attr_count; - GLubyte *verts; + GLubyte *verts; - /* Fallback rasterization functions - */ - radeon_point_func draw_point; - radeon_line_func draw_line; - radeon_tri_func draw_tri; + /* Fallback rasterization functions + */ + radeon_point_func draw_point; + radeon_line_func draw_line; + radeon_tri_func draw_tri; - GLuint hw_primitive; - GLenum render_primitive; - GLuint numverts; + GLuint hw_primitive; + GLenum render_primitive; + GLuint numverts; /** * Offset of the 4UB color data within a hardware (swtcl) vertex. */ - GLuint coloroffset; + GLuint coloroffset; /** * Offset of the 3UB specular color data within a hardware (swtcl) vertex. */ - GLuint specoffset; + GLuint specoffset; - GLboolean needproj; + GLboolean needproj; - struct radeon_dma_region indexed_verts; + struct radeon_dma_region indexed_verts; }; - struct radeon_ioctl { - GLuint vertex_offset; - GLuint vertex_size; + GLuint vertex_offset; + GLuint vertex_size; }; - - #define RADEON_MAX_PRIMS 64 - - struct radeon_prim { - GLuint start; - GLuint end; - GLuint prim; + GLuint start; + GLuint end; + GLuint prim; }; /* A maximum total of 20 elements per vertex: 3 floats for position, 3 @@ -615,145 +600,141 @@ struct radeon_prim { */ #define RADEON_MAX_VERTEX_SIZE 20 - struct radeon_context { - GLcontext *glCtx; /* Mesa context */ - - /* Driver and hardware state management - */ - struct radeon_hw_state hw; - struct radeon_state state; - - /* Texture object bookkeeping - */ - unsigned nr_heaps; - driTexHeap * texture_heaps[ RADEON_NR_TEX_HEAPS ]; - driTextureObject swapped; - int texture_depth; - float initialMaxAnisotropy; - - /* Rasterization and vertex state: - */ - GLuint TclFallback; - GLuint Fallback; - GLuint NewGLState; - DECLARE_RENDERINPUTS(tnl_index_bitset); /* index of bits for last tnl_install_attrs */ - - /* Vertex buffers - */ - struct radeon_ioctl ioctl; - struct radeon_dma dma; - struct radeon_store store; - /* A full state emit as of the first state emit in the main store, in case - * the context is lost. - */ - struct radeon_store backup_store; - - /* Page flipping - */ - GLuint doPageFlip; - - /* Busy waiting - */ - GLuint do_usleeps; - GLuint do_irqs; - GLuint irqsEmitted; - drm_radeon_irq_wait_t iw; - - /* Drawable, cliprect and scissor information - */ - GLuint numClipRects; /* Cliprects for the draw buffer */ - drm_clip_rect_t *pClipRects; - unsigned int lastStamp; - GLboolean lost_context; - GLboolean save_on_next_emit; - radeonScreenPtr radeonScreen; /* Screen private DRI data */ - drm_radeon_sarea_t *sarea; /* Private SAREA data */ - - /* TCL stuff - */ - GLmatrix TexGenMatrix[RADEON_MAX_TEXTURE_UNITS]; - GLboolean recheck_texgen[RADEON_MAX_TEXTURE_UNITS]; - GLboolean TexGenNeedNormals[RADEON_MAX_TEXTURE_UNITS]; - GLuint TexGenEnabled; - GLuint NeedTexMatrix; - GLuint TexMatColSwap; - GLmatrix tmpmat[RADEON_MAX_TEXTURE_UNITS]; - GLuint last_ReallyEnabled; - - /* VBI - */ - GLuint vbl_seq; - GLuint vblank_flags; - - int64_t swap_ust; - int64_t swap_missed_ust; - - GLuint swap_count; - GLuint swap_missed_count; - - - /* radeon_tcl.c - */ - struct radeon_tcl_info tcl; - - /* radeon_swtcl.c - */ - struct radeon_swtcl_info swtcl; - - /* Mirrors of some DRI state - */ - struct radeon_dri_mirror dri; - - /* Configuration cache - */ - driOptionCache optionCache; - - GLboolean using_hyperz; - GLboolean texmicrotile; - - /* Performance counters - */ - GLuint boxes; /* Draw performance boxes */ - GLuint hardwareWentIdle; - GLuint c_clears; - GLuint c_drawWaits; - GLuint c_textureSwaps; - GLuint c_textureBytes; - GLuint c_vertexBuffers; + GLcontext *glCtx; /* Mesa context */ + + /* Driver and hardware state management + */ + struct radeon_hw_state hw; + struct radeon_state state; + + /* Texture object bookkeeping + */ + unsigned nr_heaps; + driTexHeap *texture_heaps[RADEON_NR_TEX_HEAPS]; + driTextureObject swapped; + int texture_depth; + float initialMaxAnisotropy; + + /* Rasterization and vertex state: + */ + GLuint TclFallback; + GLuint Fallback; + GLuint NewGLState; + DECLARE_RENDERINPUTS(tnl_index_bitset); /* index of bits for last tnl_install_attrs */ + + /* Vertex buffers + */ + struct radeon_ioctl ioctl; + struct radeon_dma dma; + struct radeon_store store; + /* A full state emit as of the first state emit in the main store, in case + * the context is lost. + */ + struct radeon_store backup_store; + + /* Page flipping + */ + GLuint doPageFlip; + + /* Busy waiting + */ + GLuint do_usleeps; + GLuint do_irqs; + GLuint irqsEmitted; + drm_radeon_irq_wait_t iw; + + /* Drawable, cliprect and scissor information + */ + GLuint numClipRects; /* Cliprects for the draw buffer */ + drm_clip_rect_t *pClipRects; + unsigned int lastStamp; + GLboolean lost_context; + GLboolean save_on_next_emit; + radeonScreenPtr radeonScreen; /* Screen private DRI data */ + drm_radeon_sarea_t *sarea; /* Private SAREA data */ + + /* TCL stuff + */ + GLmatrix TexGenMatrix[RADEON_MAX_TEXTURE_UNITS]; + GLboolean recheck_texgen[RADEON_MAX_TEXTURE_UNITS]; + GLboolean TexGenNeedNormals[RADEON_MAX_TEXTURE_UNITS]; + GLuint TexGenEnabled; + GLuint NeedTexMatrix; + GLuint TexMatColSwap; + GLmatrix tmpmat[RADEON_MAX_TEXTURE_UNITS]; + GLuint last_ReallyEnabled; + + /* VBI + */ + GLuint vbl_seq; + GLuint vblank_flags; + + int64_t swap_ust; + int64_t swap_missed_ust; + + GLuint swap_count; + GLuint swap_missed_count; + + /* radeon_tcl.c + */ + struct radeon_tcl_info tcl; + + /* radeon_swtcl.c + */ + struct radeon_swtcl_info swtcl; + + /* Mirrors of some DRI state + */ + struct radeon_dri_mirror dri; + + /* Configuration cache + */ + driOptionCache optionCache; + + GLboolean using_hyperz; + GLboolean texmicrotile; + + /* Performance counters + */ + GLuint boxes; /* Draw performance boxes */ + GLuint hardwareWentIdle; + GLuint c_clears; + GLuint c_drawWaits; + GLuint c_textureSwaps; + GLuint c_textureBytes; + GLuint c_vertexBuffers; }; #define RADEON_CONTEXT(ctx) ((radeonContextPtr)(ctx->DriverCtx)) - -static __inline GLuint radeonPackColor( GLuint cpp, - GLubyte r, GLubyte g, - GLubyte b, GLubyte a ) +static __inline GLuint radeonPackColor(GLuint cpp, + GLubyte r, GLubyte g, + GLubyte b, GLubyte a) { - switch ( cpp ) { - case 2: - return PACK_COLOR_565( r, g, b ); - case 4: - return PACK_COLOR_8888( a, r, g, b ); - default: - return 0; - } + switch (cpp) { + case 2: + return PACK_COLOR_565(r, g, b); + case 4: + return PACK_COLOR_8888(a, r, g, b); + default: + return 0; + } } #define RADEON_OLD_PACKETS 1 - -extern void radeonDestroyContext( __DRIcontextPrivate *driContextPriv ); -extern GLboolean radeonCreateContext(const __GLcontextModes *glVisual, - __DRIcontextPrivate *driContextPriv, +extern void radeonDestroyContext(__DRIcontextPrivate * driContextPriv); +extern GLboolean radeonCreateContext(const __GLcontextModes * glVisual, + __DRIcontextPrivate * driContextPriv, void *sharedContextPrivate); -extern void radeonSwapBuffers( __DRIdrawablePrivate *dPriv ); +extern void radeonSwapBuffers(__DRIdrawablePrivate * dPriv); extern void radeonCopySubBuffer(__DRIdrawablePrivate * dPriv, int x, int y, int w, int h); -extern GLboolean radeonMakeCurrent( __DRIcontextPrivate *driContextPriv, - __DRIdrawablePrivate *driDrawPriv, - __DRIdrawablePrivate *driReadPriv ); -extern GLboolean radeonUnbindContext( __DRIcontextPrivate *driContextPriv ); +extern GLboolean radeonMakeCurrent(__DRIcontextPrivate * driContextPriv, + __DRIdrawablePrivate * driDrawPriv, + __DRIdrawablePrivate * driReadPriv); +extern GLboolean radeonUnbindContext(__DRIcontextPrivate * driContextPriv); /* ================================================================ * Debugging: @@ -766,18 +747,18 @@ extern int RADEON_DEBUG; #define RADEON_DEBUG 0 #endif -#define DEBUG_TEXTURE 0x001 -#define DEBUG_STATE 0x002 -#define DEBUG_IOCTL 0x004 -#define DEBUG_PRIMS 0x008 -#define DEBUG_VERTS 0x010 -#define DEBUG_FALLBACKS 0x020 -#define DEBUG_VFMT 0x040 -#define DEBUG_CODEGEN 0x080 -#define DEBUG_VERBOSE 0x100 -#define DEBUG_DRI 0x200 -#define DEBUG_DMA 0x400 -#define DEBUG_SANITY 0x800 -#define DEBUG_SYNC 0x1000 - -#endif /* __RADEON_CONTEXT_H__ */ +#define DEBUG_TEXTURE 0x0001 +#define DEBUG_STATE 0x0002 +#define DEBUG_IOCTL 0x0004 +#define DEBUG_PRIMS 0x0008 +#define DEBUG_VERTS 0x0010 +#define DEBUG_FALLBACKS 0x0020 +#define DEBUG_VFMT 0x0040 +#define DEBUG_CODEGEN 0x0080 +#define DEBUG_VERBOSE 0x0100 +#define DEBUG_DRI 0x0200 +#define DEBUG_DMA 0x0400 +#define DEBUG_SANITY 0x0800 +#define DEBUG_SYNC 0x1000 + +#endif /* __RADEON_CONTEXT_H__ */ -- cgit v1.2.3 From 16c503f39a05726f3e994e42cb1c03e0a308b80d Mon Sep 17 00:00:00 2001 From: Brian Date: Wed, 9 May 2007 16:22:53 -0600 Subject: Tweak the shell scripting for descending into and building subdirs. In general, use this: @for dir in $(SUBDIRS) ; do \ if [ -d $$dir ] ; then \ (cd $$dir && $(MAKE)) || exit 1; \ fi \ done Basically, silently skip missing subdirs but generate an error and stop if there's a compilation or install problem. This was done inconsistantly before. In once case, a missing subdir was causing us to go into an infinte loop! --- Makefile | 13 ++++++++++--- progs/Makefile | 4 ++-- src/Makefile | 6 +++--- src/mesa/drivers/dri/Makefile | 14 +++++++++----- 4 files changed, 24 insertions(+), 13 deletions(-) (limited to 'src/mesa/drivers') diff --git a/Makefile b/Makefile index 88b6b79979d..4984e4dceb7 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,9 @@ SUBDIRS = src progs default: $(TOP)/configs/current @for dir in $(SUBDIRS) ; do \ - (cd $$dir ; $(MAKE)) || exit 1 ; \ + if [ -d $$dir ] ; then \ + (cd $$dir && $(MAKE)) || exit 1 ; \ + fi \ done @@ -16,7 +18,9 @@ doxygen: clean: @for dir in $(SUBDIRS) ; do \ - (cd $$dir ; $(MAKE) clean) ; \ + if [ -d $$dir ] ; then \ + (cd $$dir && $(MAKE) clean) ; \ + fi \ done @@ -34,9 +38,12 @@ realclean: install: @for dir in $(SUBDIRS) ; do \ - (cd $$dir ; $(MAKE) install) || exit 1 ; \ + if [ -d $$dir ] ; then \ + (cd $$dir && $(MAKE) install) || exit 1 ; \ + fi \ done + # DirectFBGL module installation linux-directfb-install: cd src/mesa/drivers/directfb && $(MAKE) install diff --git a/progs/Makefile b/progs/Makefile index d5ec17d43e5..5e705efa7ee 100644 --- a/progs/Makefile +++ b/progs/Makefile @@ -17,7 +17,7 @@ message: subdirs: @for dir in $(SUBDIRS) ; do \ if [ -d $$dir ] ; then \ - (cd $$dir ; $(MAKE)) || exit 1 ; \ + (cd $$dir && $(MAKE)) || exit 1 ; \ fi \ done @@ -27,6 +27,6 @@ install: clean: @for dir in $(SUBDIRS) tests ; do \ if [ -d $$dir ] ; then \ - (cd $$dir ; $(MAKE) clean) ; \ + (cd $$dir && $(MAKE) clean) ; \ fi \ done diff --git a/src/Makefile b/src/Makefile index f52a06a3c96..f93987e6880 100644 --- a/src/Makefile +++ b/src/Makefile @@ -17,14 +17,14 @@ message: subdirs: @for dir in $(SUBDIRS) ; do \ if [ -d $$dir ] ; then \ - (cd $$dir ; $(MAKE)) || exit 1 ; \ + (cd $$dir && $(MAKE)) || exit 1; \ fi \ done install: @for dir in $(SUBDIRS) ; do \ if [ -d $$dir ] ; then \ - (cd $$dir ; $(MAKE) install) || exit 1 ; \ + (cd $$dir && $(MAKE) install) || exit 1 ; \ fi \ done @@ -35,6 +35,6 @@ $(TOP)/$(LIB_DIR): clean: @for dir in $(SUBDIRS) ; do \ if [ -d $$dir ] ; then \ - (cd $$dir ; $(MAKE) clean) ; \ + (cd $$dir && $(MAKE) clean) ; \ fi \ done diff --git a/src/mesa/drivers/dri/Makefile b/src/mesa/drivers/dri/Makefile index 1db878bab70..4abcc16c1bc 100644 --- a/src/mesa/drivers/dri/Makefile +++ b/src/mesa/drivers/dri/Makefile @@ -14,21 +14,25 @@ $(TOP)/$(LIB_DIR): subdirs: - echo $(DRI_DIRS) @for dir in $(DRI_DIRS) ; do \ - echo $$dir ; \ - (cd $$dir && $(MAKE)) || exit 1; \ + if [ -d $$dir ] ; then \ + (cd $$dir && $(MAKE)) || exit 1 ; \ + fi \ done install: @for dir in $(DRI_DIRS) ; do \ - (cd $$dir && $(MAKE) install) || exit 1; \ + if [ -d $$dir ] ; then \ + (cd $$dir && $(MAKE) install) || exit 1 ; \ + fi \ done clean: @for dir in $(DRI_DIRS) ; do \ - (cd $$dir && $(MAKE) clean) ; \ + if [ -d $$dir ] ; then \ + (cd $$dir && $(MAKE) clean ; \ + fi \ done -rm -f common/*.o -- cgit v1.2.3 From 0dcea4bf8eeddf5d1f3b40c6ba5eedec298b040c Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 21:41:03 +0000 Subject: r300: Converted a few "if (0)" into "if (RADEON_DEBUG & DEBUG_TEXTURE)". --- src/mesa/drivers/dri/r300/r300_tex.c | 4 ++-- src/mesa/drivers/dri/r300/r300_texmem.c | 2 +- src/mesa/drivers/dri/r300/r300_texstate.c | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_tex.c b/src/mesa/drivers/dri/r300/r300_tex.c index 71673e857b8..78b6dd24dac 100644 --- a/src/mesa/drivers/dri/r300/r300_tex.c +++ b/src/mesa/drivers/dri/r300/r300_tex.c @@ -510,7 +510,7 @@ r300ValidateClientStorage(GLcontext * ctx, GLenum target, { r300ContextPtr rmesa = R300_CONTEXT(ctx); - if (0) + if (RADEON_DEBUG & DEBUG_TEXTURE) fprintf(stderr, "intformat %s format %s type %s\n", _mesa_lookup_enum_by_nr(internalFormat), _mesa_lookup_enum_by_nr(format), @@ -567,7 +567,7 @@ r300ValidateClientStorage(GLcontext * ctx, GLenum target, GLint srcRowStride = _mesa_image_row_stride(packing, srcWidth, format, type); - if (0) + if (RADEON_DEBUG & DEBUG_TEXTURE) fprintf(stderr, "%s: srcRowStride %d/%x\n", __FUNCTION__, srcRowStride, srcRowStride); diff --git a/src/mesa/drivers/dri/r300/r300_texmem.c b/src/mesa/drivers/dri/r300/r300_texmem.c index 4377b7cdc7b..13178e9973c 100644 --- a/src/mesa/drivers/dri/r300/r300_texmem.c +++ b/src/mesa/drivers/dri/r300/r300_texmem.c @@ -255,7 +255,7 @@ static void r300UploadRectSubImage(r300ContextPtr rmesa, /* Copy texdata to dma: */ - if (0) + if (RADEON_DEBUG & DEBUG_TEXTURE) fprintf(stderr, "%s: src_pitch %d dst_pitch %d\n", __FUNCTION__, src_pitch, dstPitch); diff --git a/src/mesa/drivers/dri/r300/r300_texstate.c b/src/mesa/drivers/dri/r300/r300_texstate.c index d20a61e07ee..7bd7cf22e89 100644 --- a/src/mesa/drivers/dri/r300/r300_texstate.c +++ b/src/mesa/drivers/dri/r300/r300_texstate.c @@ -296,7 +296,7 @@ static void r300SetTexImages(r300ContextPtr rmesa, } assert(size > 0); - if (0) + if (RADEON_DEBUG & DEBUG_TEXTURE) fprintf(stderr, "w=%d h=%d d=%d tb=%d intFormat=%d\n", texImage->Width, texImage->Height, texImage->Depth, @@ -325,7 +325,7 @@ static void r300SetTexImages(r300ContextPtr rmesa, t->image[0][i].height = size / t->image[0][i].width; } - if (0) + if (RADEON_DEBUG & DEBUG_TEXTURE) fprintf(stderr, "level %d: %dx%d x=%d y=%d w=%d h=%d size=%d at %d\n", i, texImage->Width, texImage->Height, -- cgit v1.2.3 From 672ecba175d4062b983031df15b686ee39f45d17 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 21:44:07 +0000 Subject: r300: Removed the "texmicrotile" variable; the tiling code is disabled via a compiler conditional anyway; probably broken? --- src/mesa/drivers/dri/r300/r300_context.c | 2 -- src/mesa/drivers/dri/r300/r300_context.h | 1 - src/mesa/drivers/dri/r300/r300_texstate.c | 3 +-- 3 files changed, 1 insertion(+), 5 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_context.c b/src/mesa/drivers/dri/r300/r300_context.c index 4407f8c4b58..4ddf0244680 100644 --- a/src/mesa/drivers/dri/r300/r300_context.c +++ b/src/mesa/drivers/dri/r300/r300_context.c @@ -200,8 +200,6 @@ GLboolean r300CreateContext(const __GLcontextModes * glVisual, r300->initialMaxAnisotropy = driQueryOptionf(&r300->radeon.optionCache, "def_max_anisotropy"); - //r300->texmicrotile = GL_TRUE; - /* Init default driver functions then plug in our R300-specific functions * (the texture functions are especially important) */ diff --git a/src/mesa/drivers/dri/r300/r300_context.h b/src/mesa/drivers/dri/r300/r300_context.h index bae188397d2..8630c9edda5 100644 --- a/src/mesa/drivers/dri/r300/r300_context.h +++ b/src/mesa/drivers/dri/r300/r300_context.h @@ -869,7 +869,6 @@ struct r300_context { GLvector4f *temp_attrib[_TNL_ATTRIB_MAX]; #endif - GLboolean texmicrotile; GLboolean disable_lowimpact_fallback; }; diff --git a/src/mesa/drivers/dri/r300/r300_texstate.c b/src/mesa/drivers/dri/r300/r300_texstate.c index 7bd7cf22e89..49231d415f5 100644 --- a/src/mesa/drivers/dri/r300/r300_texstate.c +++ b/src/mesa/drivers/dri/r300/r300_texstate.c @@ -221,8 +221,7 @@ static void r300SetTexImages(r300ContextPtr rmesa, /* figure out if this texture is suitable for tiling. */ #if 0 /* Disabled for now */ if (texelBytes) { - if (rmesa->texmicrotile - && (tObj->Target != GL_TEXTURE_RECTANGLE_NV) && + if ((tObj->Target != GL_TEXTURE_RECTANGLE_NV) && /* texrect might be able to use micro tiling too in theory? */ (baseImage->Height > 1)) { -- cgit v1.2.3 From d0be8b959adae87b920b185fbe4efe6f981837fd Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 22:03:43 +0000 Subject: r300: Added some more Doxygen documentation and made some functions static. --- src/mesa/drivers/dri/r300/r300_cmdbuf.c | 7 +++-- src/mesa/drivers/dri/r300/r300_context.c | 11 +++++--- src/mesa/drivers/dri/r300/r300_context.h | 6 ---- src/mesa/drivers/dri/r300/r300_fragprog.c | 12 ++++---- src/mesa/drivers/dri/r300/r300_ioctl.c | 10 ++++--- src/mesa/drivers/dri/r300/r300_maos.c | 7 +++-- src/mesa/drivers/dri/r300/r300_mem.c | 10 ++++--- src/mesa/drivers/dri/r300/r300_render.c | 46 +++++++++++++++++++------------ src/mesa/drivers/dri/r300/r300_state.c | 7 +++-- src/mesa/drivers/dri/r300/r300_tex.c | 7 +++-- src/mesa/drivers/dri/r300/r300_texmem.c | 9 +++--- src/mesa/drivers/dri/r300/r300_texstate.c | 7 +++-- src/mesa/drivers/dri/r300/r300_vertprog.c | 8 ++++-- 13 files changed, 83 insertions(+), 64 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_cmdbuf.c b/src/mesa/drivers/dri/r300/r300_cmdbuf.c index 369dc0b366b..48f5ea4c562 100644 --- a/src/mesa/drivers/dri/r300/r300_cmdbuf.c +++ b/src/mesa/drivers/dri/r300/r300_cmdbuf.c @@ -27,9 +27,10 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. **************************************************************************/ -/* - * Authors: - * Nicolai Haehnle +/** + * \file + * + * \author Nicolai Haehnle */ #include "glheader.h" diff --git a/src/mesa/drivers/dri/r300/r300_context.c b/src/mesa/drivers/dri/r300/r300_context.c index 4ddf0244680..4f70d7055a4 100644 --- a/src/mesa/drivers/dri/r300/r300_context.c +++ b/src/mesa/drivers/dri/r300/r300_context.c @@ -27,11 +27,14 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. **************************************************************************/ -/* - * Authors: - * Keith Whitwell - * Nicolai Haehnle +/** + * \file + * + * \author Keith Whitwell + * + * \author Nicolai Haehnle */ + #include "glheader.h" #include "api_arrayelt.h" #include "context.h" diff --git a/src/mesa/drivers/dri/r300/r300_context.h b/src/mesa/drivers/dri/r300/r300_context.h index 8630c9edda5..c287871b370 100644 --- a/src/mesa/drivers/dri/r300/r300_context.h +++ b/src/mesa/drivers/dri/r300/r300_context.h @@ -884,17 +884,11 @@ extern GLboolean r300CreateContext(const __GLcontextModes * glVisual, __DRIcontextPrivate * driContextPriv, void *sharedContextPrivate); -extern int r300NumVerts(r300ContextPtr rmesa, int num_verts, int prim); - extern void r300SelectVertexShader(r300ContextPtr r300); extern void r300InitShaderFuncs(struct dd_function_table *functions); extern int r300VertexProgUpdateParams(GLcontext * ctx, struct r300_vertex_program_cont *vp, float *dst); -extern int r300Fallback(GLcontext * ctx); - -extern GLboolean r300RunRender(GLcontext * ctx, - struct tnl_pipeline_stage *stage); #define RADEON_D_CAPTURE 0 #define RADEON_D_PLAYBACK 1 diff --git a/src/mesa/drivers/dri/r300/r300_fragprog.c b/src/mesa/drivers/dri/r300/r300_fragprog.c index 4bc4320f988..c6fbe3f9aae 100644 --- a/src/mesa/drivers/dri/r300/r300_fragprog.c +++ b/src/mesa/drivers/dri/r300/r300_fragprog.c @@ -25,13 +25,13 @@ * */ -/* - * Authors: - * Ben Skeggs - * Jerome Glisse - */ - /** + * \file + * + * \author Ben Skeggs + * + * \author Jerome Glisse + * * \todo Depth write, WPOS/FOGC inputs * * \todo FogOption diff --git a/src/mesa/drivers/dri/r300/r300_ioctl.c b/src/mesa/drivers/dri/r300/r300_ioctl.c index 1bf19850b79..d2cc97d213e 100644 --- a/src/mesa/drivers/dri/r300/r300_ioctl.c +++ b/src/mesa/drivers/dri/r300/r300_ioctl.c @@ -29,10 +29,12 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. **************************************************************************/ -/* - * Authors: - * Keith Whitwell - * Nicolai Haehnle +/** + * \file + * + * \author Keith Whitwell + * + * \author Nicolai Haehnle */ #include diff --git a/src/mesa/drivers/dri/r300/r300_maos.c b/src/mesa/drivers/dri/r300/r300_maos.c index 54557c8eda3..ec174441e99 100644 --- a/src/mesa/drivers/dri/r300/r300_maos.c +++ b/src/mesa/drivers/dri/r300/r300_maos.c @@ -27,9 +27,10 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. **************************************************************************/ -/* - * Authors: - * Keith Whitwell +/** + * \file + * + * \author Keith Whitwell */ #include "glheader.h" diff --git a/src/mesa/drivers/dri/r300/r300_mem.c b/src/mesa/drivers/dri/r300/r300_mem.c index 2c1deddb246..c08e8367a39 100644 --- a/src/mesa/drivers/dri/r300/r300_mem.c +++ b/src/mesa/drivers/dri/r300/r300_mem.c @@ -24,11 +24,13 @@ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ - -/* - * Authors: - * Aapo Tahkola + +/** + * \file + * + * \author Aapo Tahkola */ + #include #include "r300_context.h" diff --git a/src/mesa/drivers/dri/r300/r300_render.c b/src/mesa/drivers/dri/r300/r300_render.c index e459cad65ac..fee29878f6d 100644 --- a/src/mesa/drivers/dri/r300/r300_render.c +++ b/src/mesa/drivers/dri/r300/r300_render.c @@ -24,7 +24,8 @@ OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. **************************************************************************/ -/* + +/** * \file * * \brief R300 Render (Vertex Buffer Implementation) @@ -45,6 +46,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. * * \author Nicolai Haehnle */ + #include "glheader.h" #include "state.h" #include "imports.h" @@ -72,6 +74,9 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. #include "r300_emit.h" extern int future_hw_tcl_on; +/** + * \brief Convert a OpenGL primitive type into a R300 primitive type. + */ static int r300PrimitiveType(r300ContextPtr rmesa, GLcontext * ctx, int prim) { int type = -1; @@ -117,7 +122,7 @@ static int r300PrimitiveType(r300ContextPtr rmesa, GLcontext * ctx, int prim) return type; } -int r300NumVerts(r300ContextPtr rmesa, int num_verts, int prim) +static int r300NumVerts(r300ContextPtr rmesa, int num_verts, int prim) { int verts_off = 0; @@ -274,46 +279,49 @@ static void r300RunRenderPrimitive(r300ContextPtr rmesa, GLcontext * ctx, rvb->AttribPtr[(a)].stride = vb->b->stride, \ rvb->AttribPtr[(a)].data = vb->b->data -static void radeon_vb_to_rvb(r300ContextPtr rmesa, struct radeon_vertex_buffer *rvb, struct vertex_buffer *vb) +static void radeon_vb_to_rvb(r300ContextPtr rmesa, + struct radeon_vertex_buffer *rvb, + struct vertex_buffer *vb) { int i; GLcontext *ctx; ctx = rmesa->radeon.glCtx; - + memset(rvb, 0, sizeof(*rvb)); - + rvb->Elts = vb->Elts; rvb->elt_size = 4; rvb->elt_min = 0; rvb->elt_max = vb->Count; - + rvb->Count = vb->Count; - + if (hw_tcl_on) { CONV_VB(VERT_ATTRIB_POS, ObjPtr); } else { assert(vb->ClipPtr); CONV_VB(VERT_ATTRIB_POS, ClipPtr); - } - + } + CONV_VB(VERT_ATTRIB_NORMAL, NormalPtr); CONV_VB(VERT_ATTRIB_COLOR0, ColorPtr[0]); CONV_VB(VERT_ATTRIB_COLOR1, SecondaryColorPtr[0]); CONV_VB(VERT_ATTRIB_FOG, FogCoordPtr); - - for (i=0; i < ctx->Const.MaxTextureCoordUnits; i++) + + for (i = 0; i < ctx->Const.MaxTextureCoordUnits; i++) CONV_VB(VERT_ATTRIB_TEX0 + i, TexCoordPtr[i]); - for (i=0; i < MAX_VERTEX_PROGRAM_ATTRIBS; i++) - CONV_VB(VERT_ATTRIB_GENERIC0 + i, AttribPtr[VERT_ATTRIB_GENERIC0 + i]); - + for (i = 0; i < MAX_VERTEX_PROGRAM_ATTRIBS; i++) + CONV_VB(VERT_ATTRIB_GENERIC0 + i, + AttribPtr[VERT_ATTRIB_GENERIC0 + i]); + rvb->Primitive = vb->Primitive; rvb->PrimitiveCount = vb->PrimitiveCount; rvb->LockFirst = rvb->LockCount = 0; rvb->lock_uptodate = GL_FALSE; } -GLboolean r300RunRender(GLcontext * ctx, +static GLboolean r300RunRender(GLcontext * ctx, struct tnl_pipeline_stage *stage) { r300ContextPtr rmesa = R300_CONTEXT(ctx); @@ -349,8 +357,8 @@ GLboolean r300RunRender(GLcontext * ctx, GLuint prim = _tnl_translate_prim(&VB->Primitive[i]); GLuint start = VB->Primitive[i].start; GLuint length = VB->Primitive[i].count; - - r300RunRenderPrimitive(rmesa, ctx, start, start + length, prim); + GLuint end = VB->Primitive[i].start + VB->Primitive[i].count; + r300RunRenderPrimitive(rmesa, ctx, start, end, prim); } reg_start(R300_RB3D_DSTCACHE_CTLSTAT, 0); @@ -362,7 +370,9 @@ GLboolean r300RunRender(GLcontext * ctx, #ifdef USER_BUFFERS r300UseArrays(ctx); #endif + r300ReleaseArrays(ctx); + return GL_FALSE; } @@ -376,7 +386,7 @@ GLboolean r300RunRender(GLcontext * ctx, } \ } while(0) -int r300Fallback(GLcontext * ctx) +static int r300Fallback(GLcontext * ctx) { r300ContextPtr r300 = R300_CONTEXT(ctx); struct r300_fragment_program *fp = (struct r300_fragment_program *) diff --git a/src/mesa/drivers/dri/r300/r300_state.c b/src/mesa/drivers/dri/r300/r300_state.c index 9f391a27a09..bbe3a4caead 100644 --- a/src/mesa/drivers/dri/r300/r300_state.c +++ b/src/mesa/drivers/dri/r300/r300_state.c @@ -29,9 +29,10 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. **************************************************************************/ -/* - * Authors: - * Nicolai Haehnle +/** + * \file + * + * \author Nicolai Haehnle */ #include "glheader.h" diff --git a/src/mesa/drivers/dri/r300/r300_tex.c b/src/mesa/drivers/dri/r300/r300_tex.c index 78b6dd24dac..d78e3dfb23e 100644 --- a/src/mesa/drivers/dri/r300/r300_tex.c +++ b/src/mesa/drivers/dri/r300/r300_tex.c @@ -26,9 +26,10 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/* - * Authors: - * Keith Whitwell +/** + * \file + * + * \author Keith Whitwell */ #include "glheader.h" diff --git a/src/mesa/drivers/dri/r300/r300_texmem.c b/src/mesa/drivers/dri/r300/r300_texmem.c index 13178e9973c..db80325309a 100644 --- a/src/mesa/drivers/dri/r300/r300_texmem.c +++ b/src/mesa/drivers/dri/r300/r300_texmem.c @@ -28,11 +28,12 @@ SOFTWARE. **************************************************************************/ -/* - * Authors: - * Kevin E. Martin - * Gareth Hughes +/** + * \file + * + * \author Gareth Hughes * + * \author Kevin E. Martin */ #include diff --git a/src/mesa/drivers/dri/r300/r300_texstate.c b/src/mesa/drivers/dri/r300/r300_texstate.c index 49231d415f5..35f96ce8d6f 100644 --- a/src/mesa/drivers/dri/r300/r300_texstate.c +++ b/src/mesa/drivers/dri/r300/r300_texstate.c @@ -27,9 +27,10 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. **************************************************************************/ -/* - * Authors: - * Keith Whitwell +/** + * \file + * + * \author Keith Whitwell */ #include "glheader.h" diff --git a/src/mesa/drivers/dri/r300/r300_vertprog.c b/src/mesa/drivers/dri/r300/r300_vertprog.c index 90f18ad2257..1d90ade2ed1 100644 --- a/src/mesa/drivers/dri/r300/r300_vertprog.c +++ b/src/mesa/drivers/dri/r300/r300_vertprog.c @@ -25,10 +25,12 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. **************************************************************************/ -/* - * Authors: - * Aapo Tahkola +/** + * \file + * + * \author Aapo Tahkola */ + #include "glheader.h" #include "macros.h" #include "enums.h" -- cgit v1.2.3 From 795ebb1a3b5b486e8668086137decfc6ed2a7df5 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 22:06:19 +0000 Subject: r300: Probably a good idea to always check the vertices; it's a WARN_ONCE so the performance impact is extremely minimal. --- src/mesa/drivers/dri/r300/r300_render.c | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_render.c b/src/mesa/drivers/dri/r300/r300_render.c index fee29878f6d..1ecddf69c15 100644 --- a/src/mesa/drivers/dri/r300/r300_render.c +++ b/src/mesa/drivers/dri/r300/r300_render.c @@ -169,23 +169,22 @@ static int r300NumVerts(r300ContextPtr rmesa, int num_verts, int prim) fprintf(stderr, "%s:%s Do not know how to handle primitive 0x%04x - help me !\n", __FILE__, __FUNCTION__, prim & PRIM_MODE_MASK); - return -1; + return 0; break; } - if (RADEON_DEBUG & DEBUG_VERTS) { - if (num_verts - verts_off == 0) { - WARN_ONCE - ("user error: Need more than %d vertices to draw primitive 0x%04x !\n", - num_verts, prim & PRIM_MODE_MASK); - return 0; - } + if (num_verts - verts_off == 0) { + WARN_ONCE + ("user error: Need more than %d vertices to draw primitive 0x%04x !\n", + num_verts, prim & PRIM_MODE_MASK); + return 0; + } - if (verts_off > 0) { - WARN_ONCE - ("user error: %d is not a valid number of vertices for primitive 0x%04x !\n", - num_verts, prim & PRIM_MODE_MASK); - } + if (verts_off > 0) { + WARN_ONCE + ("user error: %d is not a valid number of vertices for primitive 0x%04x !\n", + num_verts, prim & PRIM_MODE_MASK); + return 0; } return num_verts - verts_off; -- cgit v1.2.3 From 574bf4d34618308efa390232641e25c034ec3dc7 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 22:07:10 +0000 Subject: r300: Return -1 for error. --- src/mesa/drivers/dri/r300/r300_render.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_render.c b/src/mesa/drivers/dri/r300/r300_render.c index 1ecddf69c15..449b46eb7d5 100644 --- a/src/mesa/drivers/dri/r300/r300_render.c +++ b/src/mesa/drivers/dri/r300/r300_render.c @@ -169,7 +169,7 @@ static int r300NumVerts(r300ContextPtr rmesa, int num_verts, int prim) fprintf(stderr, "%s:%s Do not know how to handle primitive 0x%04x - help me !\n", __FILE__, __FUNCTION__, prim & PRIM_MODE_MASK); - return 0; + return -1; break; } @@ -177,14 +177,14 @@ static int r300NumVerts(r300ContextPtr rmesa, int num_verts, int prim) WARN_ONCE ("user error: Need more than %d vertices to draw primitive 0x%04x !\n", num_verts, prim & PRIM_MODE_MASK); - return 0; + return -1; } if (verts_off > 0) { WARN_ONCE ("user error: %d is not a valid number of vertices for primitive 0x%04x !\n", num_verts, prim & PRIM_MODE_MASK); - return 0; + return -1; } return num_verts - verts_off; -- cgit v1.2.3 From b47018937896c67aabab69a30c485a2620abcf19 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Wed, 9 May 2007 22:16:18 +0000 Subject: r300: Name the render functions in r300_render.c consistently. --- src/mesa/drivers/dri/r300/r300_render.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_render.c b/src/mesa/drivers/dri/r300/r300_render.c index 449b46eb7d5..a118dab7401 100644 --- a/src/mesa/drivers/dri/r300/r300_render.c +++ b/src/mesa/drivers/dri/r300/r300_render.c @@ -424,7 +424,7 @@ static int r300Fallback(GLcontext * ctx) return R300_FALLBACK_NONE; } -static GLboolean r300RunNonTNLRender(GLcontext * ctx, +static GLboolean r300RunNonTCLRender(GLcontext * ctx, struct tnl_pipeline_stage *stage) { if (RADEON_DEBUG & DEBUG_PRIMS) @@ -472,7 +472,7 @@ const struct tnl_pipeline_stage _r300_render_stage = { NULL, NULL, NULL, - r300RunNonTNLRender + r300RunNonTCLRender }; const struct tnl_pipeline_stage _r300_tcl_stage = { -- cgit v1.2.3 From 2f6a0840c4c1d1223ca39ff16ce6ae0cbecbaedf Mon Sep 17 00:00:00 2001 From: Brian Date: Thu, 10 May 2007 10:51:54 -0600 Subject: Replace `pkg-config --cflags libdrm` with LIBDRM_CFLAGS, remove disabled lines, remove obsolete comments. --- src/mesa/drivers/dri/Makefile.template | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/Makefile.template b/src/mesa/drivers/dri/Makefile.template index 26f9bb74c87..6f2314ee8cb 100644 --- a/src/mesa/drivers/dri/Makefile.template +++ b/src/mesa/drivers/dri/Makefile.template @@ -25,6 +25,7 @@ OBJECTS = $(C_SOURCES:.c=.o) \ $(ASM_SOURCES:.S=.o) else +# miniglx WINOBJ= WINLIB=-L$(MESA)/src/glx/mini MINIGLX_INCLUDES = -I$(TOP)/src/glx/mini @@ -55,7 +56,8 @@ SHARED_INCLUDES = \ -I$(TOP)/src/mesa/swrast_setup \ -I$(TOP)/src/egl/main \ -I$(TOP)/src/egl/drivers/dri \ - `pkg-config --cflags libdrm` + $(LIBDRM_CFLAGS) + ##### RULES ##### @@ -71,11 +73,6 @@ SHARED_INCLUDES = \ default: depend symlinks $(LIBNAME) $(TOP)/$(LIB_DIR)/$(LIBNAME) -#$(TOP)/$(LIB_DIR)/$(LIBNAME): $(OBJECTS) $(MESA_MODULES) $(WINOBJ) Makefile -# @echo BUILDING FOR: $(WINDOW_SYSTEM) -# $(TOP)/bin/mklib -o $(LIBNAME) -noprefix -install $(TOP)/$(LIB_DIR) \ -# $(WINLIB) $(LIB_DEPS) $(WINOBJ) $(MESA_MODULES) $(OBJECTS) - $(LIBNAME): $(OBJECTS) $(MESA_MODULES) $(WINOBJ) Makefile $(TOP)/src/mesa/drivers/dri/Makefile.template $(TOP)/bin/mklib -noprefix -o $@ \ $(OBJECTS) $(MESA_MODULES) $(WINOBJ) $(DRI_LIB_DEPS) @@ -85,9 +82,6 @@ $(TOP)/$(LIB_DIR)/$(LIBNAME): $(LIBNAME) $(INSTALL) $(LIBNAME) $(TOP)/$(LIB_DIR) - -# Run 'make depend' to update the dependencies if you change -# what's included by any source file. depend: $(C_SOURCES) $(ASM_SOURCES) $(SYMLINKS) touch depend $(MKDEP) $(MKDEP_OPTIONS) $(DRIVER_DEFINES) $(INCLUDES) $(C_SOURCES) \ @@ -104,8 +98,10 @@ clean: -rm -f *.o */*.o *~ *.so *~ server/*.o $(SYMLINKS) -rm -f depend depend.bak + install: $(LIBNAME) $(INSTALL) -d $(DRI_DRIVER_INSTALL_DIR) $(INSTALL) -m 755 $(LIBNAME) $(DRI_DRIVER_INSTALL_DIR) + include depend -- cgit v1.2.3 From e856edb2794cba9d321486f602a9e07b917ce949 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Thu, 10 May 2007 17:45:27 +0000 Subject: r300: Moved some more of the emit code into r300_render.c. --- src/mesa/drivers/dri/r300/r300_cmdbuf.c | 35 ---------------------- src/mesa/drivers/dri/r300/r300_cmdbuf.h | 2 -- src/mesa/drivers/dri/r300/r300_emit.h | 14 --------- src/mesa/drivers/dri/r300/r300_render.c | 51 +++++++++++++++++++++++++++++++-- 4 files changed, 48 insertions(+), 54 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_cmdbuf.c b/src/mesa/drivers/dri/r300/r300_cmdbuf.c index 48f5ea4c562..1aacf69a0aa 100644 --- a/src/mesa/drivers/dri/r300/r300_cmdbuf.c +++ b/src/mesa/drivers/dri/r300/r300_cmdbuf.c @@ -659,38 +659,3 @@ void r300EmitWait(r300ContextPtr rmesa, GLuint flags) cmd[0].wait.cmd_type = R300_CMD_WAIT; cmd[0].wait.flags = flags; } - -void r300EmitAOS(r300ContextPtr rmesa, GLuint nr, GLuint offset) -{ - int sz = 1 + (nr >> 1) * 3 + (nr & 1) * 2; - int i; - int cmd_reserved = 0; - int cmd_written = 0; - drm_radeon_cmd_header_t *cmd = NULL; - - if (RADEON_DEBUG & DEBUG_VERTS) - fprintf(stderr, "%s: nr=%d, ofs=0x%08x\n", __func__, nr, - offset); - - start_packet3(RADEON_CP_PACKET3_3D_LOAD_VBPNTR, sz - 1); - e32(nr); - for (i = 0; i + 1 < nr; i += 2) { - e32((rmesa->state.aos[i].aos_size << 0) - | (rmesa->state.aos[i].aos_stride << 8) - | (rmesa->state.aos[i + 1].aos_size << 16) - | (rmesa->state.aos[i + 1].aos_stride << 24) - ); - e32(rmesa->state.aos[i].aos_offset + - offset * 4 * rmesa->state.aos[i].aos_stride); - e32(rmesa->state.aos[i + 1].aos_offset + - offset * 4 * rmesa->state.aos[i + 1].aos_stride); - } - - if (nr & 1) { - e32((rmesa->state.aos[nr - 1].aos_size << 0) - | (rmesa->state.aos[nr - 1].aos_stride << 8) - ); - e32(rmesa->state.aos[nr - 1].aos_offset + - offset * 4 * rmesa->state.aos[nr - 1].aos_stride); - } -} diff --git a/src/mesa/drivers/dri/r300/r300_cmdbuf.h b/src/mesa/drivers/dri/r300/r300_cmdbuf.h index 3c336e1589b..bfb2eda26fe 100644 --- a/src/mesa/drivers/dri/r300/r300_cmdbuf.h +++ b/src/mesa/drivers/dri/r300/r300_cmdbuf.h @@ -46,8 +46,6 @@ extern void r300EmitState(r300ContextPtr r300); extern void r300InitCmdBuf(r300ContextPtr r300); extern void r300DestroyCmdBuf(r300ContextPtr r300); -extern void r300EmitAOS(r300ContextPtr rmesa, GLuint nr, GLuint offset); - /** * Make sure that enough space is available in the command buffer * by flushing if necessary. diff --git a/src/mesa/drivers/dri/r300/r300_emit.h b/src/mesa/drivers/dri/r300/r300_emit.h index bccb84933ad..b8242ad41e2 100644 --- a/src/mesa/drivers/dri/r300/r300_emit.h +++ b/src/mesa/drivers/dri/r300/r300_emit.h @@ -227,20 +227,6 @@ void static inline cp_wait(r300ContextPtr rmesa, unsigned char flags) cmd[0].i = cmdwait(flags); } -/** - * fire vertex buffer - */ -static void inline fire_AOS(r300ContextPtr rmesa, int vertex_count, int type) -{ - int cmd_reserved = 0; - int cmd_written = 0; - drm_radeon_cmd_header_t *cmd = NULL; - - start_packet3(RADEON_CP_PACKET3_3D_DRAW_VBUF_2, 0); - e32(R300_VAP_VF_CNTL__PRIM_WALK_VERTEX_LIST | (vertex_count << 16) - | type); -} - /** * These are followed by the corresponding data */ diff --git a/src/mesa/drivers/dri/r300/r300_render.c b/src/mesa/drivers/dri/r300/r300_render.c index a118dab7401..a5d8afd94cf 100644 --- a/src/mesa/drivers/dri/r300/r300_render.c +++ b/src/mesa/drivers/dri/r300/r300_render.c @@ -190,8 +190,8 @@ static int r300NumVerts(r300ContextPtr rmesa, int num_verts, int prim) return num_verts - verts_off; } -static void inline r300FireEB(r300ContextPtr rmesa, unsigned long addr, - int vertex_count, int type, int elt_size) +static void r300FireEB(r300ContextPtr rmesa, unsigned long addr, + int vertex_count, int type, int elt_size) { int cmd_reserved = 0; int cmd_written = 0; @@ -245,6 +245,52 @@ static void inline r300FireEB(r300ContextPtr rmesa, unsigned long addr, } } +static void r300EmitAOS(r300ContextPtr rmesa, GLuint nr, GLuint offset) +{ + int sz = 1 + (nr >> 1) * 3 + (nr & 1) * 2; + int i; + int cmd_reserved = 0; + int cmd_written = 0; + drm_radeon_cmd_header_t *cmd = NULL; + + if (RADEON_DEBUG & DEBUG_VERTS) + fprintf(stderr, "%s: nr=%d, ofs=0x%08x\n", __func__, nr, + offset); + + start_packet3(RADEON_CP_PACKET3_3D_LOAD_VBPNTR, sz - 1); + e32(nr); + for (i = 0; i + 1 < nr; i += 2) { + e32((rmesa->state.aos[i].aos_size << 0) + | (rmesa->state.aos[i].aos_stride << 8) + | (rmesa->state.aos[i + 1].aos_size << 16) + | (rmesa->state.aos[i + 1].aos_stride << 24) + ); + e32(rmesa->state.aos[i].aos_offset + + offset * 4 * rmesa->state.aos[i].aos_stride); + e32(rmesa->state.aos[i + 1].aos_offset + + offset * 4 * rmesa->state.aos[i + 1].aos_stride); + } + + if (nr & 1) { + e32((rmesa->state.aos[nr - 1].aos_size << 0) + | (rmesa->state.aos[nr - 1].aos_stride << 8) + ); + e32(rmesa->state.aos[nr - 1].aos_offset + + offset * 4 * rmesa->state.aos[nr - 1].aos_stride); + } +} + +static void fire_AOS(r300ContextPtr rmesa, int vertex_count, int type) +{ + int cmd_reserved = 0; + int cmd_written = 0; + drm_radeon_cmd_header_t *cmd = NULL; + + start_packet3(RADEON_CP_PACKET3_3D_DRAW_VBUF_2, 0); + e32(R300_VAP_VF_CNTL__PRIM_WALK_VERTEX_LIST | (vertex_count << 16) + | type); +} + static void r300RunRenderPrimitive(r300ContextPtr rmesa, GLcontext * ctx, int start, int end, int prim) { @@ -355,7 +401,6 @@ static GLboolean r300RunRender(GLcontext * ctx, for (i = 0; i < VB->PrimitiveCount; i++) { GLuint prim = _tnl_translate_prim(&VB->Primitive[i]); GLuint start = VB->Primitive[i].start; - GLuint length = VB->Primitive[i].count; GLuint end = VB->Primitive[i].start + VB->Primitive[i].count; r300RunRenderPrimitive(rmesa, ctx, start, end, prim); } -- cgit v1.2.3 From eed67a6e3e98fd189c4a6cb591ad94ff4ccc6871 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Thu, 10 May 2007 17:50:25 +0000 Subject: r300: Moved some more emit code into r300_render.c. --- src/mesa/drivers/dri/r300/r300_maos.c | 29 ---------------------------- src/mesa/drivers/dri/r300/r300_render.c | 34 +++++++++++++++++++++++++++++++-- 2 files changed, 32 insertions(+), 31 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_maos.c b/src/mesa/drivers/dri/r300/r300_maos.c index ec174441e99..9e07445b1d4 100644 --- a/src/mesa/drivers/dri/r300/r300_maos.c +++ b/src/mesa/drivers/dri/r300/r300_maos.c @@ -223,35 +223,6 @@ static void emit_vector(GLcontext * ctx, } -void r300EmitElts(GLcontext * ctx, void *elts, unsigned long n_elts, - int elt_size) -{ - r300ContextPtr rmesa = R300_CONTEXT(ctx); - struct r300_dma_region *rvb = &rmesa->state.elt_dma; - void *out; - - assert(elt_size == 2 || elt_size == 4); - - if (r300IsGartMemory(rmesa, elts, n_elts * elt_size)) { - rvb->address = rmesa->radeon.radeonScreen->gartTextures.map; - rvb->start = ((char *)elts) - rvb->address; - rvb->aos_offset = - rmesa->radeon.radeonScreen->gart_texture_offset + - rvb->start; - - return; - } else if (r300IsGartMemory(rmesa, elts, 1)) { - WARN_ONCE("Pointer not within GART memory!\n"); - _mesa_exit(-1); - } - - r300AllocDmaRegion(rmesa, rvb, n_elts * elt_size, elt_size); - rvb->aos_offset = GET_START(rvb); - - out = rvb->address + rvb->start; - memcpy(out, elts, n_elts * elt_size); -} - static GLuint t_type(struct dt *dt) { switch (dt->type) { diff --git a/src/mesa/drivers/dri/r300/r300_render.c b/src/mesa/drivers/dri/r300/r300_render.c index a5d8afd94cf..5a00ed7f8e8 100644 --- a/src/mesa/drivers/dri/r300/r300_render.c +++ b/src/mesa/drivers/dri/r300/r300_render.c @@ -245,6 +245,36 @@ static void r300FireEB(r300ContextPtr rmesa, unsigned long addr, } } +static void r300EmitElts(GLcontext * ctx, void *elts, unsigned long n_elts, + int elt_size) +{ + r300ContextPtr rmesa = R300_CONTEXT(ctx); + struct r300_dma_region *rvb = &rmesa->state.elt_dma; + void *out; + + assert(elt_size == 2 || elt_size == 4); + + if (r300IsGartMemory(rmesa, elts, n_elts * elt_size)) { + rvb->address = rmesa->radeon.radeonScreen->gartTextures.map; + rvb->start = ((char *)elts) - rvb->address; + rvb->aos_offset = + rmesa->radeon.radeonScreen->gart_texture_offset + + rvb->start; + + return; + } else if (r300IsGartMemory(rmesa, elts, 1)) { + WARN_ONCE("Pointer not within GART memory!\n"); + _mesa_exit(-1); + } + + r300AllocDmaRegion(rmesa, rvb, n_elts * elt_size, elt_size); + rvb->aos_offset = GET_START(rvb); + + out = rvb->address + rvb->start; + memcpy(out, elts, n_elts * elt_size); +} + + static void r300EmitAOS(r300ContextPtr rmesa, GLuint nr, GLuint offset) { int sz = 1 + (nr >> 1) * 3 + (nr & 1) * 2; @@ -280,7 +310,7 @@ static void r300EmitAOS(r300ContextPtr rmesa, GLuint nr, GLuint offset) } } -static void fire_AOS(r300ContextPtr rmesa, int vertex_count, int type) +static void r300FireAOS(r300ContextPtr rmesa, int vertex_count, int type) { int cmd_reserved = 0; int cmd_written = 0; @@ -315,7 +345,7 @@ static void r300RunRenderPrimitive(r300ContextPtr rmesa, GLcontext * ctx, num_verts, type, rmesa->state.VB.elt_size); } else { r300EmitAOS(rmesa, rmesa->state.aos_count, start); - fire_AOS(rmesa, num_verts, type); + r300FireAOS(rmesa, num_verts, type); } } -- cgit v1.2.3 From 02e44e41c8bf4b4311b7d244543a0681db851bdd Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Thu, 10 May 2007 21:28:04 +0000 Subject: r300: Removed obsolete start_index16_packet/start_index32_packet. It's all in r300_render.c now. --- src/mesa/drivers/dri/r300/r300_emit.h | 22 ---------------------- 1 file changed, 22 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_emit.h b/src/mesa/drivers/dri/r300/r300_emit.h index b8242ad41e2..ae084d4b1da 100644 --- a/src/mesa/drivers/dri/r300/r300_emit.h +++ b/src/mesa/drivers/dri/r300/r300_emit.h @@ -227,26 +227,4 @@ void static inline cp_wait(r300ContextPtr rmesa, unsigned char flags) cmd[0].i = cmdwait(flags); } -/** - * These are followed by the corresponding data - */ -#define start_index32_packet(vertex_count, type) \ - do { \ - int _vc; \ - _vc = (vertex_count); \ - start_packet3(RADEON_CP_PACKET3_3D_DRAW_INDX_2, _vc); \ - e32(R300_VAP_VF_CNTL__PRIM_WALK_INDICES | (_vc<<16) | \ - type | R300_VAP_VF_CNTL__INDEX_SIZE_32bit); \ - } while (0); - -#define start_index16_packet(vertex_count, type) \ - do { \ - int _vc, _n; \ - _vc = (vertex_count); \ - _n = (vertex_count+1)>>1; \ - start_packet3(RADEON_CP_PACKET3_3D_DRAW_INDX_2, _n); \ - e32(R300_VAP_VF_CNTL__PRIM_WALK_INDICES | (_vc<<16) | \ - type); \ - } while (0); - #endif -- cgit v1.2.3 From d7e3d1dc42664e79d52e7dafd04e834cd4caf9d8 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Thu, 10 May 2007 21:40:20 +0000 Subject: r300: Corrected a compile error introduced by one of the previous commits. --- src/mesa/drivers/dri/r300/r300_maos.h | 2 -- 1 file changed, 2 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_maos.h b/src/mesa/drivers/dri/r300/r300_maos.h index 055e8c58eaf..2f366e307f8 100644 --- a/src/mesa/drivers/dri/r300/r300_maos.h +++ b/src/mesa/drivers/dri/r300/r300_maos.h @@ -37,8 +37,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "r300_context.h" -extern void r300EmitElts(GLcontext * ctx, void *elts, unsigned long n_elts, - int elt_size); extern int r300EmitArrays(GLcontext * ctx); #ifdef USER_BUFFERS -- cgit v1.2.3 From c103453d4f95ea5a965c613c9ad337406e7c7cdb Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Thu, 10 May 2007 22:01:41 +0000 Subject: r300: Added TODO comment regarding texture tiling; I'm not sure about this. --- src/mesa/drivers/dri/r300/r300_texstate.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_texstate.c b/src/mesa/drivers/dri/r300/r300_texstate.c index 35f96ce8d6f..bef597e4dc0 100644 --- a/src/mesa/drivers/dri/r300/r300_texstate.c +++ b/src/mesa/drivers/dri/r300/r300_texstate.c @@ -31,6 +31,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * \file * * \author Keith Whitwell + * + * \todo Enable R300 texture tiling code? */ #include "glheader.h" -- cgit v1.2.3 From b63c70666fe3187ac17024f29ff7c2c49849c1e0 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Fri, 11 May 2007 17:07:09 +0000 Subject: r300: Renamed r300_maos.c to r300_emit.c; it contains mostly emit code now. --- src/mesa/drivers/dri/r300/Makefile | 2 +- src/mesa/drivers/dri/r300/r300_context.c | 2 +- src/mesa/drivers/dri/r300/r300_emit.c | 636 +++++++++++++++++++++++++++++++ src/mesa/drivers/dri/r300/r300_emit.h | 8 + src/mesa/drivers/dri/r300/r300_maos.c | 636 ------------------------------- src/mesa/drivers/dri/r300/r300_maos.h | 48 --- src/mesa/drivers/dri/r300/r300_render.c | 1 - src/mesa/drivers/dri/r300/r300_state.c | 1 - 8 files changed, 646 insertions(+), 688 deletions(-) create mode 100644 src/mesa/drivers/dri/r300/r300_emit.c delete mode 100644 src/mesa/drivers/dri/r300/r300_maos.c delete mode 100644 src/mesa/drivers/dri/r300/r300_maos.h (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/Makefile b/src/mesa/drivers/dri/r300/Makefile index 9e60f970d67..c1d223c7600 100644 --- a/src/mesa/drivers/dri/r300/Makefile +++ b/src/mesa/drivers/dri/r300/Makefile @@ -40,7 +40,7 @@ DRIVER_SOURCES = \ r300_vertprog.c \ r300_fragprog.c \ r300_shader.c \ - r300_maos.c \ + r300_emit.c \ $(EGL_SOURCES) C_SOURCES = $(COMMON_SOURCES) $(DRIVER_SOURCES) diff --git a/src/mesa/drivers/dri/r300/r300_context.c b/src/mesa/drivers/dri/r300/r300_context.c index 4f70d7055a4..00ff9812b89 100644 --- a/src/mesa/drivers/dri/r300/r300_context.c +++ b/src/mesa/drivers/dri/r300/r300_context.c @@ -62,7 +62,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "r300_state.h" #include "r300_ioctl.h" #include "r300_tex.h" -#include "r300_maos.h" +#include "r300_emit.h" #ifdef USER_BUFFERS #include "r300_mem.h" diff --git a/src/mesa/drivers/dri/r300/r300_emit.c b/src/mesa/drivers/dri/r300/r300_emit.c new file mode 100644 index 00000000000..d2ae8be9f1a --- /dev/null +++ b/src/mesa/drivers/dri/r300/r300_emit.c @@ -0,0 +1,636 @@ +/* +Copyright (C) The Weather Channel, Inc. 2002. All Rights Reserved. + +The Weather Channel (TM) funded Tungsten Graphics to develop the +initial release of the Radeon 8500 driver under the XFree86 license. +This notice must be preserved. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice (including the +next paragraph) shall be included in all copies or substantial +portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +**************************************************************************/ + +/** + * \file + * + * \author Keith Whitwell + */ + +#include "glheader.h" +#include "mtypes.h" +#include "colormac.h" +#include "imports.h" +#include "macros.h" +#include "image.h" + +#include "swrast_setup/swrast_setup.h" +#include "math/m_translate.h" +#include "tnl/tnl.h" +#include "tnl/t_context.h" + +#include "r300_context.h" +#include "radeon_ioctl.h" +#include "r300_state.h" +#include "r300_emit.h" +#include "r300_ioctl.h" + +#ifdef USER_BUFFERS +#include "r300_mem.h" +#endif + +#if SWIZZLE_X != R300_INPUT_ROUTE_SELECT_X || \ + SWIZZLE_Y != R300_INPUT_ROUTE_SELECT_Y || \ + SWIZZLE_Z != R300_INPUT_ROUTE_SELECT_Z || \ + SWIZZLE_W != R300_INPUT_ROUTE_SELECT_W || \ + SWIZZLE_ZERO != R300_INPUT_ROUTE_SELECT_ZERO || \ + SWIZZLE_ONE != R300_INPUT_ROUTE_SELECT_ONE +#error Cannot change these! +#endif + +#define DEBUG_ALL DEBUG_VERTS + +#if defined(USE_X86_ASM) +#define COPY_DWORDS( dst, src, nr ) \ +do { \ + int __tmp; \ + __asm__ __volatile__( "rep ; movsl" \ + : "=%c" (__tmp), "=D" (dst), "=S" (__tmp) \ + : "0" (nr), \ + "D" ((long)dst), \ + "S" ((long)src) ); \ +} while (0) +#else +#define COPY_DWORDS( dst, src, nr ) \ +do { \ + int j; \ + for ( j = 0 ; j < nr ; j++ ) \ + dst[j] = ((int *)src)[j]; \ + dst += nr; \ +} while (0) +#endif + +static void emit_vec4(GLcontext * ctx, + struct r300_dma_region *rvb, + GLvoid * data, int stride, int count) +{ + int i; + int *out = (int *)(rvb->address + rvb->start); + + if (RADEON_DEBUG & DEBUG_VERTS) + fprintf(stderr, "%s count %d stride %d\n", + __FUNCTION__, count, stride); + + if (stride == 4) + COPY_DWORDS(out, data, count); + else + for (i = 0; i < count; i++) { + out[0] = *(int *)data; + out++; + data += stride; + } +} + +static void emit_vec8(GLcontext * ctx, + struct r300_dma_region *rvb, + GLvoid * data, int stride, int count) +{ + int i; + int *out = (int *)(rvb->address + rvb->start); + + if (RADEON_DEBUG & DEBUG_VERTS) + fprintf(stderr, "%s count %d stride %d\n", + __FUNCTION__, count, stride); + + if (stride == 8) + COPY_DWORDS(out, data, count * 2); + else + for (i = 0; i < count; i++) { + out[0] = *(int *)data; + out[1] = *(int *)(data + 4); + out += 2; + data += stride; + } +} + +static void emit_vec12(GLcontext * ctx, + struct r300_dma_region *rvb, + GLvoid * data, int stride, int count) +{ + int i; + int *out = (int *)(rvb->address + rvb->start); + + if (RADEON_DEBUG & DEBUG_VERTS) + fprintf(stderr, "%s count %d stride %d out %p data %p\n", + __FUNCTION__, count, stride, (void *)out, (void *)data); + + if (stride == 12) + COPY_DWORDS(out, data, count * 3); + else + for (i = 0; i < count; i++) { + out[0] = *(int *)data; + out[1] = *(int *)(data + 4); + out[2] = *(int *)(data + 8); + out += 3; + data += stride; + } +} + +static void emit_vec16(GLcontext * ctx, + struct r300_dma_region *rvb, + GLvoid * data, int stride, int count) +{ + int i; + int *out = (int *)(rvb->address + rvb->start); + + if (RADEON_DEBUG & DEBUG_VERTS) + fprintf(stderr, "%s count %d stride %d\n", + __FUNCTION__, count, stride); + + if (stride == 16) + COPY_DWORDS(out, data, count * 4); + else + for (i = 0; i < count; i++) { + out[0] = *(int *)data; + out[1] = *(int *)(data + 4); + out[2] = *(int *)(data + 8); + out[3] = *(int *)(data + 12); + out += 4; + data += stride; + } +} + +static void emit_vector(GLcontext * ctx, + struct r300_dma_region *rvb, + GLvoid * data, int size, int stride, int count) +{ + r300ContextPtr rmesa = R300_CONTEXT(ctx); + + if (RADEON_DEBUG & DEBUG_VERTS) + fprintf(stderr, "%s count %d size %d stride %d\n", + __FUNCTION__, count, size, stride); + + /* Gets triggered when playing with future_hw_tcl_on ... */ + //assert(!rvb->buf); + + if (stride == 0) { + r300AllocDmaRegion(rmesa, rvb, size * 4, 4); + count = 1; + rvb->aos_offset = GET_START(rvb); + rvb->aos_stride = 0; + } else { + r300AllocDmaRegion(rmesa, rvb, size * count * 4, 4); /* alignment? */ + rvb->aos_offset = GET_START(rvb); + rvb->aos_stride = size; + } + + /* Emit the data + */ + switch (size) { + case 1: + emit_vec4(ctx, rvb, data, stride, count); + break; + case 2: + emit_vec8(ctx, rvb, data, stride, count); + break; + case 3: + emit_vec12(ctx, rvb, data, stride, count); + break; + case 4: + emit_vec16(ctx, rvb, data, stride, count); + break; + default: + assert(0); + _mesa_exit(-1); + break; + } + +} + +static GLuint t_type(struct dt *dt) +{ + switch (dt->type) { + case GL_UNSIGNED_BYTE: + return AOS_FORMAT_UBYTE; + + case GL_SHORT: + return AOS_FORMAT_USHORT; + + case GL_FLOAT: + return AOS_FORMAT_FLOAT; + + default: + assert(0); + break; + } + + return AOS_FORMAT_FLOAT; +} + +static GLuint t_vir0_size(struct dt *dt) +{ + switch (dt->type) { + case GL_UNSIGNED_BYTE: + return 4; + + case GL_SHORT: + return 7; + + case GL_FLOAT: + return dt->size - 1; + + default: + assert(0); + break; + } + + return 0; +} + +static GLuint t_aos_size(struct dt *dt) +{ + switch (dt->type) { + case GL_UNSIGNED_BYTE: + return 1; + + case GL_SHORT: + return 2; + + case GL_FLOAT: + return dt->size; + + default: + assert(0); + break; + } + + return 0; +} + +static GLuint t_vir0(uint32_t * dst, struct dt *dt, int *inputs, + GLint * tab, GLuint nr) +{ + GLuint i, dw; + + for (i = 0; i + 1 < nr; i += 2) { + dw = t_vir0_size(&dt[tab[i]]) | (inputs[tab[i]] << 8) | + (t_type(&dt[tab[i]]) << 14); + dw |= + (t_vir0_size(&dt[tab[i + 1]]) | + (inputs[tab[i + 1]] << 8) | (t_type(&dt[tab[i + 1]]) + << 14)) << 16; + + if (i + 2 == nr) { + dw |= (1 << (13 + 16)); + } + dst[i >> 1] = dw; + } + + if (nr & 1) { + dw = t_vir0_size(&dt[tab[nr - 1]]) | (inputs[tab[nr - 1]] + << 8) | + (t_type(&dt[tab[nr - 1]]) << 14); + dw |= 1 << 13; + + dst[nr >> 1] = dw; + } + + return (nr + 1) >> 1; +} + +static GLuint t_swizzle(int swizzle[4]) +{ + return (swizzle[0] << R300_INPUT_ROUTE_X_SHIFT) | + (swizzle[1] << R300_INPUT_ROUTE_Y_SHIFT) | + (swizzle[2] << R300_INPUT_ROUTE_Z_SHIFT) | + (swizzle[3] << R300_INPUT_ROUTE_W_SHIFT); +} + +static GLuint t_vir1(uint32_t * dst, int swizzle[][4], GLuint nr) +{ + GLuint i; + + for (i = 0; i + 1 < nr; i += 2) { + dst[i >> 1] = t_swizzle(swizzle[i]) | R300_INPUT_ROUTE_ENABLE; + dst[i >> 1] |= + (t_swizzle(swizzle[i + 1]) | R300_INPUT_ROUTE_ENABLE) + << 16; + } + + if (nr & 1) + dst[nr >> 1] = + t_swizzle(swizzle[nr - 1]) | R300_INPUT_ROUTE_ENABLE; + + return (nr + 1) >> 1; +} + +static GLuint t_emit_size(struct dt *dt) +{ + return dt->size; +} + +static GLuint t_vic(GLcontext * ctx, GLuint InputsRead) +{ + r300ContextPtr r300 = R300_CONTEXT(ctx); + GLuint i, vic_1 = 0; + + if (InputsRead & (1 << VERT_ATTRIB_POS)) + vic_1 |= R300_INPUT_CNTL_POS; + + if (InputsRead & (1 << VERT_ATTRIB_NORMAL)) + vic_1 |= R300_INPUT_CNTL_NORMAL; + + if (InputsRead & (1 << VERT_ATTRIB_COLOR0)) + vic_1 |= R300_INPUT_CNTL_COLOR; + + r300->state.texture.tc_count = 0; + for (i = 0; i < ctx->Const.MaxTextureUnits; i++) + if (InputsRead & (1 << (VERT_ATTRIB_TEX0 + i))) { + r300->state.texture.tc_count++; + vic_1 |= R300_INPUT_CNTL_TC0 << i; + } + + return vic_1; +} + +/* Emit vertex data to GART memory + * Route inputs to the vertex processor + * This function should never return R300_FALLBACK_TCL when using software tcl. + */ + +int r300EmitArrays(GLcontext * ctx) +{ + r300ContextPtr rmesa = R300_CONTEXT(ctx); + r300ContextPtr r300 = rmesa; + struct radeon_vertex_buffer *VB = &rmesa->state.VB; + GLuint nr; + GLuint count = VB->Count; + GLuint i; + GLuint InputsRead = 0, OutputsWritten = 0; + int *inputs = NULL; + int vir_inputs[VERT_ATTRIB_MAX]; + GLint tab[VERT_ATTRIB_MAX]; + int swizzle[VERT_ATTRIB_MAX][4]; + + if (hw_tcl_on) { + struct r300_vertex_program *prog = + (struct r300_vertex_program *) + CURRENT_VERTEX_SHADER(ctx); + inputs = prog->inputs; + InputsRead = CURRENT_VERTEX_SHADER(ctx)->key.InputsRead; + OutputsWritten = CURRENT_VERTEX_SHADER(ctx)->key.OutputsWritten; + } else { + DECLARE_RENDERINPUTS(inputs_bitset); + inputs = r300->state.sw_tcl_inputs; + + RENDERINPUTS_COPY(inputs_bitset, + TNL_CONTEXT(ctx)->render_inputs_bitset); + + assert(RENDERINPUTS_TEST(inputs_bitset, _TNL_ATTRIB_POS)); + InputsRead |= 1 << VERT_ATTRIB_POS; + OutputsWritten |= 1 << VERT_RESULT_HPOS; + + assert(RENDERINPUTS_TEST(inputs_bitset, _TNL_ATTRIB_NORMAL) + == 0); + + assert(RENDERINPUTS_TEST(inputs_bitset, _TNL_ATTRIB_COLOR0)); + InputsRead |= 1 << VERT_ATTRIB_COLOR0; + OutputsWritten |= 1 << VERT_RESULT_COL0; + + if (RENDERINPUTS_TEST(inputs_bitset, _TNL_ATTRIB_COLOR1)) { + InputsRead |= 1 << VERT_ATTRIB_COLOR1; + OutputsWritten |= 1 << VERT_RESULT_COL1; + } + + for (i = 0; i < ctx->Const.MaxTextureUnits; i++) + if (RENDERINPUTS_TEST + (inputs_bitset, _TNL_ATTRIB_TEX(i))) { + InputsRead |= 1 << (VERT_ATTRIB_TEX0 + i); + OutputsWritten |= 1 << (VERT_RESULT_TEX0 + i); + } + + for (i = 0, nr = 0; i < VERT_ATTRIB_MAX; i++) + if (InputsRead & (1 << i)) + inputs[i] = nr++; + else + inputs[i] = -1; + + if (! + (r300->radeon.radeonScreen-> + chip_flags & RADEON_CHIPSET_TCL)) { + /* Fixed, apply to vir0 only */ + memcpy(vir_inputs, inputs, + VERT_ATTRIB_MAX * sizeof(int)); + inputs = vir_inputs; + + if (InputsRead & VERT_ATTRIB_POS) + inputs[VERT_ATTRIB_POS] = 0; + + if (InputsRead & (1 << VERT_ATTRIB_COLOR0)) + inputs[VERT_ATTRIB_COLOR0] = 2; + + if (InputsRead & (1 << VERT_ATTRIB_COLOR1)) + inputs[VERT_ATTRIB_COLOR1] = 3; + + for (i = VERT_ATTRIB_TEX0; i <= VERT_ATTRIB_TEX7; i++) + if (InputsRead & (1 << i)) + inputs[i] = 6 + (i - VERT_ATTRIB_TEX0); + } + + RENDERINPUTS_COPY(rmesa->state.render_inputs_bitset, + inputs_bitset); + } + assert(InputsRead); + assert(OutputsWritten); + + for (i = 0, nr = 0; i < VERT_ATTRIB_MAX; i++) + if (InputsRead & (1 << i)) + tab[nr++] = i; + + if (nr > R300_MAX_AOS_ARRAYS) + return R300_FALLBACK_TCL; + + for (i = 0; i < nr; i++) { + int ci; + int comp_size, fix, found = 0; + + swizzle[i][0] = SWIZZLE_ZERO; + swizzle[i][1] = SWIZZLE_ZERO; + swizzle[i][2] = SWIZZLE_ZERO; + swizzle[i][3] = SWIZZLE_ONE; + + for (ci = 0; ci < VB->AttribPtr[tab[i]].size; ci++) + swizzle[i][ci] = ci; + +#if MESA_BIG_ENDIAN +#define SWAP_INT(a, b) do { \ + int __temp; \ + __temp = a;\ + a = b; \ + b = __temp; \ +} while (0) + + if (VB->AttribPtr[tab[i]].type == GL_UNSIGNED_BYTE) { + SWAP_INT(swizzle[i][0], swizzle[i][3]); + SWAP_INT(swizzle[i][1], swizzle[i][2]); + } +#endif /* MESA_BIG_ENDIAN */ + + if (r300IsGartMemory(rmesa, VB->AttribPtr[tab[i]].data, + /*(count-1)*stride */ 4)) { + if (VB->AttribPtr[tab[i]].stride % 4) + return R300_FALLBACK_TCL; + + rmesa->state.aos[i].address = + VB->AttribPtr[tab[i]].data; + rmesa->state.aos[i].start = 0; + rmesa->state.aos[i].aos_offset = + r300GartOffsetFromVirtual(rmesa, + VB-> + AttribPtr[tab[i]].data); + rmesa->state.aos[i].aos_stride = + VB->AttribPtr[tab[i]].stride / 4; + + rmesa->state.aos[i].aos_size = + t_emit_size(&VB->AttribPtr[tab[i]]); + } else { + /* TODO: emit_vector can only handle 4 byte vectors */ + if (VB->AttribPtr[tab[i]].type != GL_FLOAT) + return R300_FALLBACK_TCL; + + emit_vector(ctx, &rmesa->state.aos[i], + VB->AttribPtr[tab[i]].data, + t_emit_size(&VB->AttribPtr[tab[i]]), + VB->AttribPtr[tab[i]].stride, count); + } + + rmesa->state.aos[i].aos_size = + t_aos_size(&VB->AttribPtr[tab[i]]); + + comp_size = _mesa_sizeof_type(VB->AttribPtr[tab[i]].type); + + for (fix = 0; fix <= 4 - VB->AttribPtr[tab[i]].size; fix++) { + if ((rmesa->state.aos[i].aos_offset - + comp_size * fix) % 4) + continue; + + found = 1; + break; + } + + if (found) { + if (fix > 0) { + WARN_ONCE("Feeling lucky?\n"); + } + + rmesa->state.aos[i].aos_offset -= comp_size * fix; + + for (ci = 0; ci < VB->AttribPtr[tab[i]].size; ci++) + swizzle[i][ci] += fix; + } else { + WARN_ONCE + ("Cannot handle offset %x with stride %d, comp %d\n", + rmesa->state.aos[i].aos_offset, + rmesa->state.aos[i].aos_stride, + VB->AttribPtr[tab[i]].size); + return R300_FALLBACK_TCL; + } + } + + /* setup INPUT_ROUTE */ + R300_STATECHANGE(r300, vir[0]); + ((drm_r300_cmd_header_t *) r300->hw.vir[0].cmd)->packet0.count = + t_vir0(&r300->hw.vir[0].cmd[R300_VIR_CNTL_0], VB->AttribPtr, + inputs, tab, nr); + + R300_STATECHANGE(r300, vir[1]); + ((drm_r300_cmd_header_t *) r300->hw.vir[1].cmd)->packet0.count = + t_vir1(&r300->hw.vir[1].cmd[R300_VIR_CNTL_0], swizzle, nr); + + /* Set up input_cntl */ + /* I don't think this is needed for vertex buffers, but it doesn't hurt anything */ + R300_STATECHANGE(r300, vic); + r300->hw.vic.cmd[R300_VIC_CNTL_0] = 0x5555; /* Hard coded value, no idea what it means */ + r300->hw.vic.cmd[R300_VIC_CNTL_1] = t_vic(ctx, InputsRead); + + /* Stage 3: VAP output */ + + R300_STATECHANGE(r300, vof); + + r300->hw.vof.cmd[R300_VOF_CNTL_0] = 0; + r300->hw.vof.cmd[R300_VOF_CNTL_1] = 0; + + if (OutputsWritten & (1 << VERT_RESULT_HPOS)) + r300->hw.vof.cmd[R300_VOF_CNTL_0] |= + R300_VAP_OUTPUT_VTX_FMT_0__POS_PRESENT; + + if (OutputsWritten & (1 << VERT_RESULT_COL0)) + r300->hw.vof.cmd[R300_VOF_CNTL_0] |= + R300_VAP_OUTPUT_VTX_FMT_0__COLOR_PRESENT; + + if (OutputsWritten & (1 << VERT_RESULT_COL1)) + r300->hw.vof.cmd[R300_VOF_CNTL_0] |= + R300_VAP_OUTPUT_VTX_FMT_0__COLOR_1_PRESENT; + + /*if(OutputsWritten & (1 << VERT_RESULT_BFC0)) + r300->hw.vof.cmd[R300_VOF_CNTL_0] |= R300_VAP_OUTPUT_VTX_FMT_0__COLOR_2_PRESENT; + + if(OutputsWritten & (1 << VERT_RESULT_BFC1)) + r300->hw.vof.cmd[R300_VOF_CNTL_0] |= R300_VAP_OUTPUT_VTX_FMT_0__COLOR_3_PRESENT; */ + //if(OutputsWritten & (1 << VERT_RESULT_FOGC)) + + if (OutputsWritten & (1 << VERT_RESULT_PSIZ)) + r300->hw.vof.cmd[R300_VOF_CNTL_0] |= + R300_VAP_OUTPUT_VTX_FMT_0__PT_SIZE_PRESENT; + + for (i = 0; i < ctx->Const.MaxTextureUnits; i++) + if (OutputsWritten & (1 << (VERT_RESULT_TEX0 + i))) + r300->hw.vof.cmd[R300_VOF_CNTL_1] |= (4 << (3 * i)); + + rmesa->state.aos_count = nr; + + return R300_FALLBACK_NONE; +} + +#ifdef USER_BUFFERS +void r300UseArrays(GLcontext * ctx) +{ + r300ContextPtr rmesa = R300_CONTEXT(ctx); + int i; + + if (rmesa->state.elt_dma.buf) + r300_mem_use(rmesa, rmesa->state.elt_dma.buf->id); + + for (i = 0; i < rmesa->state.aos_count; i++) { + if (rmesa->state.aos[i].buf) + r300_mem_use(rmesa, rmesa->state.aos[i].buf->id); + } +} +#endif + +void r300ReleaseArrays(GLcontext * ctx) +{ + r300ContextPtr rmesa = R300_CONTEXT(ctx); + int i; + + r300ReleaseDmaRegion(rmesa, &rmesa->state.elt_dma, __FUNCTION__); + for (i = 0; i < rmesa->state.aos_count; i++) { + r300ReleaseDmaRegion(rmesa, &rmesa->state.aos[i], __FUNCTION__); + } +} diff --git a/src/mesa/drivers/dri/r300/r300_emit.h b/src/mesa/drivers/dri/r300/r300_emit.h index ae084d4b1da..5e3efcfcf0b 100644 --- a/src/mesa/drivers/dri/r300/r300_emit.h +++ b/src/mesa/drivers/dri/r300/r300_emit.h @@ -227,4 +227,12 @@ void static inline cp_wait(r300ContextPtr rmesa, unsigned char flags) cmd[0].i = cmdwait(flags); } +extern int r300EmitArrays(GLcontext * ctx); + +#ifdef USER_BUFFERS +void r300UseArrays(GLcontext * ctx); +#endif + +extern void r300ReleaseArrays(GLcontext * ctx); + #endif diff --git a/src/mesa/drivers/dri/r300/r300_maos.c b/src/mesa/drivers/dri/r300/r300_maos.c deleted file mode 100644 index 9e07445b1d4..00000000000 --- a/src/mesa/drivers/dri/r300/r300_maos.c +++ /dev/null @@ -1,636 +0,0 @@ -/* -Copyright (C) The Weather Channel, Inc. 2002. All Rights Reserved. - -The Weather Channel (TM) funded Tungsten Graphics to develop the -initial release of the Radeon 8500 driver under the XFree86 license. -This notice must be preserved. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice (including the -next paragraph) shall be included in all copies or substantial -portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -**************************************************************************/ - -/** - * \file - * - * \author Keith Whitwell - */ - -#include "glheader.h" -#include "mtypes.h" -#include "colormac.h" -#include "imports.h" -#include "macros.h" -#include "image.h" - -#include "swrast_setup/swrast_setup.h" -#include "math/m_translate.h" -#include "tnl/tnl.h" -#include "tnl/t_context.h" - -#include "r300_context.h" -#include "radeon_ioctl.h" -#include "r300_state.h" -#include "r300_maos.h" -#include "r300_ioctl.h" - -#ifdef USER_BUFFERS -#include "r300_mem.h" -#endif - -#if SWIZZLE_X != R300_INPUT_ROUTE_SELECT_X || \ - SWIZZLE_Y != R300_INPUT_ROUTE_SELECT_Y || \ - SWIZZLE_Z != R300_INPUT_ROUTE_SELECT_Z || \ - SWIZZLE_W != R300_INPUT_ROUTE_SELECT_W || \ - SWIZZLE_ZERO != R300_INPUT_ROUTE_SELECT_ZERO || \ - SWIZZLE_ONE != R300_INPUT_ROUTE_SELECT_ONE -#error Cannot change these! -#endif - -#define DEBUG_ALL DEBUG_VERTS - -#if defined(USE_X86_ASM) -#define COPY_DWORDS( dst, src, nr ) \ -do { \ - int __tmp; \ - __asm__ __volatile__( "rep ; movsl" \ - : "=%c" (__tmp), "=D" (dst), "=S" (__tmp) \ - : "0" (nr), \ - "D" ((long)dst), \ - "S" ((long)src) ); \ -} while (0) -#else -#define COPY_DWORDS( dst, src, nr ) \ -do { \ - int j; \ - for ( j = 0 ; j < nr ; j++ ) \ - dst[j] = ((int *)src)[j]; \ - dst += nr; \ -} while (0) -#endif - -static void emit_vec4(GLcontext * ctx, - struct r300_dma_region *rvb, - GLvoid * data, int stride, int count) -{ - int i; - int *out = (int *)(rvb->address + rvb->start); - - if (RADEON_DEBUG & DEBUG_VERTS) - fprintf(stderr, "%s count %d stride %d\n", - __FUNCTION__, count, stride); - - if (stride == 4) - COPY_DWORDS(out, data, count); - else - for (i = 0; i < count; i++) { - out[0] = *(int *)data; - out++; - data += stride; - } -} - -static void emit_vec8(GLcontext * ctx, - struct r300_dma_region *rvb, - GLvoid * data, int stride, int count) -{ - int i; - int *out = (int *)(rvb->address + rvb->start); - - if (RADEON_DEBUG & DEBUG_VERTS) - fprintf(stderr, "%s count %d stride %d\n", - __FUNCTION__, count, stride); - - if (stride == 8) - COPY_DWORDS(out, data, count * 2); - else - for (i = 0; i < count; i++) { - out[0] = *(int *)data; - out[1] = *(int *)(data + 4); - out += 2; - data += stride; - } -} - -static void emit_vec12(GLcontext * ctx, - struct r300_dma_region *rvb, - GLvoid * data, int stride, int count) -{ - int i; - int *out = (int *)(rvb->address + rvb->start); - - if (RADEON_DEBUG & DEBUG_VERTS) - fprintf(stderr, "%s count %d stride %d out %p data %p\n", - __FUNCTION__, count, stride, (void *)out, (void *)data); - - if (stride == 12) - COPY_DWORDS(out, data, count * 3); - else - for (i = 0; i < count; i++) { - out[0] = *(int *)data; - out[1] = *(int *)(data + 4); - out[2] = *(int *)(data + 8); - out += 3; - data += stride; - } -} - -static void emit_vec16(GLcontext * ctx, - struct r300_dma_region *rvb, - GLvoid * data, int stride, int count) -{ - int i; - int *out = (int *)(rvb->address + rvb->start); - - if (RADEON_DEBUG & DEBUG_VERTS) - fprintf(stderr, "%s count %d stride %d\n", - __FUNCTION__, count, stride); - - if (stride == 16) - COPY_DWORDS(out, data, count * 4); - else - for (i = 0; i < count; i++) { - out[0] = *(int *)data; - out[1] = *(int *)(data + 4); - out[2] = *(int *)(data + 8); - out[3] = *(int *)(data + 12); - out += 4; - data += stride; - } -} - -static void emit_vector(GLcontext * ctx, - struct r300_dma_region *rvb, - GLvoid * data, int size, int stride, int count) -{ - r300ContextPtr rmesa = R300_CONTEXT(ctx); - - if (RADEON_DEBUG & DEBUG_VERTS) - fprintf(stderr, "%s count %d size %d stride %d\n", - __FUNCTION__, count, size, stride); - - /* Gets triggered when playing with future_hw_tcl_on ... */ - //assert(!rvb->buf); - - if (stride == 0) { - r300AllocDmaRegion(rmesa, rvb, size * 4, 4); - count = 1; - rvb->aos_offset = GET_START(rvb); - rvb->aos_stride = 0; - } else { - r300AllocDmaRegion(rmesa, rvb, size * count * 4, 4); /* alignment? */ - rvb->aos_offset = GET_START(rvb); - rvb->aos_stride = size; - } - - /* Emit the data - */ - switch (size) { - case 1: - emit_vec4(ctx, rvb, data, stride, count); - break; - case 2: - emit_vec8(ctx, rvb, data, stride, count); - break; - case 3: - emit_vec12(ctx, rvb, data, stride, count); - break; - case 4: - emit_vec16(ctx, rvb, data, stride, count); - break; - default: - assert(0); - _mesa_exit(-1); - break; - } - -} - -static GLuint t_type(struct dt *dt) -{ - switch (dt->type) { - case GL_UNSIGNED_BYTE: - return AOS_FORMAT_UBYTE; - - case GL_SHORT: - return AOS_FORMAT_USHORT; - - case GL_FLOAT: - return AOS_FORMAT_FLOAT; - - default: - assert(0); - break; - } - - return AOS_FORMAT_FLOAT; -} - -static GLuint t_vir0_size(struct dt *dt) -{ - switch (dt->type) { - case GL_UNSIGNED_BYTE: - return 4; - - case GL_SHORT: - return 7; - - case GL_FLOAT: - return dt->size - 1; - - default: - assert(0); - break; - } - - return 0; -} - -static GLuint t_aos_size(struct dt *dt) -{ - switch (dt->type) { - case GL_UNSIGNED_BYTE: - return 1; - - case GL_SHORT: - return 2; - - case GL_FLOAT: - return dt->size; - - default: - assert(0); - break; - } - - return 0; -} - -static GLuint t_vir0(uint32_t * dst, struct dt *dt, int *inputs, - GLint * tab, GLuint nr) -{ - GLuint i, dw; - - for (i = 0; i + 1 < nr; i += 2) { - dw = t_vir0_size(&dt[tab[i]]) | (inputs[tab[i]] << 8) | - (t_type(&dt[tab[i]]) << 14); - dw |= - (t_vir0_size(&dt[tab[i + 1]]) | - (inputs[tab[i + 1]] << 8) | (t_type(&dt[tab[i + 1]]) - << 14)) << 16; - - if (i + 2 == nr) { - dw |= (1 << (13 + 16)); - } - dst[i >> 1] = dw; - } - - if (nr & 1) { - dw = t_vir0_size(&dt[tab[nr - 1]]) | (inputs[tab[nr - 1]] - << 8) | - (t_type(&dt[tab[nr - 1]]) << 14); - dw |= 1 << 13; - - dst[nr >> 1] = dw; - } - - return (nr + 1) >> 1; -} - -static GLuint t_swizzle(int swizzle[4]) -{ - return (swizzle[0] << R300_INPUT_ROUTE_X_SHIFT) | - (swizzle[1] << R300_INPUT_ROUTE_Y_SHIFT) | - (swizzle[2] << R300_INPUT_ROUTE_Z_SHIFT) | - (swizzle[3] << R300_INPUT_ROUTE_W_SHIFT); -} - -static GLuint t_vir1(uint32_t * dst, int swizzle[][4], GLuint nr) -{ - GLuint i; - - for (i = 0; i + 1 < nr; i += 2) { - dst[i >> 1] = t_swizzle(swizzle[i]) | R300_INPUT_ROUTE_ENABLE; - dst[i >> 1] |= - (t_swizzle(swizzle[i + 1]) | R300_INPUT_ROUTE_ENABLE) - << 16; - } - - if (nr & 1) - dst[nr >> 1] = - t_swizzle(swizzle[nr - 1]) | R300_INPUT_ROUTE_ENABLE; - - return (nr + 1) >> 1; -} - -static GLuint t_emit_size(struct dt *dt) -{ - return dt->size; -} - -static GLuint t_vic(GLcontext * ctx, GLuint InputsRead) -{ - r300ContextPtr r300 = R300_CONTEXT(ctx); - GLuint i, vic_1 = 0; - - if (InputsRead & (1 << VERT_ATTRIB_POS)) - vic_1 |= R300_INPUT_CNTL_POS; - - if (InputsRead & (1 << VERT_ATTRIB_NORMAL)) - vic_1 |= R300_INPUT_CNTL_NORMAL; - - if (InputsRead & (1 << VERT_ATTRIB_COLOR0)) - vic_1 |= R300_INPUT_CNTL_COLOR; - - r300->state.texture.tc_count = 0; - for (i = 0; i < ctx->Const.MaxTextureUnits; i++) - if (InputsRead & (1 << (VERT_ATTRIB_TEX0 + i))) { - r300->state.texture.tc_count++; - vic_1 |= R300_INPUT_CNTL_TC0 << i; - } - - return vic_1; -} - -/* Emit vertex data to GART memory - * Route inputs to the vertex processor - * This function should never return R300_FALLBACK_TCL when using software tcl. - */ - -int r300EmitArrays(GLcontext * ctx) -{ - r300ContextPtr rmesa = R300_CONTEXT(ctx); - r300ContextPtr r300 = rmesa; - struct radeon_vertex_buffer *VB = &rmesa->state.VB; - GLuint nr; - GLuint count = VB->Count; - GLuint i; - GLuint InputsRead = 0, OutputsWritten = 0; - int *inputs = NULL; - int vir_inputs[VERT_ATTRIB_MAX]; - GLint tab[VERT_ATTRIB_MAX]; - int swizzle[VERT_ATTRIB_MAX][4]; - - if (hw_tcl_on) { - struct r300_vertex_program *prog = - (struct r300_vertex_program *) - CURRENT_VERTEX_SHADER(ctx); - inputs = prog->inputs; - InputsRead = CURRENT_VERTEX_SHADER(ctx)->key.InputsRead; - OutputsWritten = CURRENT_VERTEX_SHADER(ctx)->key.OutputsWritten; - } else { - DECLARE_RENDERINPUTS(inputs_bitset); - inputs = r300->state.sw_tcl_inputs; - - RENDERINPUTS_COPY(inputs_bitset, - TNL_CONTEXT(ctx)->render_inputs_bitset); - - assert(RENDERINPUTS_TEST(inputs_bitset, _TNL_ATTRIB_POS)); - InputsRead |= 1 << VERT_ATTRIB_POS; - OutputsWritten |= 1 << VERT_RESULT_HPOS; - - assert(RENDERINPUTS_TEST(inputs_bitset, _TNL_ATTRIB_NORMAL) - == 0); - - assert(RENDERINPUTS_TEST(inputs_bitset, _TNL_ATTRIB_COLOR0)); - InputsRead |= 1 << VERT_ATTRIB_COLOR0; - OutputsWritten |= 1 << VERT_RESULT_COL0; - - if (RENDERINPUTS_TEST(inputs_bitset, _TNL_ATTRIB_COLOR1)) { - InputsRead |= 1 << VERT_ATTRIB_COLOR1; - OutputsWritten |= 1 << VERT_RESULT_COL1; - } - - for (i = 0; i < ctx->Const.MaxTextureUnits; i++) - if (RENDERINPUTS_TEST - (inputs_bitset, _TNL_ATTRIB_TEX(i))) { - InputsRead |= 1 << (VERT_ATTRIB_TEX0 + i); - OutputsWritten |= 1 << (VERT_RESULT_TEX0 + i); - } - - for (i = 0, nr = 0; i < VERT_ATTRIB_MAX; i++) - if (InputsRead & (1 << i)) - inputs[i] = nr++; - else - inputs[i] = -1; - - if (! - (r300->radeon.radeonScreen-> - chip_flags & RADEON_CHIPSET_TCL)) { - /* Fixed, apply to vir0 only */ - memcpy(vir_inputs, inputs, - VERT_ATTRIB_MAX * sizeof(int)); - inputs = vir_inputs; - - if (InputsRead & VERT_ATTRIB_POS) - inputs[VERT_ATTRIB_POS] = 0; - - if (InputsRead & (1 << VERT_ATTRIB_COLOR0)) - inputs[VERT_ATTRIB_COLOR0] = 2; - - if (InputsRead & (1 << VERT_ATTRIB_COLOR1)) - inputs[VERT_ATTRIB_COLOR1] = 3; - - for (i = VERT_ATTRIB_TEX0; i <= VERT_ATTRIB_TEX7; i++) - if (InputsRead & (1 << i)) - inputs[i] = 6 + (i - VERT_ATTRIB_TEX0); - } - - RENDERINPUTS_COPY(rmesa->state.render_inputs_bitset, - inputs_bitset); - } - assert(InputsRead); - assert(OutputsWritten); - - for (i = 0, nr = 0; i < VERT_ATTRIB_MAX; i++) - if (InputsRead & (1 << i)) - tab[nr++] = i; - - if (nr > R300_MAX_AOS_ARRAYS) - return R300_FALLBACK_TCL; - - for (i = 0; i < nr; i++) { - int ci; - int comp_size, fix, found = 0; - - swizzle[i][0] = SWIZZLE_ZERO; - swizzle[i][1] = SWIZZLE_ZERO; - swizzle[i][2] = SWIZZLE_ZERO; - swizzle[i][3] = SWIZZLE_ONE; - - for (ci = 0; ci < VB->AttribPtr[tab[i]].size; ci++) - swizzle[i][ci] = ci; - -#if MESA_BIG_ENDIAN -#define SWAP_INT(a, b) do { \ - int __temp; \ - __temp = a;\ - a = b; \ - b = __temp; \ -} while (0) - - if (VB->AttribPtr[tab[i]].type == GL_UNSIGNED_BYTE) { - SWAP_INT(swizzle[i][0], swizzle[i][3]); - SWAP_INT(swizzle[i][1], swizzle[i][2]); - } -#endif /* MESA_BIG_ENDIAN */ - - if (r300IsGartMemory(rmesa, VB->AttribPtr[tab[i]].data, - /*(count-1)*stride */ 4)) { - if (VB->AttribPtr[tab[i]].stride % 4) - return R300_FALLBACK_TCL; - - rmesa->state.aos[i].address = - VB->AttribPtr[tab[i]].data; - rmesa->state.aos[i].start = 0; - rmesa->state.aos[i].aos_offset = - r300GartOffsetFromVirtual(rmesa, - VB-> - AttribPtr[tab[i]].data); - rmesa->state.aos[i].aos_stride = - VB->AttribPtr[tab[i]].stride / 4; - - rmesa->state.aos[i].aos_size = - t_emit_size(&VB->AttribPtr[tab[i]]); - } else { - /* TODO: emit_vector can only handle 4 byte vectors */ - if (VB->AttribPtr[tab[i]].type != GL_FLOAT) - return R300_FALLBACK_TCL; - - emit_vector(ctx, &rmesa->state.aos[i], - VB->AttribPtr[tab[i]].data, - t_emit_size(&VB->AttribPtr[tab[i]]), - VB->AttribPtr[tab[i]].stride, count); - } - - rmesa->state.aos[i].aos_size = - t_aos_size(&VB->AttribPtr[tab[i]]); - - comp_size = _mesa_sizeof_type(VB->AttribPtr[tab[i]].type); - - for (fix = 0; fix <= 4 - VB->AttribPtr[tab[i]].size; fix++) { - if ((rmesa->state.aos[i].aos_offset - - comp_size * fix) % 4) - continue; - - found = 1; - break; - } - - if (found) { - if (fix > 0) { - WARN_ONCE("Feeling lucky?\n"); - } - - rmesa->state.aos[i].aos_offset -= comp_size * fix; - - for (ci = 0; ci < VB->AttribPtr[tab[i]].size; ci++) - swizzle[i][ci] += fix; - } else { - WARN_ONCE - ("Cannot handle offset %x with stride %d, comp %d\n", - rmesa->state.aos[i].aos_offset, - rmesa->state.aos[i].aos_stride, - VB->AttribPtr[tab[i]].size); - return R300_FALLBACK_TCL; - } - } - - /* setup INPUT_ROUTE */ - R300_STATECHANGE(r300, vir[0]); - ((drm_r300_cmd_header_t *) r300->hw.vir[0].cmd)->packet0.count = - t_vir0(&r300->hw.vir[0].cmd[R300_VIR_CNTL_0], VB->AttribPtr, - inputs, tab, nr); - - R300_STATECHANGE(r300, vir[1]); - ((drm_r300_cmd_header_t *) r300->hw.vir[1].cmd)->packet0.count = - t_vir1(&r300->hw.vir[1].cmd[R300_VIR_CNTL_0], swizzle, nr); - - /* Set up input_cntl */ - /* I don't think this is needed for vertex buffers, but it doesn't hurt anything */ - R300_STATECHANGE(r300, vic); - r300->hw.vic.cmd[R300_VIC_CNTL_0] = 0x5555; /* Hard coded value, no idea what it means */ - r300->hw.vic.cmd[R300_VIC_CNTL_1] = t_vic(ctx, InputsRead); - - /* Stage 3: VAP output */ - - R300_STATECHANGE(r300, vof); - - r300->hw.vof.cmd[R300_VOF_CNTL_0] = 0; - r300->hw.vof.cmd[R300_VOF_CNTL_1] = 0; - - if (OutputsWritten & (1 << VERT_RESULT_HPOS)) - r300->hw.vof.cmd[R300_VOF_CNTL_0] |= - R300_VAP_OUTPUT_VTX_FMT_0__POS_PRESENT; - - if (OutputsWritten & (1 << VERT_RESULT_COL0)) - r300->hw.vof.cmd[R300_VOF_CNTL_0] |= - R300_VAP_OUTPUT_VTX_FMT_0__COLOR_PRESENT; - - if (OutputsWritten & (1 << VERT_RESULT_COL1)) - r300->hw.vof.cmd[R300_VOF_CNTL_0] |= - R300_VAP_OUTPUT_VTX_FMT_0__COLOR_1_PRESENT; - - /*if(OutputsWritten & (1 << VERT_RESULT_BFC0)) - r300->hw.vof.cmd[R300_VOF_CNTL_0] |= R300_VAP_OUTPUT_VTX_FMT_0__COLOR_2_PRESENT; - - if(OutputsWritten & (1 << VERT_RESULT_BFC1)) - r300->hw.vof.cmd[R300_VOF_CNTL_0] |= R300_VAP_OUTPUT_VTX_FMT_0__COLOR_3_PRESENT; */ - //if(OutputsWritten & (1 << VERT_RESULT_FOGC)) - - if (OutputsWritten & (1 << VERT_RESULT_PSIZ)) - r300->hw.vof.cmd[R300_VOF_CNTL_0] |= - R300_VAP_OUTPUT_VTX_FMT_0__PT_SIZE_PRESENT; - - for (i = 0; i < ctx->Const.MaxTextureUnits; i++) - if (OutputsWritten & (1 << (VERT_RESULT_TEX0 + i))) - r300->hw.vof.cmd[R300_VOF_CNTL_1] |= (4 << (3 * i)); - - rmesa->state.aos_count = nr; - - return R300_FALLBACK_NONE; -} - -#ifdef USER_BUFFERS -void r300UseArrays(GLcontext * ctx) -{ - r300ContextPtr rmesa = R300_CONTEXT(ctx); - int i; - - if (rmesa->state.elt_dma.buf) - r300_mem_use(rmesa, rmesa->state.elt_dma.buf->id); - - for (i = 0; i < rmesa->state.aos_count; i++) { - if (rmesa->state.aos[i].buf) - r300_mem_use(rmesa, rmesa->state.aos[i].buf->id); - } -} -#endif - -void r300ReleaseArrays(GLcontext * ctx) -{ - r300ContextPtr rmesa = R300_CONTEXT(ctx); - int i; - - r300ReleaseDmaRegion(rmesa, &rmesa->state.elt_dma, __FUNCTION__); - for (i = 0; i < rmesa->state.aos_count; i++) { - r300ReleaseDmaRegion(rmesa, &rmesa->state.aos[i], __FUNCTION__); - } -} diff --git a/src/mesa/drivers/dri/r300/r300_maos.h b/src/mesa/drivers/dri/r300/r300_maos.h deleted file mode 100644 index 2f366e307f8..00000000000 --- a/src/mesa/drivers/dri/r300/r300_maos.h +++ /dev/null @@ -1,48 +0,0 @@ -/* -Copyright (C) The Weather Channel, Inc. 2002. All Rights Reserved. - -The Weather Channel (TM) funded Tungsten Graphics to develop the -initial release of the Radeon 8500 driver under the XFree86 license. -This notice must be preserved. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice (including the -next paragraph) shall be included in all copies or substantial -portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -**************************************************************************/ - -/* - * Authors: - * Keith Whitwell - */ - -#ifndef __R300_MAOS_H__ -#define __R300_MAOS_H__ - -#include "r300_context.h" - -extern int r300EmitArrays(GLcontext * ctx); - -#ifdef USER_BUFFERS -void r300UseArrays(GLcontext * ctx); -#endif - -extern void r300ReleaseArrays(GLcontext * ctx); - -#endif diff --git a/src/mesa/drivers/dri/r300/r300_render.c b/src/mesa/drivers/dri/r300/r300_render.c index 5a00ed7f8e8..d49d218a8eb 100644 --- a/src/mesa/drivers/dri/r300/r300_render.c +++ b/src/mesa/drivers/dri/r300/r300_render.c @@ -70,7 +70,6 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. #include "r300_state.h" #include "r300_reg.h" #include "r300_tex.h" -#include "r300_maos.h" #include "r300_emit.h" extern int future_hw_tcl_on; diff --git a/src/mesa/drivers/dri/r300/r300_state.c b/src/mesa/drivers/dri/r300/r300_state.c index bbe3a4caead..ef918137627 100644 --- a/src/mesa/drivers/dri/r300/r300_state.c +++ b/src/mesa/drivers/dri/r300/r300_state.c @@ -62,7 +62,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "r300_emit.h" #include "r300_fragprog.h" #include "r300_tex.h" -#include "r300_maos.h" #include "drirenderbuffer.h" -- cgit v1.2.3 From d4e3b0b2c28d15eee43ebaadd9cd007ccbad91d6 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Fri, 11 May 2007 17:10:59 +0000 Subject: r300: Cleaned up function naming in r300_emit.c. --- src/mesa/drivers/dri/r300/r300_emit.c | 47 ++++++++++++++--------------------- 1 file changed, 19 insertions(+), 28 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_emit.c b/src/mesa/drivers/dri/r300/r300_emit.c index d2ae8be9f1a..2c26069f9b3 100644 --- a/src/mesa/drivers/dri/r300/r300_emit.c +++ b/src/mesa/drivers/dri/r300/r300_emit.c @@ -86,9 +86,9 @@ do { \ } while (0) #endif -static void emit_vec4(GLcontext * ctx, - struct r300_dma_region *rvb, - GLvoid * data, int stride, int count) +static void r300EmitVec4(GLcontext * ctx, + struct r300_dma_region *rvb, + GLvoid * data, int stride, int count) { int i; int *out = (int *)(rvb->address + rvb->start); @@ -107,9 +107,9 @@ static void emit_vec4(GLcontext * ctx, } } -static void emit_vec8(GLcontext * ctx, - struct r300_dma_region *rvb, - GLvoid * data, int stride, int count) +static void r300EmitVec8(GLcontext * ctx, + struct r300_dma_region *rvb, + GLvoid * data, int stride, int count) { int i; int *out = (int *)(rvb->address + rvb->start); @@ -129,9 +129,9 @@ static void emit_vec8(GLcontext * ctx, } } -static void emit_vec12(GLcontext * ctx, - struct r300_dma_region *rvb, - GLvoid * data, int stride, int count) +static void r300EmitVec12(GLcontext * ctx, + struct r300_dma_region *rvb, + GLvoid * data, int stride, int count) { int i; int *out = (int *)(rvb->address + rvb->start); @@ -152,9 +152,9 @@ static void emit_vec12(GLcontext * ctx, } } -static void emit_vec16(GLcontext * ctx, - struct r300_dma_region *rvb, - GLvoid * data, int stride, int count) +static void r300EmitVec16(GLcontext * ctx, + struct r300_dma_region *rvb, + GLvoid * data, int stride, int count) { int i; int *out = (int *)(rvb->address + rvb->start); @@ -176,7 +176,7 @@ static void emit_vec16(GLcontext * ctx, } } -static void emit_vector(GLcontext * ctx, +static void r300EmitVec(GLcontext * ctx, struct r300_dma_region *rvb, GLvoid * data, int size, int stride, int count) { @@ -204,16 +204,16 @@ static void emit_vector(GLcontext * ctx, */ switch (size) { case 1: - emit_vec4(ctx, rvb, data, stride, count); + r300EmitVec4(ctx, rvb, data, stride, count); break; case 2: - emit_vec8(ctx, rvb, data, stride, count); + r300EmitVec8(ctx, rvb, data, stride, count); break; case 3: - emit_vec12(ctx, rvb, data, stride, count); + r300EmitVec12(ctx, rvb, data, stride, count); break; case 4: - emit_vec16(ctx, rvb, data, stride, count); + r300EmitVec16(ctx, rvb, data, stride, count); break; default: assert(0); @@ -228,13 +228,10 @@ static GLuint t_type(struct dt *dt) switch (dt->type) { case GL_UNSIGNED_BYTE: return AOS_FORMAT_UBYTE; - case GL_SHORT: return AOS_FORMAT_USHORT; - case GL_FLOAT: return AOS_FORMAT_FLOAT; - default: assert(0); break; @@ -248,13 +245,10 @@ static GLuint t_vir0_size(struct dt *dt) switch (dt->type) { case GL_UNSIGNED_BYTE: return 4; - case GL_SHORT: return 7; - case GL_FLOAT: return dt->size - 1; - default: assert(0); break; @@ -268,13 +262,10 @@ static GLuint t_aos_size(struct dt *dt) switch (dt->type) { case GL_UNSIGNED_BYTE: return 1; - case GL_SHORT: return 2; - case GL_FLOAT: return dt->size; - default: assert(0); break; @@ -510,11 +501,11 @@ int r300EmitArrays(GLcontext * ctx) rmesa->state.aos[i].aos_size = t_emit_size(&VB->AttribPtr[tab[i]]); } else { - /* TODO: emit_vector can only handle 4 byte vectors */ + /* TODO: r300EmitVec can only handle 4 byte vectors */ if (VB->AttribPtr[tab[i]].type != GL_FLOAT) return R300_FALLBACK_TCL; - emit_vector(ctx, &rmesa->state.aos[i], + r300EmitVec(ctx, &rmesa->state.aos[i], VB->AttribPtr[tab[i]].data, t_emit_size(&VB->AttribPtr[tab[i]]), VB->AttribPtr[tab[i]].stride, count); -- cgit v1.2.3 From 01ec508c7f722f58139fa3fd5d0a052dd5b5476c Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Fri, 11 May 2007 19:21:08 +0000 Subject: r300: Cleaned up function names in r300_state.c. --- src/mesa/drivers/dri/r300/r300_state.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_state.c b/src/mesa/drivers/dri/r300/r300_state.c index ef918137627..f80ae0ca615 100644 --- a/src/mesa/drivers/dri/r300/r300_state.c +++ b/src/mesa/drivers/dri/r300/r300_state.c @@ -78,7 +78,7 @@ static void r300BlendColor(GLcontext * ctx, const GLfloat cf[4]) CLAMPED_FLOAT_TO_UBYTE(color[3], cf[3]); rmesa->hw.blend_color.cmd[1] = PACK_COLOR_8888(color[3], color[0], - color[1], color[2]); + color[1], color[2]); } /** @@ -333,7 +333,7 @@ static void r300UpdateCulling(GLcontext * ctx) r300->hw.cul.cmd[R300_CUL_CULL] = val; } -static void update_early_z(GLcontext * ctx) +static void r300SetEarlyZState(GLcontext * ctx) { /* updates register R300_RB3D_EARLY_Z (0x4F14) if depth test is not enabled it should be R300_EARLY_Z_DISABLE @@ -356,7 +356,7 @@ static void update_early_z(GLcontext * ctx) } } -static void update_alpha(GLcontext * ctx) +static void r300SetAlphaState(GLcontext * ctx) { r300ContextPtr r300 = R300_CONTEXT(ctx); GLubyte refByte; @@ -402,14 +402,15 @@ static void update_alpha(GLcontext * ctx) R300_STATECHANGE(r300, at); r300->hw.at.cmd[R300_AT_ALPHA_TEST] = pp_misc; - update_early_z(ctx); + + r300SetEarlyZState(ctx); } static void r300AlphaFunc(GLcontext * ctx, GLenum func, GLfloat ref) { (void)func; (void)ref; - update_alpha(ctx); + r300SetAlphaState(ctx); } static int translate_func(int func) @@ -435,7 +436,7 @@ static int translate_func(int func) return 0; } -static void update_depth(GLcontext * ctx) +static void r300SetDepthState(GLcontext * ctx) { r300ContextPtr r300 = R300_CONTEXT(ctx); @@ -460,7 +461,7 @@ static void update_depth(GLcontext * ctx) translate_func(GL_NEVER) << R300_RB3D_ZS1_DEPTH_FUNC_SHIFT; } - update_early_z(ctx); + r300SetEarlyZState(ctx); } /** @@ -503,7 +504,7 @@ static void r300Enable(GLcontext * ctx, GLenum cap, GLboolean state) break; case GL_ALPHA_TEST: - update_alpha(ctx); + r300SetAlphaState(ctx); break; case GL_BLEND: @@ -512,7 +513,7 @@ static void r300Enable(GLcontext * ctx, GLenum cap, GLboolean state) break; case GL_DEPTH_TEST: - update_depth(ctx); + r300SetDepthState(ctx); break; case GL_STENCIL_TEST: @@ -637,7 +638,7 @@ static void r300FrontFace(GLcontext * ctx, GLenum mode) static void r300DepthFunc(GLcontext * ctx, GLenum func) { (void)func; - update_depth(ctx); + r300SetDepthState(ctx); } /** @@ -648,7 +649,7 @@ static void r300DepthFunc(GLcontext * ctx, GLenum func) static void r300DepthMask(GLcontext * ctx, GLboolean mask) { (void)mask; - update_depth(ctx); + r300SetDepthState(ctx); } /** -- cgit v1.2.3 From 69ff5a3dbc8f4e72acbfd1bc80598408f9e6a4c4 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Fri, 11 May 2007 19:28:35 +0000 Subject: r300: Function naming correction in r300_texmem.c. --- src/mesa/drivers/dri/r300/r300_texmem.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_texmem.c b/src/mesa/drivers/dri/r300/r300_texmem.c index db80325309a..eef5ff186f4 100644 --- a/src/mesa/drivers/dri/r300/r300_texmem.c +++ b/src/mesa/drivers/dri/r300/r300_texmem.c @@ -299,10 +299,10 @@ static void r300UploadRectSubImage(r300ContextPtr rmesa, * Upload the texture image associated with texture \a t at the specified * level at the address relative to \a start. */ -static void uploadSubImage(r300ContextPtr rmesa, r300TexObjPtr t, - GLint hwlevel, - GLint x, GLint y, GLint width, GLint height, - GLuint face) +static void r300UploadSubImage(r300ContextPtr rmesa, r300TexObjPtr t, + GLint hwlevel, + GLint x, GLint y, GLint width, GLint height, + GLuint face) { struct gl_texture_image *texImage = NULL; GLuint offset; @@ -566,9 +566,10 @@ int r300UploadTexImages(r300ContextPtr rmesa, r300TexObjPtr t, GLuint face) dirty_images[face] & (1 << (i + t->base.firstLevel))) != 0) { - uploadSubImage(rmesa, t, i, 0, 0, - t->image[face][i].width, - t->image[face][i].height, face); + r300UploadSubImage(rmesa, t, i, 0, 0, + t->image[face][i].width, + t->image[face][i].height, + face); } } t->base.dirty_images[face] = 0; -- cgit v1.2.3 From 1b39be3790a093e5b54974221478905b853cadb4 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Fri, 11 May 2007 19:44:35 +0000 Subject: r300: Removed some checking in r300NumVerts that is not needed. According to Aapo Tahkola the OpenGL specification defines the behaviour when there are not enough vertices for the primitive type, thus DRI drivers do not need to perform verification on the number of vertices per primitive. --- src/mesa/drivers/dri/r300/r300_render.c | 15 --------------- 1 file changed, 15 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_render.c b/src/mesa/drivers/dri/r300/r300_render.c index d49d218a8eb..5249aa2137d 100644 --- a/src/mesa/drivers/dri/r300/r300_render.c +++ b/src/mesa/drivers/dri/r300/r300_render.c @@ -172,20 +172,6 @@ static int r300NumVerts(r300ContextPtr rmesa, int num_verts, int prim) break; } - if (num_verts - verts_off == 0) { - WARN_ONCE - ("user error: Need more than %d vertices to draw primitive 0x%04x !\n", - num_verts, prim & PRIM_MODE_MASK); - return -1; - } - - if (verts_off > 0) { - WARN_ONCE - ("user error: %d is not a valid number of vertices for primitive 0x%04x !\n", - num_verts, prim & PRIM_MODE_MASK); - return -1; - } - return num_verts - verts_off; } @@ -259,7 +245,6 @@ static void r300EmitElts(GLcontext * ctx, void *elts, unsigned long n_elts, rvb->aos_offset = rmesa->radeon.radeonScreen->gart_texture_offset + rvb->start; - return; } else if (r300IsGartMemory(rmesa, elts, 1)) { WARN_ONCE("Pointer not within GART memory!\n"); -- cgit v1.2.3 From a87390504f8aa8e5262cf721d28c80da9fcfbd44 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Fri, 11 May 2007 19:57:07 +0000 Subject: r300: Moved some code around in r300_render.c and general clean up. --- src/mesa/drivers/dri/r300/r300_render.c | 80 ++++++++++++++++----------------- 1 file changed, 38 insertions(+), 42 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_render.c b/src/mesa/drivers/dri/r300/r300_render.c index 5249aa2137d..f7b178d0747 100644 --- a/src/mesa/drivers/dri/r300/r300_render.c +++ b/src/mesa/drivers/dri/r300/r300_render.c @@ -78,38 +78,36 @@ extern int future_hw_tcl_on; */ static int r300PrimitiveType(r300ContextPtr rmesa, GLcontext * ctx, int prim) { - int type = -1; - switch (prim & PRIM_MODE_MASK) { case GL_POINTS: - type = R300_VAP_VF_CNTL__PRIM_POINTS; + return R300_VAP_VF_CNTL__PRIM_POINTS; break; case GL_LINES: - type = R300_VAP_VF_CNTL__PRIM_LINES; + return R300_VAP_VF_CNTL__PRIM_LINES; break; case GL_LINE_STRIP: - type = R300_VAP_VF_CNTL__PRIM_LINE_STRIP; + return R300_VAP_VF_CNTL__PRIM_LINE_STRIP; break; case GL_LINE_LOOP: - type = R300_VAP_VF_CNTL__PRIM_LINE_LOOP; + return R300_VAP_VF_CNTL__PRIM_LINE_LOOP; break; case GL_TRIANGLES: - type = R300_VAP_VF_CNTL__PRIM_TRIANGLES; + return R300_VAP_VF_CNTL__PRIM_TRIANGLES; break; case GL_TRIANGLE_STRIP: - type = R300_VAP_VF_CNTL__PRIM_TRIANGLE_STRIP; + return R300_VAP_VF_CNTL__PRIM_TRIANGLE_STRIP; break; case GL_TRIANGLE_FAN: - type = R300_VAP_VF_CNTL__PRIM_TRIANGLE_FAN; + return R300_VAP_VF_CNTL__PRIM_TRIANGLE_FAN; break; case GL_QUADS: - type = R300_VAP_VF_CNTL__PRIM_QUADS; + return R300_VAP_VF_CNTL__PRIM_QUADS; break; case GL_QUAD_STRIP: - type = R300_VAP_VF_CNTL__PRIM_QUAD_STRIP; + return R300_VAP_VF_CNTL__PRIM_QUAD_STRIP; break; case GL_POLYGON: - type = R300_VAP_VF_CNTL__PRIM_POLYGON; + return R300_VAP_VF_CNTL__PRIM_POLYGON; break; default: fprintf(stderr, @@ -118,7 +116,6 @@ static int r300PrimitiveType(r300ContextPtr rmesa, GLcontext * ctx, int prim) return -1; break; } - return type; } static int r300NumVerts(r300ContextPtr rmesa, int num_verts, int prim) @@ -175,6 +172,34 @@ static int r300NumVerts(r300ContextPtr rmesa, int num_verts, int prim) return num_verts - verts_off; } +static void r300EmitElts(GLcontext * ctx, void *elts, unsigned long n_elts, + int elt_size) +{ + r300ContextPtr rmesa = R300_CONTEXT(ctx); + struct r300_dma_region *rvb = &rmesa->state.elt_dma; + void *out; + + assert(elt_size == 2 || elt_size == 4); + + if (r300IsGartMemory(rmesa, elts, n_elts * elt_size)) { + rvb->address = rmesa->radeon.radeonScreen->gartTextures.map; + rvb->start = ((char *)elts) - rvb->address; + rvb->aos_offset = + rmesa->radeon.radeonScreen->gart_texture_offset + + rvb->start; + return; + } else if (r300IsGartMemory(rmesa, elts, 1)) { + WARN_ONCE("Pointer not within GART memory!\n"); + _mesa_exit(-1); + } + + r300AllocDmaRegion(rmesa, rvb, n_elts * elt_size, elt_size); + rvb->aos_offset = GET_START(rvb); + + out = rvb->address + rvb->start; + memcpy(out, elts, n_elts * elt_size); +} + static void r300FireEB(r300ContextPtr rmesa, unsigned long addr, int vertex_count, int type, int elt_size) { @@ -230,35 +255,6 @@ static void r300FireEB(r300ContextPtr rmesa, unsigned long addr, } } -static void r300EmitElts(GLcontext * ctx, void *elts, unsigned long n_elts, - int elt_size) -{ - r300ContextPtr rmesa = R300_CONTEXT(ctx); - struct r300_dma_region *rvb = &rmesa->state.elt_dma; - void *out; - - assert(elt_size == 2 || elt_size == 4); - - if (r300IsGartMemory(rmesa, elts, n_elts * elt_size)) { - rvb->address = rmesa->radeon.radeonScreen->gartTextures.map; - rvb->start = ((char *)elts) - rvb->address; - rvb->aos_offset = - rmesa->radeon.radeonScreen->gart_texture_offset + - rvb->start; - return; - } else if (r300IsGartMemory(rmesa, elts, 1)) { - WARN_ONCE("Pointer not within GART memory!\n"); - _mesa_exit(-1); - } - - r300AllocDmaRegion(rmesa, rvb, n_elts * elt_size, elt_size); - rvb->aos_offset = GET_START(rvb); - - out = rvb->address + rvb->start; - memcpy(out, elts, n_elts * elt_size); -} - - static void r300EmitAOS(r300ContextPtr rmesa, GLuint nr, GLuint offset) { int sz = 1 + (nr >> 1) * 3 + (nr & 1) * 2; -- cgit v1.2.3 From 5b23d3661342bbe3857829f3e306623ddb6b3dfe Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Fri, 11 May 2007 20:06:43 +0000 Subject: r300: Assert if the primitive type is unknown; this can't really happen. --- src/mesa/drivers/dri/r300/r300_render.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_render.c b/src/mesa/drivers/dri/r300/r300_render.c index f7b178d0747..8a567d8afaa 100644 --- a/src/mesa/drivers/dri/r300/r300_render.c +++ b/src/mesa/drivers/dri/r300/r300_render.c @@ -110,9 +110,7 @@ static int r300PrimitiveType(r300ContextPtr rmesa, GLcontext * ctx, int prim) return R300_VAP_VF_CNTL__PRIM_POLYGON; break; default: - fprintf(stderr, - "%s:%s Do not know how to handle primitive 0x%04x - help me !\n", - __FILE__, __FUNCTION__, prim & PRIM_MODE_MASK); + assert (0); return -1; break; } @@ -162,9 +160,7 @@ static int r300NumVerts(r300ContextPtr rmesa, int num_verts, int prim) verts_off = num_verts; break; default: - fprintf(stderr, - "%s:%s Do not know how to handle primitive 0x%04x - help me !\n", - __FILE__, __FUNCTION__, prim & PRIM_MODE_MASK); + assert (0); return -1; break; } -- cgit v1.2.3 From c729e67321e689e6109b36f64c9fc31f76c10e35 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Fri, 11 May 2007 20:09:01 +0000 Subject: r300: Use __FUNCTION__ not __func__. Just for consistency; most of the code already uses __FUNCTION__. --- src/mesa/drivers/dri/r300/r300_emit.h | 6 +++--- src/mesa/drivers/dri/r300/r300_fragprog.c | 2 +- src/mesa/drivers/dri/r300/r300_render.c | 2 +- src/mesa/drivers/dri/r300/r300_state.c | 6 +++--- 4 files changed, 8 insertions(+), 8 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_emit.h b/src/mesa/drivers/dri/r300/r300_emit.h index 5e3efcfcf0b..7be098f743c 100644 --- a/src/mesa/drivers/dri/r300/r300_emit.h +++ b/src/mesa/drivers/dri/r300/r300_emit.h @@ -134,7 +134,7 @@ static __inline__ uint32_t cmdpacify(void) cmd = (drm_radeon_cmd_header_t*) \ r300AllocCmdBuf(rmesa, \ (_n+2), \ - __func__); \ + __FUNCTION__); \ cmd_reserved=_n+2; \ cmd_written=1; \ cmd[0].i=cmdpacket0((reg), _n+1); \ @@ -169,7 +169,7 @@ static __inline__ uint32_t cmdpacify(void) cmd = (drm_radeon_cmd_header_t*) \ r300AllocCmdBuf(rmesa, \ (_n+1), \ - __func__); \ + __FUNCTION__); \ cmd_reserved = _n+2; \ cmd_written =1; \ cmd[0].i = cmdvpu((dest), _n/4); \ @@ -184,7 +184,7 @@ static __inline__ uint32_t cmdpacify(void) cmd = (drm_radeon_cmd_header_t*) \ r300AllocCmdBuf(rmesa, \ (_n+3), \ - __func__); \ + __FUNCTION__); \ cmd_reserved = _n+3; \ cmd_written = 2; \ if(_n > 0x3fff) { \ diff --git a/src/mesa/drivers/dri/r300/r300_fragprog.c b/src/mesa/drivers/dri/r300/r300_fragprog.c index c6fbe3f9aae..cce8e685865 100644 --- a/src/mesa/drivers/dri/r300/r300_fragprog.c +++ b/src/mesa/drivers/dri/r300/r300_fragprog.c @@ -57,7 +57,7 @@ */ #define ERROR(fmt, args...) do { \ fprintf(stderr, "%s::%s(): " fmt "\n", \ - __FILE__, __func__, ##args); \ + __FILE__, __FUNCTION__, ##args); \ fp->error = GL_TRUE; \ } while(0) diff --git a/src/mesa/drivers/dri/r300/r300_render.c b/src/mesa/drivers/dri/r300/r300_render.c index 8a567d8afaa..d967c69c427 100644 --- a/src/mesa/drivers/dri/r300/r300_render.c +++ b/src/mesa/drivers/dri/r300/r300_render.c @@ -260,7 +260,7 @@ static void r300EmitAOS(r300ContextPtr rmesa, GLuint nr, GLuint offset) drm_radeon_cmd_header_t *cmd = NULL; if (RADEON_DEBUG & DEBUG_VERTS) - fprintf(stderr, "%s: nr=%d, ofs=0x%08x\n", __func__, nr, + fprintf(stderr, "%s: nr=%d, ofs=0x%08x\n", __FUNCTION__, nr, offset); start_packet3(RADEON_CP_PACKET3_3D_LOAD_VBPNTR, sz - 1); diff --git a/src/mesa/drivers/dri/r300/r300_state.c b/src/mesa/drivers/dri/r300/r300_state.c index f80ae0ca615..4f25ff7e812 100644 --- a/src/mesa/drivers/dri/r300/r300_state.c +++ b/src/mesa/drivers/dri/r300/r300_state.c @@ -248,7 +248,7 @@ static void r300SetBlendState(GLcontext * ctx) default: fprintf(stderr, "[%s:%u] Invalid RGB blend equation (0x%04x).\n", - __func__, __LINE__, ctx->Color.BlendEquationRGB); + __FUNCTION__, __LINE__, ctx->Color.BlendEquationRGB); return; } @@ -286,7 +286,7 @@ static void r300SetBlendState(GLcontext * ctx) default: fprintf(stderr, "[%s:%u] Invalid A blend equation (0x%04x).\n", - __func__, __LINE__, ctx->Color.BlendEquationA); + __FUNCTION__, __LINE__, ctx->Color.BlendEquationA); return; } @@ -1919,7 +1919,7 @@ void r300SetupPixelShader(r300ContextPtr rmesa) r300TranslateFragmentShader(rmesa, fp); if (!fp->translated) { fprintf(stderr, "%s: No valid fragment shader, exiting\n", - __func__); + __FUNCTION__); return; } #define OUTPUT_FIELD(st, reg, field) \ -- cgit v1.2.3 From cbd29adbc8f79b9cdeda531cf6bd866efc5ad89d Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Fri, 11 May 2007 20:48:35 +0000 Subject: r300: Indented r300_mem.c; I forgot this because it used to be radeon_mm.c. --- src/mesa/drivers/dri/r300/r300_mem.c | 395 +++++++++++++++++++---------------- 1 file changed, 219 insertions(+), 176 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_mem.c b/src/mesa/drivers/dri/r300/r300_mem.c index c08e8367a39..21c5d22d1b4 100644 --- a/src/mesa/drivers/dri/r300/r300_mem.c +++ b/src/mesa/drivers/dri/r300/r300_mem.c @@ -45,20 +45,22 @@ static void resize_u_list(r300ContextPtr rmesa) { void *temp; int nsize; - + temp = rmesa->rmm->u_list; nsize = rmesa->rmm->u_size * 2; - + rmesa->rmm->u_list = _mesa_malloc(nsize * sizeof(*rmesa->rmm->u_list)); - _mesa_memset(rmesa->rmm->u_list, 0, nsize * sizeof(*rmesa->rmm->u_list)); - + _mesa_memset(rmesa->rmm->u_list, 0, + nsize * sizeof(*rmesa->rmm->u_list)); + if (temp) { r300FlushCmdBuf(rmesa, __FUNCTION__); - - _mesa_memcpy(rmesa->rmm->u_list, temp, rmesa->rmm->u_size * sizeof(*rmesa->rmm->u_list)); + + _mesa_memcpy(rmesa->rmm->u_list, temp, + rmesa->rmm->u_size * sizeof(*rmesa->rmm->u_list)); _mesa_free(temp); } - + rmesa->rmm->u_size = nsize; } @@ -66,7 +68,7 @@ void r300_mem_init(r300ContextPtr rmesa) { rmesa->rmm = malloc(sizeof(struct r300_memory_manager)); memset(rmesa->rmm, 0, sizeof(struct r300_memory_manager)); - + rmesa->rmm->u_size = 128; resize_u_list(rmesa); } @@ -89,16 +91,17 @@ void *r300_mem_ptr(r300ContextPtr rmesa, int id) int r300_mem_find(r300ContextPtr rmesa, void *ptr) { int i; - - for (i=1; i < rmesa->rmm->u_size+1; i++) - if(rmesa->rmm->u_list[i].ptr && - ptr >= rmesa->rmm->u_list[i].ptr && - ptr < rmesa->rmm->u_list[i].ptr + rmesa->rmm->u_list[i].size) + + for (i = 1; i < rmesa->rmm->u_size + 1; i++) + if (rmesa->rmm->u_list[i].ptr && + ptr >= rmesa->rmm->u_list[i].ptr && + ptr < + rmesa->rmm->u_list[i].ptr + rmesa->rmm->u_list[i].size) break; - + if (i < rmesa->rmm->u_size + 1) return i; - + fprintf(stderr, "%p failed\n", ptr); return 0; } @@ -108,73 +111,86 @@ int r300_mem_alloc(r300ContextPtr rmesa, int alignment, int size) { drm_radeon_mem_alloc_t alloc; int offset = 0, ret; - int i, free=-1; + int i, free = -1; int done_age; drm_radeon_mem_free_t memfree; - int tries=0; - static int bytes_wasted=0, allocated=0; - - if(size < 4096) + int tries = 0; + static int bytes_wasted = 0, allocated = 0; + + if (size < 4096) bytes_wasted += 4096 - size; - + allocated += size; - + #if 0 - static int t=0; + static int t = 0; if (t != time(NULL)) { t = time(NULL); - fprintf(stderr, "slots used %d, wasted %d kb, allocated %d\n", rmesa->rmm->u_last, bytes_wasted/1024, allocated/1024); + fprintf(stderr, "slots used %d, wasted %d kb, allocated %d\n", + rmesa->rmm->u_last, bytes_wasted / 1024, + allocated / 1024); } #endif - + memfree.region = RADEON_MEM_REGION_GART; - - again: - - done_age = radeonGetAge((radeonContextPtr)rmesa); - + + again: + + done_age = radeonGetAge((radeonContextPtr) rmesa); + if (rmesa->rmm->u_last + 1 >= rmesa->rmm->u_size) resize_u_list(rmesa); - - for (i = rmesa->rmm->u_last + 1; i > 0; i --) { + + for (i = rmesa->rmm->u_last + 1; i > 0; i--) { if (rmesa->rmm->u_list[i].ptr == NULL) { free = i; continue; } - + if (rmesa->rmm->u_list[i].h_pending == 0 && - rmesa->rmm->u_list[i].pending && rmesa->rmm->u_list[i].age <= done_age) { - memfree.region_offset = (char *)rmesa->rmm->u_list[i].ptr - - (char *)rmesa->radeon.radeonScreen->gartTextures.map; + rmesa->rmm->u_list[i].pending + && rmesa->rmm->u_list[i].age <= done_age) { + memfree.region_offset = + (char *)rmesa->rmm->u_list[i].ptr - + (char *)rmesa->radeon.radeonScreen->gartTextures. + map; - ret = drmCommandWrite(rmesa->radeon.radeonScreen->driScreen->fd, - DRM_RADEON_FREE, &memfree, sizeof(memfree)); + ret = + drmCommandWrite(rmesa->radeon.radeonScreen-> + driScreen->fd, DRM_RADEON_FREE, + &memfree, sizeof(memfree)); if (ret) { - fprintf(stderr, "Failed to free at %p\n", rmesa->rmm->u_list[i].ptr); + fprintf(stderr, "Failed to free at %p\n", + rmesa->rmm->u_list[i].ptr); fprintf(stderr, "ret = %s\n", strerror(-ret)); exit(1); } else { #ifdef MM_DEBUG - fprintf(stderr, "really freed %d at age %x\n", i, radeonGetAge((radeonContextPtr)rmesa)); + fprintf(stderr, "really freed %d at age %x\n", + i, + radeonGetAge((radeonContextPtr) rmesa)); #endif if (i == rmesa->rmm->u_last) - rmesa->rmm->u_last --; - - if(rmesa->rmm->u_list[i].size < 4096) - bytes_wasted -= 4096 - rmesa->rmm->u_list[i].size; + rmesa->rmm->u_last--; + + if (rmesa->rmm->u_list[i].size < 4096) + bytes_wasted -= + 4096 - rmesa->rmm->u_list[i].size; allocated -= rmesa->rmm->u_list[i].size; rmesa->rmm->u_list[i].pending = 0; rmesa->rmm->u_list[i].ptr = NULL; - + if (rmesa->rmm->u_list[i].fb) { LOCK_HARDWARE(&(rmesa->radeon)); - ret = mmFreeMem(rmesa->rmm->u_list[i].fb); + ret = + mmFreeMem(rmesa->rmm->u_list[i].fb); UNLOCK_HARDWARE(&(rmesa->radeon)); - + if (ret != 0) - fprintf(stderr, "failed to free!\n"); + fprintf(stderr, + "failed to free!\n"); rmesa->rmm->u_list[i].fb = NULL; } rmesa->rmm->u_list[i].ref_count = 0; @@ -183,93 +199,99 @@ int r300_mem_alloc(r300ContextPtr rmesa, int alignment, int size) } } rmesa->rmm->u_head = i; - + if (free == -1) { WARN_ONCE("Ran out of slots!\n"); //usleep(100); r300FlushCmdBuf(rmesa, __FUNCTION__); tries++; - if(tries>100){ + if (tries > 100) { WARN_ONCE("Ran out of slots!\n"); exit(1); } goto again; } - + alloc.region = RADEON_MEM_REGION_GART; alloc.alignment = alignment; alloc.size = size; alloc.region_offset = &offset; - ret = drmCommandWriteRead( rmesa->radeon.dri.fd, DRM_RADEON_ALLOC, &alloc, sizeof(alloc)); - if (ret) { + ret = + drmCommandWriteRead(rmesa->radeon.dri.fd, DRM_RADEON_ALLOC, &alloc, + sizeof(alloc)); + if (ret) { #if 0 WARN_ONCE("Ran out of mem!\n"); r300FlushCmdBuf(rmesa, __FUNCTION__); //usleep(100); tries2++; tries = 0; - if(tries2>100){ + if (tries2 > 100) { WARN_ONCE("Ran out of GART memory!\n"); exit(1); } goto again; #else - WARN_ONCE("Ran out of GART memory (for %d)!\nPlease consider adjusting GARTSize option.\n", size); + WARN_ONCE + ("Ran out of GART memory (for %d)!\nPlease consider adjusting GARTSize option.\n", + size); return 0; #endif } - + i = free; - + if (i > rmesa->rmm->u_last) rmesa->rmm->u_last = i; - - rmesa->rmm->u_list[i].ptr = ((GLubyte *)rmesa->radeon.radeonScreen->gartTextures.map) + offset; + + rmesa->rmm->u_list[i].ptr = + ((GLubyte *) rmesa->radeon.radeonScreen->gartTextures.map) + offset; rmesa->rmm->u_list[i].size = size; rmesa->rmm->u_list[i].age = 0; rmesa->rmm->u_list[i].fb = NULL; //fprintf(stderr, "alloc %p at id %d\n", rmesa->rmm->u_list[i].ptr, i); - + #ifdef MM_DEBUG - fprintf(stderr, "allocated %d at age %x\n", i, radeonGetAge((radeonContextPtr)rmesa)); + fprintf(stderr, "allocated %d at age %x\n", i, + radeonGetAge((radeonContextPtr) rmesa)); #endif - + return i; } #include "r300_emit.h" -static void emit_lin_cp(r300ContextPtr rmesa, unsigned long dst, unsigned long src, unsigned long size) +static void emit_lin_cp(r300ContextPtr rmesa, unsigned long dst, + unsigned long src, unsigned long size) { int cmd_reserved = 0; int cmd_written = 0; drm_radeon_cmd_header_t *cmd = NULL; int cp_size; - - - while (size > 0){ + + while (size > 0) { cp_size = size; - if(cp_size > /*8190*/4096) - cp_size = /*8190*/4096; - - reg_start(0x146c,1); + if (cp_size > /*8190 */ 4096) + cp_size = /*8190 */ 4096; + + reg_start(0x146c, 1); e32(0x52cc32fb); - - reg_start(0x15ac,1); + + reg_start(0x15ac, 1); e32(src); e32(cp_size); - - reg_start(0x1704,0); + + reg_start(0x1704, 0); e32(0x0); - reg_start(0x1404,1); + reg_start(0x1404, 1); e32(dst); e32(cp_size); - - reg_start(0x1700,0); + + reg_start(0x1700, 0); e32(0x0); - - reg_start(0x1640,3); + + reg_start(0x1640, 3); e32(0x00000000); e32(0x00001fff); e32(0x00000000); @@ -279,19 +301,19 @@ static void emit_lin_cp(r300ContextPtr rmesa, unsigned long dst, unsigned long s e32(0 << 16 | 0); e32(0 << 16 | 0); e32(cp_size << 16 | 0x1); - + dst += cp_size; src += cp_size; size -= cp_size; } - - reg_start(R300_RB3D_DSTCACHE_CTLSTAT,0); + + reg_start(R300_RB3D_DSTCACHE_CTLSTAT, 0); e32(R300_RB3D_DSTCACHE_UNKNOWN_0A); - - reg_start(0x342c,0); + + reg_start(0x342c, 0); e32(0x00000005); - - reg_start(0x1720,0); + + reg_start(0x1720, 0); e32(0x00010000); } @@ -299,196 +321,217 @@ void r300_mem_use(r300ContextPtr rmesa, int id) { uint64_t ull; #ifdef MM_DEBUG - fprintf(stderr, "%s: %d at age %x\n", __FUNCTION__, id, radeonGetAge((radeonContextPtr)rmesa)); -#endif + fprintf(stderr, "%s: %d at age %x\n", __FUNCTION__, id, + radeonGetAge((radeonContextPtr) rmesa)); +#endif drm_r300_cmd_header_t *cmd; - + assert(id <= rmesa->rmm->u_last); - - if(id == 0) + + if (id == 0) return; - -#if 0 /* FB VBOs. Needs further changes... */ - rmesa->rmm->u_list[id].ref_count ++; - if (rmesa->rmm->u_list[id].ref_count > 100 && rmesa->rmm->u_list[id].fb == NULL && - rmesa->rmm->u_list[id].size != RADEON_BUFFER_SIZE*16 /*&& rmesa->rmm->u_list[id].size > 40*/) { + +#if 0 /* FB VBOs. Needs further changes... */ + rmesa->rmm->u_list[id].ref_count++; + if (rmesa->rmm->u_list[id].ref_count > 100 + && rmesa->rmm->u_list[id].fb == NULL + && rmesa->rmm->u_list[id].size != + RADEON_BUFFER_SIZE * 16 /*&& rmesa->rmm->u_list[id].size > 40 */ ) { driTexHeap *heap; struct mem_block *mb; - + LOCK_HARDWARE(&(rmesa->radeon)); - + heap = rmesa->texture_heaps[0]; - - mb = mmAllocMem(heap->memory_heap, rmesa->rmm->u_list[id].size, heap->alignmentShift, 0); - + + mb = mmAllocMem(heap->memory_heap, rmesa->rmm->u_list[id].size, + heap->alignmentShift, 0); + UNLOCK_HARDWARE(&(rmesa->radeon)); - + if (mb) { rmesa->rmm->u_list[id].fb = mb; - - emit_lin_cp(rmesa, rmesa->radeon.radeonScreen->texOffset[0] + rmesa->rmm->u_list[id].fb->ofs, - r300GartOffsetFromVirtual(rmesa, rmesa->rmm->u_list[id].ptr), - rmesa->rmm->u_list[id].size); + + emit_lin_cp(rmesa, + rmesa->radeon.radeonScreen->texOffset[0] + + rmesa->rmm->u_list[id].fb->ofs, + r300GartOffsetFromVirtual(rmesa, + rmesa->rmm-> + u_list[id].ptr), + rmesa->rmm->u_list[id].size); } else { - WARN_ONCE("Upload to fb failed, %d, %d\n", rmesa->rmm->u_list[id].size, id); + WARN_ONCE("Upload to fb failed, %d, %d\n", + rmesa->rmm->u_list[id].size, id); } //fprintf(stderr, "Upload to fb! %d, %d\n", rmesa->rmm->u_list[id].ref_count, id); } /*if (rmesa->rmm->u_list[id].fb) { - emit_lin_cp(rmesa, rmesa->radeon.radeonScreen->texOffset[0] + rmesa->rmm->u_list[id].fb->ofs, - r300GartOffsetFromVirtual(rmesa, rmesa->rmm->u_list[id].ptr), - rmesa->rmm->u_list[id].size); - }*/ + emit_lin_cp(rmesa, rmesa->radeon.radeonScreen->texOffset[0] + rmesa->rmm->u_list[id].fb->ofs, + r300GartOffsetFromVirtual(rmesa, rmesa->rmm->u_list[id].ptr), + rmesa->rmm->u_list[id].size); + } */ #endif - - cmd = (drm_r300_cmd_header_t *)r300AllocCmdBuf(rmesa, 2 + sizeof(ull) / 4, __FUNCTION__); + + cmd = + (drm_r300_cmd_header_t *) r300AllocCmdBuf(rmesa, + 2 + sizeof(ull) / 4, + __FUNCTION__); cmd[0].scratch.cmd_type = R300_CMD_SCRATCH; cmd[0].scratch.reg = R300_MEM_SCRATCH; cmd[0].scratch.n_bufs = 1; cmd[0].scratch.flags = 0; - cmd ++; - - ull = (uint64_t)(intptr_t)&rmesa->rmm->u_list[id].age; + cmd++; + + ull = (uint64_t) (intptr_t) & rmesa->rmm->u_list[id].age; _mesa_memcpy(cmd, &ull, sizeof(ull)); cmd += sizeof(ull) / 4; - - cmd[0].u = /*id*/0; - - LOCK_HARDWARE(&rmesa->radeon); /* Protect from DRM. */ - rmesa->rmm->u_list[id].h_pending ++; + + cmd[0].u = /*id */ 0; + + LOCK_HARDWARE(&rmesa->radeon); /* Protect from DRM. */ + rmesa->rmm->u_list[id].h_pending++; UNLOCK_HARDWARE(&rmesa->radeon); } unsigned long r300_mem_offset(r300ContextPtr rmesa, int id) { unsigned long offset; - + assert(id <= rmesa->rmm->u_last); - + if (rmesa->rmm->u_list[id].fb) { - offset = rmesa->radeon.radeonScreen->texOffset[0] + rmesa->rmm->u_list[id].fb->ofs; + offset = + rmesa->radeon.radeonScreen->texOffset[0] + + rmesa->rmm->u_list[id].fb->ofs; } else { offset = (char *)rmesa->rmm->u_list[id].ptr - - (char *)rmesa->radeon.radeonScreen->gartTextures.map; + (char *)rmesa->radeon.radeonScreen->gartTextures.map; offset += rmesa->radeon.radeonScreen->gart_texture_offset; } - + return offset; } int r300_mem_on_card(r300ContextPtr rmesa, int id) { assert(id <= rmesa->rmm->u_last); - + if (rmesa->rmm->u_list[id].fb) return GL_TRUE; - + return GL_FALSE; } - + void *r300_mem_map(r300ContextPtr rmesa, int id, int access) { #ifdef MM_DEBUG - fprintf(stderr, "%s: %d at age %x\n", __FUNCTION__, id, radeonGetAge((radeonContextPtr)rmesa)); -#endif + fprintf(stderr, "%s: %d at age %x\n", __FUNCTION__, id, + radeonGetAge((radeonContextPtr) rmesa)); +#endif void *ptr; int tries = 0; - + assert(id <= rmesa->rmm->u_last); - + rmesa->rmm->u_list[id].ref_count = 0; if (rmesa->rmm->u_list[id].fb) { WARN_ONCE("Mapping fb!\n"); /* Idle gart only and do upload on unmap */ //rmesa->rmm->u_list[id].fb = NULL; - - - if(rmesa->rmm->u_list[id].mapped == 1) + + if (rmesa->rmm->u_list[id].mapped == 1) WARN_ONCE("buffer %d already mapped\n", id); - + rmesa->rmm->u_list[id].mapped = 1; ptr = r300_mem_ptr(rmesa, id); - + return ptr; } - + if (access == R300_MEM_R) { - - if(rmesa->rmm->u_list[id].mapped == 1) + + if (rmesa->rmm->u_list[id].mapped == 1) WARN_ONCE("buffer %d already mapped\n", id); - + rmesa->rmm->u_list[id].mapped = 1; ptr = r300_mem_ptr(rmesa, id); - + return ptr; } - - + if (rmesa->rmm->u_list[id].h_pending) r300FlushCmdBuf(rmesa, __FUNCTION__); - + if (rmesa->rmm->u_list[id].h_pending) { return NULL; } - - while(rmesa->rmm->u_list[id].age > radeonGetAge((radeonContextPtr)rmesa) && tries++ < 1000) + + while (rmesa->rmm->u_list[id].age > + radeonGetAge((radeonContextPtr) rmesa) && tries++ < 1000) usleep(10); - + if (tries >= 1000) { fprintf(stderr, "Idling failed (%x vs %x)\n", - rmesa->rmm->u_list[id].age, radeonGetAge((radeonContextPtr)rmesa)); + rmesa->rmm->u_list[id].age, + radeonGetAge((radeonContextPtr) rmesa)); return NULL; } - - if(rmesa->rmm->u_list[id].mapped == 1) + + if (rmesa->rmm->u_list[id].mapped == 1) WARN_ONCE("buffer %d already mapped\n", id); - + rmesa->rmm->u_list[id].mapped = 1; ptr = r300_mem_ptr(rmesa, id); - + return ptr; } void r300_mem_unmap(r300ContextPtr rmesa, int id) { #ifdef MM_DEBUG - fprintf(stderr, "%s: %d at age %x\n", __FUNCTION__, id, radeonGetAge((radeonContextPtr)rmesa)); -#endif - + fprintf(stderr, "%s: %d at age %x\n", __FUNCTION__, id, + radeonGetAge((radeonContextPtr) rmesa)); +#endif + assert(id <= rmesa->rmm->u_last); - - if(rmesa->rmm->u_list[id].mapped == 0) + + if (rmesa->rmm->u_list[id].mapped == 0) WARN_ONCE("buffer %d not mapped\n", id); - + rmesa->rmm->u_list[id].mapped = 0; - + if (rmesa->rmm->u_list[id].fb) - emit_lin_cp(rmesa, rmesa->radeon.radeonScreen->texOffset[0] + rmesa->rmm->u_list[id].fb->ofs, - r300GartOffsetFromVirtual(rmesa, rmesa->rmm->u_list[id].ptr), - rmesa->rmm->u_list[id].size); + emit_lin_cp(rmesa, + rmesa->radeon.radeonScreen->texOffset[0] + + rmesa->rmm->u_list[id].fb->ofs, + r300GartOffsetFromVirtual(rmesa, + rmesa->rmm->u_list[id]. + ptr), + rmesa->rmm->u_list[id].size); } void r300_mem_free(r300ContextPtr rmesa, int id) { #ifdef MM_DEBUG - fprintf(stderr, "%s: %d at age %x\n", __FUNCTION__, id, radeonGetAge((radeonContextPtr)rmesa)); -#endif - + fprintf(stderr, "%s: %d at age %x\n", __FUNCTION__, id, + radeonGetAge((radeonContextPtr) rmesa)); +#endif + assert(id <= rmesa->rmm->u_last); - - if(id == 0) + + if (id == 0) return; - - if(rmesa->rmm->u_list[id].ptr == NULL){ + + if (rmesa->rmm->u_list[id].ptr == NULL) { WARN_ONCE("Not allocated!\n"); - return ; + return; } - - if(rmesa->rmm->u_list[id].pending){ + + if (rmesa->rmm->u_list[id].pending) { WARN_ONCE("%p already pended!\n", rmesa->rmm->u_list[id].ptr); - return ; + return; } - + rmesa->rmm->u_list[id].pending = 1; } #endif -- cgit v1.2.3 From 6a69bb586445da4c6bdfa00fa775a9286ead3c31 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Fri, 11 May 2007 21:08:56 +0000 Subject: r300: Removed deprecated/disabled VBO code from r300_mem.c Also removed a couple of unused fields from the r300_memory_manager structure. --- src/mesa/drivers/dri/r300/r300_context.c | 9 -- src/mesa/drivers/dri/r300/r300_mem.c | 158 +------------------------------ src/mesa/drivers/dri/r300/r300_mem.h | 5 +- 3 files changed, 4 insertions(+), 168 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_context.c b/src/mesa/drivers/dri/r300/r300_context.c index 00ff9812b89..9ea14ab4c78 100644 --- a/src/mesa/drivers/dri/r300/r300_context.c +++ b/src/mesa/drivers/dri/r300/r300_context.c @@ -447,15 +447,6 @@ static void r300FreeGartAllocations(r300ContextPtr r300) r300->rmm->u_list[i].pending = 0; r300->rmm->u_list[i].ptr = NULL; - if (r300->rmm->u_list[i].fb) { - LOCK_HARDWARE(&(r300->radeon)); - ret = mmFreeMem(r300->rmm->u_list[i].fb); - UNLOCK_HARDWARE(&(r300->radeon)); - if (ret) - fprintf(stderr, "failed to free!\n"); - r300->rmm->u_list[i].fb = NULL; - } - r300->rmm->u_list[i].ref_count = 0; } } r300->rmm->u_head = i; diff --git a/src/mesa/drivers/dri/r300/r300_mem.c b/src/mesa/drivers/dri/r300/r300_mem.c index 21c5d22d1b4..f8f9d4fcdf1 100644 --- a/src/mesa/drivers/dri/r300/r300_mem.c +++ b/src/mesa/drivers/dri/r300/r300_mem.c @@ -181,19 +181,6 @@ int r300_mem_alloc(r300ContextPtr rmesa, int alignment, int size) allocated -= rmesa->rmm->u_list[i].size; rmesa->rmm->u_list[i].pending = 0; rmesa->rmm->u_list[i].ptr = NULL; - - if (rmesa->rmm->u_list[i].fb) { - LOCK_HARDWARE(&(rmesa->radeon)); - ret = - mmFreeMem(rmesa->rmm->u_list[i].fb); - UNLOCK_HARDWARE(&(rmesa->radeon)); - - if (ret != 0) - fprintf(stderr, - "failed to free!\n"); - rmesa->rmm->u_list[i].fb = NULL; - } - rmesa->rmm->u_list[i].ref_count = 0; free = i; } } @@ -249,7 +236,6 @@ int r300_mem_alloc(r300ContextPtr rmesa, int alignment, int size) ((GLubyte *) rmesa->radeon.radeonScreen->gartTextures.map) + offset; rmesa->rmm->u_list[i].size = size; rmesa->rmm->u_list[i].age = 0; - rmesa->rmm->u_list[i].fb = NULL; //fprintf(stderr, "alloc %p at id %d\n", rmesa->rmm->u_list[i].ptr, i); #ifdef MM_DEBUG @@ -260,63 +246,6 @@ int r300_mem_alloc(r300ContextPtr rmesa, int alignment, int size) return i; } -#include "r300_emit.h" -static void emit_lin_cp(r300ContextPtr rmesa, unsigned long dst, - unsigned long src, unsigned long size) -{ - int cmd_reserved = 0; - int cmd_written = 0; - drm_radeon_cmd_header_t *cmd = NULL; - int cp_size; - - while (size > 0) { - cp_size = size; - if (cp_size > /*8190 */ 4096) - cp_size = /*8190 */ 4096; - - reg_start(0x146c, 1); - e32(0x52cc32fb); - - reg_start(0x15ac, 1); - e32(src); - e32(cp_size); - - reg_start(0x1704, 0); - e32(0x0); - - reg_start(0x1404, 1); - e32(dst); - e32(cp_size); - - reg_start(0x1700, 0); - e32(0x0); - - reg_start(0x1640, 3); - e32(0x00000000); - e32(0x00001fff); - e32(0x00000000); - e32(0x00001fff); - - start_packet3(RADEON_CP_PACKET3_UNK1B, 2); - e32(0 << 16 | 0); - e32(0 << 16 | 0); - e32(cp_size << 16 | 0x1); - - dst += cp_size; - src += cp_size; - size -= cp_size; - } - - reg_start(R300_RB3D_DSTCACHE_CTLSTAT, 0); - e32(R300_RB3D_DSTCACHE_UNKNOWN_0A); - - reg_start(0x342c, 0); - e32(0x00000005); - - reg_start(0x1720, 0); - e32(0x00010000); -} - void r300_mem_use(r300ContextPtr rmesa, int id) { uint64_t ull; @@ -331,47 +260,6 @@ void r300_mem_use(r300ContextPtr rmesa, int id) if (id == 0) return; -#if 0 /* FB VBOs. Needs further changes... */ - rmesa->rmm->u_list[id].ref_count++; - if (rmesa->rmm->u_list[id].ref_count > 100 - && rmesa->rmm->u_list[id].fb == NULL - && rmesa->rmm->u_list[id].size != - RADEON_BUFFER_SIZE * 16 /*&& rmesa->rmm->u_list[id].size > 40 */ ) { - driTexHeap *heap; - struct mem_block *mb; - - LOCK_HARDWARE(&(rmesa->radeon)); - - heap = rmesa->texture_heaps[0]; - - mb = mmAllocMem(heap->memory_heap, rmesa->rmm->u_list[id].size, - heap->alignmentShift, 0); - - UNLOCK_HARDWARE(&(rmesa->radeon)); - - if (mb) { - rmesa->rmm->u_list[id].fb = mb; - - emit_lin_cp(rmesa, - rmesa->radeon.radeonScreen->texOffset[0] + - rmesa->rmm->u_list[id].fb->ofs, - r300GartOffsetFromVirtual(rmesa, - rmesa->rmm-> - u_list[id].ptr), - rmesa->rmm->u_list[id].size); - } else { - WARN_ONCE("Upload to fb failed, %d, %d\n", - rmesa->rmm->u_list[id].size, id); - } - //fprintf(stderr, "Upload to fb! %d, %d\n", rmesa->rmm->u_list[id].ref_count, id); - } - /*if (rmesa->rmm->u_list[id].fb) { - emit_lin_cp(rmesa, rmesa->radeon.radeonScreen->texOffset[0] + rmesa->rmm->u_list[id].fb->ofs, - r300GartOffsetFromVirtual(rmesa, rmesa->rmm->u_list[id].ptr), - rmesa->rmm->u_list[id].size); - } */ -#endif - cmd = (drm_r300_cmd_header_t *) r300AllocCmdBuf(rmesa, 2 + sizeof(ull) / 4, @@ -399,29 +287,13 @@ unsigned long r300_mem_offset(r300ContextPtr rmesa, int id) assert(id <= rmesa->rmm->u_last); - if (rmesa->rmm->u_list[id].fb) { - offset = - rmesa->radeon.radeonScreen->texOffset[0] + - rmesa->rmm->u_list[id].fb->ofs; - } else { - offset = (char *)rmesa->rmm->u_list[id].ptr - - (char *)rmesa->radeon.radeonScreen->gartTextures.map; - offset += rmesa->radeon.radeonScreen->gart_texture_offset; - } + offset = (char *)rmesa->rmm->u_list[id].ptr - + (char *)rmesa->radeon.radeonScreen->gartTextures.map; + offset += rmesa->radeon.radeonScreen->gart_texture_offset; return offset; } -int r300_mem_on_card(r300ContextPtr rmesa, int id) -{ - assert(id <= rmesa->rmm->u_last); - - if (rmesa->rmm->u_list[id].fb) - return GL_TRUE; - - return GL_FALSE; -} - void *r300_mem_map(r300ContextPtr rmesa, int id, int access) { #ifdef MM_DEBUG @@ -433,21 +305,6 @@ void *r300_mem_map(r300ContextPtr rmesa, int id, int access) assert(id <= rmesa->rmm->u_last); - rmesa->rmm->u_list[id].ref_count = 0; - if (rmesa->rmm->u_list[id].fb) { - WARN_ONCE("Mapping fb!\n"); - /* Idle gart only and do upload on unmap */ - //rmesa->rmm->u_list[id].fb = NULL; - - if (rmesa->rmm->u_list[id].mapped == 1) - WARN_ONCE("buffer %d already mapped\n", id); - - rmesa->rmm->u_list[id].mapped = 1; - ptr = r300_mem_ptr(rmesa, id); - - return ptr; - } - if (access == R300_MEM_R) { if (rmesa->rmm->u_list[id].mapped == 1) @@ -499,15 +356,6 @@ void r300_mem_unmap(r300ContextPtr rmesa, int id) WARN_ONCE("buffer %d not mapped\n", id); rmesa->rmm->u_list[id].mapped = 0; - - if (rmesa->rmm->u_list[id].fb) - emit_lin_cp(rmesa, - rmesa->radeon.radeonScreen->texOffset[0] + - rmesa->rmm->u_list[id].fb->ofs, - r300GartOffsetFromVirtual(rmesa, - rmesa->rmm->u_list[id]. - ptr), - rmesa->rmm->u_list[id].size); } void r300_mem_free(r300ContextPtr rmesa, int id) diff --git a/src/mesa/drivers/dri/r300/r300_mem.h b/src/mesa/drivers/dri/r300/r300_mem.h index 1e99b176383..d2932380ec6 100644 --- a/src/mesa/drivers/dri/r300/r300_mem.h +++ b/src/mesa/drivers/dri/r300/r300_mem.h @@ -18,10 +18,8 @@ struct r300_memory_manager { uint32_t h_pending; int pending; int mapped; - int ref_count; - struct mem_block *fb; } *u_list; - int u_head, u_tail, u_size, u_last; + int u_head, u_size, u_last; }; @@ -32,7 +30,6 @@ extern int r300_mem_find(r300ContextPtr rmesa, void *ptr); extern int r300_mem_alloc(r300ContextPtr rmesa, int alignment, int size); extern void r300_mem_use(r300ContextPtr rmesa, int id); extern unsigned long r300_mem_offset(r300ContextPtr rmesa, int id); -extern int r300_mem_on_card(r300ContextPtr rmesa, int id); extern void *r300_mem_map(r300ContextPtr rmesa, int id, int access); extern void r300_mem_unmap(r300ContextPtr rmesa, int id); extern void r300_mem_free(r300ContextPtr rmesa, int id); -- cgit v1.2.3 From ef29d6af6c24487a66155586feb9ab3eb0c3a229 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Fri, 11 May 2007 21:22:37 +0000 Subject: r300: Removed the r300BindProgram function; mesa default does better checking. --- src/mesa/drivers/dri/r300/r300_shader.c | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_shader.c b/src/mesa/drivers/dri/r300/r300_shader.c index f54a4f9f474..ac4ed441cb2 100644 --- a/src/mesa/drivers/dri/r300/r300_shader.c +++ b/src/mesa/drivers/dri/r300/r300_shader.c @@ -7,19 +7,6 @@ #include "r300_context.h" #include "r300_fragprog.h" -static void -r300BindProgram(GLcontext * ctx, GLenum target, struct gl_program *prog) -{ - switch (target) { - case GL_VERTEX_PROGRAM_ARB: - case GL_FRAGMENT_PROGRAM_ARB: - break; - default: - WARN_ONCE("Target not supported yet!\n"); - break; - } -} - static struct gl_program *r300NewProgram(GLcontext * ctx, GLenum target, GLuint id) { @@ -62,9 +49,7 @@ r300ProgramStringNotify(GLcontext * ctx, GLenum target, struct gl_program *prog) switch (target) { case GL_VERTEX_PROGRAM_ARB: vp->progs = NULL; - /*vp->translated = GL_FALSE; - memset(&vp->translated, 0, sizeof(struct r300_vertex_program) - sizeof(struct gl_vertex_program)); */ - /*r300TranslateVertexShader(vp); */ + vp->translated = GL_FALSE; break; case GL_FRAGMENT_PROGRAM_ARB: fp->translated = GL_FALSE; @@ -83,7 +68,6 @@ r300IsProgramNative(GLcontext * ctx, GLenum target, struct gl_program *prog) void r300InitShaderFuncs(struct dd_function_table *functions) { functions->NewProgram = r300NewProgram; - functions->BindProgram = r300BindProgram; functions->DeleteProgram = r300DeleteProgram; functions->ProgramStringNotify = r300ProgramStringNotify; functions->IsProgramNative = r300IsProgramNative; -- cgit v1.2.3 From bcaf8fc7b10327fd7936b22ec9b552e93497cee4 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Fri, 11 May 2007 21:31:22 +0000 Subject: r300: Cleaned up the blend factor function. --- src/mesa/drivers/dri/r300/r300_state.c | 36 ++++++++++++++++------------------ 1 file changed, 17 insertions(+), 19 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_state.c b/src/mesa/drivers/dri/r300/r300_state.c index 4f25ff7e812..625797b4b9f 100644 --- a/src/mesa/drivers/dri/r300/r300_state.c +++ b/src/mesa/drivers/dri/r300/r300_state.c @@ -97,60 +97,58 @@ static void r300BlendColor(GLcontext * ctx, const GLfloat cf[4]) */ static int blend_factor(GLenum factor, GLboolean is_src) { - int func; - switch (factor) { case GL_ZERO: - func = R300_BLEND_GL_ZERO; + return R300_BLEND_GL_ZERO; break; case GL_ONE: - func = R300_BLEND_GL_ONE; + return R300_BLEND_GL_ONE; break; case GL_DST_COLOR: - func = R300_BLEND_GL_DST_COLOR; + return R300_BLEND_GL_DST_COLOR; break; case GL_ONE_MINUS_DST_COLOR: - func = R300_BLEND_GL_ONE_MINUS_DST_COLOR; + return R300_BLEND_GL_ONE_MINUS_DST_COLOR; break; case GL_SRC_COLOR: - func = R300_BLEND_GL_SRC_COLOR; + return R300_BLEND_GL_SRC_COLOR; break; case GL_ONE_MINUS_SRC_COLOR: - func = R300_BLEND_GL_ONE_MINUS_SRC_COLOR; + return R300_BLEND_GL_ONE_MINUS_SRC_COLOR; break; case GL_SRC_ALPHA: - func = R300_BLEND_GL_SRC_ALPHA; + return R300_BLEND_GL_SRC_ALPHA; break; case GL_ONE_MINUS_SRC_ALPHA: - func = R300_BLEND_GL_ONE_MINUS_SRC_ALPHA; + return R300_BLEND_GL_ONE_MINUS_SRC_ALPHA; break; case GL_DST_ALPHA: - func = R300_BLEND_GL_DST_ALPHA; + return R300_BLEND_GL_DST_ALPHA; break; case GL_ONE_MINUS_DST_ALPHA: - func = R300_BLEND_GL_ONE_MINUS_DST_ALPHA; + return R300_BLEND_GL_ONE_MINUS_DST_ALPHA; break; case GL_SRC_ALPHA_SATURATE: - func = (is_src) ? R300_BLEND_GL_SRC_ALPHA_SATURATE : + return (is_src) ? R300_BLEND_GL_SRC_ALPHA_SATURATE : R300_BLEND_GL_ZERO; break; case GL_CONSTANT_COLOR: - func = R300_BLEND_GL_CONST_COLOR; + return R300_BLEND_GL_CONST_COLOR; break; case GL_ONE_MINUS_CONSTANT_COLOR: - func = R300_BLEND_GL_ONE_MINUS_CONST_COLOR; + return R300_BLEND_GL_ONE_MINUS_CONST_COLOR; break; case GL_CONSTANT_ALPHA: - func = R300_BLEND_GL_CONST_ALPHA; + return R300_BLEND_GL_CONST_ALPHA; break; case GL_ONE_MINUS_CONSTANT_ALPHA: - func = R300_BLEND_GL_ONE_MINUS_CONST_ALPHA; + return R300_BLEND_GL_ONE_MINUS_CONST_ALPHA; break; default: fprintf(stderr, "unknown blend factor %x\n", factor); - func = (is_src) ? R300_BLEND_GL_ONE : R300_BLEND_GL_ZERO; + return (is_src) ? R300_BLEND_GL_ONE : R300_BLEND_GL_ZERO; + break; } - return func; } /** -- cgit v1.2.3 From 67363327e59a2f4699802b1a26c232ad092c1c6e Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Fri, 11 May 2007 21:36:13 +0000 Subject: r300: Corrected a small error from 37cbf38c344012f9d6e938937dac3697b73721a8. --- src/mesa/drivers/dri/r300/r300_shader.c | 1 - 1 file changed, 1 deletion(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_shader.c b/src/mesa/drivers/dri/r300/r300_shader.c index ac4ed441cb2..59fe17ba10e 100644 --- a/src/mesa/drivers/dri/r300/r300_shader.c +++ b/src/mesa/drivers/dri/r300/r300_shader.c @@ -49,7 +49,6 @@ r300ProgramStringNotify(GLcontext * ctx, GLenum target, struct gl_program *prog) switch (target) { case GL_VERTEX_PROGRAM_ARB: vp->progs = NULL; - vp->translated = GL_FALSE; break; case GL_FRAGMENT_PROGRAM_ARB: fp->translated = GL_FALSE; -- cgit v1.2.3 From 3f709f16ef1feb7c5e6f67c1deef56d97695a86d Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Fri, 11 May 2007 21:40:00 +0000 Subject: r300: Enable hardware 3D texture support. Fixes the stex3d demo. --- src/mesa/drivers/dri/r300/r300_tex.c | 14 -------------- src/mesa/drivers/dri/r300/r300_texstate.c | 10 ++-------- 2 files changed, 2 insertions(+), 22 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_tex.c b/src/mesa/drivers/dri/r300/r300_tex.c index d78e3dfb23e..a8be0f6ff74 100644 --- a/src/mesa/drivers/dri/r300/r300_tex.c +++ b/src/mesa/drivers/dri/r300/r300_tex.c @@ -876,7 +876,6 @@ static void r300CompressedTexSubImage2D(GLcontext * ctx, GLenum target, t->dirty_images[face] |= (1 << level); } -#if ENABLE_HW_3D_TEXTURE static void r300TexImage3D(GLcontext * ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint depth, @@ -930,9 +929,7 @@ static void r300TexImage3D(GLcontext * ctx, GLenum target, GLint level, t->dirty_images[0] |= (1 << level); } } -#endif -#if ENABLE_HW_3D_TEXTURE static void r300TexSubImage3D(GLcontext * ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, @@ -966,7 +963,6 @@ r300TexSubImage3D(GLcontext * ctx, GLenum target, GLint level, t->dirty_images[0] |= (1 << level); } -#endif static void r300TexEnv(GLcontext * ctx, GLenum target, GLenum pname, const GLfloat * param) @@ -1087,9 +1083,7 @@ static void r300BindTexture(GLcontext * ctx, GLenum target, if ((target == GL_TEXTURE_1D) || (target == GL_TEXTURE_2D) -#if ENABLE_HW_3D_TEXTURE || (target == GL_TEXTURE_3D) -#endif || (target == GL_TEXTURE_CUBE_MAP) || (target == GL_TEXTURE_RECTANGLE_NV)) { assert(texObj->DriverData != NULL); @@ -1150,18 +1144,10 @@ void r300InitTextureFuncs(struct dd_function_table *functions) functions->ChooseTextureFormat = r300ChooseTextureFormat; functions->TexImage1D = r300TexImage1D; functions->TexImage2D = r300TexImage2D; -#if ENABLE_HW_3D_TEXTURE functions->TexImage3D = r300TexImage3D; -#else - functions->TexImage3D = _mesa_store_teximage3d; -#endif functions->TexSubImage1D = r300TexSubImage1D; functions->TexSubImage2D = r300TexSubImage2D; -#if ENABLE_HW_3D_TEXTURE functions->TexSubImage3D = r300TexSubImage3D; -#else - functions->TexSubImage3D = _mesa_store_texsubimage3d; -#endif functions->NewTextureObject = r300NewTextureObject; functions->BindTexture = r300BindTexture; functions->DeleteTexture = r300DeleteTexture; diff --git a/src/mesa/drivers/dri/r300/r300_texstate.c b/src/mesa/drivers/dri/r300/r300_texstate.c index bef597e4dc0..8b36bd8bb2b 100644 --- a/src/mesa/drivers/dri/r300/r300_texstate.c +++ b/src/mesa/drivers/dri/r300/r300_texstate.c @@ -420,7 +420,6 @@ static GLboolean enable_tex_2d(GLcontext * ctx, int unit) return GL_TRUE; } -#if ENABLE_HW_3D_TEXTURE static GLboolean enable_tex_3d(GLcontext * ctx, int unit) { r300ContextPtr rmesa = R300_CONTEXT(ctx); @@ -445,7 +444,6 @@ static GLboolean enable_tex_3d(GLcontext * ctx, int unit) return GL_TRUE; } -#endif static GLboolean enable_tex_cube(GLcontext * ctx, int unit) { @@ -546,14 +544,10 @@ static GLboolean r300UpdateTextureUnit(GLcontext * ctx, int unit) } else if (texUnit->_ReallyEnabled & (TEXTURE_1D_BIT | TEXTURE_2D_BIT)) { return (enable_tex_2d(ctx, unit) && update_tex_common(ctx, unit)); - } -#if ENABLE_HW_3D_TEXTURE - else if (texUnit->_ReallyEnabled & (TEXTURE_3D_BIT)) { + } else if (texUnit->_ReallyEnabled & (TEXTURE_3D_BIT)) { return (enable_tex_3d(ctx, unit) && update_tex_common(ctx, unit)); - } -#endif - else if (texUnit->_ReallyEnabled & (TEXTURE_CUBE_BIT)) { + } else if (texUnit->_ReallyEnabled & (TEXTURE_CUBE_BIT)) { return (enable_tex_cube(ctx, unit) && update_tex_common(ctx, unit)); } else if (texUnit->_ReallyEnabled) { -- cgit v1.2.3 From b6087270a092adc18223864a9e961c59404ce1dd Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Fri, 11 May 2007 21:45:14 +0000 Subject: r300: Cleaned up function names in r300_texstate.c. --- src/mesa/drivers/dri/r300/r300_texstate.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_texstate.c b/src/mesa/drivers/dri/r300/r300_texstate.c index 8b36bd8bb2b..705502ebf2b 100644 --- a/src/mesa/drivers/dri/r300/r300_texstate.c +++ b/src/mesa/drivers/dri/r300/r300_texstate.c @@ -400,7 +400,7 @@ static void r300SetTexImages(r300ContextPtr rmesa, * Texture unit state management */ -static GLboolean enable_tex_2d(GLcontext * ctx, int unit) +static GLboolean r300EnableTexture2D(GLcontext * ctx, int unit) { r300ContextPtr rmesa = R300_CONTEXT(ctx); struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit]; @@ -420,7 +420,7 @@ static GLboolean enable_tex_2d(GLcontext * ctx, int unit) return GL_TRUE; } -static GLboolean enable_tex_3d(GLcontext * ctx, int unit) +static GLboolean r300EnableTexture3D(GLcontext * ctx, int unit) { r300ContextPtr rmesa = R300_CONTEXT(ctx); struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit]; @@ -445,7 +445,7 @@ static GLboolean enable_tex_3d(GLcontext * ctx, int unit) return GL_TRUE; } -static GLboolean enable_tex_cube(GLcontext * ctx, int unit) +static GLboolean r300EnableTextureCube(GLcontext * ctx, int unit) { r300ContextPtr rmesa = R300_CONTEXT(ctx); struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit]; @@ -481,7 +481,7 @@ static GLboolean enable_tex_cube(GLcontext * ctx, int unit) return GL_TRUE; } -static GLboolean enable_tex_rect(GLcontext * ctx, int unit) +static GLboolean r300EnableTextureRect(GLcontext * ctx, int unit) { r300ContextPtr rmesa = R300_CONTEXT(ctx); struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit]; @@ -501,7 +501,7 @@ static GLboolean enable_tex_rect(GLcontext * ctx, int unit) return GL_TRUE; } -static GLboolean update_tex_common(GLcontext * ctx, int unit) +static GLboolean r300UpdateTexture(GLcontext * ctx, int unit) { r300ContextPtr rmesa = R300_CONTEXT(ctx); struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit]; @@ -539,17 +539,17 @@ static GLboolean r300UpdateTextureUnit(GLcontext * ctx, int unit) struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit]; if (texUnit->_ReallyEnabled & (TEXTURE_RECT_BIT)) { - return (enable_tex_rect(ctx, unit) && - update_tex_common(ctx, unit)); + return (r300EnableTextureRect(ctx, unit) && + r300UpdateTexture(ctx, unit)); } else if (texUnit->_ReallyEnabled & (TEXTURE_1D_BIT | TEXTURE_2D_BIT)) { - return (enable_tex_2d(ctx, unit) && - update_tex_common(ctx, unit)); + return (r300EnableTexture2D(ctx, unit) && + r300UpdateTexture(ctx, unit)); } else if (texUnit->_ReallyEnabled & (TEXTURE_3D_BIT)) { - return (enable_tex_3d(ctx, unit) && - update_tex_common(ctx, unit)); + return (r300EnableTexture3D(ctx, unit) && + r300UpdateTexture(ctx, unit)); } else if (texUnit->_ReallyEnabled & (TEXTURE_CUBE_BIT)) { - return (enable_tex_cube(ctx, unit) && - update_tex_common(ctx, unit)); + return (r300EnableTextureCube(ctx, unit) && + r300UpdateTexture(ctx, unit)); } else if (texUnit->_ReallyEnabled) { return GL_FALSE; } else { -- cgit v1.2.3 From 0aa998b2ab6fdfe139b54de9868e2383440685d0 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Fri, 11 May 2007 21:56:10 +0000 Subject: r300: Merged radeon_span.c. --- src/mesa/drivers/dri/r300/.gitignore | 2 +- src/mesa/drivers/dri/r300/Makefile | 2 +- src/mesa/drivers/dri/r300/radeon_span.c | 321 ------------------------------ src/mesa/drivers/dri/radeon/radeon_span.c | 7 +- 4 files changed, 8 insertions(+), 324 deletions(-) delete mode 100644 src/mesa/drivers/dri/r300/radeon_span.c (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/.gitignore b/src/mesa/drivers/dri/r300/.gitignore index 3689a6a78e5..3a308633597 100644 --- a/src/mesa/drivers/dri/r300/.gitignore +++ b/src/mesa/drivers/dri/r300/.gitignore @@ -1,4 +1,4 @@ radeon_chipset.h radeon_screen.[ch] -radeon_span.h +radeon_span.[ch] server diff --git a/src/mesa/drivers/dri/r300/Makefile b/src/mesa/drivers/dri/r300/Makefile index c1d223c7600..46b38a944a3 100644 --- a/src/mesa/drivers/dri/r300/Makefile +++ b/src/mesa/drivers/dri/r300/Makefile @@ -25,7 +25,6 @@ DRIVER_SOURCES = \ radeon_context.c \ radeon_ioctl.c \ radeon_lock.c \ - radeon_span.c \ radeon_state.c \ r300_mem.c \ \ @@ -60,6 +59,7 @@ COMMON_SYMLINKS = \ radeon_chipset.h \ radeon_screen.c \ radeon_screen.h \ + radeon_span.c \ radeon_span.h ##### TARGETS ##### diff --git a/src/mesa/drivers/dri/r300/radeon_span.c b/src/mesa/drivers/dri/r300/radeon_span.c deleted file mode 100644 index eae09d6b35e..00000000000 --- a/src/mesa/drivers/dri/r300/radeon_span.c +++ /dev/null @@ -1,321 +0,0 @@ -/************************************************************************** - -Copyright (C) The Weather Channel, Inc. 2002. All Rights Reserved. -Copyright 2000, 2001 ATI Technologies Inc., Ontario, Canada, and - VA Linux Systems Inc., Fremont, California. - -The Weather Channel (TM) funded Tungsten Graphics to develop the -initial release of the Radeon 8500 driver under the XFree86 license. -This notice must be preserved. - -All Rights Reserved. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice (including the -next paragraph) shall be included in all copies or substantial -portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -**************************************************************************/ - -/* - * Authors: - * Kevin E. Martin - * Gareth Hughes - * Keith Whitwell - * - */ - -#include "glheader.h" -#include "swrast/swrast.h" - -#include "r300_state.h" -#include "radeon_ioctl.h" -#include "r300_ioctl.h" -#include "radeon_span.h" - -#include "drirenderbuffer.h" - -#define DBG 0 - -/* - * Note that all information needed to access pixels in a renderbuffer - * should be obtained through the gl_renderbuffer parameter, not per-context - * information. - */ -#define LOCAL_VARS \ - driRenderbuffer *drb = (driRenderbuffer *) rb; \ - const __DRIdrawablePrivate *dPriv = drb->dPriv; \ - const GLuint bottom = dPriv->h - 1; \ - GLubyte *buf = (GLubyte *) drb->flippedData \ - + (dPriv->y * drb->flippedPitch + dPriv->x) * drb->cpp; \ - GLuint p; \ - (void) p; - -#define LOCAL_DEPTH_VARS \ - driRenderbuffer *drb = (driRenderbuffer *) rb; \ - const __DRIdrawablePrivate *dPriv = drb->dPriv; \ - const GLuint bottom = dPriv->h - 1; \ - GLuint xo = dPriv->x; \ - GLuint yo = dPriv->y; \ - GLubyte *buf = (GLubyte *) drb->Base.Data; - -#define LOCAL_STENCIL_VARS LOCAL_DEPTH_VARS - -#define Y_FLIP(Y) (bottom - (Y)) - -#define HW_LOCK() - -#define HW_UNLOCK() - -/* ================================================================ - * Color buffer - */ - -/* 16 bit, RGB565 color spanline and pixel functions - */ -#define SPANTMP_PIXEL_FMT GL_RGB -#define SPANTMP_PIXEL_TYPE GL_UNSIGNED_SHORT_5_6_5 - -#define TAG(x) radeon##x##_RGB565 -#define TAG2(x,y) radeon##x##_RGB565##y -#define GET_PTR(X,Y) (buf + ((Y) * drb->flippedPitch + (X)) * 2) -#include "spantmp2.h" - -/* 32 bit, ARGB8888 color spanline and pixel functions - */ -#define SPANTMP_PIXEL_FMT GL_BGRA -#define SPANTMP_PIXEL_TYPE GL_UNSIGNED_INT_8_8_8_8_REV - -#define TAG(x) radeon##x##_ARGB8888 -#define TAG2(x,y) radeon##x##_ARGB8888##y -#define GET_PTR(X,Y) (buf + ((Y) * drb->flippedPitch + (X)) * 4) -#include "spantmp2.h" - -/* ================================================================ - * Depth buffer - */ - -/* The Radeon family has depth tiling on all the time, so we have to convert - * the x,y coordinates into the memory bus address (mba) in the same - * manner as the engine. In each case, the linear block address (ba) - * is calculated, and then wired with x and y to produce the final - * memory address. - * The chip will do address translation on its own if the surface registers - * are set up correctly. It is not quite enough to get it working with hyperz - * too... - */ - -static GLuint radeon_mba_z32(const driRenderbuffer * drb, GLint x, GLint y) -{ - GLuint pitch = drb->pitch; - if (drb->depthHasSurface) { - return 4 * (x + y * pitch); - } else { - GLuint ba, address = 0; /* a[0..1] = 0 */ - -#ifdef COMPILE_R300 - ba = (y / 8) * (pitch / 8) + (x / 8); -#else - ba = (y / 16) * (pitch / 16) + (x / 16); -#endif - - address |= (x & 0x7) << 2; /* a[2..4] = x[0..2] */ - address |= (y & 0x3) << 5; /* a[5..6] = y[0..1] */ - address |= (((x & 0x10) >> 2) ^ (y & 0x4)) << 5; /* a[7] = x[4] ^ y[2] */ - address |= (ba & 0x3) << 8; /* a[8..9] = ba[0..1] */ - - address |= (y & 0x8) << 7; /* a[10] = y[3] */ - address |= (((x & 0x8) << 1) ^ (y & 0x10)) << 7; /* a[11] = x[3] ^ y[4] */ - address |= (ba & ~0x3) << 10; /* a[12..] = ba[2..] */ - - return address; - } -} - -static INLINE GLuint -radeon_mba_z16(const driRenderbuffer * drb, GLint x, GLint y) -{ - GLuint pitch = drb->pitch; - if (drb->depthHasSurface) { - return 2 * (x + y * pitch); - } else { - GLuint ba, address = 0; /* a[0] = 0 */ - - ba = (y / 16) * (pitch / 32) + (x / 32); - - address |= (x & 0x7) << 1; /* a[1..3] = x[0..2] */ - address |= (y & 0x7) << 4; /* a[4..6] = y[0..2] */ - address |= (x & 0x8) << 4; /* a[7] = x[3] */ - address |= (ba & 0x3) << 8; /* a[8..9] = ba[0..1] */ - address |= (y & 0x8) << 7; /* a[10] = y[3] */ - address |= ((x & 0x10) ^ (y & 0x10)) << 7; /* a[11] = x[4] ^ y[4] */ - address |= (ba & ~0x3) << 10; /* a[12..] = ba[2..] */ - - return address; - } -} - -/* 16-bit depth buffer functions - */ -#define WRITE_DEPTH( _x, _y, d ) \ - *(GLushort *)(buf + radeon_mba_z16( drb, _x + xo, _y + yo )) = d; - -#define READ_DEPTH( d, _x, _y ) \ - d = *(GLushort *)(buf + radeon_mba_z16( drb, _x + xo, _y + yo )); - -#define TAG(x) radeon##x##_z16 -#include "depthtmp.h" - -/* 24 bit depth, 8 bit stencil depthbuffer functions - * - * Careful: It looks like the R300 uses ZZZS byte order while the R200 - * uses SZZZ for 24 bit depth, 8 bit stencil mode. - */ -#ifdef COMPILE_R300 -#define WRITE_DEPTH( _x, _y, d ) \ -do { \ - GLuint offset = radeon_mba_z32( drb, _x + xo, _y + yo ); \ - GLuint tmp = *(GLuint *)(buf + offset); \ - tmp &= 0x000000ff; \ - tmp |= ((d << 8) & 0xffffff00); \ - *(GLuint *)(buf + offset) = tmp; \ -} while (0) -#else -#define WRITE_DEPTH( _x, _y, d ) \ -do { \ - GLuint offset = radeon_mba_z32( drb, _x + xo, _y + yo ); \ - GLuint tmp = *(GLuint *)(buf + offset); \ - tmp &= 0xff000000; \ - tmp |= ((d) & 0x00ffffff); \ - *(GLuint *)(buf + offset) = tmp; \ -} while (0) -#endif - -#ifdef COMPILE_R300 -#define READ_DEPTH( d, _x, _y ) \ - do { \ - d = (*(GLuint *)(buf + radeon_mba_z32( drb, _x + xo, \ - _y + yo )) & 0xffffff00) >> 8; \ - }while(0) -#else -#define READ_DEPTH( d, _x, _y ) \ - d = *(GLuint *)(buf + radeon_mba_z32( drb, _x + xo, \ - _y + yo )) & 0x00ffffff; -#endif - -#define TAG(x) radeon##x##_z24_s8 -#include "depthtmp.h" - -/* ================================================================ - * Stencil buffer - */ - -/* 24 bit depth, 8 bit stencil depthbuffer functions - */ -#ifdef COMPILE_R300 -#define WRITE_STENCIL( _x, _y, d ) \ -do { \ - GLuint offset = radeon_mba_z32( drb, _x + xo, _y + yo ); \ - GLuint tmp = *(GLuint *)(buf + offset); \ - tmp &= 0xffffff00; \ - tmp |= (d) & 0xff; \ - *(GLuint *)(buf + offset) = tmp; \ -} while (0) -#else -#define WRITE_STENCIL( _x, _y, d ) \ -do { \ - GLuint offset = radeon_mba_z32( drb, _x + xo, _y + yo ); \ - GLuint tmp = *(GLuint *)(buf + offset); \ - tmp &= 0x00ffffff; \ - tmp |= (((d) & 0xff) << 24); \ - *(GLuint *)(buf + offset) = tmp; \ -} while (0) -#endif - -#ifdef COMPILE_R300 -#define READ_STENCIL( d, _x, _y ) \ -do { \ - GLuint offset = radeon_mba_z32( drb, _x + xo, _y + yo ); \ - GLuint tmp = *(GLuint *)(buf + offset); \ - d = tmp & 0x000000ff; \ -} while (0) -#else -#define READ_STENCIL( d, _x, _y ) \ -do { \ - GLuint offset = radeon_mba_z32( drb, _x + xo, _y + yo ); \ - GLuint tmp = *(GLuint *)(buf + offset); \ - d = (tmp & 0xff000000) >> 24; \ -} while (0) -#endif - -#define TAG(x) radeon##x##_z24_s8 -#include "stenciltmp.h" - -/* Move locking out to get reasonable span performance (10x better - * than doing this in HW_LOCK above). WaitForIdle() is the main - * culprit. - */ - -static void radeonSpanRenderStart(GLcontext * ctx) -{ - radeonContextPtr rmesa = RADEON_CONTEXT(ctx); -#ifdef COMPILE_R300 - r300ContextPtr r300 = (r300ContextPtr) rmesa; - R300_FIREVERTICES(r300); -#else - RADEON_FIREVERTICES(rmesa); -#endif - LOCK_HARDWARE(rmesa); - radeonWaitForIdleLocked(rmesa); -} - -static void radeonSpanRenderFinish(GLcontext * ctx) -{ - radeonContextPtr rmesa = RADEON_CONTEXT(ctx); - _swrast_flush(ctx); - UNLOCK_HARDWARE(rmesa); -} - -void radeonInitSpanFuncs(GLcontext * ctx) -{ - struct swrast_device_driver *swdd = - _swrast_GetDeviceDriverReference(ctx); - swdd->SpanRenderStart = radeonSpanRenderStart; - swdd->SpanRenderFinish = radeonSpanRenderFinish; -} - -/** - * Plug in the Get/Put routines for the given driRenderbuffer. - */ -void radeonSetSpanFunctions(driRenderbuffer * drb, const GLvisual * vis) -{ - if (drb->Base.InternalFormat == GL_RGBA) { - if (vis->redBits == 5 && vis->greenBits == 6 - && vis->blueBits == 5) { - radeonInitPointers_RGB565(&drb->Base); - } else { - radeonInitPointers_ARGB8888(&drb->Base); - } - } else if (drb->Base.InternalFormat == GL_DEPTH_COMPONENT16) { - radeonInitDepthPointers_z16(&drb->Base); - } else if (drb->Base.InternalFormat == GL_DEPTH_COMPONENT24) { - radeonInitDepthPointers_z24_s8(&drb->Base); - } else if (drb->Base.InternalFormat == GL_STENCIL_INDEX8_EXT) { - radeonInitStencilPointers_z24_s8(&drb->Base); - } -} diff --git a/src/mesa/drivers/dri/radeon/radeon_span.c b/src/mesa/drivers/dri/radeon/radeon_span.c index 732a85ecf0b..4551190d10c 100644 --- a/src/mesa/drivers/dri/radeon/radeon_span.c +++ b/src/mesa/drivers/dri/radeon/radeon_span.c @@ -43,11 +43,16 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "glheader.h" #include "swrast/swrast.h" +#ifdef COMPILE_R300 +#include "r300_ioctl.h" +#include "r300_state.h" +#else #include "radeon_context.h" #include "radeon_ioctl.h" #include "radeon_state.h" -#include "radeon_span.h" #include "radeon_tex.h" +#endif +#include "radeon_span.h" #include "drirenderbuffer.h" -- cgit v1.2.3 From 98d25a5a28b1d6e4ed299904aec4104f7d6c80b0 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Fri, 11 May 2007 22:02:52 +0000 Subject: r300: Initial work on merging radeon_lock.[ch]. --- src/mesa/drivers/dri/r300/radeon_lock.c | 94 +++++++++++++----------- src/mesa/drivers/dri/r300/radeon_lock.h | 9 ++- src/mesa/drivers/dri/radeon/radeon_lock.c | 117 +++++++++++++++--------------- src/mesa/drivers/dri/radeon/radeon_lock.h | 10 ++- 4 files changed, 127 insertions(+), 103 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/radeon_lock.c b/src/mesa/drivers/dri/r300/radeon_lock.c index 0d0d9ab7f06..978d2fae0cc 100644 --- a/src/mesa/drivers/dri/r300/radeon_lock.c +++ b/src/mesa/drivers/dri/r300/radeon_lock.c @@ -1,10 +1,15 @@ -/* +/************************************************************************** + +Copyright 2000, 2001 ATI Technologies Inc., Ontario, Canada, and + VA Linux Systems Inc., Fremont, California. Copyright (C) The Weather Channel, Inc. 2002. All Rights Reserved. The Weather Channel (TM) funded Tungsten Graphics to develop the initial release of the Radeon 8500 driver under the XFree86 license. This notice must be preserved. +All Rights Reserved. + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including @@ -29,9 +34,10 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* * Authors: + * Gareth Hughes * Keith Whitwell + * Kevin E. Martin */ -#include #include "radeon_lock.h" #include "radeon_ioctl.h" @@ -50,53 +56,57 @@ int prevLockLine = 0; /* Turn on/off page flipping according to the flags in the sarea: */ -void radeonUpdatePageFlipping(radeonContextPtr radeon) +void radeonUpdatePageFlipping(radeonContextPtr rmesa) { int use_back; - radeon->doPageFlip = radeon->sarea->pfState; - if (radeon->glCtx->WinSysDrawBuffer) { - driFlipRenderbuffers(radeon->glCtx->WinSysDrawBuffer, radeon->sarea->pfCurrentPage); - r300UpdateDrawBuffer(radeon->glCtx); - } + rmesa->doPageFlip = rmesa->sarea->pfState; + if (rmesa->glCtx->WinSysDrawBuffer) { + driFlipRenderbuffers(rmesa->glCtx->WinSysDrawBuffer, + rmesa->sarea->pfCurrentPage); + r300UpdateDrawBuffer(rmesa->glCtx); + } - use_back = radeon->glCtx->DrawBuffer ? - (radeon->glCtx->DrawBuffer->_ColorDrawBufferMask[0] == - BUFFER_BIT_BACK_LEFT) : 1; - use_back ^= (radeon->sarea->pfCurrentPage == 1); + use_back = rmesa->glCtx->DrawBuffer ? + (rmesa->glCtx->DrawBuffer->_ColorDrawBufferMask[0] == + BUFFER_BIT_BACK_LEFT) : 1; + use_back ^= (rmesa->sarea->pfCurrentPage == 1); if (use_back) { - radeon->state.color.drawOffset = radeon->radeonScreen->backOffset; - radeon->state.color.drawPitch = radeon->radeonScreen->backPitch; + rmesa->state.color.drawOffset = + rmesa->radeonScreen->backOffset; + rmesa->state.color.drawPitch = rmesa->radeonScreen->backPitch; } else { - radeon->state.color.drawOffset = radeon->radeonScreen->frontOffset; - radeon->state.color.drawPitch = radeon->radeonScreen->frontPitch; + rmesa->state.color.drawOffset = + rmesa->radeonScreen->frontOffset; + rmesa->state.color.drawPitch = + rmesa->radeonScreen->frontPitch; } } /** * Called by radeonGetLock() after the lock has been obtained. */ -static void r300RegainedLock(radeonContextPtr radeon) -{ +static void r300RegainedLock(radeonContextPtr rmesa) +{ int i; - __DRIdrawablePrivate *const drawable = radeon->dri.drawable; - r300ContextPtr r300 = (r300ContextPtr)radeon; - drm_radeon_sarea_t *sarea = radeon->sarea; + __DRIdrawablePrivate *const drawable = rmesa->dri.drawable; + r300ContextPtr r300 = (r300ContextPtr) rmesa; + drm_radeon_sarea_t *sarea = rmesa->sarea; - if ( radeon->lastStamp != drawable->lastStamp ) { - radeonUpdatePageFlipping(radeon); - radeonSetCliprects(radeon); + if (rmesa->lastStamp != drawable->lastStamp) { + radeonUpdatePageFlipping(rmesa); + radeonSetCliprects(rmesa); #if 1 - r300UpdateViewportOffset( radeon->glCtx ); - driUpdateFramebufferSize(radeon->glCtx, drawable); + r300UpdateViewportOffset(rmesa->glCtx); + driUpdateFramebufferSize(rmesa->glCtx, drawable); #else - radeonUpdateScissor(radeon->glCtx); + radeonUpdateScissor(rmesa->glCtx); #endif } - if (sarea->ctx_owner != radeon->dri.hwContext) { - sarea->ctx_owner = radeon->dri.hwContext; + if (sarea->ctx_owner != rmesa->dri.hwContext) { + sarea->ctx_owner = rmesa->dri.hwContext; for (i = 0; i < r300->nr_heaps; i++) { DRI_AGE_TEXTURES(r300->texture_heaps[i]); @@ -112,15 +122,15 @@ static void r300RegainedLock(radeonContextPtr radeon) * the hardware lock when it changes the window state, this routine will * automatically be called after such a change. */ -void radeonGetLock(radeonContextPtr radeon, GLuint flags) +void radeonGetLock(radeonContextPtr rmesa, GLuint flags) { - __DRIdrawablePrivate *const drawable = radeon->dri.drawable; - __DRIdrawablePrivate *const readable = radeon->dri.readable; - __DRIscreenPrivate *sPriv = radeon->dri.screen; - - assert (drawable != NULL); + __DRIdrawablePrivate *const drawable = rmesa->dri.drawable; + __DRIdrawablePrivate *const readable = rmesa->dri.readable; + __DRIscreenPrivate *sPriv = rmesa->dri.screen; + + assert(drawable != NULL); - drmGetLock(radeon->dri.fd, radeon->dri.hwContext, flags); + drmGetLock(rmesa->dri.fd, rmesa->dri.hwContext, flags); /* The window might have moved, so we might need to get new clip * rects. @@ -130,13 +140,13 @@ void radeonGetLock(radeonContextPtr radeon, GLuint flags) * Since the hardware state depends on having the latest drawable * clip rects, all state checking must be done _after_ this call. */ - DRI_VALIDATE_DRAWABLE_INFO( sPriv, drawable ); + DRI_VALIDATE_DRAWABLE_INFO(sPriv, drawable); if (drawable != readable) { - DRI_VALIDATE_DRAWABLE_INFO( sPriv, readable ); + DRI_VALIDATE_DRAWABLE_INFO(sPriv, readable); } - if (IS_R300_CLASS(radeon->radeonScreen)) - r300RegainedLock(radeon); - - radeon->lost_context = GL_TRUE; + if (IS_R300_CLASS(rmesa->radeonScreen)) + r300RegainedLock(rmesa); + + rmesa->lost_context = GL_TRUE; } diff --git a/src/mesa/drivers/dri/r300/radeon_lock.h b/src/mesa/drivers/dri/r300/radeon_lock.h index b11ddf0895e..2a358e9bdd6 100644 --- a/src/mesa/drivers/dri/r300/radeon_lock.h +++ b/src/mesa/drivers/dri/r300/radeon_lock.h @@ -1,10 +1,15 @@ -/* +/************************************************************************** + +Copyright 2000, 2001 ATI Technologies Inc., Ontario, Canada, and + VA Linux Systems Inc., Fremont, California. Copyright (C) The Weather Channel, Inc. 2002. All Rights Reserved. The Weather Channel (TM) funded Tungsten Graphics to develop the initial release of the Radeon 8500 driver under the XFree86 license. This notice must be preserved. +All Rights Reserved. + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including @@ -29,7 +34,9 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* * Authors: + * Gareth Hughes * Keith Whitwell + * Kevin E. Martin */ #ifndef __RADEON_LOCK_H__ diff --git a/src/mesa/drivers/dri/radeon/radeon_lock.c b/src/mesa/drivers/dri/radeon/radeon_lock.c index 312041e0351..30a0c3863c2 100644 --- a/src/mesa/drivers/dri/radeon/radeon_lock.c +++ b/src/mesa/drivers/dri/radeon/radeon_lock.c @@ -1,8 +1,12 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/radeon/radeon_lock.c,v 1.5 2002/10/30 12:51:55 alanh Exp $ */ /************************************************************************** Copyright 2000, 2001 ATI Technologies Inc., Ontario, Canada, and VA Linux Systems Inc., Fremont, California. +Copyright (C) The Weather Channel, Inc. 2002. All Rights Reserved. + +The Weather Channel (TM) funded Tungsten Graphics to develop the +initial release of the Radeon 8500 driver under the XFree86 license. +This notice must be preserved. All Rights Reserved. @@ -30,8 +34,9 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* * Authors: - * Kevin E. Martin * Gareth Hughes + * Keith Whitwell + * Kevin E. Martin */ #include "glheader.h" @@ -44,7 +49,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "drirenderbuffer.h" - #if DEBUG_LOCKING char *prevLockFile = NULL; int prevLockLine = 0; @@ -52,17 +56,15 @@ int prevLockLine = 0; /* Turn on/off page flipping according to the flags in the sarea: */ -static void -radeonUpdatePageFlipping( radeonContextPtr rmesa ) +static void radeonUpdatePageFlipping(radeonContextPtr rmesa) { - rmesa->doPageFlip = rmesa->sarea->pfState; - if (rmesa->glCtx->WinSysDrawBuffer) { - driFlipRenderbuffers(rmesa->glCtx->WinSysDrawBuffer, - rmesa->sarea->pfCurrentPage); - } + rmesa->doPageFlip = rmesa->sarea->pfState; + if (rmesa->glCtx->WinSysDrawBuffer) { + driFlipRenderbuffers(rmesa->glCtx->WinSysDrawBuffer, + rmesa->sarea->pfCurrentPage); + } } - /* Update the hardware state. This is called if another context has * grabbed the hardware lock, which includes the X server. This * function also updates the driver's window state after the X server @@ -71,51 +73,52 @@ radeonUpdatePageFlipping( radeonContextPtr rmesa ) * the hardware lock when it changes the window state, this routine will * automatically be called after such a change. */ -void radeonGetLock( radeonContextPtr rmesa, GLuint flags ) +void radeonGetLock(radeonContextPtr rmesa, GLuint flags) { - __DRIdrawablePrivate *const drawable = rmesa->dri.drawable; - __DRIdrawablePrivate *const readable = rmesa->dri.readable; - __DRIscreenPrivate *sPriv = rmesa->dri.screen; - drm_radeon_sarea_t *sarea = rmesa->sarea; - - drmGetLock( rmesa->dri.fd, rmesa->dri.hwContext, flags ); - - /* The window might have moved, so we might need to get new clip - * rects. - * - * NOTE: This releases and regrabs the hw lock to allow the X server - * to respond to the DRI protocol request for new drawable info. - * Since the hardware state depends on having the latest drawable - * clip rects, all state checking must be done _after_ this call. - */ - DRI_VALIDATE_DRAWABLE_INFO( sPriv, drawable ); - if (drawable != readable) { - DRI_VALIDATE_DRAWABLE_INFO( sPriv, readable ); - } - - if ( rmesa->lastStamp != drawable->lastStamp ) { - radeonUpdatePageFlipping( rmesa ); - radeonSetCliprects( rmesa ); - radeonUpdateViewportOffset( rmesa->glCtx ); - driUpdateFramebufferSize(rmesa->glCtx, drawable); - } - - RADEON_STATECHANGE( rmesa, ctx ); - if (rmesa->sarea->tiling_enabled) { - rmesa->hw.ctx.cmd[CTX_RB3D_COLORPITCH] |= RADEON_COLOR_TILE_ENABLE; - } - else { - rmesa->hw.ctx.cmd[CTX_RB3D_COLORPITCH] &= ~RADEON_COLOR_TILE_ENABLE; - } - - if ( sarea->ctx_owner != rmesa->dri.hwContext ) { - int i; - sarea->ctx_owner = rmesa->dri.hwContext; - - for ( i = 0 ; i < rmesa->nr_heaps ; i++ ) { - DRI_AGE_TEXTURES( rmesa->texture_heaps[ i ] ); - } - } - - rmesa->lost_context = GL_TRUE; + __DRIdrawablePrivate *const drawable = rmesa->dri.drawable; + __DRIdrawablePrivate *const readable = rmesa->dri.readable; + __DRIscreenPrivate *sPriv = rmesa->dri.screen; + drm_radeon_sarea_t *sarea = rmesa->sarea; + + drmGetLock(rmesa->dri.fd, rmesa->dri.hwContext, flags); + + /* The window might have moved, so we might need to get new clip + * rects. + * + * NOTE: This releases and regrabs the hw lock to allow the X server + * to respond to the DRI protocol request for new drawable info. + * Since the hardware state depends on having the latest drawable + * clip rects, all state checking must be done _after_ this call. + */ + DRI_VALIDATE_DRAWABLE_INFO(sPriv, drawable); + if (drawable != readable) { + DRI_VALIDATE_DRAWABLE_INFO(sPriv, readable); + } + + if (rmesa->lastStamp != drawable->lastStamp) { + radeonUpdatePageFlipping(rmesa); + radeonSetCliprects(rmesa); + radeonUpdateViewportOffset(rmesa->glCtx); + driUpdateFramebufferSize(rmesa->glCtx, drawable); + } + + RADEON_STATECHANGE(rmesa, ctx); + if (rmesa->sarea->tiling_enabled) { + rmesa->hw.ctx.cmd[CTX_RB3D_COLORPITCH] |= + RADEON_COLOR_TILE_ENABLE; + } else { + rmesa->hw.ctx.cmd[CTX_RB3D_COLORPITCH] &= + ~RADEON_COLOR_TILE_ENABLE; + } + + if (sarea->ctx_owner != rmesa->dri.hwContext) { + int i; + sarea->ctx_owner = rmesa->dri.hwContext; + + for (i = 0; i < rmesa->nr_heaps; i++) { + DRI_AGE_TEXTURES(rmesa->texture_heaps[i]); + } + } + + rmesa->lost_context = GL_TRUE; } diff --git a/src/mesa/drivers/dri/radeon/radeon_lock.h b/src/mesa/drivers/dri/radeon/radeon_lock.h index 4e8617eb8f1..3ba69e86c1c 100644 --- a/src/mesa/drivers/dri/radeon/radeon_lock.h +++ b/src/mesa/drivers/dri/radeon/radeon_lock.h @@ -1,8 +1,12 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/radeon/radeon_lock.h,v 1.3 2002/10/30 12:51:55 alanh Exp $ */ /************************************************************************** Copyright 2000, 2001 ATI Technologies Inc., Ontario, Canada, and VA Linux Systems Inc., Fremont, California. +Copyright (C) The Weather Channel, Inc. 2002. All Rights Reserved. + +The Weather Channel (TM) funded Tungsten Graphics to develop the +initial release of the Radeon 8500 driver under the XFree86 license. +This notice must be preserved. All Rights Reserved. @@ -30,8 +34,9 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* * Authors: - * Kevin E. Martin * Gareth Hughes + * Keith Whitwell + * Kevin E. Martin */ #ifndef __RADEON_LOCK_H__ @@ -83,7 +88,6 @@ extern int prevLockLine; * do not do any drawing !!! */ - /* Lock the hardware and validate our state. */ #define LOCK_HARDWARE( rmesa ) \ -- cgit v1.2.3 From 5a09ea01e06a648b37eb167914fb1549e066326d Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Fri, 11 May 2007 22:21:19 +0000 Subject: r300: Reduced the diff on radeon_lock.[ch]. --- src/mesa/drivers/dri/r300/radeon_lock.c | 49 +++++++++++-------------------- src/mesa/drivers/dri/r300/radeon_lock.h | 44 +++++++++++++-------------- src/mesa/drivers/dri/radeon/radeon_lock.h | 4 +-- 3 files changed, 41 insertions(+), 56 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/radeon_lock.c b/src/mesa/drivers/dri/r300/radeon_lock.c index 978d2fae0cc..bc3c2d6c6b3 100644 --- a/src/mesa/drivers/dri/r300/radeon_lock.c +++ b/src/mesa/drivers/dri/r300/radeon_lock.c @@ -84,36 +84,6 @@ void radeonUpdatePageFlipping(radeonContextPtr rmesa) } } -/** - * Called by radeonGetLock() after the lock has been obtained. - */ -static void r300RegainedLock(radeonContextPtr rmesa) -{ - int i; - __DRIdrawablePrivate *const drawable = rmesa->dri.drawable; - r300ContextPtr r300 = (r300ContextPtr) rmesa; - drm_radeon_sarea_t *sarea = rmesa->sarea; - - if (rmesa->lastStamp != drawable->lastStamp) { - radeonUpdatePageFlipping(rmesa); - radeonSetCliprects(rmesa); -#if 1 - r300UpdateViewportOffset(rmesa->glCtx); - driUpdateFramebufferSize(rmesa->glCtx, drawable); -#else - radeonUpdateScissor(rmesa->glCtx); -#endif - } - - if (sarea->ctx_owner != rmesa->dri.hwContext) { - sarea->ctx_owner = rmesa->dri.hwContext; - - for (i = 0; i < r300->nr_heaps; i++) { - DRI_AGE_TEXTURES(r300->texture_heaps[i]); - } - } -} - /* Update the hardware state. This is called if another context has * grabbed the hardware lock, which includes the X server. This * function also updates the driver's window state after the X server @@ -127,6 +97,8 @@ void radeonGetLock(radeonContextPtr rmesa, GLuint flags) __DRIdrawablePrivate *const drawable = rmesa->dri.drawable; __DRIdrawablePrivate *const readable = rmesa->dri.readable; __DRIscreenPrivate *sPriv = rmesa->dri.screen; + drm_radeon_sarea_t *sarea = rmesa->sarea; + r300ContextPtr r300 = (r300ContextPtr) rmesa; assert(drawable != NULL); @@ -145,8 +117,21 @@ void radeonGetLock(radeonContextPtr rmesa, GLuint flags) DRI_VALIDATE_DRAWABLE_INFO(sPriv, readable); } - if (IS_R300_CLASS(rmesa->radeonScreen)) - r300RegainedLock(rmesa); + if (rmesa->lastStamp != drawable->lastStamp) { + radeonUpdatePageFlipping(rmesa); + radeonSetCliprects(rmesa); + r300UpdateViewportOffset(rmesa->glCtx); + driUpdateFramebufferSize(rmesa->glCtx, drawable); + } + + if (sarea->ctx_owner != rmesa->dri.hwContext) { + int i; + + sarea->ctx_owner = rmesa->dri.hwContext; + for (i = 0; i < r300->nr_heaps; i++) { + DRI_AGE_TEXTURES(r300->texture_heaps[i]); + } + } rmesa->lost_context = GL_TRUE; } diff --git a/src/mesa/drivers/dri/r300/radeon_lock.h b/src/mesa/drivers/dri/r300/radeon_lock.h index 2a358e9bdd6..e131967e423 100644 --- a/src/mesa/drivers/dri/r300/radeon_lock.h +++ b/src/mesa/drivers/dri/r300/radeon_lock.h @@ -47,8 +47,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #endif #include "radeon_context.h" -extern void radeonGetLock(radeonContextPtr radeon, GLuint flags); -extern void radeonUpdatePageFlipping(radeonContextPtr radeon); +extern void radeonGetLock(radeonContextPtr rmesa, GLuint flags); +extern void radeonUpdatePageFlipping(radeonContextPtr rmesa); /* Turn DEBUG_LOCKING on to find locking conflicts. */ @@ -72,11 +72,11 @@ extern int prevLockLine; #define DEBUG_CHECK_LOCK() \ do { \ - if ( prevLockFile ) { \ - fprintf( stderr, \ + if (prevLockFile) { \ + fprintf(stderr, \ "LOCK SET!\n\tPrevious %s:%d\n\tCurrent: %s:%d\n", \ - prevLockFile, prevLockLine, __FILE__, __LINE__ ); \ - exit( 1 ); \ + prevLockFile, prevLockLine, __FILE__, __LINE__); \ + exit(1); \ } \ } while (0) @@ -96,37 +96,37 @@ extern int prevLockLine; /* Lock the hardware and validate our state. */ -#define LOCK_HARDWARE( radeon ) \ +#define LOCK_HARDWARE( rmesa ) \ do { \ char __ret = 0; \ DEBUG_CHECK_LOCK(); \ - DRM_CAS( (radeon)->dri.hwLock, (radeon)->dri.hwContext, \ - (DRM_LOCK_HELD | (radeon)->dri.hwContext), __ret ); \ - if ( __ret ) \ - radeonGetLock( (radeon), 0 ); \ + DRM_CAS(rmesa->dri.hwLock, rmesa->dri.hwContext, \ + (DRM_LOCK_HELD | rmesa->dri.hwContext), __ret); \ + if (__ret) \ + radeonGetLock(rmesa, 0); \ DEBUG_LOCK(); \ } while (0) #if R200_MERGED -#define UNLOCK_HARDWARE( radeon ) \ +#define UNLOCK_HARDWARE( rmesa ) \ do { \ - DRM_UNLOCK( (radeon)->dri.fd, \ - (radeon)->dri.hwLock, \ - (radeon)->dri.hwContext ); \ + DRM_UNLOCK(rmesa->dri.fd, \ + rmesa->dri.hwLock, \ + rmesa->dri.hwContext); \ DEBUG_RESET(); \ - if (IS_R200_CLASS(radeon->radeonScreen)) { \ - r200ContextPtr __r200 = (r200ContextPtr)(radeon); \ + if (IS_R200_CLASS(rmesa->radeonScreen)) { \ + r200ContextPtr __r200 = (r200ContextPtr)rmesa; \ if (__r200->save_on_next_unlock) \ - r200SaveHwState( __r200 ); \ + r200SaveHwState(__r200); \ __r200->save_on_next_unlock = GL_FALSE; \ } \ } while (0) #else -#define UNLOCK_HARDWARE( radeon ) \ +#define UNLOCK_HARDWARErmesa \ do { \ - DRM_UNLOCK( (radeon)->dri.fd, \ - (radeon)->dri.hwLock, \ - (radeon)->dri.hwContext ); \ + DRM_UNLOCK(rmesa->dri.fd, \ + rmesa->dri.hwLock, \ + rmesa->dri.hwContext); \ DEBUG_RESET(); \ } while (0) #endif diff --git a/src/mesa/drivers/dri/radeon/radeon_lock.h b/src/mesa/drivers/dri/radeon/radeon_lock.h index 3ba69e86c1c..e793541e3f0 100644 --- a/src/mesa/drivers/dri/radeon/radeon_lock.h +++ b/src/mesa/drivers/dri/radeon/radeon_lock.h @@ -42,7 +42,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef __RADEON_LOCK_H__ #define __RADEON_LOCK_H__ -extern void radeonGetLock( radeonContextPtr rmesa, GLuint flags ); +extern void radeonGetLock(radeonContextPtr rmesa, GLuint flags); /* Turn DEBUG_LOCKING on to find locking conflicts. */ @@ -109,4 +109,4 @@ extern int prevLockLine; DEBUG_RESET(); \ } while (0) -#endif /* __RADEON_LOCK_H__ */ +#endif /* __RADEON_LOCK_H__ */ -- cgit v1.2.3 From f405fbb36de167eb3294358d97e6f62a420f3bff Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Fri, 11 May 2007 22:23:31 +0000 Subject: r300: Corrected some macro errors from the previous commit. --- src/mesa/drivers/dri/r300/radeon_lock.h | 22 +++++++++++----------- src/mesa/drivers/dri/radeon/radeon_lock.h | 12 ++++++------ 2 files changed, 17 insertions(+), 17 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/radeon_lock.h b/src/mesa/drivers/dri/r300/radeon_lock.h index e131967e423..3c1c8c2a0de 100644 --- a/src/mesa/drivers/dri/r300/radeon_lock.h +++ b/src/mesa/drivers/dri/r300/radeon_lock.h @@ -100,22 +100,22 @@ extern int prevLockLine; do { \ char __ret = 0; \ DEBUG_CHECK_LOCK(); \ - DRM_CAS(rmesa->dri.hwLock, rmesa->dri.hwContext, \ - (DRM_LOCK_HELD | rmesa->dri.hwContext), __ret); \ + DRM_CAS((rmesa)->dri.hwLock, (rmesa)->dri.hwContext, \ + (DRM_LOCK_HELD | (rmesa)->dri.hwContext), __ret); \ if (__ret) \ - radeonGetLock(rmesa, 0); \ + radeonGetLock((rmesa), 0); \ DEBUG_LOCK(); \ } while (0) #if R200_MERGED #define UNLOCK_HARDWARE( rmesa ) \ do { \ - DRM_UNLOCK(rmesa->dri.fd, \ - rmesa->dri.hwLock, \ - rmesa->dri.hwContext); \ + DRM_UNLOCK((rmesa)->dri.fd, \ + (rmesa)->dri.hwLock, \ + (rmesa)->dri.hwContext); \ DEBUG_RESET(); \ - if (IS_R200_CLASS(rmesa->radeonScreen)) { \ - r200ContextPtr __r200 = (r200ContextPtr)rmesa; \ + if (IS_R200_CLASS((rmesa)->radeonScreen)) { \ + r200ContextPtr __r200 = (r200ContextPtr)(rmesa); \ if (__r200->save_on_next_unlock) \ r200SaveHwState(__r200); \ __r200->save_on_next_unlock = GL_FALSE; \ @@ -124,9 +124,9 @@ extern int prevLockLine; #else #define UNLOCK_HARDWARErmesa \ do { \ - DRM_UNLOCK(rmesa->dri.fd, \ - rmesa->dri.hwLock, \ - rmesa->dri.hwContext); \ + DRM_UNLOCK((rmesa)->dri.fd, \ + (rmesa)->dri.hwLock, \ + (rmesa)->dri.hwContext); \ DEBUG_RESET(); \ } while (0) #endif diff --git a/src/mesa/drivers/dri/radeon/radeon_lock.h b/src/mesa/drivers/dri/radeon/radeon_lock.h index e793541e3f0..86e96aa7d2c 100644 --- a/src/mesa/drivers/dri/radeon/radeon_lock.h +++ b/src/mesa/drivers/dri/radeon/radeon_lock.h @@ -94,18 +94,18 @@ extern int prevLockLine; do { \ char __ret = 0; \ DEBUG_CHECK_LOCK(); \ - DRM_CAS( rmesa->dri.hwLock, rmesa->dri.hwContext, \ - (DRM_LOCK_HELD | rmesa->dri.hwContext), __ret ); \ + DRM_CAS( (rmesa)->dri.hwLock, (rmesa)->dri.hwContext, \ + (DRM_LOCK_HELD | (rmesa)->dri.hwContext), __ret ); \ if ( __ret ) \ - radeonGetLock( rmesa, 0 ); \ + radeonGetLock( (rmesa), 0 ); \ DEBUG_LOCK(); \ } while (0) #define UNLOCK_HARDWARE( rmesa ) \ do { \ - DRM_UNLOCK( rmesa->dri.fd, \ - rmesa->dri.hwLock, \ - rmesa->dri.hwContext ); \ + DRM_UNLOCK( (rmesa)->dri.fd, \ + (rmesa)->dri.hwLock, \ + (rmesa)->dri.hwContext ); \ DEBUG_RESET(); \ } while (0) -- cgit v1.2.3 From 93f9e61f433788cd70acbe2a8fbdc6a4f5fd0881 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Fri, 11 May 2007 22:26:47 +0000 Subject: r300: Corrected another error; regexp replaced something it shouldn't have. --- src/mesa/drivers/dri/r300/radeon_lock.h | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/radeon_lock.h b/src/mesa/drivers/dri/r300/radeon_lock.h index 3c1c8c2a0de..c47adc9575b 100644 --- a/src/mesa/drivers/dri/r300/radeon_lock.h +++ b/src/mesa/drivers/dri/r300/radeon_lock.h @@ -107,27 +107,12 @@ extern int prevLockLine; DEBUG_LOCK(); \ } while (0) -#if R200_MERGED #define UNLOCK_HARDWARE( rmesa ) \ do { \ DRM_UNLOCK((rmesa)->dri.fd, \ (rmesa)->dri.hwLock, \ (rmesa)->dri.hwContext); \ DEBUG_RESET(); \ - if (IS_R200_CLASS((rmesa)->radeonScreen)) { \ - r200ContextPtr __r200 = (r200ContextPtr)(rmesa); \ - if (__r200->save_on_next_unlock) \ - r200SaveHwState(__r200); \ - __r200->save_on_next_unlock = GL_FALSE; \ - } \ } while (0) -#else -#define UNLOCK_HARDWARErmesa \ - do { \ - DRM_UNLOCK((rmesa)->dri.fd, \ - (rmesa)->dri.hwLock, \ - (rmesa)->dri.hwContext); \ - DEBUG_RESET(); \ - } while (0) -#endif + #endif /* __RADEON_LOCK_H__ */ -- cgit v1.2.3 From b8b0dd1e2056742401fe610d205f6272b313dc63 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Fri, 11 May 2007 23:03:40 +0000 Subject: Revert "r300: Merged radeon_span.c." This reverts commit 0aa998b2ab6fdfe139b54de9868e2383440685d0. --- src/mesa/drivers/dri/r300/.gitignore | 2 +- src/mesa/drivers/dri/r300/Makefile | 2 +- src/mesa/drivers/dri/r300/radeon_span.c | 321 ++++++++++++++++++++++++++++++ src/mesa/drivers/dri/radeon/radeon_span.c | 7 +- 4 files changed, 324 insertions(+), 8 deletions(-) create mode 100644 src/mesa/drivers/dri/r300/radeon_span.c (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/.gitignore b/src/mesa/drivers/dri/r300/.gitignore index 3a308633597..3689a6a78e5 100644 --- a/src/mesa/drivers/dri/r300/.gitignore +++ b/src/mesa/drivers/dri/r300/.gitignore @@ -1,4 +1,4 @@ radeon_chipset.h radeon_screen.[ch] -radeon_span.[ch] +radeon_span.h server diff --git a/src/mesa/drivers/dri/r300/Makefile b/src/mesa/drivers/dri/r300/Makefile index 46b38a944a3..c1d223c7600 100644 --- a/src/mesa/drivers/dri/r300/Makefile +++ b/src/mesa/drivers/dri/r300/Makefile @@ -25,6 +25,7 @@ DRIVER_SOURCES = \ radeon_context.c \ radeon_ioctl.c \ radeon_lock.c \ + radeon_span.c \ radeon_state.c \ r300_mem.c \ \ @@ -59,7 +60,6 @@ COMMON_SYMLINKS = \ radeon_chipset.h \ radeon_screen.c \ radeon_screen.h \ - radeon_span.c \ radeon_span.h ##### TARGETS ##### diff --git a/src/mesa/drivers/dri/r300/radeon_span.c b/src/mesa/drivers/dri/r300/radeon_span.c new file mode 100644 index 00000000000..eae09d6b35e --- /dev/null +++ b/src/mesa/drivers/dri/r300/radeon_span.c @@ -0,0 +1,321 @@ +/************************************************************************** + +Copyright (C) The Weather Channel, Inc. 2002. All Rights Reserved. +Copyright 2000, 2001 ATI Technologies Inc., Ontario, Canada, and + VA Linux Systems Inc., Fremont, California. + +The Weather Channel (TM) funded Tungsten Graphics to develop the +initial release of the Radeon 8500 driver under the XFree86 license. +This notice must be preserved. + +All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice (including the +next paragraph) shall be included in all copies or substantial +portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +**************************************************************************/ + +/* + * Authors: + * Kevin E. Martin + * Gareth Hughes + * Keith Whitwell + * + */ + +#include "glheader.h" +#include "swrast/swrast.h" + +#include "r300_state.h" +#include "radeon_ioctl.h" +#include "r300_ioctl.h" +#include "radeon_span.h" + +#include "drirenderbuffer.h" + +#define DBG 0 + +/* + * Note that all information needed to access pixels in a renderbuffer + * should be obtained through the gl_renderbuffer parameter, not per-context + * information. + */ +#define LOCAL_VARS \ + driRenderbuffer *drb = (driRenderbuffer *) rb; \ + const __DRIdrawablePrivate *dPriv = drb->dPriv; \ + const GLuint bottom = dPriv->h - 1; \ + GLubyte *buf = (GLubyte *) drb->flippedData \ + + (dPriv->y * drb->flippedPitch + dPriv->x) * drb->cpp; \ + GLuint p; \ + (void) p; + +#define LOCAL_DEPTH_VARS \ + driRenderbuffer *drb = (driRenderbuffer *) rb; \ + const __DRIdrawablePrivate *dPriv = drb->dPriv; \ + const GLuint bottom = dPriv->h - 1; \ + GLuint xo = dPriv->x; \ + GLuint yo = dPriv->y; \ + GLubyte *buf = (GLubyte *) drb->Base.Data; + +#define LOCAL_STENCIL_VARS LOCAL_DEPTH_VARS + +#define Y_FLIP(Y) (bottom - (Y)) + +#define HW_LOCK() + +#define HW_UNLOCK() + +/* ================================================================ + * Color buffer + */ + +/* 16 bit, RGB565 color spanline and pixel functions + */ +#define SPANTMP_PIXEL_FMT GL_RGB +#define SPANTMP_PIXEL_TYPE GL_UNSIGNED_SHORT_5_6_5 + +#define TAG(x) radeon##x##_RGB565 +#define TAG2(x,y) radeon##x##_RGB565##y +#define GET_PTR(X,Y) (buf + ((Y) * drb->flippedPitch + (X)) * 2) +#include "spantmp2.h" + +/* 32 bit, ARGB8888 color spanline and pixel functions + */ +#define SPANTMP_PIXEL_FMT GL_BGRA +#define SPANTMP_PIXEL_TYPE GL_UNSIGNED_INT_8_8_8_8_REV + +#define TAG(x) radeon##x##_ARGB8888 +#define TAG2(x,y) radeon##x##_ARGB8888##y +#define GET_PTR(X,Y) (buf + ((Y) * drb->flippedPitch + (X)) * 4) +#include "spantmp2.h" + +/* ================================================================ + * Depth buffer + */ + +/* The Radeon family has depth tiling on all the time, so we have to convert + * the x,y coordinates into the memory bus address (mba) in the same + * manner as the engine. In each case, the linear block address (ba) + * is calculated, and then wired with x and y to produce the final + * memory address. + * The chip will do address translation on its own if the surface registers + * are set up correctly. It is not quite enough to get it working with hyperz + * too... + */ + +static GLuint radeon_mba_z32(const driRenderbuffer * drb, GLint x, GLint y) +{ + GLuint pitch = drb->pitch; + if (drb->depthHasSurface) { + return 4 * (x + y * pitch); + } else { + GLuint ba, address = 0; /* a[0..1] = 0 */ + +#ifdef COMPILE_R300 + ba = (y / 8) * (pitch / 8) + (x / 8); +#else + ba = (y / 16) * (pitch / 16) + (x / 16); +#endif + + address |= (x & 0x7) << 2; /* a[2..4] = x[0..2] */ + address |= (y & 0x3) << 5; /* a[5..6] = y[0..1] */ + address |= (((x & 0x10) >> 2) ^ (y & 0x4)) << 5; /* a[7] = x[4] ^ y[2] */ + address |= (ba & 0x3) << 8; /* a[8..9] = ba[0..1] */ + + address |= (y & 0x8) << 7; /* a[10] = y[3] */ + address |= (((x & 0x8) << 1) ^ (y & 0x10)) << 7; /* a[11] = x[3] ^ y[4] */ + address |= (ba & ~0x3) << 10; /* a[12..] = ba[2..] */ + + return address; + } +} + +static INLINE GLuint +radeon_mba_z16(const driRenderbuffer * drb, GLint x, GLint y) +{ + GLuint pitch = drb->pitch; + if (drb->depthHasSurface) { + return 2 * (x + y * pitch); + } else { + GLuint ba, address = 0; /* a[0] = 0 */ + + ba = (y / 16) * (pitch / 32) + (x / 32); + + address |= (x & 0x7) << 1; /* a[1..3] = x[0..2] */ + address |= (y & 0x7) << 4; /* a[4..6] = y[0..2] */ + address |= (x & 0x8) << 4; /* a[7] = x[3] */ + address |= (ba & 0x3) << 8; /* a[8..9] = ba[0..1] */ + address |= (y & 0x8) << 7; /* a[10] = y[3] */ + address |= ((x & 0x10) ^ (y & 0x10)) << 7; /* a[11] = x[4] ^ y[4] */ + address |= (ba & ~0x3) << 10; /* a[12..] = ba[2..] */ + + return address; + } +} + +/* 16-bit depth buffer functions + */ +#define WRITE_DEPTH( _x, _y, d ) \ + *(GLushort *)(buf + radeon_mba_z16( drb, _x + xo, _y + yo )) = d; + +#define READ_DEPTH( d, _x, _y ) \ + d = *(GLushort *)(buf + radeon_mba_z16( drb, _x + xo, _y + yo )); + +#define TAG(x) radeon##x##_z16 +#include "depthtmp.h" + +/* 24 bit depth, 8 bit stencil depthbuffer functions + * + * Careful: It looks like the R300 uses ZZZS byte order while the R200 + * uses SZZZ for 24 bit depth, 8 bit stencil mode. + */ +#ifdef COMPILE_R300 +#define WRITE_DEPTH( _x, _y, d ) \ +do { \ + GLuint offset = radeon_mba_z32( drb, _x + xo, _y + yo ); \ + GLuint tmp = *(GLuint *)(buf + offset); \ + tmp &= 0x000000ff; \ + tmp |= ((d << 8) & 0xffffff00); \ + *(GLuint *)(buf + offset) = tmp; \ +} while (0) +#else +#define WRITE_DEPTH( _x, _y, d ) \ +do { \ + GLuint offset = radeon_mba_z32( drb, _x + xo, _y + yo ); \ + GLuint tmp = *(GLuint *)(buf + offset); \ + tmp &= 0xff000000; \ + tmp |= ((d) & 0x00ffffff); \ + *(GLuint *)(buf + offset) = tmp; \ +} while (0) +#endif + +#ifdef COMPILE_R300 +#define READ_DEPTH( d, _x, _y ) \ + do { \ + d = (*(GLuint *)(buf + radeon_mba_z32( drb, _x + xo, \ + _y + yo )) & 0xffffff00) >> 8; \ + }while(0) +#else +#define READ_DEPTH( d, _x, _y ) \ + d = *(GLuint *)(buf + radeon_mba_z32( drb, _x + xo, \ + _y + yo )) & 0x00ffffff; +#endif + +#define TAG(x) radeon##x##_z24_s8 +#include "depthtmp.h" + +/* ================================================================ + * Stencil buffer + */ + +/* 24 bit depth, 8 bit stencil depthbuffer functions + */ +#ifdef COMPILE_R300 +#define WRITE_STENCIL( _x, _y, d ) \ +do { \ + GLuint offset = radeon_mba_z32( drb, _x + xo, _y + yo ); \ + GLuint tmp = *(GLuint *)(buf + offset); \ + tmp &= 0xffffff00; \ + tmp |= (d) & 0xff; \ + *(GLuint *)(buf + offset) = tmp; \ +} while (0) +#else +#define WRITE_STENCIL( _x, _y, d ) \ +do { \ + GLuint offset = radeon_mba_z32( drb, _x + xo, _y + yo ); \ + GLuint tmp = *(GLuint *)(buf + offset); \ + tmp &= 0x00ffffff; \ + tmp |= (((d) & 0xff) << 24); \ + *(GLuint *)(buf + offset) = tmp; \ +} while (0) +#endif + +#ifdef COMPILE_R300 +#define READ_STENCIL( d, _x, _y ) \ +do { \ + GLuint offset = radeon_mba_z32( drb, _x + xo, _y + yo ); \ + GLuint tmp = *(GLuint *)(buf + offset); \ + d = tmp & 0x000000ff; \ +} while (0) +#else +#define READ_STENCIL( d, _x, _y ) \ +do { \ + GLuint offset = radeon_mba_z32( drb, _x + xo, _y + yo ); \ + GLuint tmp = *(GLuint *)(buf + offset); \ + d = (tmp & 0xff000000) >> 24; \ +} while (0) +#endif + +#define TAG(x) radeon##x##_z24_s8 +#include "stenciltmp.h" + +/* Move locking out to get reasonable span performance (10x better + * than doing this in HW_LOCK above). WaitForIdle() is the main + * culprit. + */ + +static void radeonSpanRenderStart(GLcontext * ctx) +{ + radeonContextPtr rmesa = RADEON_CONTEXT(ctx); +#ifdef COMPILE_R300 + r300ContextPtr r300 = (r300ContextPtr) rmesa; + R300_FIREVERTICES(r300); +#else + RADEON_FIREVERTICES(rmesa); +#endif + LOCK_HARDWARE(rmesa); + radeonWaitForIdleLocked(rmesa); +} + +static void radeonSpanRenderFinish(GLcontext * ctx) +{ + radeonContextPtr rmesa = RADEON_CONTEXT(ctx); + _swrast_flush(ctx); + UNLOCK_HARDWARE(rmesa); +} + +void radeonInitSpanFuncs(GLcontext * ctx) +{ + struct swrast_device_driver *swdd = + _swrast_GetDeviceDriverReference(ctx); + swdd->SpanRenderStart = radeonSpanRenderStart; + swdd->SpanRenderFinish = radeonSpanRenderFinish; +} + +/** + * Plug in the Get/Put routines for the given driRenderbuffer. + */ +void radeonSetSpanFunctions(driRenderbuffer * drb, const GLvisual * vis) +{ + if (drb->Base.InternalFormat == GL_RGBA) { + if (vis->redBits == 5 && vis->greenBits == 6 + && vis->blueBits == 5) { + radeonInitPointers_RGB565(&drb->Base); + } else { + radeonInitPointers_ARGB8888(&drb->Base); + } + } else if (drb->Base.InternalFormat == GL_DEPTH_COMPONENT16) { + radeonInitDepthPointers_z16(&drb->Base); + } else if (drb->Base.InternalFormat == GL_DEPTH_COMPONENT24) { + radeonInitDepthPointers_z24_s8(&drb->Base); + } else if (drb->Base.InternalFormat == GL_STENCIL_INDEX8_EXT) { + radeonInitStencilPointers_z24_s8(&drb->Base); + } +} diff --git a/src/mesa/drivers/dri/radeon/radeon_span.c b/src/mesa/drivers/dri/radeon/radeon_span.c index 4551190d10c..732a85ecf0b 100644 --- a/src/mesa/drivers/dri/radeon/radeon_span.c +++ b/src/mesa/drivers/dri/radeon/radeon_span.c @@ -43,16 +43,11 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "glheader.h" #include "swrast/swrast.h" -#ifdef COMPILE_R300 -#include "r300_ioctl.h" -#include "r300_state.h" -#else #include "radeon_context.h" #include "radeon_ioctl.h" #include "radeon_state.h" -#include "radeon_tex.h" -#endif #include "radeon_span.h" +#include "radeon_tex.h" #include "drirenderbuffer.h" -- cgit v1.2.3 From 64b03f33eeb2f57f1c7a528d011137c6f2612fb0 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Fri, 11 May 2007 23:13:08 +0000 Subject: r300: Added insert_at_tail to the ALLOC_STATE macro. --- src/mesa/drivers/dri/r300/r300_cmdbuf.c | 102 ++++---------------------------- 1 file changed, 11 insertions(+), 91 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_cmdbuf.c b/src/mesa/drivers/dri/r300/r300_cmdbuf.c index 1aacf69a0aa..4bb9e32c474 100644 --- a/src/mesa/drivers/dri/r300/r300_cmdbuf.c +++ b/src/mesa/drivers/dri/r300/r300_cmdbuf.c @@ -270,6 +270,7 @@ CHECK(always, atom->cmd_size) r300->hw.ATOM.check = check_##CHK; \ r300->hw.ATOM.dirty = GL_FALSE; \ r300->hw.max_state_size += (SZ); \ + insert_at_tail(&r300->hw.atomlist, &r300->hw.ATOM); \ } while (0) /** * Allocate memory for the command buffer and initialize the state atom @@ -290,6 +291,10 @@ void r300InitCmdBuf(r300ContextPtr r300) fprintf(stderr, "Using %d maximum texture units..\n", mtu); } + /* Setup the atom linked list */ + make_empty_list(&r300->hw.atomlist); + r300->hw.atomlist.name = "atom-list"; + /* Initialize state atoms */ ALLOC_STATE(vpt, always, R300_VPT_CMDSIZE, "vpt", 0); r300->hw.vpt.cmd[R300_VPT_CMD_0] = cmdpacket0(R300_SE_VPORT_XSCALE, 6); @@ -301,10 +306,10 @@ void r300InitCmdBuf(r300ContextPtr r300) r300->hw.unk2134.cmd[0] = cmdpacket0(0x2134, 2); ALLOC_STATE(vap_cntl_status, always, 2, "vap_cntl_status", 0); r300->hw.vap_cntl_status.cmd[0] = cmdpacket0(R300_VAP_CNTL_STATUS, 1); - ALLOC_STATE(vir[0], variable, R300_VIR_CMDSIZE, "vir/0", 0); + ALLOC_STATE(vir[0], variable, R300_VIR_CMDSIZE, "vir[0]", 0); r300->hw.vir[0].cmd[R300_VIR_CMD_0] = cmdpacket0(R300_VAP_INPUT_ROUTE_0_0, 1); - ALLOC_STATE(vir[1], variable, R300_VIR_CMDSIZE, "vir/1", 1); + ALLOC_STATE(vir[1], variable, R300_VIR_CMDSIZE, "vir[1]", 1); r300->hw.vir[1].cmd[R300_VIR_CMD_0] = cmdpacket0(R300_VAP_INPUT_ROUTE_1_0, 1); ALLOC_STATE(vic, always, R300_VIC_CMDSIZE, "vic", 0); @@ -379,13 +384,13 @@ void r300InitCmdBuf(r300ContextPtr r300) r300->hw.fpt.cmd[R300_FPT_CMD_0] = cmdpacket0(R300_PFS_TEXI_0, 0); ALLOC_STATE(unk46A4, always, 6, "unk46A4", 0); r300->hw.unk46A4.cmd[0] = cmdpacket0(0x46A4, 5); - ALLOC_STATE(fpi[0], variable, R300_FPI_CMDSIZE, "fpi/0", 0); + ALLOC_STATE(fpi[0], variable, R300_FPI_CMDSIZE, "fpi[0]", 0); r300->hw.fpi[0].cmd[R300_FPI_CMD_0] = cmdpacket0(R300_PFS_INSTR0_0, 1); - ALLOC_STATE(fpi[1], variable, R300_FPI_CMDSIZE, "fpi/1", 1); + ALLOC_STATE(fpi[1], variable, R300_FPI_CMDSIZE, "fpi[1]", 1); r300->hw.fpi[1].cmd[R300_FPI_CMD_0] = cmdpacket0(R300_PFS_INSTR1_0, 1); - ALLOC_STATE(fpi[2], variable, R300_FPI_CMDSIZE, "fpi/2", 2); + ALLOC_STATE(fpi[2], variable, R300_FPI_CMDSIZE, "fpi[2]", 2); r300->hw.fpi[2].cmd[R300_FPI_CMD_0] = cmdpacket0(R300_PFS_INSTR2_0, 1); - ALLOC_STATE(fpi[3], variable, R300_FPI_CMDSIZE, "fpi/3", 3); + ALLOC_STATE(fpi[3], variable, R300_FPI_CMDSIZE, "fpi[3]", 3); r300->hw.fpi[3].cmd[R300_FPI_CMD_0] = cmdpacket0(R300_PFS_INSTR3_0, 1); ALLOC_STATE(fogs, always, R300_FOGS_CMDSIZE, "fogs", 0); r300->hw.fogs.cmd[R300_FOGS_CMD_0] = cmdpacket0(R300_RE_FOG_STATE, 1); @@ -475,91 +480,6 @@ void r300InitCmdBuf(r300ContextPtr r300) r300->hw.tex.border_color.cmd[R300_TEX_CMD_0] = cmdpacket0(R300_TX_BORDER_COLOR_0, 0); - /* Setup the atom linked list */ - make_empty_list(&r300->hw.atomlist); - r300->hw.atomlist.name = "atom-list"; - - insert_at_tail(&r300->hw.atomlist, &r300->hw.vpt); - insert_at_tail(&r300->hw.atomlist, &r300->hw.vap_cntl); - insert_at_tail(&r300->hw.atomlist, &r300->hw.vte); - insert_at_tail(&r300->hw.atomlist, &r300->hw.unk2134); - insert_at_tail(&r300->hw.atomlist, &r300->hw.vap_cntl_status); - insert_at_tail(&r300->hw.atomlist, &r300->hw.vir[0]); - insert_at_tail(&r300->hw.atomlist, &r300->hw.vir[1]); - insert_at_tail(&r300->hw.atomlist, &r300->hw.vic); - insert_at_tail(&r300->hw.atomlist, &r300->hw.unk21DC); - insert_at_tail(&r300->hw.atomlist, &r300->hw.unk221C); - insert_at_tail(&r300->hw.atomlist, &r300->hw.unk2220); - insert_at_tail(&r300->hw.atomlist, &r300->hw.unk2288); - insert_at_tail(&r300->hw.atomlist, &r300->hw.vof); - - if (has_tcl) - insert_at_tail(&r300->hw.atomlist, &r300->hw.pvs); - insert_at_tail(&r300->hw.atomlist, &r300->hw.gb_enable); - insert_at_tail(&r300->hw.atomlist, &r300->hw.gb_misc); - insert_at_tail(&r300->hw.atomlist, &r300->hw.txe); - insert_at_tail(&r300->hw.atomlist, &r300->hw.unk4200); - insert_at_tail(&r300->hw.atomlist, &r300->hw.unk4214); - insert_at_tail(&r300->hw.atomlist, &r300->hw.ps); - insert_at_tail(&r300->hw.atomlist, &r300->hw.unk4230); - insert_at_tail(&r300->hw.atomlist, &r300->hw.lcntl); - insert_at_tail(&r300->hw.atomlist, &r300->hw.unk4260); - insert_at_tail(&r300->hw.atomlist, &r300->hw.shade); - insert_at_tail(&r300->hw.atomlist, &r300->hw.polygon_mode); - insert_at_tail(&r300->hw.atomlist, &r300->hw.fogp); - insert_at_tail(&r300->hw.atomlist, &r300->hw.zbias_cntl); - insert_at_tail(&r300->hw.atomlist, &r300->hw.zbs); - insert_at_tail(&r300->hw.atomlist, &r300->hw.occlusion_cntl); - insert_at_tail(&r300->hw.atomlist, &r300->hw.cul); - insert_at_tail(&r300->hw.atomlist, &r300->hw.unk42C0); - insert_at_tail(&r300->hw.atomlist, &r300->hw.rc); - insert_at_tail(&r300->hw.atomlist, &r300->hw.ri); - insert_at_tail(&r300->hw.atomlist, &r300->hw.rr); - insert_at_tail(&r300->hw.atomlist, &r300->hw.unk43A4); - insert_at_tail(&r300->hw.atomlist, &r300->hw.unk43E8); - insert_at_tail(&r300->hw.atomlist, &r300->hw.fp); - insert_at_tail(&r300->hw.atomlist, &r300->hw.fpt); - insert_at_tail(&r300->hw.atomlist, &r300->hw.unk46A4); - insert_at_tail(&r300->hw.atomlist, &r300->hw.fpi[0]); - insert_at_tail(&r300->hw.atomlist, &r300->hw.fpi[1]); - insert_at_tail(&r300->hw.atomlist, &r300->hw.fpi[2]); - insert_at_tail(&r300->hw.atomlist, &r300->hw.fpi[3]); - insert_at_tail(&r300->hw.atomlist, &r300->hw.fogs); - insert_at_tail(&r300->hw.atomlist, &r300->hw.fogc); - insert_at_tail(&r300->hw.atomlist, &r300->hw.at); - insert_at_tail(&r300->hw.atomlist, &r300->hw.unk4BD8); - insert_at_tail(&r300->hw.atomlist, &r300->hw.fpp); - insert_at_tail(&r300->hw.atomlist, &r300->hw.unk4E00); - insert_at_tail(&r300->hw.atomlist, &r300->hw.bld); - insert_at_tail(&r300->hw.atomlist, &r300->hw.cmk); - insert_at_tail(&r300->hw.atomlist, &r300->hw.blend_color); - insert_at_tail(&r300->hw.atomlist, &r300->hw.cb); - insert_at_tail(&r300->hw.atomlist, &r300->hw.unk4E50); - insert_at_tail(&r300->hw.atomlist, &r300->hw.unk4E88); - insert_at_tail(&r300->hw.atomlist, &r300->hw.unk4EA0); - insert_at_tail(&r300->hw.atomlist, &r300->hw.zs); - insert_at_tail(&r300->hw.atomlist, &r300->hw.zstencil_format); - insert_at_tail(&r300->hw.atomlist, &r300->hw.zb); - insert_at_tail(&r300->hw.atomlist, &r300->hw.unk4F28); - insert_at_tail(&r300->hw.atomlist, &r300->hw.unk4F30); - insert_at_tail(&r300->hw.atomlist, &r300->hw.unk4F44); - insert_at_tail(&r300->hw.atomlist, &r300->hw.unk4F54); - - if (has_tcl) { - insert_at_tail(&r300->hw.atomlist, &r300->hw.vpi); - insert_at_tail(&r300->hw.atomlist, &r300->hw.vpp); - insert_at_tail(&r300->hw.atomlist, &r300->hw.vps); - } - - insert_at_tail(&r300->hw.atomlist, &r300->hw.tex.filter); - insert_at_tail(&r300->hw.atomlist, &r300->hw.tex.filter_1); - insert_at_tail(&r300->hw.atomlist, &r300->hw.tex.size); - insert_at_tail(&r300->hw.atomlist, &r300->hw.tex.format); - insert_at_tail(&r300->hw.atomlist, &r300->hw.tex.pitch); - insert_at_tail(&r300->hw.atomlist, &r300->hw.tex.offset); - insert_at_tail(&r300->hw.atomlist, &r300->hw.tex.chroma_key); - insert_at_tail(&r300->hw.atomlist, &r300->hw.tex.border_color); - r300->hw.is_dirty = GL_TRUE; r300->hw.all_dirty = GL_TRUE; -- cgit v1.2.3 From dac5303692726582d2fac2d9e9b620e3105ff8c3 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Fri, 11 May 2007 23:32:03 +0000 Subject: r300: Moved r300PackFloat24 near r300PackFloat32. --- src/mesa/drivers/dri/r300/r300_context.h | 31 +++++++++++++++++++++++++++++++ src/mesa/drivers/dri/r300/r300_state.c | 31 ------------------------------- 2 files changed, 31 insertions(+), 31 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_context.h b/src/mesa/drivers/dri/r300/r300_context.h index c287871b370..2408497c483 100644 --- a/src/mesa/drivers/dri/r300/r300_context.h +++ b/src/mesa/drivers/dri/r300/r300_context.h @@ -102,6 +102,37 @@ static __inline__ uint32_t r300PackFloat32(float fl) return u.u; } +/* This is probably wrong for some values, I need to test this + * some more. Range checking would be a good idea also.. + * + * But it works for most things. I'll fix it later if someone + * else with a better clue doesn't + */ +static __inline__ uint32_t r300PackFloat24(float f) +{ + float mantissa; + int exponent; + uint32_t float24 = 0; + + if (f == 0.0) + return 0; + + mantissa = frexpf(f, &exponent); + + /* Handle -ve */ + if (mantissa < 0) { + float24 |= (1 << 23); + mantissa = mantissa * -1.0; + } + /* Handle exponent, bias of 63 */ + exponent += 62; + float24 |= (exponent << 16); + /* Kill 7 LSB of mantissa */ + float24 |= (r300PackFloat32(mantissa) & 0x7FFFFF) >> 7; + + return float24; +} + /************ DMA BUFFERS **************/ /* Need refcounting on dma buffers: diff --git a/src/mesa/drivers/dri/r300/r300_state.c b/src/mesa/drivers/dri/r300/r300_state.c index 625797b4b9f..c45c571d7b3 100644 --- a/src/mesa/drivers/dri/r300/r300_state.c +++ b/src/mesa/drivers/dri/r300/r300_state.c @@ -1873,37 +1873,6 @@ void r300UpdateShaderStates(r300ContextPtr rmesa) r300SetupRSUnit(ctx); } -/* This is probably wrong for some values, I need to test this - * some more. Range checking would be a good idea also.. - * - * But it works for most things. I'll fix it later if someone - * else with a better clue doesn't - */ -static unsigned int r300PackFloat24(float f) -{ - float mantissa; - int exponent; - unsigned int float24 = 0; - - if (f == 0.0) - return 0; - - mantissa = frexpf(f, &exponent); - - /* Handle -ve */ - if (mantissa < 0) { - float24 |= (1 << 23); - mantissa = mantissa * -1.0; - } - /* Handle exponent, bias of 63 */ - exponent += 62; - float24 |= (exponent << 16); - /* Kill 7 LSB of mantissa */ - float24 |= (r300PackFloat32(mantissa) & 0x7FFFFF) >> 7; - - return float24; -} - void r300SetupPixelShader(r300ContextPtr rmesa) { GLcontext *ctx = rmesa->radeon.glCtx; -- cgit v1.2.3 From 3aad47679e14cf55b07fba5293b102d7ee6abc27 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Fri, 11 May 2007 23:33:47 +0000 Subject: r300: Removed the unused CPT macro. --- src/mesa/drivers/dri/r300/r300_context.h | 6 ------ 1 file changed, 6 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_context.h b/src/mesa/drivers/dri/r300/r300_context.h index 2408497c483..5e81ffaad3f 100644 --- a/src/mesa/drivers/dri/r300/r300_context.h +++ b/src/mesa/drivers/dri/r300/r300_context.h @@ -63,13 +63,10 @@ typedef struct r300_context *r300ContextPtr; #include "radeon_lock.h" #include "mm.h" -/* Checkpoint.. for convenience */ -#define CPT { fprintf(stderr, "%s:%s line %d\n", __FILE__, __FUNCTION__, __LINE__); } /* From http://gcc.gnu.org/onlinedocs/gcc-3.2.3/gcc/Variadic-Macros.html . I suppose we could inline this and use macro to fetch out __LINE__ and stuff in case we run into trouble with other compilers ... GLUE! */ -#if 1 #define WARN_ONCE(a, ...) { \ static int warn##__LINE__=1; \ if(warn##__LINE__){ \ @@ -81,9 +78,6 @@ typedef struct r300_context *r300ContextPtr; warn##__LINE__=0;\ } \ } -#else -#define WARN_ONCE(a, ...) {} -#endif #include "r300_vertprog.h" #include "r300_fragprog.h" -- cgit v1.2.3 From 56b99ace19cbe36df3e3995a299f28f99ba613fe Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Fri, 11 May 2007 23:35:37 +0000 Subject: r300: Removed unused FORCE_32BITS_ELTS define. --- src/mesa/drivers/dri/r300/r300_context.h | 5 ----- 1 file changed, 5 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_context.h b/src/mesa/drivers/dri/r300/r300_context.h index 5e81ffaad3f..07c3e37927e 100644 --- a/src/mesa/drivers/dri/r300/r300_context.h +++ b/src/mesa/drivers/dri/r300/r300_context.h @@ -49,11 +49,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define USER_BUFFERS -/* We don't handle 16 bits elts swapping yet */ -#ifdef MESA_BIG_ENDIAN -#define FORCE_32BITS_ELTS -#endif - //#define OPTIMIZE_ELTS struct r300_context; -- cgit v1.2.3 From 93881edb46fc95e1cfb4ded4e8a5db92612d3e4d Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Sat, 12 May 2007 00:14:33 +0000 Subject: r300: Perform the locking closer to the DRM texture upload call. This might help if with attaching GDB if the driver gets into a -EAGAIN loop. --- src/mesa/drivers/dri/r300/r300_texmem.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_texmem.c b/src/mesa/drivers/dri/r300/r300_texmem.c index eef5ff186f4..30f3886542f 100644 --- a/src/mesa/drivers/dri/r300/r300_texmem.c +++ b/src/mesa/drivers/dri/r300/r300_texmem.c @@ -469,12 +469,14 @@ static void r300UploadSubImage(r300ContextPtr rmesa, r300TexObjPtr t, } } - LOCK_HARDWARE(&rmesa->radeon); do { + LOCK_HARDWARE(&rmesa->radeon); ret = drmCommandWriteRead(rmesa->radeon.dri.fd, DRM_RADEON_TEXTURE, &tex, sizeof(drm_radeon_texture_t)); + UNLOCK_HARDWARE(&rmesa->radeon); + if (ret) { if (RADEON_DEBUG & DEBUG_IOCTL) fprintf(stderr, @@ -483,8 +485,6 @@ static void r300UploadSubImage(r300ContextPtr rmesa, r300TexObjPtr t, } } while (ret == -EAGAIN); - UNLOCK_HARDWARE(&rmesa->radeon); - if (ret) { fprintf(stderr, "DRM_RADEON_TEXTURE: return = %d\n", ret); fprintf(stderr, " offset=0x%08x\n", offset); -- cgit v1.2.3 From 5f1f1f5704d1336e7376e7e47a9a92868356b88d Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Sat, 12 May 2007 01:13:54 +0000 Subject: r300: Renamed r300DoEmitState to r300EmitAtoms. --- src/mesa/drivers/dri/r300/r300_cmdbuf.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_cmdbuf.c b/src/mesa/drivers/dri/r300/r300_cmdbuf.c index 4bb9e32c474..b4c94de9778 100644 --- a/src/mesa/drivers/dri/r300/r300_cmdbuf.c +++ b/src/mesa/drivers/dri/r300/r300_cmdbuf.c @@ -148,7 +148,7 @@ void r300PrintStateAtom(r300ContextPtr r300, struct r300_state_atom *state) * The caller must have ensured that there is enough space in the command * buffer. */ -static __inline__ void r300DoEmitState(r300ContextPtr r300, GLboolean dirty) +static __inline__ void r300EmitAtoms(r300ContextPtr r300, GLboolean dirty) { struct r300_state_atom *atom; uint32_t *dest; @@ -230,14 +230,14 @@ void r300EmitState(r300ContextPtr r300) if (RADEON_DEBUG & DEBUG_STATE) fprintf(stderr, "Begin reemit state\n"); - r300DoEmitState(r300, GL_FALSE); + r300EmitAtoms(r300, GL_FALSE); r300->cmdbuf.count_reemit = r300->cmdbuf.count_used; } if (RADEON_DEBUG & DEBUG_STATE) fprintf(stderr, "Begin dirty state\n"); - r300DoEmitState(r300, GL_TRUE); + r300EmitAtoms(r300, GL_TRUE); assert(r300->cmdbuf.count_used < r300->cmdbuf.size); -- cgit v1.2.3 From 6bae7d40f725be24df0be196fbb6bdcfd2aaa581 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Sat, 12 May 2007 01:53:56 +0000 Subject: r300: Removed the name argument to ALLOC_STATE; do the name via the macro. --- src/mesa/drivers/dri/r300/r300_cmdbuf.c | 152 ++++++++++++++++---------------- 1 file changed, 76 insertions(+), 76 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_cmdbuf.c b/src/mesa/drivers/dri/r300/r300_cmdbuf.c index b4c94de9778..f271d5819bb 100644 --- a/src/mesa/drivers/dri/r300/r300_cmdbuf.c +++ b/src/mesa/drivers/dri/r300/r300_cmdbuf.c @@ -261,11 +261,11 @@ CHECK(always, atom->cmd_size) CHECK(vpu, vpu_count(atom->cmd) ? (1 + vpu_count(atom->cmd) * 4) : 0) #undef packet0_count #undef vpu_count -#define ALLOC_STATE( ATOM, CHK, SZ, NM, IDX ) \ +#define ALLOC_STATE( ATOM, CHK, SZ, IDX ) \ do { \ r300->hw.ATOM.cmd_size = (SZ); \ r300->hw.ATOM.cmd = (uint32_t*)CALLOC((SZ) * sizeof(uint32_t)); \ - r300->hw.ATOM.name = (NM); \ + r300->hw.ATOM.name = #ATOM; \ r300->hw.ATOM.idx = (IDX); \ r300->hw.ATOM.check = check_##CHK; \ r300->hw.ATOM.dirty = GL_FALSE; \ @@ -296,187 +296,187 @@ void r300InitCmdBuf(r300ContextPtr r300) r300->hw.atomlist.name = "atom-list"; /* Initialize state atoms */ - ALLOC_STATE(vpt, always, R300_VPT_CMDSIZE, "vpt", 0); + ALLOC_STATE(vpt, always, R300_VPT_CMDSIZE, 0); r300->hw.vpt.cmd[R300_VPT_CMD_0] = cmdpacket0(R300_SE_VPORT_XSCALE, 6); - ALLOC_STATE(vap_cntl, always, 2, "vap_cntl", 0); + ALLOC_STATE(vap_cntl, always, 2, 0); r300->hw.vap_cntl.cmd[0] = cmdpacket0(R300_VAP_CNTL, 1); - ALLOC_STATE(vte, always, 3, "vte", 0); + ALLOC_STATE(vte, always, 3, 0); r300->hw.vte.cmd[0] = cmdpacket0(R300_SE_VTE_CNTL, 2); - ALLOC_STATE(unk2134, always, 3, "unk2134", 0); + ALLOC_STATE(unk2134, always, 3, 0); r300->hw.unk2134.cmd[0] = cmdpacket0(0x2134, 2); - ALLOC_STATE(vap_cntl_status, always, 2, "vap_cntl_status", 0); + ALLOC_STATE(vap_cntl_status, always, 2, 0); r300->hw.vap_cntl_status.cmd[0] = cmdpacket0(R300_VAP_CNTL_STATUS, 1); - ALLOC_STATE(vir[0], variable, R300_VIR_CMDSIZE, "vir[0]", 0); + ALLOC_STATE(vir[0], variable, R300_VIR_CMDSIZE, 0); r300->hw.vir[0].cmd[R300_VIR_CMD_0] = cmdpacket0(R300_VAP_INPUT_ROUTE_0_0, 1); - ALLOC_STATE(vir[1], variable, R300_VIR_CMDSIZE, "vir[1]", 1); + ALLOC_STATE(vir[1], variable, R300_VIR_CMDSIZE, 1); r300->hw.vir[1].cmd[R300_VIR_CMD_0] = cmdpacket0(R300_VAP_INPUT_ROUTE_1_0, 1); - ALLOC_STATE(vic, always, R300_VIC_CMDSIZE, "vic", 0); + ALLOC_STATE(vic, always, R300_VIC_CMDSIZE, 0); r300->hw.vic.cmd[R300_VIC_CMD_0] = cmdpacket0(R300_VAP_INPUT_CNTL_0, 2); - ALLOC_STATE(unk21DC, always, 2, "unk21DC", 0); + ALLOC_STATE(unk21DC, always, 2, 0); r300->hw.unk21DC.cmd[0] = cmdpacket0(0x21DC, 1); - ALLOC_STATE(unk221C, always, 2, "unk221C", 0); + ALLOC_STATE(unk221C, always, 2, 0); r300->hw.unk221C.cmd[0] = cmdpacket0(R300_VAP_UNKNOWN_221C, 1); - ALLOC_STATE(unk2220, always, 5, "unk2220", 0); + ALLOC_STATE(unk2220, always, 5, 0); r300->hw.unk2220.cmd[0] = cmdpacket0(0x2220, 4); - ALLOC_STATE(unk2288, always, 2, "unk2288", 0); + ALLOC_STATE(unk2288, always, 2, 0); r300->hw.unk2288.cmd[0] = cmdpacket0(R300_VAP_UNKNOWN_2288, 1); - ALLOC_STATE(vof, always, R300_VOF_CMDSIZE, "vof", 0); + ALLOC_STATE(vof, always, R300_VOF_CMDSIZE, 0); r300->hw.vof.cmd[R300_VOF_CMD_0] = cmdpacket0(R300_VAP_OUTPUT_VTX_FMT_0, 2); if (has_tcl) { - ALLOC_STATE(pvs, always, R300_PVS_CMDSIZE, "pvs", 0); + ALLOC_STATE(pvs, always, R300_PVS_CMDSIZE, 0); r300->hw.pvs.cmd[R300_PVS_CMD_0] = cmdpacket0(R300_VAP_PVS_CNTL_1, 3); } - ALLOC_STATE(gb_enable, always, 2, "gb_enable", 0); + ALLOC_STATE(gb_enable, always, 2, 0); r300->hw.gb_enable.cmd[0] = cmdpacket0(R300_GB_ENABLE, 1); - ALLOC_STATE(gb_misc, always, R300_GB_MISC_CMDSIZE, "gb_misc", 0); + ALLOC_STATE(gb_misc, always, R300_GB_MISC_CMDSIZE, 0); r300->hw.gb_misc.cmd[0] = cmdpacket0(R300_GB_MSPOS0, 5); - ALLOC_STATE(txe, always, R300_TXE_CMDSIZE, "txe", 0); + ALLOC_STATE(txe, always, R300_TXE_CMDSIZE, 0); r300->hw.txe.cmd[R300_TXE_CMD_0] = cmdpacket0(R300_TX_ENABLE, 1); - ALLOC_STATE(unk4200, always, 5, "unk4200", 0); + ALLOC_STATE(unk4200, always, 5, 0); r300->hw.unk4200.cmd[0] = cmdpacket0(0x4200, 4); - ALLOC_STATE(unk4214, always, 2, "unk4214", 0); + ALLOC_STATE(unk4214, always, 2, 0); r300->hw.unk4214.cmd[0] = cmdpacket0(0x4214, 1); - ALLOC_STATE(ps, always, R300_PS_CMDSIZE, "ps", 0); + ALLOC_STATE(ps, always, R300_PS_CMDSIZE, 0); r300->hw.ps.cmd[0] = cmdpacket0(R300_RE_POINTSIZE, 1); - ALLOC_STATE(unk4230, always, 4, "unk4230", 0); + ALLOC_STATE(unk4230, always, 4, 0); r300->hw.unk4230.cmd[0] = cmdpacket0(0x4230, 3); - ALLOC_STATE(lcntl, always, 2, "lcntl", 0); + ALLOC_STATE(lcntl, always, 2, 0); r300->hw.lcntl.cmd[0] = cmdpacket0(R300_RE_LINE_CNT, 1); - ALLOC_STATE(unk4260, always, 4, "unk4260", 0); + ALLOC_STATE(unk4260, always, 4, 0); r300->hw.unk4260.cmd[0] = cmdpacket0(0x4260, 3); - ALLOC_STATE(shade, always, 5, "shade", 0); + ALLOC_STATE(shade, always, 5, 0); r300->hw.shade.cmd[0] = cmdpacket0(R300_RE_SHADE, 4); - ALLOC_STATE(polygon_mode, always, 4, "polygon_mode", 0); + ALLOC_STATE(polygon_mode, always, 4, 0); r300->hw.polygon_mode.cmd[0] = cmdpacket0(R300_RE_POLYGON_MODE, 3); - ALLOC_STATE(fogp, always, 3, "fogp", 0); + ALLOC_STATE(fogp, always, 3, 0); r300->hw.fogp.cmd[0] = cmdpacket0(R300_RE_FOG_SCALE, 2); - ALLOC_STATE(zbias_cntl, always, 2, "zbias_cntl", 0); + ALLOC_STATE(zbias_cntl, always, 2, 0); r300->hw.zbias_cntl.cmd[0] = cmdpacket0(R300_RE_ZBIAS_CNTL, 1); - ALLOC_STATE(zbs, always, R300_ZBS_CMDSIZE, "zbs", 0); + ALLOC_STATE(zbs, always, R300_ZBS_CMDSIZE, 0); r300->hw.zbs.cmd[R300_ZBS_CMD_0] = cmdpacket0(R300_RE_ZBIAS_T_FACTOR, 4); - ALLOC_STATE(occlusion_cntl, always, 2, "occlusion_cntl", 0); + ALLOC_STATE(occlusion_cntl, always, 2, 0); r300->hw.occlusion_cntl.cmd[0] = cmdpacket0(R300_RE_OCCLUSION_CNTL, 1); - ALLOC_STATE(cul, always, R300_CUL_CMDSIZE, "cul", 0); + ALLOC_STATE(cul, always, R300_CUL_CMDSIZE, 0); r300->hw.cul.cmd[R300_CUL_CMD_0] = cmdpacket0(R300_RE_CULL_CNTL, 1); - ALLOC_STATE(unk42C0, always, 3, "unk42C0", 0); + ALLOC_STATE(unk42C0, always, 3, 0); r300->hw.unk42C0.cmd[0] = cmdpacket0(0x42C0, 2); - ALLOC_STATE(rc, always, R300_RC_CMDSIZE, "rc", 0); + ALLOC_STATE(rc, always, R300_RC_CMDSIZE, 0); r300->hw.rc.cmd[R300_RC_CMD_0] = cmdpacket0(R300_RS_CNTL_0, 2); - ALLOC_STATE(ri, always, R300_RI_CMDSIZE, "ri", 0); + ALLOC_STATE(ri, always, R300_RI_CMDSIZE, 0); r300->hw.ri.cmd[R300_RI_CMD_0] = cmdpacket0(R300_RS_INTERP_0, 8); - ALLOC_STATE(rr, variable, R300_RR_CMDSIZE, "rr", 0); + ALLOC_STATE(rr, variable, R300_RR_CMDSIZE, 0); r300->hw.rr.cmd[R300_RR_CMD_0] = cmdpacket0(R300_RS_ROUTE_0, 1); - ALLOC_STATE(unk43A4, always, 3, "unk43A4", 0); + ALLOC_STATE(unk43A4, always, 3, 0); r300->hw.unk43A4.cmd[0] = cmdpacket0(0x43A4, 2); - ALLOC_STATE(unk43E8, always, 2, "unk43E8", 0); + ALLOC_STATE(unk43E8, always, 2, 0); r300->hw.unk43E8.cmd[0] = cmdpacket0(0x43E8, 1); - ALLOC_STATE(fp, always, R300_FP_CMDSIZE, "fp", 0); + ALLOC_STATE(fp, always, R300_FP_CMDSIZE, 0); r300->hw.fp.cmd[R300_FP_CMD_0] = cmdpacket0(R300_PFS_CNTL_0, 3); r300->hw.fp.cmd[R300_FP_CMD_1] = cmdpacket0(R300_PFS_NODE_0, 4); - ALLOC_STATE(fpt, variable, R300_FPT_CMDSIZE, "fpt", 0); + ALLOC_STATE(fpt, variable, R300_FPT_CMDSIZE, 0); r300->hw.fpt.cmd[R300_FPT_CMD_0] = cmdpacket0(R300_PFS_TEXI_0, 0); - ALLOC_STATE(unk46A4, always, 6, "unk46A4", 0); + ALLOC_STATE(unk46A4, always, 6, 0); r300->hw.unk46A4.cmd[0] = cmdpacket0(0x46A4, 5); - ALLOC_STATE(fpi[0], variable, R300_FPI_CMDSIZE, "fpi[0]", 0); + ALLOC_STATE(fpi[0], variable, R300_FPI_CMDSIZE, 0); r300->hw.fpi[0].cmd[R300_FPI_CMD_0] = cmdpacket0(R300_PFS_INSTR0_0, 1); - ALLOC_STATE(fpi[1], variable, R300_FPI_CMDSIZE, "fpi[1]", 1); + ALLOC_STATE(fpi[1], variable, R300_FPI_CMDSIZE, 1); r300->hw.fpi[1].cmd[R300_FPI_CMD_0] = cmdpacket0(R300_PFS_INSTR1_0, 1); - ALLOC_STATE(fpi[2], variable, R300_FPI_CMDSIZE, "fpi[2]", 2); + ALLOC_STATE(fpi[2], variable, R300_FPI_CMDSIZE, 2); r300->hw.fpi[2].cmd[R300_FPI_CMD_0] = cmdpacket0(R300_PFS_INSTR2_0, 1); - ALLOC_STATE(fpi[3], variable, R300_FPI_CMDSIZE, "fpi[3]", 3); + ALLOC_STATE(fpi[3], variable, R300_FPI_CMDSIZE, 3); r300->hw.fpi[3].cmd[R300_FPI_CMD_0] = cmdpacket0(R300_PFS_INSTR3_0, 1); - ALLOC_STATE(fogs, always, R300_FOGS_CMDSIZE, "fogs", 0); + ALLOC_STATE(fogs, always, R300_FOGS_CMDSIZE, 0); r300->hw.fogs.cmd[R300_FOGS_CMD_0] = cmdpacket0(R300_RE_FOG_STATE, 1); - ALLOC_STATE(fogc, always, R300_FOGC_CMDSIZE, "fogc", 0); + ALLOC_STATE(fogc, always, R300_FOGC_CMDSIZE, 0); r300->hw.fogc.cmd[R300_FOGC_CMD_0] = cmdpacket0(R300_FOG_COLOR_R, 3); - ALLOC_STATE(at, always, R300_AT_CMDSIZE, "at", 0); + ALLOC_STATE(at, always, R300_AT_CMDSIZE, 0); r300->hw.at.cmd[R300_AT_CMD_0] = cmdpacket0(R300_PP_ALPHA_TEST, 2); - ALLOC_STATE(unk4BD8, always, 2, "unk4BD8", 0); + ALLOC_STATE(unk4BD8, always, 2, 0); r300->hw.unk4BD8.cmd[0] = cmdpacket0(0x4BD8, 1); - ALLOC_STATE(fpp, variable, R300_FPP_CMDSIZE, "fpp", 0); + ALLOC_STATE(fpp, variable, R300_FPP_CMDSIZE, 0); r300->hw.fpp.cmd[R300_FPP_CMD_0] = cmdpacket0(R300_PFS_PARAM_0_X, 0); - ALLOC_STATE(unk4E00, always, 2, "unk4E00", 0); + ALLOC_STATE(unk4E00, always, 2, 0); r300->hw.unk4E00.cmd[0] = cmdpacket0(0x4E00, 1); - ALLOC_STATE(bld, always, R300_BLD_CMDSIZE, "bld", 0); + ALLOC_STATE(bld, always, R300_BLD_CMDSIZE, 0); r300->hw.bld.cmd[R300_BLD_CMD_0] = cmdpacket0(R300_RB3D_CBLEND, 2); - ALLOC_STATE(cmk, always, R300_CMK_CMDSIZE, "cmk", 0); + ALLOC_STATE(cmk, always, R300_CMK_CMDSIZE, 0); r300->hw.cmk.cmd[R300_CMK_CMD_0] = cmdpacket0(R300_RB3D_COLORMASK, 1); - ALLOC_STATE(blend_color, always, 4, "blend_color", 0); + ALLOC_STATE(blend_color, always, 4, 0); r300->hw.blend_color.cmd[0] = cmdpacket0(R300_RB3D_BLEND_COLOR, 3); - ALLOC_STATE(cb, always, R300_CB_CMDSIZE, "cb", 0); + ALLOC_STATE(cb, always, R300_CB_CMDSIZE, 0); r300->hw.cb.cmd[R300_CB_CMD_0] = cmdpacket0(R300_RB3D_COLOROFFSET0, 1); r300->hw.cb.cmd[R300_CB_CMD_1] = cmdpacket0(R300_RB3D_COLORPITCH0, 1); - ALLOC_STATE(unk4E50, always, 10, "unk4E50", 0); + ALLOC_STATE(unk4E50, always, 10, 0); r300->hw.unk4E50.cmd[0] = cmdpacket0(0x4E50, 9); - ALLOC_STATE(unk4E88, always, 2, "unk4E88", 0); + ALLOC_STATE(unk4E88, always, 2, 0); r300->hw.unk4E88.cmd[0] = cmdpacket0(0x4E88, 1); - ALLOC_STATE(unk4EA0, always, 3, "unk4EA0 R350 only", 0); + ALLOC_STATE(unk4EA0, always, 3, 0); r300->hw.unk4EA0.cmd[0] = cmdpacket0(0x4EA0, 2); - ALLOC_STATE(zs, always, R300_ZS_CMDSIZE, "zstencil", 0); + ALLOC_STATE(zs, always, R300_ZS_CMDSIZE, 0); r300->hw.zs.cmd[R300_ZS_CMD_0] = cmdpacket0(R300_RB3D_ZSTENCIL_CNTL_0, 3); - ALLOC_STATE(zstencil_format, always, 5, "zstencil_format", 0); + ALLOC_STATE(zstencil_format, always, 5, 0); r300->hw.zstencil_format.cmd[0] = cmdpacket0(R300_RB3D_ZSTENCIL_FORMAT, 4); - ALLOC_STATE(zb, always, R300_ZB_CMDSIZE, "zb", 0); + ALLOC_STATE(zb, always, R300_ZB_CMDSIZE, 0); r300->hw.zb.cmd[R300_ZB_CMD_0] = cmdpacket0(R300_RB3D_DEPTHOFFSET, 2); - ALLOC_STATE(unk4F28, always, 2, "unk4F28", 0); + ALLOC_STATE(unk4F28, always, 2, 0); r300->hw.unk4F28.cmd[0] = cmdpacket0(0x4F28, 1); - ALLOC_STATE(unk4F30, always, 3, "unk4F30", 0); + ALLOC_STATE(unk4F30, always, 3, 0); r300->hw.unk4F30.cmd[0] = cmdpacket0(0x4F30, 2); - ALLOC_STATE(unk4F44, always, 2, "unk4F44", 0); + ALLOC_STATE(unk4F44, always, 2, 0); r300->hw.unk4F44.cmd[0] = cmdpacket0(0x4F44, 1); - ALLOC_STATE(unk4F54, always, 2, "unk4F54", 0); + ALLOC_STATE(unk4F54, always, 2, 0); r300->hw.unk4F54.cmd[0] = cmdpacket0(0x4F54, 1); /* VPU only on TCL */ if (has_tcl) { - ALLOC_STATE(vpi, vpu, R300_VPI_CMDSIZE, "vpi", 0); + ALLOC_STATE(vpi, vpu, R300_VPI_CMDSIZE, 0); r300->hw.vpi.cmd[R300_VPI_CMD_0] = cmdvpu(R300_PVS_UPLOAD_PROGRAM, 0); - ALLOC_STATE(vpp, vpu, R300_VPP_CMDSIZE, "vpp", 0); + ALLOC_STATE(vpp, vpu, R300_VPP_CMDSIZE, 0); r300->hw.vpp.cmd[R300_VPP_CMD_0] = cmdvpu(R300_PVS_UPLOAD_PARAMETERS, 0); - ALLOC_STATE(vps, vpu, R300_VPS_CMDSIZE, "vps", 0); + ALLOC_STATE(vps, vpu, R300_VPS_CMDSIZE, 0); r300->hw.vps.cmd[R300_VPS_CMD_0] = cmdvpu(R300_PVS_UPLOAD_POINTSIZE, 1); } /* Textures */ - ALLOC_STATE(tex.filter, variable, mtu + 1, "tex_filter", 0); + ALLOC_STATE(tex.filter, variable, mtu + 1, 0); r300->hw.tex.filter.cmd[R300_TEX_CMD_0] = cmdpacket0(R300_TX_FILTER_0, 0); - ALLOC_STATE(tex.filter_1, variable, mtu + 1, "tex_filter_1", 0); + ALLOC_STATE(tex.filter_1, variable, mtu + 1, 0); r300->hw.tex.filter_1.cmd[R300_TEX_CMD_0] = cmdpacket0(R300_TX_FILTER1_0, 0); - ALLOC_STATE(tex.size, variable, mtu + 1, "tex_size", 0); + ALLOC_STATE(tex.size, variable, mtu + 1, 0); r300->hw.tex.size.cmd[R300_TEX_CMD_0] = cmdpacket0(R300_TX_SIZE_0, 0); - ALLOC_STATE(tex.format, variable, mtu + 1, "tex_format", 0); + ALLOC_STATE(tex.format, variable, mtu + 1, 0); r300->hw.tex.format.cmd[R300_TEX_CMD_0] = cmdpacket0(R300_TX_FORMAT_0, 0); - ALLOC_STATE(tex.pitch, variable, mtu + 1, "tex_pitch", 0); + ALLOC_STATE(tex.pitch, variable, mtu + 1, 0); r300->hw.tex.pitch.cmd[R300_TEX_CMD_0] = cmdpacket0(R300_TX_PITCH_0, 0); - ALLOC_STATE(tex.offset, variable, mtu + 1, "tex_offset", 0); + ALLOC_STATE(tex.offset, variable, mtu + 1, 0); r300->hw.tex.offset.cmd[R300_TEX_CMD_0] = cmdpacket0(R300_TX_OFFSET_0, 0); - ALLOC_STATE(tex.chroma_key, variable, mtu + 1, "tex_chroma_key", 0); + ALLOC_STATE(tex.chroma_key, variable, mtu + 1, 0); r300->hw.tex.chroma_key.cmd[R300_TEX_CMD_0] = cmdpacket0(R300_TX_CHROMA_KEY_0, 0); - ALLOC_STATE(tex.border_color, variable, mtu + 1, "tex_border_color", 0); + ALLOC_STATE(tex.border_color, variable, mtu + 1, 0); r300->hw.tex.border_color.cmd[R300_TEX_CMD_0] = cmdpacket0(R300_TX_BORDER_COLOR_0, 0); -- cgit v1.2.3 From b78aec576735c663342da8367dccd3de71e70c34 Mon Sep 17 00:00:00 2001 From: Roland Scheidegger Date: Sat, 12 May 2007 11:20:24 +0200 Subject: bring over recent radeonMakeCurrent fixes for r300 to radeon/r200 --- src/mesa/drivers/dri/r200/r200_context.c | 1 - src/mesa/drivers/dri/radeon/radeon_context.c | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r200/r200_context.c b/src/mesa/drivers/dri/r200/r200_context.c index 0507eb86e69..786a298cc3b 100644 --- a/src/mesa/drivers/dri/r200/r200_context.c +++ b/src/mesa/drivers/dri/r200/r200_context.c @@ -679,7 +679,6 @@ r200MakeCurrent( __DRIcontextPrivate *driContextPriv, newCtx->dri.drawable = driDrawPriv; r200SetCliprects(newCtx); - r200UpdateWindow( newCtx->glCtx ); r200UpdateViewportOffset( newCtx->glCtx ); } diff --git a/src/mesa/drivers/dri/radeon/radeon_context.c b/src/mesa/drivers/dri/radeon/radeon_context.c index d7c2d1407d6..9451ec4aa5b 100644 --- a/src/mesa/drivers/dri/radeon/radeon_context.c +++ b/src/mesa/drivers/dri/radeon/radeon_context.c @@ -604,7 +604,6 @@ radeonMakeCurrent( __DRIcontextPrivate *driContextPriv, newCtx->dri.drawable = driDrawPriv; radeonSetCliprects(newCtx); - radeonUpdateWindow( newCtx->glCtx ); radeonUpdateViewportOffset( newCtx->glCtx ); } @@ -612,6 +611,7 @@ radeonMakeCurrent( __DRIcontextPrivate *driContextPriv, (GLframebuffer *) driDrawPriv->driverPrivate, (GLframebuffer *) driReadPriv->driverPrivate ); + _mesa_update_state( newCtx->glCtx ); } else { if (RADEON_DEBUG & DEBUG_DRI) fprintf(stderr, "%s ctx is null\n", __FUNCTION__); -- cgit v1.2.3 From 65fae193831e9fd4b2fc5a1b8170215cc77427dd Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Sat, 12 May 2007 17:16:56 +0000 Subject: Revert "r300: Perform the locking closer to the DRM texture upload call." This reverts commit 93881edb46fc95e1cfb4ded4e8a5db92612d3e4d. --- src/mesa/drivers/dri/r300/r300_texmem.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_texmem.c b/src/mesa/drivers/dri/r300/r300_texmem.c index 30f3886542f..eef5ff186f4 100644 --- a/src/mesa/drivers/dri/r300/r300_texmem.c +++ b/src/mesa/drivers/dri/r300/r300_texmem.c @@ -469,14 +469,12 @@ static void r300UploadSubImage(r300ContextPtr rmesa, r300TexObjPtr t, } } + LOCK_HARDWARE(&rmesa->radeon); do { - LOCK_HARDWARE(&rmesa->radeon); ret = drmCommandWriteRead(rmesa->radeon.dri.fd, DRM_RADEON_TEXTURE, &tex, sizeof(drm_radeon_texture_t)); - UNLOCK_HARDWARE(&rmesa->radeon); - if (ret) { if (RADEON_DEBUG & DEBUG_IOCTL) fprintf(stderr, @@ -485,6 +483,8 @@ static void r300UploadSubImage(r300ContextPtr rmesa, r300TexObjPtr t, } } while (ret == -EAGAIN); + UNLOCK_HARDWARE(&rmesa->radeon); + if (ret) { fprintf(stderr, "DRM_RADEON_TEXTURE: return = %d\n", ret); fprintf(stderr, " offset=0x%08x\n", offset); -- cgit v1.2.3 From 6f56e68ee305ab60569e449e53442e93d5a938a1 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Sun, 13 May 2007 06:39:24 +0000 Subject: r300: Use the defined values when writing to R300_VAP_INPUT_CNTL_[01]. You can verify this is correct with the following code. assert (0x00000001 == R300_INPUT_CNTL_0_COLOR); assert (0x00000405 == (R300_INPUT_CNTL_POS | R300_INPUT_CNTL_COLOR | R300_INPUT_CNTL_TC0)); --- src/mesa/drivers/dri/r300/r300_ioctl.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_ioctl.c b/src/mesa/drivers/dri/r300/r300_ioctl.c index d2cc97d213e..9e741b3ecd4 100644 --- a/src/mesa/drivers/dri/r300/r300_ioctl.c +++ b/src/mesa/drivers/dri/r300/r300_ioctl.c @@ -210,10 +210,12 @@ static void r300EmitClearState(GLcontext * ctx) reg_start(R300_VAP_INPUT_ROUTE_1_0, 0); e32(0xF688F688); + /* R300_VAP_INPUT_CNTL_0, R300_VAP_INPUT_CNTL_1 */ R300_STATECHANGE(r300, vic); reg_start(R300_VAP_INPUT_CNTL_0, 1); - e32(0x00000001); - e32(0x00000405); + e32(R300_INPUT_CNTL_0_COLOR); + e32(R300_INPUT_CNTL_POS | R300_INPUT_CNTL_COLOR | R300_INPUT_CNTL_TC0); + if (!has_tcl) { R300_STATECHANGE(r300, vte); -- cgit v1.2.3 From 73449270bb1bae1a4d12ff6c4187e73d9969c174 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Sun, 13 May 2007 07:44:20 +0000 Subject: r300: Use the defined values for the interpolater (interp_magic) magic values. --- src/mesa/drivers/dri/r300/r300_state.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_state.c b/src/mesa/drivers/dri/r300/r300_state.c index c45c571d7b3..cb34b8a7221 100644 --- a/src/mesa/drivers/dri/r300/r300_state.c +++ b/src/mesa/drivers/dri/r300/r300_state.c @@ -1445,9 +1445,9 @@ void r300SetupRSUnit(GLcontext * ctx) /* I'm still unsure if these are needed */ GLuint interp_magic[8] = { 0x00, - 0x40, - 0x80, - 0xC0, + R300_RS_INTERP_1_UNKNOWN, + R300_RS_INTERP_2_UNKNOWN, + R300_RS_INTERP_3_UNKNOWN, 0x00, 0x00, 0x00, -- cgit v1.2.3 From c66fd808ac2a2013d8a305e917c8ddeb9e16048d Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Sun, 13 May 2007 07:51:41 +0000 Subject: r300: A few very minor indenting corrections. --- src/mesa/drivers/dri/r300/r300_ioctl.c | 1 - src/mesa/drivers/dri/r300/r300_mem.h | 2 +- src/mesa/drivers/dri/r300/r300_reg.h | 8 ++++---- src/mesa/drivers/dri/r300/r300_render.c | 4 ++-- 4 files changed, 7 insertions(+), 8 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_ioctl.c b/src/mesa/drivers/dri/r300/r300_ioctl.c index 9e741b3ecd4..4bdd35bb24a 100644 --- a/src/mesa/drivers/dri/r300/r300_ioctl.c +++ b/src/mesa/drivers/dri/r300/r300_ioctl.c @@ -216,7 +216,6 @@ static void r300EmitClearState(GLcontext * ctx) e32(R300_INPUT_CNTL_0_COLOR); e32(R300_INPUT_CNTL_POS | R300_INPUT_CNTL_COLOR | R300_INPUT_CNTL_TC0); - if (!has_tcl) { R300_STATECHANGE(r300, vte); /* comes from fglrx startup of clear */ diff --git a/src/mesa/drivers/dri/r300/r300_mem.h b/src/mesa/drivers/dri/r300/r300_mem.h index d2932380ec6..625a7f6d8d5 100644 --- a/src/mesa/drivers/dri/r300/r300_mem.h +++ b/src/mesa/drivers/dri/r300/r300_mem.h @@ -20,7 +20,7 @@ struct r300_memory_manager { int mapped; } *u_list; int u_head, u_size, u_last; - + }; extern void r300_mem_init(r300ContextPtr rmesa); diff --git a/src/mesa/drivers/dri/r300/r300_reg.h b/src/mesa/drivers/dri/r300/r300_reg.h index e309a48c423..8ff362b9d21 100644 --- a/src/mesa/drivers/dri/r300/r300_reg.h +++ b/src/mesa/drivers/dri/r300/r300_reg.h @@ -23,11 +23,11 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. **************************************************************************/ +/* *INDENT-OFF* */ + #ifndef _R300_REG_H #define _R300_REG_H -/* *INDENT-OFF* */ - #define R300_MC_INIT_MISC_LAT_TIMER 0x180 # define R300_MC_MISC__MC_CPR_INIT_LAT_SHIFT 0 # define R300_MC_MISC__MC_VF_INIT_LAT_SHIFT 4 @@ -1606,6 +1606,6 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. */ #define R300_CP_CMD_BITBLT_MULTI 0xC0009B00 -/* *INDENT-ON* */ - #endif /* _R300_REG_H */ + +/* *INDENT-ON* */ diff --git a/src/mesa/drivers/dri/r300/r300_render.c b/src/mesa/drivers/dri/r300/r300_render.c index d967c69c427..cc13e9a5304 100644 --- a/src/mesa/drivers/dri/r300/r300_render.c +++ b/src/mesa/drivers/dri/r300/r300_render.c @@ -110,7 +110,7 @@ static int r300PrimitiveType(r300ContextPtr rmesa, GLcontext * ctx, int prim) return R300_VAP_VF_CNTL__PRIM_POLYGON; break; default: - assert (0); + assert(0); return -1; break; } @@ -160,7 +160,7 @@ static int r300NumVerts(r300ContextPtr rmesa, int num_verts, int prim) verts_off = num_verts; break; default: - assert (0); + assert(0); return -1; break; } -- cgit v1.2.3 From d93642251e3e984d91b3821349e38f68dc582e3d Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Sun, 13 May 2007 08:21:50 +0000 Subject: r300: Removed a couple of obsolete/commented out includes. --- src/mesa/drivers/dri/r300/r300_tex.c | 1 - src/mesa/drivers/dri/r300/r300_texmem.c | 3 --- 2 files changed, 4 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_tex.c b/src/mesa/drivers/dri/r300/r300_tex.c index a8be0f6ff74..e7b14a0d171 100644 --- a/src/mesa/drivers/dri/r300/r300_tex.c +++ b/src/mesa/drivers/dri/r300/r300_tex.c @@ -48,7 +48,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "r300_context.h" #include "r300_state.h" #include "r300_ioctl.h" -//#include "r300_swtcl.h" #include "r300_tex.h" #include "xmlpool.h" diff --git a/src/mesa/drivers/dri/r300/r300_texmem.c b/src/mesa/drivers/dri/r300/r300_texmem.c index eef5ff186f4..60e7dc967b1 100644 --- a/src/mesa/drivers/dri/r300/r300_texmem.c +++ b/src/mesa/drivers/dri/r300/r300_texmem.c @@ -49,9 +49,6 @@ SOFTWARE. #include "r300_state.h" #include "r300_cmdbuf.h" #include "radeon_ioctl.h" -/* -#include "r300_swtcl.h" -*/ #include "r300_tex.h" #include "r300_ioctl.h" #include /* for usleep() */ -- cgit v1.2.3 From b5990cec902be0c599ec4962f0d69d6db2e5ec04 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Sun, 13 May 2007 08:28:51 +0000 Subject: r300: Use #if 0 for disabled code, rather than commenting it out. --- src/mesa/drivers/dri/r300/r300_tex.c | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_tex.c b/src/mesa/drivers/dri/r300/r300_tex.c index e7b14a0d171..2a21c611629 100644 --- a/src/mesa/drivers/dri/r300/r300_tex.c +++ b/src/mesa/drivers/dri/r300/r300_tex.c @@ -800,16 +800,20 @@ static void r300CompressedTexImage2D(GLcontext * ctx, GLenum target, } texImage->IsClientData = GL_FALSE; -/* can't call this, different parameters. Would never evaluate to true anyway currently - if (r300ValidateClientStorage( ctx, target, - internalFormat, - width, height, - format, type, pixels, - packing, texObj, texImage)) { - if (RADEON_DEBUG & DEBUG_TEXTURE) - fprintf(stderr, "%s: Using client storage\n", __FUNCTION__); - } - else */ { + + /* can't call this, different parameters. Would never evaluate to true anyway currently */ +#if 0 + if (r300ValidateClientStorage(ctx, target, + internalFormat, + width, height, + format, type, pixels, + packing, texObj, texImage)) { + if (RADEON_DEBUG & DEBUG_TEXTURE) + fprintf(stderr, "%s: Using client storage\n", + __FUNCTION__); + } else +#endif + { if (RADEON_DEBUG & DEBUG_TEXTURE) fprintf(stderr, "%s: Using normal storage\n", __FUNCTION__); -- cgit v1.2.3 From e4b8481f396d0347f10eb51486c7fe5b01252457 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Sun, 13 May 2007 08:43:30 +0000 Subject: r300: Removed the unused r300_aos_rec (replaced by r300_dma_region) structure. --- src/mesa/drivers/dri/r300/r300_context.h | 13 ------------- 1 file changed, 13 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_context.h b/src/mesa/drivers/dri/r300/r300_context.h index 07c3e37927e..cc065bb04d2 100644 --- a/src/mesa/drivers/dri/r300/r300_context.h +++ b/src/mesa/drivers/dri/r300/r300_context.h @@ -812,19 +812,6 @@ struct radeon_vertex_buffer { int lock_uptodate; }; -struct r300_aos_rec { - GLuint offset; - int element_size; /* in dwords */ - int stride; /* distance between elements, in dwords */ - - int format; - - int ncomponents; /* number of components - between 1 and 4, inclusive */ - - int reg; /* which register they are assigned to. */ - -}; - struct r300_state { struct r300_depthbuffer_state depth; struct r300_texture_state texture; -- cgit v1.2.3 From 82de92c0fb329b464fe19d6cc45080174e019795 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Sun, 13 May 2007 08:59:54 +0000 Subject: r300: Changed a couple of functions in r300_state.c to static functions. --- src/mesa/drivers/dri/r300/r300_state.c | 34 +++++++++++++++++----------------- src/mesa/drivers/dri/r300/r300_state.h | 1 - 2 files changed, 17 insertions(+), 18 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_state.c b/src/mesa/drivers/dri/r300/r300_state.c index cb34b8a7221..f7296ebb123 100644 --- a/src/mesa/drivers/dri/r300/r300_state.c +++ b/src/mesa/drivers/dri/r300/r300_state.c @@ -1439,7 +1439,7 @@ union r300_outputs_written { ((hw_tcl_on) ? (ow).vp_outputs & (1 << (vp_result)) : \ RENDERINPUTS_TEST( (ow.index_bitset), (tnl_attrib) )) -void r300SetupRSUnit(GLcontext * ctx) +static void r300SetupRSUnit(GLcontext * ctx) { r300ContextPtr r300 = R300_CONTEXT(ctx); /* I'm still unsure if these are needed */ @@ -1858,22 +1858,7 @@ void r300UpdateShaders(r300ContextPtr rmesa) } -void r300UpdateShaderStates(r300ContextPtr rmesa) -{ - GLcontext *ctx; - ctx = rmesa->radeon.glCtx; - - r300UpdateTextureState(ctx); - - r300SetupPixelShader(rmesa); - r300SetupTextures(ctx); - - if ((rmesa->radeon.radeonScreen->chip_flags & RADEON_CHIPSET_TCL)) - r300SetupVertexShader(rmesa); - r300SetupRSUnit(ctx); -} - -void r300SetupPixelShader(r300ContextPtr rmesa) +static void r300SetupPixelShader(r300ContextPtr rmesa) { GLcontext *ctx = rmesa->radeon.glCtx; struct r300_fragment_program *fp = (struct r300_fragment_program *) @@ -1947,6 +1932,21 @@ void r300SetupPixelShader(r300ContextPtr rmesa) cmdpacket0(R300_PFS_PARAM_0_X, fp->const_nr * 4); } +void r300UpdateShaderStates(r300ContextPtr rmesa) +{ + GLcontext *ctx; + ctx = rmesa->radeon.glCtx; + + r300UpdateTextureState(ctx); + + r300SetupPixelShader(rmesa); + r300SetupTextures(ctx); + + if ((rmesa->radeon.radeonScreen->chip_flags & RADEON_CHIPSET_TCL)) + r300SetupVertexShader(rmesa); + r300SetupRSUnit(ctx); +} + /** * Called by Mesa after an internal state update. */ diff --git a/src/mesa/drivers/dri/r300/r300_state.h b/src/mesa/drivers/dri/r300/r300_state.h index 3b9d8e74041..311e97daa8c 100644 --- a/src/mesa/drivers/dri/r300/r300_state.h +++ b/src/mesa/drivers/dri/r300/r300_state.h @@ -67,7 +67,6 @@ extern void r300UpdateViewportOffset(GLcontext * ctx); extern void r300UpdateWindow(GLcontext * ctx); extern void r300UpdateDrawBuffer(GLcontext * ctx); extern void r300SetupVertexShader(r300ContextPtr rmesa); -extern void r300SetupPixelShader(r300ContextPtr rmesa); extern void r300UpdateShaders(r300ContextPtr rmesa); extern void r300UpdateShaderStates(r300ContextPtr rmesa); -- cgit v1.2.3 From 13c0abd8a76ad4e14ad6b7737cdaaf8ff22c5cf2 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Sun, 13 May 2007 09:09:30 +0000 Subject: r300: Changed some more functions to static functions. This required reordering some of the functions which is why the diff is a little larger. --- src/mesa/drivers/dri/r300/r300_cmdbuf.c | 2 +- src/mesa/drivers/dri/r300/r300_ioctl.c | 21 -- src/mesa/drivers/dri/r300/r300_ioctl.h | 3 - src/mesa/drivers/dri/r300/r300_state.c | 413 ++++++++++++++++---------------- src/mesa/drivers/dri/r300/r300_state.h | 7 - 5 files changed, 207 insertions(+), 239 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_cmdbuf.c b/src/mesa/drivers/dri/r300/r300_cmdbuf.c index f271d5819bb..d13649ddc0d 100644 --- a/src/mesa/drivers/dri/r300/r300_cmdbuf.c +++ b/src/mesa/drivers/dri/r300/r300_cmdbuf.c @@ -128,7 +128,7 @@ int r300FlushCmdBuf(r300ContextPtr r300, const char *caller) return ret; } -void r300PrintStateAtom(r300ContextPtr r300, struct r300_state_atom *state) +static void r300PrintStateAtom(r300ContextPtr r300, struct r300_state_atom *state) { int i; int dwords = (*state->check) (r300, state); diff --git a/src/mesa/drivers/dri/r300/r300_ioctl.c b/src/mesa/drivers/dri/r300/r300_ioctl.c index 4bdd35bb24a..76712b0b198 100644 --- a/src/mesa/drivers/dri/r300/r300_ioctl.c +++ b/src/mesa/drivers/dri/r300/r300_ioctl.c @@ -668,27 +668,6 @@ void r300AllocDmaRegion(r300ContextPtr rmesa, #endif -/* Called via glXGetMemoryOffsetMESA() */ -GLuint r300GetMemoryOffsetMESA(__DRInativeDisplay * dpy, int scrn, - const GLvoid * pointer) -{ - GET_CURRENT_CONTEXT(ctx); - r300ContextPtr rmesa; - GLuint card_offset; - - if (!ctx || !(rmesa = R300_CONTEXT(ctx))) { - fprintf(stderr, "%s: no context\n", __FUNCTION__); - return ~0; - } - - if (!r300IsGartMemory(rmesa, pointer, 0)) - return ~0; - - card_offset = r300GartOffsetFromVirtual(rmesa, pointer); - - return card_offset - rmesa->radeon.radeonScreen->gart_base; -} - GLboolean r300IsGartMemory(r300ContextPtr rmesa, const GLvoid * pointer, GLint size) { diff --git a/src/mesa/drivers/dri/r300/r300_ioctl.h b/src/mesa/drivers/dri/r300/r300_ioctl.h index cebd22fabed..7a19a2cf3f9 100644 --- a/src/mesa/drivers/dri/r300/r300_ioctl.h +++ b/src/mesa/drivers/dri/r300/r300_ioctl.h @@ -39,9 +39,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "r300_context.h" #include "radeon_drm.h" -extern GLuint r300GetMemoryOffsetMESA(__DRInativeDisplay * dpy, int scrn, - const GLvoid * pointer); - extern GLboolean r300IsGartMemory(r300ContextPtr rmesa, const GLvoid * pointer, GLint size); diff --git a/src/mesa/drivers/dri/r300/r300_state.c b/src/mesa/drivers/dri/r300/r300_state.c index f7296ebb123..e8d67f9aec1 100644 --- a/src/mesa/drivers/dri/r300/r300_state.c +++ b/src/mesa/drivers/dri/r300/r300_state.c @@ -976,7 +976,7 @@ static void r300ClearStencil(GLcontext * ctx, GLint s) #define SUBPIXEL_X 0.125 #define SUBPIXEL_Y 0.125 -void r300UpdateWindow(GLcontext * ctx) +static void r300UpdateWindow(GLcontext * ctx) { r300ContextPtr rmesa = R300_CONTEXT(ctx); __DRIdrawablePrivate *dPriv = rmesa->radeon.dri.drawable; @@ -1642,8 +1642,6 @@ void static inline setup_vertex_shader_fragment(r300ContextPtr r300, int dest, s } } -void r300SetupVertexProgram(r300ContextPtr rmesa); - /* just a skeleton for now.. */ /* Generate a vertex shader that simply transforms vertex and texture coordinates, @@ -1699,66 +1697,7 @@ static void r300GenerateSimpleVertexShader(r300ContextPtr r300) } -void r300SetupVertexShader(r300ContextPtr rmesa) -{ - GLcontext *ctx = rmesa->radeon.glCtx; - - /* Reset state, in case we don't use something */ - ((drm_r300_cmd_header_t *) rmesa->hw.vpp.cmd)->vpu.count = 0; - ((drm_r300_cmd_header_t *) rmesa->hw.vpi.cmd)->vpu.count = 0; - ((drm_r300_cmd_header_t *) rmesa->hw.vps.cmd)->vpu.count = 0; - - /* Not sure why this doesnt work... - 0x400 area might have something to do with pixel shaders as it appears right after pfs programming. - 0x406 is set to { 0.0, 0.0, 1.0, 0.0 } most of the time but should change with smooth points and in other rare cases. */ - //setup_vertex_shader_fragment(rmesa, 0x406, &unk4); - if (hw_tcl_on - && ((struct r300_vertex_program *)CURRENT_VERTEX_SHADER(ctx))-> - translated) { - r300SetupVertexProgram(rmesa); - return; - } - - /* This needs to be replaced by vertex shader generation code */ - r300GenerateSimpleVertexShader(rmesa); - - setup_vertex_shader_fragment(rmesa, VSF_DEST_PROGRAM, - &(rmesa->state.vertex_shader.program)); - -#if 0 - setup_vertex_shader_fragment(rmesa, VSF_DEST_UNKNOWN1, - &(rmesa->state.vertex_shader.unknown1)); - setup_vertex_shader_fragment(rmesa, VSF_DEST_UNKNOWN2, - &(rmesa->state.vertex_shader.unknown2)); -#endif - - R300_STATECHANGE(rmesa, pvs); - rmesa->hw.pvs.cmd[R300_PVS_CNTL_1] = - (rmesa->state.vertex_shader. - program_start << R300_PVS_CNTL_1_PROGRAM_START_SHIFT) - | (rmesa->state.vertex_shader. - unknown_ptr1 << R300_PVS_CNTL_1_POS_END_SHIFT) - | (rmesa->state.vertex_shader. - program_end << R300_PVS_CNTL_1_PROGRAM_END_SHIFT); - rmesa->hw.pvs.cmd[R300_PVS_CNTL_2] = - (rmesa->state.vertex_shader. - param_offset << R300_PVS_CNTL_2_PARAM_OFFSET_SHIFT) - | (rmesa->state.vertex_shader. - param_count << R300_PVS_CNTL_2_PARAM_COUNT_SHIFT); - rmesa->hw.pvs.cmd[R300_PVS_CNTL_3] = - (rmesa->state.vertex_shader. - unknown_ptr2 << R300_PVS_CNTL_3_PROGRAM_UNKNOWN_SHIFT) - | (rmesa->state.vertex_shader.unknown_ptr3 << 0); - - /* This is done for vertex shader fragments, but also needs to be done for vap_pvs, - so I leave it as a reminder */ -#if 0 - reg_start(R300_VAP_PVS_WAITIDLE, 0); - e32(0x00000000); -#endif -} - -void r300SetupVertexProgram(r300ContextPtr rmesa) +static void r300SetupVertexProgram(r300ContextPtr rmesa) { GLcontext *ctx = rmesa->radeon.glCtx; int inst_count; @@ -1813,166 +1752,69 @@ void r300SetupVertexProgram(r300ContextPtr rmesa) #endif } -extern void _tnl_UpdateFixedFunctionProgram(GLcontext * ctx); - -extern int future_hw_tcl_on; -void r300UpdateShaders(r300ContextPtr rmesa) -{ - GLcontext *ctx; - struct r300_vertex_program *vp; - int i; - - ctx = rmesa->radeon.glCtx; - - if (rmesa->NewGLState && hw_tcl_on) { - rmesa->NewGLState = 0; - - for (i = _TNL_FIRST_MAT; i <= _TNL_LAST_MAT; i++) { - rmesa->temp_attrib[i] = - TNL_CONTEXT(ctx)->vb.AttribPtr[i]; - TNL_CONTEXT(ctx)->vb.AttribPtr[i] = - &rmesa->dummy_attrib[i]; - } - - _tnl_UpdateFixedFunctionProgram(ctx); - - for (i = _TNL_FIRST_MAT; i <= _TNL_LAST_MAT; i++) { - TNL_CONTEXT(ctx)->vb.AttribPtr[i] = - rmesa->temp_attrib[i]; - } - - r300SelectVertexShader(rmesa); - vp = (struct r300_vertex_program *) - CURRENT_VERTEX_SHADER(ctx); - /*if (vp->translated == GL_FALSE) - r300TranslateVertexShader(vp); */ - if (vp->translated == GL_FALSE) { - fprintf(stderr, "Failing back to sw-tcl\n"); - hw_tcl_on = future_hw_tcl_on = 0; - r300ResetHwState(rmesa); - - return; - } - r300UpdateStateParameters(ctx, _NEW_PROGRAM); - } - -} - -static void r300SetupPixelShader(r300ContextPtr rmesa) +static void r300SetupVertexShader(r300ContextPtr rmesa) { GLcontext *ctx = rmesa->radeon.glCtx; - struct r300_fragment_program *fp = (struct r300_fragment_program *) - (char *)ctx->FragmentProgram._Current; - int i, k; - if (!fp) /* should only happenen once, just after context is created */ - return; + /* Reset state, in case we don't use something */ + ((drm_r300_cmd_header_t *) rmesa->hw.vpp.cmd)->vpu.count = 0; + ((drm_r300_cmd_header_t *) rmesa->hw.vpi.cmd)->vpu.count = 0; + ((drm_r300_cmd_header_t *) rmesa->hw.vps.cmd)->vpu.count = 0; - r300TranslateFragmentShader(rmesa, fp); - if (!fp->translated) { - fprintf(stderr, "%s: No valid fragment shader, exiting\n", - __FUNCTION__); + /* Not sure why this doesnt work... + 0x400 area might have something to do with pixel shaders as it appears right after pfs programming. + 0x406 is set to { 0.0, 0.0, 1.0, 0.0 } most of the time but should change with smooth points and in other rare cases. */ + //setup_vertex_shader_fragment(rmesa, 0x406, &unk4); + if (hw_tcl_on + && ((struct r300_vertex_program *)CURRENT_VERTEX_SHADER(ctx))-> + translated) { + r300SetupVertexProgram(rmesa); return; } -#define OUTPUT_FIELD(st, reg, field) \ - R300_STATECHANGE(rmesa, st); \ - for(i=0;i<=fp->alu_end;i++) \ - rmesa->hw.st.cmd[R300_FPI_INSTR_0+i]=fp->alu.inst[i].field;\ - rmesa->hw.st.cmd[R300_FPI_CMD_0]=cmdpacket0(reg, fp->alu_end+1); - OUTPUT_FIELD(fpi[0], R300_PFS_INSTR0_0, inst0); - OUTPUT_FIELD(fpi[1], R300_PFS_INSTR1_0, inst1); - OUTPUT_FIELD(fpi[2], R300_PFS_INSTR2_0, inst2); - OUTPUT_FIELD(fpi[3], R300_PFS_INSTR3_0, inst3); -#undef OUTPUT_FIELD - - R300_STATECHANGE(rmesa, fp); - /* I just want to say, the way these nodes are stored.. weird.. */ - for (i = 0, k = (4 - (fp->cur_node + 1)); i < 4; i++, k++) { - if (i < (fp->cur_node + 1)) { - rmesa->hw.fp.cmd[R300_FP_NODE0 + k] = - (fp->node[i]. - alu_offset << R300_PFS_NODE_ALU_OFFSET_SHIFT) - | (fp->node[i]. - alu_end << R300_PFS_NODE_ALU_END_SHIFT) - | (fp->node[i]. - tex_offset << R300_PFS_NODE_TEX_OFFSET_SHIFT) - | (fp->node[i]. - tex_end << R300_PFS_NODE_TEX_END_SHIFT) - | fp->node[i].flags; /* ( (k==3) ? R300_PFS_NODE_LAST_NODE : 0); */ - } else { - rmesa->hw.fp.cmd[R300_FP_NODE0 + (3 - i)] = 0; - } - } - - /* PFS_CNTL_0 */ - rmesa->hw.fp.cmd[R300_FP_CNTL0] = - fp->cur_node | (fp->first_node_has_tex << 3); - /* PFS_CNTL_1 */ - rmesa->hw.fp.cmd[R300_FP_CNTL1] = fp->max_temp_idx; - /* PFS_CNTL_2 */ - rmesa->hw.fp.cmd[R300_FP_CNTL2] = - (fp->alu_offset << R300_PFS_CNTL_ALU_OFFSET_SHIFT) - | (fp->alu_end << R300_PFS_CNTL_ALU_END_SHIFT) - | (fp->tex_offset << R300_PFS_CNTL_TEX_OFFSET_SHIFT) - | (fp->tex_end << R300_PFS_CNTL_TEX_END_SHIFT); - - R300_STATECHANGE(rmesa, fpp); - for (i = 0; i < fp->const_nr; i++) { - rmesa->hw.fpp.cmd[R300_FPP_PARAM_0 + 4 * i + 0] = - r300PackFloat24(fp->constant[i][0]); - rmesa->hw.fpp.cmd[R300_FPP_PARAM_0 + 4 * i + 1] = - r300PackFloat24(fp->constant[i][1]); - rmesa->hw.fpp.cmd[R300_FPP_PARAM_0 + 4 * i + 2] = - r300PackFloat24(fp->constant[i][2]); - rmesa->hw.fpp.cmd[R300_FPP_PARAM_0 + 4 * i + 3] = - r300PackFloat24(fp->constant[i][3]); - } - rmesa->hw.fpp.cmd[R300_FPP_CMD_0] = - cmdpacket0(R300_PFS_PARAM_0_X, fp->const_nr * 4); -} - -void r300UpdateShaderStates(r300ContextPtr rmesa) -{ - GLcontext *ctx; - ctx = rmesa->radeon.glCtx; - - r300UpdateTextureState(ctx); - - r300SetupPixelShader(rmesa); - r300SetupTextures(ctx); - - if ((rmesa->radeon.radeonScreen->chip_flags & RADEON_CHIPSET_TCL)) - r300SetupVertexShader(rmesa); - r300SetupRSUnit(ctx); -} - -/** - * Called by Mesa after an internal state update. - */ -static void r300InvalidateState(GLcontext * ctx, GLuint new_state) -{ - r300ContextPtr r300 = R300_CONTEXT(ctx); + /* This needs to be replaced by vertex shader generation code */ + r300GenerateSimpleVertexShader(rmesa); - _swrast_InvalidateState(ctx, new_state); - _swsetup_InvalidateState(ctx, new_state); - _vbo_InvalidateState(ctx, new_state); - _tnl_InvalidateState(ctx, new_state); - _ae_invalidate_state(ctx, new_state); + setup_vertex_shader_fragment(rmesa, VSF_DEST_PROGRAM, + &(rmesa->state.vertex_shader.program)); - if (new_state & (_NEW_BUFFERS | _NEW_COLOR | _NEW_PIXEL)) { - r300UpdateDrawBuffer(ctx); - } +#if 0 + setup_vertex_shader_fragment(rmesa, VSF_DEST_UNKNOWN1, + &(rmesa->state.vertex_shader.unknown1)); + setup_vertex_shader_fragment(rmesa, VSF_DEST_UNKNOWN2, + &(rmesa->state.vertex_shader.unknown2)); +#endif - r300UpdateStateParameters(ctx, new_state); + R300_STATECHANGE(rmesa, pvs); + rmesa->hw.pvs.cmd[R300_PVS_CNTL_1] = + (rmesa->state.vertex_shader. + program_start << R300_PVS_CNTL_1_PROGRAM_START_SHIFT) + | (rmesa->state.vertex_shader. + unknown_ptr1 << R300_PVS_CNTL_1_POS_END_SHIFT) + | (rmesa->state.vertex_shader. + program_end << R300_PVS_CNTL_1_PROGRAM_END_SHIFT); + rmesa->hw.pvs.cmd[R300_PVS_CNTL_2] = + (rmesa->state.vertex_shader. + param_offset << R300_PVS_CNTL_2_PARAM_OFFSET_SHIFT) + | (rmesa->state.vertex_shader. + param_count << R300_PVS_CNTL_2_PARAM_COUNT_SHIFT); + rmesa->hw.pvs.cmd[R300_PVS_CNTL_3] = + (rmesa->state.vertex_shader. + unknown_ptr2 << R300_PVS_CNTL_3_PROGRAM_UNKNOWN_SHIFT) + | (rmesa->state.vertex_shader.unknown_ptr3 << 0); - r300->NewGLState |= new_state; + /* This is done for vertex shader fragments, but also needs to be done for vap_pvs, + so I leave it as a reminder */ +#if 0 + reg_start(R300_VAP_PVS_WAITIDLE, 0); + e32(0x00000000); +#endif } /** * Completely recalculates hardware state based on the Mesa state. */ -void r300ResetHwState(r300ContextPtr r300) +static void r300ResetHwState(r300ContextPtr r300) { GLcontext *ctx = r300->radeon.glCtx; int has_tcl = 1; @@ -2232,6 +2074,163 @@ void r300ResetHwState(r300ContextPtr r300) r300->hw.all_dirty = GL_TRUE; } + +extern void _tnl_UpdateFixedFunctionProgram(GLcontext * ctx); + +extern int future_hw_tcl_on; +void r300UpdateShaders(r300ContextPtr rmesa) +{ + GLcontext *ctx; + struct r300_vertex_program *vp; + int i; + + ctx = rmesa->radeon.glCtx; + + if (rmesa->NewGLState && hw_tcl_on) { + rmesa->NewGLState = 0; + + for (i = _TNL_FIRST_MAT; i <= _TNL_LAST_MAT; i++) { + rmesa->temp_attrib[i] = + TNL_CONTEXT(ctx)->vb.AttribPtr[i]; + TNL_CONTEXT(ctx)->vb.AttribPtr[i] = + &rmesa->dummy_attrib[i]; + } + + _tnl_UpdateFixedFunctionProgram(ctx); + + for (i = _TNL_FIRST_MAT; i <= _TNL_LAST_MAT; i++) { + TNL_CONTEXT(ctx)->vb.AttribPtr[i] = + rmesa->temp_attrib[i]; + } + + r300SelectVertexShader(rmesa); + vp = (struct r300_vertex_program *) + CURRENT_VERTEX_SHADER(ctx); + /*if (vp->translated == GL_FALSE) + r300TranslateVertexShader(vp); */ + if (vp->translated == GL_FALSE) { + fprintf(stderr, "Failing back to sw-tcl\n"); + hw_tcl_on = future_hw_tcl_on = 0; + r300ResetHwState(rmesa); + + return; + } + r300UpdateStateParameters(ctx, _NEW_PROGRAM); + } + +} + +static void r300SetupPixelShader(r300ContextPtr rmesa) +{ + GLcontext *ctx = rmesa->radeon.glCtx; + struct r300_fragment_program *fp = (struct r300_fragment_program *) + (char *)ctx->FragmentProgram._Current; + int i, k; + + if (!fp) /* should only happenen once, just after context is created */ + return; + + r300TranslateFragmentShader(rmesa, fp); + if (!fp->translated) { + fprintf(stderr, "%s: No valid fragment shader, exiting\n", + __FUNCTION__); + return; + } +#define OUTPUT_FIELD(st, reg, field) \ + R300_STATECHANGE(rmesa, st); \ + for(i=0;i<=fp->alu_end;i++) \ + rmesa->hw.st.cmd[R300_FPI_INSTR_0+i]=fp->alu.inst[i].field;\ + rmesa->hw.st.cmd[R300_FPI_CMD_0]=cmdpacket0(reg, fp->alu_end+1); + + OUTPUT_FIELD(fpi[0], R300_PFS_INSTR0_0, inst0); + OUTPUT_FIELD(fpi[1], R300_PFS_INSTR1_0, inst1); + OUTPUT_FIELD(fpi[2], R300_PFS_INSTR2_0, inst2); + OUTPUT_FIELD(fpi[3], R300_PFS_INSTR3_0, inst3); +#undef OUTPUT_FIELD + + R300_STATECHANGE(rmesa, fp); + /* I just want to say, the way these nodes are stored.. weird.. */ + for (i = 0, k = (4 - (fp->cur_node + 1)); i < 4; i++, k++) { + if (i < (fp->cur_node + 1)) { + rmesa->hw.fp.cmd[R300_FP_NODE0 + k] = + (fp->node[i]. + alu_offset << R300_PFS_NODE_ALU_OFFSET_SHIFT) + | (fp->node[i]. + alu_end << R300_PFS_NODE_ALU_END_SHIFT) + | (fp->node[i]. + tex_offset << R300_PFS_NODE_TEX_OFFSET_SHIFT) + | (fp->node[i]. + tex_end << R300_PFS_NODE_TEX_END_SHIFT) + | fp->node[i].flags; /* ( (k==3) ? R300_PFS_NODE_LAST_NODE : 0); */ + } else { + rmesa->hw.fp.cmd[R300_FP_NODE0 + (3 - i)] = 0; + } + } + + /* PFS_CNTL_0 */ + rmesa->hw.fp.cmd[R300_FP_CNTL0] = + fp->cur_node | (fp->first_node_has_tex << 3); + /* PFS_CNTL_1 */ + rmesa->hw.fp.cmd[R300_FP_CNTL1] = fp->max_temp_idx; + /* PFS_CNTL_2 */ + rmesa->hw.fp.cmd[R300_FP_CNTL2] = + (fp->alu_offset << R300_PFS_CNTL_ALU_OFFSET_SHIFT) + | (fp->alu_end << R300_PFS_CNTL_ALU_END_SHIFT) + | (fp->tex_offset << R300_PFS_CNTL_TEX_OFFSET_SHIFT) + | (fp->tex_end << R300_PFS_CNTL_TEX_END_SHIFT); + + R300_STATECHANGE(rmesa, fpp); + for (i = 0; i < fp->const_nr; i++) { + rmesa->hw.fpp.cmd[R300_FPP_PARAM_0 + 4 * i + 0] = + r300PackFloat24(fp->constant[i][0]); + rmesa->hw.fpp.cmd[R300_FPP_PARAM_0 + 4 * i + 1] = + r300PackFloat24(fp->constant[i][1]); + rmesa->hw.fpp.cmd[R300_FPP_PARAM_0 + 4 * i + 2] = + r300PackFloat24(fp->constant[i][2]); + rmesa->hw.fpp.cmd[R300_FPP_PARAM_0 + 4 * i + 3] = + r300PackFloat24(fp->constant[i][3]); + } + rmesa->hw.fpp.cmd[R300_FPP_CMD_0] = + cmdpacket0(R300_PFS_PARAM_0_X, fp->const_nr * 4); +} + +void r300UpdateShaderStates(r300ContextPtr rmesa) +{ + GLcontext *ctx; + ctx = rmesa->radeon.glCtx; + + r300UpdateTextureState(ctx); + + r300SetupPixelShader(rmesa); + r300SetupTextures(ctx); + + if ((rmesa->radeon.radeonScreen->chip_flags & RADEON_CHIPSET_TCL)) + r300SetupVertexShader(rmesa); + r300SetupRSUnit(ctx); +} + +/** + * Called by Mesa after an internal state update. + */ +static void r300InvalidateState(GLcontext * ctx, GLuint new_state) +{ + r300ContextPtr r300 = R300_CONTEXT(ctx); + + _swrast_InvalidateState(ctx, new_state); + _swsetup_InvalidateState(ctx, new_state); + _vbo_InvalidateState(ctx, new_state); + _tnl_InvalidateState(ctx, new_state); + _ae_invalidate_state(ctx, new_state); + + if (new_state & (_NEW_BUFFERS | _NEW_COLOR | _NEW_PIXEL)) { + r300UpdateDrawBuffer(ctx); + } + + r300UpdateStateParameters(ctx, new_state); + + r300->NewGLState |= new_state; +} + /** * Calculate initial hardware state and register state functions. * Assumes that the command buffer and state atoms have been diff --git a/src/mesa/drivers/dri/r300/r300_state.h b/src/mesa/drivers/dri/r300/r300_state.h index 311e97daa8c..21a49b7f361 100644 --- a/src/mesa/drivers/dri/r300/r300_state.h +++ b/src/mesa/drivers/dri/r300/r300_state.h @@ -58,20 +58,13 @@ do { \ \ } while (0) -extern void r300ResetHwState(r300ContextPtr r300); - extern void r300UpdateStateParameters(GLcontext * ctx, GLuint new_state); extern void r300InitState(r300ContextPtr r300); extern void r300InitStateFuncs(struct dd_function_table *functions); extern void r300UpdateViewportOffset(GLcontext * ctx); -extern void r300UpdateWindow(GLcontext * ctx); extern void r300UpdateDrawBuffer(GLcontext * ctx); -extern void r300SetupVertexShader(r300ContextPtr rmesa); extern void r300UpdateShaders(r300ContextPtr rmesa); extern void r300UpdateShaderStates(r300ContextPtr rmesa); -extern void r300PrintStateAtom(r300ContextPtr r300, - struct r300_state_atom *state); - #endif /* __R300_STATE_H__ */ -- cgit v1.2.3 From 33a73466ae1df4350cc26470056090c91a6edfe9 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Sun, 13 May 2007 12:36:27 +0000 Subject: r300: Added a TODO comment for the R300_VAP_INPUT_ROUTE_[01]_0 values. --- src/mesa/drivers/dri/r300/r300_ioctl.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_ioctl.c b/src/mesa/drivers/dri/r300/r300_ioctl.c index 76712b0b198..1adbc2c854b 100644 --- a/src/mesa/drivers/dri/r300/r300_ioctl.c +++ b/src/mesa/drivers/dri/r300/r300_ioctl.c @@ -194,6 +194,14 @@ static void r300EmitClearState(GLcontext * ctx) if (!(r300->radeon.radeonScreen->chip_flags & RADEON_CHIPSET_TCL)) has_tcl = 0; + /* FIXME: the values written to R300_VAP_INPUT_ROUTE_0_0 and + * R300_VAP_INPUT_ROUTE_0_1 are in fact known, however, the values are + * quite complex; see the functions in r300_emit.c. + * + * I believe it would be a good idea to extend the functions in + * r300_emit.c so that they can be used to setup the default values for + * these registers, as well as the actual values used for rendering. + */ R300_STATECHANGE(r300, vir[0]); reg_start(R300_VAP_INPUT_ROUTE_0_0, 0); if (!has_tcl) -- cgit v1.2.3 From 2189ff5e510689f74063b77a03881802ecd482c7 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Sun, 13 May 2007 12:43:40 +0000 Subject: r300: Use the defined values when writing to R300_SE_VTE_CNTL. You can verify this is correct with the following code. assert (0x043f == (R300_VTX_W0_FMT | R300_VPORT_X_SCALE_ENA | R300_VPORT_X_OFFSET_ENA | R300_VPORT_Y_SCALE_ENA | R300_VPORT_Y_OFFSET_ENA | R300_VPORT_Z_SCALE_ENA | R300_VPORT_Z_OFFSET_ENA)); --- src/mesa/drivers/dri/r300/r300_ioctl.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_ioctl.c b/src/mesa/drivers/dri/r300/r300_ioctl.c index 1adbc2c854b..9d828286a6d 100644 --- a/src/mesa/drivers/dri/r300/r300_ioctl.c +++ b/src/mesa/drivers/dri/r300/r300_ioctl.c @@ -228,7 +228,10 @@ static void r300EmitClearState(GLcontext * ctx) R300_STATECHANGE(r300, vte); /* comes from fglrx startup of clear */ reg_start(R300_SE_VTE_CNTL, 1); - e32(0x043f); + e32(R300_VTX_W0_FMT | R300_VPORT_X_SCALE_ENA | + R300_VPORT_X_OFFSET_ENA | R300_VPORT_Y_SCALE_ENA | + R300_VPORT_Y_OFFSET_ENA | R300_VPORT_Z_SCALE_ENA | + R300_VPORT_Z_OFFSET_ENA); e32(0x8); reg_start(0x21dc, 0); -- cgit v1.2.3 From 4e641bf3e938361a0c46304f29d040e9f5bc169e Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Sun, 13 May 2007 12:56:59 +0000 Subject: r300: Use the defined values when writing to R300_RS_ROUTE_0. --- src/mesa/drivers/dri/r300/r300_ioctl.c | 2 +- src/mesa/drivers/dri/r300/r300_reg.h | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_ioctl.c b/src/mesa/drivers/dri/r300/r300_ioctl.c index 9d828286a6d..09968bf239b 100644 --- a/src/mesa/drivers/dri/r300/r300_ioctl.c +++ b/src/mesa/drivers/dri/r300/r300_ioctl.c @@ -289,7 +289,7 @@ static void r300EmitClearState(GLcontext * ctx) R300_STATECHANGE(r300, rr); reg_start(R300_RS_ROUTE_0, 0); - e32(0x00004000); + e32(R300_RS_ROUTE_0_COLOR); R300_STATECHANGE(r300, fp); reg_start(R300_PFS_CNTL_0, 2); diff --git a/src/mesa/drivers/dri/r300/r300_reg.h b/src/mesa/drivers/dri/r300/r300_reg.h index 8ff362b9d21..0a31f0b9785 100644 --- a/src/mesa/drivers/dri/r300/r300_reg.h +++ b/src/mesa/drivers/dri/r300/r300_reg.h @@ -673,6 +673,11 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. /* Special handling for color: When the fragment program uses color, * the ROUTE_0_COLOR bit is set and ROUTE_0_COLOR_DEST contains the * color register index. + * + * Apperently you may set the R300_RS_ROUTE_0_COLOR bit, but not provide any + * R300_RS_ROUTE_0_COLOR_DEST value; this setup is used for clearing the state. + * See r300_ioctl.c:r300EmitClearState. I'm not sure if this setup is strictly + * correct or not. - Oliver. */ # define R300_RS_ROUTE_0_COLOR (1 << 14) # define R300_RS_ROUTE_0_COLOR_DEST_SHIFT 17 -- cgit v1.2.3 From 0e7e2110550824ab12b04fb0d1aa9651b6719917 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Sun, 13 May 2007 12:59:41 +0000 Subject: r300: Use e32(0x0) rather than e32(0); makes greping for hex values easier. --- src/mesa/drivers/dri/r300/r300_ioctl.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_ioctl.c b/src/mesa/drivers/dri/r300/r300_ioctl.c index 09968bf239b..416ea7f231d 100644 --- a/src/mesa/drivers/dri/r300/r300_ioctl.c +++ b/src/mesa/drivers/dri/r300/r300_ioctl.c @@ -114,7 +114,7 @@ static void r300ClearBuffer(r300ContextPtr r300, int flags, int buffer) (ctx->Color.ColorMask[RCOMP] ? R300_COLORMASK0_R : 0) | (ctx->Color.ColorMask[ACOMP] ? R300_COLORMASK0_A : 0)); } else { - e32(0); + e32(0x0); } R300_STATECHANGE(r300, zs); @@ -242,11 +242,11 @@ static void r300EmitClearState(GLcontext * ctx) reg_start(R300_VAP_OUTPUT_VTX_FMT_0, 1); e32(R300_VAP_OUTPUT_VTX_FMT_0__POS_PRESENT | R300_VAP_OUTPUT_VTX_FMT_0__COLOR_PRESENT); - e32(0); /* no textures */ + e32(0x0); /* no textures */ R300_STATECHANGE(r300, txe); reg_start(R300_TX_ENABLE, 0); - e32(0); + e32(0x0); R300_STATECHANGE(r300, vpt); reg_start(R300_SE_VPORT_XSCALE, 5); @@ -259,12 +259,12 @@ static void r300EmitClearState(GLcontext * ctx) R300_STATECHANGE(r300, at); reg_start(R300_PP_ALPHA_TEST, 0); - e32(0); + e32(0x0); R300_STATECHANGE(r300, bld); reg_start(R300_RB3D_CBLEND, 1); - e32(0); - e32(0); + e32(0x0); + e32(0x0); R300_STATECHANGE(r300, unk221C); reg_start(R300_VAP_UNKNOWN_221C, 0); @@ -285,7 +285,7 @@ static void r300EmitClearState(GLcontext * ctx) /* The second constant is needed to get glxgears display anything .. */ reg_start(R300_RS_CNTL_0, 1); e32((1 << R300_RS_CNTL_CI_CNT_SHIFT) | R300_RS_CNTL_0_UNKNOWN_18); - e32(0); + e32(0x0); R300_STATECHANGE(r300, rr); reg_start(R300_RS_ROUTE_0, 0); @@ -293,13 +293,13 @@ static void r300EmitClearState(GLcontext * ctx) R300_STATECHANGE(r300, fp); reg_start(R300_PFS_CNTL_0, 2); - e32(0); - e32(0); - e32(0); + e32(0x0); + e32(0x0); + e32(0x0); reg_start(R300_PFS_NODE_0, 3); - e32(0); - e32(0); - e32(0); + e32(0x0); + e32(0x0); + e32(0x0); e32(R300_PFS_NODE_OUTPUT_COLOR); R300_STATECHANGE(r300, fpi[0]); @@ -325,7 +325,7 @@ static void r300EmitClearState(GLcontext * ctx) e32((0 << R300_PVS_CNTL_1_PROGRAM_START_SHIFT) | (0 << R300_PVS_CNTL_1_POS_END_SHIFT) | (1 << R300_PVS_CNTL_1_PROGRAM_END_SHIFT)); - e32(0); + e32(0x0); e32(1 << R300_PVS_CNTL_3_PROGRAM_UNKNOWN_SHIFT); R300_STATECHANGE(r300, vpi); @@ -333,12 +333,12 @@ static void r300EmitClearState(GLcontext * ctx) e32(VP_OUT(ADD, OUT, 0, XYZW)); e32(VP_IN(IN, 0)); e32(VP_ZERO()); - e32(0); + e32(0x0); e32(VP_OUT(ADD, OUT, 1, XYZW)); e32(VP_IN(IN, 1)); e32(VP_ZERO()); - e32(0); + e32(0x0); } } -- cgit v1.2.3 From 524c3336c494be4d556c1685951bf8200e5f5047 Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Sun, 13 May 2007 13:38:38 +0000 Subject: r300: Enable the non-user-buffers code to compile. --- src/mesa/drivers/dri/r300/r300_context.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_context.h b/src/mesa/drivers/dri/r300/r300_context.h index cc065bb04d2..13b943f75fc 100644 --- a/src/mesa/drivers/dri/r300/r300_context.h +++ b/src/mesa/drivers/dri/r300/r300_context.h @@ -872,9 +872,10 @@ struct r300_context { #ifdef USER_BUFFERS struct r300_memory_manager *rmm; +#endif + GLvector4f dummy_attrib[_TNL_ATTRIB_MAX]; GLvector4f *temp_attrib[_TNL_ATTRIB_MAX]; -#endif GLboolean disable_lowimpact_fallback; }; -- cgit v1.2.3 From bb372f1c9bc08e8b0dca983cb4ba36b2f2f039fb Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Wed, 16 May 2007 15:34:22 -0700 Subject: Initial implementation of MESA_texture_array Shadow sampling from texture arrays is still not implemented. Everything else should be there, though. --- src/mesa/drivers/dri/common/extension_helper.h | 14 + src/mesa/glapi/EXT_framebuffer_object.xml | 42 +- src/mesa/glapi/dispatch.h | 17 +- src/mesa/glapi/glapioffsets.h | 12 +- src/mesa/glapi/glapitable.h | 9 +- src/mesa/glapi/glapitemp.h | 24 +- src/mesa/glapi/glprocs.h | 552 +-- src/mesa/main/attrib.c | 12 + src/mesa/main/config.h | 3 + src/mesa/main/context.c | 11 + src/mesa/main/enable.c | 16 + src/mesa/main/enums.c | 5319 ++++++++++++------------ src/mesa/main/extensions.c | 2 + src/mesa/main/fbobject.c | 36 +- src/mesa/main/fbobject.h | 4 + src/mesa/main/get_gen.py | 6 + src/mesa/main/mipmap.c | 148 +- src/mesa/main/mtypes.h | 35 +- src/mesa/main/state.c | 5 + src/mesa/main/teximage.c | 152 +- src/mesa/main/texobj.c | 50 +- src/mesa/main/texrender.c | 45 +- src/mesa/main/texstate.c | 46 + src/mesa/shader/arbprogparse.c | 22 +- src/mesa/shader/arbprogram.syn | 21 +- src/mesa/shader/arbprogram_syn.h | 15 +- src/mesa/sparc/glapi_sparc.S | 6 +- src/mesa/swrast/s_texfilter.c | 811 +++- src/mesa/x86-64/glapi_x86-64.S | 63 +- src/mesa/x86/glapi_x86.S | 13 +- 30 files changed, 4434 insertions(+), 3077 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/common/extension_helper.h b/src/mesa/drivers/dri/common/extension_helper.h index c7984964255..10f75edaaa4 100644 --- a/src/mesa/drivers/dri/common/extension_helper.h +++ b/src/mesa/drivers/dri/common/extension_helper.h @@ -440,6 +440,13 @@ static const char Color4ubVertex3fvSUN_names[] = ""; #endif +#if defined(need_GL_EXT_texture_array) +static const char FramebufferTextureLayerEXT_names[] = + "iiiii\0" /* Parameter signature */ + "glFramebufferTextureLayerEXT\0" + ""; +#endif + #if defined(need_GL_SGIX_list_priority) static const char GetListParameterivSGIX_names[] = "iip\0" /* Parameter signature */ @@ -5479,6 +5486,13 @@ static const struct dri_extension_function GL_EXT_texture3D_functions[] = { }; #endif +#if defined(need_GL_EXT_texture_array) +static const struct dri_extension_function GL_EXT_texture_array_functions[] = { + { FramebufferTextureLayerEXT_names, FramebufferTextureLayerEXT_remap_index, -1 }, + { NULL, 0, 0 } +}; +#endif + #if defined(need_GL_EXT_texture_object) static const struct dri_extension_function GL_EXT_texture_object_functions[] = { { PrioritizeTextures_names, -1, 331 }, diff --git a/src/mesa/glapi/EXT_framebuffer_object.xml b/src/mesa/glapi/EXT_framebuffer_object.xml index d2a18b64240..66f250c003f 100644 --- a/src/mesa/glapi/EXT_framebuffer_object.xml +++ b/src/mesa/glapi/EXT_framebuffer_object.xml @@ -172,8 +172,7 @@ - + @@ -186,4 +185,43 @@ offset="assign"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mesa/glapi/dispatch.h b/src/mesa/glapi/dispatch.h index a128164323a..0ce59f7b99c 100644 --- a/src/mesa/glapi/dispatch.h +++ b/src/mesa/glapi/dispatch.h @@ -2362,6 +2362,9 @@ #define CALL_BlitFramebufferEXT(disp, parameters) (*((disp)->BlitFramebufferEXT)) parameters #define GET_BlitFramebufferEXT(disp) ((disp)->BlitFramebufferEXT) #define SET_BlitFramebufferEXT(disp, fn) ((disp)->BlitFramebufferEXT = fn) +#define CALL_FramebufferTextureLayerEXT(disp, parameters) (*((disp)->FramebufferTextureLayerEXT)) parameters +#define GET_FramebufferTextureLayerEXT(disp) ((disp)->FramebufferTextureLayerEXT) +#define SET_FramebufferTextureLayerEXT(disp, fn) ((disp)->FramebufferTextureLayerEXT = fn) #define CALL_ProgramEnvParameters4fvEXT(disp, parameters) (*((disp)->ProgramEnvParameters4fvEXT)) parameters #define GET_ProgramEnvParameters4fvEXT(disp) ((disp)->ProgramEnvParameters4fvEXT) #define SET_ProgramEnvParameters4fvEXT(disp, fn) ((disp)->ProgramEnvParameters4fvEXT = fn) @@ -2377,7 +2380,7 @@ #else -#define driDispatchRemapTable_size 364 +#define driDispatchRemapTable_size 365 extern int driDispatchRemapTable[ driDispatchRemapTable_size ]; #define AttachShader_remap_index 0 @@ -2740,10 +2743,11 @@ extern int driDispatchRemapTable[ driDispatchRemapTable_size ]; #define IsRenderbufferEXT_remap_index 357 #define RenderbufferStorageEXT_remap_index 358 #define BlitFramebufferEXT_remap_index 359 -#define ProgramEnvParameters4fvEXT_remap_index 360 -#define ProgramLocalParameters4fvEXT_remap_index 361 -#define GetQueryObjecti64vEXT_remap_index 362 -#define GetQueryObjectui64vEXT_remap_index 363 +#define FramebufferTextureLayerEXT_remap_index 360 +#define ProgramEnvParameters4fvEXT_remap_index 361 +#define ProgramLocalParameters4fvEXT_remap_index 362 +#define GetQueryObjecti64vEXT_remap_index 363 +#define GetQueryObjectui64vEXT_remap_index 364 #define CALL_AttachShader(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint)), driDispatchRemapTable[AttachShader_remap_index], parameters) #define GET_AttachShader(disp) GET_by_offset(disp, driDispatchRemapTable[AttachShader_remap_index]) @@ -3825,6 +3829,9 @@ extern int driDispatchRemapTable[ driDispatchRemapTable_size ]; #define CALL_BlitFramebufferEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum)), driDispatchRemapTable[BlitFramebufferEXT_remap_index], parameters) #define GET_BlitFramebufferEXT(disp) GET_by_offset(disp, driDispatchRemapTable[BlitFramebufferEXT_remap_index]) #define SET_BlitFramebufferEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BlitFramebufferEXT_remap_index], fn) +#define CALL_FramebufferTextureLayerEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLuint, GLint, GLint)), driDispatchRemapTable[FramebufferTextureLayerEXT_remap_index], parameters) +#define GET_FramebufferTextureLayerEXT(disp) GET_by_offset(disp, driDispatchRemapTable[FramebufferTextureLayerEXT_remap_index]) +#define SET_FramebufferTextureLayerEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FramebufferTextureLayerEXT_remap_index], fn) #define CALL_ProgramEnvParameters4fvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLsizei, const GLfloat *)), driDispatchRemapTable[ProgramEnvParameters4fvEXT_remap_index], parameters) #define GET_ProgramEnvParameters4fvEXT(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramEnvParameters4fvEXT_remap_index]) #define SET_ProgramEnvParameters4fvEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramEnvParameters4fvEXT_remap_index], fn) diff --git a/src/mesa/glapi/glapioffsets.h b/src/mesa/glapi/glapioffsets.h index cb0d21083ef..c207a06ac46 100644 --- a/src/mesa/glapi/glapioffsets.h +++ b/src/mesa/glapi/glapioffsets.h @@ -800,11 +800,12 @@ #define _gloffset_IsRenderbufferEXT 765 #define _gloffset_RenderbufferStorageEXT 766 #define _gloffset_BlitFramebufferEXT 767 -#define _gloffset_ProgramEnvParameters4fvEXT 768 -#define _gloffset_ProgramLocalParameters4fvEXT 769 -#define _gloffset_GetQueryObjecti64vEXT 770 -#define _gloffset_GetQueryObjectui64vEXT 771 -#define _gloffset_FIRST_DYNAMIC 772 +#define _gloffset_FramebufferTextureLayerEXT 768 +#define _gloffset_ProgramEnvParameters4fvEXT 769 +#define _gloffset_ProgramLocalParameters4fvEXT 770 +#define _gloffset_GetQueryObjecti64vEXT 771 +#define _gloffset_GetQueryObjectui64vEXT 772 +#define _gloffset_FIRST_DYNAMIC 773 #else @@ -1168,6 +1169,7 @@ #define _gloffset_IsRenderbufferEXT driDispatchRemapTable[IsRenderbufferEXT_remap_index] #define _gloffset_RenderbufferStorageEXT driDispatchRemapTable[RenderbufferStorageEXT_remap_index] #define _gloffset_BlitFramebufferEXT driDispatchRemapTable[BlitFramebufferEXT_remap_index] +#define _gloffset_FramebufferTextureLayerEXT driDispatchRemapTable[FramebufferTextureLayerEXT_remap_index] #define _gloffset_ProgramEnvParameters4fvEXT driDispatchRemapTable[ProgramEnvParameters4fvEXT_remap_index] #define _gloffset_ProgramLocalParameters4fvEXT driDispatchRemapTable[ProgramLocalParameters4fvEXT_remap_index] #define _gloffset_GetQueryObjecti64vEXT driDispatchRemapTable[GetQueryObjecti64vEXT_remap_index] diff --git a/src/mesa/glapi/glapitable.h b/src/mesa/glapi/glapitable.h index 4af0c2d43b8..1e4c2949e46 100644 --- a/src/mesa/glapi/glapitable.h +++ b/src/mesa/glapi/glapitable.h @@ -809,10 +809,11 @@ struct _glapi_table GLboolean (GLAPIENTRYP IsRenderbufferEXT)(GLuint renderbuffer); /* 765 */ void (GLAPIENTRYP RenderbufferStorageEXT)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); /* 766 */ void (GLAPIENTRYP BlitFramebufferEXT)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); /* 767 */ - void (GLAPIENTRYP ProgramEnvParameters4fvEXT)(GLenum target, GLuint index, GLsizei count, const GLfloat * params); /* 768 */ - void (GLAPIENTRYP ProgramLocalParameters4fvEXT)(GLenum target, GLuint index, GLsizei count, const GLfloat * params); /* 769 */ - void (GLAPIENTRYP GetQueryObjecti64vEXT)(GLuint id, GLenum pname, GLint64EXT * params); /* 770 */ - void (GLAPIENTRYP GetQueryObjectui64vEXT)(GLuint id, GLenum pname, GLuint64EXT * params); /* 771 */ + void (GLAPIENTRYP FramebufferTextureLayerEXT)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); /* 768 */ + void (GLAPIENTRYP ProgramEnvParameters4fvEXT)(GLenum target, GLuint index, GLsizei count, const GLfloat * params); /* 769 */ + void (GLAPIENTRYP ProgramLocalParameters4fvEXT)(GLenum target, GLuint index, GLsizei count, const GLfloat * params); /* 770 */ + void (GLAPIENTRYP GetQueryObjecti64vEXT)(GLuint id, GLenum pname, GLint64EXT * params); /* 771 */ + void (GLAPIENTRYP GetQueryObjectui64vEXT)(GLuint id, GLenum pname, GLuint64EXT * params); /* 772 */ }; #endif /* !defined( _GLAPI_TABLE_H_ ) */ diff --git a/src/mesa/glapi/glapitemp.h b/src/mesa/glapi/glapitemp.h index 62407968ccc..2a2fe2a35df 100644 --- a/src/mesa/glapi/glapitemp.h +++ b/src/mesa/glapi/glapitemp.h @@ -5416,30 +5416,35 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_767)(GLint srcX0, GLint srcY0, GL DISPATCH(BlitFramebufferEXT, (srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter), (F, "glBlitFramebufferEXT(%d, %d, %d, %d, %d, %d, %d, %d, %d, 0x%x);\n", srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_768)(GLenum target, GLuint index, GLsizei count, const GLfloat * params); - -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_768)(GLenum target, GLuint index, GLsizei count, const GLfloat * params) +KEYWORD1 void KEYWORD2 NAME(FramebufferTextureLayerEXT)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer) { - DISPATCH(ProgramEnvParameters4fvEXT, (target, index, count, params), (F, "glProgramEnvParameters4fvEXT(0x%x, %d, %d, %p);\n", target, index, count, (const void *) params)); + DISPATCH(FramebufferTextureLayerEXT, (target, attachment, texture, level, layer), (F, "glFramebufferTextureLayerEXT(0x%x, 0x%x, %d, %d, %d);\n", target, attachment, texture, level, layer)); } KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_769)(GLenum target, GLuint index, GLsizei count, const GLfloat * params); KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_769)(GLenum target, GLuint index, GLsizei count, const GLfloat * params) +{ + DISPATCH(ProgramEnvParameters4fvEXT, (target, index, count, params), (F, "glProgramEnvParameters4fvEXT(0x%x, %d, %d, %p);\n", target, index, count, (const void *) params)); +} + +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_770)(GLenum target, GLuint index, GLsizei count, const GLfloat * params); + +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_770)(GLenum target, GLuint index, GLsizei count, const GLfloat * params) { DISPATCH(ProgramLocalParameters4fvEXT, (target, index, count, params), (F, "glProgramLocalParameters4fvEXT(0x%x, %d, %d, %p);\n", target, index, count, (const void *) params)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_770)(GLuint id, GLenum pname, GLint64EXT * params); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_771)(GLuint id, GLenum pname, GLint64EXT * params); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_770)(GLuint id, GLenum pname, GLint64EXT * params) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_771)(GLuint id, GLenum pname, GLint64EXT * params) { DISPATCH(GetQueryObjecti64vEXT, (id, pname, params), (F, "glGetQueryObjecti64vEXT(%d, 0x%x, %p);\n", id, pname, (const void *) params)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_771)(GLuint id, GLenum pname, GLuint64EXT * params); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_772)(GLuint id, GLenum pname, GLuint64EXT * params); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_771)(GLuint id, GLenum pname, GLuint64EXT * params) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_772)(GLuint id, GLenum pname, GLuint64EXT * params) { DISPATCH(GetQueryObjectui64vEXT, (id, pname, params), (F, "glGetQueryObjectui64vEXT(%d, 0x%x, %p);\n", id, pname, (const void *) params)); } @@ -6226,10 +6231,11 @@ static _glapi_proc DISPATCH_TABLE_NAME[] = { TABLE_ENTRY(IsRenderbufferEXT), TABLE_ENTRY(RenderbufferStorageEXT), TABLE_ENTRY(_dispatch_stub_767), - TABLE_ENTRY(_dispatch_stub_768), + TABLE_ENTRY(FramebufferTextureLayerEXT), TABLE_ENTRY(_dispatch_stub_769), TABLE_ENTRY(_dispatch_stub_770), TABLE_ENTRY(_dispatch_stub_771), + TABLE_ENTRY(_dispatch_stub_772), /* A whole bunch of no-op functions. These might be called * when someone tries to call a dynamically-registered * extension function without a current rendering context. diff --git a/src/mesa/glapi/glprocs.h b/src/mesa/glapi/glprocs.h index 190d9ed149b..b6651a6bf4b 100644 --- a/src/mesa/glapi/glprocs.h +++ b/src/mesa/glapi/glprocs.h @@ -820,6 +820,7 @@ static const char gl_string_table[] = "glIsRenderbufferEXT\0" "glRenderbufferStorageEXT\0" "glBlitFramebufferEXT\0" + "glFramebufferTextureLayerEXT\0" "glProgramEnvParameters4fvEXT\0" "glProgramLocalParameters4fvEXT\0" "glGetQueryObjecti64vEXT\0" @@ -1138,10 +1139,10 @@ static const char gl_string_table[] = #define gl_dispatch_stub_748 mgl_dispatch_stub_748 #define gl_dispatch_stub_749 mgl_dispatch_stub_749 #define gl_dispatch_stub_767 mgl_dispatch_stub_767 -#define gl_dispatch_stub_768 mgl_dispatch_stub_768 #define gl_dispatch_stub_769 mgl_dispatch_stub_769 #define gl_dispatch_stub_770 mgl_dispatch_stub_770 #define gl_dispatch_stub_771 mgl_dispatch_stub_771 +#define gl_dispatch_stub_772 mgl_dispatch_stub_772 #endif /* USE_MGL_NAMESPACE */ @@ -1188,10 +1189,10 @@ extern void gl_dispatch_stub_741(void); extern void gl_dispatch_stub_748(void); extern void gl_dispatch_stub_749(void); extern void gl_dispatch_stub_767(void); -extern void gl_dispatch_stub_768(void); extern void gl_dispatch_stub_769(void); extern void gl_dispatch_stub_770(void); extern void gl_dispatch_stub_771(void); +extern void gl_dispatch_stub_772(void); #endif /* defined(NEED_FUNCTION_POINTER) || defined(GLX_INDIRECT_RENDERING) */ static const glprocs_table_t static_functions[] = { @@ -1963,279 +1964,280 @@ static const glprocs_table_t static_functions[] = { NAME_FUNC_OFFSET(13404, glIsRenderbufferEXT, glIsRenderbufferEXT, NULL, _gloffset_IsRenderbufferEXT), NAME_FUNC_OFFSET(13424, glRenderbufferStorageEXT, glRenderbufferStorageEXT, NULL, _gloffset_RenderbufferStorageEXT), NAME_FUNC_OFFSET(13449, gl_dispatch_stub_767, gl_dispatch_stub_767, NULL, _gloffset_BlitFramebufferEXT), - NAME_FUNC_OFFSET(13470, gl_dispatch_stub_768, gl_dispatch_stub_768, NULL, _gloffset_ProgramEnvParameters4fvEXT), - NAME_FUNC_OFFSET(13499, gl_dispatch_stub_769, gl_dispatch_stub_769, NULL, _gloffset_ProgramLocalParameters4fvEXT), - NAME_FUNC_OFFSET(13530, gl_dispatch_stub_770, gl_dispatch_stub_770, NULL, _gloffset_GetQueryObjecti64vEXT), - NAME_FUNC_OFFSET(13554, gl_dispatch_stub_771, gl_dispatch_stub_771, NULL, _gloffset_GetQueryObjectui64vEXT), - NAME_FUNC_OFFSET(13579, glArrayElement, glArrayElement, NULL, _gloffset_ArrayElement), - NAME_FUNC_OFFSET(13597, glBindTexture, glBindTexture, NULL, _gloffset_BindTexture), - NAME_FUNC_OFFSET(13614, glDrawArrays, glDrawArrays, NULL, _gloffset_DrawArrays), - NAME_FUNC_OFFSET(13630, glAreTexturesResident, glAreTexturesResidentEXT, glAreTexturesResidentEXT, _gloffset_AreTexturesResident), - NAME_FUNC_OFFSET(13655, glCopyTexImage1D, glCopyTexImage1D, NULL, _gloffset_CopyTexImage1D), - NAME_FUNC_OFFSET(13675, glCopyTexImage2D, glCopyTexImage2D, NULL, _gloffset_CopyTexImage2D), - NAME_FUNC_OFFSET(13695, glCopyTexSubImage1D, glCopyTexSubImage1D, NULL, _gloffset_CopyTexSubImage1D), - NAME_FUNC_OFFSET(13718, glCopyTexSubImage2D, glCopyTexSubImage2D, NULL, _gloffset_CopyTexSubImage2D), - NAME_FUNC_OFFSET(13741, glDeleteTextures, glDeleteTexturesEXT, glDeleteTexturesEXT, _gloffset_DeleteTextures), - NAME_FUNC_OFFSET(13761, glGenTextures, glGenTexturesEXT, glGenTexturesEXT, _gloffset_GenTextures), - NAME_FUNC_OFFSET(13778, glGetPointerv, glGetPointerv, NULL, _gloffset_GetPointerv), - NAME_FUNC_OFFSET(13795, glIsTexture, glIsTextureEXT, glIsTextureEXT, _gloffset_IsTexture), - NAME_FUNC_OFFSET(13810, glPrioritizeTextures, glPrioritizeTextures, NULL, _gloffset_PrioritizeTextures), - NAME_FUNC_OFFSET(13834, glTexSubImage1D, glTexSubImage1D, NULL, _gloffset_TexSubImage1D), - NAME_FUNC_OFFSET(13853, glTexSubImage2D, glTexSubImage2D, NULL, _gloffset_TexSubImage2D), - NAME_FUNC_OFFSET(13872, glBlendColor, glBlendColor, NULL, _gloffset_BlendColor), - NAME_FUNC_OFFSET(13888, glBlendEquation, glBlendEquation, NULL, _gloffset_BlendEquation), - NAME_FUNC_OFFSET(13907, glDrawRangeElements, glDrawRangeElements, NULL, _gloffset_DrawRangeElements), - NAME_FUNC_OFFSET(13930, glColorTable, glColorTable, NULL, _gloffset_ColorTable), - NAME_FUNC_OFFSET(13946, glColorTable, glColorTable, NULL, _gloffset_ColorTable), - NAME_FUNC_OFFSET(13962, glColorTableParameterfv, glColorTableParameterfv, NULL, _gloffset_ColorTableParameterfv), - NAME_FUNC_OFFSET(13989, glColorTableParameteriv, glColorTableParameteriv, NULL, _gloffset_ColorTableParameteriv), - NAME_FUNC_OFFSET(14016, glCopyColorTable, glCopyColorTable, NULL, _gloffset_CopyColorTable), - NAME_FUNC_OFFSET(14036, glGetColorTable, glGetColorTableEXT, glGetColorTableEXT, _gloffset_GetColorTable), - NAME_FUNC_OFFSET(14055, glGetColorTable, glGetColorTableEXT, glGetColorTableEXT, _gloffset_GetColorTable), - NAME_FUNC_OFFSET(14074, glGetColorTableParameterfv, glGetColorTableParameterfvEXT, glGetColorTableParameterfvEXT, _gloffset_GetColorTableParameterfv), - NAME_FUNC_OFFSET(14104, glGetColorTableParameterfv, glGetColorTableParameterfvEXT, glGetColorTableParameterfvEXT, _gloffset_GetColorTableParameterfv), - NAME_FUNC_OFFSET(14134, glGetColorTableParameteriv, glGetColorTableParameterivEXT, glGetColorTableParameterivEXT, _gloffset_GetColorTableParameteriv), - NAME_FUNC_OFFSET(14164, glGetColorTableParameteriv, glGetColorTableParameterivEXT, glGetColorTableParameterivEXT, _gloffset_GetColorTableParameteriv), - NAME_FUNC_OFFSET(14194, glColorSubTable, glColorSubTable, NULL, _gloffset_ColorSubTable), - NAME_FUNC_OFFSET(14213, glCopyColorSubTable, glCopyColorSubTable, NULL, _gloffset_CopyColorSubTable), - NAME_FUNC_OFFSET(14236, glConvolutionFilter1D, glConvolutionFilter1D, NULL, _gloffset_ConvolutionFilter1D), - NAME_FUNC_OFFSET(14261, glConvolutionFilter2D, glConvolutionFilter2D, NULL, _gloffset_ConvolutionFilter2D), - NAME_FUNC_OFFSET(14286, glConvolutionParameterf, glConvolutionParameterf, NULL, _gloffset_ConvolutionParameterf), - NAME_FUNC_OFFSET(14313, glConvolutionParameterfv, glConvolutionParameterfv, NULL, _gloffset_ConvolutionParameterfv), - NAME_FUNC_OFFSET(14341, glConvolutionParameteri, glConvolutionParameteri, NULL, _gloffset_ConvolutionParameteri), - NAME_FUNC_OFFSET(14368, glConvolutionParameteriv, glConvolutionParameteriv, NULL, _gloffset_ConvolutionParameteriv), - NAME_FUNC_OFFSET(14396, glCopyConvolutionFilter1D, glCopyConvolutionFilter1D, NULL, _gloffset_CopyConvolutionFilter1D), - NAME_FUNC_OFFSET(14425, glCopyConvolutionFilter2D, glCopyConvolutionFilter2D, NULL, _gloffset_CopyConvolutionFilter2D), - NAME_FUNC_OFFSET(14454, glGetConvolutionFilter, gl_dispatch_stub_356, gl_dispatch_stub_356, _gloffset_GetConvolutionFilter), - NAME_FUNC_OFFSET(14480, glGetConvolutionParameterfv, gl_dispatch_stub_357, gl_dispatch_stub_357, _gloffset_GetConvolutionParameterfv), - NAME_FUNC_OFFSET(14511, glGetConvolutionParameteriv, gl_dispatch_stub_358, gl_dispatch_stub_358, _gloffset_GetConvolutionParameteriv), - NAME_FUNC_OFFSET(14542, glGetSeparableFilter, gl_dispatch_stub_359, gl_dispatch_stub_359, _gloffset_GetSeparableFilter), - NAME_FUNC_OFFSET(14566, glSeparableFilter2D, glSeparableFilter2D, NULL, _gloffset_SeparableFilter2D), - NAME_FUNC_OFFSET(14589, glGetHistogram, gl_dispatch_stub_361, gl_dispatch_stub_361, _gloffset_GetHistogram), - NAME_FUNC_OFFSET(14607, glGetHistogramParameterfv, gl_dispatch_stub_362, gl_dispatch_stub_362, _gloffset_GetHistogramParameterfv), - NAME_FUNC_OFFSET(14636, glGetHistogramParameteriv, gl_dispatch_stub_363, gl_dispatch_stub_363, _gloffset_GetHistogramParameteriv), - NAME_FUNC_OFFSET(14665, glGetMinmax, gl_dispatch_stub_364, gl_dispatch_stub_364, _gloffset_GetMinmax), - NAME_FUNC_OFFSET(14680, glGetMinmaxParameterfv, gl_dispatch_stub_365, gl_dispatch_stub_365, _gloffset_GetMinmaxParameterfv), - NAME_FUNC_OFFSET(14706, glGetMinmaxParameteriv, gl_dispatch_stub_366, gl_dispatch_stub_366, _gloffset_GetMinmaxParameteriv), - NAME_FUNC_OFFSET(14732, glHistogram, glHistogram, NULL, _gloffset_Histogram), - NAME_FUNC_OFFSET(14747, glMinmax, glMinmax, NULL, _gloffset_Minmax), - NAME_FUNC_OFFSET(14759, glResetHistogram, glResetHistogram, NULL, _gloffset_ResetHistogram), - NAME_FUNC_OFFSET(14779, glResetMinmax, glResetMinmax, NULL, _gloffset_ResetMinmax), - NAME_FUNC_OFFSET(14796, glTexImage3D, glTexImage3D, NULL, _gloffset_TexImage3D), - NAME_FUNC_OFFSET(14812, glTexSubImage3D, glTexSubImage3D, NULL, _gloffset_TexSubImage3D), - NAME_FUNC_OFFSET(14831, glCopyTexSubImage3D, glCopyTexSubImage3D, NULL, _gloffset_CopyTexSubImage3D), - NAME_FUNC_OFFSET(14854, glActiveTextureARB, glActiveTextureARB, NULL, _gloffset_ActiveTextureARB), - NAME_FUNC_OFFSET(14870, glClientActiveTextureARB, glClientActiveTextureARB, NULL, _gloffset_ClientActiveTextureARB), - NAME_FUNC_OFFSET(14892, glMultiTexCoord1dARB, glMultiTexCoord1dARB, NULL, _gloffset_MultiTexCoord1dARB), - NAME_FUNC_OFFSET(14910, glMultiTexCoord1dvARB, glMultiTexCoord1dvARB, NULL, _gloffset_MultiTexCoord1dvARB), - NAME_FUNC_OFFSET(14929, glMultiTexCoord1fARB, glMultiTexCoord1fARB, NULL, _gloffset_MultiTexCoord1fARB), - NAME_FUNC_OFFSET(14947, glMultiTexCoord1fvARB, glMultiTexCoord1fvARB, NULL, _gloffset_MultiTexCoord1fvARB), - NAME_FUNC_OFFSET(14966, glMultiTexCoord1iARB, glMultiTexCoord1iARB, NULL, _gloffset_MultiTexCoord1iARB), - NAME_FUNC_OFFSET(14984, glMultiTexCoord1ivARB, glMultiTexCoord1ivARB, NULL, _gloffset_MultiTexCoord1ivARB), - NAME_FUNC_OFFSET(15003, glMultiTexCoord1sARB, glMultiTexCoord1sARB, NULL, _gloffset_MultiTexCoord1sARB), - NAME_FUNC_OFFSET(15021, glMultiTexCoord1svARB, glMultiTexCoord1svARB, NULL, _gloffset_MultiTexCoord1svARB), - NAME_FUNC_OFFSET(15040, glMultiTexCoord2dARB, glMultiTexCoord2dARB, NULL, _gloffset_MultiTexCoord2dARB), - NAME_FUNC_OFFSET(15058, glMultiTexCoord2dvARB, glMultiTexCoord2dvARB, NULL, _gloffset_MultiTexCoord2dvARB), - NAME_FUNC_OFFSET(15077, glMultiTexCoord2fARB, glMultiTexCoord2fARB, NULL, _gloffset_MultiTexCoord2fARB), - NAME_FUNC_OFFSET(15095, glMultiTexCoord2fvARB, glMultiTexCoord2fvARB, NULL, _gloffset_MultiTexCoord2fvARB), - NAME_FUNC_OFFSET(15114, glMultiTexCoord2iARB, glMultiTexCoord2iARB, NULL, _gloffset_MultiTexCoord2iARB), - NAME_FUNC_OFFSET(15132, glMultiTexCoord2ivARB, glMultiTexCoord2ivARB, NULL, _gloffset_MultiTexCoord2ivARB), - NAME_FUNC_OFFSET(15151, glMultiTexCoord2sARB, glMultiTexCoord2sARB, NULL, _gloffset_MultiTexCoord2sARB), - NAME_FUNC_OFFSET(15169, glMultiTexCoord2svARB, glMultiTexCoord2svARB, NULL, _gloffset_MultiTexCoord2svARB), - NAME_FUNC_OFFSET(15188, glMultiTexCoord3dARB, glMultiTexCoord3dARB, NULL, _gloffset_MultiTexCoord3dARB), - NAME_FUNC_OFFSET(15206, glMultiTexCoord3dvARB, glMultiTexCoord3dvARB, NULL, _gloffset_MultiTexCoord3dvARB), - NAME_FUNC_OFFSET(15225, glMultiTexCoord3fARB, glMultiTexCoord3fARB, NULL, _gloffset_MultiTexCoord3fARB), - NAME_FUNC_OFFSET(15243, glMultiTexCoord3fvARB, glMultiTexCoord3fvARB, NULL, _gloffset_MultiTexCoord3fvARB), - NAME_FUNC_OFFSET(15262, glMultiTexCoord3iARB, glMultiTexCoord3iARB, NULL, _gloffset_MultiTexCoord3iARB), - NAME_FUNC_OFFSET(15280, glMultiTexCoord3ivARB, glMultiTexCoord3ivARB, NULL, _gloffset_MultiTexCoord3ivARB), - NAME_FUNC_OFFSET(15299, glMultiTexCoord3sARB, glMultiTexCoord3sARB, NULL, _gloffset_MultiTexCoord3sARB), - NAME_FUNC_OFFSET(15317, glMultiTexCoord3svARB, glMultiTexCoord3svARB, NULL, _gloffset_MultiTexCoord3svARB), - NAME_FUNC_OFFSET(15336, glMultiTexCoord4dARB, glMultiTexCoord4dARB, NULL, _gloffset_MultiTexCoord4dARB), - NAME_FUNC_OFFSET(15354, glMultiTexCoord4dvARB, glMultiTexCoord4dvARB, NULL, _gloffset_MultiTexCoord4dvARB), - NAME_FUNC_OFFSET(15373, glMultiTexCoord4fARB, glMultiTexCoord4fARB, NULL, _gloffset_MultiTexCoord4fARB), - NAME_FUNC_OFFSET(15391, glMultiTexCoord4fvARB, glMultiTexCoord4fvARB, NULL, _gloffset_MultiTexCoord4fvARB), - NAME_FUNC_OFFSET(15410, glMultiTexCoord4iARB, glMultiTexCoord4iARB, NULL, _gloffset_MultiTexCoord4iARB), - NAME_FUNC_OFFSET(15428, glMultiTexCoord4ivARB, glMultiTexCoord4ivARB, NULL, _gloffset_MultiTexCoord4ivARB), - NAME_FUNC_OFFSET(15447, glMultiTexCoord4sARB, glMultiTexCoord4sARB, NULL, _gloffset_MultiTexCoord4sARB), - NAME_FUNC_OFFSET(15465, glMultiTexCoord4svARB, glMultiTexCoord4svARB, NULL, _gloffset_MultiTexCoord4svARB), - NAME_FUNC_OFFSET(15484, glLoadTransposeMatrixdARB, glLoadTransposeMatrixdARB, NULL, _gloffset_LoadTransposeMatrixdARB), - NAME_FUNC_OFFSET(15507, glLoadTransposeMatrixfARB, glLoadTransposeMatrixfARB, NULL, _gloffset_LoadTransposeMatrixfARB), - NAME_FUNC_OFFSET(15530, glMultTransposeMatrixdARB, glMultTransposeMatrixdARB, NULL, _gloffset_MultTransposeMatrixdARB), - NAME_FUNC_OFFSET(15553, glMultTransposeMatrixfARB, glMultTransposeMatrixfARB, NULL, _gloffset_MultTransposeMatrixfARB), - NAME_FUNC_OFFSET(15576, glSampleCoverageARB, glSampleCoverageARB, NULL, _gloffset_SampleCoverageARB), - NAME_FUNC_OFFSET(15593, glCompressedTexImage1DARB, glCompressedTexImage1DARB, NULL, _gloffset_CompressedTexImage1DARB), - NAME_FUNC_OFFSET(15616, glCompressedTexImage2DARB, glCompressedTexImage2DARB, NULL, _gloffset_CompressedTexImage2DARB), - NAME_FUNC_OFFSET(15639, glCompressedTexImage3DARB, glCompressedTexImage3DARB, NULL, _gloffset_CompressedTexImage3DARB), - NAME_FUNC_OFFSET(15662, glCompressedTexSubImage1DARB, glCompressedTexSubImage1DARB, NULL, _gloffset_CompressedTexSubImage1DARB), - NAME_FUNC_OFFSET(15688, glCompressedTexSubImage2DARB, glCompressedTexSubImage2DARB, NULL, _gloffset_CompressedTexSubImage2DARB), - NAME_FUNC_OFFSET(15714, glCompressedTexSubImage3DARB, glCompressedTexSubImage3DARB, NULL, _gloffset_CompressedTexSubImage3DARB), - NAME_FUNC_OFFSET(15740, glGetCompressedTexImageARB, glGetCompressedTexImageARB, NULL, _gloffset_GetCompressedTexImageARB), - NAME_FUNC_OFFSET(15764, glDisableVertexAttribArrayARB, glDisableVertexAttribArrayARB, NULL, _gloffset_DisableVertexAttribArrayARB), - NAME_FUNC_OFFSET(15791, glEnableVertexAttribArrayARB, glEnableVertexAttribArrayARB, NULL, _gloffset_EnableVertexAttribArrayARB), - NAME_FUNC_OFFSET(15817, glGetVertexAttribdvARB, glGetVertexAttribdvARB, NULL, _gloffset_GetVertexAttribdvARB), - NAME_FUNC_OFFSET(15837, glGetVertexAttribfvARB, glGetVertexAttribfvARB, NULL, _gloffset_GetVertexAttribfvARB), - NAME_FUNC_OFFSET(15857, glGetVertexAttribivARB, glGetVertexAttribivARB, NULL, _gloffset_GetVertexAttribivARB), - NAME_FUNC_OFFSET(15877, glVertexAttrib1dARB, glVertexAttrib1dARB, NULL, _gloffset_VertexAttrib1dARB), - NAME_FUNC_OFFSET(15894, glVertexAttrib1dvARB, glVertexAttrib1dvARB, NULL, _gloffset_VertexAttrib1dvARB), - NAME_FUNC_OFFSET(15912, glVertexAttrib1fARB, glVertexAttrib1fARB, NULL, _gloffset_VertexAttrib1fARB), - NAME_FUNC_OFFSET(15929, glVertexAttrib1fvARB, glVertexAttrib1fvARB, NULL, _gloffset_VertexAttrib1fvARB), - NAME_FUNC_OFFSET(15947, glVertexAttrib1sARB, glVertexAttrib1sARB, NULL, _gloffset_VertexAttrib1sARB), - NAME_FUNC_OFFSET(15964, glVertexAttrib1svARB, glVertexAttrib1svARB, NULL, _gloffset_VertexAttrib1svARB), - NAME_FUNC_OFFSET(15982, glVertexAttrib2dARB, glVertexAttrib2dARB, NULL, _gloffset_VertexAttrib2dARB), - NAME_FUNC_OFFSET(15999, glVertexAttrib2dvARB, glVertexAttrib2dvARB, NULL, _gloffset_VertexAttrib2dvARB), - NAME_FUNC_OFFSET(16017, glVertexAttrib2fARB, glVertexAttrib2fARB, NULL, _gloffset_VertexAttrib2fARB), - NAME_FUNC_OFFSET(16034, glVertexAttrib2fvARB, glVertexAttrib2fvARB, NULL, _gloffset_VertexAttrib2fvARB), - NAME_FUNC_OFFSET(16052, glVertexAttrib2sARB, glVertexAttrib2sARB, NULL, _gloffset_VertexAttrib2sARB), - NAME_FUNC_OFFSET(16069, glVertexAttrib2svARB, glVertexAttrib2svARB, NULL, _gloffset_VertexAttrib2svARB), - NAME_FUNC_OFFSET(16087, glVertexAttrib3dARB, glVertexAttrib3dARB, NULL, _gloffset_VertexAttrib3dARB), - NAME_FUNC_OFFSET(16104, glVertexAttrib3dvARB, glVertexAttrib3dvARB, NULL, _gloffset_VertexAttrib3dvARB), - NAME_FUNC_OFFSET(16122, glVertexAttrib3fARB, glVertexAttrib3fARB, NULL, _gloffset_VertexAttrib3fARB), - NAME_FUNC_OFFSET(16139, glVertexAttrib3fvARB, glVertexAttrib3fvARB, NULL, _gloffset_VertexAttrib3fvARB), - NAME_FUNC_OFFSET(16157, glVertexAttrib3sARB, glVertexAttrib3sARB, NULL, _gloffset_VertexAttrib3sARB), - NAME_FUNC_OFFSET(16174, glVertexAttrib3svARB, glVertexAttrib3svARB, NULL, _gloffset_VertexAttrib3svARB), - NAME_FUNC_OFFSET(16192, glVertexAttrib4NbvARB, glVertexAttrib4NbvARB, NULL, _gloffset_VertexAttrib4NbvARB), - NAME_FUNC_OFFSET(16211, glVertexAttrib4NivARB, glVertexAttrib4NivARB, NULL, _gloffset_VertexAttrib4NivARB), - NAME_FUNC_OFFSET(16230, glVertexAttrib4NsvARB, glVertexAttrib4NsvARB, NULL, _gloffset_VertexAttrib4NsvARB), - NAME_FUNC_OFFSET(16249, glVertexAttrib4NubARB, glVertexAttrib4NubARB, NULL, _gloffset_VertexAttrib4NubARB), - NAME_FUNC_OFFSET(16268, glVertexAttrib4NubvARB, glVertexAttrib4NubvARB, NULL, _gloffset_VertexAttrib4NubvARB), - NAME_FUNC_OFFSET(16288, glVertexAttrib4NuivARB, glVertexAttrib4NuivARB, NULL, _gloffset_VertexAttrib4NuivARB), - NAME_FUNC_OFFSET(16308, glVertexAttrib4NusvARB, glVertexAttrib4NusvARB, NULL, _gloffset_VertexAttrib4NusvARB), - NAME_FUNC_OFFSET(16328, glVertexAttrib4dARB, glVertexAttrib4dARB, NULL, _gloffset_VertexAttrib4dARB), - NAME_FUNC_OFFSET(16345, glVertexAttrib4dvARB, glVertexAttrib4dvARB, NULL, _gloffset_VertexAttrib4dvARB), - NAME_FUNC_OFFSET(16363, glVertexAttrib4fARB, glVertexAttrib4fARB, NULL, _gloffset_VertexAttrib4fARB), - NAME_FUNC_OFFSET(16380, glVertexAttrib4fvARB, glVertexAttrib4fvARB, NULL, _gloffset_VertexAttrib4fvARB), - NAME_FUNC_OFFSET(16398, glVertexAttrib4sARB, glVertexAttrib4sARB, NULL, _gloffset_VertexAttrib4sARB), - NAME_FUNC_OFFSET(16415, glVertexAttrib4svARB, glVertexAttrib4svARB, NULL, _gloffset_VertexAttrib4svARB), - NAME_FUNC_OFFSET(16433, glVertexAttribPointerARB, glVertexAttribPointerARB, NULL, _gloffset_VertexAttribPointerARB), - NAME_FUNC_OFFSET(16455, glBindBufferARB, glBindBufferARB, NULL, _gloffset_BindBufferARB), - NAME_FUNC_OFFSET(16468, glBufferDataARB, glBufferDataARB, NULL, _gloffset_BufferDataARB), - NAME_FUNC_OFFSET(16481, glBufferSubDataARB, glBufferSubDataARB, NULL, _gloffset_BufferSubDataARB), - NAME_FUNC_OFFSET(16497, glDeleteBuffersARB, glDeleteBuffersARB, NULL, _gloffset_DeleteBuffersARB), - NAME_FUNC_OFFSET(16513, glGenBuffersARB, glGenBuffersARB, NULL, _gloffset_GenBuffersARB), - NAME_FUNC_OFFSET(16526, glGetBufferParameterivARB, glGetBufferParameterivARB, NULL, _gloffset_GetBufferParameterivARB), - NAME_FUNC_OFFSET(16549, glGetBufferPointervARB, glGetBufferPointervARB, NULL, _gloffset_GetBufferPointervARB), - NAME_FUNC_OFFSET(16569, glGetBufferSubDataARB, glGetBufferSubDataARB, NULL, _gloffset_GetBufferSubDataARB), - NAME_FUNC_OFFSET(16588, glIsBufferARB, glIsBufferARB, NULL, _gloffset_IsBufferARB), - NAME_FUNC_OFFSET(16599, glMapBufferARB, glMapBufferARB, NULL, _gloffset_MapBufferARB), - NAME_FUNC_OFFSET(16611, glUnmapBufferARB, glUnmapBufferARB, NULL, _gloffset_UnmapBufferARB), - NAME_FUNC_OFFSET(16625, glBeginQueryARB, glBeginQueryARB, NULL, _gloffset_BeginQueryARB), - NAME_FUNC_OFFSET(16638, glDeleteQueriesARB, glDeleteQueriesARB, NULL, _gloffset_DeleteQueriesARB), - NAME_FUNC_OFFSET(16654, glEndQueryARB, glEndQueryARB, NULL, _gloffset_EndQueryARB), - NAME_FUNC_OFFSET(16665, glGenQueriesARB, glGenQueriesARB, NULL, _gloffset_GenQueriesARB), - NAME_FUNC_OFFSET(16678, glGetQueryObjectivARB, glGetQueryObjectivARB, NULL, _gloffset_GetQueryObjectivARB), - NAME_FUNC_OFFSET(16697, glGetQueryObjectuivARB, glGetQueryObjectuivARB, NULL, _gloffset_GetQueryObjectuivARB), - NAME_FUNC_OFFSET(16717, glGetQueryivARB, glGetQueryivARB, NULL, _gloffset_GetQueryivARB), - NAME_FUNC_OFFSET(16730, glIsQueryARB, glIsQueryARB, NULL, _gloffset_IsQueryARB), - NAME_FUNC_OFFSET(16740, glCompileShaderARB, glCompileShaderARB, NULL, _gloffset_CompileShaderARB), - NAME_FUNC_OFFSET(16756, glGetActiveUniformARB, glGetActiveUniformARB, NULL, _gloffset_GetActiveUniformARB), - NAME_FUNC_OFFSET(16775, glGetShaderSourceARB, glGetShaderSourceARB, NULL, _gloffset_GetShaderSourceARB), - NAME_FUNC_OFFSET(16793, glGetUniformLocationARB, glGetUniformLocationARB, NULL, _gloffset_GetUniformLocationARB), - NAME_FUNC_OFFSET(16814, glGetUniformfvARB, glGetUniformfvARB, NULL, _gloffset_GetUniformfvARB), - NAME_FUNC_OFFSET(16829, glGetUniformivARB, glGetUniformivARB, NULL, _gloffset_GetUniformivARB), - NAME_FUNC_OFFSET(16844, glLinkProgramARB, glLinkProgramARB, NULL, _gloffset_LinkProgramARB), - NAME_FUNC_OFFSET(16858, glShaderSourceARB, glShaderSourceARB, NULL, _gloffset_ShaderSourceARB), - NAME_FUNC_OFFSET(16873, glUniform1fARB, glUniform1fARB, NULL, _gloffset_Uniform1fARB), - NAME_FUNC_OFFSET(16885, glUniform1fvARB, glUniform1fvARB, NULL, _gloffset_Uniform1fvARB), - NAME_FUNC_OFFSET(16898, glUniform1iARB, glUniform1iARB, NULL, _gloffset_Uniform1iARB), - NAME_FUNC_OFFSET(16910, glUniform1ivARB, glUniform1ivARB, NULL, _gloffset_Uniform1ivARB), - NAME_FUNC_OFFSET(16923, glUniform2fARB, glUniform2fARB, NULL, _gloffset_Uniform2fARB), - NAME_FUNC_OFFSET(16935, glUniform2fvARB, glUniform2fvARB, NULL, _gloffset_Uniform2fvARB), - NAME_FUNC_OFFSET(16948, glUniform2iARB, glUniform2iARB, NULL, _gloffset_Uniform2iARB), - NAME_FUNC_OFFSET(16960, glUniform2ivARB, glUniform2ivARB, NULL, _gloffset_Uniform2ivARB), - NAME_FUNC_OFFSET(16973, glUniform3fARB, glUniform3fARB, NULL, _gloffset_Uniform3fARB), - NAME_FUNC_OFFSET(16985, glUniform3fvARB, glUniform3fvARB, NULL, _gloffset_Uniform3fvARB), - NAME_FUNC_OFFSET(16998, glUniform3iARB, glUniform3iARB, NULL, _gloffset_Uniform3iARB), - NAME_FUNC_OFFSET(17010, glUniform3ivARB, glUniform3ivARB, NULL, _gloffset_Uniform3ivARB), - NAME_FUNC_OFFSET(17023, glUniform4fARB, glUniform4fARB, NULL, _gloffset_Uniform4fARB), - NAME_FUNC_OFFSET(17035, glUniform4fvARB, glUniform4fvARB, NULL, _gloffset_Uniform4fvARB), - NAME_FUNC_OFFSET(17048, glUniform4iARB, glUniform4iARB, NULL, _gloffset_Uniform4iARB), - NAME_FUNC_OFFSET(17060, glUniform4ivARB, glUniform4ivARB, NULL, _gloffset_Uniform4ivARB), - NAME_FUNC_OFFSET(17073, glUniformMatrix2fvARB, glUniformMatrix2fvARB, NULL, _gloffset_UniformMatrix2fvARB), - NAME_FUNC_OFFSET(17092, glUniformMatrix3fvARB, glUniformMatrix3fvARB, NULL, _gloffset_UniformMatrix3fvARB), - NAME_FUNC_OFFSET(17111, glUniformMatrix4fvARB, glUniformMatrix4fvARB, NULL, _gloffset_UniformMatrix4fvARB), - NAME_FUNC_OFFSET(17130, glUseProgramObjectARB, glUseProgramObjectARB, NULL, _gloffset_UseProgramObjectARB), - NAME_FUNC_OFFSET(17143, glValidateProgramARB, glValidateProgramARB, NULL, _gloffset_ValidateProgramARB), - NAME_FUNC_OFFSET(17161, glBindAttribLocationARB, glBindAttribLocationARB, NULL, _gloffset_BindAttribLocationARB), - NAME_FUNC_OFFSET(17182, glGetActiveAttribARB, glGetActiveAttribARB, NULL, _gloffset_GetActiveAttribARB), - NAME_FUNC_OFFSET(17200, glGetAttribLocationARB, glGetAttribLocationARB, NULL, _gloffset_GetAttribLocationARB), - NAME_FUNC_OFFSET(17220, glDrawBuffersARB, glDrawBuffersARB, NULL, _gloffset_DrawBuffersARB), - NAME_FUNC_OFFSET(17234, glDrawBuffersARB, glDrawBuffersARB, NULL, _gloffset_DrawBuffersARB), - NAME_FUNC_OFFSET(17251, gl_dispatch_stub_568, gl_dispatch_stub_568, NULL, _gloffset_SampleMaskSGIS), - NAME_FUNC_OFFSET(17267, gl_dispatch_stub_569, gl_dispatch_stub_569, NULL, _gloffset_SamplePatternSGIS), - NAME_FUNC_OFFSET(17286, glPointParameterfEXT, glPointParameterfEXT, NULL, _gloffset_PointParameterfEXT), - NAME_FUNC_OFFSET(17304, glPointParameterfEXT, glPointParameterfEXT, NULL, _gloffset_PointParameterfEXT), - NAME_FUNC_OFFSET(17325, glPointParameterfEXT, glPointParameterfEXT, NULL, _gloffset_PointParameterfEXT), - NAME_FUNC_OFFSET(17347, glPointParameterfvEXT, glPointParameterfvEXT, NULL, _gloffset_PointParameterfvEXT), - NAME_FUNC_OFFSET(17366, glPointParameterfvEXT, glPointParameterfvEXT, NULL, _gloffset_PointParameterfvEXT), - NAME_FUNC_OFFSET(17388, glPointParameterfvEXT, glPointParameterfvEXT, NULL, _gloffset_PointParameterfvEXT), - NAME_FUNC_OFFSET(17411, glSecondaryColor3bEXT, glSecondaryColor3bEXT, NULL, _gloffset_SecondaryColor3bEXT), - NAME_FUNC_OFFSET(17430, glSecondaryColor3bvEXT, glSecondaryColor3bvEXT, NULL, _gloffset_SecondaryColor3bvEXT), - NAME_FUNC_OFFSET(17450, glSecondaryColor3dEXT, glSecondaryColor3dEXT, NULL, _gloffset_SecondaryColor3dEXT), - NAME_FUNC_OFFSET(17469, glSecondaryColor3dvEXT, glSecondaryColor3dvEXT, NULL, _gloffset_SecondaryColor3dvEXT), - NAME_FUNC_OFFSET(17489, glSecondaryColor3fEXT, glSecondaryColor3fEXT, NULL, _gloffset_SecondaryColor3fEXT), - NAME_FUNC_OFFSET(17508, glSecondaryColor3fvEXT, glSecondaryColor3fvEXT, NULL, _gloffset_SecondaryColor3fvEXT), - NAME_FUNC_OFFSET(17528, glSecondaryColor3iEXT, glSecondaryColor3iEXT, NULL, _gloffset_SecondaryColor3iEXT), - NAME_FUNC_OFFSET(17547, glSecondaryColor3ivEXT, glSecondaryColor3ivEXT, NULL, _gloffset_SecondaryColor3ivEXT), - NAME_FUNC_OFFSET(17567, glSecondaryColor3sEXT, glSecondaryColor3sEXT, NULL, _gloffset_SecondaryColor3sEXT), - NAME_FUNC_OFFSET(17586, glSecondaryColor3svEXT, glSecondaryColor3svEXT, NULL, _gloffset_SecondaryColor3svEXT), - NAME_FUNC_OFFSET(17606, glSecondaryColor3ubEXT, glSecondaryColor3ubEXT, NULL, _gloffset_SecondaryColor3ubEXT), - NAME_FUNC_OFFSET(17626, glSecondaryColor3ubvEXT, glSecondaryColor3ubvEXT, NULL, _gloffset_SecondaryColor3ubvEXT), - NAME_FUNC_OFFSET(17647, glSecondaryColor3uiEXT, glSecondaryColor3uiEXT, NULL, _gloffset_SecondaryColor3uiEXT), - NAME_FUNC_OFFSET(17667, glSecondaryColor3uivEXT, glSecondaryColor3uivEXT, NULL, _gloffset_SecondaryColor3uivEXT), - NAME_FUNC_OFFSET(17688, glSecondaryColor3usEXT, glSecondaryColor3usEXT, NULL, _gloffset_SecondaryColor3usEXT), - NAME_FUNC_OFFSET(17708, glSecondaryColor3usvEXT, glSecondaryColor3usvEXT, NULL, _gloffset_SecondaryColor3usvEXT), - NAME_FUNC_OFFSET(17729, glSecondaryColorPointerEXT, glSecondaryColorPointerEXT, NULL, _gloffset_SecondaryColorPointerEXT), - NAME_FUNC_OFFSET(17753, glMultiDrawArraysEXT, glMultiDrawArraysEXT, NULL, _gloffset_MultiDrawArraysEXT), - NAME_FUNC_OFFSET(17771, glMultiDrawElementsEXT, glMultiDrawElementsEXT, NULL, _gloffset_MultiDrawElementsEXT), - NAME_FUNC_OFFSET(17791, glFogCoordPointerEXT, glFogCoordPointerEXT, NULL, _gloffset_FogCoordPointerEXT), - NAME_FUNC_OFFSET(17809, glFogCoorddEXT, glFogCoorddEXT, NULL, _gloffset_FogCoorddEXT), - NAME_FUNC_OFFSET(17821, glFogCoorddvEXT, glFogCoorddvEXT, NULL, _gloffset_FogCoorddvEXT), - NAME_FUNC_OFFSET(17834, glFogCoordfEXT, glFogCoordfEXT, NULL, _gloffset_FogCoordfEXT), - NAME_FUNC_OFFSET(17846, glFogCoordfvEXT, glFogCoordfvEXT, NULL, _gloffset_FogCoordfvEXT), - NAME_FUNC_OFFSET(17859, glBlendFuncSeparateEXT, glBlendFuncSeparateEXT, NULL, _gloffset_BlendFuncSeparateEXT), - NAME_FUNC_OFFSET(17879, glBlendFuncSeparateEXT, glBlendFuncSeparateEXT, NULL, _gloffset_BlendFuncSeparateEXT), - NAME_FUNC_OFFSET(17903, glWindowPos2dMESA, glWindowPos2dMESA, NULL, _gloffset_WindowPos2dMESA), - NAME_FUNC_OFFSET(17917, glWindowPos2dMESA, glWindowPos2dMESA, NULL, _gloffset_WindowPos2dMESA), - NAME_FUNC_OFFSET(17934, glWindowPos2dvMESA, glWindowPos2dvMESA, NULL, _gloffset_WindowPos2dvMESA), - NAME_FUNC_OFFSET(17949, glWindowPos2dvMESA, glWindowPos2dvMESA, NULL, _gloffset_WindowPos2dvMESA), - NAME_FUNC_OFFSET(17967, glWindowPos2fMESA, glWindowPos2fMESA, NULL, _gloffset_WindowPos2fMESA), - NAME_FUNC_OFFSET(17981, glWindowPos2fMESA, glWindowPos2fMESA, NULL, _gloffset_WindowPos2fMESA), - NAME_FUNC_OFFSET(17998, glWindowPos2fvMESA, glWindowPos2fvMESA, NULL, _gloffset_WindowPos2fvMESA), - NAME_FUNC_OFFSET(18013, glWindowPos2fvMESA, glWindowPos2fvMESA, NULL, _gloffset_WindowPos2fvMESA), - NAME_FUNC_OFFSET(18031, glWindowPos2iMESA, glWindowPos2iMESA, NULL, _gloffset_WindowPos2iMESA), - NAME_FUNC_OFFSET(18045, glWindowPos2iMESA, glWindowPos2iMESA, NULL, _gloffset_WindowPos2iMESA), - NAME_FUNC_OFFSET(18062, glWindowPos2ivMESA, glWindowPos2ivMESA, NULL, _gloffset_WindowPos2ivMESA), - NAME_FUNC_OFFSET(18077, glWindowPos2ivMESA, glWindowPos2ivMESA, NULL, _gloffset_WindowPos2ivMESA), - NAME_FUNC_OFFSET(18095, glWindowPos2sMESA, glWindowPos2sMESA, NULL, _gloffset_WindowPos2sMESA), - NAME_FUNC_OFFSET(18109, glWindowPos2sMESA, glWindowPos2sMESA, NULL, _gloffset_WindowPos2sMESA), - NAME_FUNC_OFFSET(18126, glWindowPos2svMESA, glWindowPos2svMESA, NULL, _gloffset_WindowPos2svMESA), - NAME_FUNC_OFFSET(18141, glWindowPos2svMESA, glWindowPos2svMESA, NULL, _gloffset_WindowPos2svMESA), - NAME_FUNC_OFFSET(18159, glWindowPos3dMESA, glWindowPos3dMESA, NULL, _gloffset_WindowPos3dMESA), - NAME_FUNC_OFFSET(18173, glWindowPos3dMESA, glWindowPos3dMESA, NULL, _gloffset_WindowPos3dMESA), - NAME_FUNC_OFFSET(18190, glWindowPos3dvMESA, glWindowPos3dvMESA, NULL, _gloffset_WindowPos3dvMESA), - NAME_FUNC_OFFSET(18205, glWindowPos3dvMESA, glWindowPos3dvMESA, NULL, _gloffset_WindowPos3dvMESA), - NAME_FUNC_OFFSET(18223, glWindowPos3fMESA, glWindowPos3fMESA, NULL, _gloffset_WindowPos3fMESA), - NAME_FUNC_OFFSET(18237, glWindowPos3fMESA, glWindowPos3fMESA, NULL, _gloffset_WindowPos3fMESA), - NAME_FUNC_OFFSET(18254, glWindowPos3fvMESA, glWindowPos3fvMESA, NULL, _gloffset_WindowPos3fvMESA), - NAME_FUNC_OFFSET(18269, glWindowPos3fvMESA, glWindowPos3fvMESA, NULL, _gloffset_WindowPos3fvMESA), - NAME_FUNC_OFFSET(18287, glWindowPos3iMESA, glWindowPos3iMESA, NULL, _gloffset_WindowPos3iMESA), - NAME_FUNC_OFFSET(18301, glWindowPos3iMESA, glWindowPos3iMESA, NULL, _gloffset_WindowPos3iMESA), - NAME_FUNC_OFFSET(18318, glWindowPos3ivMESA, glWindowPos3ivMESA, NULL, _gloffset_WindowPos3ivMESA), - NAME_FUNC_OFFSET(18333, glWindowPos3ivMESA, glWindowPos3ivMESA, NULL, _gloffset_WindowPos3ivMESA), - NAME_FUNC_OFFSET(18351, glWindowPos3sMESA, glWindowPos3sMESA, NULL, _gloffset_WindowPos3sMESA), - NAME_FUNC_OFFSET(18365, glWindowPos3sMESA, glWindowPos3sMESA, NULL, _gloffset_WindowPos3sMESA), - NAME_FUNC_OFFSET(18382, glWindowPos3svMESA, glWindowPos3svMESA, NULL, _gloffset_WindowPos3svMESA), - NAME_FUNC_OFFSET(18397, glWindowPos3svMESA, glWindowPos3svMESA, NULL, _gloffset_WindowPos3svMESA), - NAME_FUNC_OFFSET(18415, glBindProgramNV, glBindProgramNV, NULL, _gloffset_BindProgramNV), - NAME_FUNC_OFFSET(18432, glDeleteProgramsNV, glDeleteProgramsNV, NULL, _gloffset_DeleteProgramsNV), - NAME_FUNC_OFFSET(18452, glGenProgramsNV, glGenProgramsNV, NULL, _gloffset_GenProgramsNV), - NAME_FUNC_OFFSET(18469, glGetVertexAttribPointervNV, glGetVertexAttribPointervNV, NULL, _gloffset_GetVertexAttribPointervNV), - NAME_FUNC_OFFSET(18495, glGetVertexAttribPointervNV, glGetVertexAttribPointervNV, NULL, _gloffset_GetVertexAttribPointervNV), - NAME_FUNC_OFFSET(18524, glIsProgramNV, glIsProgramNV, NULL, _gloffset_IsProgramNV), - NAME_FUNC_OFFSET(18539, glPointParameteriNV, glPointParameteriNV, NULL, _gloffset_PointParameteriNV), - NAME_FUNC_OFFSET(18557, glPointParameterivNV, glPointParameterivNV, NULL, _gloffset_PointParameterivNV), - NAME_FUNC_OFFSET(18576, gl_dispatch_stub_749, gl_dispatch_stub_749, NULL, _gloffset_BlendEquationSeparateEXT), - NAME_FUNC_OFFSET(18600, gl_dispatch_stub_749, gl_dispatch_stub_749, NULL, _gloffset_BlendEquationSeparateEXT), + NAME_FUNC_OFFSET(13470, glFramebufferTextureLayerEXT, glFramebufferTextureLayerEXT, NULL, _gloffset_FramebufferTextureLayerEXT), + NAME_FUNC_OFFSET(13499, gl_dispatch_stub_769, gl_dispatch_stub_769, NULL, _gloffset_ProgramEnvParameters4fvEXT), + NAME_FUNC_OFFSET(13528, gl_dispatch_stub_770, gl_dispatch_stub_770, NULL, _gloffset_ProgramLocalParameters4fvEXT), + NAME_FUNC_OFFSET(13559, gl_dispatch_stub_771, gl_dispatch_stub_771, NULL, _gloffset_GetQueryObjecti64vEXT), + NAME_FUNC_OFFSET(13583, gl_dispatch_stub_772, gl_dispatch_stub_772, NULL, _gloffset_GetQueryObjectui64vEXT), + NAME_FUNC_OFFSET(13608, glArrayElement, glArrayElement, NULL, _gloffset_ArrayElement), + NAME_FUNC_OFFSET(13626, glBindTexture, glBindTexture, NULL, _gloffset_BindTexture), + NAME_FUNC_OFFSET(13643, glDrawArrays, glDrawArrays, NULL, _gloffset_DrawArrays), + NAME_FUNC_OFFSET(13659, glAreTexturesResident, glAreTexturesResidentEXT, glAreTexturesResidentEXT, _gloffset_AreTexturesResident), + NAME_FUNC_OFFSET(13684, glCopyTexImage1D, glCopyTexImage1D, NULL, _gloffset_CopyTexImage1D), + NAME_FUNC_OFFSET(13704, glCopyTexImage2D, glCopyTexImage2D, NULL, _gloffset_CopyTexImage2D), + NAME_FUNC_OFFSET(13724, glCopyTexSubImage1D, glCopyTexSubImage1D, NULL, _gloffset_CopyTexSubImage1D), + NAME_FUNC_OFFSET(13747, glCopyTexSubImage2D, glCopyTexSubImage2D, NULL, _gloffset_CopyTexSubImage2D), + NAME_FUNC_OFFSET(13770, glDeleteTextures, glDeleteTexturesEXT, glDeleteTexturesEXT, _gloffset_DeleteTextures), + NAME_FUNC_OFFSET(13790, glGenTextures, glGenTexturesEXT, glGenTexturesEXT, _gloffset_GenTextures), + NAME_FUNC_OFFSET(13807, glGetPointerv, glGetPointerv, NULL, _gloffset_GetPointerv), + NAME_FUNC_OFFSET(13824, glIsTexture, glIsTextureEXT, glIsTextureEXT, _gloffset_IsTexture), + NAME_FUNC_OFFSET(13839, glPrioritizeTextures, glPrioritizeTextures, NULL, _gloffset_PrioritizeTextures), + NAME_FUNC_OFFSET(13863, glTexSubImage1D, glTexSubImage1D, NULL, _gloffset_TexSubImage1D), + NAME_FUNC_OFFSET(13882, glTexSubImage2D, glTexSubImage2D, NULL, _gloffset_TexSubImage2D), + NAME_FUNC_OFFSET(13901, glBlendColor, glBlendColor, NULL, _gloffset_BlendColor), + NAME_FUNC_OFFSET(13917, glBlendEquation, glBlendEquation, NULL, _gloffset_BlendEquation), + NAME_FUNC_OFFSET(13936, glDrawRangeElements, glDrawRangeElements, NULL, _gloffset_DrawRangeElements), + NAME_FUNC_OFFSET(13959, glColorTable, glColorTable, NULL, _gloffset_ColorTable), + NAME_FUNC_OFFSET(13975, glColorTable, glColorTable, NULL, _gloffset_ColorTable), + NAME_FUNC_OFFSET(13991, glColorTableParameterfv, glColorTableParameterfv, NULL, _gloffset_ColorTableParameterfv), + NAME_FUNC_OFFSET(14018, glColorTableParameteriv, glColorTableParameteriv, NULL, _gloffset_ColorTableParameteriv), + NAME_FUNC_OFFSET(14045, glCopyColorTable, glCopyColorTable, NULL, _gloffset_CopyColorTable), + NAME_FUNC_OFFSET(14065, glGetColorTable, glGetColorTableEXT, glGetColorTableEXT, _gloffset_GetColorTable), + NAME_FUNC_OFFSET(14084, glGetColorTable, glGetColorTableEXT, glGetColorTableEXT, _gloffset_GetColorTable), + NAME_FUNC_OFFSET(14103, glGetColorTableParameterfv, glGetColorTableParameterfvEXT, glGetColorTableParameterfvEXT, _gloffset_GetColorTableParameterfv), + NAME_FUNC_OFFSET(14133, glGetColorTableParameterfv, glGetColorTableParameterfvEXT, glGetColorTableParameterfvEXT, _gloffset_GetColorTableParameterfv), + NAME_FUNC_OFFSET(14163, glGetColorTableParameteriv, glGetColorTableParameterivEXT, glGetColorTableParameterivEXT, _gloffset_GetColorTableParameteriv), + NAME_FUNC_OFFSET(14193, glGetColorTableParameteriv, glGetColorTableParameterivEXT, glGetColorTableParameterivEXT, _gloffset_GetColorTableParameteriv), + NAME_FUNC_OFFSET(14223, glColorSubTable, glColorSubTable, NULL, _gloffset_ColorSubTable), + NAME_FUNC_OFFSET(14242, glCopyColorSubTable, glCopyColorSubTable, NULL, _gloffset_CopyColorSubTable), + NAME_FUNC_OFFSET(14265, glConvolutionFilter1D, glConvolutionFilter1D, NULL, _gloffset_ConvolutionFilter1D), + NAME_FUNC_OFFSET(14290, glConvolutionFilter2D, glConvolutionFilter2D, NULL, _gloffset_ConvolutionFilter2D), + NAME_FUNC_OFFSET(14315, glConvolutionParameterf, glConvolutionParameterf, NULL, _gloffset_ConvolutionParameterf), + NAME_FUNC_OFFSET(14342, glConvolutionParameterfv, glConvolutionParameterfv, NULL, _gloffset_ConvolutionParameterfv), + NAME_FUNC_OFFSET(14370, glConvolutionParameteri, glConvolutionParameteri, NULL, _gloffset_ConvolutionParameteri), + NAME_FUNC_OFFSET(14397, glConvolutionParameteriv, glConvolutionParameteriv, NULL, _gloffset_ConvolutionParameteriv), + NAME_FUNC_OFFSET(14425, glCopyConvolutionFilter1D, glCopyConvolutionFilter1D, NULL, _gloffset_CopyConvolutionFilter1D), + NAME_FUNC_OFFSET(14454, glCopyConvolutionFilter2D, glCopyConvolutionFilter2D, NULL, _gloffset_CopyConvolutionFilter2D), + NAME_FUNC_OFFSET(14483, glGetConvolutionFilter, gl_dispatch_stub_356, gl_dispatch_stub_356, _gloffset_GetConvolutionFilter), + NAME_FUNC_OFFSET(14509, glGetConvolutionParameterfv, gl_dispatch_stub_357, gl_dispatch_stub_357, _gloffset_GetConvolutionParameterfv), + NAME_FUNC_OFFSET(14540, glGetConvolutionParameteriv, gl_dispatch_stub_358, gl_dispatch_stub_358, _gloffset_GetConvolutionParameteriv), + NAME_FUNC_OFFSET(14571, glGetSeparableFilter, gl_dispatch_stub_359, gl_dispatch_stub_359, _gloffset_GetSeparableFilter), + NAME_FUNC_OFFSET(14595, glSeparableFilter2D, glSeparableFilter2D, NULL, _gloffset_SeparableFilter2D), + NAME_FUNC_OFFSET(14618, glGetHistogram, gl_dispatch_stub_361, gl_dispatch_stub_361, _gloffset_GetHistogram), + NAME_FUNC_OFFSET(14636, glGetHistogramParameterfv, gl_dispatch_stub_362, gl_dispatch_stub_362, _gloffset_GetHistogramParameterfv), + NAME_FUNC_OFFSET(14665, glGetHistogramParameteriv, gl_dispatch_stub_363, gl_dispatch_stub_363, _gloffset_GetHistogramParameteriv), + NAME_FUNC_OFFSET(14694, glGetMinmax, gl_dispatch_stub_364, gl_dispatch_stub_364, _gloffset_GetMinmax), + NAME_FUNC_OFFSET(14709, glGetMinmaxParameterfv, gl_dispatch_stub_365, gl_dispatch_stub_365, _gloffset_GetMinmaxParameterfv), + NAME_FUNC_OFFSET(14735, glGetMinmaxParameteriv, gl_dispatch_stub_366, gl_dispatch_stub_366, _gloffset_GetMinmaxParameteriv), + NAME_FUNC_OFFSET(14761, glHistogram, glHistogram, NULL, _gloffset_Histogram), + NAME_FUNC_OFFSET(14776, glMinmax, glMinmax, NULL, _gloffset_Minmax), + NAME_FUNC_OFFSET(14788, glResetHistogram, glResetHistogram, NULL, _gloffset_ResetHistogram), + NAME_FUNC_OFFSET(14808, glResetMinmax, glResetMinmax, NULL, _gloffset_ResetMinmax), + NAME_FUNC_OFFSET(14825, glTexImage3D, glTexImage3D, NULL, _gloffset_TexImage3D), + NAME_FUNC_OFFSET(14841, glTexSubImage3D, glTexSubImage3D, NULL, _gloffset_TexSubImage3D), + NAME_FUNC_OFFSET(14860, glCopyTexSubImage3D, glCopyTexSubImage3D, NULL, _gloffset_CopyTexSubImage3D), + NAME_FUNC_OFFSET(14883, glActiveTextureARB, glActiveTextureARB, NULL, _gloffset_ActiveTextureARB), + NAME_FUNC_OFFSET(14899, glClientActiveTextureARB, glClientActiveTextureARB, NULL, _gloffset_ClientActiveTextureARB), + NAME_FUNC_OFFSET(14921, glMultiTexCoord1dARB, glMultiTexCoord1dARB, NULL, _gloffset_MultiTexCoord1dARB), + NAME_FUNC_OFFSET(14939, glMultiTexCoord1dvARB, glMultiTexCoord1dvARB, NULL, _gloffset_MultiTexCoord1dvARB), + NAME_FUNC_OFFSET(14958, glMultiTexCoord1fARB, glMultiTexCoord1fARB, NULL, _gloffset_MultiTexCoord1fARB), + NAME_FUNC_OFFSET(14976, glMultiTexCoord1fvARB, glMultiTexCoord1fvARB, NULL, _gloffset_MultiTexCoord1fvARB), + NAME_FUNC_OFFSET(14995, glMultiTexCoord1iARB, glMultiTexCoord1iARB, NULL, _gloffset_MultiTexCoord1iARB), + NAME_FUNC_OFFSET(15013, glMultiTexCoord1ivARB, glMultiTexCoord1ivARB, NULL, _gloffset_MultiTexCoord1ivARB), + NAME_FUNC_OFFSET(15032, glMultiTexCoord1sARB, glMultiTexCoord1sARB, NULL, _gloffset_MultiTexCoord1sARB), + NAME_FUNC_OFFSET(15050, glMultiTexCoord1svARB, glMultiTexCoord1svARB, NULL, _gloffset_MultiTexCoord1svARB), + NAME_FUNC_OFFSET(15069, glMultiTexCoord2dARB, glMultiTexCoord2dARB, NULL, _gloffset_MultiTexCoord2dARB), + NAME_FUNC_OFFSET(15087, glMultiTexCoord2dvARB, glMultiTexCoord2dvARB, NULL, _gloffset_MultiTexCoord2dvARB), + NAME_FUNC_OFFSET(15106, glMultiTexCoord2fARB, glMultiTexCoord2fARB, NULL, _gloffset_MultiTexCoord2fARB), + NAME_FUNC_OFFSET(15124, glMultiTexCoord2fvARB, glMultiTexCoord2fvARB, NULL, _gloffset_MultiTexCoord2fvARB), + NAME_FUNC_OFFSET(15143, glMultiTexCoord2iARB, glMultiTexCoord2iARB, NULL, _gloffset_MultiTexCoord2iARB), + NAME_FUNC_OFFSET(15161, glMultiTexCoord2ivARB, glMultiTexCoord2ivARB, NULL, _gloffset_MultiTexCoord2ivARB), + NAME_FUNC_OFFSET(15180, glMultiTexCoord2sARB, glMultiTexCoord2sARB, NULL, _gloffset_MultiTexCoord2sARB), + NAME_FUNC_OFFSET(15198, glMultiTexCoord2svARB, glMultiTexCoord2svARB, NULL, _gloffset_MultiTexCoord2svARB), + NAME_FUNC_OFFSET(15217, glMultiTexCoord3dARB, glMultiTexCoord3dARB, NULL, _gloffset_MultiTexCoord3dARB), + NAME_FUNC_OFFSET(15235, glMultiTexCoord3dvARB, glMultiTexCoord3dvARB, NULL, _gloffset_MultiTexCoord3dvARB), + NAME_FUNC_OFFSET(15254, glMultiTexCoord3fARB, glMultiTexCoord3fARB, NULL, _gloffset_MultiTexCoord3fARB), + NAME_FUNC_OFFSET(15272, glMultiTexCoord3fvARB, glMultiTexCoord3fvARB, NULL, _gloffset_MultiTexCoord3fvARB), + NAME_FUNC_OFFSET(15291, glMultiTexCoord3iARB, glMultiTexCoord3iARB, NULL, _gloffset_MultiTexCoord3iARB), + NAME_FUNC_OFFSET(15309, glMultiTexCoord3ivARB, glMultiTexCoord3ivARB, NULL, _gloffset_MultiTexCoord3ivARB), + NAME_FUNC_OFFSET(15328, glMultiTexCoord3sARB, glMultiTexCoord3sARB, NULL, _gloffset_MultiTexCoord3sARB), + NAME_FUNC_OFFSET(15346, glMultiTexCoord3svARB, glMultiTexCoord3svARB, NULL, _gloffset_MultiTexCoord3svARB), + NAME_FUNC_OFFSET(15365, glMultiTexCoord4dARB, glMultiTexCoord4dARB, NULL, _gloffset_MultiTexCoord4dARB), + NAME_FUNC_OFFSET(15383, glMultiTexCoord4dvARB, glMultiTexCoord4dvARB, NULL, _gloffset_MultiTexCoord4dvARB), + NAME_FUNC_OFFSET(15402, glMultiTexCoord4fARB, glMultiTexCoord4fARB, NULL, _gloffset_MultiTexCoord4fARB), + NAME_FUNC_OFFSET(15420, glMultiTexCoord4fvARB, glMultiTexCoord4fvARB, NULL, _gloffset_MultiTexCoord4fvARB), + NAME_FUNC_OFFSET(15439, glMultiTexCoord4iARB, glMultiTexCoord4iARB, NULL, _gloffset_MultiTexCoord4iARB), + NAME_FUNC_OFFSET(15457, glMultiTexCoord4ivARB, glMultiTexCoord4ivARB, NULL, _gloffset_MultiTexCoord4ivARB), + NAME_FUNC_OFFSET(15476, glMultiTexCoord4sARB, glMultiTexCoord4sARB, NULL, _gloffset_MultiTexCoord4sARB), + NAME_FUNC_OFFSET(15494, glMultiTexCoord4svARB, glMultiTexCoord4svARB, NULL, _gloffset_MultiTexCoord4svARB), + NAME_FUNC_OFFSET(15513, glLoadTransposeMatrixdARB, glLoadTransposeMatrixdARB, NULL, _gloffset_LoadTransposeMatrixdARB), + NAME_FUNC_OFFSET(15536, glLoadTransposeMatrixfARB, glLoadTransposeMatrixfARB, NULL, _gloffset_LoadTransposeMatrixfARB), + NAME_FUNC_OFFSET(15559, glMultTransposeMatrixdARB, glMultTransposeMatrixdARB, NULL, _gloffset_MultTransposeMatrixdARB), + NAME_FUNC_OFFSET(15582, glMultTransposeMatrixfARB, glMultTransposeMatrixfARB, NULL, _gloffset_MultTransposeMatrixfARB), + NAME_FUNC_OFFSET(15605, glSampleCoverageARB, glSampleCoverageARB, NULL, _gloffset_SampleCoverageARB), + NAME_FUNC_OFFSET(15622, glCompressedTexImage1DARB, glCompressedTexImage1DARB, NULL, _gloffset_CompressedTexImage1DARB), + NAME_FUNC_OFFSET(15645, glCompressedTexImage2DARB, glCompressedTexImage2DARB, NULL, _gloffset_CompressedTexImage2DARB), + NAME_FUNC_OFFSET(15668, glCompressedTexImage3DARB, glCompressedTexImage3DARB, NULL, _gloffset_CompressedTexImage3DARB), + NAME_FUNC_OFFSET(15691, glCompressedTexSubImage1DARB, glCompressedTexSubImage1DARB, NULL, _gloffset_CompressedTexSubImage1DARB), + NAME_FUNC_OFFSET(15717, glCompressedTexSubImage2DARB, glCompressedTexSubImage2DARB, NULL, _gloffset_CompressedTexSubImage2DARB), + NAME_FUNC_OFFSET(15743, glCompressedTexSubImage3DARB, glCompressedTexSubImage3DARB, NULL, _gloffset_CompressedTexSubImage3DARB), + NAME_FUNC_OFFSET(15769, glGetCompressedTexImageARB, glGetCompressedTexImageARB, NULL, _gloffset_GetCompressedTexImageARB), + NAME_FUNC_OFFSET(15793, glDisableVertexAttribArrayARB, glDisableVertexAttribArrayARB, NULL, _gloffset_DisableVertexAttribArrayARB), + NAME_FUNC_OFFSET(15820, glEnableVertexAttribArrayARB, glEnableVertexAttribArrayARB, NULL, _gloffset_EnableVertexAttribArrayARB), + NAME_FUNC_OFFSET(15846, glGetVertexAttribdvARB, glGetVertexAttribdvARB, NULL, _gloffset_GetVertexAttribdvARB), + NAME_FUNC_OFFSET(15866, glGetVertexAttribfvARB, glGetVertexAttribfvARB, NULL, _gloffset_GetVertexAttribfvARB), + NAME_FUNC_OFFSET(15886, glGetVertexAttribivARB, glGetVertexAttribivARB, NULL, _gloffset_GetVertexAttribivARB), + NAME_FUNC_OFFSET(15906, glVertexAttrib1dARB, glVertexAttrib1dARB, NULL, _gloffset_VertexAttrib1dARB), + NAME_FUNC_OFFSET(15923, glVertexAttrib1dvARB, glVertexAttrib1dvARB, NULL, _gloffset_VertexAttrib1dvARB), + NAME_FUNC_OFFSET(15941, glVertexAttrib1fARB, glVertexAttrib1fARB, NULL, _gloffset_VertexAttrib1fARB), + NAME_FUNC_OFFSET(15958, glVertexAttrib1fvARB, glVertexAttrib1fvARB, NULL, _gloffset_VertexAttrib1fvARB), + NAME_FUNC_OFFSET(15976, glVertexAttrib1sARB, glVertexAttrib1sARB, NULL, _gloffset_VertexAttrib1sARB), + NAME_FUNC_OFFSET(15993, glVertexAttrib1svARB, glVertexAttrib1svARB, NULL, _gloffset_VertexAttrib1svARB), + NAME_FUNC_OFFSET(16011, glVertexAttrib2dARB, glVertexAttrib2dARB, NULL, _gloffset_VertexAttrib2dARB), + NAME_FUNC_OFFSET(16028, glVertexAttrib2dvARB, glVertexAttrib2dvARB, NULL, _gloffset_VertexAttrib2dvARB), + NAME_FUNC_OFFSET(16046, glVertexAttrib2fARB, glVertexAttrib2fARB, NULL, _gloffset_VertexAttrib2fARB), + NAME_FUNC_OFFSET(16063, glVertexAttrib2fvARB, glVertexAttrib2fvARB, NULL, _gloffset_VertexAttrib2fvARB), + NAME_FUNC_OFFSET(16081, glVertexAttrib2sARB, glVertexAttrib2sARB, NULL, _gloffset_VertexAttrib2sARB), + NAME_FUNC_OFFSET(16098, glVertexAttrib2svARB, glVertexAttrib2svARB, NULL, _gloffset_VertexAttrib2svARB), + NAME_FUNC_OFFSET(16116, glVertexAttrib3dARB, glVertexAttrib3dARB, NULL, _gloffset_VertexAttrib3dARB), + NAME_FUNC_OFFSET(16133, glVertexAttrib3dvARB, glVertexAttrib3dvARB, NULL, _gloffset_VertexAttrib3dvARB), + NAME_FUNC_OFFSET(16151, glVertexAttrib3fARB, glVertexAttrib3fARB, NULL, _gloffset_VertexAttrib3fARB), + NAME_FUNC_OFFSET(16168, glVertexAttrib3fvARB, glVertexAttrib3fvARB, NULL, _gloffset_VertexAttrib3fvARB), + NAME_FUNC_OFFSET(16186, glVertexAttrib3sARB, glVertexAttrib3sARB, NULL, _gloffset_VertexAttrib3sARB), + NAME_FUNC_OFFSET(16203, glVertexAttrib3svARB, glVertexAttrib3svARB, NULL, _gloffset_VertexAttrib3svARB), + NAME_FUNC_OFFSET(16221, glVertexAttrib4NbvARB, glVertexAttrib4NbvARB, NULL, _gloffset_VertexAttrib4NbvARB), + NAME_FUNC_OFFSET(16240, glVertexAttrib4NivARB, glVertexAttrib4NivARB, NULL, _gloffset_VertexAttrib4NivARB), + NAME_FUNC_OFFSET(16259, glVertexAttrib4NsvARB, glVertexAttrib4NsvARB, NULL, _gloffset_VertexAttrib4NsvARB), + NAME_FUNC_OFFSET(16278, glVertexAttrib4NubARB, glVertexAttrib4NubARB, NULL, _gloffset_VertexAttrib4NubARB), + NAME_FUNC_OFFSET(16297, glVertexAttrib4NubvARB, glVertexAttrib4NubvARB, NULL, _gloffset_VertexAttrib4NubvARB), + NAME_FUNC_OFFSET(16317, glVertexAttrib4NuivARB, glVertexAttrib4NuivARB, NULL, _gloffset_VertexAttrib4NuivARB), + NAME_FUNC_OFFSET(16337, glVertexAttrib4NusvARB, glVertexAttrib4NusvARB, NULL, _gloffset_VertexAttrib4NusvARB), + NAME_FUNC_OFFSET(16357, glVertexAttrib4dARB, glVertexAttrib4dARB, NULL, _gloffset_VertexAttrib4dARB), + NAME_FUNC_OFFSET(16374, glVertexAttrib4dvARB, glVertexAttrib4dvARB, NULL, _gloffset_VertexAttrib4dvARB), + NAME_FUNC_OFFSET(16392, glVertexAttrib4fARB, glVertexAttrib4fARB, NULL, _gloffset_VertexAttrib4fARB), + NAME_FUNC_OFFSET(16409, glVertexAttrib4fvARB, glVertexAttrib4fvARB, NULL, _gloffset_VertexAttrib4fvARB), + NAME_FUNC_OFFSET(16427, glVertexAttrib4sARB, glVertexAttrib4sARB, NULL, _gloffset_VertexAttrib4sARB), + NAME_FUNC_OFFSET(16444, glVertexAttrib4svARB, glVertexAttrib4svARB, NULL, _gloffset_VertexAttrib4svARB), + NAME_FUNC_OFFSET(16462, glVertexAttribPointerARB, glVertexAttribPointerARB, NULL, _gloffset_VertexAttribPointerARB), + NAME_FUNC_OFFSET(16484, glBindBufferARB, glBindBufferARB, NULL, _gloffset_BindBufferARB), + NAME_FUNC_OFFSET(16497, glBufferDataARB, glBufferDataARB, NULL, _gloffset_BufferDataARB), + NAME_FUNC_OFFSET(16510, glBufferSubDataARB, glBufferSubDataARB, NULL, _gloffset_BufferSubDataARB), + NAME_FUNC_OFFSET(16526, glDeleteBuffersARB, glDeleteBuffersARB, NULL, _gloffset_DeleteBuffersARB), + NAME_FUNC_OFFSET(16542, glGenBuffersARB, glGenBuffersARB, NULL, _gloffset_GenBuffersARB), + NAME_FUNC_OFFSET(16555, glGetBufferParameterivARB, glGetBufferParameterivARB, NULL, _gloffset_GetBufferParameterivARB), + NAME_FUNC_OFFSET(16578, glGetBufferPointervARB, glGetBufferPointervARB, NULL, _gloffset_GetBufferPointervARB), + NAME_FUNC_OFFSET(16598, glGetBufferSubDataARB, glGetBufferSubDataARB, NULL, _gloffset_GetBufferSubDataARB), + NAME_FUNC_OFFSET(16617, glIsBufferARB, glIsBufferARB, NULL, _gloffset_IsBufferARB), + NAME_FUNC_OFFSET(16628, glMapBufferARB, glMapBufferARB, NULL, _gloffset_MapBufferARB), + NAME_FUNC_OFFSET(16640, glUnmapBufferARB, glUnmapBufferARB, NULL, _gloffset_UnmapBufferARB), + NAME_FUNC_OFFSET(16654, glBeginQueryARB, glBeginQueryARB, NULL, _gloffset_BeginQueryARB), + NAME_FUNC_OFFSET(16667, glDeleteQueriesARB, glDeleteQueriesARB, NULL, _gloffset_DeleteQueriesARB), + NAME_FUNC_OFFSET(16683, glEndQueryARB, glEndQueryARB, NULL, _gloffset_EndQueryARB), + NAME_FUNC_OFFSET(16694, glGenQueriesARB, glGenQueriesARB, NULL, _gloffset_GenQueriesARB), + NAME_FUNC_OFFSET(16707, glGetQueryObjectivARB, glGetQueryObjectivARB, NULL, _gloffset_GetQueryObjectivARB), + NAME_FUNC_OFFSET(16726, glGetQueryObjectuivARB, glGetQueryObjectuivARB, NULL, _gloffset_GetQueryObjectuivARB), + NAME_FUNC_OFFSET(16746, glGetQueryivARB, glGetQueryivARB, NULL, _gloffset_GetQueryivARB), + NAME_FUNC_OFFSET(16759, glIsQueryARB, glIsQueryARB, NULL, _gloffset_IsQueryARB), + NAME_FUNC_OFFSET(16769, glCompileShaderARB, glCompileShaderARB, NULL, _gloffset_CompileShaderARB), + NAME_FUNC_OFFSET(16785, glGetActiveUniformARB, glGetActiveUniformARB, NULL, _gloffset_GetActiveUniformARB), + NAME_FUNC_OFFSET(16804, glGetShaderSourceARB, glGetShaderSourceARB, NULL, _gloffset_GetShaderSourceARB), + NAME_FUNC_OFFSET(16822, glGetUniformLocationARB, glGetUniformLocationARB, NULL, _gloffset_GetUniformLocationARB), + NAME_FUNC_OFFSET(16843, glGetUniformfvARB, glGetUniformfvARB, NULL, _gloffset_GetUniformfvARB), + NAME_FUNC_OFFSET(16858, glGetUniformivARB, glGetUniformivARB, NULL, _gloffset_GetUniformivARB), + NAME_FUNC_OFFSET(16873, glLinkProgramARB, glLinkProgramARB, NULL, _gloffset_LinkProgramARB), + NAME_FUNC_OFFSET(16887, glShaderSourceARB, glShaderSourceARB, NULL, _gloffset_ShaderSourceARB), + NAME_FUNC_OFFSET(16902, glUniform1fARB, glUniform1fARB, NULL, _gloffset_Uniform1fARB), + NAME_FUNC_OFFSET(16914, glUniform1fvARB, glUniform1fvARB, NULL, _gloffset_Uniform1fvARB), + NAME_FUNC_OFFSET(16927, glUniform1iARB, glUniform1iARB, NULL, _gloffset_Uniform1iARB), + NAME_FUNC_OFFSET(16939, glUniform1ivARB, glUniform1ivARB, NULL, _gloffset_Uniform1ivARB), + NAME_FUNC_OFFSET(16952, glUniform2fARB, glUniform2fARB, NULL, _gloffset_Uniform2fARB), + NAME_FUNC_OFFSET(16964, glUniform2fvARB, glUniform2fvARB, NULL, _gloffset_Uniform2fvARB), + NAME_FUNC_OFFSET(16977, glUniform2iARB, glUniform2iARB, NULL, _gloffset_Uniform2iARB), + NAME_FUNC_OFFSET(16989, glUniform2ivARB, glUniform2ivARB, NULL, _gloffset_Uniform2ivARB), + NAME_FUNC_OFFSET(17002, glUniform3fARB, glUniform3fARB, NULL, _gloffset_Uniform3fARB), + NAME_FUNC_OFFSET(17014, glUniform3fvARB, glUniform3fvARB, NULL, _gloffset_Uniform3fvARB), + NAME_FUNC_OFFSET(17027, glUniform3iARB, glUniform3iARB, NULL, _gloffset_Uniform3iARB), + NAME_FUNC_OFFSET(17039, glUniform3ivARB, glUniform3ivARB, NULL, _gloffset_Uniform3ivARB), + NAME_FUNC_OFFSET(17052, glUniform4fARB, glUniform4fARB, NULL, _gloffset_Uniform4fARB), + NAME_FUNC_OFFSET(17064, glUniform4fvARB, glUniform4fvARB, NULL, _gloffset_Uniform4fvARB), + NAME_FUNC_OFFSET(17077, glUniform4iARB, glUniform4iARB, NULL, _gloffset_Uniform4iARB), + NAME_FUNC_OFFSET(17089, glUniform4ivARB, glUniform4ivARB, NULL, _gloffset_Uniform4ivARB), + NAME_FUNC_OFFSET(17102, glUniformMatrix2fvARB, glUniformMatrix2fvARB, NULL, _gloffset_UniformMatrix2fvARB), + NAME_FUNC_OFFSET(17121, glUniformMatrix3fvARB, glUniformMatrix3fvARB, NULL, _gloffset_UniformMatrix3fvARB), + NAME_FUNC_OFFSET(17140, glUniformMatrix4fvARB, glUniformMatrix4fvARB, NULL, _gloffset_UniformMatrix4fvARB), + NAME_FUNC_OFFSET(17159, glUseProgramObjectARB, glUseProgramObjectARB, NULL, _gloffset_UseProgramObjectARB), + NAME_FUNC_OFFSET(17172, glValidateProgramARB, glValidateProgramARB, NULL, _gloffset_ValidateProgramARB), + NAME_FUNC_OFFSET(17190, glBindAttribLocationARB, glBindAttribLocationARB, NULL, _gloffset_BindAttribLocationARB), + NAME_FUNC_OFFSET(17211, glGetActiveAttribARB, glGetActiveAttribARB, NULL, _gloffset_GetActiveAttribARB), + NAME_FUNC_OFFSET(17229, glGetAttribLocationARB, glGetAttribLocationARB, NULL, _gloffset_GetAttribLocationARB), + NAME_FUNC_OFFSET(17249, glDrawBuffersARB, glDrawBuffersARB, NULL, _gloffset_DrawBuffersARB), + NAME_FUNC_OFFSET(17263, glDrawBuffersARB, glDrawBuffersARB, NULL, _gloffset_DrawBuffersARB), + NAME_FUNC_OFFSET(17280, gl_dispatch_stub_568, gl_dispatch_stub_568, NULL, _gloffset_SampleMaskSGIS), + NAME_FUNC_OFFSET(17296, gl_dispatch_stub_569, gl_dispatch_stub_569, NULL, _gloffset_SamplePatternSGIS), + NAME_FUNC_OFFSET(17315, glPointParameterfEXT, glPointParameterfEXT, NULL, _gloffset_PointParameterfEXT), + NAME_FUNC_OFFSET(17333, glPointParameterfEXT, glPointParameterfEXT, NULL, _gloffset_PointParameterfEXT), + NAME_FUNC_OFFSET(17354, glPointParameterfEXT, glPointParameterfEXT, NULL, _gloffset_PointParameterfEXT), + NAME_FUNC_OFFSET(17376, glPointParameterfvEXT, glPointParameterfvEXT, NULL, _gloffset_PointParameterfvEXT), + NAME_FUNC_OFFSET(17395, glPointParameterfvEXT, glPointParameterfvEXT, NULL, _gloffset_PointParameterfvEXT), + NAME_FUNC_OFFSET(17417, glPointParameterfvEXT, glPointParameterfvEXT, NULL, _gloffset_PointParameterfvEXT), + NAME_FUNC_OFFSET(17440, glSecondaryColor3bEXT, glSecondaryColor3bEXT, NULL, _gloffset_SecondaryColor3bEXT), + NAME_FUNC_OFFSET(17459, glSecondaryColor3bvEXT, glSecondaryColor3bvEXT, NULL, _gloffset_SecondaryColor3bvEXT), + NAME_FUNC_OFFSET(17479, glSecondaryColor3dEXT, glSecondaryColor3dEXT, NULL, _gloffset_SecondaryColor3dEXT), + NAME_FUNC_OFFSET(17498, glSecondaryColor3dvEXT, glSecondaryColor3dvEXT, NULL, _gloffset_SecondaryColor3dvEXT), + NAME_FUNC_OFFSET(17518, glSecondaryColor3fEXT, glSecondaryColor3fEXT, NULL, _gloffset_SecondaryColor3fEXT), + NAME_FUNC_OFFSET(17537, glSecondaryColor3fvEXT, glSecondaryColor3fvEXT, NULL, _gloffset_SecondaryColor3fvEXT), + NAME_FUNC_OFFSET(17557, glSecondaryColor3iEXT, glSecondaryColor3iEXT, NULL, _gloffset_SecondaryColor3iEXT), + NAME_FUNC_OFFSET(17576, glSecondaryColor3ivEXT, glSecondaryColor3ivEXT, NULL, _gloffset_SecondaryColor3ivEXT), + NAME_FUNC_OFFSET(17596, glSecondaryColor3sEXT, glSecondaryColor3sEXT, NULL, _gloffset_SecondaryColor3sEXT), + NAME_FUNC_OFFSET(17615, glSecondaryColor3svEXT, glSecondaryColor3svEXT, NULL, _gloffset_SecondaryColor3svEXT), + NAME_FUNC_OFFSET(17635, glSecondaryColor3ubEXT, glSecondaryColor3ubEXT, NULL, _gloffset_SecondaryColor3ubEXT), + NAME_FUNC_OFFSET(17655, glSecondaryColor3ubvEXT, glSecondaryColor3ubvEXT, NULL, _gloffset_SecondaryColor3ubvEXT), + NAME_FUNC_OFFSET(17676, glSecondaryColor3uiEXT, glSecondaryColor3uiEXT, NULL, _gloffset_SecondaryColor3uiEXT), + NAME_FUNC_OFFSET(17696, glSecondaryColor3uivEXT, glSecondaryColor3uivEXT, NULL, _gloffset_SecondaryColor3uivEXT), + NAME_FUNC_OFFSET(17717, glSecondaryColor3usEXT, glSecondaryColor3usEXT, NULL, _gloffset_SecondaryColor3usEXT), + NAME_FUNC_OFFSET(17737, glSecondaryColor3usvEXT, glSecondaryColor3usvEXT, NULL, _gloffset_SecondaryColor3usvEXT), + NAME_FUNC_OFFSET(17758, glSecondaryColorPointerEXT, glSecondaryColorPointerEXT, NULL, _gloffset_SecondaryColorPointerEXT), + NAME_FUNC_OFFSET(17782, glMultiDrawArraysEXT, glMultiDrawArraysEXT, NULL, _gloffset_MultiDrawArraysEXT), + NAME_FUNC_OFFSET(17800, glMultiDrawElementsEXT, glMultiDrawElementsEXT, NULL, _gloffset_MultiDrawElementsEXT), + NAME_FUNC_OFFSET(17820, glFogCoordPointerEXT, glFogCoordPointerEXT, NULL, _gloffset_FogCoordPointerEXT), + NAME_FUNC_OFFSET(17838, glFogCoorddEXT, glFogCoorddEXT, NULL, _gloffset_FogCoorddEXT), + NAME_FUNC_OFFSET(17850, glFogCoorddvEXT, glFogCoorddvEXT, NULL, _gloffset_FogCoorddvEXT), + NAME_FUNC_OFFSET(17863, glFogCoordfEXT, glFogCoordfEXT, NULL, _gloffset_FogCoordfEXT), + NAME_FUNC_OFFSET(17875, glFogCoordfvEXT, glFogCoordfvEXT, NULL, _gloffset_FogCoordfvEXT), + NAME_FUNC_OFFSET(17888, glBlendFuncSeparateEXT, glBlendFuncSeparateEXT, NULL, _gloffset_BlendFuncSeparateEXT), + NAME_FUNC_OFFSET(17908, glBlendFuncSeparateEXT, glBlendFuncSeparateEXT, NULL, _gloffset_BlendFuncSeparateEXT), + NAME_FUNC_OFFSET(17932, glWindowPos2dMESA, glWindowPos2dMESA, NULL, _gloffset_WindowPos2dMESA), + NAME_FUNC_OFFSET(17946, glWindowPos2dMESA, glWindowPos2dMESA, NULL, _gloffset_WindowPos2dMESA), + NAME_FUNC_OFFSET(17963, glWindowPos2dvMESA, glWindowPos2dvMESA, NULL, _gloffset_WindowPos2dvMESA), + NAME_FUNC_OFFSET(17978, glWindowPos2dvMESA, glWindowPos2dvMESA, NULL, _gloffset_WindowPos2dvMESA), + NAME_FUNC_OFFSET(17996, glWindowPos2fMESA, glWindowPos2fMESA, NULL, _gloffset_WindowPos2fMESA), + NAME_FUNC_OFFSET(18010, glWindowPos2fMESA, glWindowPos2fMESA, NULL, _gloffset_WindowPos2fMESA), + NAME_FUNC_OFFSET(18027, glWindowPos2fvMESA, glWindowPos2fvMESA, NULL, _gloffset_WindowPos2fvMESA), + NAME_FUNC_OFFSET(18042, glWindowPos2fvMESA, glWindowPos2fvMESA, NULL, _gloffset_WindowPos2fvMESA), + NAME_FUNC_OFFSET(18060, glWindowPos2iMESA, glWindowPos2iMESA, NULL, _gloffset_WindowPos2iMESA), + NAME_FUNC_OFFSET(18074, glWindowPos2iMESA, glWindowPos2iMESA, NULL, _gloffset_WindowPos2iMESA), + NAME_FUNC_OFFSET(18091, glWindowPos2ivMESA, glWindowPos2ivMESA, NULL, _gloffset_WindowPos2ivMESA), + NAME_FUNC_OFFSET(18106, glWindowPos2ivMESA, glWindowPos2ivMESA, NULL, _gloffset_WindowPos2ivMESA), + NAME_FUNC_OFFSET(18124, glWindowPos2sMESA, glWindowPos2sMESA, NULL, _gloffset_WindowPos2sMESA), + NAME_FUNC_OFFSET(18138, glWindowPos2sMESA, glWindowPos2sMESA, NULL, _gloffset_WindowPos2sMESA), + NAME_FUNC_OFFSET(18155, glWindowPos2svMESA, glWindowPos2svMESA, NULL, _gloffset_WindowPos2svMESA), + NAME_FUNC_OFFSET(18170, glWindowPos2svMESA, glWindowPos2svMESA, NULL, _gloffset_WindowPos2svMESA), + NAME_FUNC_OFFSET(18188, glWindowPos3dMESA, glWindowPos3dMESA, NULL, _gloffset_WindowPos3dMESA), + NAME_FUNC_OFFSET(18202, glWindowPos3dMESA, glWindowPos3dMESA, NULL, _gloffset_WindowPos3dMESA), + NAME_FUNC_OFFSET(18219, glWindowPos3dvMESA, glWindowPos3dvMESA, NULL, _gloffset_WindowPos3dvMESA), + NAME_FUNC_OFFSET(18234, glWindowPos3dvMESA, glWindowPos3dvMESA, NULL, _gloffset_WindowPos3dvMESA), + NAME_FUNC_OFFSET(18252, glWindowPos3fMESA, glWindowPos3fMESA, NULL, _gloffset_WindowPos3fMESA), + NAME_FUNC_OFFSET(18266, glWindowPos3fMESA, glWindowPos3fMESA, NULL, _gloffset_WindowPos3fMESA), + NAME_FUNC_OFFSET(18283, glWindowPos3fvMESA, glWindowPos3fvMESA, NULL, _gloffset_WindowPos3fvMESA), + NAME_FUNC_OFFSET(18298, glWindowPos3fvMESA, glWindowPos3fvMESA, NULL, _gloffset_WindowPos3fvMESA), + NAME_FUNC_OFFSET(18316, glWindowPos3iMESA, glWindowPos3iMESA, NULL, _gloffset_WindowPos3iMESA), + NAME_FUNC_OFFSET(18330, glWindowPos3iMESA, glWindowPos3iMESA, NULL, _gloffset_WindowPos3iMESA), + NAME_FUNC_OFFSET(18347, glWindowPos3ivMESA, glWindowPos3ivMESA, NULL, _gloffset_WindowPos3ivMESA), + NAME_FUNC_OFFSET(18362, glWindowPos3ivMESA, glWindowPos3ivMESA, NULL, _gloffset_WindowPos3ivMESA), + NAME_FUNC_OFFSET(18380, glWindowPos3sMESA, glWindowPos3sMESA, NULL, _gloffset_WindowPos3sMESA), + NAME_FUNC_OFFSET(18394, glWindowPos3sMESA, glWindowPos3sMESA, NULL, _gloffset_WindowPos3sMESA), + NAME_FUNC_OFFSET(18411, glWindowPos3svMESA, glWindowPos3svMESA, NULL, _gloffset_WindowPos3svMESA), + NAME_FUNC_OFFSET(18426, glWindowPos3svMESA, glWindowPos3svMESA, NULL, _gloffset_WindowPos3svMESA), + NAME_FUNC_OFFSET(18444, glBindProgramNV, glBindProgramNV, NULL, _gloffset_BindProgramNV), + NAME_FUNC_OFFSET(18461, glDeleteProgramsNV, glDeleteProgramsNV, NULL, _gloffset_DeleteProgramsNV), + NAME_FUNC_OFFSET(18481, glGenProgramsNV, glGenProgramsNV, NULL, _gloffset_GenProgramsNV), + NAME_FUNC_OFFSET(18498, glGetVertexAttribPointervNV, glGetVertexAttribPointervNV, NULL, _gloffset_GetVertexAttribPointervNV), + NAME_FUNC_OFFSET(18524, glGetVertexAttribPointervNV, glGetVertexAttribPointervNV, NULL, _gloffset_GetVertexAttribPointervNV), + NAME_FUNC_OFFSET(18553, glIsProgramNV, glIsProgramNV, NULL, _gloffset_IsProgramNV), + NAME_FUNC_OFFSET(18568, glPointParameteriNV, glPointParameteriNV, NULL, _gloffset_PointParameteriNV), + NAME_FUNC_OFFSET(18586, glPointParameterivNV, glPointParameterivNV, NULL, _gloffset_PointParameterivNV), + NAME_FUNC_OFFSET(18605, gl_dispatch_stub_749, gl_dispatch_stub_749, NULL, _gloffset_BlendEquationSeparateEXT), + NAME_FUNC_OFFSET(18629, gl_dispatch_stub_749, gl_dispatch_stub_749, NULL, _gloffset_BlendEquationSeparateEXT), NAME_FUNC_OFFSET(-1, NULL, NULL, NULL, 0) }; diff --git a/src/mesa/main/attrib.c b/src/mesa/main/attrib.c index e2cfb8a1f66..4654704afd1 100644 --- a/src/mesa/main/attrib.c +++ b/src/mesa/main/attrib.c @@ -744,6 +744,18 @@ pop_texture_group(GLcontext *ctx, const struct gl_texture_attrib *texAttrib) target = GL_TEXTURE_RECTANGLE_NV; obj = &unit->SavedRect; break; + case 5: + if (!ctx->Extensions.MESA_texture_array) + continue; + target = GL_TEXTURE_1D_ARRAY_EXT; + obj = &unit->Saved1DArray; + break; + case 6: + if (!ctx->Extensions.MESA_texture_array) + continue; + target = GL_TEXTURE_2D_ARRAY_EXT; + obj = &unit->Saved2DArray; + break; default: ; /* silence warnings */ } diff --git a/src/mesa/main/config.h b/src/mesa/main/config.h index a4de3bd1fae..9e4d1838ade 100644 --- a/src/mesa/main/config.h +++ b/src/mesa/main/config.h @@ -108,6 +108,9 @@ /** Maximum rectangular texture size - GL_NV_texture_rectangle */ #define MAX_TEXTURE_RECT_SIZE 2048 +/** Maximum number of layers in a 1D or 2D array texture - GL_MESA_texture_array */ +#define MAX_ARRAY_TEXTURE_LAYERS 64 + /** Number of texture units - GL_ARB_multitexture * This needs to be the larger of MAX_TEXTURE_COORD_UNITS and * MAX_TEXTURE_IMAGE_UNITS seen below, since MAX_TEXTURE_UNITS is used diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c index ace68499d79..ccaf6f64280 100644 --- a/src/mesa/main/context.c +++ b/src/mesa/main/context.c @@ -467,12 +467,22 @@ alloc_shared_state( GLcontext *ctx ) if (!ss->DefaultRect) goto cleanup; + ss->Default1DArray = (*ctx->Driver.NewTextureObject)(ctx, 0, GL_TEXTURE_1D_ARRAY_EXT); + if (!ss->Default1DArray) + goto cleanup; + + ss->Default2DArray = (*ctx->Driver.NewTextureObject)(ctx, 0, GL_TEXTURE_2D_ARRAY_EXT); + if (!ss->Default2DArray) + goto cleanup; + /* Effectively bind the default textures to all texture units */ ss->Default1D->RefCount += MAX_TEXTURE_IMAGE_UNITS; ss->Default2D->RefCount += MAX_TEXTURE_IMAGE_UNITS; ss->Default3D->RefCount += MAX_TEXTURE_IMAGE_UNITS; ss->DefaultCubeMap->RefCount += MAX_TEXTURE_IMAGE_UNITS; ss->DefaultRect->RefCount += MAX_TEXTURE_IMAGE_UNITS; + ss->Default1DArray->RefCount += MAX_TEXTURE_IMAGE_UNITS; + ss->Default2DArray->RefCount += MAX_TEXTURE_IMAGE_UNITS; _glthread_INIT_MUTEX(ss->TexMutex); ss->TextureStateStamp = 0; @@ -772,6 +782,7 @@ _mesa_init_constants(GLcontext *ctx) ctx->Const.Max3DTextureLevels = MAX_3D_TEXTURE_LEVELS; ctx->Const.MaxCubeTextureLevels = MAX_CUBE_TEXTURE_LEVELS; ctx->Const.MaxTextureRectSize = MAX_TEXTURE_RECT_SIZE; + ctx->Const.MaxArrayTextureLayers = MAX_ARRAY_TEXTURE_LAYERS; ctx->Const.MaxTextureCoordUnits = MAX_TEXTURE_COORD_UNITS; ctx->Const.MaxTextureImageUnits = MAX_TEXTURE_IMAGE_UNITS; ctx->Const.MaxTextureUnits = MIN2(ctx->Const.MaxTextureCoordUnits, diff --git a/src/mesa/main/enable.c b/src/mesa/main/enable.c index 0e14345e730..52dd63f2cef 100644 --- a/src/mesa/main/enable.c +++ b/src/mesa/main/enable.c @@ -922,6 +922,22 @@ _mesa_set_enable(GLcontext *ctx, GLenum cap, GLboolean state) ctx->ATIFragmentShader.Enabled = state; break; #endif + + /* GL_MESA_texture_array */ + case GL_TEXTURE_1D_ARRAY_EXT: + CHECK_EXTENSION(MESA_texture_array, cap); + if (!enable_texture(ctx, state, TEXTURE_1D_ARRAY_BIT)) { + return; + } + break; + + case GL_TEXTURE_2D_ARRAY_EXT: + CHECK_EXTENSION(MESA_texture_array, cap); + if (!enable_texture(ctx, state, TEXTURE_2D_ARRAY_BIT)) { + return; + } + break; + default: _mesa_error(ctx, GL_INVALID_ENUM, "%s(0x%x)", state ? "glEnable" : "glDisable", cap); diff --git a/src/mesa/main/enums.c b/src/mesa/main/enums.c index bad33f7f642..d5019ae045a 100644 --- a/src/mesa/main/enums.c +++ b/src/mesa/main/enums.c @@ -251,6 +251,7 @@ LONGSTRING static const char enum_string_table[] = "GL_COMBINE_RGB\0" "GL_COMBINE_RGB_ARB\0" "GL_COMBINE_RGB_EXT\0" + "GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT\0" "GL_COMPARE_R_TO_TEXTURE\0" "GL_COMPARE_R_TO_TEXTURE_ARB\0" "GL_COMPILE\0" @@ -527,6 +528,7 @@ LONGSTRING static const char enum_string_table[] = "GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT\0" "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT\0" "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT\0" + "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT\0" "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT\0" "GL_FRAMEBUFFER_BINDING_EXT\0" "GL_FRAMEBUFFER_COMPLETE_EXT\0" @@ -828,6 +830,7 @@ LONGSTRING static const char enum_string_table[] = "GL_MATRIX_PALETTE_ARB\0" "GL_MAX\0" "GL_MAX_3D_TEXTURE_SIZE\0" + "GL_MAX_ARRAY_TEXTURE_LAYERS_EXT\0" "GL_MAX_ATTRIB_STACK_DEPTH\0" "GL_MAX_CLIENT_ATTRIB_STACK_DEPTH\0" "GL_MAX_CLIPMAP_DEPTH_SGIX\0" @@ -1230,8 +1233,10 @@ LONGSTRING static const char enum_string_table[] = "GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE\0" "GL_PROXY_POST_CONVOLUTION_COLOR_TABLE\0" "GL_PROXY_TEXTURE_1D\0" + "GL_PROXY_TEXTURE_1D_ARRAY_EXT\0" "GL_PROXY_TEXTURE_1D_EXT\0" "GL_PROXY_TEXTURE_2D\0" + "GL_PROXY_TEXTURE_2D_ARRAY_EXT\0" "GL_PROXY_TEXTURE_2D_EXT\0" "GL_PROXY_TEXTURE_3D\0" "GL_PROXY_TEXTURE_COLOR_TABLE_SGI\0" @@ -1537,13 +1542,17 @@ LONGSTRING static const char enum_string_table[] = "GL_TEXTURE9\0" "GL_TEXTURE9_ARB\0" "GL_TEXTURE_1D\0" + "GL_TEXTURE_1D_ARRAY_EXT\0" "GL_TEXTURE_2D\0" + "GL_TEXTURE_2D_ARRAY_EXT\0" "GL_TEXTURE_3D\0" "GL_TEXTURE_ALPHA_SIZE\0" "GL_TEXTURE_ALPHA_SIZE_EXT\0" "GL_TEXTURE_BASE_LEVEL\0" "GL_TEXTURE_BINDING_1D\0" + "GL_TEXTURE_BINDING_1D_ARRAY_EXT\0" "GL_TEXTURE_BINDING_2D\0" + "GL_TEXTURE_BINDING_2D_ARRAY_EXT\0" "GL_TEXTURE_BINDING_3D\0" "GL_TEXTURE_BINDING_CUBE_MAP\0" "GL_TEXTURE_BINDING_CUBE_MAP_ARB\0" @@ -1774,7 +1783,7 @@ LONGSTRING static const char enum_string_table[] = "GL_ZOOM_Y\0" ; -static const enum_elt all_enums[1737] = +static const enum_elt all_enums[1746] = { { 0, 0x00000600 }, /* GL_2D */ { 6, 0x00001407 }, /* GL_2_BYTES */ @@ -1992,2130 +2001,2139 @@ static const enum_elt all_enums[1737] = { 4100, 0x00008571 }, /* GL_COMBINE_RGB */ { 4115, 0x00008571 }, /* GL_COMBINE_RGB_ARB */ { 4134, 0x00008571 }, /* GL_COMBINE_RGB_EXT */ - { 4153, 0x0000884E }, /* GL_COMPARE_R_TO_TEXTURE */ - { 4177, 0x0000884E }, /* GL_COMPARE_R_TO_TEXTURE_ARB */ - { 4205, 0x00001300 }, /* GL_COMPILE */ - { 4216, 0x00001301 }, /* GL_COMPILE_AND_EXECUTE */ - { 4239, 0x00008B81 }, /* GL_COMPILE_STATUS */ - { 4257, 0x000084E9 }, /* GL_COMPRESSED_ALPHA */ - { 4277, 0x000084E9 }, /* GL_COMPRESSED_ALPHA_ARB */ - { 4301, 0x000084EC }, /* GL_COMPRESSED_INTENSITY */ - { 4325, 0x000084EC }, /* GL_COMPRESSED_INTENSITY_ARB */ - { 4353, 0x000084EA }, /* GL_COMPRESSED_LUMINANCE */ - { 4377, 0x000084EB }, /* GL_COMPRESSED_LUMINANCE_ALPHA */ - { 4407, 0x000084EB }, /* GL_COMPRESSED_LUMINANCE_ALPHA_ARB */ - { 4441, 0x000084EA }, /* GL_COMPRESSED_LUMINANCE_ARB */ - { 4469, 0x000084ED }, /* GL_COMPRESSED_RGB */ - { 4487, 0x000084EE }, /* GL_COMPRESSED_RGBA */ - { 4506, 0x000084EE }, /* GL_COMPRESSED_RGBA_ARB */ - { 4529, 0x000086B1 }, /* GL_COMPRESSED_RGBA_FXT1_3DFX */ - { 4558, 0x000083F1 }, /* GL_COMPRESSED_RGBA_S3TC_DXT1_EXT */ - { 4591, 0x000083F2 }, /* GL_COMPRESSED_RGBA_S3TC_DXT3_EXT */ - { 4624, 0x000083F3 }, /* GL_COMPRESSED_RGBA_S3TC_DXT5_EXT */ - { 4657, 0x000084ED }, /* GL_COMPRESSED_RGB_ARB */ - { 4679, 0x000086B0 }, /* GL_COMPRESSED_RGB_FXT1_3DFX */ - { 4707, 0x000083F0 }, /* GL_COMPRESSED_RGB_S3TC_DXT1_EXT */ - { 4739, 0x000086A3 }, /* GL_COMPRESSED_TEXTURE_FORMATS */ - { 4769, 0x00008576 }, /* GL_CONSTANT */ - { 4781, 0x00008003 }, /* GL_CONSTANT_ALPHA */ - { 4799, 0x00008003 }, /* GL_CONSTANT_ALPHA_EXT */ - { 4821, 0x00008576 }, /* GL_CONSTANT_ARB */ - { 4837, 0x00001207 }, /* GL_CONSTANT_ATTENUATION */ - { 4861, 0x00008151 }, /* GL_CONSTANT_BORDER_HP */ - { 4883, 0x00008001 }, /* GL_CONSTANT_COLOR */ - { 4901, 0x00008001 }, /* GL_CONSTANT_COLOR_EXT */ - { 4923, 0x00008576 }, /* GL_CONSTANT_EXT */ - { 4939, 0x00008010 }, /* GL_CONVOLUTION_1D */ - { 4957, 0x00008011 }, /* GL_CONVOLUTION_2D */ - { 4975, 0x00008154 }, /* GL_CONVOLUTION_BORDER_COLOR */ - { 5003, 0x00008154 }, /* GL_CONVOLUTION_BORDER_COLOR_HP */ - { 5034, 0x00008013 }, /* GL_CONVOLUTION_BORDER_MODE */ - { 5061, 0x00008013 }, /* GL_CONVOLUTION_BORDER_MODE_EXT */ - { 5092, 0x00008015 }, /* GL_CONVOLUTION_FILTER_BIAS */ - { 5119, 0x00008015 }, /* GL_CONVOLUTION_FILTER_BIAS_EXT */ - { 5150, 0x00008014 }, /* GL_CONVOLUTION_FILTER_SCALE */ - { 5178, 0x00008014 }, /* GL_CONVOLUTION_FILTER_SCALE_EXT */ - { 5210, 0x00008017 }, /* GL_CONVOLUTION_FORMAT */ - { 5232, 0x00008017 }, /* GL_CONVOLUTION_FORMAT_EXT */ - { 5258, 0x00008019 }, /* GL_CONVOLUTION_HEIGHT */ - { 5280, 0x00008019 }, /* GL_CONVOLUTION_HEIGHT_EXT */ - { 5306, 0x00008018 }, /* GL_CONVOLUTION_WIDTH */ - { 5327, 0x00008018 }, /* GL_CONVOLUTION_WIDTH_EXT */ - { 5352, 0x00008862 }, /* GL_COORD_REPLACE */ - { 5369, 0x00008862 }, /* GL_COORD_REPLACE_ARB */ - { 5390, 0x00008862 }, /* GL_COORD_REPLACE_NV */ - { 5410, 0x00001503 }, /* GL_COPY */ - { 5418, 0x0000150C }, /* GL_COPY_INVERTED */ - { 5435, 0x00000706 }, /* GL_COPY_PIXEL_TOKEN */ - { 5455, 0x00000B44 }, /* GL_CULL_FACE */ - { 5468, 0x00000B45 }, /* GL_CULL_FACE_MODE */ - { 5486, 0x000081AA }, /* GL_CULL_VERTEX_EXT */ - { 5505, 0x000081AC }, /* GL_CULL_VERTEX_EYE_POSITION_EXT */ - { 5537, 0x000081AB }, /* GL_CULL_VERTEX_OBJECT_POSITION_EXT */ - { 5572, 0x00008626 }, /* GL_CURRENT_ATTRIB_NV */ - { 5593, 0x00000001 }, /* GL_CURRENT_BIT */ - { 5608, 0x00000B00 }, /* GL_CURRENT_COLOR */ - { 5625, 0x00008453 }, /* GL_CURRENT_FOG_COORD */ - { 5646, 0x00008453 }, /* GL_CURRENT_FOG_COORDINATE */ - { 5672, 0x00000B01 }, /* GL_CURRENT_INDEX */ - { 5689, 0x00008641 }, /* GL_CURRENT_MATRIX_ARB */ - { 5711, 0x00008845 }, /* GL_CURRENT_MATRIX_INDEX_ARB */ - { 5739, 0x00008641 }, /* GL_CURRENT_MATRIX_NV */ - { 5760, 0x00008640 }, /* GL_CURRENT_MATRIX_STACK_DEPTH_ARB */ - { 5794, 0x00008640 }, /* GL_CURRENT_MATRIX_STACK_DEPTH_NV */ - { 5827, 0x00000B02 }, /* GL_CURRENT_NORMAL */ - { 5845, 0x00008843 }, /* GL_CURRENT_PALETTE_MATRIX_ARB */ - { 5875, 0x00008B8D }, /* GL_CURRENT_PROGRAM */ - { 5894, 0x00008865 }, /* GL_CURRENT_QUERY */ - { 5911, 0x00008865 }, /* GL_CURRENT_QUERY_ARB */ - { 5932, 0x00000B04 }, /* GL_CURRENT_RASTER_COLOR */ - { 5956, 0x00000B09 }, /* GL_CURRENT_RASTER_DISTANCE */ - { 5983, 0x00000B05 }, /* GL_CURRENT_RASTER_INDEX */ - { 6007, 0x00000B07 }, /* GL_CURRENT_RASTER_POSITION */ - { 6034, 0x00000B08 }, /* GL_CURRENT_RASTER_POSITION_VALID */ - { 6067, 0x00000B06 }, /* GL_CURRENT_RASTER_TEXTURE_COORDS */ - { 6100, 0x00008459 }, /* GL_CURRENT_SECONDARY_COLOR */ - { 6127, 0x00000B03 }, /* GL_CURRENT_TEXTURE_COORDS */ - { 6153, 0x00008626 }, /* GL_CURRENT_VERTEX_ATTRIB */ - { 6178, 0x00008626 }, /* GL_CURRENT_VERTEX_ATTRIB_ARB */ - { 6207, 0x000086A8 }, /* GL_CURRENT_WEIGHT_ARB */ - { 6229, 0x00000900 }, /* GL_CW */ - { 6235, 0x0000875B }, /* GL_DEBUG_ASSERT_MESA */ - { 6256, 0x00008759 }, /* GL_DEBUG_OBJECT_MESA */ - { 6277, 0x0000875A }, /* GL_DEBUG_PRINT_MESA */ - { 6297, 0x00002101 }, /* GL_DECAL */ - { 6306, 0x00001E03 }, /* GL_DECR */ - { 6314, 0x00008508 }, /* GL_DECR_WRAP */ - { 6327, 0x00008508 }, /* GL_DECR_WRAP_EXT */ - { 6344, 0x00008B80 }, /* GL_DELETE_STATUS */ - { 6361, 0x00001801 }, /* GL_DEPTH */ - { 6370, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT_EXT */ - { 6394, 0x00000D1F }, /* GL_DEPTH_BIAS */ - { 6408, 0x00000D56 }, /* GL_DEPTH_BITS */ - { 6422, 0x00008891 }, /* GL_DEPTH_BOUNDS_EXT */ - { 6442, 0x00008890 }, /* GL_DEPTH_BOUNDS_TEST_EXT */ - { 6467, 0x00000100 }, /* GL_DEPTH_BUFFER_BIT */ - { 6487, 0x0000864F }, /* GL_DEPTH_CLAMP_NV */ - { 6505, 0x00000B73 }, /* GL_DEPTH_CLEAR_VALUE */ - { 6526, 0x00001902 }, /* GL_DEPTH_COMPONENT */ - { 6545, 0x000081A5 }, /* GL_DEPTH_COMPONENT16 */ - { 6566, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_ARB */ - { 6591, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_SGIX */ - { 6617, 0x000081A6 }, /* GL_DEPTH_COMPONENT24 */ - { 6638, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_ARB */ - { 6663, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_SGIX */ - { 6689, 0x000081A7 }, /* GL_DEPTH_COMPONENT32 */ - { 6710, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_ARB */ - { 6735, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_SGIX */ - { 6761, 0x00000B74 }, /* GL_DEPTH_FUNC */ - { 6775, 0x00000B70 }, /* GL_DEPTH_RANGE */ - { 6790, 0x00000D1E }, /* GL_DEPTH_SCALE */ - { 6805, 0x000084F9 }, /* GL_DEPTH_STENCIL_NV */ - { 6825, 0x0000886F }, /* GL_DEPTH_STENCIL_TO_BGRA_NV */ - { 6853, 0x0000886E }, /* GL_DEPTH_STENCIL_TO_RGBA_NV */ - { 6881, 0x00000B71 }, /* GL_DEPTH_TEST */ - { 6895, 0x0000884B }, /* GL_DEPTH_TEXTURE_MODE */ - { 6917, 0x0000884B }, /* GL_DEPTH_TEXTURE_MODE_ARB */ - { 6943, 0x00000B72 }, /* GL_DEPTH_WRITEMASK */ - { 6962, 0x00001201 }, /* GL_DIFFUSE */ - { 6973, 0x00000BD0 }, /* GL_DITHER */ - { 6983, 0x00000A02 }, /* GL_DOMAIN */ - { 6993, 0x00001100 }, /* GL_DONT_CARE */ - { 7006, 0x000086AE }, /* GL_DOT3_RGB */ - { 7018, 0x000086AF }, /* GL_DOT3_RGBA */ - { 7031, 0x000086AF }, /* GL_DOT3_RGBA_ARB */ - { 7048, 0x00008741 }, /* GL_DOT3_RGBA_EXT */ - { 7065, 0x000086AE }, /* GL_DOT3_RGB_ARB */ - { 7081, 0x00008740 }, /* GL_DOT3_RGB_EXT */ - { 7097, 0x0000140A }, /* GL_DOUBLE */ - { 7107, 0x00000C32 }, /* GL_DOUBLEBUFFER */ - { 7123, 0x00000C01 }, /* GL_DRAW_BUFFER */ - { 7138, 0x00008825 }, /* GL_DRAW_BUFFER0 */ - { 7154, 0x00008825 }, /* GL_DRAW_BUFFER0_ARB */ - { 7174, 0x00008825 }, /* GL_DRAW_BUFFER0_ATI */ - { 7194, 0x00008826 }, /* GL_DRAW_BUFFER1 */ - { 7210, 0x0000882F }, /* GL_DRAW_BUFFER10 */ - { 7227, 0x0000882F }, /* GL_DRAW_BUFFER10_ARB */ - { 7248, 0x0000882F }, /* GL_DRAW_BUFFER10_ATI */ - { 7269, 0x00008830 }, /* GL_DRAW_BUFFER11 */ - { 7286, 0x00008830 }, /* GL_DRAW_BUFFER11_ARB */ - { 7307, 0x00008830 }, /* GL_DRAW_BUFFER11_ATI */ - { 7328, 0x00008831 }, /* GL_DRAW_BUFFER12 */ - { 7345, 0x00008831 }, /* GL_DRAW_BUFFER12_ARB */ - { 7366, 0x00008831 }, /* GL_DRAW_BUFFER12_ATI */ - { 7387, 0x00008832 }, /* GL_DRAW_BUFFER13 */ - { 7404, 0x00008832 }, /* GL_DRAW_BUFFER13_ARB */ - { 7425, 0x00008832 }, /* GL_DRAW_BUFFER13_ATI */ - { 7446, 0x00008833 }, /* GL_DRAW_BUFFER14 */ - { 7463, 0x00008833 }, /* GL_DRAW_BUFFER14_ARB */ - { 7484, 0x00008833 }, /* GL_DRAW_BUFFER14_ATI */ - { 7505, 0x00008834 }, /* GL_DRAW_BUFFER15 */ - { 7522, 0x00008834 }, /* GL_DRAW_BUFFER15_ARB */ - { 7543, 0x00008834 }, /* GL_DRAW_BUFFER15_ATI */ - { 7564, 0x00008826 }, /* GL_DRAW_BUFFER1_ARB */ - { 7584, 0x00008826 }, /* GL_DRAW_BUFFER1_ATI */ - { 7604, 0x00008827 }, /* GL_DRAW_BUFFER2 */ - { 7620, 0x00008827 }, /* GL_DRAW_BUFFER2_ARB */ - { 7640, 0x00008827 }, /* GL_DRAW_BUFFER2_ATI */ - { 7660, 0x00008828 }, /* GL_DRAW_BUFFER3 */ - { 7676, 0x00008828 }, /* GL_DRAW_BUFFER3_ARB */ - { 7696, 0x00008828 }, /* GL_DRAW_BUFFER3_ATI */ - { 7716, 0x00008829 }, /* GL_DRAW_BUFFER4 */ - { 7732, 0x00008829 }, /* GL_DRAW_BUFFER4_ARB */ - { 7752, 0x00008829 }, /* GL_DRAW_BUFFER4_ATI */ - { 7772, 0x0000882A }, /* GL_DRAW_BUFFER5 */ - { 7788, 0x0000882A }, /* GL_DRAW_BUFFER5_ARB */ - { 7808, 0x0000882A }, /* GL_DRAW_BUFFER5_ATI */ - { 7828, 0x0000882B }, /* GL_DRAW_BUFFER6 */ - { 7844, 0x0000882B }, /* GL_DRAW_BUFFER6_ARB */ - { 7864, 0x0000882B }, /* GL_DRAW_BUFFER6_ATI */ - { 7884, 0x0000882C }, /* GL_DRAW_BUFFER7 */ - { 7900, 0x0000882C }, /* GL_DRAW_BUFFER7_ARB */ - { 7920, 0x0000882C }, /* GL_DRAW_BUFFER7_ATI */ - { 7940, 0x0000882D }, /* GL_DRAW_BUFFER8 */ - { 7956, 0x0000882D }, /* GL_DRAW_BUFFER8_ARB */ - { 7976, 0x0000882D }, /* GL_DRAW_BUFFER8_ATI */ - { 7996, 0x0000882E }, /* GL_DRAW_BUFFER9 */ - { 8012, 0x0000882E }, /* GL_DRAW_BUFFER9_ARB */ - { 8032, 0x0000882E }, /* GL_DRAW_BUFFER9_ATI */ - { 8052, 0x00008CA6 }, /* GL_DRAW_FRAMEBUFFER_BINDING_EXT */ - { 8084, 0x00008CA9 }, /* GL_DRAW_FRAMEBUFFER_EXT */ - { 8108, 0x00000705 }, /* GL_DRAW_PIXEL_TOKEN */ - { 8128, 0x00000304 }, /* GL_DST_ALPHA */ - { 8141, 0x00000306 }, /* GL_DST_COLOR */ - { 8154, 0x000088EA }, /* GL_DYNAMIC_COPY */ - { 8170, 0x000088EA }, /* GL_DYNAMIC_COPY_ARB */ - { 8190, 0x000088E8 }, /* GL_DYNAMIC_DRAW */ - { 8206, 0x000088E8 }, /* GL_DYNAMIC_DRAW_ARB */ - { 8226, 0x000088E9 }, /* GL_DYNAMIC_READ */ - { 8242, 0x000088E9 }, /* GL_DYNAMIC_READ_ARB */ - { 8262, 0x00000B43 }, /* GL_EDGE_FLAG */ - { 8275, 0x00008079 }, /* GL_EDGE_FLAG_ARRAY */ - { 8294, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */ - { 8328, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB */ - { 8366, 0x00008093 }, /* GL_EDGE_FLAG_ARRAY_POINTER */ - { 8393, 0x0000808C }, /* GL_EDGE_FLAG_ARRAY_STRIDE */ - { 8419, 0x00008893 }, /* GL_ELEMENT_ARRAY_BUFFER */ - { 8443, 0x00008893 }, /* GL_ELEMENT_ARRAY_BUFFER_ARB */ - { 8471, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */ - { 8503, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB */ - { 8539, 0x00001600 }, /* GL_EMISSION */ - { 8551, 0x00002000 }, /* GL_ENABLE_BIT */ - { 8565, 0x00000202 }, /* GL_EQUAL */ - { 8574, 0x00001509 }, /* GL_EQUIV */ - { 8583, 0x00010000 }, /* GL_EVAL_BIT */ - { 8595, 0x00000800 }, /* GL_EXP */ - { 8602, 0x00000801 }, /* GL_EXP2 */ - { 8610, 0x00001F03 }, /* GL_EXTENSIONS */ - { 8624, 0x00002400 }, /* GL_EYE_LINEAR */ - { 8638, 0x00002502 }, /* GL_EYE_PLANE */ - { 8651, 0x0000855C }, /* GL_EYE_PLANE_ABSOLUTE_NV */ - { 8676, 0x0000855B }, /* GL_EYE_RADIAL_NV */ - { 8693, 0x00000000 }, /* GL_FALSE */ - { 8702, 0x00001101 }, /* GL_FASTEST */ - { 8713, 0x00001C01 }, /* GL_FEEDBACK */ - { 8725, 0x00000DF0 }, /* GL_FEEDBACK_BUFFER_POINTER */ - { 8752, 0x00000DF1 }, /* GL_FEEDBACK_BUFFER_SIZE */ - { 8776, 0x00000DF2 }, /* GL_FEEDBACK_BUFFER_TYPE */ - { 8800, 0x00001B02 }, /* GL_FILL */ - { 8808, 0x00001D00 }, /* GL_FLAT */ - { 8816, 0x00001406 }, /* GL_FLOAT */ - { 8825, 0x00008B5A }, /* GL_FLOAT_MAT2 */ - { 8839, 0x00008B5A }, /* GL_FLOAT_MAT2_ARB */ - { 8857, 0x00008B5B }, /* GL_FLOAT_MAT3 */ - { 8871, 0x00008B5B }, /* GL_FLOAT_MAT3_ARB */ - { 8889, 0x00008B5C }, /* GL_FLOAT_MAT4 */ - { 8903, 0x00008B5C }, /* GL_FLOAT_MAT4_ARB */ - { 8921, 0x00008B50 }, /* GL_FLOAT_VEC2 */ - { 8935, 0x00008B50 }, /* GL_FLOAT_VEC2_ARB */ - { 8953, 0x00008B51 }, /* GL_FLOAT_VEC3 */ - { 8967, 0x00008B51 }, /* GL_FLOAT_VEC3_ARB */ - { 8985, 0x00008B52 }, /* GL_FLOAT_VEC4 */ - { 8999, 0x00008B52 }, /* GL_FLOAT_VEC4_ARB */ - { 9017, 0x00000B60 }, /* GL_FOG */ - { 9024, 0x00000080 }, /* GL_FOG_BIT */ - { 9035, 0x00000B66 }, /* GL_FOG_COLOR */ - { 9048, 0x00008451 }, /* GL_FOG_COORD */ - { 9061, 0x00008451 }, /* GL_FOG_COORDINATE */ - { 9079, 0x00008457 }, /* GL_FOG_COORDINATE_ARRAY */ - { 9103, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */ - { 9142, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB */ - { 9185, 0x00008456 }, /* GL_FOG_COORDINATE_ARRAY_POINTER */ - { 9217, 0x00008455 }, /* GL_FOG_COORDINATE_ARRAY_STRIDE */ - { 9248, 0x00008454 }, /* GL_FOG_COORDINATE_ARRAY_TYPE */ - { 9277, 0x00008450 }, /* GL_FOG_COORDINATE_SOURCE */ - { 9302, 0x00008457 }, /* GL_FOG_COORD_ARRAY */ - { 9321, 0x0000889D }, /* GL_FOG_COORD_ARRAY_BUFFER_BINDING */ - { 9355, 0x00008456 }, /* GL_FOG_COORD_ARRAY_POINTER */ - { 9382, 0x00008455 }, /* GL_FOG_COORD_ARRAY_STRIDE */ - { 9408, 0x00008454 }, /* GL_FOG_COORD_ARRAY_TYPE */ - { 9432, 0x00008450 }, /* GL_FOG_COORD_SRC */ - { 9449, 0x00000B62 }, /* GL_FOG_DENSITY */ - { 9464, 0x0000855A }, /* GL_FOG_DISTANCE_MODE_NV */ - { 9488, 0x00000B64 }, /* GL_FOG_END */ - { 9499, 0x00000C54 }, /* GL_FOG_HINT */ - { 9511, 0x00000B61 }, /* GL_FOG_INDEX */ - { 9524, 0x00000B65 }, /* GL_FOG_MODE */ - { 9536, 0x00008198 }, /* GL_FOG_OFFSET_SGIX */ - { 9555, 0x00008199 }, /* GL_FOG_OFFSET_VALUE_SGIX */ - { 9580, 0x00000B63 }, /* GL_FOG_START */ - { 9593, 0x00008452 }, /* GL_FRAGMENT_DEPTH */ - { 9611, 0x00008804 }, /* GL_FRAGMENT_PROGRAM_ARB */ - { 9635, 0x00008B30 }, /* GL_FRAGMENT_SHADER */ - { 9654, 0x00008B30 }, /* GL_FRAGMENT_SHADER_ARB */ - { 9677, 0x00008B8B }, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */ - { 9712, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT */ - { 9754, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT */ - { 9796, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT */ - { 9845, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT */ - { 9897, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT */ - { 9941, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING_EXT */ - { 9968, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE_EXT */ - { 9996, 0x00008D40 }, /* GL_FRAMEBUFFER_EXT */ - { 10015, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT */ - { 10056, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */ - { 10097, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT */ - { 10139, 0x00008CD8 }, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */ - { 10190, 0x00008CDA }, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */ - { 10228, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT */ - { 10277, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT */ - { 10319, 0x00008CDE }, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */ - { 10351, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED_EXT */ - { 10382, 0x00000404 }, /* GL_FRONT */ - { 10391, 0x00000408 }, /* GL_FRONT_AND_BACK */ - { 10409, 0x00000B46 }, /* GL_FRONT_FACE */ - { 10423, 0x00000400 }, /* GL_FRONT_LEFT */ - { 10437, 0x00000401 }, /* GL_FRONT_RIGHT */ - { 10452, 0x00008006 }, /* GL_FUNC_ADD */ - { 10464, 0x00008006 }, /* GL_FUNC_ADD_EXT */ - { 10480, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT */ - { 10505, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT_EXT */ - { 10534, 0x0000800A }, /* GL_FUNC_SUBTRACT */ - { 10551, 0x0000800A }, /* GL_FUNC_SUBTRACT_EXT */ - { 10572, 0x00008191 }, /* GL_GENERATE_MIPMAP */ - { 10591, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT */ - { 10615, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT_SGIS */ - { 10644, 0x00008191 }, /* GL_GENERATE_MIPMAP_SGIS */ - { 10668, 0x00000206 }, /* GL_GEQUAL */ - { 10678, 0x00008009 }, /* GL_GL_BLEND_EQUATION_RGB */ - { 10703, 0x00008C4A }, /* GL_GL_COMPRESSED_SLUMINANCE */ - { 10731, 0x00008C4B }, /* GL_GL_COMPRESSED_SLUMINANCE_ALPHA */ - { 10765, 0x00008C48 }, /* GL_GL_COMPRESSED_SRGB */ - { 10787, 0x00008C49 }, /* GL_GL_COMPRESSED_SRGB_ALPHA */ - { 10815, 0x0000845F }, /* GL_GL_CURRENT_RASTER_SECONDARY_COLOR */ - { 10852, 0x00008B65 }, /* GL_GL_FLOAT_MAT2x3 */ - { 10871, 0x00008B66 }, /* GL_GL_FLOAT_MAT2x4 */ - { 10890, 0x00008B67 }, /* GL_GL_FLOAT_MAT3x2 */ - { 10909, 0x00008B68 }, /* GL_GL_FLOAT_MAT3x4 */ - { 10928, 0x00008B69 }, /* GL_GL_FLOAT_MAT4x2 */ - { 10947, 0x00008B6A }, /* GL_GL_FLOAT_MAT4x3 */ - { 10966, 0x000088EB }, /* GL_GL_PIXEL_PACK_BUFFER */ - { 10990, 0x000088ED }, /* GL_GL_PIXEL_PACK_BUFFER_BINDING */ - { 11022, 0x000088EC }, /* GL_GL_PIXEL_UNPACK_BUFFER */ - { 11048, 0x000088EF }, /* GL_GL_PIXEL_UNPACK_BUFFER_BINDING */ - { 11082, 0x00008C46 }, /* GL_GL_SLUMINANCE */ - { 11099, 0x00008C47 }, /* GL_GL_SLUMINANCE8 */ - { 11117, 0x00008C45 }, /* GL_GL_SLUMINANCE8_ALPHA8 */ - { 11142, 0x00008C44 }, /* GL_GL_SLUMINANCE_ALPHA */ - { 11165, 0x00008C40 }, /* GL_GL_SRGB */ - { 11176, 0x00008C41 }, /* GL_GL_SRGB8 */ - { 11188, 0x00008C43 }, /* GL_GL_SRGB8_ALPHA8 */ - { 11207, 0x00008C42 }, /* GL_GL_SRGB_ALPHA */ - { 11224, 0x00000204 }, /* GL_GREATER */ - { 11235, 0x00001904 }, /* GL_GREEN */ - { 11244, 0x00000D19 }, /* GL_GREEN_BIAS */ - { 11258, 0x00000D53 }, /* GL_GREEN_BITS */ - { 11272, 0x00000D18 }, /* GL_GREEN_SCALE */ - { 11287, 0x00008000 }, /* GL_HINT_BIT */ - { 11299, 0x00008024 }, /* GL_HISTOGRAM */ - { 11312, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE */ - { 11336, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE_EXT */ - { 11364, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE */ - { 11387, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE_EXT */ - { 11414, 0x00008024 }, /* GL_HISTOGRAM_EXT */ - { 11431, 0x00008027 }, /* GL_HISTOGRAM_FORMAT */ - { 11451, 0x00008027 }, /* GL_HISTOGRAM_FORMAT_EXT */ - { 11475, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE */ - { 11499, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE_EXT */ - { 11527, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE */ - { 11555, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE_EXT */ - { 11587, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE */ - { 11609, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE_EXT */ - { 11635, 0x0000802D }, /* GL_HISTOGRAM_SINK */ - { 11653, 0x0000802D }, /* GL_HISTOGRAM_SINK_EXT */ - { 11675, 0x00008026 }, /* GL_HISTOGRAM_WIDTH */ - { 11694, 0x00008026 }, /* GL_HISTOGRAM_WIDTH_EXT */ - { 11717, 0x0000862A }, /* GL_IDENTITY_NV */ - { 11732, 0x00008150 }, /* GL_IGNORE_BORDER_HP */ - { 11752, 0x00008B9B }, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES */ - { 11792, 0x00008B9A }, /* GL_IMPLEMENTATION_COLOR_READ_TYPE_OES */ - { 11830, 0x00001E02 }, /* GL_INCR */ - { 11838, 0x00008507 }, /* GL_INCR_WRAP */ - { 11851, 0x00008507 }, /* GL_INCR_WRAP_EXT */ - { 11868, 0x00008077 }, /* GL_INDEX_ARRAY */ - { 11883, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING */ - { 11913, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING_ARB */ - { 11947, 0x00008091 }, /* GL_INDEX_ARRAY_POINTER */ - { 11970, 0x00008086 }, /* GL_INDEX_ARRAY_STRIDE */ - { 11992, 0x00008085 }, /* GL_INDEX_ARRAY_TYPE */ - { 12012, 0x00000D51 }, /* GL_INDEX_BITS */ - { 12026, 0x00000C20 }, /* GL_INDEX_CLEAR_VALUE */ - { 12047, 0x00000BF1 }, /* GL_INDEX_LOGIC_OP */ - { 12065, 0x00000C30 }, /* GL_INDEX_MODE */ - { 12079, 0x00000D13 }, /* GL_INDEX_OFFSET */ - { 12095, 0x00000D12 }, /* GL_INDEX_SHIFT */ - { 12110, 0x00000C21 }, /* GL_INDEX_WRITEMASK */ - { 12129, 0x00008B84 }, /* GL_INFO_LOG_LENGTH */ - { 12148, 0x00001404 }, /* GL_INT */ - { 12155, 0x00008049 }, /* GL_INTENSITY */ - { 12168, 0x0000804C }, /* GL_INTENSITY12 */ - { 12183, 0x0000804C }, /* GL_INTENSITY12_EXT */ - { 12202, 0x0000804D }, /* GL_INTENSITY16 */ - { 12217, 0x0000804D }, /* GL_INTENSITY16_EXT */ - { 12236, 0x0000804A }, /* GL_INTENSITY4 */ - { 12250, 0x0000804A }, /* GL_INTENSITY4_EXT */ - { 12268, 0x0000804B }, /* GL_INTENSITY8 */ - { 12282, 0x0000804B }, /* GL_INTENSITY8_EXT */ - { 12300, 0x00008049 }, /* GL_INTENSITY_EXT */ - { 12317, 0x00008575 }, /* GL_INTERPOLATE */ - { 12332, 0x00008575 }, /* GL_INTERPOLATE_ARB */ - { 12351, 0x00008575 }, /* GL_INTERPOLATE_EXT */ - { 12370, 0x00008B53 }, /* GL_INT_VEC2 */ - { 12382, 0x00008B53 }, /* GL_INT_VEC2_ARB */ - { 12398, 0x00008B54 }, /* GL_INT_VEC3 */ - { 12410, 0x00008B54 }, /* GL_INT_VEC3_ARB */ - { 12426, 0x00008B55 }, /* GL_INT_VEC4 */ - { 12438, 0x00008B55 }, /* GL_INT_VEC4_ARB */ - { 12454, 0x00000500 }, /* GL_INVALID_ENUM */ - { 12470, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION_EXT */ - { 12507, 0x00000502 }, /* GL_INVALID_OPERATION */ - { 12528, 0x00000501 }, /* GL_INVALID_VALUE */ - { 12545, 0x0000862B }, /* GL_INVERSE_NV */ - { 12559, 0x0000862D }, /* GL_INVERSE_TRANSPOSE_NV */ - { 12583, 0x0000150A }, /* GL_INVERT */ - { 12593, 0x00001E00 }, /* GL_KEEP */ - { 12601, 0x00000406 }, /* GL_LEFT */ - { 12609, 0x00000203 }, /* GL_LEQUAL */ - { 12619, 0x00000201 }, /* GL_LESS */ - { 12627, 0x00004000 }, /* GL_LIGHT0 */ - { 12637, 0x00004001 }, /* GL_LIGHT1 */ - { 12647, 0x00004002 }, /* GL_LIGHT2 */ - { 12657, 0x00004003 }, /* GL_LIGHT3 */ - { 12667, 0x00004004 }, /* GL_LIGHT4 */ - { 12677, 0x00004005 }, /* GL_LIGHT5 */ - { 12687, 0x00004006 }, /* GL_LIGHT6 */ - { 12697, 0x00004007 }, /* GL_LIGHT7 */ - { 12707, 0x00000B50 }, /* GL_LIGHTING */ - { 12719, 0x00000040 }, /* GL_LIGHTING_BIT */ - { 12735, 0x00000B53 }, /* GL_LIGHT_MODEL_AMBIENT */ - { 12758, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL */ - { 12787, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL_EXT */ - { 12820, 0x00000B51 }, /* GL_LIGHT_MODEL_LOCAL_VIEWER */ - { 12848, 0x00000B52 }, /* GL_LIGHT_MODEL_TWO_SIDE */ - { 12872, 0x00001B01 }, /* GL_LINE */ - { 12880, 0x00002601 }, /* GL_LINEAR */ - { 12890, 0x00001208 }, /* GL_LINEAR_ATTENUATION */ - { 12912, 0x00008170 }, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */ - { 12942, 0x0000844F }, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */ - { 12973, 0x00002703 }, /* GL_LINEAR_MIPMAP_LINEAR */ - { 12997, 0x00002701 }, /* GL_LINEAR_MIPMAP_NEAREST */ - { 13022, 0x00000001 }, /* GL_LINES */ - { 13031, 0x00000004 }, /* GL_LINE_BIT */ - { 13043, 0x00000002 }, /* GL_LINE_LOOP */ - { 13056, 0x00000707 }, /* GL_LINE_RESET_TOKEN */ - { 13076, 0x00000B20 }, /* GL_LINE_SMOOTH */ - { 13091, 0x00000C52 }, /* GL_LINE_SMOOTH_HINT */ - { 13111, 0x00000B24 }, /* GL_LINE_STIPPLE */ - { 13127, 0x00000B25 }, /* GL_LINE_STIPPLE_PATTERN */ - { 13151, 0x00000B26 }, /* GL_LINE_STIPPLE_REPEAT */ - { 13174, 0x00000003 }, /* GL_LINE_STRIP */ - { 13188, 0x00000702 }, /* GL_LINE_TOKEN */ - { 13202, 0x00000B21 }, /* GL_LINE_WIDTH */ - { 13216, 0x00000B23 }, /* GL_LINE_WIDTH_GRANULARITY */ - { 13242, 0x00000B22 }, /* GL_LINE_WIDTH_RANGE */ - { 13262, 0x00008B82 }, /* GL_LINK_STATUS */ - { 13277, 0x00000B32 }, /* GL_LIST_BASE */ - { 13290, 0x00020000 }, /* GL_LIST_BIT */ - { 13302, 0x00000B33 }, /* GL_LIST_INDEX */ - { 13316, 0x00000B30 }, /* GL_LIST_MODE */ - { 13329, 0x00000101 }, /* GL_LOAD */ - { 13337, 0x00000BF1 }, /* GL_LOGIC_OP */ - { 13349, 0x00000BF0 }, /* GL_LOGIC_OP_MODE */ - { 13366, 0x00008CA1 }, /* GL_LOWER_LEFT */ - { 13380, 0x00001909 }, /* GL_LUMINANCE */ - { 13393, 0x00008041 }, /* GL_LUMINANCE12 */ - { 13408, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12 */ - { 13431, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12_EXT */ - { 13458, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4 */ - { 13480, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4_EXT */ - { 13506, 0x00008041 }, /* GL_LUMINANCE12_EXT */ - { 13525, 0x00008042 }, /* GL_LUMINANCE16 */ - { 13540, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16 */ - { 13563, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16_EXT */ - { 13590, 0x00008042 }, /* GL_LUMINANCE16_EXT */ - { 13609, 0x0000803F }, /* GL_LUMINANCE4 */ - { 13623, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4 */ - { 13644, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4_EXT */ - { 13669, 0x0000803F }, /* GL_LUMINANCE4_EXT */ - { 13687, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2 */ - { 13708, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2_EXT */ - { 13733, 0x00008040 }, /* GL_LUMINANCE8 */ - { 13747, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8 */ - { 13768, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8_EXT */ - { 13793, 0x00008040 }, /* GL_LUMINANCE8_EXT */ - { 13811, 0x0000190A }, /* GL_LUMINANCE_ALPHA */ - { 13830, 0x00000D90 }, /* GL_MAP1_COLOR_4 */ - { 13846, 0x00000DD0 }, /* GL_MAP1_GRID_DOMAIN */ - { 13866, 0x00000DD1 }, /* GL_MAP1_GRID_SEGMENTS */ - { 13888, 0x00000D91 }, /* GL_MAP1_INDEX */ - { 13902, 0x00000D92 }, /* GL_MAP1_NORMAL */ - { 13917, 0x00000D93 }, /* GL_MAP1_TEXTURE_COORD_1 */ - { 13941, 0x00000D94 }, /* GL_MAP1_TEXTURE_COORD_2 */ - { 13965, 0x00000D95 }, /* GL_MAP1_TEXTURE_COORD_3 */ - { 13989, 0x00000D96 }, /* GL_MAP1_TEXTURE_COORD_4 */ - { 14013, 0x00000D97 }, /* GL_MAP1_VERTEX_3 */ - { 14030, 0x00000D98 }, /* GL_MAP1_VERTEX_4 */ - { 14047, 0x00008660 }, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */ - { 14075, 0x0000866A }, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */ - { 14104, 0x0000866B }, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */ - { 14133, 0x0000866C }, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */ - { 14162, 0x0000866D }, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */ - { 14191, 0x0000866E }, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */ - { 14220, 0x0000866F }, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */ - { 14249, 0x00008661 }, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */ - { 14277, 0x00008662 }, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */ - { 14305, 0x00008663 }, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */ - { 14333, 0x00008664 }, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */ - { 14361, 0x00008665 }, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */ - { 14389, 0x00008666 }, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */ - { 14417, 0x00008667 }, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */ - { 14445, 0x00008668 }, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */ - { 14473, 0x00008669 }, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */ - { 14501, 0x00000DB0 }, /* GL_MAP2_COLOR_4 */ - { 14517, 0x00000DD2 }, /* GL_MAP2_GRID_DOMAIN */ - { 14537, 0x00000DD3 }, /* GL_MAP2_GRID_SEGMENTS */ - { 14559, 0x00000DB1 }, /* GL_MAP2_INDEX */ - { 14573, 0x00000DB2 }, /* GL_MAP2_NORMAL */ - { 14588, 0x00000DB3 }, /* GL_MAP2_TEXTURE_COORD_1 */ - { 14612, 0x00000DB4 }, /* GL_MAP2_TEXTURE_COORD_2 */ - { 14636, 0x00000DB5 }, /* GL_MAP2_TEXTURE_COORD_3 */ - { 14660, 0x00000DB6 }, /* GL_MAP2_TEXTURE_COORD_4 */ - { 14684, 0x00000DB7 }, /* GL_MAP2_VERTEX_3 */ - { 14701, 0x00000DB8 }, /* GL_MAP2_VERTEX_4 */ - { 14718, 0x00008670 }, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */ - { 14746, 0x0000867A }, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */ - { 14775, 0x0000867B }, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */ - { 14804, 0x0000867C }, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */ - { 14833, 0x0000867D }, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */ - { 14862, 0x0000867E }, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */ - { 14891, 0x0000867F }, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */ - { 14920, 0x00008671 }, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */ - { 14948, 0x00008672 }, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */ - { 14976, 0x00008673 }, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */ - { 15004, 0x00008674 }, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */ - { 15032, 0x00008675 }, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */ - { 15060, 0x00008676 }, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */ - { 15088, 0x00008677 }, /* GL_MAP2_VERTEX_ATTRIB7_4_NV */ - { 15116, 0x00008678 }, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */ - { 15144, 0x00008679 }, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */ - { 15172, 0x00000D10 }, /* GL_MAP_COLOR */ - { 15185, 0x00000D11 }, /* GL_MAP_STENCIL */ - { 15200, 0x000088C0 }, /* GL_MATRIX0_ARB */ - { 15215, 0x00008630 }, /* GL_MATRIX0_NV */ - { 15229, 0x000088CA }, /* GL_MATRIX10_ARB */ - { 15245, 0x000088CB }, /* GL_MATRIX11_ARB */ - { 15261, 0x000088CC }, /* GL_MATRIX12_ARB */ - { 15277, 0x000088CD }, /* GL_MATRIX13_ARB */ - { 15293, 0x000088CE }, /* GL_MATRIX14_ARB */ - { 15309, 0x000088CF }, /* GL_MATRIX15_ARB */ - { 15325, 0x000088D0 }, /* GL_MATRIX16_ARB */ - { 15341, 0x000088D1 }, /* GL_MATRIX17_ARB */ - { 15357, 0x000088D2 }, /* GL_MATRIX18_ARB */ - { 15373, 0x000088D3 }, /* GL_MATRIX19_ARB */ - { 15389, 0x000088C1 }, /* GL_MATRIX1_ARB */ - { 15404, 0x00008631 }, /* GL_MATRIX1_NV */ - { 15418, 0x000088D4 }, /* GL_MATRIX20_ARB */ - { 15434, 0x000088D5 }, /* GL_MATRIX21_ARB */ - { 15450, 0x000088D6 }, /* GL_MATRIX22_ARB */ - { 15466, 0x000088D7 }, /* GL_MATRIX23_ARB */ - { 15482, 0x000088D8 }, /* GL_MATRIX24_ARB */ - { 15498, 0x000088D9 }, /* GL_MATRIX25_ARB */ - { 15514, 0x000088DA }, /* GL_MATRIX26_ARB */ - { 15530, 0x000088DB }, /* GL_MATRIX27_ARB */ - { 15546, 0x000088DC }, /* GL_MATRIX28_ARB */ - { 15562, 0x000088DD }, /* GL_MATRIX29_ARB */ - { 15578, 0x000088C2 }, /* GL_MATRIX2_ARB */ - { 15593, 0x00008632 }, /* GL_MATRIX2_NV */ - { 15607, 0x000088DE }, /* GL_MATRIX30_ARB */ - { 15623, 0x000088DF }, /* GL_MATRIX31_ARB */ - { 15639, 0x000088C3 }, /* GL_MATRIX3_ARB */ - { 15654, 0x00008633 }, /* GL_MATRIX3_NV */ - { 15668, 0x000088C4 }, /* GL_MATRIX4_ARB */ - { 15683, 0x00008634 }, /* GL_MATRIX4_NV */ - { 15697, 0x000088C5 }, /* GL_MATRIX5_ARB */ - { 15712, 0x00008635 }, /* GL_MATRIX5_NV */ - { 15726, 0x000088C6 }, /* GL_MATRIX6_ARB */ - { 15741, 0x00008636 }, /* GL_MATRIX6_NV */ - { 15755, 0x000088C7 }, /* GL_MATRIX7_ARB */ - { 15770, 0x00008637 }, /* GL_MATRIX7_NV */ - { 15784, 0x000088C8 }, /* GL_MATRIX8_ARB */ - { 15799, 0x000088C9 }, /* GL_MATRIX9_ARB */ - { 15814, 0x00008844 }, /* GL_MATRIX_INDEX_ARRAY_ARB */ - { 15840, 0x00008849 }, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */ - { 15874, 0x00008846 }, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */ - { 15905, 0x00008848 }, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */ - { 15938, 0x00008847 }, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */ - { 15969, 0x00000BA0 }, /* GL_MATRIX_MODE */ - { 15984, 0x00008840 }, /* GL_MATRIX_PALETTE_ARB */ - { 16006, 0x00008008 }, /* GL_MAX */ - { 16013, 0x00008073 }, /* GL_MAX_3D_TEXTURE_SIZE */ - { 16036, 0x00000D35 }, /* GL_MAX_ATTRIB_STACK_DEPTH */ - { 16062, 0x00000D3B }, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */ - { 16095, 0x00008177 }, /* GL_MAX_CLIPMAP_DEPTH_SGIX */ - { 16121, 0x00008178 }, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */ - { 16155, 0x00000D32 }, /* GL_MAX_CLIP_PLANES */ - { 16174, 0x00008CDF }, /* GL_MAX_COLOR_ATTACHMENTS_EXT */ - { 16203, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */ - { 16235, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI */ - { 16271, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */ - { 16307, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB */ - { 16347, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT */ - { 16373, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT_EXT */ - { 16403, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH */ - { 16428, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH_EXT */ - { 16457, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */ - { 16486, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB */ - { 16519, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS */ - { 16539, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ARB */ - { 16563, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ATI */ - { 16587, 0x000080E9 }, /* GL_MAX_ELEMENTS_INDICES */ - { 16611, 0x000080E8 }, /* GL_MAX_ELEMENTS_VERTICES */ - { 16636, 0x00000D30 }, /* GL_MAX_EVAL_ORDER */ - { 16654, 0x00008008 }, /* GL_MAX_EXT */ - { 16665, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */ - { 16700, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB */ - { 16739, 0x00000D31 }, /* GL_MAX_LIGHTS */ - { 16753, 0x00000B31 }, /* GL_MAX_LIST_NESTING */ - { 16773, 0x00008841 }, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */ - { 16811, 0x00000D36 }, /* GL_MAX_MODELVIEW_STACK_DEPTH */ - { 16840, 0x00000D37 }, /* GL_MAX_NAME_STACK_DEPTH */ - { 16864, 0x00008842 }, /* GL_MAX_PALETTE_MATRICES_ARB */ - { 16892, 0x00000D34 }, /* GL_MAX_PIXEL_MAP_TABLE */ - { 16915, 0x000088B1 }, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */ - { 16952, 0x0000880B }, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */ - { 16988, 0x000088AD }, /* GL_MAX_PROGRAM_ATTRIBS_ARB */ - { 17015, 0x000088F5 }, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */ - { 17044, 0x000088B5 }, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */ - { 17078, 0x000088F4 }, /* GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV */ - { 17114, 0x000088F6 }, /* GL_MAX_PROGRAM_IF_DEPTH_NV */ - { 17141, 0x000088A1 }, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */ - { 17173, 0x000088B4 }, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */ - { 17209, 0x000088F8 }, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */ - { 17238, 0x000088F7 }, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */ - { 17267, 0x0000862F }, /* GL_MAX_PROGRAM_MATRICES_ARB */ - { 17295, 0x0000862E }, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */ - { 17333, 0x000088B3 }, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ - { 17377, 0x0000880E }, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ - { 17420, 0x000088AF }, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */ - { 17454, 0x000088A3 }, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ - { 17493, 0x000088AB }, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */ - { 17530, 0x000088A7 }, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */ - { 17568, 0x00008810 }, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ - { 17611, 0x0000880F }, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ - { 17654, 0x000088A9 }, /* GL_MAX_PROGRAM_PARAMETERS_ARB */ - { 17684, 0x000088A5 }, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */ - { 17715, 0x0000880D }, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */ - { 17751, 0x0000880C }, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */ - { 17787, 0x00000D38 }, /* GL_MAX_PROJECTION_STACK_DEPTH */ - { 17817, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB */ - { 17851, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_NV */ - { 17884, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE_EXT */ - { 17913, 0x00008504 }, /* GL_MAX_SHININESS_NV */ - { 17933, 0x00008505 }, /* GL_MAX_SPOT_EXPONENT_NV */ - { 17957, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS */ - { 17979, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS_ARB */ - { 18005, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS */ - { 18032, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS_ARB */ - { 18063, 0x000084FD }, /* GL_MAX_TEXTURE_LOD_BIAS */ - { 18087, 0x000084FF }, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */ - { 18121, 0x00000D33 }, /* GL_MAX_TEXTURE_SIZE */ - { 18141, 0x00000D39 }, /* GL_MAX_TEXTURE_STACK_DEPTH */ - { 18168, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS */ - { 18189, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS_ARB */ - { 18214, 0x0000862F }, /* GL_MAX_TRACK_MATRICES_NV */ - { 18239, 0x0000862E }, /* GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV */ - { 18274, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS */ - { 18296, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS_ARB */ - { 18322, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS */ - { 18344, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS_ARB */ - { 18370, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */ - { 18404, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB */ - { 18442, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */ - { 18475, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB */ - { 18512, 0x000086A4 }, /* GL_MAX_VERTEX_UNITS_ARB */ - { 18536, 0x00000D3A }, /* GL_MAX_VIEWPORT_DIMS */ - { 18557, 0x00008007 }, /* GL_MIN */ - { 18564, 0x0000802E }, /* GL_MINMAX */ - { 18574, 0x0000802E }, /* GL_MINMAX_EXT */ - { 18588, 0x0000802F }, /* GL_MINMAX_FORMAT */ - { 18605, 0x0000802F }, /* GL_MINMAX_FORMAT_EXT */ - { 18626, 0x00008030 }, /* GL_MINMAX_SINK */ - { 18641, 0x00008030 }, /* GL_MINMAX_SINK_EXT */ - { 18660, 0x00008007 }, /* GL_MIN_EXT */ - { 18671, 0x00008370 }, /* GL_MIRRORED_REPEAT */ - { 18690, 0x00008370 }, /* GL_MIRRORED_REPEAT_ARB */ - { 18713, 0x00008370 }, /* GL_MIRRORED_REPEAT_IBM */ - { 18736, 0x00008742 }, /* GL_MIRROR_CLAMP_ATI */ - { 18756, 0x00008742 }, /* GL_MIRROR_CLAMP_EXT */ - { 18776, 0x00008912 }, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */ - { 18806, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_ATI */ - { 18834, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */ - { 18862, 0x00001700 }, /* GL_MODELVIEW */ - { 18875, 0x00001700 }, /* GL_MODELVIEW0_ARB */ - { 18893, 0x0000872A }, /* GL_MODELVIEW10_ARB */ - { 18912, 0x0000872B }, /* GL_MODELVIEW11_ARB */ - { 18931, 0x0000872C }, /* GL_MODELVIEW12_ARB */ - { 18950, 0x0000872D }, /* GL_MODELVIEW13_ARB */ - { 18969, 0x0000872E }, /* GL_MODELVIEW14_ARB */ - { 18988, 0x0000872F }, /* GL_MODELVIEW15_ARB */ - { 19007, 0x00008730 }, /* GL_MODELVIEW16_ARB */ - { 19026, 0x00008731 }, /* GL_MODELVIEW17_ARB */ - { 19045, 0x00008732 }, /* GL_MODELVIEW18_ARB */ - { 19064, 0x00008733 }, /* GL_MODELVIEW19_ARB */ - { 19083, 0x0000850A }, /* GL_MODELVIEW1_ARB */ - { 19101, 0x00008734 }, /* GL_MODELVIEW20_ARB */ - { 19120, 0x00008735 }, /* GL_MODELVIEW21_ARB */ - { 19139, 0x00008736 }, /* GL_MODELVIEW22_ARB */ - { 19158, 0x00008737 }, /* GL_MODELVIEW23_ARB */ - { 19177, 0x00008738 }, /* GL_MODELVIEW24_ARB */ - { 19196, 0x00008739 }, /* GL_MODELVIEW25_ARB */ - { 19215, 0x0000873A }, /* GL_MODELVIEW26_ARB */ - { 19234, 0x0000873B }, /* GL_MODELVIEW27_ARB */ - { 19253, 0x0000873C }, /* GL_MODELVIEW28_ARB */ - { 19272, 0x0000873D }, /* GL_MODELVIEW29_ARB */ - { 19291, 0x00008722 }, /* GL_MODELVIEW2_ARB */ - { 19309, 0x0000873E }, /* GL_MODELVIEW30_ARB */ - { 19328, 0x0000873F }, /* GL_MODELVIEW31_ARB */ - { 19347, 0x00008723 }, /* GL_MODELVIEW3_ARB */ - { 19365, 0x00008724 }, /* GL_MODELVIEW4_ARB */ - { 19383, 0x00008725 }, /* GL_MODELVIEW5_ARB */ - { 19401, 0x00008726 }, /* GL_MODELVIEW6_ARB */ - { 19419, 0x00008727 }, /* GL_MODELVIEW7_ARB */ - { 19437, 0x00008728 }, /* GL_MODELVIEW8_ARB */ - { 19455, 0x00008729 }, /* GL_MODELVIEW9_ARB */ - { 19473, 0x00000BA6 }, /* GL_MODELVIEW_MATRIX */ - { 19493, 0x00008629 }, /* GL_MODELVIEW_PROJECTION_NV */ - { 19520, 0x00000BA3 }, /* GL_MODELVIEW_STACK_DEPTH */ - { 19545, 0x00002100 }, /* GL_MODULATE */ - { 19557, 0x00008744 }, /* GL_MODULATE_ADD_ATI */ - { 19577, 0x00008745 }, /* GL_MODULATE_SIGNED_ADD_ATI */ - { 19604, 0x00008746 }, /* GL_MODULATE_SUBTRACT_ATI */ - { 19629, 0x00000103 }, /* GL_MULT */ - { 19637, 0x0000809D }, /* GL_MULTISAMPLE */ - { 19652, 0x000086B2 }, /* GL_MULTISAMPLE_3DFX */ - { 19672, 0x0000809D }, /* GL_MULTISAMPLE_ARB */ - { 19691, 0x20000000 }, /* GL_MULTISAMPLE_BIT */ - { 19710, 0x20000000 }, /* GL_MULTISAMPLE_BIT_3DFX */ - { 19734, 0x20000000 }, /* GL_MULTISAMPLE_BIT_ARB */ - { 19757, 0x00008534 }, /* GL_MULTISAMPLE_FILTER_HINT_NV */ - { 19787, 0x00002A25 }, /* GL_N3F_V3F */ - { 19798, 0x00000D70 }, /* GL_NAME_STACK_DEPTH */ - { 19818, 0x0000150E }, /* GL_NAND */ - { 19826, 0x00002600 }, /* GL_NEAREST */ - { 19837, 0x0000844E }, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */ - { 19868, 0x0000844D }, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */ - { 19900, 0x00002702 }, /* GL_NEAREST_MIPMAP_LINEAR */ - { 19925, 0x00002700 }, /* GL_NEAREST_MIPMAP_NEAREST */ - { 19951, 0x00000200 }, /* GL_NEVER */ - { 19960, 0x00001102 }, /* GL_NICEST */ - { 19970, 0x00000000 }, /* GL_NONE */ - { 19978, 0x00001505 }, /* GL_NOOP */ - { 19986, 0x00001508 }, /* GL_NOR */ - { 19993, 0x00000BA1 }, /* GL_NORMALIZE */ - { 20006, 0x00008075 }, /* GL_NORMAL_ARRAY */ - { 20022, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING */ - { 20053, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING_ARB */ - { 20088, 0x0000808F }, /* GL_NORMAL_ARRAY_POINTER */ - { 20112, 0x0000807F }, /* GL_NORMAL_ARRAY_STRIDE */ - { 20135, 0x0000807E }, /* GL_NORMAL_ARRAY_TYPE */ - { 20156, 0x00008511 }, /* GL_NORMAL_MAP */ - { 20170, 0x00008511 }, /* GL_NORMAL_MAP_ARB */ - { 20188, 0x00008511 }, /* GL_NORMAL_MAP_NV */ - { 20205, 0x00000205 }, /* GL_NOTEQUAL */ - { 20217, 0x00000000 }, /* GL_NO_ERROR */ - { 20229, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */ - { 20263, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB */ - { 20301, 0x00008B89 }, /* GL_OBJECT_ACTIVE_ATTRIBUTES_ARB */ - { 20333, 0x00008B8A }, /* GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB */ - { 20375, 0x00008B86 }, /* GL_OBJECT_ACTIVE_UNIFORMS_ARB */ - { 20405, 0x00008B87 }, /* GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB */ - { 20445, 0x00008B85 }, /* GL_OBJECT_ATTACHED_OBJECTS_ARB */ - { 20476, 0x00008B81 }, /* GL_OBJECT_COMPILE_STATUS_ARB */ - { 20505, 0x00008B80 }, /* GL_OBJECT_DELETE_STATUS_ARB */ - { 20533, 0x00008B84 }, /* GL_OBJECT_INFO_LOG_LENGTH_ARB */ - { 20563, 0x00002401 }, /* GL_OBJECT_LINEAR */ - { 20580, 0x00008B82 }, /* GL_OBJECT_LINK_STATUS_ARB */ - { 20606, 0x00002501 }, /* GL_OBJECT_PLANE */ - { 20622, 0x00008B88 }, /* GL_OBJECT_SHADER_SOURCE_LENGTH_ARB */ - { 20657, 0x00008B4F }, /* GL_OBJECT_SUBTYPE_ARB */ - { 20679, 0x00008B4E }, /* GL_OBJECT_TYPE_ARB */ - { 20698, 0x00008B83 }, /* GL_OBJECT_VALIDATE_STATUS_ARB */ - { 20728, 0x00008165 }, /* GL_OCCLUSION_TEST_HP */ - { 20749, 0x00008166 }, /* GL_OCCLUSION_TEST_RESULT_HP */ - { 20777, 0x00000001 }, /* GL_ONE */ - { 20784, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA */ - { 20812, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA_EXT */ - { 20844, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR */ - { 20872, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR_EXT */ - { 20904, 0x00000305 }, /* GL_ONE_MINUS_DST_ALPHA */ - { 20927, 0x00000307 }, /* GL_ONE_MINUS_DST_COLOR */ - { 20950, 0x00000303 }, /* GL_ONE_MINUS_SRC_ALPHA */ - { 20973, 0x00000301 }, /* GL_ONE_MINUS_SRC_COLOR */ - { 20996, 0x00008598 }, /* GL_OPERAND0_ALPHA */ - { 21014, 0x00008598 }, /* GL_OPERAND0_ALPHA_ARB */ - { 21036, 0x00008598 }, /* GL_OPERAND0_ALPHA_EXT */ - { 21058, 0x00008590 }, /* GL_OPERAND0_RGB */ - { 21074, 0x00008590 }, /* GL_OPERAND0_RGB_ARB */ - { 21094, 0x00008590 }, /* GL_OPERAND0_RGB_EXT */ - { 21114, 0x00008599 }, /* GL_OPERAND1_ALPHA */ - { 21132, 0x00008599 }, /* GL_OPERAND1_ALPHA_ARB */ - { 21154, 0x00008599 }, /* GL_OPERAND1_ALPHA_EXT */ - { 21176, 0x00008591 }, /* GL_OPERAND1_RGB */ - { 21192, 0x00008591 }, /* GL_OPERAND1_RGB_ARB */ - { 21212, 0x00008591 }, /* GL_OPERAND1_RGB_EXT */ - { 21232, 0x0000859A }, /* GL_OPERAND2_ALPHA */ - { 21250, 0x0000859A }, /* GL_OPERAND2_ALPHA_ARB */ - { 21272, 0x0000859A }, /* GL_OPERAND2_ALPHA_EXT */ - { 21294, 0x00008592 }, /* GL_OPERAND2_RGB */ - { 21310, 0x00008592 }, /* GL_OPERAND2_RGB_ARB */ - { 21330, 0x00008592 }, /* GL_OPERAND2_RGB_EXT */ - { 21350, 0x0000859B }, /* GL_OPERAND3_ALPHA_NV */ - { 21371, 0x00008593 }, /* GL_OPERAND3_RGB_NV */ - { 21390, 0x00001507 }, /* GL_OR */ - { 21396, 0x00000A01 }, /* GL_ORDER */ - { 21405, 0x0000150D }, /* GL_OR_INVERTED */ - { 21420, 0x0000150B }, /* GL_OR_REVERSE */ - { 21434, 0x00000505 }, /* GL_OUT_OF_MEMORY */ - { 21451, 0x00000D05 }, /* GL_PACK_ALIGNMENT */ - { 21469, 0x0000806C }, /* GL_PACK_IMAGE_HEIGHT */ - { 21490, 0x00008758 }, /* GL_PACK_INVERT_MESA */ - { 21510, 0x00000D01 }, /* GL_PACK_LSB_FIRST */ - { 21528, 0x00000D02 }, /* GL_PACK_ROW_LENGTH */ - { 21547, 0x0000806B }, /* GL_PACK_SKIP_IMAGES */ - { 21567, 0x00000D04 }, /* GL_PACK_SKIP_PIXELS */ - { 21587, 0x00000D03 }, /* GL_PACK_SKIP_ROWS */ - { 21605, 0x00000D00 }, /* GL_PACK_SWAP_BYTES */ - { 21624, 0x00008B92 }, /* GL_PALETTE4_R5_G6_B5_OES */ - { 21649, 0x00008B94 }, /* GL_PALETTE4_RGB5_A1_OES */ - { 21673, 0x00008B90 }, /* GL_PALETTE4_RGB8_OES */ - { 21694, 0x00008B93 }, /* GL_PALETTE4_RGBA4_OES */ - { 21716, 0x00008B91 }, /* GL_PALETTE4_RGBA8_OES */ - { 21738, 0x00008B97 }, /* GL_PALETTE8_R5_G6_B5_OES */ - { 21763, 0x00008B99 }, /* GL_PALETTE8_RGB5_A1_OES */ - { 21787, 0x00008B95 }, /* GL_PALETTE8_RGB8_OES */ - { 21808, 0x00008B98 }, /* GL_PALETTE8_RGBA4_OES */ - { 21830, 0x00008B96 }, /* GL_PALETTE8_RGBA8_OES */ - { 21852, 0x00000700 }, /* GL_PASS_THROUGH_TOKEN */ - { 21874, 0x00000C50 }, /* GL_PERSPECTIVE_CORRECTION_HINT */ - { 21905, 0x00000C79 }, /* GL_PIXEL_MAP_A_TO_A */ - { 21925, 0x00000CB9 }, /* GL_PIXEL_MAP_A_TO_A_SIZE */ - { 21950, 0x00000C78 }, /* GL_PIXEL_MAP_B_TO_B */ - { 21970, 0x00000CB8 }, /* GL_PIXEL_MAP_B_TO_B_SIZE */ - { 21995, 0x00000C77 }, /* GL_PIXEL_MAP_G_TO_G */ - { 22015, 0x00000CB7 }, /* GL_PIXEL_MAP_G_TO_G_SIZE */ - { 22040, 0x00000C75 }, /* GL_PIXEL_MAP_I_TO_A */ - { 22060, 0x00000CB5 }, /* GL_PIXEL_MAP_I_TO_A_SIZE */ - { 22085, 0x00000C74 }, /* GL_PIXEL_MAP_I_TO_B */ - { 22105, 0x00000CB4 }, /* GL_PIXEL_MAP_I_TO_B_SIZE */ - { 22130, 0x00000C73 }, /* GL_PIXEL_MAP_I_TO_G */ - { 22150, 0x00000CB3 }, /* GL_PIXEL_MAP_I_TO_G_SIZE */ - { 22175, 0x00000C70 }, /* GL_PIXEL_MAP_I_TO_I */ - { 22195, 0x00000CB0 }, /* GL_PIXEL_MAP_I_TO_I_SIZE */ - { 22220, 0x00000C72 }, /* GL_PIXEL_MAP_I_TO_R */ - { 22240, 0x00000CB2 }, /* GL_PIXEL_MAP_I_TO_R_SIZE */ - { 22265, 0x00000C76 }, /* GL_PIXEL_MAP_R_TO_R */ - { 22285, 0x00000CB6 }, /* GL_PIXEL_MAP_R_TO_R_SIZE */ - { 22310, 0x00000C71 }, /* GL_PIXEL_MAP_S_TO_S */ - { 22330, 0x00000CB1 }, /* GL_PIXEL_MAP_S_TO_S_SIZE */ - { 22355, 0x00000020 }, /* GL_PIXEL_MODE_BIT */ - { 22373, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING_EXT */ - { 22406, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER_EXT */ - { 22431, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING_EXT */ - { 22466, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER_EXT */ - { 22493, 0x00001B00 }, /* GL_POINT */ - { 22502, 0x00000000 }, /* GL_POINTS */ - { 22512, 0x00000002 }, /* GL_POINT_BIT */ - { 22525, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION */ - { 22555, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_ARB */ - { 22589, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_EXT */ - { 22623, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_SGIS */ - { 22658, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE */ - { 22687, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_ARB */ - { 22720, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_EXT */ - { 22753, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_SGIS */ - { 22787, 0x00000B11 }, /* GL_POINT_SIZE */ - { 22801, 0x00000B13 }, /* GL_POINT_SIZE_GRANULARITY */ - { 22827, 0x00008127 }, /* GL_POINT_SIZE_MAX */ - { 22845, 0x00008127 }, /* GL_POINT_SIZE_MAX_ARB */ - { 22867, 0x00008127 }, /* GL_POINT_SIZE_MAX_EXT */ - { 22889, 0x00008127 }, /* GL_POINT_SIZE_MAX_SGIS */ - { 22912, 0x00008126 }, /* GL_POINT_SIZE_MIN */ - { 22930, 0x00008126 }, /* GL_POINT_SIZE_MIN_ARB */ - { 22952, 0x00008126 }, /* GL_POINT_SIZE_MIN_EXT */ - { 22974, 0x00008126 }, /* GL_POINT_SIZE_MIN_SGIS */ - { 22997, 0x00000B12 }, /* GL_POINT_SIZE_RANGE */ - { 23017, 0x00000B10 }, /* GL_POINT_SMOOTH */ - { 23033, 0x00000C51 }, /* GL_POINT_SMOOTH_HINT */ - { 23054, 0x00008861 }, /* GL_POINT_SPRITE */ - { 23070, 0x00008861 }, /* GL_POINT_SPRITE_ARB */ - { 23090, 0x00008CA0 }, /* GL_POINT_SPRITE_COORD_ORIGIN */ - { 23119, 0x00008861 }, /* GL_POINT_SPRITE_NV */ - { 23138, 0x00008863 }, /* GL_POINT_SPRITE_R_MODE_NV */ - { 23164, 0x00000701 }, /* GL_POINT_TOKEN */ - { 23179, 0x00000009 }, /* GL_POLYGON */ - { 23190, 0x00000008 }, /* GL_POLYGON_BIT */ - { 23205, 0x00000B40 }, /* GL_POLYGON_MODE */ - { 23221, 0x00008039 }, /* GL_POLYGON_OFFSET_BIAS */ - { 23244, 0x00008038 }, /* GL_POLYGON_OFFSET_FACTOR */ - { 23269, 0x00008037 }, /* GL_POLYGON_OFFSET_FILL */ - { 23292, 0x00002A02 }, /* GL_POLYGON_OFFSET_LINE */ - { 23315, 0x00002A01 }, /* GL_POLYGON_OFFSET_POINT */ - { 23339, 0x00002A00 }, /* GL_POLYGON_OFFSET_UNITS */ - { 23363, 0x00000B41 }, /* GL_POLYGON_SMOOTH */ - { 23381, 0x00000C53 }, /* GL_POLYGON_SMOOTH_HINT */ - { 23404, 0x00000B42 }, /* GL_POLYGON_STIPPLE */ - { 23423, 0x00000010 }, /* GL_POLYGON_STIPPLE_BIT */ - { 23446, 0x00000703 }, /* GL_POLYGON_TOKEN */ - { 23463, 0x00001203 }, /* GL_POSITION */ - { 23475, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */ - { 23507, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI */ - { 23543, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */ - { 23576, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI */ - { 23613, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */ - { 23644, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI */ - { 23679, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */ - { 23711, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI */ - { 23747, 0x000080D2 }, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */ - { 23780, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */ - { 23812, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI */ - { 23848, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */ - { 23881, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI */ - { 23918, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS */ - { 23948, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS_SGI */ - { 23982, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE */ - { 24013, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE_SGI */ - { 24048, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS */ - { 24079, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS_EXT */ - { 24114, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE */ - { 24146, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE_EXT */ - { 24182, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS */ - { 24212, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS_EXT */ - { 24246, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE */ - { 24277, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE_EXT */ - { 24312, 0x000080D1 }, /* GL_POST_CONVOLUTION_COLOR_TABLE */ - { 24344, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS */ - { 24375, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS_EXT */ - { 24410, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE */ - { 24442, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE_EXT */ - { 24478, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS */ - { 24507, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS_EXT */ - { 24540, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE */ - { 24570, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE_EXT */ - { 24604, 0x0000817B }, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */ - { 24643, 0x00008179 }, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */ - { 24676, 0x0000817C }, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */ - { 24716, 0x0000817A }, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */ - { 24750, 0x00008578 }, /* GL_PREVIOUS */ - { 24762, 0x00008578 }, /* GL_PREVIOUS_ARB */ - { 24778, 0x00008578 }, /* GL_PREVIOUS_EXT */ - { 24794, 0x00008577 }, /* GL_PRIMARY_COLOR */ - { 24811, 0x00008577 }, /* GL_PRIMARY_COLOR_ARB */ - { 24832, 0x00008577 }, /* GL_PRIMARY_COLOR_EXT */ - { 24853, 0x000088B0 }, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */ - { 24886, 0x00008805 }, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */ - { 24918, 0x000088AC }, /* GL_PROGRAM_ATTRIBS_ARB */ - { 24941, 0x00008677 }, /* GL_PROGRAM_BINDING_ARB */ - { 24964, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_ARB */ - { 24994, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_NV */ - { 25023, 0x00008874 }, /* GL_PROGRAM_ERROR_STRING_ARB */ - { 25051, 0x00008876 }, /* GL_PROGRAM_FORMAT_ARB */ - { 25073, 0x00008875 }, /* GL_PROGRAM_FORMAT_ASCII_ARB */ - { 25101, 0x000088A0 }, /* GL_PROGRAM_INSTRUCTIONS_ARB */ - { 25129, 0x00008627 }, /* GL_PROGRAM_LENGTH_ARB */ - { 25151, 0x00008627 }, /* GL_PROGRAM_LENGTH_NV */ - { 25172, 0x000088B2 }, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ - { 25212, 0x00008808 }, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ - { 25251, 0x000088AE }, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */ - { 25281, 0x000088A2 }, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ - { 25316, 0x000088AA }, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */ - { 25349, 0x000088A6 }, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */ - { 25383, 0x0000880A }, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ - { 25422, 0x00008809 }, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ - { 25461, 0x00008B40 }, /* GL_PROGRAM_OBJECT_ARB */ - { 25483, 0x000088A8 }, /* GL_PROGRAM_PARAMETERS_ARB */ - { 25509, 0x00008644 }, /* GL_PROGRAM_PARAMETER_NV */ - { 25533, 0x00008647 }, /* GL_PROGRAM_RESIDENT_NV */ - { 25556, 0x00008628 }, /* GL_PROGRAM_STRING_ARB */ - { 25578, 0x00008628 }, /* GL_PROGRAM_STRING_NV */ - { 25599, 0x00008646 }, /* GL_PROGRAM_TARGET_NV */ - { 25620, 0x000088A4 }, /* GL_PROGRAM_TEMPORARIES_ARB */ - { 25647, 0x00008807 }, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */ - { 25679, 0x00008806 }, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */ - { 25711, 0x000088B6 }, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */ - { 25746, 0x00001701 }, /* GL_PROJECTION */ - { 25760, 0x00000BA7 }, /* GL_PROJECTION_MATRIX */ - { 25781, 0x00000BA4 }, /* GL_PROJECTION_STACK_DEPTH */ - { 25807, 0x000080D3 }, /* GL_PROXY_COLOR_TABLE */ - { 25828, 0x00008025 }, /* GL_PROXY_HISTOGRAM */ - { 25847, 0x00008025 }, /* GL_PROXY_HISTOGRAM_EXT */ - { 25870, 0x000080D5 }, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */ - { 25909, 0x000080D4 }, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */ - { 25947, 0x00008063 }, /* GL_PROXY_TEXTURE_1D */ - { 25967, 0x00008063 }, /* GL_PROXY_TEXTURE_1D_EXT */ - { 25991, 0x00008064 }, /* GL_PROXY_TEXTURE_2D */ - { 26011, 0x00008064 }, /* GL_PROXY_TEXTURE_2D_EXT */ - { 26035, 0x00008070 }, /* GL_PROXY_TEXTURE_3D */ - { 26055, 0x000080BD }, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */ - { 26088, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP */ - { 26114, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP_ARB */ - { 26144, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_ARB */ - { 26175, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_NV */ - { 26205, 0x00002003 }, /* GL_Q */ - { 26210, 0x00001209 }, /* GL_QUADRATIC_ATTENUATION */ - { 26235, 0x00000007 }, /* GL_QUADS */ - { 26244, 0x00008614 }, /* GL_QUAD_MESH_SUN */ - { 26261, 0x00000008 }, /* GL_QUAD_STRIP */ - { 26275, 0x00008864 }, /* GL_QUERY_COUNTER_BITS */ - { 26297, 0x00008864 }, /* GL_QUERY_COUNTER_BITS_ARB */ - { 26323, 0x00008866 }, /* GL_QUERY_RESULT */ - { 26339, 0x00008866 }, /* GL_QUERY_RESULT_ARB */ - { 26359, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE */ - { 26385, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE_ARB */ - { 26415, 0x00002002 }, /* GL_R */ - { 26420, 0x00002A10 }, /* GL_R3_G3_B2 */ - { 26432, 0x00019262 }, /* GL_RASTER_POSITION_UNCLIPPED_IBM */ - { 26465, 0x00000C02 }, /* GL_READ_BUFFER */ - { 26480, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING_EXT */ - { 26512, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER_EXT */ - { 26536, 0x000088B8 }, /* GL_READ_ONLY */ - { 26549, 0x000088B8 }, /* GL_READ_ONLY_ARB */ - { 26566, 0x000088BA }, /* GL_READ_WRITE */ - { 26580, 0x000088BA }, /* GL_READ_WRITE_ARB */ - { 26598, 0x00001903 }, /* GL_RED */ - { 26605, 0x00008016 }, /* GL_REDUCE */ - { 26615, 0x00008016 }, /* GL_REDUCE_EXT */ - { 26629, 0x00000D15 }, /* GL_RED_BIAS */ - { 26641, 0x00000D52 }, /* GL_RED_BITS */ - { 26653, 0x00000D14 }, /* GL_RED_SCALE */ - { 26666, 0x00008512 }, /* GL_REFLECTION_MAP */ - { 26684, 0x00008512 }, /* GL_REFLECTION_MAP_ARB */ - { 26706, 0x00008512 }, /* GL_REFLECTION_MAP_NV */ - { 26727, 0x00001C00 }, /* GL_RENDER */ - { 26737, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_EXT */ - { 26765, 0x00008D41 }, /* GL_RENDERBUFFER_EXT */ - { 26785, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_EXT */ - { 26812, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_EXT */ - { 26848, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_EXT */ - { 26874, 0x00001F01 }, /* GL_RENDERER */ - { 26886, 0x00000C40 }, /* GL_RENDER_MODE */ - { 26901, 0x00002901 }, /* GL_REPEAT */ - { 26911, 0x00001E01 }, /* GL_REPLACE */ - { 26922, 0x00008062 }, /* GL_REPLACE_EXT */ - { 26937, 0x00008153 }, /* GL_REPLICATE_BORDER_HP */ - { 26960, 0x0000803A }, /* GL_RESCALE_NORMAL */ - { 26978, 0x0000803A }, /* GL_RESCALE_NORMAL_EXT */ - { 27000, 0x00000102 }, /* GL_RETURN */ - { 27010, 0x00001907 }, /* GL_RGB */ - { 27017, 0x00008052 }, /* GL_RGB10 */ - { 27026, 0x00008059 }, /* GL_RGB10_A2 */ - { 27038, 0x00008059 }, /* GL_RGB10_A2_EXT */ - { 27054, 0x00008052 }, /* GL_RGB10_EXT */ - { 27067, 0x00008053 }, /* GL_RGB12 */ - { 27076, 0x00008053 }, /* GL_RGB12_EXT */ - { 27089, 0x00008054 }, /* GL_RGB16 */ - { 27098, 0x00008054 }, /* GL_RGB16_EXT */ - { 27111, 0x0000804E }, /* GL_RGB2_EXT */ - { 27123, 0x0000804F }, /* GL_RGB4 */ - { 27131, 0x0000804F }, /* GL_RGB4_EXT */ - { 27143, 0x000083A1 }, /* GL_RGB4_S3TC */ - { 27156, 0x00008050 }, /* GL_RGB5 */ - { 27164, 0x00008057 }, /* GL_RGB5_A1 */ - { 27175, 0x00008057 }, /* GL_RGB5_A1_EXT */ - { 27190, 0x00008050 }, /* GL_RGB5_EXT */ - { 27202, 0x00008051 }, /* GL_RGB8 */ - { 27210, 0x00008051 }, /* GL_RGB8_EXT */ - { 27222, 0x00001908 }, /* GL_RGBA */ - { 27230, 0x0000805A }, /* GL_RGBA12 */ - { 27240, 0x0000805A }, /* GL_RGBA12_EXT */ - { 27254, 0x0000805B }, /* GL_RGBA16 */ - { 27264, 0x0000805B }, /* GL_RGBA16_EXT */ - { 27278, 0x00008055 }, /* GL_RGBA2 */ - { 27287, 0x00008055 }, /* GL_RGBA2_EXT */ - { 27300, 0x00008056 }, /* GL_RGBA4 */ - { 27309, 0x000083A5 }, /* GL_RGBA4_DXT5_S3TC */ - { 27328, 0x00008056 }, /* GL_RGBA4_EXT */ - { 27341, 0x000083A3 }, /* GL_RGBA4_S3TC */ - { 27355, 0x00008058 }, /* GL_RGBA8 */ - { 27364, 0x00008058 }, /* GL_RGBA8_EXT */ - { 27377, 0x000083A4 }, /* GL_RGBA_DXT5_S3TC */ - { 27395, 0x00000C31 }, /* GL_RGBA_MODE */ - { 27408, 0x000083A2 }, /* GL_RGBA_S3TC */ - { 27421, 0x000083A0 }, /* GL_RGB_S3TC */ - { 27433, 0x00008573 }, /* GL_RGB_SCALE */ - { 27446, 0x00008573 }, /* GL_RGB_SCALE_ARB */ - { 27463, 0x00008573 }, /* GL_RGB_SCALE_EXT */ - { 27480, 0x00000407 }, /* GL_RIGHT */ - { 27489, 0x00002000 }, /* GL_S */ - { 27494, 0x00008B5D }, /* GL_SAMPLER_1D */ - { 27508, 0x00008B61 }, /* GL_SAMPLER_1D_SHADOW */ - { 27529, 0x00008B5E }, /* GL_SAMPLER_2D */ - { 27543, 0x00008B62 }, /* GL_SAMPLER_2D_SHADOW */ - { 27564, 0x00008B5F }, /* GL_SAMPLER_3D */ - { 27578, 0x00008B60 }, /* GL_SAMPLER_CUBE */ - { 27594, 0x000080A9 }, /* GL_SAMPLES */ - { 27605, 0x000086B4 }, /* GL_SAMPLES_3DFX */ - { 27621, 0x000080A9 }, /* GL_SAMPLES_ARB */ - { 27636, 0x00008914 }, /* GL_SAMPLES_PASSED */ - { 27654, 0x00008914 }, /* GL_SAMPLES_PASSED_ARB */ - { 27676, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE */ - { 27704, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE_ARB */ - { 27736, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE */ - { 27759, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE_ARB */ - { 27786, 0x000080A8 }, /* GL_SAMPLE_BUFFERS */ - { 27804, 0x000086B3 }, /* GL_SAMPLE_BUFFERS_3DFX */ - { 27827, 0x000080A8 }, /* GL_SAMPLE_BUFFERS_ARB */ - { 27849, 0x000080A0 }, /* GL_SAMPLE_COVERAGE */ - { 27868, 0x000080A0 }, /* GL_SAMPLE_COVERAGE_ARB */ - { 27891, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT */ - { 27917, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT_ARB */ - { 27947, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE */ - { 27972, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE_ARB */ - { 28001, 0x00080000 }, /* GL_SCISSOR_BIT */ - { 28016, 0x00000C10 }, /* GL_SCISSOR_BOX */ - { 28031, 0x00000C11 }, /* GL_SCISSOR_TEST */ - { 28047, 0x0000845E }, /* GL_SECONDARY_COLOR_ARRAY */ - { 28072, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */ - { 28112, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB */ - { 28156, 0x0000845D }, /* GL_SECONDARY_COLOR_ARRAY_POINTER */ - { 28189, 0x0000845A }, /* GL_SECONDARY_COLOR_ARRAY_SIZE */ - { 28219, 0x0000845C }, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */ - { 28251, 0x0000845B }, /* GL_SECONDARY_COLOR_ARRAY_TYPE */ - { 28281, 0x00001C02 }, /* GL_SELECT */ - { 28291, 0x00000DF3 }, /* GL_SELECTION_BUFFER_POINTER */ - { 28319, 0x00000DF4 }, /* GL_SELECTION_BUFFER_SIZE */ - { 28344, 0x00008012 }, /* GL_SEPARABLE_2D */ - { 28360, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR */ - { 28387, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR_EXT */ - { 28418, 0x0000150F }, /* GL_SET */ - { 28425, 0x00008B48 }, /* GL_SHADER_OBJECT_ARB */ - { 28446, 0x00008B88 }, /* GL_SHADER_SOURCE_LENGTH */ - { 28470, 0x00008B4F }, /* GL_SHADER_TYPE */ - { 28485, 0x00000B54 }, /* GL_SHADE_MODEL */ - { 28500, 0x00008B8C }, /* GL_SHADING_LANGUAGE_VERSION */ - { 28528, 0x000080BF }, /* GL_SHADOW_AMBIENT_SGIX */ - { 28551, 0x000081FB }, /* GL_SHARED_TEXTURE_PALETTE_EXT */ - { 28581, 0x00001601 }, /* GL_SHININESS */ - { 28594, 0x00001402 }, /* GL_SHORT */ - { 28603, 0x000081F9 }, /* GL_SINGLE_COLOR */ - { 28619, 0x000081F9 }, /* GL_SINGLE_COLOR_EXT */ - { 28639, 0x000085CC }, /* GL_SLICE_ACCUM_SUN */ - { 28658, 0x00001D01 }, /* GL_SMOOTH */ - { 28668, 0x00000B23 }, /* GL_SMOOTH_LINE_WIDTH_GRANULARITY */ - { 28701, 0x00000B22 }, /* GL_SMOOTH_LINE_WIDTH_RANGE */ - { 28728, 0x00000B13 }, /* GL_SMOOTH_POINT_SIZE_GRANULARITY */ - { 28761, 0x00000B12 }, /* GL_SMOOTH_POINT_SIZE_RANGE */ - { 28788, 0x00008588 }, /* GL_SOURCE0_ALPHA */ - { 28805, 0x00008588 }, /* GL_SOURCE0_ALPHA_ARB */ - { 28826, 0x00008588 }, /* GL_SOURCE0_ALPHA_EXT */ - { 28847, 0x00008580 }, /* GL_SOURCE0_RGB */ - { 28862, 0x00008580 }, /* GL_SOURCE0_RGB_ARB */ - { 28881, 0x00008580 }, /* GL_SOURCE0_RGB_EXT */ - { 28900, 0x00008589 }, /* GL_SOURCE1_ALPHA */ - { 28917, 0x00008589 }, /* GL_SOURCE1_ALPHA_ARB */ - { 28938, 0x00008589 }, /* GL_SOURCE1_ALPHA_EXT */ - { 28959, 0x00008581 }, /* GL_SOURCE1_RGB */ - { 28974, 0x00008581 }, /* GL_SOURCE1_RGB_ARB */ - { 28993, 0x00008581 }, /* GL_SOURCE1_RGB_EXT */ - { 29012, 0x0000858A }, /* GL_SOURCE2_ALPHA */ - { 29029, 0x0000858A }, /* GL_SOURCE2_ALPHA_ARB */ - { 29050, 0x0000858A }, /* GL_SOURCE2_ALPHA_EXT */ - { 29071, 0x00008582 }, /* GL_SOURCE2_RGB */ - { 29086, 0x00008582 }, /* GL_SOURCE2_RGB_ARB */ - { 29105, 0x00008582 }, /* GL_SOURCE2_RGB_EXT */ - { 29124, 0x0000858B }, /* GL_SOURCE3_ALPHA_NV */ - { 29144, 0x00008583 }, /* GL_SOURCE3_RGB_NV */ - { 29162, 0x00001202 }, /* GL_SPECULAR */ - { 29174, 0x00002402 }, /* GL_SPHERE_MAP */ - { 29188, 0x00001206 }, /* GL_SPOT_CUTOFF */ - { 29203, 0x00001204 }, /* GL_SPOT_DIRECTION */ - { 29221, 0x00001205 }, /* GL_SPOT_EXPONENT */ - { 29238, 0x00008588 }, /* GL_SRC0_ALPHA */ - { 29252, 0x00008580 }, /* GL_SRC0_RGB */ - { 29264, 0x00008589 }, /* GL_SRC1_ALPHA */ - { 29278, 0x00008581 }, /* GL_SRC1_RGB */ - { 29290, 0x0000858A }, /* GL_SRC2_ALPHA */ - { 29304, 0x00008582 }, /* GL_SRC2_RGB */ - { 29316, 0x00000302 }, /* GL_SRC_ALPHA */ - { 29329, 0x00000308 }, /* GL_SRC_ALPHA_SATURATE */ - { 29351, 0x00000300 }, /* GL_SRC_COLOR */ - { 29364, 0x00000503 }, /* GL_STACK_OVERFLOW */ - { 29382, 0x00000504 }, /* GL_STACK_UNDERFLOW */ - { 29401, 0x000088E6 }, /* GL_STATIC_COPY */ - { 29416, 0x000088E6 }, /* GL_STATIC_COPY_ARB */ - { 29435, 0x000088E4 }, /* GL_STATIC_DRAW */ - { 29450, 0x000088E4 }, /* GL_STATIC_DRAW_ARB */ - { 29469, 0x000088E5 }, /* GL_STATIC_READ */ - { 29484, 0x000088E5 }, /* GL_STATIC_READ_ARB */ - { 29503, 0x00001802 }, /* GL_STENCIL */ - { 29514, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_EXT */ - { 29540, 0x00008801 }, /* GL_STENCIL_BACK_FAIL */ - { 29561, 0x00008800 }, /* GL_STENCIL_BACK_FUNC */ - { 29582, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */ - { 29614, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */ - { 29646, 0x00008CA3 }, /* GL_STENCIL_BACK_REF */ - { 29666, 0x00008CA4 }, /* GL_STENCIL_BACK_VALUE_MASK */ - { 29693, 0x00008CA5 }, /* GL_STENCIL_BACK_WRITEMASK */ - { 29719, 0x00000D57 }, /* GL_STENCIL_BITS */ - { 29735, 0x00000400 }, /* GL_STENCIL_BUFFER_BIT */ - { 29757, 0x00000B91 }, /* GL_STENCIL_CLEAR_VALUE */ - { 29780, 0x00000B94 }, /* GL_STENCIL_FAIL */ - { 29796, 0x00000B92 }, /* GL_STENCIL_FUNC */ - { 29812, 0x00001901 }, /* GL_STENCIL_INDEX */ - { 29829, 0x00008D49 }, /* GL_STENCIL_INDEX16_EXT */ - { 29852, 0x00008D46 }, /* GL_STENCIL_INDEX1_EXT */ - { 29874, 0x00008D47 }, /* GL_STENCIL_INDEX4_EXT */ - { 29896, 0x00008D48 }, /* GL_STENCIL_INDEX8_EXT */ - { 29918, 0x00008D45 }, /* GL_STENCIL_INDEX_EXT */ - { 29939, 0x00000B95 }, /* GL_STENCIL_PASS_DEPTH_FAIL */ - { 29966, 0x00000B96 }, /* GL_STENCIL_PASS_DEPTH_PASS */ - { 29993, 0x00000B97 }, /* GL_STENCIL_REF */ - { 30008, 0x00000B90 }, /* GL_STENCIL_TEST */ - { 30024, 0x00008910 }, /* GL_STENCIL_TEST_TWO_SIDE_EXT */ - { 30053, 0x00000B93 }, /* GL_STENCIL_VALUE_MASK */ - { 30075, 0x00000B98 }, /* GL_STENCIL_WRITEMASK */ - { 30096, 0x00000C33 }, /* GL_STEREO */ - { 30106, 0x000088E2 }, /* GL_STREAM_COPY */ - { 30121, 0x000088E2 }, /* GL_STREAM_COPY_ARB */ - { 30140, 0x000088E0 }, /* GL_STREAM_DRAW */ - { 30155, 0x000088E0 }, /* GL_STREAM_DRAW_ARB */ - { 30174, 0x000088E1 }, /* GL_STREAM_READ */ - { 30189, 0x000088E1 }, /* GL_STREAM_READ_ARB */ - { 30208, 0x00000D50 }, /* GL_SUBPIXEL_BITS */ - { 30225, 0x000084E7 }, /* GL_SUBTRACT */ - { 30237, 0x000084E7 }, /* GL_SUBTRACT_ARB */ - { 30253, 0x00002001 }, /* GL_T */ - { 30258, 0x00002A2A }, /* GL_T2F_C3F_V3F */ - { 30273, 0x00002A2C }, /* GL_T2F_C4F_N3F_V3F */ - { 30292, 0x00002A29 }, /* GL_T2F_C4UB_V3F */ - { 30308, 0x00002A2B }, /* GL_T2F_N3F_V3F */ - { 30323, 0x00002A27 }, /* GL_T2F_V3F */ - { 30334, 0x00002A2D }, /* GL_T4F_C4F_N3F_V4F */ - { 30353, 0x00002A28 }, /* GL_T4F_V4F */ - { 30364, 0x00008031 }, /* GL_TABLE_TOO_LARGE_EXT */ - { 30387, 0x00001702 }, /* GL_TEXTURE */ - { 30398, 0x000084C0 }, /* GL_TEXTURE0 */ - { 30410, 0x000084C0 }, /* GL_TEXTURE0_ARB */ - { 30426, 0x000084C1 }, /* GL_TEXTURE1 */ - { 30438, 0x000084CA }, /* GL_TEXTURE10 */ - { 30451, 0x000084CA }, /* GL_TEXTURE10_ARB */ - { 30468, 0x000084CB }, /* GL_TEXTURE11 */ - { 30481, 0x000084CB }, /* GL_TEXTURE11_ARB */ - { 30498, 0x000084CC }, /* GL_TEXTURE12 */ - { 30511, 0x000084CC }, /* GL_TEXTURE12_ARB */ - { 30528, 0x000084CD }, /* GL_TEXTURE13 */ - { 30541, 0x000084CD }, /* GL_TEXTURE13_ARB */ - { 30558, 0x000084CE }, /* GL_TEXTURE14 */ - { 30571, 0x000084CE }, /* GL_TEXTURE14_ARB */ - { 30588, 0x000084CF }, /* GL_TEXTURE15 */ - { 30601, 0x000084CF }, /* GL_TEXTURE15_ARB */ - { 30618, 0x000084D0 }, /* GL_TEXTURE16 */ - { 30631, 0x000084D0 }, /* GL_TEXTURE16_ARB */ - { 30648, 0x000084D1 }, /* GL_TEXTURE17 */ - { 30661, 0x000084D1 }, /* GL_TEXTURE17_ARB */ - { 30678, 0x000084D2 }, /* GL_TEXTURE18 */ - { 30691, 0x000084D2 }, /* GL_TEXTURE18_ARB */ - { 30708, 0x000084D3 }, /* GL_TEXTURE19 */ - { 30721, 0x000084D3 }, /* GL_TEXTURE19_ARB */ - { 30738, 0x000084C1 }, /* GL_TEXTURE1_ARB */ - { 30754, 0x000084C2 }, /* GL_TEXTURE2 */ - { 30766, 0x000084D4 }, /* GL_TEXTURE20 */ - { 30779, 0x000084D4 }, /* GL_TEXTURE20_ARB */ - { 30796, 0x000084D5 }, /* GL_TEXTURE21 */ - { 30809, 0x000084D5 }, /* GL_TEXTURE21_ARB */ - { 30826, 0x000084D6 }, /* GL_TEXTURE22 */ - { 30839, 0x000084D6 }, /* GL_TEXTURE22_ARB */ - { 30856, 0x000084D7 }, /* GL_TEXTURE23 */ - { 30869, 0x000084D7 }, /* GL_TEXTURE23_ARB */ - { 30886, 0x000084D8 }, /* GL_TEXTURE24 */ - { 30899, 0x000084D8 }, /* GL_TEXTURE24_ARB */ - { 30916, 0x000084D9 }, /* GL_TEXTURE25 */ - { 30929, 0x000084D9 }, /* GL_TEXTURE25_ARB */ - { 30946, 0x000084DA }, /* GL_TEXTURE26 */ - { 30959, 0x000084DA }, /* GL_TEXTURE26_ARB */ - { 30976, 0x000084DB }, /* GL_TEXTURE27 */ - { 30989, 0x000084DB }, /* GL_TEXTURE27_ARB */ - { 31006, 0x000084DC }, /* GL_TEXTURE28 */ - { 31019, 0x000084DC }, /* GL_TEXTURE28_ARB */ - { 31036, 0x000084DD }, /* GL_TEXTURE29 */ - { 31049, 0x000084DD }, /* GL_TEXTURE29_ARB */ - { 31066, 0x000084C2 }, /* GL_TEXTURE2_ARB */ - { 31082, 0x000084C3 }, /* GL_TEXTURE3 */ - { 31094, 0x000084DE }, /* GL_TEXTURE30 */ - { 31107, 0x000084DE }, /* GL_TEXTURE30_ARB */ - { 31124, 0x000084DF }, /* GL_TEXTURE31 */ - { 31137, 0x000084DF }, /* GL_TEXTURE31_ARB */ - { 31154, 0x000084C3 }, /* GL_TEXTURE3_ARB */ - { 31170, 0x000084C4 }, /* GL_TEXTURE4 */ - { 31182, 0x000084C4 }, /* GL_TEXTURE4_ARB */ - { 31198, 0x000084C5 }, /* GL_TEXTURE5 */ - { 31210, 0x000084C5 }, /* GL_TEXTURE5_ARB */ - { 31226, 0x000084C6 }, /* GL_TEXTURE6 */ - { 31238, 0x000084C6 }, /* GL_TEXTURE6_ARB */ - { 31254, 0x000084C7 }, /* GL_TEXTURE7 */ - { 31266, 0x000084C7 }, /* GL_TEXTURE7_ARB */ - { 31282, 0x000084C8 }, /* GL_TEXTURE8 */ - { 31294, 0x000084C8 }, /* GL_TEXTURE8_ARB */ - { 31310, 0x000084C9 }, /* GL_TEXTURE9 */ - { 31322, 0x000084C9 }, /* GL_TEXTURE9_ARB */ - { 31338, 0x00000DE0 }, /* GL_TEXTURE_1D */ - { 31352, 0x00000DE1 }, /* GL_TEXTURE_2D */ - { 31366, 0x0000806F }, /* GL_TEXTURE_3D */ - { 31380, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE */ - { 31402, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE_EXT */ - { 31428, 0x0000813C }, /* GL_TEXTURE_BASE_LEVEL */ - { 31450, 0x00008068 }, /* GL_TEXTURE_BINDING_1D */ - { 31472, 0x00008069 }, /* GL_TEXTURE_BINDING_2D */ - { 31494, 0x0000806A }, /* GL_TEXTURE_BINDING_3D */ - { 31516, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP */ - { 31544, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_ARB */ - { 31576, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_ARB */ - { 31609, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_NV */ - { 31641, 0x00040000 }, /* GL_TEXTURE_BIT */ - { 31656, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE */ - { 31677, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE_EXT */ - { 31702, 0x00001005 }, /* GL_TEXTURE_BORDER */ - { 31720, 0x00001004 }, /* GL_TEXTURE_BORDER_COLOR */ - { 31744, 0x00008171 }, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */ - { 31775, 0x00008176 }, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */ - { 31805, 0x00008172 }, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */ - { 31835, 0x00008175 }, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */ - { 31870, 0x00008173 }, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */ - { 31901, 0x00008174 }, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */ - { 31939, 0x000080BC }, /* GL_TEXTURE_COLOR_TABLE_SGI */ - { 31966, 0x000081EF }, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */ - { 31998, 0x000080BF }, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */ - { 32032, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC */ - { 32056, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC_ARB */ - { 32084, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE */ - { 32108, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE_ARB */ - { 32136, 0x0000819B }, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */ - { 32169, 0x0000819A }, /* GL_TEXTURE_COMPARE_SGIX */ - { 32193, 0x00001003 }, /* GL_TEXTURE_COMPONENTS */ - { 32215, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED */ - { 32237, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED_ARB */ - { 32263, 0x000086A3 }, /* GL_TEXTURE_COMPRESSED_FORMATS_ARB */ - { 32297, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */ - { 32330, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB */ - { 32367, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT */ - { 32395, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT_ARB */ - { 32427, 0x00008078 }, /* GL_TEXTURE_COORD_ARRAY */ - { 32450, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */ - { 32488, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB */ - { 32530, 0x00008092 }, /* GL_TEXTURE_COORD_ARRAY_POINTER */ - { 32561, 0x00008088 }, /* GL_TEXTURE_COORD_ARRAY_SIZE */ - { 32589, 0x0000808A }, /* GL_TEXTURE_COORD_ARRAY_STRIDE */ - { 32619, 0x00008089 }, /* GL_TEXTURE_COORD_ARRAY_TYPE */ - { 32647, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP */ - { 32667, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_ARB */ - { 32691, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */ - { 32722, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB */ - { 32757, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */ - { 32788, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB */ - { 32823, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */ - { 32854, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB */ - { 32889, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */ - { 32920, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB */ - { 32955, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */ - { 32986, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB */ - { 33021, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */ - { 33052, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB */ - { 33087, 0x00008071 }, /* GL_TEXTURE_DEPTH */ - { 33104, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE */ - { 33126, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE_ARB */ - { 33152, 0x00002300 }, /* GL_TEXTURE_ENV */ - { 33167, 0x00002201 }, /* GL_TEXTURE_ENV_COLOR */ - { 33188, 0x00002200 }, /* GL_TEXTURE_ENV_MODE */ - { 33208, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL */ - { 33234, 0x00002500 }, /* GL_TEXTURE_GEN_MODE */ - { 33254, 0x00000C63 }, /* GL_TEXTURE_GEN_Q */ - { 33271, 0x00000C62 }, /* GL_TEXTURE_GEN_R */ - { 33288, 0x00000C60 }, /* GL_TEXTURE_GEN_S */ - { 33305, 0x00000C61 }, /* GL_TEXTURE_GEN_T */ - { 33322, 0x0000819D }, /* GL_TEXTURE_GEQUAL_R_SGIX */ - { 33347, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE */ - { 33369, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE_EXT */ - { 33395, 0x00001001 }, /* GL_TEXTURE_HEIGHT */ - { 33413, 0x000080ED }, /* GL_TEXTURE_INDEX_SIZE_EXT */ - { 33439, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE */ - { 33465, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE_EXT */ - { 33495, 0x00001003 }, /* GL_TEXTURE_INTERNAL_FORMAT */ - { 33522, 0x0000819C }, /* GL_TEXTURE_LEQUAL_R_SGIX */ - { 33547, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS */ - { 33567, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS_EXT */ - { 33591, 0x00008190 }, /* GL_TEXTURE_LOD_BIAS_R_SGIX */ - { 33618, 0x0000818E }, /* GL_TEXTURE_LOD_BIAS_S_SGIX */ - { 33645, 0x0000818F }, /* GL_TEXTURE_LOD_BIAS_T_SGIX */ - { 33672, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE */ - { 33698, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE_EXT */ - { 33728, 0x00002800 }, /* GL_TEXTURE_MAG_FILTER */ - { 33750, 0x00000BA8 }, /* GL_TEXTURE_MATRIX */ - { 33768, 0x000084FE }, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */ - { 33798, 0x0000836B }, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */ - { 33826, 0x00008369 }, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */ - { 33854, 0x0000836A }, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */ - { 33882, 0x0000813D }, /* GL_TEXTURE_MAX_LEVEL */ - { 33903, 0x0000813B }, /* GL_TEXTURE_MAX_LOD */ - { 33922, 0x00002801 }, /* GL_TEXTURE_MIN_FILTER */ - { 33944, 0x0000813A }, /* GL_TEXTURE_MIN_LOD */ - { 33963, 0x00008066 }, /* GL_TEXTURE_PRIORITY */ - { 33983, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_ARB */ - { 34008, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_NV */ - { 34032, 0x0000805C }, /* GL_TEXTURE_RED_SIZE */ - { 34052, 0x0000805C }, /* GL_TEXTURE_RED_SIZE_EXT */ - { 34076, 0x00008067 }, /* GL_TEXTURE_RESIDENT */ - { 34096, 0x00000BA5 }, /* GL_TEXTURE_STACK_DEPTH */ - { 34119, 0x00008065 }, /* GL_TEXTURE_TOO_LARGE_EXT */ - { 34144, 0x0000888F }, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */ - { 34178, 0x00001000 }, /* GL_TEXTURE_WIDTH */ - { 34195, 0x00008072 }, /* GL_TEXTURE_WRAP_R */ - { 34213, 0x00002802 }, /* GL_TEXTURE_WRAP_S */ - { 34231, 0x00002803 }, /* GL_TEXTURE_WRAP_T */ - { 34249, 0x000088BF }, /* GL_TIME_ELAPSED_EXT */ - { 34269, 0x00008648 }, /* GL_TRACK_MATRIX_NV */ - { 34288, 0x00008649 }, /* GL_TRACK_MATRIX_TRANSFORM_NV */ - { 34317, 0x00001000 }, /* GL_TRANSFORM_BIT */ - { 34334, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX */ - { 34360, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX_ARB */ - { 34390, 0x000088B7 }, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */ - { 34422, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX */ - { 34452, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX_ARB */ - { 34486, 0x0000862C }, /* GL_TRANSPOSE_NV */ - { 34502, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX */ - { 34533, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX_ARB */ - { 34568, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX */ - { 34596, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX_ARB */ - { 34628, 0x00000004 }, /* GL_TRIANGLES */ - { 34641, 0x00000006 }, /* GL_TRIANGLE_FAN */ - { 34657, 0x00008615 }, /* GL_TRIANGLE_MESH_SUN */ - { 34678, 0x00000005 }, /* GL_TRIANGLE_STRIP */ - { 34696, 0x00000001 }, /* GL_TRUE */ - { 34704, 0x00000CF5 }, /* GL_UNPACK_ALIGNMENT */ - { 34724, 0x0000806E }, /* GL_UNPACK_IMAGE_HEIGHT */ - { 34747, 0x00000CF1 }, /* GL_UNPACK_LSB_FIRST */ - { 34767, 0x00000CF2 }, /* GL_UNPACK_ROW_LENGTH */ - { 34788, 0x0000806D }, /* GL_UNPACK_SKIP_IMAGES */ - { 34810, 0x00000CF4 }, /* GL_UNPACK_SKIP_PIXELS */ - { 34832, 0x00000CF3 }, /* GL_UNPACK_SKIP_ROWS */ - { 34852, 0x00000CF0 }, /* GL_UNPACK_SWAP_BYTES */ - { 34873, 0x00001401 }, /* GL_UNSIGNED_BYTE */ - { 34890, 0x00008362 }, /* GL_UNSIGNED_BYTE_2_3_3_REV */ - { 34917, 0x00008032 }, /* GL_UNSIGNED_BYTE_3_3_2 */ - { 34940, 0x00001405 }, /* GL_UNSIGNED_INT */ - { 34956, 0x00008036 }, /* GL_UNSIGNED_INT_10_10_10_2 */ - { 34983, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_NV */ - { 35007, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV */ - { 35038, 0x00008035 }, /* GL_UNSIGNED_INT_8_8_8_8 */ - { 35062, 0x00008367 }, /* GL_UNSIGNED_INT_8_8_8_8_REV */ - { 35090, 0x00001403 }, /* GL_UNSIGNED_SHORT */ - { 35108, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */ - { 35138, 0x00008033 }, /* GL_UNSIGNED_SHORT_4_4_4_4 */ - { 35164, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */ - { 35194, 0x00008034 }, /* GL_UNSIGNED_SHORT_5_5_5_1 */ - { 35220, 0x00008363 }, /* GL_UNSIGNED_SHORT_5_6_5 */ - { 35244, 0x00008364 }, /* GL_UNSIGNED_SHORT_5_6_5_REV */ - { 35272, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_APPLE */ - { 35300, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_MESA */ - { 35327, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */ - { 35359, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_MESA */ - { 35390, 0x00008CA2 }, /* GL_UPPER_LEFT */ - { 35404, 0x00002A20 }, /* GL_V2F */ - { 35411, 0x00002A21 }, /* GL_V3F */ - { 35418, 0x00008B83 }, /* GL_VALIDATE_STATUS */ - { 35437, 0x00001F00 }, /* GL_VENDOR */ - { 35447, 0x00001F02 }, /* GL_VERSION */ - { 35458, 0x00008074 }, /* GL_VERTEX_ARRAY */ - { 35474, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING_APPLE */ - { 35504, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING */ - { 35535, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING_ARB */ - { 35570, 0x0000808E }, /* GL_VERTEX_ARRAY_POINTER */ - { 35594, 0x0000807A }, /* GL_VERTEX_ARRAY_SIZE */ - { 35615, 0x0000807C }, /* GL_VERTEX_ARRAY_STRIDE */ - { 35638, 0x0000807B }, /* GL_VERTEX_ARRAY_TYPE */ - { 35659, 0x00008650 }, /* GL_VERTEX_ATTRIB_ARRAY0_NV */ - { 35686, 0x0000865A }, /* GL_VERTEX_ATTRIB_ARRAY10_NV */ - { 35714, 0x0000865B }, /* GL_VERTEX_ATTRIB_ARRAY11_NV */ - { 35742, 0x0000865C }, /* GL_VERTEX_ATTRIB_ARRAY12_NV */ - { 35770, 0x0000865D }, /* GL_VERTEX_ATTRIB_ARRAY13_NV */ - { 35798, 0x0000865E }, /* GL_VERTEX_ATTRIB_ARRAY14_NV */ - { 35826, 0x0000865F }, /* GL_VERTEX_ATTRIB_ARRAY15_NV */ - { 35854, 0x00008651 }, /* GL_VERTEX_ATTRIB_ARRAY1_NV */ - { 35881, 0x00008652 }, /* GL_VERTEX_ATTRIB_ARRAY2_NV */ - { 35908, 0x00008653 }, /* GL_VERTEX_ATTRIB_ARRAY3_NV */ - { 35935, 0x00008654 }, /* GL_VERTEX_ATTRIB_ARRAY4_NV */ - { 35962, 0x00008655 }, /* GL_VERTEX_ATTRIB_ARRAY5_NV */ - { 35989, 0x00008656 }, /* GL_VERTEX_ATTRIB_ARRAY6_NV */ - { 36016, 0x00008657 }, /* GL_VERTEX_ATTRIB_ARRAY7_NV */ - { 36043, 0x00008658 }, /* GL_VERTEX_ATTRIB_ARRAY8_NV */ - { 36070, 0x00008659 }, /* GL_VERTEX_ATTRIB_ARRAY9_NV */ - { 36097, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */ - { 36135, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB */ - { 36177, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */ - { 36208, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB */ - { 36243, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */ - { 36277, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB */ - { 36315, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */ - { 36346, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB */ - { 36381, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */ - { 36409, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB */ - { 36441, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */ - { 36471, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB */ - { 36505, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */ - { 36533, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB */ - { 36565, 0x000086A7 }, /* GL_VERTEX_BLEND_ARB */ - { 36585, 0x00008620 }, /* GL_VERTEX_PROGRAM_ARB */ - { 36607, 0x0000864A }, /* GL_VERTEX_PROGRAM_BINDING_NV */ - { 36636, 0x00008620 }, /* GL_VERTEX_PROGRAM_NV */ - { 36657, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE */ - { 36686, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_ARB */ - { 36719, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_NV */ - { 36751, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE */ - { 36778, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_ARB */ - { 36809, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_NV */ - { 36839, 0x00008B31 }, /* GL_VERTEX_SHADER */ - { 36856, 0x00008B31 }, /* GL_VERTEX_SHADER_ARB */ - { 36877, 0x00008621 }, /* GL_VERTEX_STATE_PROGRAM_NV */ - { 36904, 0x00000BA2 }, /* GL_VIEWPORT */ - { 36916, 0x00000800 }, /* GL_VIEWPORT_BIT */ - { 36932, 0x000086AD }, /* GL_WEIGHT_ARRAY_ARB */ - { 36952, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */ - { 36983, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB */ - { 37018, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_ARB */ - { 37046, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_ARB */ - { 37071, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_ARB */ - { 37098, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_ARB */ - { 37123, 0x000086A6 }, /* GL_WEIGHT_SUM_UNITY_ARB */ - { 37147, 0x000081D4 }, /* GL_WRAP_BORDER_SUN */ - { 37166, 0x000088B9 }, /* GL_WRITE_ONLY */ - { 37180, 0x000088B9 }, /* GL_WRITE_ONLY_ARB */ - { 37198, 0x00001506 }, /* GL_XOR */ - { 37205, 0x000085B9 }, /* GL_YCBCR_422_APPLE */ - { 37224, 0x00008757 }, /* GL_YCBCR_MESA */ - { 37238, 0x00000000 }, /* GL_ZERO */ - { 37246, 0x00000D16 }, /* GL_ZOOM_X */ - { 37256, 0x00000D17 }, /* GL_ZOOM_Y */ + { 4153, 0x0000884E }, /* GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT */ + { 4189, 0x0000884E }, /* GL_COMPARE_R_TO_TEXTURE */ + { 4213, 0x0000884E }, /* GL_COMPARE_R_TO_TEXTURE_ARB */ + { 4241, 0x00001300 }, /* GL_COMPILE */ + { 4252, 0x00001301 }, /* GL_COMPILE_AND_EXECUTE */ + { 4275, 0x00008B81 }, /* GL_COMPILE_STATUS */ + { 4293, 0x000084E9 }, /* GL_COMPRESSED_ALPHA */ + { 4313, 0x000084E9 }, /* GL_COMPRESSED_ALPHA_ARB */ + { 4337, 0x000084EC }, /* GL_COMPRESSED_INTENSITY */ + { 4361, 0x000084EC }, /* GL_COMPRESSED_INTENSITY_ARB */ + { 4389, 0x000084EA }, /* GL_COMPRESSED_LUMINANCE */ + { 4413, 0x000084EB }, /* GL_COMPRESSED_LUMINANCE_ALPHA */ + { 4443, 0x000084EB }, /* GL_COMPRESSED_LUMINANCE_ALPHA_ARB */ + { 4477, 0x000084EA }, /* GL_COMPRESSED_LUMINANCE_ARB */ + { 4505, 0x000084ED }, /* GL_COMPRESSED_RGB */ + { 4523, 0x000084EE }, /* GL_COMPRESSED_RGBA */ + { 4542, 0x000084EE }, /* GL_COMPRESSED_RGBA_ARB */ + { 4565, 0x000086B1 }, /* GL_COMPRESSED_RGBA_FXT1_3DFX */ + { 4594, 0x000083F1 }, /* GL_COMPRESSED_RGBA_S3TC_DXT1_EXT */ + { 4627, 0x000083F2 }, /* GL_COMPRESSED_RGBA_S3TC_DXT3_EXT */ + { 4660, 0x000083F3 }, /* GL_COMPRESSED_RGBA_S3TC_DXT5_EXT */ + { 4693, 0x000084ED }, /* GL_COMPRESSED_RGB_ARB */ + { 4715, 0x000086B0 }, /* GL_COMPRESSED_RGB_FXT1_3DFX */ + { 4743, 0x000083F0 }, /* GL_COMPRESSED_RGB_S3TC_DXT1_EXT */ + { 4775, 0x000086A3 }, /* GL_COMPRESSED_TEXTURE_FORMATS */ + { 4805, 0x00008576 }, /* GL_CONSTANT */ + { 4817, 0x00008003 }, /* GL_CONSTANT_ALPHA */ + { 4835, 0x00008003 }, /* GL_CONSTANT_ALPHA_EXT */ + { 4857, 0x00008576 }, /* GL_CONSTANT_ARB */ + { 4873, 0x00001207 }, /* GL_CONSTANT_ATTENUATION */ + { 4897, 0x00008151 }, /* GL_CONSTANT_BORDER_HP */ + { 4919, 0x00008001 }, /* GL_CONSTANT_COLOR */ + { 4937, 0x00008001 }, /* GL_CONSTANT_COLOR_EXT */ + { 4959, 0x00008576 }, /* GL_CONSTANT_EXT */ + { 4975, 0x00008010 }, /* GL_CONVOLUTION_1D */ + { 4993, 0x00008011 }, /* GL_CONVOLUTION_2D */ + { 5011, 0x00008154 }, /* GL_CONVOLUTION_BORDER_COLOR */ + { 5039, 0x00008154 }, /* GL_CONVOLUTION_BORDER_COLOR_HP */ + { 5070, 0x00008013 }, /* GL_CONVOLUTION_BORDER_MODE */ + { 5097, 0x00008013 }, /* GL_CONVOLUTION_BORDER_MODE_EXT */ + { 5128, 0x00008015 }, /* GL_CONVOLUTION_FILTER_BIAS */ + { 5155, 0x00008015 }, /* GL_CONVOLUTION_FILTER_BIAS_EXT */ + { 5186, 0x00008014 }, /* GL_CONVOLUTION_FILTER_SCALE */ + { 5214, 0x00008014 }, /* GL_CONVOLUTION_FILTER_SCALE_EXT */ + { 5246, 0x00008017 }, /* GL_CONVOLUTION_FORMAT */ + { 5268, 0x00008017 }, /* GL_CONVOLUTION_FORMAT_EXT */ + { 5294, 0x00008019 }, /* GL_CONVOLUTION_HEIGHT */ + { 5316, 0x00008019 }, /* GL_CONVOLUTION_HEIGHT_EXT */ + { 5342, 0x00008018 }, /* GL_CONVOLUTION_WIDTH */ + { 5363, 0x00008018 }, /* GL_CONVOLUTION_WIDTH_EXT */ + { 5388, 0x00008862 }, /* GL_COORD_REPLACE */ + { 5405, 0x00008862 }, /* GL_COORD_REPLACE_ARB */ + { 5426, 0x00008862 }, /* GL_COORD_REPLACE_NV */ + { 5446, 0x00001503 }, /* GL_COPY */ + { 5454, 0x0000150C }, /* GL_COPY_INVERTED */ + { 5471, 0x00000706 }, /* GL_COPY_PIXEL_TOKEN */ + { 5491, 0x00000B44 }, /* GL_CULL_FACE */ + { 5504, 0x00000B45 }, /* GL_CULL_FACE_MODE */ + { 5522, 0x000081AA }, /* GL_CULL_VERTEX_EXT */ + { 5541, 0x000081AC }, /* GL_CULL_VERTEX_EYE_POSITION_EXT */ + { 5573, 0x000081AB }, /* GL_CULL_VERTEX_OBJECT_POSITION_EXT */ + { 5608, 0x00008626 }, /* GL_CURRENT_ATTRIB_NV */ + { 5629, 0x00000001 }, /* GL_CURRENT_BIT */ + { 5644, 0x00000B00 }, /* GL_CURRENT_COLOR */ + { 5661, 0x00008453 }, /* GL_CURRENT_FOG_COORD */ + { 5682, 0x00008453 }, /* GL_CURRENT_FOG_COORDINATE */ + { 5708, 0x00000B01 }, /* GL_CURRENT_INDEX */ + { 5725, 0x00008641 }, /* GL_CURRENT_MATRIX_ARB */ + { 5747, 0x00008845 }, /* GL_CURRENT_MATRIX_INDEX_ARB */ + { 5775, 0x00008641 }, /* GL_CURRENT_MATRIX_NV */ + { 5796, 0x00008640 }, /* GL_CURRENT_MATRIX_STACK_DEPTH_ARB */ + { 5830, 0x00008640 }, /* GL_CURRENT_MATRIX_STACK_DEPTH_NV */ + { 5863, 0x00000B02 }, /* GL_CURRENT_NORMAL */ + { 5881, 0x00008843 }, /* GL_CURRENT_PALETTE_MATRIX_ARB */ + { 5911, 0x00008B8D }, /* GL_CURRENT_PROGRAM */ + { 5930, 0x00008865 }, /* GL_CURRENT_QUERY */ + { 5947, 0x00008865 }, /* GL_CURRENT_QUERY_ARB */ + { 5968, 0x00000B04 }, /* GL_CURRENT_RASTER_COLOR */ + { 5992, 0x00000B09 }, /* GL_CURRENT_RASTER_DISTANCE */ + { 6019, 0x00000B05 }, /* GL_CURRENT_RASTER_INDEX */ + { 6043, 0x00000B07 }, /* GL_CURRENT_RASTER_POSITION */ + { 6070, 0x00000B08 }, /* GL_CURRENT_RASTER_POSITION_VALID */ + { 6103, 0x00000B06 }, /* GL_CURRENT_RASTER_TEXTURE_COORDS */ + { 6136, 0x00008459 }, /* GL_CURRENT_SECONDARY_COLOR */ + { 6163, 0x00000B03 }, /* GL_CURRENT_TEXTURE_COORDS */ + { 6189, 0x00008626 }, /* GL_CURRENT_VERTEX_ATTRIB */ + { 6214, 0x00008626 }, /* GL_CURRENT_VERTEX_ATTRIB_ARB */ + { 6243, 0x000086A8 }, /* GL_CURRENT_WEIGHT_ARB */ + { 6265, 0x00000900 }, /* GL_CW */ + { 6271, 0x0000875B }, /* GL_DEBUG_ASSERT_MESA */ + { 6292, 0x00008759 }, /* GL_DEBUG_OBJECT_MESA */ + { 6313, 0x0000875A }, /* GL_DEBUG_PRINT_MESA */ + { 6333, 0x00002101 }, /* GL_DECAL */ + { 6342, 0x00001E03 }, /* GL_DECR */ + { 6350, 0x00008508 }, /* GL_DECR_WRAP */ + { 6363, 0x00008508 }, /* GL_DECR_WRAP_EXT */ + { 6380, 0x00008B80 }, /* GL_DELETE_STATUS */ + { 6397, 0x00001801 }, /* GL_DEPTH */ + { 6406, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT_EXT */ + { 6430, 0x00000D1F }, /* GL_DEPTH_BIAS */ + { 6444, 0x00000D56 }, /* GL_DEPTH_BITS */ + { 6458, 0x00008891 }, /* GL_DEPTH_BOUNDS_EXT */ + { 6478, 0x00008890 }, /* GL_DEPTH_BOUNDS_TEST_EXT */ + { 6503, 0x00000100 }, /* GL_DEPTH_BUFFER_BIT */ + { 6523, 0x0000864F }, /* GL_DEPTH_CLAMP_NV */ + { 6541, 0x00000B73 }, /* GL_DEPTH_CLEAR_VALUE */ + { 6562, 0x00001902 }, /* GL_DEPTH_COMPONENT */ + { 6581, 0x000081A5 }, /* GL_DEPTH_COMPONENT16 */ + { 6602, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_ARB */ + { 6627, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_SGIX */ + { 6653, 0x000081A6 }, /* GL_DEPTH_COMPONENT24 */ + { 6674, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_ARB */ + { 6699, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_SGIX */ + { 6725, 0x000081A7 }, /* GL_DEPTH_COMPONENT32 */ + { 6746, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_ARB */ + { 6771, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_SGIX */ + { 6797, 0x00000B74 }, /* GL_DEPTH_FUNC */ + { 6811, 0x00000B70 }, /* GL_DEPTH_RANGE */ + { 6826, 0x00000D1E }, /* GL_DEPTH_SCALE */ + { 6841, 0x000084F9 }, /* GL_DEPTH_STENCIL_NV */ + { 6861, 0x0000886F }, /* GL_DEPTH_STENCIL_TO_BGRA_NV */ + { 6889, 0x0000886E }, /* GL_DEPTH_STENCIL_TO_RGBA_NV */ + { 6917, 0x00000B71 }, /* GL_DEPTH_TEST */ + { 6931, 0x0000884B }, /* GL_DEPTH_TEXTURE_MODE */ + { 6953, 0x0000884B }, /* GL_DEPTH_TEXTURE_MODE_ARB */ + { 6979, 0x00000B72 }, /* GL_DEPTH_WRITEMASK */ + { 6998, 0x00001201 }, /* GL_DIFFUSE */ + { 7009, 0x00000BD0 }, /* GL_DITHER */ + { 7019, 0x00000A02 }, /* GL_DOMAIN */ + { 7029, 0x00001100 }, /* GL_DONT_CARE */ + { 7042, 0x000086AE }, /* GL_DOT3_RGB */ + { 7054, 0x000086AF }, /* GL_DOT3_RGBA */ + { 7067, 0x000086AF }, /* GL_DOT3_RGBA_ARB */ + { 7084, 0x00008741 }, /* GL_DOT3_RGBA_EXT */ + { 7101, 0x000086AE }, /* GL_DOT3_RGB_ARB */ + { 7117, 0x00008740 }, /* GL_DOT3_RGB_EXT */ + { 7133, 0x0000140A }, /* GL_DOUBLE */ + { 7143, 0x00000C32 }, /* GL_DOUBLEBUFFER */ + { 7159, 0x00000C01 }, /* GL_DRAW_BUFFER */ + { 7174, 0x00008825 }, /* GL_DRAW_BUFFER0 */ + { 7190, 0x00008825 }, /* GL_DRAW_BUFFER0_ARB */ + { 7210, 0x00008825 }, /* GL_DRAW_BUFFER0_ATI */ + { 7230, 0x00008826 }, /* GL_DRAW_BUFFER1 */ + { 7246, 0x0000882F }, /* GL_DRAW_BUFFER10 */ + { 7263, 0x0000882F }, /* GL_DRAW_BUFFER10_ARB */ + { 7284, 0x0000882F }, /* GL_DRAW_BUFFER10_ATI */ + { 7305, 0x00008830 }, /* GL_DRAW_BUFFER11 */ + { 7322, 0x00008830 }, /* GL_DRAW_BUFFER11_ARB */ + { 7343, 0x00008830 }, /* GL_DRAW_BUFFER11_ATI */ + { 7364, 0x00008831 }, /* GL_DRAW_BUFFER12 */ + { 7381, 0x00008831 }, /* GL_DRAW_BUFFER12_ARB */ + { 7402, 0x00008831 }, /* GL_DRAW_BUFFER12_ATI */ + { 7423, 0x00008832 }, /* GL_DRAW_BUFFER13 */ + { 7440, 0x00008832 }, /* GL_DRAW_BUFFER13_ARB */ + { 7461, 0x00008832 }, /* GL_DRAW_BUFFER13_ATI */ + { 7482, 0x00008833 }, /* GL_DRAW_BUFFER14 */ + { 7499, 0x00008833 }, /* GL_DRAW_BUFFER14_ARB */ + { 7520, 0x00008833 }, /* GL_DRAW_BUFFER14_ATI */ + { 7541, 0x00008834 }, /* GL_DRAW_BUFFER15 */ + { 7558, 0x00008834 }, /* GL_DRAW_BUFFER15_ARB */ + { 7579, 0x00008834 }, /* GL_DRAW_BUFFER15_ATI */ + { 7600, 0x00008826 }, /* GL_DRAW_BUFFER1_ARB */ + { 7620, 0x00008826 }, /* GL_DRAW_BUFFER1_ATI */ + { 7640, 0x00008827 }, /* GL_DRAW_BUFFER2 */ + { 7656, 0x00008827 }, /* GL_DRAW_BUFFER2_ARB */ + { 7676, 0x00008827 }, /* GL_DRAW_BUFFER2_ATI */ + { 7696, 0x00008828 }, /* GL_DRAW_BUFFER3 */ + { 7712, 0x00008828 }, /* GL_DRAW_BUFFER3_ARB */ + { 7732, 0x00008828 }, /* GL_DRAW_BUFFER3_ATI */ + { 7752, 0x00008829 }, /* GL_DRAW_BUFFER4 */ + { 7768, 0x00008829 }, /* GL_DRAW_BUFFER4_ARB */ + { 7788, 0x00008829 }, /* GL_DRAW_BUFFER4_ATI */ + { 7808, 0x0000882A }, /* GL_DRAW_BUFFER5 */ + { 7824, 0x0000882A }, /* GL_DRAW_BUFFER5_ARB */ + { 7844, 0x0000882A }, /* GL_DRAW_BUFFER5_ATI */ + { 7864, 0x0000882B }, /* GL_DRAW_BUFFER6 */ + { 7880, 0x0000882B }, /* GL_DRAW_BUFFER6_ARB */ + { 7900, 0x0000882B }, /* GL_DRAW_BUFFER6_ATI */ + { 7920, 0x0000882C }, /* GL_DRAW_BUFFER7 */ + { 7936, 0x0000882C }, /* GL_DRAW_BUFFER7_ARB */ + { 7956, 0x0000882C }, /* GL_DRAW_BUFFER7_ATI */ + { 7976, 0x0000882D }, /* GL_DRAW_BUFFER8 */ + { 7992, 0x0000882D }, /* GL_DRAW_BUFFER8_ARB */ + { 8012, 0x0000882D }, /* GL_DRAW_BUFFER8_ATI */ + { 8032, 0x0000882E }, /* GL_DRAW_BUFFER9 */ + { 8048, 0x0000882E }, /* GL_DRAW_BUFFER9_ARB */ + { 8068, 0x0000882E }, /* GL_DRAW_BUFFER9_ATI */ + { 8088, 0x00008CA6 }, /* GL_DRAW_FRAMEBUFFER_BINDING_EXT */ + { 8120, 0x00008CA9 }, /* GL_DRAW_FRAMEBUFFER_EXT */ + { 8144, 0x00000705 }, /* GL_DRAW_PIXEL_TOKEN */ + { 8164, 0x00000304 }, /* GL_DST_ALPHA */ + { 8177, 0x00000306 }, /* GL_DST_COLOR */ + { 8190, 0x000088EA }, /* GL_DYNAMIC_COPY */ + { 8206, 0x000088EA }, /* GL_DYNAMIC_COPY_ARB */ + { 8226, 0x000088E8 }, /* GL_DYNAMIC_DRAW */ + { 8242, 0x000088E8 }, /* GL_DYNAMIC_DRAW_ARB */ + { 8262, 0x000088E9 }, /* GL_DYNAMIC_READ */ + { 8278, 0x000088E9 }, /* GL_DYNAMIC_READ_ARB */ + { 8298, 0x00000B43 }, /* GL_EDGE_FLAG */ + { 8311, 0x00008079 }, /* GL_EDGE_FLAG_ARRAY */ + { 8330, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */ + { 8364, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB */ + { 8402, 0x00008093 }, /* GL_EDGE_FLAG_ARRAY_POINTER */ + { 8429, 0x0000808C }, /* GL_EDGE_FLAG_ARRAY_STRIDE */ + { 8455, 0x00008893 }, /* GL_ELEMENT_ARRAY_BUFFER */ + { 8479, 0x00008893 }, /* GL_ELEMENT_ARRAY_BUFFER_ARB */ + { 8507, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */ + { 8539, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB */ + { 8575, 0x00001600 }, /* GL_EMISSION */ + { 8587, 0x00002000 }, /* GL_ENABLE_BIT */ + { 8601, 0x00000202 }, /* GL_EQUAL */ + { 8610, 0x00001509 }, /* GL_EQUIV */ + { 8619, 0x00010000 }, /* GL_EVAL_BIT */ + { 8631, 0x00000800 }, /* GL_EXP */ + { 8638, 0x00000801 }, /* GL_EXP2 */ + { 8646, 0x00001F03 }, /* GL_EXTENSIONS */ + { 8660, 0x00002400 }, /* GL_EYE_LINEAR */ + { 8674, 0x00002502 }, /* GL_EYE_PLANE */ + { 8687, 0x0000855C }, /* GL_EYE_PLANE_ABSOLUTE_NV */ + { 8712, 0x0000855B }, /* GL_EYE_RADIAL_NV */ + { 8729, 0x00000000 }, /* GL_FALSE */ + { 8738, 0x00001101 }, /* GL_FASTEST */ + { 8749, 0x00001C01 }, /* GL_FEEDBACK */ + { 8761, 0x00000DF0 }, /* GL_FEEDBACK_BUFFER_POINTER */ + { 8788, 0x00000DF1 }, /* GL_FEEDBACK_BUFFER_SIZE */ + { 8812, 0x00000DF2 }, /* GL_FEEDBACK_BUFFER_TYPE */ + { 8836, 0x00001B02 }, /* GL_FILL */ + { 8844, 0x00001D00 }, /* GL_FLAT */ + { 8852, 0x00001406 }, /* GL_FLOAT */ + { 8861, 0x00008B5A }, /* GL_FLOAT_MAT2 */ + { 8875, 0x00008B5A }, /* GL_FLOAT_MAT2_ARB */ + { 8893, 0x00008B5B }, /* GL_FLOAT_MAT3 */ + { 8907, 0x00008B5B }, /* GL_FLOAT_MAT3_ARB */ + { 8925, 0x00008B5C }, /* GL_FLOAT_MAT4 */ + { 8939, 0x00008B5C }, /* GL_FLOAT_MAT4_ARB */ + { 8957, 0x00008B50 }, /* GL_FLOAT_VEC2 */ + { 8971, 0x00008B50 }, /* GL_FLOAT_VEC2_ARB */ + { 8989, 0x00008B51 }, /* GL_FLOAT_VEC3 */ + { 9003, 0x00008B51 }, /* GL_FLOAT_VEC3_ARB */ + { 9021, 0x00008B52 }, /* GL_FLOAT_VEC4 */ + { 9035, 0x00008B52 }, /* GL_FLOAT_VEC4_ARB */ + { 9053, 0x00000B60 }, /* GL_FOG */ + { 9060, 0x00000080 }, /* GL_FOG_BIT */ + { 9071, 0x00000B66 }, /* GL_FOG_COLOR */ + { 9084, 0x00008451 }, /* GL_FOG_COORD */ + { 9097, 0x00008451 }, /* GL_FOG_COORDINATE */ + { 9115, 0x00008457 }, /* GL_FOG_COORDINATE_ARRAY */ + { 9139, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */ + { 9178, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB */ + { 9221, 0x00008456 }, /* GL_FOG_COORDINATE_ARRAY_POINTER */ + { 9253, 0x00008455 }, /* GL_FOG_COORDINATE_ARRAY_STRIDE */ + { 9284, 0x00008454 }, /* GL_FOG_COORDINATE_ARRAY_TYPE */ + { 9313, 0x00008450 }, /* GL_FOG_COORDINATE_SOURCE */ + { 9338, 0x00008457 }, /* GL_FOG_COORD_ARRAY */ + { 9357, 0x0000889D }, /* GL_FOG_COORD_ARRAY_BUFFER_BINDING */ + { 9391, 0x00008456 }, /* GL_FOG_COORD_ARRAY_POINTER */ + { 9418, 0x00008455 }, /* GL_FOG_COORD_ARRAY_STRIDE */ + { 9444, 0x00008454 }, /* GL_FOG_COORD_ARRAY_TYPE */ + { 9468, 0x00008450 }, /* GL_FOG_COORD_SRC */ + { 9485, 0x00000B62 }, /* GL_FOG_DENSITY */ + { 9500, 0x0000855A }, /* GL_FOG_DISTANCE_MODE_NV */ + { 9524, 0x00000B64 }, /* GL_FOG_END */ + { 9535, 0x00000C54 }, /* GL_FOG_HINT */ + { 9547, 0x00000B61 }, /* GL_FOG_INDEX */ + { 9560, 0x00000B65 }, /* GL_FOG_MODE */ + { 9572, 0x00008198 }, /* GL_FOG_OFFSET_SGIX */ + { 9591, 0x00008199 }, /* GL_FOG_OFFSET_VALUE_SGIX */ + { 9616, 0x00000B63 }, /* GL_FOG_START */ + { 9629, 0x00008452 }, /* GL_FRAGMENT_DEPTH */ + { 9647, 0x00008804 }, /* GL_FRAGMENT_PROGRAM_ARB */ + { 9671, 0x00008B30 }, /* GL_FRAGMENT_SHADER */ + { 9690, 0x00008B30 }, /* GL_FRAGMENT_SHADER_ARB */ + { 9713, 0x00008B8B }, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */ + { 9748, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT */ + { 9790, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT */ + { 9832, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT */ + { 9881, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT */ + { 9933, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT */ + { 9977, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT */ + { 10021, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING_EXT */ + { 10048, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE_EXT */ + { 10076, 0x00008D40 }, /* GL_FRAMEBUFFER_EXT */ + { 10095, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT */ + { 10136, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */ + { 10177, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT */ + { 10219, 0x00008CD8 }, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */ + { 10270, 0x00008CDA }, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */ + { 10308, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT */ + { 10357, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT */ + { 10399, 0x00008CDE }, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */ + { 10431, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED_EXT */ + { 10462, 0x00000404 }, /* GL_FRONT */ + { 10471, 0x00000408 }, /* GL_FRONT_AND_BACK */ + { 10489, 0x00000B46 }, /* GL_FRONT_FACE */ + { 10503, 0x00000400 }, /* GL_FRONT_LEFT */ + { 10517, 0x00000401 }, /* GL_FRONT_RIGHT */ + { 10532, 0x00008006 }, /* GL_FUNC_ADD */ + { 10544, 0x00008006 }, /* GL_FUNC_ADD_EXT */ + { 10560, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT */ + { 10585, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT_EXT */ + { 10614, 0x0000800A }, /* GL_FUNC_SUBTRACT */ + { 10631, 0x0000800A }, /* GL_FUNC_SUBTRACT_EXT */ + { 10652, 0x00008191 }, /* GL_GENERATE_MIPMAP */ + { 10671, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT */ + { 10695, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT_SGIS */ + { 10724, 0x00008191 }, /* GL_GENERATE_MIPMAP_SGIS */ + { 10748, 0x00000206 }, /* GL_GEQUAL */ + { 10758, 0x00008009 }, /* GL_GL_BLEND_EQUATION_RGB */ + { 10783, 0x00008C4A }, /* GL_GL_COMPRESSED_SLUMINANCE */ + { 10811, 0x00008C4B }, /* GL_GL_COMPRESSED_SLUMINANCE_ALPHA */ + { 10845, 0x00008C48 }, /* GL_GL_COMPRESSED_SRGB */ + { 10867, 0x00008C49 }, /* GL_GL_COMPRESSED_SRGB_ALPHA */ + { 10895, 0x0000845F }, /* GL_GL_CURRENT_RASTER_SECONDARY_COLOR */ + { 10932, 0x00008B65 }, /* GL_GL_FLOAT_MAT2x3 */ + { 10951, 0x00008B66 }, /* GL_GL_FLOAT_MAT2x4 */ + { 10970, 0x00008B67 }, /* GL_GL_FLOAT_MAT3x2 */ + { 10989, 0x00008B68 }, /* GL_GL_FLOAT_MAT3x4 */ + { 11008, 0x00008B69 }, /* GL_GL_FLOAT_MAT4x2 */ + { 11027, 0x00008B6A }, /* GL_GL_FLOAT_MAT4x3 */ + { 11046, 0x000088EB }, /* GL_GL_PIXEL_PACK_BUFFER */ + { 11070, 0x000088ED }, /* GL_GL_PIXEL_PACK_BUFFER_BINDING */ + { 11102, 0x000088EC }, /* GL_GL_PIXEL_UNPACK_BUFFER */ + { 11128, 0x000088EF }, /* GL_GL_PIXEL_UNPACK_BUFFER_BINDING */ + { 11162, 0x00008C46 }, /* GL_GL_SLUMINANCE */ + { 11179, 0x00008C47 }, /* GL_GL_SLUMINANCE8 */ + { 11197, 0x00008C45 }, /* GL_GL_SLUMINANCE8_ALPHA8 */ + { 11222, 0x00008C44 }, /* GL_GL_SLUMINANCE_ALPHA */ + { 11245, 0x00008C40 }, /* GL_GL_SRGB */ + { 11256, 0x00008C41 }, /* GL_GL_SRGB8 */ + { 11268, 0x00008C43 }, /* GL_GL_SRGB8_ALPHA8 */ + { 11287, 0x00008C42 }, /* GL_GL_SRGB_ALPHA */ + { 11304, 0x00000204 }, /* GL_GREATER */ + { 11315, 0x00001904 }, /* GL_GREEN */ + { 11324, 0x00000D19 }, /* GL_GREEN_BIAS */ + { 11338, 0x00000D53 }, /* GL_GREEN_BITS */ + { 11352, 0x00000D18 }, /* GL_GREEN_SCALE */ + { 11367, 0x00008000 }, /* GL_HINT_BIT */ + { 11379, 0x00008024 }, /* GL_HISTOGRAM */ + { 11392, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE */ + { 11416, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE_EXT */ + { 11444, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE */ + { 11467, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE_EXT */ + { 11494, 0x00008024 }, /* GL_HISTOGRAM_EXT */ + { 11511, 0x00008027 }, /* GL_HISTOGRAM_FORMAT */ + { 11531, 0x00008027 }, /* GL_HISTOGRAM_FORMAT_EXT */ + { 11555, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE */ + { 11579, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE_EXT */ + { 11607, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE */ + { 11635, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE_EXT */ + { 11667, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE */ + { 11689, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE_EXT */ + { 11715, 0x0000802D }, /* GL_HISTOGRAM_SINK */ + { 11733, 0x0000802D }, /* GL_HISTOGRAM_SINK_EXT */ + { 11755, 0x00008026 }, /* GL_HISTOGRAM_WIDTH */ + { 11774, 0x00008026 }, /* GL_HISTOGRAM_WIDTH_EXT */ + { 11797, 0x0000862A }, /* GL_IDENTITY_NV */ + { 11812, 0x00008150 }, /* GL_IGNORE_BORDER_HP */ + { 11832, 0x00008B9B }, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES */ + { 11872, 0x00008B9A }, /* GL_IMPLEMENTATION_COLOR_READ_TYPE_OES */ + { 11910, 0x00001E02 }, /* GL_INCR */ + { 11918, 0x00008507 }, /* GL_INCR_WRAP */ + { 11931, 0x00008507 }, /* GL_INCR_WRAP_EXT */ + { 11948, 0x00008077 }, /* GL_INDEX_ARRAY */ + { 11963, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING */ + { 11993, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING_ARB */ + { 12027, 0x00008091 }, /* GL_INDEX_ARRAY_POINTER */ + { 12050, 0x00008086 }, /* GL_INDEX_ARRAY_STRIDE */ + { 12072, 0x00008085 }, /* GL_INDEX_ARRAY_TYPE */ + { 12092, 0x00000D51 }, /* GL_INDEX_BITS */ + { 12106, 0x00000C20 }, /* GL_INDEX_CLEAR_VALUE */ + { 12127, 0x00000BF1 }, /* GL_INDEX_LOGIC_OP */ + { 12145, 0x00000C30 }, /* GL_INDEX_MODE */ + { 12159, 0x00000D13 }, /* GL_INDEX_OFFSET */ + { 12175, 0x00000D12 }, /* GL_INDEX_SHIFT */ + { 12190, 0x00000C21 }, /* GL_INDEX_WRITEMASK */ + { 12209, 0x00008B84 }, /* GL_INFO_LOG_LENGTH */ + { 12228, 0x00001404 }, /* GL_INT */ + { 12235, 0x00008049 }, /* GL_INTENSITY */ + { 12248, 0x0000804C }, /* GL_INTENSITY12 */ + { 12263, 0x0000804C }, /* GL_INTENSITY12_EXT */ + { 12282, 0x0000804D }, /* GL_INTENSITY16 */ + { 12297, 0x0000804D }, /* GL_INTENSITY16_EXT */ + { 12316, 0x0000804A }, /* GL_INTENSITY4 */ + { 12330, 0x0000804A }, /* GL_INTENSITY4_EXT */ + { 12348, 0x0000804B }, /* GL_INTENSITY8 */ + { 12362, 0x0000804B }, /* GL_INTENSITY8_EXT */ + { 12380, 0x00008049 }, /* GL_INTENSITY_EXT */ + { 12397, 0x00008575 }, /* GL_INTERPOLATE */ + { 12412, 0x00008575 }, /* GL_INTERPOLATE_ARB */ + { 12431, 0x00008575 }, /* GL_INTERPOLATE_EXT */ + { 12450, 0x00008B53 }, /* GL_INT_VEC2 */ + { 12462, 0x00008B53 }, /* GL_INT_VEC2_ARB */ + { 12478, 0x00008B54 }, /* GL_INT_VEC3 */ + { 12490, 0x00008B54 }, /* GL_INT_VEC3_ARB */ + { 12506, 0x00008B55 }, /* GL_INT_VEC4 */ + { 12518, 0x00008B55 }, /* GL_INT_VEC4_ARB */ + { 12534, 0x00000500 }, /* GL_INVALID_ENUM */ + { 12550, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION_EXT */ + { 12587, 0x00000502 }, /* GL_INVALID_OPERATION */ + { 12608, 0x00000501 }, /* GL_INVALID_VALUE */ + { 12625, 0x0000862B }, /* GL_INVERSE_NV */ + { 12639, 0x0000862D }, /* GL_INVERSE_TRANSPOSE_NV */ + { 12663, 0x0000150A }, /* GL_INVERT */ + { 12673, 0x00001E00 }, /* GL_KEEP */ + { 12681, 0x00000406 }, /* GL_LEFT */ + { 12689, 0x00000203 }, /* GL_LEQUAL */ + { 12699, 0x00000201 }, /* GL_LESS */ + { 12707, 0x00004000 }, /* GL_LIGHT0 */ + { 12717, 0x00004001 }, /* GL_LIGHT1 */ + { 12727, 0x00004002 }, /* GL_LIGHT2 */ + { 12737, 0x00004003 }, /* GL_LIGHT3 */ + { 12747, 0x00004004 }, /* GL_LIGHT4 */ + { 12757, 0x00004005 }, /* GL_LIGHT5 */ + { 12767, 0x00004006 }, /* GL_LIGHT6 */ + { 12777, 0x00004007 }, /* GL_LIGHT7 */ + { 12787, 0x00000B50 }, /* GL_LIGHTING */ + { 12799, 0x00000040 }, /* GL_LIGHTING_BIT */ + { 12815, 0x00000B53 }, /* GL_LIGHT_MODEL_AMBIENT */ + { 12838, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL */ + { 12867, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL_EXT */ + { 12900, 0x00000B51 }, /* GL_LIGHT_MODEL_LOCAL_VIEWER */ + { 12928, 0x00000B52 }, /* GL_LIGHT_MODEL_TWO_SIDE */ + { 12952, 0x00001B01 }, /* GL_LINE */ + { 12960, 0x00002601 }, /* GL_LINEAR */ + { 12970, 0x00001208 }, /* GL_LINEAR_ATTENUATION */ + { 12992, 0x00008170 }, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */ + { 13022, 0x0000844F }, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */ + { 13053, 0x00002703 }, /* GL_LINEAR_MIPMAP_LINEAR */ + { 13077, 0x00002701 }, /* GL_LINEAR_MIPMAP_NEAREST */ + { 13102, 0x00000001 }, /* GL_LINES */ + { 13111, 0x00000004 }, /* GL_LINE_BIT */ + { 13123, 0x00000002 }, /* GL_LINE_LOOP */ + { 13136, 0x00000707 }, /* GL_LINE_RESET_TOKEN */ + { 13156, 0x00000B20 }, /* GL_LINE_SMOOTH */ + { 13171, 0x00000C52 }, /* GL_LINE_SMOOTH_HINT */ + { 13191, 0x00000B24 }, /* GL_LINE_STIPPLE */ + { 13207, 0x00000B25 }, /* GL_LINE_STIPPLE_PATTERN */ + { 13231, 0x00000B26 }, /* GL_LINE_STIPPLE_REPEAT */ + { 13254, 0x00000003 }, /* GL_LINE_STRIP */ + { 13268, 0x00000702 }, /* GL_LINE_TOKEN */ + { 13282, 0x00000B21 }, /* GL_LINE_WIDTH */ + { 13296, 0x00000B23 }, /* GL_LINE_WIDTH_GRANULARITY */ + { 13322, 0x00000B22 }, /* GL_LINE_WIDTH_RANGE */ + { 13342, 0x00008B82 }, /* GL_LINK_STATUS */ + { 13357, 0x00000B32 }, /* GL_LIST_BASE */ + { 13370, 0x00020000 }, /* GL_LIST_BIT */ + { 13382, 0x00000B33 }, /* GL_LIST_INDEX */ + { 13396, 0x00000B30 }, /* GL_LIST_MODE */ + { 13409, 0x00000101 }, /* GL_LOAD */ + { 13417, 0x00000BF1 }, /* GL_LOGIC_OP */ + { 13429, 0x00000BF0 }, /* GL_LOGIC_OP_MODE */ + { 13446, 0x00008CA1 }, /* GL_LOWER_LEFT */ + { 13460, 0x00001909 }, /* GL_LUMINANCE */ + { 13473, 0x00008041 }, /* GL_LUMINANCE12 */ + { 13488, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12 */ + { 13511, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12_EXT */ + { 13538, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4 */ + { 13560, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4_EXT */ + { 13586, 0x00008041 }, /* GL_LUMINANCE12_EXT */ + { 13605, 0x00008042 }, /* GL_LUMINANCE16 */ + { 13620, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16 */ + { 13643, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16_EXT */ + { 13670, 0x00008042 }, /* GL_LUMINANCE16_EXT */ + { 13689, 0x0000803F }, /* GL_LUMINANCE4 */ + { 13703, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4 */ + { 13724, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4_EXT */ + { 13749, 0x0000803F }, /* GL_LUMINANCE4_EXT */ + { 13767, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2 */ + { 13788, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2_EXT */ + { 13813, 0x00008040 }, /* GL_LUMINANCE8 */ + { 13827, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8 */ + { 13848, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8_EXT */ + { 13873, 0x00008040 }, /* GL_LUMINANCE8_EXT */ + { 13891, 0x0000190A }, /* GL_LUMINANCE_ALPHA */ + { 13910, 0x00000D90 }, /* GL_MAP1_COLOR_4 */ + { 13926, 0x00000DD0 }, /* GL_MAP1_GRID_DOMAIN */ + { 13946, 0x00000DD1 }, /* GL_MAP1_GRID_SEGMENTS */ + { 13968, 0x00000D91 }, /* GL_MAP1_INDEX */ + { 13982, 0x00000D92 }, /* GL_MAP1_NORMAL */ + { 13997, 0x00000D93 }, /* GL_MAP1_TEXTURE_COORD_1 */ + { 14021, 0x00000D94 }, /* GL_MAP1_TEXTURE_COORD_2 */ + { 14045, 0x00000D95 }, /* GL_MAP1_TEXTURE_COORD_3 */ + { 14069, 0x00000D96 }, /* GL_MAP1_TEXTURE_COORD_4 */ + { 14093, 0x00000D97 }, /* GL_MAP1_VERTEX_3 */ + { 14110, 0x00000D98 }, /* GL_MAP1_VERTEX_4 */ + { 14127, 0x00008660 }, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */ + { 14155, 0x0000866A }, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */ + { 14184, 0x0000866B }, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */ + { 14213, 0x0000866C }, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */ + { 14242, 0x0000866D }, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */ + { 14271, 0x0000866E }, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */ + { 14300, 0x0000866F }, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */ + { 14329, 0x00008661 }, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */ + { 14357, 0x00008662 }, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */ + { 14385, 0x00008663 }, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */ + { 14413, 0x00008664 }, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */ + { 14441, 0x00008665 }, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */ + { 14469, 0x00008666 }, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */ + { 14497, 0x00008667 }, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */ + { 14525, 0x00008668 }, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */ + { 14553, 0x00008669 }, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */ + { 14581, 0x00000DB0 }, /* GL_MAP2_COLOR_4 */ + { 14597, 0x00000DD2 }, /* GL_MAP2_GRID_DOMAIN */ + { 14617, 0x00000DD3 }, /* GL_MAP2_GRID_SEGMENTS */ + { 14639, 0x00000DB1 }, /* GL_MAP2_INDEX */ + { 14653, 0x00000DB2 }, /* GL_MAP2_NORMAL */ + { 14668, 0x00000DB3 }, /* GL_MAP2_TEXTURE_COORD_1 */ + { 14692, 0x00000DB4 }, /* GL_MAP2_TEXTURE_COORD_2 */ + { 14716, 0x00000DB5 }, /* GL_MAP2_TEXTURE_COORD_3 */ + { 14740, 0x00000DB6 }, /* GL_MAP2_TEXTURE_COORD_4 */ + { 14764, 0x00000DB7 }, /* GL_MAP2_VERTEX_3 */ + { 14781, 0x00000DB8 }, /* GL_MAP2_VERTEX_4 */ + { 14798, 0x00008670 }, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */ + { 14826, 0x0000867A }, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */ + { 14855, 0x0000867B }, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */ + { 14884, 0x0000867C }, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */ + { 14913, 0x0000867D }, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */ + { 14942, 0x0000867E }, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */ + { 14971, 0x0000867F }, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */ + { 15000, 0x00008671 }, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */ + { 15028, 0x00008672 }, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */ + { 15056, 0x00008673 }, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */ + { 15084, 0x00008674 }, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */ + { 15112, 0x00008675 }, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */ + { 15140, 0x00008676 }, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */ + { 15168, 0x00008677 }, /* GL_MAP2_VERTEX_ATTRIB7_4_NV */ + { 15196, 0x00008678 }, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */ + { 15224, 0x00008679 }, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */ + { 15252, 0x00000D10 }, /* GL_MAP_COLOR */ + { 15265, 0x00000D11 }, /* GL_MAP_STENCIL */ + { 15280, 0x000088C0 }, /* GL_MATRIX0_ARB */ + { 15295, 0x00008630 }, /* GL_MATRIX0_NV */ + { 15309, 0x000088CA }, /* GL_MATRIX10_ARB */ + { 15325, 0x000088CB }, /* GL_MATRIX11_ARB */ + { 15341, 0x000088CC }, /* GL_MATRIX12_ARB */ + { 15357, 0x000088CD }, /* GL_MATRIX13_ARB */ + { 15373, 0x000088CE }, /* GL_MATRIX14_ARB */ + { 15389, 0x000088CF }, /* GL_MATRIX15_ARB */ + { 15405, 0x000088D0 }, /* GL_MATRIX16_ARB */ + { 15421, 0x000088D1 }, /* GL_MATRIX17_ARB */ + { 15437, 0x000088D2 }, /* GL_MATRIX18_ARB */ + { 15453, 0x000088D3 }, /* GL_MATRIX19_ARB */ + { 15469, 0x000088C1 }, /* GL_MATRIX1_ARB */ + { 15484, 0x00008631 }, /* GL_MATRIX1_NV */ + { 15498, 0x000088D4 }, /* GL_MATRIX20_ARB */ + { 15514, 0x000088D5 }, /* GL_MATRIX21_ARB */ + { 15530, 0x000088D6 }, /* GL_MATRIX22_ARB */ + { 15546, 0x000088D7 }, /* GL_MATRIX23_ARB */ + { 15562, 0x000088D8 }, /* GL_MATRIX24_ARB */ + { 15578, 0x000088D9 }, /* GL_MATRIX25_ARB */ + { 15594, 0x000088DA }, /* GL_MATRIX26_ARB */ + { 15610, 0x000088DB }, /* GL_MATRIX27_ARB */ + { 15626, 0x000088DC }, /* GL_MATRIX28_ARB */ + { 15642, 0x000088DD }, /* GL_MATRIX29_ARB */ + { 15658, 0x000088C2 }, /* GL_MATRIX2_ARB */ + { 15673, 0x00008632 }, /* GL_MATRIX2_NV */ + { 15687, 0x000088DE }, /* GL_MATRIX30_ARB */ + { 15703, 0x000088DF }, /* GL_MATRIX31_ARB */ + { 15719, 0x000088C3 }, /* GL_MATRIX3_ARB */ + { 15734, 0x00008633 }, /* GL_MATRIX3_NV */ + { 15748, 0x000088C4 }, /* GL_MATRIX4_ARB */ + { 15763, 0x00008634 }, /* GL_MATRIX4_NV */ + { 15777, 0x000088C5 }, /* GL_MATRIX5_ARB */ + { 15792, 0x00008635 }, /* GL_MATRIX5_NV */ + { 15806, 0x000088C6 }, /* GL_MATRIX6_ARB */ + { 15821, 0x00008636 }, /* GL_MATRIX6_NV */ + { 15835, 0x000088C7 }, /* GL_MATRIX7_ARB */ + { 15850, 0x00008637 }, /* GL_MATRIX7_NV */ + { 15864, 0x000088C8 }, /* GL_MATRIX8_ARB */ + { 15879, 0x000088C9 }, /* GL_MATRIX9_ARB */ + { 15894, 0x00008844 }, /* GL_MATRIX_INDEX_ARRAY_ARB */ + { 15920, 0x00008849 }, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */ + { 15954, 0x00008846 }, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */ + { 15985, 0x00008848 }, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */ + { 16018, 0x00008847 }, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */ + { 16049, 0x00000BA0 }, /* GL_MATRIX_MODE */ + { 16064, 0x00008840 }, /* GL_MATRIX_PALETTE_ARB */ + { 16086, 0x00008008 }, /* GL_MAX */ + { 16093, 0x00008073 }, /* GL_MAX_3D_TEXTURE_SIZE */ + { 16116, 0x000088FF }, /* GL_MAX_ARRAY_TEXTURE_LAYERS_EXT */ + { 16148, 0x00000D35 }, /* GL_MAX_ATTRIB_STACK_DEPTH */ + { 16174, 0x00000D3B }, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */ + { 16207, 0x00008177 }, /* GL_MAX_CLIPMAP_DEPTH_SGIX */ + { 16233, 0x00008178 }, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */ + { 16267, 0x00000D32 }, /* GL_MAX_CLIP_PLANES */ + { 16286, 0x00008CDF }, /* GL_MAX_COLOR_ATTACHMENTS_EXT */ + { 16315, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */ + { 16347, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI */ + { 16383, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */ + { 16419, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB */ + { 16459, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT */ + { 16485, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT_EXT */ + { 16515, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH */ + { 16540, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH_EXT */ + { 16569, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */ + { 16598, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB */ + { 16631, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS */ + { 16651, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ARB */ + { 16675, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ATI */ + { 16699, 0x000080E9 }, /* GL_MAX_ELEMENTS_INDICES */ + { 16723, 0x000080E8 }, /* GL_MAX_ELEMENTS_VERTICES */ + { 16748, 0x00000D30 }, /* GL_MAX_EVAL_ORDER */ + { 16766, 0x00008008 }, /* GL_MAX_EXT */ + { 16777, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */ + { 16812, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB */ + { 16851, 0x00000D31 }, /* GL_MAX_LIGHTS */ + { 16865, 0x00000B31 }, /* GL_MAX_LIST_NESTING */ + { 16885, 0x00008841 }, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */ + { 16923, 0x00000D36 }, /* GL_MAX_MODELVIEW_STACK_DEPTH */ + { 16952, 0x00000D37 }, /* GL_MAX_NAME_STACK_DEPTH */ + { 16976, 0x00008842 }, /* GL_MAX_PALETTE_MATRICES_ARB */ + { 17004, 0x00000D34 }, /* GL_MAX_PIXEL_MAP_TABLE */ + { 17027, 0x000088B1 }, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */ + { 17064, 0x0000880B }, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */ + { 17100, 0x000088AD }, /* GL_MAX_PROGRAM_ATTRIBS_ARB */ + { 17127, 0x000088F5 }, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */ + { 17156, 0x000088B5 }, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */ + { 17190, 0x000088F4 }, /* GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV */ + { 17226, 0x000088F6 }, /* GL_MAX_PROGRAM_IF_DEPTH_NV */ + { 17253, 0x000088A1 }, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */ + { 17285, 0x000088B4 }, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */ + { 17321, 0x000088F8 }, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */ + { 17350, 0x000088F7 }, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */ + { 17379, 0x0000862F }, /* GL_MAX_PROGRAM_MATRICES_ARB */ + { 17407, 0x0000862E }, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */ + { 17445, 0x000088B3 }, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ + { 17489, 0x0000880E }, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ + { 17532, 0x000088AF }, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */ + { 17566, 0x000088A3 }, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ + { 17605, 0x000088AB }, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */ + { 17642, 0x000088A7 }, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */ + { 17680, 0x00008810 }, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ + { 17723, 0x0000880F }, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ + { 17766, 0x000088A9 }, /* GL_MAX_PROGRAM_PARAMETERS_ARB */ + { 17796, 0x000088A5 }, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */ + { 17827, 0x0000880D }, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */ + { 17863, 0x0000880C }, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */ + { 17899, 0x00000D38 }, /* GL_MAX_PROJECTION_STACK_DEPTH */ + { 17929, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB */ + { 17963, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_NV */ + { 17996, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE_EXT */ + { 18025, 0x00008504 }, /* GL_MAX_SHININESS_NV */ + { 18045, 0x00008505 }, /* GL_MAX_SPOT_EXPONENT_NV */ + { 18069, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS */ + { 18091, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS_ARB */ + { 18117, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS */ + { 18144, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS_ARB */ + { 18175, 0x000084FD }, /* GL_MAX_TEXTURE_LOD_BIAS */ + { 18199, 0x000084FF }, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */ + { 18233, 0x00000D33 }, /* GL_MAX_TEXTURE_SIZE */ + { 18253, 0x00000D39 }, /* GL_MAX_TEXTURE_STACK_DEPTH */ + { 18280, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS */ + { 18301, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS_ARB */ + { 18326, 0x0000862F }, /* GL_MAX_TRACK_MATRICES_NV */ + { 18351, 0x0000862E }, /* GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV */ + { 18386, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS */ + { 18408, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS_ARB */ + { 18434, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS */ + { 18456, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS_ARB */ + { 18482, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */ + { 18516, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB */ + { 18554, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */ + { 18587, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB */ + { 18624, 0x000086A4 }, /* GL_MAX_VERTEX_UNITS_ARB */ + { 18648, 0x00000D3A }, /* GL_MAX_VIEWPORT_DIMS */ + { 18669, 0x00008007 }, /* GL_MIN */ + { 18676, 0x0000802E }, /* GL_MINMAX */ + { 18686, 0x0000802E }, /* GL_MINMAX_EXT */ + { 18700, 0x0000802F }, /* GL_MINMAX_FORMAT */ + { 18717, 0x0000802F }, /* GL_MINMAX_FORMAT_EXT */ + { 18738, 0x00008030 }, /* GL_MINMAX_SINK */ + { 18753, 0x00008030 }, /* GL_MINMAX_SINK_EXT */ + { 18772, 0x00008007 }, /* GL_MIN_EXT */ + { 18783, 0x00008370 }, /* GL_MIRRORED_REPEAT */ + { 18802, 0x00008370 }, /* GL_MIRRORED_REPEAT_ARB */ + { 18825, 0x00008370 }, /* GL_MIRRORED_REPEAT_IBM */ + { 18848, 0x00008742 }, /* GL_MIRROR_CLAMP_ATI */ + { 18868, 0x00008742 }, /* GL_MIRROR_CLAMP_EXT */ + { 18888, 0x00008912 }, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */ + { 18918, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_ATI */ + { 18946, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */ + { 18974, 0x00001700 }, /* GL_MODELVIEW */ + { 18987, 0x00001700 }, /* GL_MODELVIEW0_ARB */ + { 19005, 0x0000872A }, /* GL_MODELVIEW10_ARB */ + { 19024, 0x0000872B }, /* GL_MODELVIEW11_ARB */ + { 19043, 0x0000872C }, /* GL_MODELVIEW12_ARB */ + { 19062, 0x0000872D }, /* GL_MODELVIEW13_ARB */ + { 19081, 0x0000872E }, /* GL_MODELVIEW14_ARB */ + { 19100, 0x0000872F }, /* GL_MODELVIEW15_ARB */ + { 19119, 0x00008730 }, /* GL_MODELVIEW16_ARB */ + { 19138, 0x00008731 }, /* GL_MODELVIEW17_ARB */ + { 19157, 0x00008732 }, /* GL_MODELVIEW18_ARB */ + { 19176, 0x00008733 }, /* GL_MODELVIEW19_ARB */ + { 19195, 0x0000850A }, /* GL_MODELVIEW1_ARB */ + { 19213, 0x00008734 }, /* GL_MODELVIEW20_ARB */ + { 19232, 0x00008735 }, /* GL_MODELVIEW21_ARB */ + { 19251, 0x00008736 }, /* GL_MODELVIEW22_ARB */ + { 19270, 0x00008737 }, /* GL_MODELVIEW23_ARB */ + { 19289, 0x00008738 }, /* GL_MODELVIEW24_ARB */ + { 19308, 0x00008739 }, /* GL_MODELVIEW25_ARB */ + { 19327, 0x0000873A }, /* GL_MODELVIEW26_ARB */ + { 19346, 0x0000873B }, /* GL_MODELVIEW27_ARB */ + { 19365, 0x0000873C }, /* GL_MODELVIEW28_ARB */ + { 19384, 0x0000873D }, /* GL_MODELVIEW29_ARB */ + { 19403, 0x00008722 }, /* GL_MODELVIEW2_ARB */ + { 19421, 0x0000873E }, /* GL_MODELVIEW30_ARB */ + { 19440, 0x0000873F }, /* GL_MODELVIEW31_ARB */ + { 19459, 0x00008723 }, /* GL_MODELVIEW3_ARB */ + { 19477, 0x00008724 }, /* GL_MODELVIEW4_ARB */ + { 19495, 0x00008725 }, /* GL_MODELVIEW5_ARB */ + { 19513, 0x00008726 }, /* GL_MODELVIEW6_ARB */ + { 19531, 0x00008727 }, /* GL_MODELVIEW7_ARB */ + { 19549, 0x00008728 }, /* GL_MODELVIEW8_ARB */ + { 19567, 0x00008729 }, /* GL_MODELVIEW9_ARB */ + { 19585, 0x00000BA6 }, /* GL_MODELVIEW_MATRIX */ + { 19605, 0x00008629 }, /* GL_MODELVIEW_PROJECTION_NV */ + { 19632, 0x00000BA3 }, /* GL_MODELVIEW_STACK_DEPTH */ + { 19657, 0x00002100 }, /* GL_MODULATE */ + { 19669, 0x00008744 }, /* GL_MODULATE_ADD_ATI */ + { 19689, 0x00008745 }, /* GL_MODULATE_SIGNED_ADD_ATI */ + { 19716, 0x00008746 }, /* GL_MODULATE_SUBTRACT_ATI */ + { 19741, 0x00000103 }, /* GL_MULT */ + { 19749, 0x0000809D }, /* GL_MULTISAMPLE */ + { 19764, 0x000086B2 }, /* GL_MULTISAMPLE_3DFX */ + { 19784, 0x0000809D }, /* GL_MULTISAMPLE_ARB */ + { 19803, 0x20000000 }, /* GL_MULTISAMPLE_BIT */ + { 19822, 0x20000000 }, /* GL_MULTISAMPLE_BIT_3DFX */ + { 19846, 0x20000000 }, /* GL_MULTISAMPLE_BIT_ARB */ + { 19869, 0x00008534 }, /* GL_MULTISAMPLE_FILTER_HINT_NV */ + { 19899, 0x00002A25 }, /* GL_N3F_V3F */ + { 19910, 0x00000D70 }, /* GL_NAME_STACK_DEPTH */ + { 19930, 0x0000150E }, /* GL_NAND */ + { 19938, 0x00002600 }, /* GL_NEAREST */ + { 19949, 0x0000844E }, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */ + { 19980, 0x0000844D }, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */ + { 20012, 0x00002702 }, /* GL_NEAREST_MIPMAP_LINEAR */ + { 20037, 0x00002700 }, /* GL_NEAREST_MIPMAP_NEAREST */ + { 20063, 0x00000200 }, /* GL_NEVER */ + { 20072, 0x00001102 }, /* GL_NICEST */ + { 20082, 0x00000000 }, /* GL_NONE */ + { 20090, 0x00001505 }, /* GL_NOOP */ + { 20098, 0x00001508 }, /* GL_NOR */ + { 20105, 0x00000BA1 }, /* GL_NORMALIZE */ + { 20118, 0x00008075 }, /* GL_NORMAL_ARRAY */ + { 20134, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING */ + { 20165, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING_ARB */ + { 20200, 0x0000808F }, /* GL_NORMAL_ARRAY_POINTER */ + { 20224, 0x0000807F }, /* GL_NORMAL_ARRAY_STRIDE */ + { 20247, 0x0000807E }, /* GL_NORMAL_ARRAY_TYPE */ + { 20268, 0x00008511 }, /* GL_NORMAL_MAP */ + { 20282, 0x00008511 }, /* GL_NORMAL_MAP_ARB */ + { 20300, 0x00008511 }, /* GL_NORMAL_MAP_NV */ + { 20317, 0x00000205 }, /* GL_NOTEQUAL */ + { 20329, 0x00000000 }, /* GL_NO_ERROR */ + { 20341, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */ + { 20375, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB */ + { 20413, 0x00008B89 }, /* GL_OBJECT_ACTIVE_ATTRIBUTES_ARB */ + { 20445, 0x00008B8A }, /* GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB */ + { 20487, 0x00008B86 }, /* GL_OBJECT_ACTIVE_UNIFORMS_ARB */ + { 20517, 0x00008B87 }, /* GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB */ + { 20557, 0x00008B85 }, /* GL_OBJECT_ATTACHED_OBJECTS_ARB */ + { 20588, 0x00008B81 }, /* GL_OBJECT_COMPILE_STATUS_ARB */ + { 20617, 0x00008B80 }, /* GL_OBJECT_DELETE_STATUS_ARB */ + { 20645, 0x00008B84 }, /* GL_OBJECT_INFO_LOG_LENGTH_ARB */ + { 20675, 0x00002401 }, /* GL_OBJECT_LINEAR */ + { 20692, 0x00008B82 }, /* GL_OBJECT_LINK_STATUS_ARB */ + { 20718, 0x00002501 }, /* GL_OBJECT_PLANE */ + { 20734, 0x00008B88 }, /* GL_OBJECT_SHADER_SOURCE_LENGTH_ARB */ + { 20769, 0x00008B4F }, /* GL_OBJECT_SUBTYPE_ARB */ + { 20791, 0x00008B4E }, /* GL_OBJECT_TYPE_ARB */ + { 20810, 0x00008B83 }, /* GL_OBJECT_VALIDATE_STATUS_ARB */ + { 20840, 0x00008165 }, /* GL_OCCLUSION_TEST_HP */ + { 20861, 0x00008166 }, /* GL_OCCLUSION_TEST_RESULT_HP */ + { 20889, 0x00000001 }, /* GL_ONE */ + { 20896, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA */ + { 20924, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA_EXT */ + { 20956, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR */ + { 20984, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR_EXT */ + { 21016, 0x00000305 }, /* GL_ONE_MINUS_DST_ALPHA */ + { 21039, 0x00000307 }, /* GL_ONE_MINUS_DST_COLOR */ + { 21062, 0x00000303 }, /* GL_ONE_MINUS_SRC_ALPHA */ + { 21085, 0x00000301 }, /* GL_ONE_MINUS_SRC_COLOR */ + { 21108, 0x00008598 }, /* GL_OPERAND0_ALPHA */ + { 21126, 0x00008598 }, /* GL_OPERAND0_ALPHA_ARB */ + { 21148, 0x00008598 }, /* GL_OPERAND0_ALPHA_EXT */ + { 21170, 0x00008590 }, /* GL_OPERAND0_RGB */ + { 21186, 0x00008590 }, /* GL_OPERAND0_RGB_ARB */ + { 21206, 0x00008590 }, /* GL_OPERAND0_RGB_EXT */ + { 21226, 0x00008599 }, /* GL_OPERAND1_ALPHA */ + { 21244, 0x00008599 }, /* GL_OPERAND1_ALPHA_ARB */ + { 21266, 0x00008599 }, /* GL_OPERAND1_ALPHA_EXT */ + { 21288, 0x00008591 }, /* GL_OPERAND1_RGB */ + { 21304, 0x00008591 }, /* GL_OPERAND1_RGB_ARB */ + { 21324, 0x00008591 }, /* GL_OPERAND1_RGB_EXT */ + { 21344, 0x0000859A }, /* GL_OPERAND2_ALPHA */ + { 21362, 0x0000859A }, /* GL_OPERAND2_ALPHA_ARB */ + { 21384, 0x0000859A }, /* GL_OPERAND2_ALPHA_EXT */ + { 21406, 0x00008592 }, /* GL_OPERAND2_RGB */ + { 21422, 0x00008592 }, /* GL_OPERAND2_RGB_ARB */ + { 21442, 0x00008592 }, /* GL_OPERAND2_RGB_EXT */ + { 21462, 0x0000859B }, /* GL_OPERAND3_ALPHA_NV */ + { 21483, 0x00008593 }, /* GL_OPERAND3_RGB_NV */ + { 21502, 0x00001507 }, /* GL_OR */ + { 21508, 0x00000A01 }, /* GL_ORDER */ + { 21517, 0x0000150D }, /* GL_OR_INVERTED */ + { 21532, 0x0000150B }, /* GL_OR_REVERSE */ + { 21546, 0x00000505 }, /* GL_OUT_OF_MEMORY */ + { 21563, 0x00000D05 }, /* GL_PACK_ALIGNMENT */ + { 21581, 0x0000806C }, /* GL_PACK_IMAGE_HEIGHT */ + { 21602, 0x00008758 }, /* GL_PACK_INVERT_MESA */ + { 21622, 0x00000D01 }, /* GL_PACK_LSB_FIRST */ + { 21640, 0x00000D02 }, /* GL_PACK_ROW_LENGTH */ + { 21659, 0x0000806B }, /* GL_PACK_SKIP_IMAGES */ + { 21679, 0x00000D04 }, /* GL_PACK_SKIP_PIXELS */ + { 21699, 0x00000D03 }, /* GL_PACK_SKIP_ROWS */ + { 21717, 0x00000D00 }, /* GL_PACK_SWAP_BYTES */ + { 21736, 0x00008B92 }, /* GL_PALETTE4_R5_G6_B5_OES */ + { 21761, 0x00008B94 }, /* GL_PALETTE4_RGB5_A1_OES */ + { 21785, 0x00008B90 }, /* GL_PALETTE4_RGB8_OES */ + { 21806, 0x00008B93 }, /* GL_PALETTE4_RGBA4_OES */ + { 21828, 0x00008B91 }, /* GL_PALETTE4_RGBA8_OES */ + { 21850, 0x00008B97 }, /* GL_PALETTE8_R5_G6_B5_OES */ + { 21875, 0x00008B99 }, /* GL_PALETTE8_RGB5_A1_OES */ + { 21899, 0x00008B95 }, /* GL_PALETTE8_RGB8_OES */ + { 21920, 0x00008B98 }, /* GL_PALETTE8_RGBA4_OES */ + { 21942, 0x00008B96 }, /* GL_PALETTE8_RGBA8_OES */ + { 21964, 0x00000700 }, /* GL_PASS_THROUGH_TOKEN */ + { 21986, 0x00000C50 }, /* GL_PERSPECTIVE_CORRECTION_HINT */ + { 22017, 0x00000C79 }, /* GL_PIXEL_MAP_A_TO_A */ + { 22037, 0x00000CB9 }, /* GL_PIXEL_MAP_A_TO_A_SIZE */ + { 22062, 0x00000C78 }, /* GL_PIXEL_MAP_B_TO_B */ + { 22082, 0x00000CB8 }, /* GL_PIXEL_MAP_B_TO_B_SIZE */ + { 22107, 0x00000C77 }, /* GL_PIXEL_MAP_G_TO_G */ + { 22127, 0x00000CB7 }, /* GL_PIXEL_MAP_G_TO_G_SIZE */ + { 22152, 0x00000C75 }, /* GL_PIXEL_MAP_I_TO_A */ + { 22172, 0x00000CB5 }, /* GL_PIXEL_MAP_I_TO_A_SIZE */ + { 22197, 0x00000C74 }, /* GL_PIXEL_MAP_I_TO_B */ + { 22217, 0x00000CB4 }, /* GL_PIXEL_MAP_I_TO_B_SIZE */ + { 22242, 0x00000C73 }, /* GL_PIXEL_MAP_I_TO_G */ + { 22262, 0x00000CB3 }, /* GL_PIXEL_MAP_I_TO_G_SIZE */ + { 22287, 0x00000C70 }, /* GL_PIXEL_MAP_I_TO_I */ + { 22307, 0x00000CB0 }, /* GL_PIXEL_MAP_I_TO_I_SIZE */ + { 22332, 0x00000C72 }, /* GL_PIXEL_MAP_I_TO_R */ + { 22352, 0x00000CB2 }, /* GL_PIXEL_MAP_I_TO_R_SIZE */ + { 22377, 0x00000C76 }, /* GL_PIXEL_MAP_R_TO_R */ + { 22397, 0x00000CB6 }, /* GL_PIXEL_MAP_R_TO_R_SIZE */ + { 22422, 0x00000C71 }, /* GL_PIXEL_MAP_S_TO_S */ + { 22442, 0x00000CB1 }, /* GL_PIXEL_MAP_S_TO_S_SIZE */ + { 22467, 0x00000020 }, /* GL_PIXEL_MODE_BIT */ + { 22485, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING_EXT */ + { 22518, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER_EXT */ + { 22543, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING_EXT */ + { 22578, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER_EXT */ + { 22605, 0x00001B00 }, /* GL_POINT */ + { 22614, 0x00000000 }, /* GL_POINTS */ + { 22624, 0x00000002 }, /* GL_POINT_BIT */ + { 22637, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION */ + { 22667, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_ARB */ + { 22701, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_EXT */ + { 22735, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_SGIS */ + { 22770, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE */ + { 22799, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_ARB */ + { 22832, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_EXT */ + { 22865, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_SGIS */ + { 22899, 0x00000B11 }, /* GL_POINT_SIZE */ + { 22913, 0x00000B13 }, /* GL_POINT_SIZE_GRANULARITY */ + { 22939, 0x00008127 }, /* GL_POINT_SIZE_MAX */ + { 22957, 0x00008127 }, /* GL_POINT_SIZE_MAX_ARB */ + { 22979, 0x00008127 }, /* GL_POINT_SIZE_MAX_EXT */ + { 23001, 0x00008127 }, /* GL_POINT_SIZE_MAX_SGIS */ + { 23024, 0x00008126 }, /* GL_POINT_SIZE_MIN */ + { 23042, 0x00008126 }, /* GL_POINT_SIZE_MIN_ARB */ + { 23064, 0x00008126 }, /* GL_POINT_SIZE_MIN_EXT */ + { 23086, 0x00008126 }, /* GL_POINT_SIZE_MIN_SGIS */ + { 23109, 0x00000B12 }, /* GL_POINT_SIZE_RANGE */ + { 23129, 0x00000B10 }, /* GL_POINT_SMOOTH */ + { 23145, 0x00000C51 }, /* GL_POINT_SMOOTH_HINT */ + { 23166, 0x00008861 }, /* GL_POINT_SPRITE */ + { 23182, 0x00008861 }, /* GL_POINT_SPRITE_ARB */ + { 23202, 0x00008CA0 }, /* GL_POINT_SPRITE_COORD_ORIGIN */ + { 23231, 0x00008861 }, /* GL_POINT_SPRITE_NV */ + { 23250, 0x00008863 }, /* GL_POINT_SPRITE_R_MODE_NV */ + { 23276, 0x00000701 }, /* GL_POINT_TOKEN */ + { 23291, 0x00000009 }, /* GL_POLYGON */ + { 23302, 0x00000008 }, /* GL_POLYGON_BIT */ + { 23317, 0x00000B40 }, /* GL_POLYGON_MODE */ + { 23333, 0x00008039 }, /* GL_POLYGON_OFFSET_BIAS */ + { 23356, 0x00008038 }, /* GL_POLYGON_OFFSET_FACTOR */ + { 23381, 0x00008037 }, /* GL_POLYGON_OFFSET_FILL */ + { 23404, 0x00002A02 }, /* GL_POLYGON_OFFSET_LINE */ + { 23427, 0x00002A01 }, /* GL_POLYGON_OFFSET_POINT */ + { 23451, 0x00002A00 }, /* GL_POLYGON_OFFSET_UNITS */ + { 23475, 0x00000B41 }, /* GL_POLYGON_SMOOTH */ + { 23493, 0x00000C53 }, /* GL_POLYGON_SMOOTH_HINT */ + { 23516, 0x00000B42 }, /* GL_POLYGON_STIPPLE */ + { 23535, 0x00000010 }, /* GL_POLYGON_STIPPLE_BIT */ + { 23558, 0x00000703 }, /* GL_POLYGON_TOKEN */ + { 23575, 0x00001203 }, /* GL_POSITION */ + { 23587, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */ + { 23619, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI */ + { 23655, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */ + { 23688, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI */ + { 23725, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */ + { 23756, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI */ + { 23791, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */ + { 23823, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI */ + { 23859, 0x000080D2 }, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */ + { 23892, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */ + { 23924, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI */ + { 23960, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */ + { 23993, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI */ + { 24030, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS */ + { 24060, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS_SGI */ + { 24094, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE */ + { 24125, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE_SGI */ + { 24160, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS */ + { 24191, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS_EXT */ + { 24226, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE */ + { 24258, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE_EXT */ + { 24294, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS */ + { 24324, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS_EXT */ + { 24358, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE */ + { 24389, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE_EXT */ + { 24424, 0x000080D1 }, /* GL_POST_CONVOLUTION_COLOR_TABLE */ + { 24456, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS */ + { 24487, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS_EXT */ + { 24522, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE */ + { 24554, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE_EXT */ + { 24590, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS */ + { 24619, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS_EXT */ + { 24652, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE */ + { 24682, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE_EXT */ + { 24716, 0x0000817B }, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */ + { 24755, 0x00008179 }, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */ + { 24788, 0x0000817C }, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */ + { 24828, 0x0000817A }, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */ + { 24862, 0x00008578 }, /* GL_PREVIOUS */ + { 24874, 0x00008578 }, /* GL_PREVIOUS_ARB */ + { 24890, 0x00008578 }, /* GL_PREVIOUS_EXT */ + { 24906, 0x00008577 }, /* GL_PRIMARY_COLOR */ + { 24923, 0x00008577 }, /* GL_PRIMARY_COLOR_ARB */ + { 24944, 0x00008577 }, /* GL_PRIMARY_COLOR_EXT */ + { 24965, 0x000088B0 }, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */ + { 24998, 0x00008805 }, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */ + { 25030, 0x000088AC }, /* GL_PROGRAM_ATTRIBS_ARB */ + { 25053, 0x00008677 }, /* GL_PROGRAM_BINDING_ARB */ + { 25076, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_ARB */ + { 25106, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_NV */ + { 25135, 0x00008874 }, /* GL_PROGRAM_ERROR_STRING_ARB */ + { 25163, 0x00008876 }, /* GL_PROGRAM_FORMAT_ARB */ + { 25185, 0x00008875 }, /* GL_PROGRAM_FORMAT_ASCII_ARB */ + { 25213, 0x000088A0 }, /* GL_PROGRAM_INSTRUCTIONS_ARB */ + { 25241, 0x00008627 }, /* GL_PROGRAM_LENGTH_ARB */ + { 25263, 0x00008627 }, /* GL_PROGRAM_LENGTH_NV */ + { 25284, 0x000088B2 }, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ + { 25324, 0x00008808 }, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ + { 25363, 0x000088AE }, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */ + { 25393, 0x000088A2 }, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ + { 25428, 0x000088AA }, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */ + { 25461, 0x000088A6 }, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */ + { 25495, 0x0000880A }, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ + { 25534, 0x00008809 }, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ + { 25573, 0x00008B40 }, /* GL_PROGRAM_OBJECT_ARB */ + { 25595, 0x000088A8 }, /* GL_PROGRAM_PARAMETERS_ARB */ + { 25621, 0x00008644 }, /* GL_PROGRAM_PARAMETER_NV */ + { 25645, 0x00008647 }, /* GL_PROGRAM_RESIDENT_NV */ + { 25668, 0x00008628 }, /* GL_PROGRAM_STRING_ARB */ + { 25690, 0x00008628 }, /* GL_PROGRAM_STRING_NV */ + { 25711, 0x00008646 }, /* GL_PROGRAM_TARGET_NV */ + { 25732, 0x000088A4 }, /* GL_PROGRAM_TEMPORARIES_ARB */ + { 25759, 0x00008807 }, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */ + { 25791, 0x00008806 }, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */ + { 25823, 0x000088B6 }, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */ + { 25858, 0x00001701 }, /* GL_PROJECTION */ + { 25872, 0x00000BA7 }, /* GL_PROJECTION_MATRIX */ + { 25893, 0x00000BA4 }, /* GL_PROJECTION_STACK_DEPTH */ + { 25919, 0x000080D3 }, /* GL_PROXY_COLOR_TABLE */ + { 25940, 0x00008025 }, /* GL_PROXY_HISTOGRAM */ + { 25959, 0x00008025 }, /* GL_PROXY_HISTOGRAM_EXT */ + { 25982, 0x000080D5 }, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */ + { 26021, 0x000080D4 }, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */ + { 26059, 0x00008063 }, /* GL_PROXY_TEXTURE_1D */ + { 26079, 0x00008C19 }, /* GL_PROXY_TEXTURE_1D_ARRAY_EXT */ + { 26109, 0x00008063 }, /* GL_PROXY_TEXTURE_1D_EXT */ + { 26133, 0x00008064 }, /* GL_PROXY_TEXTURE_2D */ + { 26153, 0x00008C1B }, /* GL_PROXY_TEXTURE_2D_ARRAY_EXT */ + { 26183, 0x00008064 }, /* GL_PROXY_TEXTURE_2D_EXT */ + { 26207, 0x00008070 }, /* GL_PROXY_TEXTURE_3D */ + { 26227, 0x000080BD }, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */ + { 26260, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP */ + { 26286, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP_ARB */ + { 26316, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_ARB */ + { 26347, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_NV */ + { 26377, 0x00002003 }, /* GL_Q */ + { 26382, 0x00001209 }, /* GL_QUADRATIC_ATTENUATION */ + { 26407, 0x00000007 }, /* GL_QUADS */ + { 26416, 0x00008614 }, /* GL_QUAD_MESH_SUN */ + { 26433, 0x00000008 }, /* GL_QUAD_STRIP */ + { 26447, 0x00008864 }, /* GL_QUERY_COUNTER_BITS */ + { 26469, 0x00008864 }, /* GL_QUERY_COUNTER_BITS_ARB */ + { 26495, 0x00008866 }, /* GL_QUERY_RESULT */ + { 26511, 0x00008866 }, /* GL_QUERY_RESULT_ARB */ + { 26531, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE */ + { 26557, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE_ARB */ + { 26587, 0x00002002 }, /* GL_R */ + { 26592, 0x00002A10 }, /* GL_R3_G3_B2 */ + { 26604, 0x00019262 }, /* GL_RASTER_POSITION_UNCLIPPED_IBM */ + { 26637, 0x00000C02 }, /* GL_READ_BUFFER */ + { 26652, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING_EXT */ + { 26684, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER_EXT */ + { 26708, 0x000088B8 }, /* GL_READ_ONLY */ + { 26721, 0x000088B8 }, /* GL_READ_ONLY_ARB */ + { 26738, 0x000088BA }, /* GL_READ_WRITE */ + { 26752, 0x000088BA }, /* GL_READ_WRITE_ARB */ + { 26770, 0x00001903 }, /* GL_RED */ + { 26777, 0x00008016 }, /* GL_REDUCE */ + { 26787, 0x00008016 }, /* GL_REDUCE_EXT */ + { 26801, 0x00000D15 }, /* GL_RED_BIAS */ + { 26813, 0x00000D52 }, /* GL_RED_BITS */ + { 26825, 0x00000D14 }, /* GL_RED_SCALE */ + { 26838, 0x00008512 }, /* GL_REFLECTION_MAP */ + { 26856, 0x00008512 }, /* GL_REFLECTION_MAP_ARB */ + { 26878, 0x00008512 }, /* GL_REFLECTION_MAP_NV */ + { 26899, 0x00001C00 }, /* GL_RENDER */ + { 26909, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_EXT */ + { 26937, 0x00008D41 }, /* GL_RENDERBUFFER_EXT */ + { 26957, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_EXT */ + { 26984, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_EXT */ + { 27020, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_EXT */ + { 27046, 0x00001F01 }, /* GL_RENDERER */ + { 27058, 0x00000C40 }, /* GL_RENDER_MODE */ + { 27073, 0x00002901 }, /* GL_REPEAT */ + { 27083, 0x00001E01 }, /* GL_REPLACE */ + { 27094, 0x00008062 }, /* GL_REPLACE_EXT */ + { 27109, 0x00008153 }, /* GL_REPLICATE_BORDER_HP */ + { 27132, 0x0000803A }, /* GL_RESCALE_NORMAL */ + { 27150, 0x0000803A }, /* GL_RESCALE_NORMAL_EXT */ + { 27172, 0x00000102 }, /* GL_RETURN */ + { 27182, 0x00001907 }, /* GL_RGB */ + { 27189, 0x00008052 }, /* GL_RGB10 */ + { 27198, 0x00008059 }, /* GL_RGB10_A2 */ + { 27210, 0x00008059 }, /* GL_RGB10_A2_EXT */ + { 27226, 0x00008052 }, /* GL_RGB10_EXT */ + { 27239, 0x00008053 }, /* GL_RGB12 */ + { 27248, 0x00008053 }, /* GL_RGB12_EXT */ + { 27261, 0x00008054 }, /* GL_RGB16 */ + { 27270, 0x00008054 }, /* GL_RGB16_EXT */ + { 27283, 0x0000804E }, /* GL_RGB2_EXT */ + { 27295, 0x0000804F }, /* GL_RGB4 */ + { 27303, 0x0000804F }, /* GL_RGB4_EXT */ + { 27315, 0x000083A1 }, /* GL_RGB4_S3TC */ + { 27328, 0x00008050 }, /* GL_RGB5 */ + { 27336, 0x00008057 }, /* GL_RGB5_A1 */ + { 27347, 0x00008057 }, /* GL_RGB5_A1_EXT */ + { 27362, 0x00008050 }, /* GL_RGB5_EXT */ + { 27374, 0x00008051 }, /* GL_RGB8 */ + { 27382, 0x00008051 }, /* GL_RGB8_EXT */ + { 27394, 0x00001908 }, /* GL_RGBA */ + { 27402, 0x0000805A }, /* GL_RGBA12 */ + { 27412, 0x0000805A }, /* GL_RGBA12_EXT */ + { 27426, 0x0000805B }, /* GL_RGBA16 */ + { 27436, 0x0000805B }, /* GL_RGBA16_EXT */ + { 27450, 0x00008055 }, /* GL_RGBA2 */ + { 27459, 0x00008055 }, /* GL_RGBA2_EXT */ + { 27472, 0x00008056 }, /* GL_RGBA4 */ + { 27481, 0x000083A5 }, /* GL_RGBA4_DXT5_S3TC */ + { 27500, 0x00008056 }, /* GL_RGBA4_EXT */ + { 27513, 0x000083A3 }, /* GL_RGBA4_S3TC */ + { 27527, 0x00008058 }, /* GL_RGBA8 */ + { 27536, 0x00008058 }, /* GL_RGBA8_EXT */ + { 27549, 0x000083A4 }, /* GL_RGBA_DXT5_S3TC */ + { 27567, 0x00000C31 }, /* GL_RGBA_MODE */ + { 27580, 0x000083A2 }, /* GL_RGBA_S3TC */ + { 27593, 0x000083A0 }, /* GL_RGB_S3TC */ + { 27605, 0x00008573 }, /* GL_RGB_SCALE */ + { 27618, 0x00008573 }, /* GL_RGB_SCALE_ARB */ + { 27635, 0x00008573 }, /* GL_RGB_SCALE_EXT */ + { 27652, 0x00000407 }, /* GL_RIGHT */ + { 27661, 0x00002000 }, /* GL_S */ + { 27666, 0x00008B5D }, /* GL_SAMPLER_1D */ + { 27680, 0x00008B61 }, /* GL_SAMPLER_1D_SHADOW */ + { 27701, 0x00008B5E }, /* GL_SAMPLER_2D */ + { 27715, 0x00008B62 }, /* GL_SAMPLER_2D_SHADOW */ + { 27736, 0x00008B5F }, /* GL_SAMPLER_3D */ + { 27750, 0x00008B60 }, /* GL_SAMPLER_CUBE */ + { 27766, 0x000080A9 }, /* GL_SAMPLES */ + { 27777, 0x000086B4 }, /* GL_SAMPLES_3DFX */ + { 27793, 0x000080A9 }, /* GL_SAMPLES_ARB */ + { 27808, 0x00008914 }, /* GL_SAMPLES_PASSED */ + { 27826, 0x00008914 }, /* GL_SAMPLES_PASSED_ARB */ + { 27848, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE */ + { 27876, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE_ARB */ + { 27908, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE */ + { 27931, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE_ARB */ + { 27958, 0x000080A8 }, /* GL_SAMPLE_BUFFERS */ + { 27976, 0x000086B3 }, /* GL_SAMPLE_BUFFERS_3DFX */ + { 27999, 0x000080A8 }, /* GL_SAMPLE_BUFFERS_ARB */ + { 28021, 0x000080A0 }, /* GL_SAMPLE_COVERAGE */ + { 28040, 0x000080A0 }, /* GL_SAMPLE_COVERAGE_ARB */ + { 28063, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT */ + { 28089, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT_ARB */ + { 28119, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE */ + { 28144, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE_ARB */ + { 28173, 0x00080000 }, /* GL_SCISSOR_BIT */ + { 28188, 0x00000C10 }, /* GL_SCISSOR_BOX */ + { 28203, 0x00000C11 }, /* GL_SCISSOR_TEST */ + { 28219, 0x0000845E }, /* GL_SECONDARY_COLOR_ARRAY */ + { 28244, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */ + { 28284, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB */ + { 28328, 0x0000845D }, /* GL_SECONDARY_COLOR_ARRAY_POINTER */ + { 28361, 0x0000845A }, /* GL_SECONDARY_COLOR_ARRAY_SIZE */ + { 28391, 0x0000845C }, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */ + { 28423, 0x0000845B }, /* GL_SECONDARY_COLOR_ARRAY_TYPE */ + { 28453, 0x00001C02 }, /* GL_SELECT */ + { 28463, 0x00000DF3 }, /* GL_SELECTION_BUFFER_POINTER */ + { 28491, 0x00000DF4 }, /* GL_SELECTION_BUFFER_SIZE */ + { 28516, 0x00008012 }, /* GL_SEPARABLE_2D */ + { 28532, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR */ + { 28559, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR_EXT */ + { 28590, 0x0000150F }, /* GL_SET */ + { 28597, 0x00008B48 }, /* GL_SHADER_OBJECT_ARB */ + { 28618, 0x00008B88 }, /* GL_SHADER_SOURCE_LENGTH */ + { 28642, 0x00008B4F }, /* GL_SHADER_TYPE */ + { 28657, 0x00000B54 }, /* GL_SHADE_MODEL */ + { 28672, 0x00008B8C }, /* GL_SHADING_LANGUAGE_VERSION */ + { 28700, 0x000080BF }, /* GL_SHADOW_AMBIENT_SGIX */ + { 28723, 0x000081FB }, /* GL_SHARED_TEXTURE_PALETTE_EXT */ + { 28753, 0x00001601 }, /* GL_SHININESS */ + { 28766, 0x00001402 }, /* GL_SHORT */ + { 28775, 0x000081F9 }, /* GL_SINGLE_COLOR */ + { 28791, 0x000081F9 }, /* GL_SINGLE_COLOR_EXT */ + { 28811, 0x000085CC }, /* GL_SLICE_ACCUM_SUN */ + { 28830, 0x00001D01 }, /* GL_SMOOTH */ + { 28840, 0x00000B23 }, /* GL_SMOOTH_LINE_WIDTH_GRANULARITY */ + { 28873, 0x00000B22 }, /* GL_SMOOTH_LINE_WIDTH_RANGE */ + { 28900, 0x00000B13 }, /* GL_SMOOTH_POINT_SIZE_GRANULARITY */ + { 28933, 0x00000B12 }, /* GL_SMOOTH_POINT_SIZE_RANGE */ + { 28960, 0x00008588 }, /* GL_SOURCE0_ALPHA */ + { 28977, 0x00008588 }, /* GL_SOURCE0_ALPHA_ARB */ + { 28998, 0x00008588 }, /* GL_SOURCE0_ALPHA_EXT */ + { 29019, 0x00008580 }, /* GL_SOURCE0_RGB */ + { 29034, 0x00008580 }, /* GL_SOURCE0_RGB_ARB */ + { 29053, 0x00008580 }, /* GL_SOURCE0_RGB_EXT */ + { 29072, 0x00008589 }, /* GL_SOURCE1_ALPHA */ + { 29089, 0x00008589 }, /* GL_SOURCE1_ALPHA_ARB */ + { 29110, 0x00008589 }, /* GL_SOURCE1_ALPHA_EXT */ + { 29131, 0x00008581 }, /* GL_SOURCE1_RGB */ + { 29146, 0x00008581 }, /* GL_SOURCE1_RGB_ARB */ + { 29165, 0x00008581 }, /* GL_SOURCE1_RGB_EXT */ + { 29184, 0x0000858A }, /* GL_SOURCE2_ALPHA */ + { 29201, 0x0000858A }, /* GL_SOURCE2_ALPHA_ARB */ + { 29222, 0x0000858A }, /* GL_SOURCE2_ALPHA_EXT */ + { 29243, 0x00008582 }, /* GL_SOURCE2_RGB */ + { 29258, 0x00008582 }, /* GL_SOURCE2_RGB_ARB */ + { 29277, 0x00008582 }, /* GL_SOURCE2_RGB_EXT */ + { 29296, 0x0000858B }, /* GL_SOURCE3_ALPHA_NV */ + { 29316, 0x00008583 }, /* GL_SOURCE3_RGB_NV */ + { 29334, 0x00001202 }, /* GL_SPECULAR */ + { 29346, 0x00002402 }, /* GL_SPHERE_MAP */ + { 29360, 0x00001206 }, /* GL_SPOT_CUTOFF */ + { 29375, 0x00001204 }, /* GL_SPOT_DIRECTION */ + { 29393, 0x00001205 }, /* GL_SPOT_EXPONENT */ + { 29410, 0x00008588 }, /* GL_SRC0_ALPHA */ + { 29424, 0x00008580 }, /* GL_SRC0_RGB */ + { 29436, 0x00008589 }, /* GL_SRC1_ALPHA */ + { 29450, 0x00008581 }, /* GL_SRC1_RGB */ + { 29462, 0x0000858A }, /* GL_SRC2_ALPHA */ + { 29476, 0x00008582 }, /* GL_SRC2_RGB */ + { 29488, 0x00000302 }, /* GL_SRC_ALPHA */ + { 29501, 0x00000308 }, /* GL_SRC_ALPHA_SATURATE */ + { 29523, 0x00000300 }, /* GL_SRC_COLOR */ + { 29536, 0x00000503 }, /* GL_STACK_OVERFLOW */ + { 29554, 0x00000504 }, /* GL_STACK_UNDERFLOW */ + { 29573, 0x000088E6 }, /* GL_STATIC_COPY */ + { 29588, 0x000088E6 }, /* GL_STATIC_COPY_ARB */ + { 29607, 0x000088E4 }, /* GL_STATIC_DRAW */ + { 29622, 0x000088E4 }, /* GL_STATIC_DRAW_ARB */ + { 29641, 0x000088E5 }, /* GL_STATIC_READ */ + { 29656, 0x000088E5 }, /* GL_STATIC_READ_ARB */ + { 29675, 0x00001802 }, /* GL_STENCIL */ + { 29686, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_EXT */ + { 29712, 0x00008801 }, /* GL_STENCIL_BACK_FAIL */ + { 29733, 0x00008800 }, /* GL_STENCIL_BACK_FUNC */ + { 29754, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */ + { 29786, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */ + { 29818, 0x00008CA3 }, /* GL_STENCIL_BACK_REF */ + { 29838, 0x00008CA4 }, /* GL_STENCIL_BACK_VALUE_MASK */ + { 29865, 0x00008CA5 }, /* GL_STENCIL_BACK_WRITEMASK */ + { 29891, 0x00000D57 }, /* GL_STENCIL_BITS */ + { 29907, 0x00000400 }, /* GL_STENCIL_BUFFER_BIT */ + { 29929, 0x00000B91 }, /* GL_STENCIL_CLEAR_VALUE */ + { 29952, 0x00000B94 }, /* GL_STENCIL_FAIL */ + { 29968, 0x00000B92 }, /* GL_STENCIL_FUNC */ + { 29984, 0x00001901 }, /* GL_STENCIL_INDEX */ + { 30001, 0x00008D49 }, /* GL_STENCIL_INDEX16_EXT */ + { 30024, 0x00008D46 }, /* GL_STENCIL_INDEX1_EXT */ + { 30046, 0x00008D47 }, /* GL_STENCIL_INDEX4_EXT */ + { 30068, 0x00008D48 }, /* GL_STENCIL_INDEX8_EXT */ + { 30090, 0x00008D45 }, /* GL_STENCIL_INDEX_EXT */ + { 30111, 0x00000B95 }, /* GL_STENCIL_PASS_DEPTH_FAIL */ + { 30138, 0x00000B96 }, /* GL_STENCIL_PASS_DEPTH_PASS */ + { 30165, 0x00000B97 }, /* GL_STENCIL_REF */ + { 30180, 0x00000B90 }, /* GL_STENCIL_TEST */ + { 30196, 0x00008910 }, /* GL_STENCIL_TEST_TWO_SIDE_EXT */ + { 30225, 0x00000B93 }, /* GL_STENCIL_VALUE_MASK */ + { 30247, 0x00000B98 }, /* GL_STENCIL_WRITEMASK */ + { 30268, 0x00000C33 }, /* GL_STEREO */ + { 30278, 0x000088E2 }, /* GL_STREAM_COPY */ + { 30293, 0x000088E2 }, /* GL_STREAM_COPY_ARB */ + { 30312, 0x000088E0 }, /* GL_STREAM_DRAW */ + { 30327, 0x000088E0 }, /* GL_STREAM_DRAW_ARB */ + { 30346, 0x000088E1 }, /* GL_STREAM_READ */ + { 30361, 0x000088E1 }, /* GL_STREAM_READ_ARB */ + { 30380, 0x00000D50 }, /* GL_SUBPIXEL_BITS */ + { 30397, 0x000084E7 }, /* GL_SUBTRACT */ + { 30409, 0x000084E7 }, /* GL_SUBTRACT_ARB */ + { 30425, 0x00002001 }, /* GL_T */ + { 30430, 0x00002A2A }, /* GL_T2F_C3F_V3F */ + { 30445, 0x00002A2C }, /* GL_T2F_C4F_N3F_V3F */ + { 30464, 0x00002A29 }, /* GL_T2F_C4UB_V3F */ + { 30480, 0x00002A2B }, /* GL_T2F_N3F_V3F */ + { 30495, 0x00002A27 }, /* GL_T2F_V3F */ + { 30506, 0x00002A2D }, /* GL_T4F_C4F_N3F_V4F */ + { 30525, 0x00002A28 }, /* GL_T4F_V4F */ + { 30536, 0x00008031 }, /* GL_TABLE_TOO_LARGE_EXT */ + { 30559, 0x00001702 }, /* GL_TEXTURE */ + { 30570, 0x000084C0 }, /* GL_TEXTURE0 */ + { 30582, 0x000084C0 }, /* GL_TEXTURE0_ARB */ + { 30598, 0x000084C1 }, /* GL_TEXTURE1 */ + { 30610, 0x000084CA }, /* GL_TEXTURE10 */ + { 30623, 0x000084CA }, /* GL_TEXTURE10_ARB */ + { 30640, 0x000084CB }, /* GL_TEXTURE11 */ + { 30653, 0x000084CB }, /* GL_TEXTURE11_ARB */ + { 30670, 0x000084CC }, /* GL_TEXTURE12 */ + { 30683, 0x000084CC }, /* GL_TEXTURE12_ARB */ + { 30700, 0x000084CD }, /* GL_TEXTURE13 */ + { 30713, 0x000084CD }, /* GL_TEXTURE13_ARB */ + { 30730, 0x000084CE }, /* GL_TEXTURE14 */ + { 30743, 0x000084CE }, /* GL_TEXTURE14_ARB */ + { 30760, 0x000084CF }, /* GL_TEXTURE15 */ + { 30773, 0x000084CF }, /* GL_TEXTURE15_ARB */ + { 30790, 0x000084D0 }, /* GL_TEXTURE16 */ + { 30803, 0x000084D0 }, /* GL_TEXTURE16_ARB */ + { 30820, 0x000084D1 }, /* GL_TEXTURE17 */ + { 30833, 0x000084D1 }, /* GL_TEXTURE17_ARB */ + { 30850, 0x000084D2 }, /* GL_TEXTURE18 */ + { 30863, 0x000084D2 }, /* GL_TEXTURE18_ARB */ + { 30880, 0x000084D3 }, /* GL_TEXTURE19 */ + { 30893, 0x000084D3 }, /* GL_TEXTURE19_ARB */ + { 30910, 0x000084C1 }, /* GL_TEXTURE1_ARB */ + { 30926, 0x000084C2 }, /* GL_TEXTURE2 */ + { 30938, 0x000084D4 }, /* GL_TEXTURE20 */ + { 30951, 0x000084D4 }, /* GL_TEXTURE20_ARB */ + { 30968, 0x000084D5 }, /* GL_TEXTURE21 */ + { 30981, 0x000084D5 }, /* GL_TEXTURE21_ARB */ + { 30998, 0x000084D6 }, /* GL_TEXTURE22 */ + { 31011, 0x000084D6 }, /* GL_TEXTURE22_ARB */ + { 31028, 0x000084D7 }, /* GL_TEXTURE23 */ + { 31041, 0x000084D7 }, /* GL_TEXTURE23_ARB */ + { 31058, 0x000084D8 }, /* GL_TEXTURE24 */ + { 31071, 0x000084D8 }, /* GL_TEXTURE24_ARB */ + { 31088, 0x000084D9 }, /* GL_TEXTURE25 */ + { 31101, 0x000084D9 }, /* GL_TEXTURE25_ARB */ + { 31118, 0x000084DA }, /* GL_TEXTURE26 */ + { 31131, 0x000084DA }, /* GL_TEXTURE26_ARB */ + { 31148, 0x000084DB }, /* GL_TEXTURE27 */ + { 31161, 0x000084DB }, /* GL_TEXTURE27_ARB */ + { 31178, 0x000084DC }, /* GL_TEXTURE28 */ + { 31191, 0x000084DC }, /* GL_TEXTURE28_ARB */ + { 31208, 0x000084DD }, /* GL_TEXTURE29 */ + { 31221, 0x000084DD }, /* GL_TEXTURE29_ARB */ + { 31238, 0x000084C2 }, /* GL_TEXTURE2_ARB */ + { 31254, 0x000084C3 }, /* GL_TEXTURE3 */ + { 31266, 0x000084DE }, /* GL_TEXTURE30 */ + { 31279, 0x000084DE }, /* GL_TEXTURE30_ARB */ + { 31296, 0x000084DF }, /* GL_TEXTURE31 */ + { 31309, 0x000084DF }, /* GL_TEXTURE31_ARB */ + { 31326, 0x000084C3 }, /* GL_TEXTURE3_ARB */ + { 31342, 0x000084C4 }, /* GL_TEXTURE4 */ + { 31354, 0x000084C4 }, /* GL_TEXTURE4_ARB */ + { 31370, 0x000084C5 }, /* GL_TEXTURE5 */ + { 31382, 0x000084C5 }, /* GL_TEXTURE5_ARB */ + { 31398, 0x000084C6 }, /* GL_TEXTURE6 */ + { 31410, 0x000084C6 }, /* GL_TEXTURE6_ARB */ + { 31426, 0x000084C7 }, /* GL_TEXTURE7 */ + { 31438, 0x000084C7 }, /* GL_TEXTURE7_ARB */ + { 31454, 0x000084C8 }, /* GL_TEXTURE8 */ + { 31466, 0x000084C8 }, /* GL_TEXTURE8_ARB */ + { 31482, 0x000084C9 }, /* GL_TEXTURE9 */ + { 31494, 0x000084C9 }, /* GL_TEXTURE9_ARB */ + { 31510, 0x00000DE0 }, /* GL_TEXTURE_1D */ + { 31524, 0x00008C18 }, /* GL_TEXTURE_1D_ARRAY_EXT */ + { 31548, 0x00000DE1 }, /* GL_TEXTURE_2D */ + { 31562, 0x00008C1A }, /* GL_TEXTURE_2D_ARRAY_EXT */ + { 31586, 0x0000806F }, /* GL_TEXTURE_3D */ + { 31600, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE */ + { 31622, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE_EXT */ + { 31648, 0x0000813C }, /* GL_TEXTURE_BASE_LEVEL */ + { 31670, 0x00008068 }, /* GL_TEXTURE_BINDING_1D */ + { 31692, 0x00008C1C }, /* GL_TEXTURE_BINDING_1D_ARRAY_EXT */ + { 31724, 0x00008069 }, /* GL_TEXTURE_BINDING_2D */ + { 31746, 0x00008C1D }, /* GL_TEXTURE_BINDING_2D_ARRAY_EXT */ + { 31778, 0x0000806A }, /* GL_TEXTURE_BINDING_3D */ + { 31800, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP */ + { 31828, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_ARB */ + { 31860, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_ARB */ + { 31893, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_NV */ + { 31925, 0x00040000 }, /* GL_TEXTURE_BIT */ + { 31940, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE */ + { 31961, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE_EXT */ + { 31986, 0x00001005 }, /* GL_TEXTURE_BORDER */ + { 32004, 0x00001004 }, /* GL_TEXTURE_BORDER_COLOR */ + { 32028, 0x00008171 }, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */ + { 32059, 0x00008176 }, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */ + { 32089, 0x00008172 }, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */ + { 32119, 0x00008175 }, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */ + { 32154, 0x00008173 }, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */ + { 32185, 0x00008174 }, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */ + { 32223, 0x000080BC }, /* GL_TEXTURE_COLOR_TABLE_SGI */ + { 32250, 0x000081EF }, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */ + { 32282, 0x000080BF }, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */ + { 32316, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC */ + { 32340, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC_ARB */ + { 32368, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE */ + { 32392, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE_ARB */ + { 32420, 0x0000819B }, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */ + { 32453, 0x0000819A }, /* GL_TEXTURE_COMPARE_SGIX */ + { 32477, 0x00001003 }, /* GL_TEXTURE_COMPONENTS */ + { 32499, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED */ + { 32521, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED_ARB */ + { 32547, 0x000086A3 }, /* GL_TEXTURE_COMPRESSED_FORMATS_ARB */ + { 32581, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */ + { 32614, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB */ + { 32651, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT */ + { 32679, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT_ARB */ + { 32711, 0x00008078 }, /* GL_TEXTURE_COORD_ARRAY */ + { 32734, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */ + { 32772, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB */ + { 32814, 0x00008092 }, /* GL_TEXTURE_COORD_ARRAY_POINTER */ + { 32845, 0x00008088 }, /* GL_TEXTURE_COORD_ARRAY_SIZE */ + { 32873, 0x0000808A }, /* GL_TEXTURE_COORD_ARRAY_STRIDE */ + { 32903, 0x00008089 }, /* GL_TEXTURE_COORD_ARRAY_TYPE */ + { 32931, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP */ + { 32951, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_ARB */ + { 32975, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */ + { 33006, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB */ + { 33041, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */ + { 33072, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB */ + { 33107, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */ + { 33138, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB */ + { 33173, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */ + { 33204, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB */ + { 33239, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */ + { 33270, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB */ + { 33305, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */ + { 33336, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB */ + { 33371, 0x00008071 }, /* GL_TEXTURE_DEPTH */ + { 33388, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE */ + { 33410, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE_ARB */ + { 33436, 0x00002300 }, /* GL_TEXTURE_ENV */ + { 33451, 0x00002201 }, /* GL_TEXTURE_ENV_COLOR */ + { 33472, 0x00002200 }, /* GL_TEXTURE_ENV_MODE */ + { 33492, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL */ + { 33518, 0x00002500 }, /* GL_TEXTURE_GEN_MODE */ + { 33538, 0x00000C63 }, /* GL_TEXTURE_GEN_Q */ + { 33555, 0x00000C62 }, /* GL_TEXTURE_GEN_R */ + { 33572, 0x00000C60 }, /* GL_TEXTURE_GEN_S */ + { 33589, 0x00000C61 }, /* GL_TEXTURE_GEN_T */ + { 33606, 0x0000819D }, /* GL_TEXTURE_GEQUAL_R_SGIX */ + { 33631, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE */ + { 33653, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE_EXT */ + { 33679, 0x00001001 }, /* GL_TEXTURE_HEIGHT */ + { 33697, 0x000080ED }, /* GL_TEXTURE_INDEX_SIZE_EXT */ + { 33723, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE */ + { 33749, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE_EXT */ + { 33779, 0x00001003 }, /* GL_TEXTURE_INTERNAL_FORMAT */ + { 33806, 0x0000819C }, /* GL_TEXTURE_LEQUAL_R_SGIX */ + { 33831, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS */ + { 33851, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS_EXT */ + { 33875, 0x00008190 }, /* GL_TEXTURE_LOD_BIAS_R_SGIX */ + { 33902, 0x0000818E }, /* GL_TEXTURE_LOD_BIAS_S_SGIX */ + { 33929, 0x0000818F }, /* GL_TEXTURE_LOD_BIAS_T_SGIX */ + { 33956, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE */ + { 33982, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE_EXT */ + { 34012, 0x00002800 }, /* GL_TEXTURE_MAG_FILTER */ + { 34034, 0x00000BA8 }, /* GL_TEXTURE_MATRIX */ + { 34052, 0x000084FE }, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */ + { 34082, 0x0000836B }, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */ + { 34110, 0x00008369 }, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */ + { 34138, 0x0000836A }, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */ + { 34166, 0x0000813D }, /* GL_TEXTURE_MAX_LEVEL */ + { 34187, 0x0000813B }, /* GL_TEXTURE_MAX_LOD */ + { 34206, 0x00002801 }, /* GL_TEXTURE_MIN_FILTER */ + { 34228, 0x0000813A }, /* GL_TEXTURE_MIN_LOD */ + { 34247, 0x00008066 }, /* GL_TEXTURE_PRIORITY */ + { 34267, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_ARB */ + { 34292, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_NV */ + { 34316, 0x0000805C }, /* GL_TEXTURE_RED_SIZE */ + { 34336, 0x0000805C }, /* GL_TEXTURE_RED_SIZE_EXT */ + { 34360, 0x00008067 }, /* GL_TEXTURE_RESIDENT */ + { 34380, 0x00000BA5 }, /* GL_TEXTURE_STACK_DEPTH */ + { 34403, 0x00008065 }, /* GL_TEXTURE_TOO_LARGE_EXT */ + { 34428, 0x0000888F }, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */ + { 34462, 0x00001000 }, /* GL_TEXTURE_WIDTH */ + { 34479, 0x00008072 }, /* GL_TEXTURE_WRAP_R */ + { 34497, 0x00002802 }, /* GL_TEXTURE_WRAP_S */ + { 34515, 0x00002803 }, /* GL_TEXTURE_WRAP_T */ + { 34533, 0x000088BF }, /* GL_TIME_ELAPSED_EXT */ + { 34553, 0x00008648 }, /* GL_TRACK_MATRIX_NV */ + { 34572, 0x00008649 }, /* GL_TRACK_MATRIX_TRANSFORM_NV */ + { 34601, 0x00001000 }, /* GL_TRANSFORM_BIT */ + { 34618, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX */ + { 34644, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX_ARB */ + { 34674, 0x000088B7 }, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */ + { 34706, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX */ + { 34736, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX_ARB */ + { 34770, 0x0000862C }, /* GL_TRANSPOSE_NV */ + { 34786, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX */ + { 34817, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX_ARB */ + { 34852, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX */ + { 34880, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX_ARB */ + { 34912, 0x00000004 }, /* GL_TRIANGLES */ + { 34925, 0x00000006 }, /* GL_TRIANGLE_FAN */ + { 34941, 0x00008615 }, /* GL_TRIANGLE_MESH_SUN */ + { 34962, 0x00000005 }, /* GL_TRIANGLE_STRIP */ + { 34980, 0x00000001 }, /* GL_TRUE */ + { 34988, 0x00000CF5 }, /* GL_UNPACK_ALIGNMENT */ + { 35008, 0x0000806E }, /* GL_UNPACK_IMAGE_HEIGHT */ + { 35031, 0x00000CF1 }, /* GL_UNPACK_LSB_FIRST */ + { 35051, 0x00000CF2 }, /* GL_UNPACK_ROW_LENGTH */ + { 35072, 0x0000806D }, /* GL_UNPACK_SKIP_IMAGES */ + { 35094, 0x00000CF4 }, /* GL_UNPACK_SKIP_PIXELS */ + { 35116, 0x00000CF3 }, /* GL_UNPACK_SKIP_ROWS */ + { 35136, 0x00000CF0 }, /* GL_UNPACK_SWAP_BYTES */ + { 35157, 0x00001401 }, /* GL_UNSIGNED_BYTE */ + { 35174, 0x00008362 }, /* GL_UNSIGNED_BYTE_2_3_3_REV */ + { 35201, 0x00008032 }, /* GL_UNSIGNED_BYTE_3_3_2 */ + { 35224, 0x00001405 }, /* GL_UNSIGNED_INT */ + { 35240, 0x00008036 }, /* GL_UNSIGNED_INT_10_10_10_2 */ + { 35267, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_NV */ + { 35291, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV */ + { 35322, 0x00008035 }, /* GL_UNSIGNED_INT_8_8_8_8 */ + { 35346, 0x00008367 }, /* GL_UNSIGNED_INT_8_8_8_8_REV */ + { 35374, 0x00001403 }, /* GL_UNSIGNED_SHORT */ + { 35392, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */ + { 35422, 0x00008033 }, /* GL_UNSIGNED_SHORT_4_4_4_4 */ + { 35448, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */ + { 35478, 0x00008034 }, /* GL_UNSIGNED_SHORT_5_5_5_1 */ + { 35504, 0x00008363 }, /* GL_UNSIGNED_SHORT_5_6_5 */ + { 35528, 0x00008364 }, /* GL_UNSIGNED_SHORT_5_6_5_REV */ + { 35556, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_APPLE */ + { 35584, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_MESA */ + { 35611, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */ + { 35643, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_MESA */ + { 35674, 0x00008CA2 }, /* GL_UPPER_LEFT */ + { 35688, 0x00002A20 }, /* GL_V2F */ + { 35695, 0x00002A21 }, /* GL_V3F */ + { 35702, 0x00008B83 }, /* GL_VALIDATE_STATUS */ + { 35721, 0x00001F00 }, /* GL_VENDOR */ + { 35731, 0x00001F02 }, /* GL_VERSION */ + { 35742, 0x00008074 }, /* GL_VERTEX_ARRAY */ + { 35758, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING_APPLE */ + { 35788, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING */ + { 35819, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING_ARB */ + { 35854, 0x0000808E }, /* GL_VERTEX_ARRAY_POINTER */ + { 35878, 0x0000807A }, /* GL_VERTEX_ARRAY_SIZE */ + { 35899, 0x0000807C }, /* GL_VERTEX_ARRAY_STRIDE */ + { 35922, 0x0000807B }, /* GL_VERTEX_ARRAY_TYPE */ + { 35943, 0x00008650 }, /* GL_VERTEX_ATTRIB_ARRAY0_NV */ + { 35970, 0x0000865A }, /* GL_VERTEX_ATTRIB_ARRAY10_NV */ + { 35998, 0x0000865B }, /* GL_VERTEX_ATTRIB_ARRAY11_NV */ + { 36026, 0x0000865C }, /* GL_VERTEX_ATTRIB_ARRAY12_NV */ + { 36054, 0x0000865D }, /* GL_VERTEX_ATTRIB_ARRAY13_NV */ + { 36082, 0x0000865E }, /* GL_VERTEX_ATTRIB_ARRAY14_NV */ + { 36110, 0x0000865F }, /* GL_VERTEX_ATTRIB_ARRAY15_NV */ + { 36138, 0x00008651 }, /* GL_VERTEX_ATTRIB_ARRAY1_NV */ + { 36165, 0x00008652 }, /* GL_VERTEX_ATTRIB_ARRAY2_NV */ + { 36192, 0x00008653 }, /* GL_VERTEX_ATTRIB_ARRAY3_NV */ + { 36219, 0x00008654 }, /* GL_VERTEX_ATTRIB_ARRAY4_NV */ + { 36246, 0x00008655 }, /* GL_VERTEX_ATTRIB_ARRAY5_NV */ + { 36273, 0x00008656 }, /* GL_VERTEX_ATTRIB_ARRAY6_NV */ + { 36300, 0x00008657 }, /* GL_VERTEX_ATTRIB_ARRAY7_NV */ + { 36327, 0x00008658 }, /* GL_VERTEX_ATTRIB_ARRAY8_NV */ + { 36354, 0x00008659 }, /* GL_VERTEX_ATTRIB_ARRAY9_NV */ + { 36381, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */ + { 36419, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB */ + { 36461, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */ + { 36492, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB */ + { 36527, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */ + { 36561, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB */ + { 36599, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */ + { 36630, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB */ + { 36665, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */ + { 36693, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB */ + { 36725, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */ + { 36755, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB */ + { 36789, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */ + { 36817, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB */ + { 36849, 0x000086A7 }, /* GL_VERTEX_BLEND_ARB */ + { 36869, 0x00008620 }, /* GL_VERTEX_PROGRAM_ARB */ + { 36891, 0x0000864A }, /* GL_VERTEX_PROGRAM_BINDING_NV */ + { 36920, 0x00008620 }, /* GL_VERTEX_PROGRAM_NV */ + { 36941, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE */ + { 36970, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_ARB */ + { 37003, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_NV */ + { 37035, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE */ + { 37062, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_ARB */ + { 37093, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_NV */ + { 37123, 0x00008B31 }, /* GL_VERTEX_SHADER */ + { 37140, 0x00008B31 }, /* GL_VERTEX_SHADER_ARB */ + { 37161, 0x00008621 }, /* GL_VERTEX_STATE_PROGRAM_NV */ + { 37188, 0x00000BA2 }, /* GL_VIEWPORT */ + { 37200, 0x00000800 }, /* GL_VIEWPORT_BIT */ + { 37216, 0x000086AD }, /* GL_WEIGHT_ARRAY_ARB */ + { 37236, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */ + { 37267, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB */ + { 37302, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_ARB */ + { 37330, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_ARB */ + { 37355, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_ARB */ + { 37382, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_ARB */ + { 37407, 0x000086A6 }, /* GL_WEIGHT_SUM_UNITY_ARB */ + { 37431, 0x000081D4 }, /* GL_WRAP_BORDER_SUN */ + { 37450, 0x000088B9 }, /* GL_WRITE_ONLY */ + { 37464, 0x000088B9 }, /* GL_WRITE_ONLY_ARB */ + { 37482, 0x00001506 }, /* GL_XOR */ + { 37489, 0x000085B9 }, /* GL_YCBCR_422_APPLE */ + { 37508, 0x00008757 }, /* GL_YCBCR_MESA */ + { 37522, 0x00000000 }, /* GL_ZERO */ + { 37530, 0x00000D16 }, /* GL_ZOOM_X */ + { 37540, 0x00000D17 }, /* GL_ZOOM_Y */ }; -static const unsigned reduced_enums[1277] = +static const unsigned reduced_enums[1284] = { - 435, /* GL_FALSE */ - 643, /* GL_LINES */ - 645, /* GL_LINE_LOOP */ - 652, /* GL_LINE_STRIP */ - 1628, /* GL_TRIANGLES */ - 1631, /* GL_TRIANGLE_STRIP */ - 1629, /* GL_TRIANGLE_FAN */ - 1206, /* GL_QUADS */ - 1208, /* GL_QUAD_STRIP */ - 1096, /* GL_POLYGON */ - 1108, /* GL_POLYGON_STIPPLE_BIT */ - 1061, /* GL_PIXEL_MODE_BIT */ - 630, /* GL_LIGHTING_BIT */ - 457, /* GL_FOG_BIT */ + 436, /* GL_FALSE */ + 645, /* GL_LINES */ + 647, /* GL_LINE_LOOP */ + 654, /* GL_LINE_STRIP */ + 1637, /* GL_TRIANGLES */ + 1640, /* GL_TRIANGLE_STRIP */ + 1638, /* GL_TRIANGLE_FAN */ + 1211, /* GL_QUADS */ + 1213, /* GL_QUAD_STRIP */ + 1099, /* GL_POLYGON */ + 1111, /* GL_POLYGON_STIPPLE_BIT */ + 1064, /* GL_PIXEL_MODE_BIT */ + 632, /* GL_LIGHTING_BIT */ + 458, /* GL_FOG_BIT */ 8, /* GL_ACCUM */ - 662, /* GL_LOAD */ - 1248, /* GL_RETURN */ - 934, /* GL_MULT */ + 664, /* GL_LOAD */ + 1253, /* GL_RETURN */ + 937, /* GL_MULT */ 23, /* GL_ADD */ - 950, /* GL_NEVER */ - 620, /* GL_LESS */ - 425, /* GL_EQUAL */ - 619, /* GL_LEQUAL */ - 545, /* GL_GREATER */ - 965, /* GL_NOTEQUAL */ - 520, /* GL_GEQUAL */ + 953, /* GL_NEVER */ + 622, /* GL_LESS */ + 426, /* GL_EQUAL */ + 621, /* GL_LEQUAL */ + 547, /* GL_GREATER */ + 968, /* GL_NOTEQUAL */ + 522, /* GL_GEQUAL */ 46, /* GL_ALWAYS */ - 1381, /* GL_SRC_COLOR */ - 994, /* GL_ONE_MINUS_SRC_COLOR */ - 1379, /* GL_SRC_ALPHA */ - 993, /* GL_ONE_MINUS_SRC_ALPHA */ - 405, /* GL_DST_ALPHA */ - 991, /* GL_ONE_MINUS_DST_ALPHA */ - 406, /* GL_DST_COLOR */ - 992, /* GL_ONE_MINUS_DST_COLOR */ - 1380, /* GL_SRC_ALPHA_SATURATE */ - 508, /* GL_FRONT_LEFT */ - 509, /* GL_FRONT_RIGHT */ + 1386, /* GL_SRC_COLOR */ + 997, /* GL_ONE_MINUS_SRC_COLOR */ + 1384, /* GL_SRC_ALPHA */ + 996, /* GL_ONE_MINUS_SRC_ALPHA */ + 406, /* GL_DST_ALPHA */ + 994, /* GL_ONE_MINUS_DST_ALPHA */ + 407, /* GL_DST_COLOR */ + 995, /* GL_ONE_MINUS_DST_COLOR */ + 1385, /* GL_SRC_ALPHA_SATURATE */ + 510, /* GL_FRONT_LEFT */ + 511, /* GL_FRONT_RIGHT */ 69, /* GL_BACK_LEFT */ 70, /* GL_BACK_RIGHT */ - 505, /* GL_FRONT */ + 507, /* GL_FRONT */ 68, /* GL_BACK */ - 618, /* GL_LEFT */ - 1288, /* GL_RIGHT */ - 506, /* GL_FRONT_AND_BACK */ + 620, /* GL_LEFT */ + 1293, /* GL_RIGHT */ + 508, /* GL_FRONT_AND_BACK */ 63, /* GL_AUX0 */ 64, /* GL_AUX1 */ 65, /* GL_AUX2 */ 66, /* GL_AUX3 */ - 610, /* GL_INVALID_ENUM */ - 613, /* GL_INVALID_VALUE */ - 612, /* GL_INVALID_OPERATION */ - 1382, /* GL_STACK_OVERFLOW */ - 1383, /* GL_STACK_UNDERFLOW */ - 1019, /* GL_OUT_OF_MEMORY */ - 611, /* GL_INVALID_FRAMEBUFFER_OPERATION_EXT */ + 612, /* GL_INVALID_ENUM */ + 615, /* GL_INVALID_VALUE */ + 614, /* GL_INVALID_OPERATION */ + 1387, /* GL_STACK_OVERFLOW */ + 1388, /* GL_STACK_UNDERFLOW */ + 1022, /* GL_OUT_OF_MEMORY */ + 613, /* GL_INVALID_FRAMEBUFFER_OPERATION_EXT */ 0, /* GL_2D */ 2, /* GL_3D */ 3, /* GL_3D_COLOR */ 4, /* GL_3D_COLOR_TEXTURE */ 6, /* GL_4D_COLOR_TEXTURE */ - 1039, /* GL_PASS_THROUGH_TOKEN */ - 1095, /* GL_POINT_TOKEN */ - 653, /* GL_LINE_TOKEN */ - 1109, /* GL_POLYGON_TOKEN */ + 1042, /* GL_PASS_THROUGH_TOKEN */ + 1098, /* GL_POINT_TOKEN */ + 655, /* GL_LINE_TOKEN */ + 1112, /* GL_POLYGON_TOKEN */ 74, /* GL_BITMAP_TOKEN */ - 404, /* GL_DRAW_PIXEL_TOKEN */ - 270, /* GL_COPY_PIXEL_TOKEN */ - 646, /* GL_LINE_RESET_TOKEN */ - 428, /* GL_EXP */ - 429, /* GL_EXP2 */ - 303, /* GL_CW */ + 405, /* GL_DRAW_PIXEL_TOKEN */ + 271, /* GL_COPY_PIXEL_TOKEN */ + 648, /* GL_LINE_RESET_TOKEN */ + 429, /* GL_EXP */ + 430, /* GL_EXP2 */ + 304, /* GL_CW */ 116, /* GL_CCW */ 137, /* GL_COEFF */ - 1016, /* GL_ORDER */ - 343, /* GL_DOMAIN */ - 278, /* GL_CURRENT_COLOR */ - 281, /* GL_CURRENT_INDEX */ - 287, /* GL_CURRENT_NORMAL */ - 299, /* GL_CURRENT_TEXTURE_COORDS */ - 292, /* GL_CURRENT_RASTER_COLOR */ - 294, /* GL_CURRENT_RASTER_INDEX */ - 297, /* GL_CURRENT_RASTER_TEXTURE_COORDS */ - 295, /* GL_CURRENT_RASTER_POSITION */ - 296, /* GL_CURRENT_RASTER_POSITION_VALID */ - 293, /* GL_CURRENT_RASTER_DISTANCE */ - 1088, /* GL_POINT_SMOOTH */ - 1077, /* GL_POINT_SIZE */ - 1087, /* GL_POINT_SIZE_RANGE */ - 1078, /* GL_POINT_SIZE_GRANULARITY */ - 647, /* GL_LINE_SMOOTH */ - 654, /* GL_LINE_WIDTH */ - 656, /* GL_LINE_WIDTH_RANGE */ - 655, /* GL_LINE_WIDTH_GRANULARITY */ - 649, /* GL_LINE_STIPPLE */ - 650, /* GL_LINE_STIPPLE_PATTERN */ - 651, /* GL_LINE_STIPPLE_REPEAT */ - 661, /* GL_LIST_MODE */ - 819, /* GL_MAX_LIST_NESTING */ - 658, /* GL_LIST_BASE */ - 660, /* GL_LIST_INDEX */ - 1098, /* GL_POLYGON_MODE */ - 1105, /* GL_POLYGON_SMOOTH */ - 1107, /* GL_POLYGON_STIPPLE */ - 413, /* GL_EDGE_FLAG */ - 271, /* GL_CULL_FACE */ - 272, /* GL_CULL_FACE_MODE */ - 507, /* GL_FRONT_FACE */ - 629, /* GL_LIGHTING */ - 634, /* GL_LIGHT_MODEL_LOCAL_VIEWER */ - 635, /* GL_LIGHT_MODEL_TWO_SIDE */ - 631, /* GL_LIGHT_MODEL_AMBIENT */ - 1334, /* GL_SHADE_MODEL */ + 1019, /* GL_ORDER */ + 344, /* GL_DOMAIN */ + 279, /* GL_CURRENT_COLOR */ + 282, /* GL_CURRENT_INDEX */ + 288, /* GL_CURRENT_NORMAL */ + 300, /* GL_CURRENT_TEXTURE_COORDS */ + 293, /* GL_CURRENT_RASTER_COLOR */ + 295, /* GL_CURRENT_RASTER_INDEX */ + 298, /* GL_CURRENT_RASTER_TEXTURE_COORDS */ + 296, /* GL_CURRENT_RASTER_POSITION */ + 297, /* GL_CURRENT_RASTER_POSITION_VALID */ + 294, /* GL_CURRENT_RASTER_DISTANCE */ + 1091, /* GL_POINT_SMOOTH */ + 1080, /* GL_POINT_SIZE */ + 1090, /* GL_POINT_SIZE_RANGE */ + 1081, /* GL_POINT_SIZE_GRANULARITY */ + 649, /* GL_LINE_SMOOTH */ + 656, /* GL_LINE_WIDTH */ + 658, /* GL_LINE_WIDTH_RANGE */ + 657, /* GL_LINE_WIDTH_GRANULARITY */ + 651, /* GL_LINE_STIPPLE */ + 652, /* GL_LINE_STIPPLE_PATTERN */ + 653, /* GL_LINE_STIPPLE_REPEAT */ + 663, /* GL_LIST_MODE */ + 822, /* GL_MAX_LIST_NESTING */ + 660, /* GL_LIST_BASE */ + 662, /* GL_LIST_INDEX */ + 1101, /* GL_POLYGON_MODE */ + 1108, /* GL_POLYGON_SMOOTH */ + 1110, /* GL_POLYGON_STIPPLE */ + 414, /* GL_EDGE_FLAG */ + 272, /* GL_CULL_FACE */ + 273, /* GL_CULL_FACE_MODE */ + 509, /* GL_FRONT_FACE */ + 631, /* GL_LIGHTING */ + 636, /* GL_LIGHT_MODEL_LOCAL_VIEWER */ + 637, /* GL_LIGHT_MODEL_TWO_SIDE */ + 633, /* GL_LIGHT_MODEL_AMBIENT */ + 1339, /* GL_SHADE_MODEL */ 168, /* GL_COLOR_MATERIAL_FACE */ 169, /* GL_COLOR_MATERIAL_PARAMETER */ 167, /* GL_COLOR_MATERIAL */ - 456, /* GL_FOG */ - 478, /* GL_FOG_INDEX */ - 474, /* GL_FOG_DENSITY */ - 482, /* GL_FOG_START */ - 476, /* GL_FOG_END */ - 479, /* GL_FOG_MODE */ - 458, /* GL_FOG_COLOR */ - 332, /* GL_DEPTH_RANGE */ - 337, /* GL_DEPTH_TEST */ - 340, /* GL_DEPTH_WRITEMASK */ - 320, /* GL_DEPTH_CLEAR_VALUE */ - 331, /* GL_DEPTH_FUNC */ + 457, /* GL_FOG */ + 479, /* GL_FOG_INDEX */ + 475, /* GL_FOG_DENSITY */ + 483, /* GL_FOG_START */ + 477, /* GL_FOG_END */ + 480, /* GL_FOG_MODE */ + 459, /* GL_FOG_COLOR */ + 333, /* GL_DEPTH_RANGE */ + 338, /* GL_DEPTH_TEST */ + 341, /* GL_DEPTH_WRITEMASK */ + 321, /* GL_DEPTH_CLEAR_VALUE */ + 332, /* GL_DEPTH_FUNC */ 12, /* GL_ACCUM_CLEAR_VALUE */ - 1413, /* GL_STENCIL_TEST */ - 1401, /* GL_STENCIL_CLEAR_VALUE */ - 1403, /* GL_STENCIL_FUNC */ - 1415, /* GL_STENCIL_VALUE_MASK */ - 1402, /* GL_STENCIL_FAIL */ - 1410, /* GL_STENCIL_PASS_DEPTH_FAIL */ - 1411, /* GL_STENCIL_PASS_DEPTH_PASS */ - 1412, /* GL_STENCIL_REF */ - 1416, /* GL_STENCIL_WRITEMASK */ - 789, /* GL_MATRIX_MODE */ - 955, /* GL_NORMALIZE */ - 1718, /* GL_VIEWPORT */ - 929, /* GL_MODELVIEW_STACK_DEPTH */ - 1188, /* GL_PROJECTION_STACK_DEPTH */ - 1607, /* GL_TEXTURE_STACK_DEPTH */ - 927, /* GL_MODELVIEW_MATRIX */ - 1187, /* GL_PROJECTION_MATRIX */ - 1592, /* GL_TEXTURE_MATRIX */ + 1418, /* GL_STENCIL_TEST */ + 1406, /* GL_STENCIL_CLEAR_VALUE */ + 1408, /* GL_STENCIL_FUNC */ + 1420, /* GL_STENCIL_VALUE_MASK */ + 1407, /* GL_STENCIL_FAIL */ + 1415, /* GL_STENCIL_PASS_DEPTH_FAIL */ + 1416, /* GL_STENCIL_PASS_DEPTH_PASS */ + 1417, /* GL_STENCIL_REF */ + 1421, /* GL_STENCIL_WRITEMASK */ + 791, /* GL_MATRIX_MODE */ + 958, /* GL_NORMALIZE */ + 1727, /* GL_VIEWPORT */ + 932, /* GL_MODELVIEW_STACK_DEPTH */ + 1191, /* GL_PROJECTION_STACK_DEPTH */ + 1616, /* GL_TEXTURE_STACK_DEPTH */ + 930, /* GL_MODELVIEW_MATRIX */ + 1190, /* GL_PROJECTION_MATRIX */ + 1601, /* GL_TEXTURE_MATRIX */ 61, /* GL_ATTRIB_STACK_DEPTH */ 127, /* GL_CLIENT_ATTRIB_STACK_DEPTH */ 43, /* GL_ALPHA_TEST */ 44, /* GL_ALPHA_TEST_FUNC */ 45, /* GL_ALPHA_TEST_REF */ - 342, /* GL_DITHER */ + 343, /* GL_DITHER */ 78, /* GL_BLEND_DST */ 86, /* GL_BLEND_SRC */ 75, /* GL_BLEND */ - 664, /* GL_LOGIC_OP_MODE */ - 584, /* GL_INDEX_LOGIC_OP */ + 666, /* GL_LOGIC_OP_MODE */ + 586, /* GL_INDEX_LOGIC_OP */ 166, /* GL_COLOR_LOGIC_OP */ 67, /* GL_AUX_BUFFERS */ - 353, /* GL_DRAW_BUFFER */ - 1218, /* GL_READ_BUFFER */ - 1315, /* GL_SCISSOR_BOX */ - 1316, /* GL_SCISSOR_TEST */ - 583, /* GL_INDEX_CLEAR_VALUE */ - 588, /* GL_INDEX_WRITEMASK */ + 354, /* GL_DRAW_BUFFER */ + 1223, /* GL_READ_BUFFER */ + 1320, /* GL_SCISSOR_BOX */ + 1321, /* GL_SCISSOR_TEST */ + 585, /* GL_INDEX_CLEAR_VALUE */ + 590, /* GL_INDEX_WRITEMASK */ 163, /* GL_COLOR_CLEAR_VALUE */ 205, /* GL_COLOR_WRITEMASK */ - 585, /* GL_INDEX_MODE */ - 1282, /* GL_RGBA_MODE */ - 352, /* GL_DOUBLEBUFFER */ - 1417, /* GL_STEREO */ - 1241, /* GL_RENDER_MODE */ - 1040, /* GL_PERSPECTIVE_CORRECTION_HINT */ - 1089, /* GL_POINT_SMOOTH_HINT */ - 648, /* GL_LINE_SMOOTH_HINT */ - 1106, /* GL_POLYGON_SMOOTH_HINT */ - 477, /* GL_FOG_HINT */ - 1573, /* GL_TEXTURE_GEN_S */ - 1574, /* GL_TEXTURE_GEN_T */ - 1572, /* GL_TEXTURE_GEN_R */ - 1571, /* GL_TEXTURE_GEN_Q */ - 1053, /* GL_PIXEL_MAP_I_TO_I */ - 1059, /* GL_PIXEL_MAP_S_TO_S */ - 1055, /* GL_PIXEL_MAP_I_TO_R */ - 1051, /* GL_PIXEL_MAP_I_TO_G */ - 1049, /* GL_PIXEL_MAP_I_TO_B */ - 1047, /* GL_PIXEL_MAP_I_TO_A */ - 1057, /* GL_PIXEL_MAP_R_TO_R */ - 1045, /* GL_PIXEL_MAP_G_TO_G */ - 1043, /* GL_PIXEL_MAP_B_TO_B */ - 1041, /* GL_PIXEL_MAP_A_TO_A */ - 1054, /* GL_PIXEL_MAP_I_TO_I_SIZE */ - 1060, /* GL_PIXEL_MAP_S_TO_S_SIZE */ - 1056, /* GL_PIXEL_MAP_I_TO_R_SIZE */ - 1052, /* GL_PIXEL_MAP_I_TO_G_SIZE */ - 1050, /* GL_PIXEL_MAP_I_TO_B_SIZE */ - 1048, /* GL_PIXEL_MAP_I_TO_A_SIZE */ - 1058, /* GL_PIXEL_MAP_R_TO_R_SIZE */ - 1046, /* GL_PIXEL_MAP_G_TO_G_SIZE */ - 1044, /* GL_PIXEL_MAP_B_TO_B_SIZE */ - 1042, /* GL_PIXEL_MAP_A_TO_A_SIZE */ - 1640, /* GL_UNPACK_SWAP_BYTES */ - 1635, /* GL_UNPACK_LSB_FIRST */ - 1636, /* GL_UNPACK_ROW_LENGTH */ - 1639, /* GL_UNPACK_SKIP_ROWS */ - 1638, /* GL_UNPACK_SKIP_PIXELS */ - 1633, /* GL_UNPACK_ALIGNMENT */ - 1028, /* GL_PACK_SWAP_BYTES */ - 1023, /* GL_PACK_LSB_FIRST */ - 1024, /* GL_PACK_ROW_LENGTH */ - 1027, /* GL_PACK_SKIP_ROWS */ - 1026, /* GL_PACK_SKIP_PIXELS */ - 1020, /* GL_PACK_ALIGNMENT */ - 742, /* GL_MAP_COLOR */ - 743, /* GL_MAP_STENCIL */ - 587, /* GL_INDEX_SHIFT */ - 586, /* GL_INDEX_OFFSET */ - 1230, /* GL_RED_SCALE */ - 1228, /* GL_RED_BIAS */ - 1735, /* GL_ZOOM_X */ - 1736, /* GL_ZOOM_Y */ - 549, /* GL_GREEN_SCALE */ - 547, /* GL_GREEN_BIAS */ + 587, /* GL_INDEX_MODE */ + 1287, /* GL_RGBA_MODE */ + 353, /* GL_DOUBLEBUFFER */ + 1422, /* GL_STEREO */ + 1246, /* GL_RENDER_MODE */ + 1043, /* GL_PERSPECTIVE_CORRECTION_HINT */ + 1092, /* GL_POINT_SMOOTH_HINT */ + 650, /* GL_LINE_SMOOTH_HINT */ + 1109, /* GL_POLYGON_SMOOTH_HINT */ + 478, /* GL_FOG_HINT */ + 1582, /* GL_TEXTURE_GEN_S */ + 1583, /* GL_TEXTURE_GEN_T */ + 1581, /* GL_TEXTURE_GEN_R */ + 1580, /* GL_TEXTURE_GEN_Q */ + 1056, /* GL_PIXEL_MAP_I_TO_I */ + 1062, /* GL_PIXEL_MAP_S_TO_S */ + 1058, /* GL_PIXEL_MAP_I_TO_R */ + 1054, /* GL_PIXEL_MAP_I_TO_G */ + 1052, /* GL_PIXEL_MAP_I_TO_B */ + 1050, /* GL_PIXEL_MAP_I_TO_A */ + 1060, /* GL_PIXEL_MAP_R_TO_R */ + 1048, /* GL_PIXEL_MAP_G_TO_G */ + 1046, /* GL_PIXEL_MAP_B_TO_B */ + 1044, /* GL_PIXEL_MAP_A_TO_A */ + 1057, /* GL_PIXEL_MAP_I_TO_I_SIZE */ + 1063, /* GL_PIXEL_MAP_S_TO_S_SIZE */ + 1059, /* GL_PIXEL_MAP_I_TO_R_SIZE */ + 1055, /* GL_PIXEL_MAP_I_TO_G_SIZE */ + 1053, /* GL_PIXEL_MAP_I_TO_B_SIZE */ + 1051, /* GL_PIXEL_MAP_I_TO_A_SIZE */ + 1061, /* GL_PIXEL_MAP_R_TO_R_SIZE */ + 1049, /* GL_PIXEL_MAP_G_TO_G_SIZE */ + 1047, /* GL_PIXEL_MAP_B_TO_B_SIZE */ + 1045, /* GL_PIXEL_MAP_A_TO_A_SIZE */ + 1649, /* GL_UNPACK_SWAP_BYTES */ + 1644, /* GL_UNPACK_LSB_FIRST */ + 1645, /* GL_UNPACK_ROW_LENGTH */ + 1648, /* GL_UNPACK_SKIP_ROWS */ + 1647, /* GL_UNPACK_SKIP_PIXELS */ + 1642, /* GL_UNPACK_ALIGNMENT */ + 1031, /* GL_PACK_SWAP_BYTES */ + 1026, /* GL_PACK_LSB_FIRST */ + 1027, /* GL_PACK_ROW_LENGTH */ + 1030, /* GL_PACK_SKIP_ROWS */ + 1029, /* GL_PACK_SKIP_PIXELS */ + 1023, /* GL_PACK_ALIGNMENT */ + 744, /* GL_MAP_COLOR */ + 745, /* GL_MAP_STENCIL */ + 589, /* GL_INDEX_SHIFT */ + 588, /* GL_INDEX_OFFSET */ + 1235, /* GL_RED_SCALE */ + 1233, /* GL_RED_BIAS */ + 1744, /* GL_ZOOM_X */ + 1745, /* GL_ZOOM_Y */ + 551, /* GL_GREEN_SCALE */ + 549, /* GL_GREEN_BIAS */ 92, /* GL_BLUE_SCALE */ 90, /* GL_BLUE_BIAS */ 42, /* GL_ALPHA_SCALE */ 40, /* GL_ALPHA_BIAS */ - 333, /* GL_DEPTH_SCALE */ - 314, /* GL_DEPTH_BIAS */ - 814, /* GL_MAX_EVAL_ORDER */ - 818, /* GL_MAX_LIGHTS */ - 797, /* GL_MAX_CLIP_PLANES */ - 862, /* GL_MAX_TEXTURE_SIZE */ - 824, /* GL_MAX_PIXEL_MAP_TABLE */ - 793, /* GL_MAX_ATTRIB_STACK_DEPTH */ - 821, /* GL_MAX_MODELVIEW_STACK_DEPTH */ - 822, /* GL_MAX_NAME_STACK_DEPTH */ - 850, /* GL_MAX_PROJECTION_STACK_DEPTH */ - 863, /* GL_MAX_TEXTURE_STACK_DEPTH */ - 877, /* GL_MAX_VIEWPORT_DIMS */ - 794, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */ - 1424, /* GL_SUBPIXEL_BITS */ - 582, /* GL_INDEX_BITS */ - 1229, /* GL_RED_BITS */ - 548, /* GL_GREEN_BITS */ + 334, /* GL_DEPTH_SCALE */ + 315, /* GL_DEPTH_BIAS */ + 817, /* GL_MAX_EVAL_ORDER */ + 821, /* GL_MAX_LIGHTS */ + 800, /* GL_MAX_CLIP_PLANES */ + 865, /* GL_MAX_TEXTURE_SIZE */ + 827, /* GL_MAX_PIXEL_MAP_TABLE */ + 796, /* GL_MAX_ATTRIB_STACK_DEPTH */ + 824, /* GL_MAX_MODELVIEW_STACK_DEPTH */ + 825, /* GL_MAX_NAME_STACK_DEPTH */ + 853, /* GL_MAX_PROJECTION_STACK_DEPTH */ + 866, /* GL_MAX_TEXTURE_STACK_DEPTH */ + 880, /* GL_MAX_VIEWPORT_DIMS */ + 797, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */ + 1429, /* GL_SUBPIXEL_BITS */ + 584, /* GL_INDEX_BITS */ + 1234, /* GL_RED_BITS */ + 550, /* GL_GREEN_BITS */ 91, /* GL_BLUE_BITS */ 41, /* GL_ALPHA_BITS */ - 315, /* GL_DEPTH_BITS */ - 1399, /* GL_STENCIL_BITS */ + 316, /* GL_DEPTH_BITS */ + 1404, /* GL_STENCIL_BITS */ 14, /* GL_ACCUM_RED_BITS */ 13, /* GL_ACCUM_GREEN_BITS */ 10, /* GL_ACCUM_BLUE_BITS */ 9, /* GL_ACCUM_ALPHA_BITS */ - 943, /* GL_NAME_STACK_DEPTH */ + 946, /* GL_NAME_STACK_DEPTH */ 62, /* GL_AUTO_NORMAL */ - 688, /* GL_MAP1_COLOR_4 */ - 691, /* GL_MAP1_INDEX */ - 692, /* GL_MAP1_NORMAL */ - 693, /* GL_MAP1_TEXTURE_COORD_1 */ - 694, /* GL_MAP1_TEXTURE_COORD_2 */ - 695, /* GL_MAP1_TEXTURE_COORD_3 */ - 696, /* GL_MAP1_TEXTURE_COORD_4 */ - 697, /* GL_MAP1_VERTEX_3 */ - 698, /* GL_MAP1_VERTEX_4 */ - 715, /* GL_MAP2_COLOR_4 */ - 718, /* GL_MAP2_INDEX */ - 719, /* GL_MAP2_NORMAL */ - 720, /* GL_MAP2_TEXTURE_COORD_1 */ - 721, /* GL_MAP2_TEXTURE_COORD_2 */ - 722, /* GL_MAP2_TEXTURE_COORD_3 */ - 723, /* GL_MAP2_TEXTURE_COORD_4 */ - 724, /* GL_MAP2_VERTEX_3 */ - 725, /* GL_MAP2_VERTEX_4 */ - 689, /* GL_MAP1_GRID_DOMAIN */ - 690, /* GL_MAP1_GRID_SEGMENTS */ - 716, /* GL_MAP2_GRID_DOMAIN */ - 717, /* GL_MAP2_GRID_SEGMENTS */ - 1501, /* GL_TEXTURE_1D */ - 1502, /* GL_TEXTURE_2D */ - 438, /* GL_FEEDBACK_BUFFER_POINTER */ - 439, /* GL_FEEDBACK_BUFFER_SIZE */ - 440, /* GL_FEEDBACK_BUFFER_TYPE */ - 1325, /* GL_SELECTION_BUFFER_POINTER */ - 1326, /* GL_SELECTION_BUFFER_SIZE */ - 1610, /* GL_TEXTURE_WIDTH */ - 1578, /* GL_TEXTURE_HEIGHT */ - 1534, /* GL_TEXTURE_COMPONENTS */ - 1518, /* GL_TEXTURE_BORDER_COLOR */ - 1517, /* GL_TEXTURE_BORDER */ - 344, /* GL_DONT_CARE */ - 436, /* GL_FASTEST */ - 951, /* GL_NICEST */ + 690, /* GL_MAP1_COLOR_4 */ + 693, /* GL_MAP1_INDEX */ + 694, /* GL_MAP1_NORMAL */ + 695, /* GL_MAP1_TEXTURE_COORD_1 */ + 696, /* GL_MAP1_TEXTURE_COORD_2 */ + 697, /* GL_MAP1_TEXTURE_COORD_3 */ + 698, /* GL_MAP1_TEXTURE_COORD_4 */ + 699, /* GL_MAP1_VERTEX_3 */ + 700, /* GL_MAP1_VERTEX_4 */ + 717, /* GL_MAP2_COLOR_4 */ + 720, /* GL_MAP2_INDEX */ + 721, /* GL_MAP2_NORMAL */ + 722, /* GL_MAP2_TEXTURE_COORD_1 */ + 723, /* GL_MAP2_TEXTURE_COORD_2 */ + 724, /* GL_MAP2_TEXTURE_COORD_3 */ + 725, /* GL_MAP2_TEXTURE_COORD_4 */ + 726, /* GL_MAP2_VERTEX_3 */ + 727, /* GL_MAP2_VERTEX_4 */ + 691, /* GL_MAP1_GRID_DOMAIN */ + 692, /* GL_MAP1_GRID_SEGMENTS */ + 718, /* GL_MAP2_GRID_DOMAIN */ + 719, /* GL_MAP2_GRID_SEGMENTS */ + 1506, /* GL_TEXTURE_1D */ + 1508, /* GL_TEXTURE_2D */ + 439, /* GL_FEEDBACK_BUFFER_POINTER */ + 440, /* GL_FEEDBACK_BUFFER_SIZE */ + 441, /* GL_FEEDBACK_BUFFER_TYPE */ + 1330, /* GL_SELECTION_BUFFER_POINTER */ + 1331, /* GL_SELECTION_BUFFER_SIZE */ + 1619, /* GL_TEXTURE_WIDTH */ + 1587, /* GL_TEXTURE_HEIGHT */ + 1543, /* GL_TEXTURE_COMPONENTS */ + 1527, /* GL_TEXTURE_BORDER_COLOR */ + 1526, /* GL_TEXTURE_BORDER */ + 345, /* GL_DONT_CARE */ + 437, /* GL_FASTEST */ + 954, /* GL_NICEST */ 47, /* GL_AMBIENT */ - 341, /* GL_DIFFUSE */ - 1368, /* GL_SPECULAR */ - 1110, /* GL_POSITION */ - 1371, /* GL_SPOT_DIRECTION */ - 1372, /* GL_SPOT_EXPONENT */ - 1370, /* GL_SPOT_CUTOFF */ - 244, /* GL_CONSTANT_ATTENUATION */ - 638, /* GL_LINEAR_ATTENUATION */ - 1205, /* GL_QUADRATIC_ATTENUATION */ - 218, /* GL_COMPILE */ - 219, /* GL_COMPILE_AND_EXECUTE */ + 342, /* GL_DIFFUSE */ + 1373, /* GL_SPECULAR */ + 1113, /* GL_POSITION */ + 1376, /* GL_SPOT_DIRECTION */ + 1377, /* GL_SPOT_EXPONENT */ + 1375, /* GL_SPOT_CUTOFF */ + 245, /* GL_CONSTANT_ATTENUATION */ + 640, /* GL_LINEAR_ATTENUATION */ + 1210, /* GL_QUADRATIC_ATTENUATION */ + 219, /* GL_COMPILE */ + 220, /* GL_COMPILE_AND_EXECUTE */ 111, /* GL_BYTE */ - 1641, /* GL_UNSIGNED_BYTE */ - 1339, /* GL_SHORT */ - 1650, /* GL_UNSIGNED_SHORT */ - 590, /* GL_INT */ - 1644, /* GL_UNSIGNED_INT */ - 443, /* GL_FLOAT */ + 1650, /* GL_UNSIGNED_BYTE */ + 1344, /* GL_SHORT */ + 1659, /* GL_UNSIGNED_SHORT */ + 592, /* GL_INT */ + 1653, /* GL_UNSIGNED_INT */ + 444, /* GL_FLOAT */ 1, /* GL_2_BYTES */ 5, /* GL_3_BYTES */ 7, /* GL_4_BYTES */ - 351, /* GL_DOUBLE */ + 352, /* GL_DOUBLE */ 123, /* GL_CLEAR */ 49, /* GL_AND */ 51, /* GL_AND_REVERSE */ - 268, /* GL_COPY */ + 269, /* GL_COPY */ 50, /* GL_AND_INVERTED */ - 953, /* GL_NOOP */ - 1731, /* GL_XOR */ - 1015, /* GL_OR */ - 954, /* GL_NOR */ - 426, /* GL_EQUIV */ - 616, /* GL_INVERT */ - 1018, /* GL_OR_REVERSE */ - 269, /* GL_COPY_INVERTED */ - 1017, /* GL_OR_INVERTED */ - 944, /* GL_NAND */ - 1330, /* GL_SET */ - 423, /* GL_EMISSION */ - 1338, /* GL_SHININESS */ + 956, /* GL_NOOP */ + 1740, /* GL_XOR */ + 1018, /* GL_OR */ + 957, /* GL_NOR */ + 427, /* GL_EQUIV */ + 618, /* GL_INVERT */ + 1021, /* GL_OR_REVERSE */ + 270, /* GL_COPY_INVERTED */ + 1020, /* GL_OR_INVERTED */ + 947, /* GL_NAND */ + 1335, /* GL_SET */ + 424, /* GL_EMISSION */ + 1343, /* GL_SHININESS */ 48, /* GL_AMBIENT_AND_DIFFUSE */ 165, /* GL_COLOR_INDEXES */ - 894, /* GL_MODELVIEW */ - 1186, /* GL_PROJECTION */ - 1436, /* GL_TEXTURE */ + 897, /* GL_MODELVIEW */ + 1189, /* GL_PROJECTION */ + 1441, /* GL_TEXTURE */ 138, /* GL_COLOR */ - 312, /* GL_DEPTH */ - 1390, /* GL_STENCIL */ + 313, /* GL_DEPTH */ + 1395, /* GL_STENCIL */ 164, /* GL_COLOR_INDEX */ - 1404, /* GL_STENCIL_INDEX */ - 321, /* GL_DEPTH_COMPONENT */ - 1225, /* GL_RED */ - 546, /* GL_GREEN */ + 1409, /* GL_STENCIL_INDEX */ + 322, /* GL_DEPTH_COMPONENT */ + 1230, /* GL_RED */ + 548, /* GL_GREEN */ 89, /* GL_BLUE */ 31, /* GL_ALPHA */ - 1249, /* GL_RGB */ - 1268, /* GL_RGBA */ - 666, /* GL_LUMINANCE */ - 687, /* GL_LUMINANCE_ALPHA */ + 1254, /* GL_RGB */ + 1273, /* GL_RGBA */ + 668, /* GL_LUMINANCE */ + 689, /* GL_LUMINANCE_ALPHA */ 73, /* GL_BITMAP */ - 1066, /* GL_POINT */ - 636, /* GL_LINE */ - 441, /* GL_FILL */ - 1234, /* GL_RENDER */ - 437, /* GL_FEEDBACK */ - 1324, /* GL_SELECT */ - 442, /* GL_FLAT */ - 1343, /* GL_SMOOTH */ - 617, /* GL_KEEP */ - 1243, /* GL_REPLACE */ - 573, /* GL_INCR */ - 308, /* GL_DECR */ - 1665, /* GL_VENDOR */ - 1240, /* GL_RENDERER */ - 1666, /* GL_VERSION */ - 430, /* GL_EXTENSIONS */ - 1289, /* GL_S */ - 1427, /* GL_T */ - 1215, /* GL_R */ - 1204, /* GL_Q */ - 930, /* GL_MODULATE */ - 307, /* GL_DECAL */ - 1568, /* GL_TEXTURE_ENV_MODE */ - 1567, /* GL_TEXTURE_ENV_COLOR */ - 1566, /* GL_TEXTURE_ENV */ - 431, /* GL_EYE_LINEAR */ - 977, /* GL_OBJECT_LINEAR */ - 1369, /* GL_SPHERE_MAP */ - 1570, /* GL_TEXTURE_GEN_MODE */ - 979, /* GL_OBJECT_PLANE */ - 432, /* GL_EYE_PLANE */ - 945, /* GL_NEAREST */ - 637, /* GL_LINEAR */ - 949, /* GL_NEAREST_MIPMAP_NEAREST */ - 642, /* GL_LINEAR_MIPMAP_NEAREST */ - 948, /* GL_NEAREST_MIPMAP_LINEAR */ - 641, /* GL_LINEAR_MIPMAP_LINEAR */ - 1591, /* GL_TEXTURE_MAG_FILTER */ - 1599, /* GL_TEXTURE_MIN_FILTER */ - 1612, /* GL_TEXTURE_WRAP_S */ - 1613, /* GL_TEXTURE_WRAP_T */ + 1069, /* GL_POINT */ + 638, /* GL_LINE */ + 442, /* GL_FILL */ + 1239, /* GL_RENDER */ + 438, /* GL_FEEDBACK */ + 1329, /* GL_SELECT */ + 443, /* GL_FLAT */ + 1348, /* GL_SMOOTH */ + 619, /* GL_KEEP */ + 1248, /* GL_REPLACE */ + 575, /* GL_INCR */ + 309, /* GL_DECR */ + 1674, /* GL_VENDOR */ + 1245, /* GL_RENDERER */ + 1675, /* GL_VERSION */ + 431, /* GL_EXTENSIONS */ + 1294, /* GL_S */ + 1432, /* GL_T */ + 1220, /* GL_R */ + 1209, /* GL_Q */ + 933, /* GL_MODULATE */ + 308, /* GL_DECAL */ + 1577, /* GL_TEXTURE_ENV_MODE */ + 1576, /* GL_TEXTURE_ENV_COLOR */ + 1575, /* GL_TEXTURE_ENV */ + 432, /* GL_EYE_LINEAR */ + 980, /* GL_OBJECT_LINEAR */ + 1374, /* GL_SPHERE_MAP */ + 1579, /* GL_TEXTURE_GEN_MODE */ + 982, /* GL_OBJECT_PLANE */ + 433, /* GL_EYE_PLANE */ + 948, /* GL_NEAREST */ + 639, /* GL_LINEAR */ + 952, /* GL_NEAREST_MIPMAP_NEAREST */ + 644, /* GL_LINEAR_MIPMAP_NEAREST */ + 951, /* GL_NEAREST_MIPMAP_LINEAR */ + 643, /* GL_LINEAR_MIPMAP_LINEAR */ + 1600, /* GL_TEXTURE_MAG_FILTER */ + 1608, /* GL_TEXTURE_MIN_FILTER */ + 1621, /* GL_TEXTURE_WRAP_S */ + 1622, /* GL_TEXTURE_WRAP_T */ 117, /* GL_CLAMP */ - 1242, /* GL_REPEAT */ - 1104, /* GL_POLYGON_OFFSET_UNITS */ - 1103, /* GL_POLYGON_OFFSET_POINT */ - 1102, /* GL_POLYGON_OFFSET_LINE */ - 1216, /* GL_R3_G3_B2 */ - 1662, /* GL_V2F */ - 1663, /* GL_V3F */ + 1247, /* GL_REPEAT */ + 1107, /* GL_POLYGON_OFFSET_UNITS */ + 1106, /* GL_POLYGON_OFFSET_POINT */ + 1105, /* GL_POLYGON_OFFSET_LINE */ + 1221, /* GL_R3_G3_B2 */ + 1671, /* GL_V2F */ + 1672, /* GL_V3F */ 114, /* GL_C4UB_V2F */ 115, /* GL_C4UB_V3F */ 112, /* GL_C3F_V3F */ - 942, /* GL_N3F_V3F */ + 945, /* GL_N3F_V3F */ 113, /* GL_C4F_N3F_V3F */ - 1432, /* GL_T2F_V3F */ - 1434, /* GL_T4F_V4F */ - 1430, /* GL_T2F_C4UB_V3F */ - 1428, /* GL_T2F_C3F_V3F */ - 1431, /* GL_T2F_N3F_V3F */ - 1429, /* GL_T2F_C4F_N3F_V3F */ - 1433, /* GL_T4F_C4F_N3F_V4F */ + 1437, /* GL_T2F_V3F */ + 1439, /* GL_T4F_V4F */ + 1435, /* GL_T2F_C4UB_V3F */ + 1433, /* GL_T2F_C3F_V3F */ + 1436, /* GL_T2F_N3F_V3F */ + 1434, /* GL_T2F_C4F_N3F_V3F */ + 1438, /* GL_T4F_C4F_N3F_V4F */ 130, /* GL_CLIP_PLANE0 */ 131, /* GL_CLIP_PLANE1 */ 132, /* GL_CLIP_PLANE2 */ 133, /* GL_CLIP_PLANE3 */ 134, /* GL_CLIP_PLANE4 */ 135, /* GL_CLIP_PLANE5 */ - 621, /* GL_LIGHT0 */ - 622, /* GL_LIGHT1 */ - 623, /* GL_LIGHT2 */ - 624, /* GL_LIGHT3 */ - 625, /* GL_LIGHT4 */ - 626, /* GL_LIGHT5 */ - 627, /* GL_LIGHT6 */ - 628, /* GL_LIGHT7 */ - 550, /* GL_HINT_BIT */ - 246, /* GL_CONSTANT_COLOR */ - 989, /* GL_ONE_MINUS_CONSTANT_COLOR */ - 241, /* GL_CONSTANT_ALPHA */ - 987, /* GL_ONE_MINUS_CONSTANT_ALPHA */ + 623, /* GL_LIGHT0 */ + 624, /* GL_LIGHT1 */ + 625, /* GL_LIGHT2 */ + 626, /* GL_LIGHT3 */ + 627, /* GL_LIGHT4 */ + 628, /* GL_LIGHT5 */ + 629, /* GL_LIGHT6 */ + 630, /* GL_LIGHT7 */ + 552, /* GL_HINT_BIT */ + 247, /* GL_CONSTANT_COLOR */ + 992, /* GL_ONE_MINUS_CONSTANT_COLOR */ + 242, /* GL_CONSTANT_ALPHA */ + 990, /* GL_ONE_MINUS_CONSTANT_ALPHA */ 76, /* GL_BLEND_COLOR */ - 510, /* GL_FUNC_ADD */ - 878, /* GL_MIN */ - 791, /* GL_MAX */ + 512, /* GL_FUNC_ADD */ + 881, /* GL_MIN */ + 793, /* GL_MAX */ 81, /* GL_BLEND_EQUATION */ - 514, /* GL_FUNC_SUBTRACT */ - 512, /* GL_FUNC_REVERSE_SUBTRACT */ - 249, /* GL_CONVOLUTION_1D */ - 250, /* GL_CONVOLUTION_2D */ - 1327, /* GL_SEPARABLE_2D */ - 253, /* GL_CONVOLUTION_BORDER_MODE */ - 257, /* GL_CONVOLUTION_FILTER_SCALE */ - 255, /* GL_CONVOLUTION_FILTER_BIAS */ - 1226, /* GL_REDUCE */ - 259, /* GL_CONVOLUTION_FORMAT */ - 263, /* GL_CONVOLUTION_WIDTH */ - 261, /* GL_CONVOLUTION_HEIGHT */ - 805, /* GL_MAX_CONVOLUTION_WIDTH */ - 803, /* GL_MAX_CONVOLUTION_HEIGHT */ - 1143, /* GL_POST_CONVOLUTION_RED_SCALE */ - 1139, /* GL_POST_CONVOLUTION_GREEN_SCALE */ - 1134, /* GL_POST_CONVOLUTION_BLUE_SCALE */ - 1130, /* GL_POST_CONVOLUTION_ALPHA_SCALE */ - 1141, /* GL_POST_CONVOLUTION_RED_BIAS */ - 1137, /* GL_POST_CONVOLUTION_GREEN_BIAS */ - 1132, /* GL_POST_CONVOLUTION_BLUE_BIAS */ - 1128, /* GL_POST_CONVOLUTION_ALPHA_BIAS */ - 551, /* GL_HISTOGRAM */ - 1190, /* GL_PROXY_HISTOGRAM */ - 567, /* GL_HISTOGRAM_WIDTH */ - 557, /* GL_HISTOGRAM_FORMAT */ - 563, /* GL_HISTOGRAM_RED_SIZE */ - 559, /* GL_HISTOGRAM_GREEN_SIZE */ - 554, /* GL_HISTOGRAM_BLUE_SIZE */ - 552, /* GL_HISTOGRAM_ALPHA_SIZE */ - 561, /* GL_HISTOGRAM_LUMINANCE_SIZE */ - 565, /* GL_HISTOGRAM_SINK */ - 879, /* GL_MINMAX */ - 881, /* GL_MINMAX_FORMAT */ - 883, /* GL_MINMAX_SINK */ - 1435, /* GL_TABLE_TOO_LARGE_EXT */ - 1643, /* GL_UNSIGNED_BYTE_3_3_2 */ - 1652, /* GL_UNSIGNED_SHORT_4_4_4_4 */ - 1654, /* GL_UNSIGNED_SHORT_5_5_5_1 */ - 1648, /* GL_UNSIGNED_INT_8_8_8_8 */ - 1645, /* GL_UNSIGNED_INT_10_10_10_2 */ - 1101, /* GL_POLYGON_OFFSET_FILL */ - 1100, /* GL_POLYGON_OFFSET_FACTOR */ - 1099, /* GL_POLYGON_OFFSET_BIAS */ - 1246, /* GL_RESCALE_NORMAL */ + 516, /* GL_FUNC_SUBTRACT */ + 514, /* GL_FUNC_REVERSE_SUBTRACT */ + 250, /* GL_CONVOLUTION_1D */ + 251, /* GL_CONVOLUTION_2D */ + 1332, /* GL_SEPARABLE_2D */ + 254, /* GL_CONVOLUTION_BORDER_MODE */ + 258, /* GL_CONVOLUTION_FILTER_SCALE */ + 256, /* GL_CONVOLUTION_FILTER_BIAS */ + 1231, /* GL_REDUCE */ + 260, /* GL_CONVOLUTION_FORMAT */ + 264, /* GL_CONVOLUTION_WIDTH */ + 262, /* GL_CONVOLUTION_HEIGHT */ + 808, /* GL_MAX_CONVOLUTION_WIDTH */ + 806, /* GL_MAX_CONVOLUTION_HEIGHT */ + 1146, /* GL_POST_CONVOLUTION_RED_SCALE */ + 1142, /* GL_POST_CONVOLUTION_GREEN_SCALE */ + 1137, /* GL_POST_CONVOLUTION_BLUE_SCALE */ + 1133, /* GL_POST_CONVOLUTION_ALPHA_SCALE */ + 1144, /* GL_POST_CONVOLUTION_RED_BIAS */ + 1140, /* GL_POST_CONVOLUTION_GREEN_BIAS */ + 1135, /* GL_POST_CONVOLUTION_BLUE_BIAS */ + 1131, /* GL_POST_CONVOLUTION_ALPHA_BIAS */ + 553, /* GL_HISTOGRAM */ + 1193, /* GL_PROXY_HISTOGRAM */ + 569, /* GL_HISTOGRAM_WIDTH */ + 559, /* GL_HISTOGRAM_FORMAT */ + 565, /* GL_HISTOGRAM_RED_SIZE */ + 561, /* GL_HISTOGRAM_GREEN_SIZE */ + 556, /* GL_HISTOGRAM_BLUE_SIZE */ + 554, /* GL_HISTOGRAM_ALPHA_SIZE */ + 563, /* GL_HISTOGRAM_LUMINANCE_SIZE */ + 567, /* GL_HISTOGRAM_SINK */ + 882, /* GL_MINMAX */ + 884, /* GL_MINMAX_FORMAT */ + 886, /* GL_MINMAX_SINK */ + 1440, /* GL_TABLE_TOO_LARGE_EXT */ + 1652, /* GL_UNSIGNED_BYTE_3_3_2 */ + 1661, /* GL_UNSIGNED_SHORT_4_4_4_4 */ + 1663, /* GL_UNSIGNED_SHORT_5_5_5_1 */ + 1657, /* GL_UNSIGNED_INT_8_8_8_8 */ + 1654, /* GL_UNSIGNED_INT_10_10_10_2 */ + 1104, /* GL_POLYGON_OFFSET_FILL */ + 1103, /* GL_POLYGON_OFFSET_FACTOR */ + 1102, /* GL_POLYGON_OFFSET_BIAS */ + 1251, /* GL_RESCALE_NORMAL */ 36, /* GL_ALPHA4 */ 38, /* GL_ALPHA8 */ 32, /* GL_ALPHA12 */ 34, /* GL_ALPHA16 */ - 677, /* GL_LUMINANCE4 */ - 683, /* GL_LUMINANCE8 */ - 667, /* GL_LUMINANCE12 */ - 673, /* GL_LUMINANCE16 */ - 678, /* GL_LUMINANCE4_ALPHA4 */ - 681, /* GL_LUMINANCE6_ALPHA2 */ - 684, /* GL_LUMINANCE8_ALPHA8 */ - 670, /* GL_LUMINANCE12_ALPHA4 */ - 668, /* GL_LUMINANCE12_ALPHA12 */ - 674, /* GL_LUMINANCE16_ALPHA16 */ - 591, /* GL_INTENSITY */ - 596, /* GL_INTENSITY4 */ - 598, /* GL_INTENSITY8 */ - 592, /* GL_INTENSITY12 */ - 594, /* GL_INTENSITY16 */ - 1258, /* GL_RGB2_EXT */ - 1259, /* GL_RGB4 */ - 1262, /* GL_RGB5 */ - 1266, /* GL_RGB8 */ - 1250, /* GL_RGB10 */ - 1254, /* GL_RGB12 */ - 1256, /* GL_RGB16 */ - 1273, /* GL_RGBA2 */ - 1275, /* GL_RGBA4 */ - 1263, /* GL_RGB5_A1 */ - 1279, /* GL_RGBA8 */ - 1251, /* GL_RGB10_A2 */ - 1269, /* GL_RGBA12 */ - 1271, /* GL_RGBA16 */ - 1604, /* GL_TEXTURE_RED_SIZE */ - 1576, /* GL_TEXTURE_GREEN_SIZE */ - 1515, /* GL_TEXTURE_BLUE_SIZE */ - 1504, /* GL_TEXTURE_ALPHA_SIZE */ - 1589, /* GL_TEXTURE_LUMINANCE_SIZE */ - 1580, /* GL_TEXTURE_INTENSITY_SIZE */ - 1244, /* GL_REPLACE_EXT */ - 1194, /* GL_PROXY_TEXTURE_1D */ - 1196, /* GL_PROXY_TEXTURE_2D */ - 1608, /* GL_TEXTURE_TOO_LARGE_EXT */ - 1601, /* GL_TEXTURE_PRIORITY */ - 1606, /* GL_TEXTURE_RESIDENT */ - 1507, /* GL_TEXTURE_BINDING_1D */ - 1508, /* GL_TEXTURE_BINDING_2D */ - 1509, /* GL_TEXTURE_BINDING_3D */ - 1025, /* GL_PACK_SKIP_IMAGES */ - 1021, /* GL_PACK_IMAGE_HEIGHT */ - 1637, /* GL_UNPACK_SKIP_IMAGES */ - 1634, /* GL_UNPACK_IMAGE_HEIGHT */ - 1503, /* GL_TEXTURE_3D */ - 1198, /* GL_PROXY_TEXTURE_3D */ - 1563, /* GL_TEXTURE_DEPTH */ - 1611, /* GL_TEXTURE_WRAP_R */ - 792, /* GL_MAX_3D_TEXTURE_SIZE */ - 1667, /* GL_VERTEX_ARRAY */ - 956, /* GL_NORMAL_ARRAY */ + 679, /* GL_LUMINANCE4 */ + 685, /* GL_LUMINANCE8 */ + 669, /* GL_LUMINANCE12 */ + 675, /* GL_LUMINANCE16 */ + 680, /* GL_LUMINANCE4_ALPHA4 */ + 683, /* GL_LUMINANCE6_ALPHA2 */ + 686, /* GL_LUMINANCE8_ALPHA8 */ + 672, /* GL_LUMINANCE12_ALPHA4 */ + 670, /* GL_LUMINANCE12_ALPHA12 */ + 676, /* GL_LUMINANCE16_ALPHA16 */ + 593, /* GL_INTENSITY */ + 598, /* GL_INTENSITY4 */ + 600, /* GL_INTENSITY8 */ + 594, /* GL_INTENSITY12 */ + 596, /* GL_INTENSITY16 */ + 1263, /* GL_RGB2_EXT */ + 1264, /* GL_RGB4 */ + 1267, /* GL_RGB5 */ + 1271, /* GL_RGB8 */ + 1255, /* GL_RGB10 */ + 1259, /* GL_RGB12 */ + 1261, /* GL_RGB16 */ + 1278, /* GL_RGBA2 */ + 1280, /* GL_RGBA4 */ + 1268, /* GL_RGB5_A1 */ + 1284, /* GL_RGBA8 */ + 1256, /* GL_RGB10_A2 */ + 1274, /* GL_RGBA12 */ + 1276, /* GL_RGBA16 */ + 1613, /* GL_TEXTURE_RED_SIZE */ + 1585, /* GL_TEXTURE_GREEN_SIZE */ + 1524, /* GL_TEXTURE_BLUE_SIZE */ + 1511, /* GL_TEXTURE_ALPHA_SIZE */ + 1598, /* GL_TEXTURE_LUMINANCE_SIZE */ + 1589, /* GL_TEXTURE_INTENSITY_SIZE */ + 1249, /* GL_REPLACE_EXT */ + 1197, /* GL_PROXY_TEXTURE_1D */ + 1200, /* GL_PROXY_TEXTURE_2D */ + 1617, /* GL_TEXTURE_TOO_LARGE_EXT */ + 1610, /* GL_TEXTURE_PRIORITY */ + 1615, /* GL_TEXTURE_RESIDENT */ + 1514, /* GL_TEXTURE_BINDING_1D */ + 1516, /* GL_TEXTURE_BINDING_2D */ + 1518, /* GL_TEXTURE_BINDING_3D */ + 1028, /* GL_PACK_SKIP_IMAGES */ + 1024, /* GL_PACK_IMAGE_HEIGHT */ + 1646, /* GL_UNPACK_SKIP_IMAGES */ + 1643, /* GL_UNPACK_IMAGE_HEIGHT */ + 1510, /* GL_TEXTURE_3D */ + 1203, /* GL_PROXY_TEXTURE_3D */ + 1572, /* GL_TEXTURE_DEPTH */ + 1620, /* GL_TEXTURE_WRAP_R */ + 794, /* GL_MAX_3D_TEXTURE_SIZE */ + 1676, /* GL_VERTEX_ARRAY */ + 959, /* GL_NORMAL_ARRAY */ 139, /* GL_COLOR_ARRAY */ - 576, /* GL_INDEX_ARRAY */ - 1542, /* GL_TEXTURE_COORD_ARRAY */ - 414, /* GL_EDGE_FLAG_ARRAY */ - 1672, /* GL_VERTEX_ARRAY_SIZE */ - 1674, /* GL_VERTEX_ARRAY_TYPE */ - 1673, /* GL_VERTEX_ARRAY_STRIDE */ - 961, /* GL_NORMAL_ARRAY_TYPE */ - 960, /* GL_NORMAL_ARRAY_STRIDE */ + 578, /* GL_INDEX_ARRAY */ + 1551, /* GL_TEXTURE_COORD_ARRAY */ + 415, /* GL_EDGE_FLAG_ARRAY */ + 1681, /* GL_VERTEX_ARRAY_SIZE */ + 1683, /* GL_VERTEX_ARRAY_TYPE */ + 1682, /* GL_VERTEX_ARRAY_STRIDE */ + 964, /* GL_NORMAL_ARRAY_TYPE */ + 963, /* GL_NORMAL_ARRAY_STRIDE */ 143, /* GL_COLOR_ARRAY_SIZE */ 145, /* GL_COLOR_ARRAY_TYPE */ 144, /* GL_COLOR_ARRAY_STRIDE */ - 581, /* GL_INDEX_ARRAY_TYPE */ - 580, /* GL_INDEX_ARRAY_STRIDE */ - 1546, /* GL_TEXTURE_COORD_ARRAY_SIZE */ - 1548, /* GL_TEXTURE_COORD_ARRAY_TYPE */ - 1547, /* GL_TEXTURE_COORD_ARRAY_STRIDE */ - 418, /* GL_EDGE_FLAG_ARRAY_STRIDE */ - 1671, /* GL_VERTEX_ARRAY_POINTER */ - 959, /* GL_NORMAL_ARRAY_POINTER */ + 583, /* GL_INDEX_ARRAY_TYPE */ + 582, /* GL_INDEX_ARRAY_STRIDE */ + 1555, /* GL_TEXTURE_COORD_ARRAY_SIZE */ + 1557, /* GL_TEXTURE_COORD_ARRAY_TYPE */ + 1556, /* GL_TEXTURE_COORD_ARRAY_STRIDE */ + 419, /* GL_EDGE_FLAG_ARRAY_STRIDE */ + 1680, /* GL_VERTEX_ARRAY_POINTER */ + 962, /* GL_NORMAL_ARRAY_POINTER */ 142, /* GL_COLOR_ARRAY_POINTER */ - 579, /* GL_INDEX_ARRAY_POINTER */ - 1545, /* GL_TEXTURE_COORD_ARRAY_POINTER */ - 417, /* GL_EDGE_FLAG_ARRAY_POINTER */ - 935, /* GL_MULTISAMPLE */ - 1301, /* GL_SAMPLE_ALPHA_TO_COVERAGE */ - 1303, /* GL_SAMPLE_ALPHA_TO_ONE */ - 1308, /* GL_SAMPLE_COVERAGE */ - 1305, /* GL_SAMPLE_BUFFERS */ - 1296, /* GL_SAMPLES */ - 1312, /* GL_SAMPLE_COVERAGE_VALUE */ - 1310, /* GL_SAMPLE_COVERAGE_INVERT */ + 581, /* GL_INDEX_ARRAY_POINTER */ + 1554, /* GL_TEXTURE_COORD_ARRAY_POINTER */ + 418, /* GL_EDGE_FLAG_ARRAY_POINTER */ + 938, /* GL_MULTISAMPLE */ + 1306, /* GL_SAMPLE_ALPHA_TO_COVERAGE */ + 1308, /* GL_SAMPLE_ALPHA_TO_ONE */ + 1313, /* GL_SAMPLE_COVERAGE */ + 1310, /* GL_SAMPLE_BUFFERS */ + 1301, /* GL_SAMPLES */ + 1317, /* GL_SAMPLE_COVERAGE_VALUE */ + 1315, /* GL_SAMPLE_COVERAGE_INVERT */ 170, /* GL_COLOR_MATRIX */ 172, /* GL_COLOR_MATRIX_STACK_DEPTH */ - 799, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */ - 1126, /* GL_POST_COLOR_MATRIX_RED_SCALE */ - 1122, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */ - 1117, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */ - 1113, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */ - 1124, /* GL_POST_COLOR_MATRIX_RED_BIAS */ - 1120, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */ - 1115, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */ - 1111, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */ - 1525, /* GL_TEXTURE_COLOR_TABLE_SGI */ - 1199, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */ - 1527, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */ + 802, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */ + 1129, /* GL_POST_COLOR_MATRIX_RED_SCALE */ + 1125, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */ + 1120, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */ + 1116, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */ + 1127, /* GL_POST_COLOR_MATRIX_RED_BIAS */ + 1123, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */ + 1118, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */ + 1114, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */ + 1534, /* GL_TEXTURE_COLOR_TABLE_SGI */ + 1204, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */ + 1536, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */ 80, /* GL_BLEND_DST_RGB */ 88, /* GL_BLEND_SRC_RGB */ 79, /* GL_BLEND_DST_ALPHA */ 87, /* GL_BLEND_SRC_ALPHA */ 176, /* GL_COLOR_TABLE */ - 1136, /* GL_POST_CONVOLUTION_COLOR_TABLE */ - 1119, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */ - 1189, /* GL_PROXY_COLOR_TABLE */ - 1193, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */ - 1192, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */ + 1139, /* GL_POST_CONVOLUTION_COLOR_TABLE */ + 1122, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */ + 1192, /* GL_PROXY_COLOR_TABLE */ + 1196, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */ + 1195, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */ 200, /* GL_COLOR_TABLE_SCALE */ 180, /* GL_COLOR_TABLE_BIAS */ 185, /* GL_COLOR_TABLE_FORMAT */ @@ -4128,636 +4146,643 @@ static const unsigned reduced_enums[1277] = 191, /* GL_COLOR_TABLE_INTENSITY_SIZE */ 71, /* GL_BGR */ 72, /* GL_BGRA */ - 813, /* GL_MAX_ELEMENTS_VERTICES */ - 812, /* GL_MAX_ELEMENTS_INDICES */ - 1579, /* GL_TEXTURE_INDEX_SIZE_EXT */ + 816, /* GL_MAX_ELEMENTS_VERTICES */ + 815, /* GL_MAX_ELEMENTS_INDICES */ + 1588, /* GL_TEXTURE_INDEX_SIZE_EXT */ 136, /* GL_CLIP_VOLUME_CLIPPING_HINT_EXT */ - 1083, /* GL_POINT_SIZE_MIN */ - 1079, /* GL_POINT_SIZE_MAX */ - 1073, /* GL_POINT_FADE_THRESHOLD_SIZE */ - 1069, /* GL_POINT_DISTANCE_ATTENUATION */ + 1086, /* GL_POINT_SIZE_MIN */ + 1082, /* GL_POINT_SIZE_MAX */ + 1076, /* GL_POINT_FADE_THRESHOLD_SIZE */ + 1072, /* GL_POINT_DISTANCE_ATTENUATION */ 118, /* GL_CLAMP_TO_BORDER */ 121, /* GL_CLAMP_TO_EDGE */ - 1600, /* GL_TEXTURE_MIN_LOD */ - 1598, /* GL_TEXTURE_MAX_LOD */ - 1506, /* GL_TEXTURE_BASE_LEVEL */ - 1597, /* GL_TEXTURE_MAX_LEVEL */ - 570, /* GL_IGNORE_BORDER_HP */ - 245, /* GL_CONSTANT_BORDER_HP */ - 1245, /* GL_REPLICATE_BORDER_HP */ - 251, /* GL_CONVOLUTION_BORDER_COLOR */ - 984, /* GL_OCCLUSION_TEST_HP */ - 985, /* GL_OCCLUSION_TEST_RESULT_HP */ - 639, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */ - 1519, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */ - 1521, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */ - 1523, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */ - 1524, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */ - 1522, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */ - 1520, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */ - 795, /* GL_MAX_CLIPMAP_DEPTH_SGIX */ - 796, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */ - 1146, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */ - 1148, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */ - 1145, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */ - 1147, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */ - 1587, /* GL_TEXTURE_LOD_BIAS_S_SGIX */ - 1588, /* GL_TEXTURE_LOD_BIAS_T_SGIX */ - 1586, /* GL_TEXTURE_LOD_BIAS_R_SGIX */ - 516, /* GL_GENERATE_MIPMAP */ - 517, /* GL_GENERATE_MIPMAP_HINT */ - 480, /* GL_FOG_OFFSET_SGIX */ - 481, /* GL_FOG_OFFSET_VALUE_SGIX */ - 1533, /* GL_TEXTURE_COMPARE_SGIX */ - 1532, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */ - 1583, /* GL_TEXTURE_LEQUAL_R_SGIX */ - 1575, /* GL_TEXTURE_GEQUAL_R_SGIX */ - 322, /* GL_DEPTH_COMPONENT16 */ - 325, /* GL_DEPTH_COMPONENT24 */ - 328, /* GL_DEPTH_COMPONENT32 */ - 273, /* GL_CULL_VERTEX_EXT */ - 275, /* GL_CULL_VERTEX_OBJECT_POSITION_EXT */ - 274, /* GL_CULL_VERTEX_EYE_POSITION_EXT */ - 1728, /* GL_WRAP_BORDER_SUN */ - 1526, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */ - 632, /* GL_LIGHT_MODEL_COLOR_CONTROL */ - 1340, /* GL_SINGLE_COLOR */ - 1328, /* GL_SEPARATE_SPECULAR_COLOR */ - 1337, /* GL_SHARED_TEXTURE_PALETTE_EXT */ - 1642, /* GL_UNSIGNED_BYTE_2_3_3_REV */ - 1655, /* GL_UNSIGNED_SHORT_5_6_5 */ - 1656, /* GL_UNSIGNED_SHORT_5_6_5_REV */ - 1653, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */ - 1651, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */ - 1649, /* GL_UNSIGNED_INT_8_8_8_8_REV */ - 1647, /* GL_UNSIGNED_INT_2_10_10_10_REV */ - 1595, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */ - 1596, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */ - 1594, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */ - 886, /* GL_MIRRORED_REPEAT */ - 1284, /* GL_RGB_S3TC */ - 1261, /* GL_RGB4_S3TC */ - 1283, /* GL_RGBA_S3TC */ - 1278, /* GL_RGBA4_S3TC */ - 1281, /* GL_RGBA_DXT5_S3TC */ - 1276, /* GL_RGBA4_DXT5_S3TC */ - 238, /* GL_COMPRESSED_RGB_S3TC_DXT1_EXT */ - 233, /* GL_COMPRESSED_RGBA_S3TC_DXT1_EXT */ - 234, /* GL_COMPRESSED_RGBA_S3TC_DXT3_EXT */ - 235, /* GL_COMPRESSED_RGBA_S3TC_DXT5_EXT */ - 947, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */ - 946, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */ - 640, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */ - 467, /* GL_FOG_COORDINATE_SOURCE */ - 459, /* GL_FOG_COORD */ - 483, /* GL_FRAGMENT_DEPTH */ - 279, /* GL_CURRENT_FOG_COORD */ - 466, /* GL_FOG_COORDINATE_ARRAY_TYPE */ - 465, /* GL_FOG_COORDINATE_ARRAY_STRIDE */ - 464, /* GL_FOG_COORDINATE_ARRAY_POINTER */ - 461, /* GL_FOG_COORDINATE_ARRAY */ + 1609, /* GL_TEXTURE_MIN_LOD */ + 1607, /* GL_TEXTURE_MAX_LOD */ + 1513, /* GL_TEXTURE_BASE_LEVEL */ + 1606, /* GL_TEXTURE_MAX_LEVEL */ + 572, /* GL_IGNORE_BORDER_HP */ + 246, /* GL_CONSTANT_BORDER_HP */ + 1250, /* GL_REPLICATE_BORDER_HP */ + 252, /* GL_CONVOLUTION_BORDER_COLOR */ + 987, /* GL_OCCLUSION_TEST_HP */ + 988, /* GL_OCCLUSION_TEST_RESULT_HP */ + 641, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */ + 1528, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */ + 1530, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */ + 1532, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */ + 1533, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */ + 1531, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */ + 1529, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */ + 798, /* GL_MAX_CLIPMAP_DEPTH_SGIX */ + 799, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */ + 1149, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */ + 1151, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */ + 1148, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */ + 1150, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */ + 1596, /* GL_TEXTURE_LOD_BIAS_S_SGIX */ + 1597, /* GL_TEXTURE_LOD_BIAS_T_SGIX */ + 1595, /* GL_TEXTURE_LOD_BIAS_R_SGIX */ + 518, /* GL_GENERATE_MIPMAP */ + 519, /* GL_GENERATE_MIPMAP_HINT */ + 481, /* GL_FOG_OFFSET_SGIX */ + 482, /* GL_FOG_OFFSET_VALUE_SGIX */ + 1542, /* GL_TEXTURE_COMPARE_SGIX */ + 1541, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */ + 1592, /* GL_TEXTURE_LEQUAL_R_SGIX */ + 1584, /* GL_TEXTURE_GEQUAL_R_SGIX */ + 323, /* GL_DEPTH_COMPONENT16 */ + 326, /* GL_DEPTH_COMPONENT24 */ + 329, /* GL_DEPTH_COMPONENT32 */ + 274, /* GL_CULL_VERTEX_EXT */ + 276, /* GL_CULL_VERTEX_OBJECT_POSITION_EXT */ + 275, /* GL_CULL_VERTEX_EYE_POSITION_EXT */ + 1737, /* GL_WRAP_BORDER_SUN */ + 1535, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */ + 634, /* GL_LIGHT_MODEL_COLOR_CONTROL */ + 1345, /* GL_SINGLE_COLOR */ + 1333, /* GL_SEPARATE_SPECULAR_COLOR */ + 1342, /* GL_SHARED_TEXTURE_PALETTE_EXT */ + 1651, /* GL_UNSIGNED_BYTE_2_3_3_REV */ + 1664, /* GL_UNSIGNED_SHORT_5_6_5 */ + 1665, /* GL_UNSIGNED_SHORT_5_6_5_REV */ + 1662, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */ + 1660, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */ + 1658, /* GL_UNSIGNED_INT_8_8_8_8_REV */ + 1656, /* GL_UNSIGNED_INT_2_10_10_10_REV */ + 1604, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */ + 1605, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */ + 1603, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */ + 889, /* GL_MIRRORED_REPEAT */ + 1289, /* GL_RGB_S3TC */ + 1266, /* GL_RGB4_S3TC */ + 1288, /* GL_RGBA_S3TC */ + 1283, /* GL_RGBA4_S3TC */ + 1286, /* GL_RGBA_DXT5_S3TC */ + 1281, /* GL_RGBA4_DXT5_S3TC */ + 239, /* GL_COMPRESSED_RGB_S3TC_DXT1_EXT */ + 234, /* GL_COMPRESSED_RGBA_S3TC_DXT1_EXT */ + 235, /* GL_COMPRESSED_RGBA_S3TC_DXT3_EXT */ + 236, /* GL_COMPRESSED_RGBA_S3TC_DXT5_EXT */ + 950, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */ + 949, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */ + 642, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */ + 468, /* GL_FOG_COORDINATE_SOURCE */ + 460, /* GL_FOG_COORD */ + 484, /* GL_FRAGMENT_DEPTH */ + 280, /* GL_CURRENT_FOG_COORD */ + 467, /* GL_FOG_COORDINATE_ARRAY_TYPE */ + 466, /* GL_FOG_COORDINATE_ARRAY_STRIDE */ + 465, /* GL_FOG_COORDINATE_ARRAY_POINTER */ + 462, /* GL_FOG_COORDINATE_ARRAY */ 174, /* GL_COLOR_SUM */ - 298, /* GL_CURRENT_SECONDARY_COLOR */ - 1321, /* GL_SECONDARY_COLOR_ARRAY_SIZE */ - 1323, /* GL_SECONDARY_COLOR_ARRAY_TYPE */ - 1322, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */ - 1320, /* GL_SECONDARY_COLOR_ARRAY_POINTER */ - 1317, /* GL_SECONDARY_COLOR_ARRAY */ - 526, /* GL_GL_CURRENT_RASTER_SECONDARY_COLOR */ + 299, /* GL_CURRENT_SECONDARY_COLOR */ + 1326, /* GL_SECONDARY_COLOR_ARRAY_SIZE */ + 1328, /* GL_SECONDARY_COLOR_ARRAY_TYPE */ + 1327, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */ + 1325, /* GL_SECONDARY_COLOR_ARRAY_POINTER */ + 1322, /* GL_SECONDARY_COLOR_ARRAY */ + 528, /* GL_GL_CURRENT_RASTER_SECONDARY_COLOR */ 28, /* GL_ALIASED_POINT_SIZE_RANGE */ 27, /* GL_ALIASED_LINE_WIDTH_RANGE */ - 1437, /* GL_TEXTURE0 */ - 1439, /* GL_TEXTURE1 */ - 1461, /* GL_TEXTURE2 */ - 1483, /* GL_TEXTURE3 */ - 1489, /* GL_TEXTURE4 */ - 1491, /* GL_TEXTURE5 */ - 1493, /* GL_TEXTURE6 */ - 1495, /* GL_TEXTURE7 */ - 1497, /* GL_TEXTURE8 */ - 1499, /* GL_TEXTURE9 */ - 1440, /* GL_TEXTURE10 */ - 1442, /* GL_TEXTURE11 */ - 1444, /* GL_TEXTURE12 */ - 1446, /* GL_TEXTURE13 */ - 1448, /* GL_TEXTURE14 */ - 1450, /* GL_TEXTURE15 */ - 1452, /* GL_TEXTURE16 */ - 1454, /* GL_TEXTURE17 */ - 1456, /* GL_TEXTURE18 */ - 1458, /* GL_TEXTURE19 */ - 1462, /* GL_TEXTURE20 */ - 1464, /* GL_TEXTURE21 */ - 1466, /* GL_TEXTURE22 */ - 1468, /* GL_TEXTURE23 */ - 1470, /* GL_TEXTURE24 */ - 1472, /* GL_TEXTURE25 */ - 1474, /* GL_TEXTURE26 */ - 1476, /* GL_TEXTURE27 */ - 1478, /* GL_TEXTURE28 */ - 1480, /* GL_TEXTURE29 */ - 1484, /* GL_TEXTURE30 */ - 1486, /* GL_TEXTURE31 */ + 1442, /* GL_TEXTURE0 */ + 1444, /* GL_TEXTURE1 */ + 1466, /* GL_TEXTURE2 */ + 1488, /* GL_TEXTURE3 */ + 1494, /* GL_TEXTURE4 */ + 1496, /* GL_TEXTURE5 */ + 1498, /* GL_TEXTURE6 */ + 1500, /* GL_TEXTURE7 */ + 1502, /* GL_TEXTURE8 */ + 1504, /* GL_TEXTURE9 */ + 1445, /* GL_TEXTURE10 */ + 1447, /* GL_TEXTURE11 */ + 1449, /* GL_TEXTURE12 */ + 1451, /* GL_TEXTURE13 */ + 1453, /* GL_TEXTURE14 */ + 1455, /* GL_TEXTURE15 */ + 1457, /* GL_TEXTURE16 */ + 1459, /* GL_TEXTURE17 */ + 1461, /* GL_TEXTURE18 */ + 1463, /* GL_TEXTURE19 */ + 1467, /* GL_TEXTURE20 */ + 1469, /* GL_TEXTURE21 */ + 1471, /* GL_TEXTURE22 */ + 1473, /* GL_TEXTURE23 */ + 1475, /* GL_TEXTURE24 */ + 1477, /* GL_TEXTURE25 */ + 1479, /* GL_TEXTURE26 */ + 1481, /* GL_TEXTURE27 */ + 1483, /* GL_TEXTURE28 */ + 1485, /* GL_TEXTURE29 */ + 1489, /* GL_TEXTURE30 */ + 1491, /* GL_TEXTURE31 */ 18, /* GL_ACTIVE_TEXTURE */ 124, /* GL_CLIENT_ACTIVE_TEXTURE */ - 864, /* GL_MAX_TEXTURE_UNITS */ - 1621, /* GL_TRANSPOSE_MODELVIEW_MATRIX */ - 1624, /* GL_TRANSPOSE_PROJECTION_MATRIX */ - 1626, /* GL_TRANSPOSE_TEXTURE_MATRIX */ - 1618, /* GL_TRANSPOSE_COLOR_MATRIX */ - 1425, /* GL_SUBTRACT */ - 853, /* GL_MAX_RENDERBUFFER_SIZE_EXT */ - 221, /* GL_COMPRESSED_ALPHA */ - 225, /* GL_COMPRESSED_LUMINANCE */ - 226, /* GL_COMPRESSED_LUMINANCE_ALPHA */ - 223, /* GL_COMPRESSED_INTENSITY */ - 229, /* GL_COMPRESSED_RGB */ - 230, /* GL_COMPRESSED_RGBA */ - 1540, /* GL_TEXTURE_COMPRESSION_HINT */ - 1602, /* GL_TEXTURE_RECTANGLE_ARB */ - 1512, /* GL_TEXTURE_BINDING_RECTANGLE_ARB */ - 1202, /* GL_PROXY_TEXTURE_RECTANGLE_ARB */ - 851, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB */ - 334, /* GL_DEPTH_STENCIL_NV */ - 1646, /* GL_UNSIGNED_INT_24_8_NV */ - 860, /* GL_MAX_TEXTURE_LOD_BIAS */ - 1593, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */ - 861, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */ - 1569, /* GL_TEXTURE_FILTER_CONTROL */ - 1584, /* GL_TEXTURE_LOD_BIAS */ + 867, /* GL_MAX_TEXTURE_UNITS */ + 1630, /* GL_TRANSPOSE_MODELVIEW_MATRIX */ + 1633, /* GL_TRANSPOSE_PROJECTION_MATRIX */ + 1635, /* GL_TRANSPOSE_TEXTURE_MATRIX */ + 1627, /* GL_TRANSPOSE_COLOR_MATRIX */ + 1430, /* GL_SUBTRACT */ + 856, /* GL_MAX_RENDERBUFFER_SIZE_EXT */ + 222, /* GL_COMPRESSED_ALPHA */ + 226, /* GL_COMPRESSED_LUMINANCE */ + 227, /* GL_COMPRESSED_LUMINANCE_ALPHA */ + 224, /* GL_COMPRESSED_INTENSITY */ + 230, /* GL_COMPRESSED_RGB */ + 231, /* GL_COMPRESSED_RGBA */ + 1549, /* GL_TEXTURE_COMPRESSION_HINT */ + 1611, /* GL_TEXTURE_RECTANGLE_ARB */ + 1521, /* GL_TEXTURE_BINDING_RECTANGLE_ARB */ + 1207, /* GL_PROXY_TEXTURE_RECTANGLE_ARB */ + 854, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB */ + 335, /* GL_DEPTH_STENCIL_NV */ + 1655, /* GL_UNSIGNED_INT_24_8_NV */ + 863, /* GL_MAX_TEXTURE_LOD_BIAS */ + 1602, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */ + 864, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */ + 1578, /* GL_TEXTURE_FILTER_CONTROL */ + 1593, /* GL_TEXTURE_LOD_BIAS */ 207, /* GL_COMBINE4 */ - 854, /* GL_MAX_SHININESS_NV */ - 855, /* GL_MAX_SPOT_EXPONENT_NV */ - 574, /* GL_INCR_WRAP */ - 309, /* GL_DECR_WRAP */ - 906, /* GL_MODELVIEW1_ARB */ - 962, /* GL_NORMAL_MAP */ - 1231, /* GL_REFLECTION_MAP */ - 1549, /* GL_TEXTURE_CUBE_MAP */ - 1510, /* GL_TEXTURE_BINDING_CUBE_MAP */ - 1557, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */ - 1551, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */ - 1559, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */ - 1553, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */ - 1561, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */ - 1555, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */ - 1200, /* GL_PROXY_TEXTURE_CUBE_MAP */ - 807, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */ - 941, /* GL_MULTISAMPLE_FILTER_HINT_NV */ - 475, /* GL_FOG_DISTANCE_MODE_NV */ - 434, /* GL_EYE_RADIAL_NV */ - 433, /* GL_EYE_PLANE_ABSOLUTE_NV */ + 857, /* GL_MAX_SHININESS_NV */ + 858, /* GL_MAX_SPOT_EXPONENT_NV */ + 576, /* GL_INCR_WRAP */ + 310, /* GL_DECR_WRAP */ + 909, /* GL_MODELVIEW1_ARB */ + 965, /* GL_NORMAL_MAP */ + 1236, /* GL_REFLECTION_MAP */ + 1558, /* GL_TEXTURE_CUBE_MAP */ + 1519, /* GL_TEXTURE_BINDING_CUBE_MAP */ + 1566, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */ + 1560, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */ + 1568, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */ + 1562, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */ + 1570, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */ + 1564, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */ + 1205, /* GL_PROXY_TEXTURE_CUBE_MAP */ + 810, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */ + 944, /* GL_MULTISAMPLE_FILTER_HINT_NV */ + 476, /* GL_FOG_DISTANCE_MODE_NV */ + 435, /* GL_EYE_RADIAL_NV */ + 434, /* GL_EYE_PLANE_ABSOLUTE_NV */ 206, /* GL_COMBINE */ 213, /* GL_COMBINE_RGB */ 208, /* GL_COMBINE_ALPHA */ - 1285, /* GL_RGB_SCALE */ + 1290, /* GL_RGB_SCALE */ 24, /* GL_ADD_SIGNED */ - 601, /* GL_INTERPOLATE */ - 240, /* GL_CONSTANT */ - 1152, /* GL_PRIMARY_COLOR */ - 1149, /* GL_PREVIOUS */ - 1351, /* GL_SOURCE0_RGB */ - 1357, /* GL_SOURCE1_RGB */ - 1363, /* GL_SOURCE2_RGB */ - 1367, /* GL_SOURCE3_RGB_NV */ - 1348, /* GL_SOURCE0_ALPHA */ - 1354, /* GL_SOURCE1_ALPHA */ - 1360, /* GL_SOURCE2_ALPHA */ - 1366, /* GL_SOURCE3_ALPHA_NV */ - 998, /* GL_OPERAND0_RGB */ - 1004, /* GL_OPERAND1_RGB */ - 1010, /* GL_OPERAND2_RGB */ - 1014, /* GL_OPERAND3_RGB_NV */ - 995, /* GL_OPERAND0_ALPHA */ - 1001, /* GL_OPERAND1_ALPHA */ - 1007, /* GL_OPERAND2_ALPHA */ - 1013, /* GL_OPERAND3_ALPHA_NV */ - 1668, /* GL_VERTEX_ARRAY_BINDING_APPLE */ - 1732, /* GL_YCBCR_422_APPLE */ - 1657, /* GL_UNSIGNED_SHORT_8_8_APPLE */ - 1659, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */ - 1342, /* GL_SLICE_ACCUM_SUN */ - 1207, /* GL_QUAD_MESH_SUN */ - 1630, /* GL_TRIANGLE_MESH_SUN */ - 1706, /* GL_VERTEX_PROGRAM_ARB */ - 1717, /* GL_VERTEX_STATE_PROGRAM_NV */ - 1693, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */ - 1699, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */ - 1701, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */ - 1703, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */ - 300, /* GL_CURRENT_VERTEX_ATTRIB */ - 1165, /* GL_PROGRAM_LENGTH_ARB */ - 1179, /* GL_PROGRAM_STRING_ARB */ - 928, /* GL_MODELVIEW_PROJECTION_NV */ - 569, /* GL_IDENTITY_NV */ - 614, /* GL_INVERSE_NV */ - 1623, /* GL_TRANSPOSE_NV */ - 615, /* GL_INVERSE_TRANSPOSE_NV */ - 837, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */ - 836, /* GL_MAX_PROGRAM_MATRICES_ARB */ - 745, /* GL_MATRIX0_NV */ - 757, /* GL_MATRIX1_NV */ - 769, /* GL_MATRIX2_NV */ - 773, /* GL_MATRIX3_NV */ - 775, /* GL_MATRIX4_NV */ - 777, /* GL_MATRIX5_NV */ - 779, /* GL_MATRIX6_NV */ - 781, /* GL_MATRIX7_NV */ - 285, /* GL_CURRENT_MATRIX_STACK_DEPTH_ARB */ - 282, /* GL_CURRENT_MATRIX_ARB */ - 1709, /* GL_VERTEX_PROGRAM_POINT_SIZE */ - 1712, /* GL_VERTEX_PROGRAM_TWO_SIDE */ - 1177, /* GL_PROGRAM_PARAMETER_NV */ - 1697, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */ - 1181, /* GL_PROGRAM_TARGET_NV */ - 1178, /* GL_PROGRAM_RESIDENT_NV */ - 1615, /* GL_TRACK_MATRIX_NV */ - 1616, /* GL_TRACK_MATRIX_TRANSFORM_NV */ - 1707, /* GL_VERTEX_PROGRAM_BINDING_NV */ - 1159, /* GL_PROGRAM_ERROR_POSITION_ARB */ - 319, /* GL_DEPTH_CLAMP_NV */ - 1675, /* GL_VERTEX_ATTRIB_ARRAY0_NV */ - 1682, /* GL_VERTEX_ATTRIB_ARRAY1_NV */ - 1683, /* GL_VERTEX_ATTRIB_ARRAY2_NV */ - 1684, /* GL_VERTEX_ATTRIB_ARRAY3_NV */ - 1685, /* GL_VERTEX_ATTRIB_ARRAY4_NV */ - 1686, /* GL_VERTEX_ATTRIB_ARRAY5_NV */ - 1687, /* GL_VERTEX_ATTRIB_ARRAY6_NV */ - 1688, /* GL_VERTEX_ATTRIB_ARRAY7_NV */ - 1689, /* GL_VERTEX_ATTRIB_ARRAY8_NV */ - 1690, /* GL_VERTEX_ATTRIB_ARRAY9_NV */ - 1676, /* GL_VERTEX_ATTRIB_ARRAY10_NV */ - 1677, /* GL_VERTEX_ATTRIB_ARRAY11_NV */ - 1678, /* GL_VERTEX_ATTRIB_ARRAY12_NV */ - 1679, /* GL_VERTEX_ATTRIB_ARRAY13_NV */ - 1680, /* GL_VERTEX_ATTRIB_ARRAY14_NV */ - 1681, /* GL_VERTEX_ATTRIB_ARRAY15_NV */ - 699, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */ - 706, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */ - 707, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */ - 708, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */ - 709, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */ - 710, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */ - 711, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */ - 712, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */ - 713, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */ - 714, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */ - 700, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */ - 701, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */ - 702, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */ - 703, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */ - 704, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */ - 705, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */ - 726, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */ - 733, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */ - 734, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */ - 735, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */ - 736, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */ - 737, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */ - 738, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */ - 1158, /* GL_PROGRAM_BINDING_ARB */ - 740, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */ - 741, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */ - 727, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */ - 728, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */ - 729, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */ - 730, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */ - 731, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */ - 732, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */ - 1538, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */ - 1535, /* GL_TEXTURE_COMPRESSED */ - 967, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */ - 239, /* GL_COMPRESSED_TEXTURE_FORMATS */ - 876, /* GL_MAX_VERTEX_UNITS_ARB */ + 603, /* GL_INTERPOLATE */ + 241, /* GL_CONSTANT */ + 1155, /* GL_PRIMARY_COLOR */ + 1152, /* GL_PREVIOUS */ + 1356, /* GL_SOURCE0_RGB */ + 1362, /* GL_SOURCE1_RGB */ + 1368, /* GL_SOURCE2_RGB */ + 1372, /* GL_SOURCE3_RGB_NV */ + 1353, /* GL_SOURCE0_ALPHA */ + 1359, /* GL_SOURCE1_ALPHA */ + 1365, /* GL_SOURCE2_ALPHA */ + 1371, /* GL_SOURCE3_ALPHA_NV */ + 1001, /* GL_OPERAND0_RGB */ + 1007, /* GL_OPERAND1_RGB */ + 1013, /* GL_OPERAND2_RGB */ + 1017, /* GL_OPERAND3_RGB_NV */ + 998, /* GL_OPERAND0_ALPHA */ + 1004, /* GL_OPERAND1_ALPHA */ + 1010, /* GL_OPERAND2_ALPHA */ + 1016, /* GL_OPERAND3_ALPHA_NV */ + 1677, /* GL_VERTEX_ARRAY_BINDING_APPLE */ + 1741, /* GL_YCBCR_422_APPLE */ + 1666, /* GL_UNSIGNED_SHORT_8_8_APPLE */ + 1668, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */ + 1347, /* GL_SLICE_ACCUM_SUN */ + 1212, /* GL_QUAD_MESH_SUN */ + 1639, /* GL_TRIANGLE_MESH_SUN */ + 1715, /* GL_VERTEX_PROGRAM_ARB */ + 1726, /* GL_VERTEX_STATE_PROGRAM_NV */ + 1702, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */ + 1708, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */ + 1710, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */ + 1712, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */ + 301, /* GL_CURRENT_VERTEX_ATTRIB */ + 1168, /* GL_PROGRAM_LENGTH_ARB */ + 1182, /* GL_PROGRAM_STRING_ARB */ + 931, /* GL_MODELVIEW_PROJECTION_NV */ + 571, /* GL_IDENTITY_NV */ + 616, /* GL_INVERSE_NV */ + 1632, /* GL_TRANSPOSE_NV */ + 617, /* GL_INVERSE_TRANSPOSE_NV */ + 840, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */ + 839, /* GL_MAX_PROGRAM_MATRICES_ARB */ + 747, /* GL_MATRIX0_NV */ + 759, /* GL_MATRIX1_NV */ + 771, /* GL_MATRIX2_NV */ + 775, /* GL_MATRIX3_NV */ + 777, /* GL_MATRIX4_NV */ + 779, /* GL_MATRIX5_NV */ + 781, /* GL_MATRIX6_NV */ + 783, /* GL_MATRIX7_NV */ + 286, /* GL_CURRENT_MATRIX_STACK_DEPTH_ARB */ + 283, /* GL_CURRENT_MATRIX_ARB */ + 1718, /* GL_VERTEX_PROGRAM_POINT_SIZE */ + 1721, /* GL_VERTEX_PROGRAM_TWO_SIDE */ + 1180, /* GL_PROGRAM_PARAMETER_NV */ + 1706, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */ + 1184, /* GL_PROGRAM_TARGET_NV */ + 1181, /* GL_PROGRAM_RESIDENT_NV */ + 1624, /* GL_TRACK_MATRIX_NV */ + 1625, /* GL_TRACK_MATRIX_TRANSFORM_NV */ + 1716, /* GL_VERTEX_PROGRAM_BINDING_NV */ + 1162, /* GL_PROGRAM_ERROR_POSITION_ARB */ + 320, /* GL_DEPTH_CLAMP_NV */ + 1684, /* GL_VERTEX_ATTRIB_ARRAY0_NV */ + 1691, /* GL_VERTEX_ATTRIB_ARRAY1_NV */ + 1692, /* GL_VERTEX_ATTRIB_ARRAY2_NV */ + 1693, /* GL_VERTEX_ATTRIB_ARRAY3_NV */ + 1694, /* GL_VERTEX_ATTRIB_ARRAY4_NV */ + 1695, /* GL_VERTEX_ATTRIB_ARRAY5_NV */ + 1696, /* GL_VERTEX_ATTRIB_ARRAY6_NV */ + 1697, /* GL_VERTEX_ATTRIB_ARRAY7_NV */ + 1698, /* GL_VERTEX_ATTRIB_ARRAY8_NV */ + 1699, /* GL_VERTEX_ATTRIB_ARRAY9_NV */ + 1685, /* GL_VERTEX_ATTRIB_ARRAY10_NV */ + 1686, /* GL_VERTEX_ATTRIB_ARRAY11_NV */ + 1687, /* GL_VERTEX_ATTRIB_ARRAY12_NV */ + 1688, /* GL_VERTEX_ATTRIB_ARRAY13_NV */ + 1689, /* GL_VERTEX_ATTRIB_ARRAY14_NV */ + 1690, /* GL_VERTEX_ATTRIB_ARRAY15_NV */ + 701, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */ + 708, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */ + 709, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */ + 710, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */ + 711, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */ + 712, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */ + 713, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */ + 714, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */ + 715, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */ + 716, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */ + 702, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */ + 703, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */ + 704, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */ + 705, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */ + 706, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */ + 707, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */ + 728, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */ + 735, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */ + 736, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */ + 737, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */ + 738, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */ + 739, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */ + 740, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */ + 1161, /* GL_PROGRAM_BINDING_ARB */ + 742, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */ + 743, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */ + 729, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */ + 730, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */ + 731, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */ + 732, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */ + 733, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */ + 734, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */ + 1547, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */ + 1544, /* GL_TEXTURE_COMPRESSED */ + 970, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */ + 240, /* GL_COMPRESSED_TEXTURE_FORMATS */ + 879, /* GL_MAX_VERTEX_UNITS_ARB */ 22, /* GL_ACTIVE_VERTEX_UNITS_ARB */ - 1727, /* GL_WEIGHT_SUM_UNITY_ARB */ - 1705, /* GL_VERTEX_BLEND_ARB */ - 302, /* GL_CURRENT_WEIGHT_ARB */ - 1726, /* GL_WEIGHT_ARRAY_TYPE_ARB */ - 1725, /* GL_WEIGHT_ARRAY_STRIDE_ARB */ - 1724, /* GL_WEIGHT_ARRAY_SIZE_ARB */ - 1723, /* GL_WEIGHT_ARRAY_POINTER_ARB */ - 1720, /* GL_WEIGHT_ARRAY_ARB */ - 345, /* GL_DOT3_RGB */ - 346, /* GL_DOT3_RGBA */ - 237, /* GL_COMPRESSED_RGB_FXT1_3DFX */ - 232, /* GL_COMPRESSED_RGBA_FXT1_3DFX */ - 936, /* GL_MULTISAMPLE_3DFX */ - 1306, /* GL_SAMPLE_BUFFERS_3DFX */ - 1297, /* GL_SAMPLES_3DFX */ - 917, /* GL_MODELVIEW2_ARB */ - 920, /* GL_MODELVIEW3_ARB */ - 921, /* GL_MODELVIEW4_ARB */ - 922, /* GL_MODELVIEW5_ARB */ - 923, /* GL_MODELVIEW6_ARB */ - 924, /* GL_MODELVIEW7_ARB */ - 925, /* GL_MODELVIEW8_ARB */ - 926, /* GL_MODELVIEW9_ARB */ - 896, /* GL_MODELVIEW10_ARB */ - 897, /* GL_MODELVIEW11_ARB */ - 898, /* GL_MODELVIEW12_ARB */ - 899, /* GL_MODELVIEW13_ARB */ - 900, /* GL_MODELVIEW14_ARB */ - 901, /* GL_MODELVIEW15_ARB */ - 902, /* GL_MODELVIEW16_ARB */ - 903, /* GL_MODELVIEW17_ARB */ - 904, /* GL_MODELVIEW18_ARB */ - 905, /* GL_MODELVIEW19_ARB */ - 907, /* GL_MODELVIEW20_ARB */ - 908, /* GL_MODELVIEW21_ARB */ - 909, /* GL_MODELVIEW22_ARB */ - 910, /* GL_MODELVIEW23_ARB */ - 911, /* GL_MODELVIEW24_ARB */ - 912, /* GL_MODELVIEW25_ARB */ - 913, /* GL_MODELVIEW26_ARB */ - 914, /* GL_MODELVIEW27_ARB */ - 915, /* GL_MODELVIEW28_ARB */ - 916, /* GL_MODELVIEW29_ARB */ - 918, /* GL_MODELVIEW30_ARB */ - 919, /* GL_MODELVIEW31_ARB */ - 350, /* GL_DOT3_RGB_EXT */ - 348, /* GL_DOT3_RGBA_EXT */ - 890, /* GL_MIRROR_CLAMP_EXT */ - 893, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */ - 931, /* GL_MODULATE_ADD_ATI */ - 932, /* GL_MODULATE_SIGNED_ADD_ATI */ - 933, /* GL_MODULATE_SUBTRACT_ATI */ - 1733, /* GL_YCBCR_MESA */ - 1022, /* GL_PACK_INVERT_MESA */ - 305, /* GL_DEBUG_OBJECT_MESA */ - 306, /* GL_DEBUG_PRINT_MESA */ - 304, /* GL_DEBUG_ASSERT_MESA */ + 1736, /* GL_WEIGHT_SUM_UNITY_ARB */ + 1714, /* GL_VERTEX_BLEND_ARB */ + 303, /* GL_CURRENT_WEIGHT_ARB */ + 1735, /* GL_WEIGHT_ARRAY_TYPE_ARB */ + 1734, /* GL_WEIGHT_ARRAY_STRIDE_ARB */ + 1733, /* GL_WEIGHT_ARRAY_SIZE_ARB */ + 1732, /* GL_WEIGHT_ARRAY_POINTER_ARB */ + 1729, /* GL_WEIGHT_ARRAY_ARB */ + 346, /* GL_DOT3_RGB */ + 347, /* GL_DOT3_RGBA */ + 238, /* GL_COMPRESSED_RGB_FXT1_3DFX */ + 233, /* GL_COMPRESSED_RGBA_FXT1_3DFX */ + 939, /* GL_MULTISAMPLE_3DFX */ + 1311, /* GL_SAMPLE_BUFFERS_3DFX */ + 1302, /* GL_SAMPLES_3DFX */ + 920, /* GL_MODELVIEW2_ARB */ + 923, /* GL_MODELVIEW3_ARB */ + 924, /* GL_MODELVIEW4_ARB */ + 925, /* GL_MODELVIEW5_ARB */ + 926, /* GL_MODELVIEW6_ARB */ + 927, /* GL_MODELVIEW7_ARB */ + 928, /* GL_MODELVIEW8_ARB */ + 929, /* GL_MODELVIEW9_ARB */ + 899, /* GL_MODELVIEW10_ARB */ + 900, /* GL_MODELVIEW11_ARB */ + 901, /* GL_MODELVIEW12_ARB */ + 902, /* GL_MODELVIEW13_ARB */ + 903, /* GL_MODELVIEW14_ARB */ + 904, /* GL_MODELVIEW15_ARB */ + 905, /* GL_MODELVIEW16_ARB */ + 906, /* GL_MODELVIEW17_ARB */ + 907, /* GL_MODELVIEW18_ARB */ + 908, /* GL_MODELVIEW19_ARB */ + 910, /* GL_MODELVIEW20_ARB */ + 911, /* GL_MODELVIEW21_ARB */ + 912, /* GL_MODELVIEW22_ARB */ + 913, /* GL_MODELVIEW23_ARB */ + 914, /* GL_MODELVIEW24_ARB */ + 915, /* GL_MODELVIEW25_ARB */ + 916, /* GL_MODELVIEW26_ARB */ + 917, /* GL_MODELVIEW27_ARB */ + 918, /* GL_MODELVIEW28_ARB */ + 919, /* GL_MODELVIEW29_ARB */ + 921, /* GL_MODELVIEW30_ARB */ + 922, /* GL_MODELVIEW31_ARB */ + 351, /* GL_DOT3_RGB_EXT */ + 349, /* GL_DOT3_RGBA_EXT */ + 893, /* GL_MIRROR_CLAMP_EXT */ + 896, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */ + 934, /* GL_MODULATE_ADD_ATI */ + 935, /* GL_MODULATE_SIGNED_ADD_ATI */ + 936, /* GL_MODULATE_SUBTRACT_ATI */ + 1742, /* GL_YCBCR_MESA */ + 1025, /* GL_PACK_INVERT_MESA */ + 306, /* GL_DEBUG_OBJECT_MESA */ + 307, /* GL_DEBUG_PRINT_MESA */ + 305, /* GL_DEBUG_ASSERT_MESA */ 107, /* GL_BUFFER_SIZE */ 109, /* GL_BUFFER_USAGE */ - 1393, /* GL_STENCIL_BACK_FUNC */ - 1392, /* GL_STENCIL_BACK_FAIL */ - 1394, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */ - 1395, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */ - 484, /* GL_FRAGMENT_PROGRAM_ARB */ - 1156, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */ - 1184, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */ - 1183, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */ - 1168, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ - 1174, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ - 1173, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ - 826, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */ - 849, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */ - 848, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */ - 839, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ - 845, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ - 844, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ - 809, /* GL_MAX_DRAW_BUFFERS */ - 354, /* GL_DRAW_BUFFER0 */ - 357, /* GL_DRAW_BUFFER1 */ - 378, /* GL_DRAW_BUFFER2 */ - 381, /* GL_DRAW_BUFFER3 */ - 384, /* GL_DRAW_BUFFER4 */ - 387, /* GL_DRAW_BUFFER5 */ - 390, /* GL_DRAW_BUFFER6 */ - 393, /* GL_DRAW_BUFFER7 */ - 396, /* GL_DRAW_BUFFER8 */ - 399, /* GL_DRAW_BUFFER9 */ - 358, /* GL_DRAW_BUFFER10 */ - 361, /* GL_DRAW_BUFFER11 */ - 364, /* GL_DRAW_BUFFER12 */ - 367, /* GL_DRAW_BUFFER13 */ - 370, /* GL_DRAW_BUFFER14 */ - 373, /* GL_DRAW_BUFFER15 */ + 1398, /* GL_STENCIL_BACK_FUNC */ + 1397, /* GL_STENCIL_BACK_FAIL */ + 1399, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */ + 1400, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */ + 485, /* GL_FRAGMENT_PROGRAM_ARB */ + 1159, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */ + 1187, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */ + 1186, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */ + 1171, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ + 1177, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ + 1176, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ + 829, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */ + 852, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */ + 851, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */ + 842, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ + 848, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ + 847, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ + 812, /* GL_MAX_DRAW_BUFFERS */ + 355, /* GL_DRAW_BUFFER0 */ + 358, /* GL_DRAW_BUFFER1 */ + 379, /* GL_DRAW_BUFFER2 */ + 382, /* GL_DRAW_BUFFER3 */ + 385, /* GL_DRAW_BUFFER4 */ + 388, /* GL_DRAW_BUFFER5 */ + 391, /* GL_DRAW_BUFFER6 */ + 394, /* GL_DRAW_BUFFER7 */ + 397, /* GL_DRAW_BUFFER8 */ + 400, /* GL_DRAW_BUFFER9 */ + 359, /* GL_DRAW_BUFFER10 */ + 362, /* GL_DRAW_BUFFER11 */ + 365, /* GL_DRAW_BUFFER12 */ + 368, /* GL_DRAW_BUFFER13 */ + 371, /* GL_DRAW_BUFFER14 */ + 374, /* GL_DRAW_BUFFER15 */ 82, /* GL_BLEND_EQUATION_ALPHA */ - 790, /* GL_MATRIX_PALETTE_ARB */ - 820, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */ - 823, /* GL_MAX_PALETTE_MATRICES_ARB */ - 288, /* GL_CURRENT_PALETTE_MATRIX_ARB */ - 784, /* GL_MATRIX_INDEX_ARRAY_ARB */ - 283, /* GL_CURRENT_MATRIX_INDEX_ARB */ - 786, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */ - 788, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */ - 787, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */ - 785, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */ - 1564, /* GL_TEXTURE_DEPTH_SIZE */ - 338, /* GL_DEPTH_TEXTURE_MODE */ - 1530, /* GL_TEXTURE_COMPARE_MODE */ - 1528, /* GL_TEXTURE_COMPARE_FUNC */ - 216, /* GL_COMPARE_R_TO_TEXTURE */ - 1090, /* GL_POINT_SPRITE */ - 265, /* GL_COORD_REPLACE */ - 1094, /* GL_POINT_SPRITE_R_MODE_NV */ - 1209, /* GL_QUERY_COUNTER_BITS */ - 290, /* GL_CURRENT_QUERY */ - 1211, /* GL_QUERY_RESULT */ - 1213, /* GL_QUERY_RESULT_AVAILABLE */ - 870, /* GL_MAX_VERTEX_ATTRIBS */ - 1695, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */ - 336, /* GL_DEPTH_STENCIL_TO_RGBA_NV */ - 335, /* GL_DEPTH_STENCIL_TO_BGRA_NV */ - 856, /* GL_MAX_TEXTURE_COORDS */ - 858, /* GL_MAX_TEXTURE_IMAGE_UNITS */ - 1161, /* GL_PROGRAM_ERROR_STRING_ARB */ - 1163, /* GL_PROGRAM_FORMAT_ASCII_ARB */ - 1162, /* GL_PROGRAM_FORMAT_ARB */ - 1609, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */ - 317, /* GL_DEPTH_BOUNDS_TEST_EXT */ - 316, /* GL_DEPTH_BOUNDS_EXT */ + 792, /* GL_MATRIX_PALETTE_ARB */ + 823, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */ + 826, /* GL_MAX_PALETTE_MATRICES_ARB */ + 289, /* GL_CURRENT_PALETTE_MATRIX_ARB */ + 786, /* GL_MATRIX_INDEX_ARRAY_ARB */ + 284, /* GL_CURRENT_MATRIX_INDEX_ARB */ + 788, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */ + 790, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */ + 789, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */ + 787, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */ + 1573, /* GL_TEXTURE_DEPTH_SIZE */ + 339, /* GL_DEPTH_TEXTURE_MODE */ + 1539, /* GL_TEXTURE_COMPARE_MODE */ + 1537, /* GL_TEXTURE_COMPARE_FUNC */ + 217, /* GL_COMPARE_R_TO_TEXTURE */ + 1093, /* GL_POINT_SPRITE */ + 266, /* GL_COORD_REPLACE */ + 1097, /* GL_POINT_SPRITE_R_MODE_NV */ + 1214, /* GL_QUERY_COUNTER_BITS */ + 291, /* GL_CURRENT_QUERY */ + 1216, /* GL_QUERY_RESULT */ + 1218, /* GL_QUERY_RESULT_AVAILABLE */ + 873, /* GL_MAX_VERTEX_ATTRIBS */ + 1704, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */ + 337, /* GL_DEPTH_STENCIL_TO_RGBA_NV */ + 336, /* GL_DEPTH_STENCIL_TO_BGRA_NV */ + 859, /* GL_MAX_TEXTURE_COORDS */ + 861, /* GL_MAX_TEXTURE_IMAGE_UNITS */ + 1164, /* GL_PROGRAM_ERROR_STRING_ARB */ + 1166, /* GL_PROGRAM_FORMAT_ASCII_ARB */ + 1165, /* GL_PROGRAM_FORMAT_ARB */ + 1618, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */ + 318, /* GL_DEPTH_BOUNDS_TEST_EXT */ + 317, /* GL_DEPTH_BOUNDS_EXT */ 52, /* GL_ARRAY_BUFFER */ - 419, /* GL_ELEMENT_ARRAY_BUFFER */ + 420, /* GL_ELEMENT_ARRAY_BUFFER */ 54, /* GL_ARRAY_BUFFER_BINDING */ - 421, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */ - 1669, /* GL_VERTEX_ARRAY_BUFFER_BINDING */ - 957, /* GL_NORMAL_ARRAY_BUFFER_BINDING */ + 422, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */ + 1678, /* GL_VERTEX_ARRAY_BUFFER_BINDING */ + 960, /* GL_NORMAL_ARRAY_BUFFER_BINDING */ 140, /* GL_COLOR_ARRAY_BUFFER_BINDING */ - 577, /* GL_INDEX_ARRAY_BUFFER_BINDING */ - 1543, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */ - 415, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */ - 1318, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */ - 462, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */ - 1721, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */ - 1691, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */ - 1164, /* GL_PROGRAM_INSTRUCTIONS_ARB */ - 832, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */ - 1170, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ - 841, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ - 1182, /* GL_PROGRAM_TEMPORARIES_ARB */ - 847, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */ - 1172, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */ - 843, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */ - 1176, /* GL_PROGRAM_PARAMETERS_ARB */ - 846, /* GL_MAX_PROGRAM_PARAMETERS_ARB */ - 1171, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */ - 842, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */ - 1157, /* GL_PROGRAM_ATTRIBS_ARB */ - 827, /* GL_MAX_PROGRAM_ATTRIBS_ARB */ - 1169, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */ - 840, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */ - 1155, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */ - 825, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */ - 1167, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ - 838, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ - 833, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */ - 829, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */ - 1185, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */ - 1620, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */ - 1221, /* GL_READ_ONLY */ - 1729, /* GL_WRITE_ONLY */ - 1223, /* GL_READ_WRITE */ + 579, /* GL_INDEX_ARRAY_BUFFER_BINDING */ + 1552, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */ + 416, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */ + 1323, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */ + 463, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */ + 1730, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */ + 1700, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */ + 1167, /* GL_PROGRAM_INSTRUCTIONS_ARB */ + 835, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */ + 1173, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ + 844, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ + 1185, /* GL_PROGRAM_TEMPORARIES_ARB */ + 850, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */ + 1175, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */ + 846, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */ + 1179, /* GL_PROGRAM_PARAMETERS_ARB */ + 849, /* GL_MAX_PROGRAM_PARAMETERS_ARB */ + 1174, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */ + 845, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */ + 1160, /* GL_PROGRAM_ATTRIBS_ARB */ + 830, /* GL_MAX_PROGRAM_ATTRIBS_ARB */ + 1172, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */ + 843, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */ + 1158, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */ + 828, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */ + 1170, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ + 841, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ + 836, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */ + 832, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */ + 1188, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */ + 1629, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */ + 1226, /* GL_READ_ONLY */ + 1738, /* GL_WRITE_ONLY */ + 1228, /* GL_READ_WRITE */ 101, /* GL_BUFFER_ACCESS */ 103, /* GL_BUFFER_MAPPED */ 105, /* GL_BUFFER_MAP_POINTER */ - 1614, /* GL_TIME_ELAPSED_EXT */ - 744, /* GL_MATRIX0_ARB */ - 756, /* GL_MATRIX1_ARB */ - 768, /* GL_MATRIX2_ARB */ - 772, /* GL_MATRIX3_ARB */ - 774, /* GL_MATRIX4_ARB */ - 776, /* GL_MATRIX5_ARB */ - 778, /* GL_MATRIX6_ARB */ - 780, /* GL_MATRIX7_ARB */ - 782, /* GL_MATRIX8_ARB */ - 783, /* GL_MATRIX9_ARB */ - 746, /* GL_MATRIX10_ARB */ - 747, /* GL_MATRIX11_ARB */ - 748, /* GL_MATRIX12_ARB */ - 749, /* GL_MATRIX13_ARB */ - 750, /* GL_MATRIX14_ARB */ - 751, /* GL_MATRIX15_ARB */ - 752, /* GL_MATRIX16_ARB */ - 753, /* GL_MATRIX17_ARB */ - 754, /* GL_MATRIX18_ARB */ - 755, /* GL_MATRIX19_ARB */ - 758, /* GL_MATRIX20_ARB */ - 759, /* GL_MATRIX21_ARB */ - 760, /* GL_MATRIX22_ARB */ - 761, /* GL_MATRIX23_ARB */ - 762, /* GL_MATRIX24_ARB */ - 763, /* GL_MATRIX25_ARB */ - 764, /* GL_MATRIX26_ARB */ - 765, /* GL_MATRIX27_ARB */ - 766, /* GL_MATRIX28_ARB */ - 767, /* GL_MATRIX29_ARB */ - 770, /* GL_MATRIX30_ARB */ - 771, /* GL_MATRIX31_ARB */ - 1420, /* GL_STREAM_DRAW */ - 1422, /* GL_STREAM_READ */ - 1418, /* GL_STREAM_COPY */ - 1386, /* GL_STATIC_DRAW */ - 1388, /* GL_STATIC_READ */ - 1384, /* GL_STATIC_COPY */ - 409, /* GL_DYNAMIC_DRAW */ - 411, /* GL_DYNAMIC_READ */ - 407, /* GL_DYNAMIC_COPY */ - 533, /* GL_GL_PIXEL_PACK_BUFFER */ - 535, /* GL_GL_PIXEL_UNPACK_BUFFER */ - 534, /* GL_GL_PIXEL_PACK_BUFFER_BINDING */ - 536, /* GL_GL_PIXEL_UNPACK_BUFFER_BINDING */ - 830, /* GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV */ - 828, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */ - 831, /* GL_MAX_PROGRAM_IF_DEPTH_NV */ - 835, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */ - 834, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */ - 1414, /* GL_STENCIL_TEST_TWO_SIDE_EXT */ + 1623, /* GL_TIME_ELAPSED_EXT */ + 746, /* GL_MATRIX0_ARB */ + 758, /* GL_MATRIX1_ARB */ + 770, /* GL_MATRIX2_ARB */ + 774, /* GL_MATRIX3_ARB */ + 776, /* GL_MATRIX4_ARB */ + 778, /* GL_MATRIX5_ARB */ + 780, /* GL_MATRIX6_ARB */ + 782, /* GL_MATRIX7_ARB */ + 784, /* GL_MATRIX8_ARB */ + 785, /* GL_MATRIX9_ARB */ + 748, /* GL_MATRIX10_ARB */ + 749, /* GL_MATRIX11_ARB */ + 750, /* GL_MATRIX12_ARB */ + 751, /* GL_MATRIX13_ARB */ + 752, /* GL_MATRIX14_ARB */ + 753, /* GL_MATRIX15_ARB */ + 754, /* GL_MATRIX16_ARB */ + 755, /* GL_MATRIX17_ARB */ + 756, /* GL_MATRIX18_ARB */ + 757, /* GL_MATRIX19_ARB */ + 760, /* GL_MATRIX20_ARB */ + 761, /* GL_MATRIX21_ARB */ + 762, /* GL_MATRIX22_ARB */ + 763, /* GL_MATRIX23_ARB */ + 764, /* GL_MATRIX24_ARB */ + 765, /* GL_MATRIX25_ARB */ + 766, /* GL_MATRIX26_ARB */ + 767, /* GL_MATRIX27_ARB */ + 768, /* GL_MATRIX28_ARB */ + 769, /* GL_MATRIX29_ARB */ + 772, /* GL_MATRIX30_ARB */ + 773, /* GL_MATRIX31_ARB */ + 1425, /* GL_STREAM_DRAW */ + 1427, /* GL_STREAM_READ */ + 1423, /* GL_STREAM_COPY */ + 1391, /* GL_STATIC_DRAW */ + 1393, /* GL_STATIC_READ */ + 1389, /* GL_STATIC_COPY */ + 410, /* GL_DYNAMIC_DRAW */ + 412, /* GL_DYNAMIC_READ */ + 408, /* GL_DYNAMIC_COPY */ + 535, /* GL_GL_PIXEL_PACK_BUFFER */ + 537, /* GL_GL_PIXEL_UNPACK_BUFFER */ + 536, /* GL_GL_PIXEL_PACK_BUFFER_BINDING */ + 538, /* GL_GL_PIXEL_UNPACK_BUFFER_BINDING */ + 833, /* GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV */ + 831, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */ + 834, /* GL_MAX_PROGRAM_IF_DEPTH_NV */ + 838, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */ + 837, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */ + 795, /* GL_MAX_ARRAY_TEXTURE_LAYERS_EXT */ + 1419, /* GL_STENCIL_TEST_TWO_SIDE_EXT */ 17, /* GL_ACTIVE_STENCIL_FACE_EXT */ - 891, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */ - 1299, /* GL_SAMPLES_PASSED */ - 485, /* GL_FRAGMENT_SHADER */ - 1715, /* GL_VERTEX_SHADER */ - 1175, /* GL_PROGRAM_OBJECT_ARB */ - 1331, /* GL_SHADER_OBJECT_ARB */ - 816, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */ - 874, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */ - 868, /* GL_MAX_VARYING_FLOATS */ - 872, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */ - 801, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */ - 982, /* GL_OBJECT_TYPE_ARB */ - 1333, /* GL_SHADER_TYPE */ - 450, /* GL_FLOAT_VEC2 */ - 452, /* GL_FLOAT_VEC3 */ - 454, /* GL_FLOAT_VEC4 */ - 604, /* GL_INT_VEC2 */ - 606, /* GL_INT_VEC3 */ - 608, /* GL_INT_VEC4 */ + 894, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */ + 1304, /* GL_SAMPLES_PASSED */ + 486, /* GL_FRAGMENT_SHADER */ + 1724, /* GL_VERTEX_SHADER */ + 1178, /* GL_PROGRAM_OBJECT_ARB */ + 1336, /* GL_SHADER_OBJECT_ARB */ + 819, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */ + 877, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */ + 871, /* GL_MAX_VARYING_FLOATS */ + 875, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */ + 804, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */ + 985, /* GL_OBJECT_TYPE_ARB */ + 1338, /* GL_SHADER_TYPE */ + 451, /* GL_FLOAT_VEC2 */ + 453, /* GL_FLOAT_VEC3 */ + 455, /* GL_FLOAT_VEC4 */ + 606, /* GL_INT_VEC2 */ + 608, /* GL_INT_VEC3 */ + 610, /* GL_INT_VEC4 */ 93, /* GL_BOOL */ 95, /* GL_BOOL_VEC2 */ 97, /* GL_BOOL_VEC3 */ 99, /* GL_BOOL_VEC4 */ - 444, /* GL_FLOAT_MAT2 */ - 446, /* GL_FLOAT_MAT3 */ - 448, /* GL_FLOAT_MAT4 */ - 1290, /* GL_SAMPLER_1D */ - 1292, /* GL_SAMPLER_2D */ - 1294, /* GL_SAMPLER_3D */ - 1295, /* GL_SAMPLER_CUBE */ - 1291, /* GL_SAMPLER_1D_SHADOW */ - 1293, /* GL_SAMPLER_2D_SHADOW */ - 527, /* GL_GL_FLOAT_MAT2x3 */ - 528, /* GL_GL_FLOAT_MAT2x4 */ - 529, /* GL_GL_FLOAT_MAT3x2 */ - 530, /* GL_GL_FLOAT_MAT3x4 */ - 531, /* GL_GL_FLOAT_MAT4x2 */ - 532, /* GL_GL_FLOAT_MAT4x3 */ - 311, /* GL_DELETE_STATUS */ - 220, /* GL_COMPILE_STATUS */ - 657, /* GL_LINK_STATUS */ - 1664, /* GL_VALIDATE_STATUS */ - 589, /* GL_INFO_LOG_LENGTH */ + 445, /* GL_FLOAT_MAT2 */ + 447, /* GL_FLOAT_MAT3 */ + 449, /* GL_FLOAT_MAT4 */ + 1295, /* GL_SAMPLER_1D */ + 1297, /* GL_SAMPLER_2D */ + 1299, /* GL_SAMPLER_3D */ + 1300, /* GL_SAMPLER_CUBE */ + 1296, /* GL_SAMPLER_1D_SHADOW */ + 1298, /* GL_SAMPLER_2D_SHADOW */ + 529, /* GL_GL_FLOAT_MAT2x3 */ + 530, /* GL_GL_FLOAT_MAT2x4 */ + 531, /* GL_GL_FLOAT_MAT3x2 */ + 532, /* GL_GL_FLOAT_MAT3x4 */ + 533, /* GL_GL_FLOAT_MAT4x2 */ + 534, /* GL_GL_FLOAT_MAT4x3 */ + 312, /* GL_DELETE_STATUS */ + 221, /* GL_COMPILE_STATUS */ + 659, /* GL_LINK_STATUS */ + 1673, /* GL_VALIDATE_STATUS */ + 591, /* GL_INFO_LOG_LENGTH */ 56, /* GL_ATTACHED_SHADERS */ 20, /* GL_ACTIVE_UNIFORMS */ 21, /* GL_ACTIVE_UNIFORM_MAX_LENGTH */ - 1332, /* GL_SHADER_SOURCE_LENGTH */ + 1337, /* GL_SHADER_SOURCE_LENGTH */ 15, /* GL_ACTIVE_ATTRIBUTES */ 16, /* GL_ACTIVE_ATTRIBUTE_MAX_LENGTH */ - 487, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */ - 1335, /* GL_SHADING_LANGUAGE_VERSION */ - 289, /* GL_CURRENT_PROGRAM */ - 1031, /* GL_PALETTE4_RGB8_OES */ - 1033, /* GL_PALETTE4_RGBA8_OES */ - 1029, /* GL_PALETTE4_R5_G6_B5_OES */ - 1032, /* GL_PALETTE4_RGBA4_OES */ - 1030, /* GL_PALETTE4_RGB5_A1_OES */ - 1036, /* GL_PALETTE8_RGB8_OES */ - 1038, /* GL_PALETTE8_RGBA8_OES */ - 1034, /* GL_PALETTE8_R5_G6_B5_OES */ - 1037, /* GL_PALETTE8_RGBA4_OES */ - 1035, /* GL_PALETTE8_RGB5_A1_OES */ - 572, /* GL_IMPLEMENTATION_COLOR_READ_TYPE_OES */ - 571, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES */ - 541, /* GL_GL_SRGB */ - 542, /* GL_GL_SRGB8 */ - 544, /* GL_GL_SRGB_ALPHA */ - 543, /* GL_GL_SRGB8_ALPHA8 */ - 540, /* GL_GL_SLUMINANCE_ALPHA */ - 539, /* GL_GL_SLUMINANCE8_ALPHA8 */ - 537, /* GL_GL_SLUMINANCE */ - 538, /* GL_GL_SLUMINANCE8 */ - 524, /* GL_GL_COMPRESSED_SRGB */ - 525, /* GL_GL_COMPRESSED_SRGB_ALPHA */ - 522, /* GL_GL_COMPRESSED_SLUMINANCE */ - 523, /* GL_GL_COMPRESSED_SLUMINANCE_ALPHA */ - 1092, /* GL_POINT_SPRITE_COORD_ORIGIN */ - 665, /* GL_LOWER_LEFT */ - 1661, /* GL_UPPER_LEFT */ - 1396, /* GL_STENCIL_BACK_REF */ - 1397, /* GL_STENCIL_BACK_VALUE_MASK */ - 1398, /* GL_STENCIL_BACK_WRITEMASK */ - 402, /* GL_DRAW_FRAMEBUFFER_BINDING_EXT */ - 1235, /* GL_RENDERBUFFER_BINDING_EXT */ - 1220, /* GL_READ_FRAMEBUFFER_EXT */ - 403, /* GL_DRAW_FRAMEBUFFER_EXT */ - 1219, /* GL_READ_FRAMEBUFFER_BINDING_EXT */ - 489, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT */ - 488, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT */ - 492, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT */ - 491, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT */ - 490, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT */ - 494, /* GL_FRAMEBUFFER_COMPLETE_EXT */ - 496, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT */ - 501, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT */ - 499, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */ - 497, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */ - 500, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */ - 498, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT */ - 502, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT */ - 504, /* GL_FRAMEBUFFER_UNSUPPORTED_EXT */ - 503, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */ - 798, /* GL_MAX_COLOR_ATTACHMENTS_EXT */ + 488, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */ + 1340, /* GL_SHADING_LANGUAGE_VERSION */ + 290, /* GL_CURRENT_PROGRAM */ + 1034, /* GL_PALETTE4_RGB8_OES */ + 1036, /* GL_PALETTE4_RGBA8_OES */ + 1032, /* GL_PALETTE4_R5_G6_B5_OES */ + 1035, /* GL_PALETTE4_RGBA4_OES */ + 1033, /* GL_PALETTE4_RGB5_A1_OES */ + 1039, /* GL_PALETTE8_RGB8_OES */ + 1041, /* GL_PALETTE8_RGBA8_OES */ + 1037, /* GL_PALETTE8_R5_G6_B5_OES */ + 1040, /* GL_PALETTE8_RGBA4_OES */ + 1038, /* GL_PALETTE8_RGB5_A1_OES */ + 574, /* GL_IMPLEMENTATION_COLOR_READ_TYPE_OES */ + 573, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES */ + 1507, /* GL_TEXTURE_1D_ARRAY_EXT */ + 1198, /* GL_PROXY_TEXTURE_1D_ARRAY_EXT */ + 1509, /* GL_TEXTURE_2D_ARRAY_EXT */ + 1201, /* GL_PROXY_TEXTURE_2D_ARRAY_EXT */ + 1515, /* GL_TEXTURE_BINDING_1D_ARRAY_EXT */ + 1517, /* GL_TEXTURE_BINDING_2D_ARRAY_EXT */ + 543, /* GL_GL_SRGB */ + 544, /* GL_GL_SRGB8 */ + 546, /* GL_GL_SRGB_ALPHA */ + 545, /* GL_GL_SRGB8_ALPHA8 */ + 542, /* GL_GL_SLUMINANCE_ALPHA */ + 541, /* GL_GL_SLUMINANCE8_ALPHA8 */ + 539, /* GL_GL_SLUMINANCE */ + 540, /* GL_GL_SLUMINANCE8 */ + 526, /* GL_GL_COMPRESSED_SRGB */ + 527, /* GL_GL_COMPRESSED_SRGB_ALPHA */ + 524, /* GL_GL_COMPRESSED_SLUMINANCE */ + 525, /* GL_GL_COMPRESSED_SLUMINANCE_ALPHA */ + 1095, /* GL_POINT_SPRITE_COORD_ORIGIN */ + 667, /* GL_LOWER_LEFT */ + 1670, /* GL_UPPER_LEFT */ + 1401, /* GL_STENCIL_BACK_REF */ + 1402, /* GL_STENCIL_BACK_VALUE_MASK */ + 1403, /* GL_STENCIL_BACK_WRITEMASK */ + 403, /* GL_DRAW_FRAMEBUFFER_BINDING_EXT */ + 1240, /* GL_RENDERBUFFER_BINDING_EXT */ + 1225, /* GL_READ_FRAMEBUFFER_EXT */ + 404, /* GL_DRAW_FRAMEBUFFER_EXT */ + 1224, /* GL_READ_FRAMEBUFFER_BINDING_EXT */ + 490, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT */ + 489, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT */ + 494, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT */ + 492, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT */ + 491, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT */ + 496, /* GL_FRAMEBUFFER_COMPLETE_EXT */ + 498, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT */ + 503, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT */ + 501, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */ + 499, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */ + 502, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */ + 500, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT */ + 504, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT */ + 506, /* GL_FRAMEBUFFER_UNSUPPORTED_EXT */ + 505, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */ + 801, /* GL_MAX_COLOR_ATTACHMENTS_EXT */ 146, /* GL_COLOR_ATTACHMENT0_EXT */ 153, /* GL_COLOR_ATTACHMENT1_EXT */ 154, /* GL_COLOR_ATTACHMENT2_EXT */ @@ -4774,25 +4799,25 @@ static const unsigned reduced_enums[1277] = 150, /* GL_COLOR_ATTACHMENT13_EXT */ 151, /* GL_COLOR_ATTACHMENT14_EXT */ 152, /* GL_COLOR_ATTACHMENT15_EXT */ - 313, /* GL_DEPTH_ATTACHMENT_EXT */ - 1391, /* GL_STENCIL_ATTACHMENT_EXT */ - 495, /* GL_FRAMEBUFFER_EXT */ - 1236, /* GL_RENDERBUFFER_EXT */ - 1239, /* GL_RENDERBUFFER_WIDTH_EXT */ - 1237, /* GL_RENDERBUFFER_HEIGHT_EXT */ - 1238, /* GL_RENDERBUFFER_INTERNAL_FORMAT_EXT */ - 1409, /* GL_STENCIL_INDEX_EXT */ - 1406, /* GL_STENCIL_INDEX1_EXT */ - 1407, /* GL_STENCIL_INDEX4_EXT */ - 1408, /* GL_STENCIL_INDEX8_EXT */ - 1405, /* GL_STENCIL_INDEX16_EXT */ - 427, /* GL_EVAL_BIT */ - 1217, /* GL_RASTER_POSITION_UNCLIPPED_IBM */ - 659, /* GL_LIST_BIT */ - 1514, /* GL_TEXTURE_BIT */ - 1314, /* GL_SCISSOR_BIT */ + 314, /* GL_DEPTH_ATTACHMENT_EXT */ + 1396, /* GL_STENCIL_ATTACHMENT_EXT */ + 497, /* GL_FRAMEBUFFER_EXT */ + 1241, /* GL_RENDERBUFFER_EXT */ + 1244, /* GL_RENDERBUFFER_WIDTH_EXT */ + 1242, /* GL_RENDERBUFFER_HEIGHT_EXT */ + 1243, /* GL_RENDERBUFFER_INTERNAL_FORMAT_EXT */ + 1414, /* GL_STENCIL_INDEX_EXT */ + 1411, /* GL_STENCIL_INDEX1_EXT */ + 1412, /* GL_STENCIL_INDEX4_EXT */ + 1413, /* GL_STENCIL_INDEX8_EXT */ + 1410, /* GL_STENCIL_INDEX16_EXT */ + 428, /* GL_EVAL_BIT */ + 1222, /* GL_RASTER_POSITION_UNCLIPPED_IBM */ + 661, /* GL_LIST_BIT */ + 1523, /* GL_TEXTURE_BIT */ + 1319, /* GL_SCISSOR_BIT */ 29, /* GL_ALL_ATTRIB_BITS */ - 938, /* GL_MULTISAMPLE_BIT */ + 941, /* GL_MULTISAMPLE_BIT */ 30, /* GL_ALL_CLIENT_ATTRIB_BITS */ }; diff --git a/src/mesa/main/extensions.c b/src/mesa/main/extensions.c index 4e44c5b7103..a4a6cdae366 100644 --- a/src/mesa/main/extensions.c +++ b/src/mesa/main/extensions.c @@ -145,6 +145,7 @@ static const struct { { OFF, "GL_MESA_packed_depth_stencil", F(MESA_packed_depth_stencil) }, { OFF, "GL_MESA_program_debug", F(MESA_program_debug) }, { OFF, "GL_MESA_resize_buffers", F(MESA_resize_buffers) }, + { OFF, "GL_MESA_texture_array", F(MESA_texture_array) }, { OFF, "GL_MESA_ycbcr_texture", F(MESA_ycbcr_texture) }, { ON, "GL_MESA_window_pos", F(ARB_window_pos) }, { OFF, "GL_NV_blend_square", F(NV_blend_square) }, @@ -270,6 +271,7 @@ _mesa_enable_sw_extensions(GLcontext *ctx) ctx->Extensions.MESA_program_debug = GL_TRUE; #endif ctx->Extensions.MESA_resize_buffers = GL_TRUE; + ctx->Extensions.MESA_texture_array = GL_TRUE; ctx->Extensions.MESA_ycbcr_texture = GL_TRUE; ctx->Extensions.NV_blend_square = GL_TRUE; /*ctx->Extensions.NV_light_max_exponent = GL_TRUE;*/ diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c index eac2f787171..e3bada5ae89 100644 --- a/src/mesa/main/fbobject.c +++ b/src/mesa/main/fbobject.c @@ -1179,9 +1179,16 @@ framebuffer_texture(GLcontext *ctx, const char *caller, GLenum target, texObj = _mesa_lookup_texture(ctx, texture); if (texObj != NULL) { - err = (texObj->Target == GL_TEXTURE_CUBE_MAP) - ? !IS_CUBE_FACE(textarget) - : (texObj->Target != textarget); + if (textarget == 0) { + err = (texObj->Target != GL_TEXTURE_3D) && + (texObj->Target != GL_TEXTURE_1D_ARRAY_EXT) && + (texObj->Target != GL_TEXTURE_2D_ARRAY_EXT); + } + else { + err = (texObj->Target == GL_TEXTURE_CUBE_MAP) + ? !IS_CUBE_FACE(textarget) + : (texObj->Target != textarget); + } } if (err) { @@ -1195,12 +1202,20 @@ framebuffer_texture(GLcontext *ctx, const char *caller, GLenum target, const GLint maxSize = 1 << (ctx->Const.Max3DTextureLevels - 1); if (zoffset < 0 || zoffset >= maxSize) { _mesa_error(ctx, GL_INVALID_VALUE, - "glFramebufferTexture%sEXT(zoffset)", - caller); + "glFramebufferTexture%sEXT(zoffset)", caller); + return; + } + } + else if ((texObj->Target == GL_TEXTURE_1D_ARRAY_EXT) || + (texObj->Target == GL_TEXTURE_2D_ARRAY_EXT)) { + if (zoffset < 0 || zoffset >= ctx->Const.MaxArrayTextureLayers) { + _mesa_error(ctx, GL_INVALID_VALUE, + "glFramebufferTexture%sEXT(layer)", caller); return; } } + if ((level < 0) || (level >= _mesa_max_texture_levels(ctx, texObj->Target))) { _mesa_error(ctx, GL_INVALID_VALUE, @@ -1291,6 +1306,17 @@ _mesa_FramebufferTexture3DEXT(GLenum target, GLenum attachment, } +void GLAPIENTRY +_mesa_FramebufferTextureLayerEXT(GLenum target, GLenum attachment, + GLuint texture, GLint level, GLint layer) +{ + GET_CURRENT_CONTEXT(ctx); + + framebuffer_texture(ctx, "Layer", target, attachment, 0, texture, + level, layer); +} + + void GLAPIENTRY _mesa_FramebufferRenderbufferEXT(GLenum target, GLenum attachment, GLenum renderbufferTarget, diff --git a/src/mesa/main/fbobject.h b/src/mesa/main/fbobject.h index 301e2da4495..782ad8cb180 100644 --- a/src/mesa/main/fbobject.h +++ b/src/mesa/main/fbobject.h @@ -112,6 +112,10 @@ _mesa_FramebufferTexture3DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +extern void GLAPIENTRY +_mesa_FramebufferTextureLayerEXT(GLenum target, GLenum attachment, + GLuint texture, GLint level, GLint layer); + extern void GLAPIENTRY _mesa_FramebufferRenderbufferEXT(GLenum target, GLenum attachment, GLenum renderbuffertarget, diff --git a/src/mesa/main/get_gen.py b/src/mesa/main/get_gen.py index 33be7689997..90554332814 100644 --- a/src/mesa/main/get_gen.py +++ b/src/mesa/main/get_gen.py @@ -425,12 +425,18 @@ StateVars = [ ( "GL_TEXTURE_1D", GLboolean, ["_mesa_IsEnabled(GL_TEXTURE_1D)"], "", None ), ( "GL_TEXTURE_2D", GLboolean, ["_mesa_IsEnabled(GL_TEXTURE_2D)"], "", None ), ( "GL_TEXTURE_3D", GLboolean, ["_mesa_IsEnabled(GL_TEXTURE_3D)"], "", None ), + ( "GL_TEXTURE_1D_ARRAY_EXT", GLboolean, ["_mesa_IsEnabled(GL_TEXTURE_1D_ARRAY_EXT)"], "", ["MESA_texture_array"] ), + ( "GL_TEXTURE_2D_ARRAY_EXT", GLboolean, ["_mesa_IsEnabled(GL_TEXTURE_2D_ARRAY_EXT)"], "", ["MESA_texture_array"] ), ( "GL_TEXTURE_BINDING_1D", GLint, ["ctx->Texture.Unit[ctx->Texture.CurrentUnit].Current1D->Name"], "", None ), ( "GL_TEXTURE_BINDING_2D", GLint, ["ctx->Texture.Unit[ctx->Texture.CurrentUnit].Current2D->Name"], "", None ), ( "GL_TEXTURE_BINDING_3D", GLint, ["ctx->Texture.Unit[ctx->Texture.CurrentUnit].Current3D->Name"], "", None ), + ( "GL_TEXTURE_BINDING_1D_ARRAY_EXT", GLint, + ["ctx->Texture.Unit[ctx->Texture.CurrentUnit].Current1DArray->Name"], "", ["MESA_texture_array"] ), + ( "GL_TEXTURE_BINDING_2D_ARRAY_EXT", GLint, + ["ctx->Texture.Unit[ctx->Texture.CurrentUnit].Current2DArray->Name"], "", ["MESA_texture_array"] ), ( "GL_TEXTURE_ENV_COLOR", GLfloatN, ["color[0]", "color[1]", "color[2]", "color[3]"], "const GLfloat *color = ctx->Texture.Unit[ctx->Texture.CurrentUnit].EnvColor;", diff --git a/src/mesa/main/mipmap.c b/src/mesa/main/mipmap.c index cc1fb97eedd..1dc51440c8e 100644 --- a/src/mesa/main/mipmap.c +++ b/src/mesa/main/mipmap.c @@ -551,7 +551,7 @@ make_2d_mipmap(const struct gl_texture_format *format, GLint border, /* Compute src and dst pointers, skipping any border */ srcA = srcPtr + border * ((srcWidth + 1) * bpt); - if (srcHeight > 1) + if (srcHeight > 1) srcB = srcA + srcRowStride; else srcB = srcA; @@ -796,6 +796,136 @@ make_3d_mipmap(const struct gl_texture_format *format, GLint border, } +static void +make_1d_stack_mipmap(const struct gl_texture_format *format, GLint border, + GLint srcWidth, GLubyte *srcPtr, + GLint dstWidth, GLint dstHeight, GLubyte *dstPtr) +{ + const GLint bpt = format->TexelBytes; + const GLint srcWidthNB = srcWidth - 2 * border; /* sizes w/out border */ + const GLint dstWidthNB = dstWidth - 2 * border; + const GLint dstHeightNB = dstHeight - 2 * border; + const GLint srcRowStride = bpt * srcWidth; + const GLint dstRowStride = bpt * dstWidth; + const GLubyte *src; + GLubyte *dst; + GLint row; + + /* Compute src and dst pointers, skipping any border */ + src = srcPtr + border * ((srcWidth + 1) * bpt); + dst = dstPtr + border * ((dstWidth + 1) * bpt); + + for (row = 0; row < dstHeightNB; row++) { + do_row(format, srcWidthNB, src, src, + dstWidthNB, dst); + src += srcRowStride; + dst += dstRowStride; + } + + if (border) { + /* copy left-most pixel from source */ + MEMCPY(dstPtr, srcPtr, bpt); + /* copy right-most pixel from source */ + MEMCPY(dstPtr + (dstWidth - 1) * bpt, + srcPtr + (srcWidth - 1) * bpt, + bpt); + } +} + + +/** + * \bugs + * There is quite a bit of refactoring that could be done with this function + * and \c make_2d_mipmap. + */ +static void +make_2d_stack_mipmap(const struct gl_texture_format *format, GLint border, + GLint srcWidth, GLint srcHeight, const GLubyte *srcPtr, + GLint dstWidth, GLint dstHeight, GLint dstDepth, + GLubyte *dstPtr) +{ + const GLint bpt = format->TexelBytes; + const GLint srcWidthNB = srcWidth - 2 * border; /* sizes w/out border */ + const GLint dstWidthNB = dstWidth - 2 * border; + const GLint dstHeightNB = dstHeight - 2 * border; + const GLint dstDepthNB = dstDepth - 2 * border; + const GLint srcRowStride = bpt * srcWidth; + const GLint dstRowStride = bpt * dstWidth; + const GLubyte *srcA, *srcB; + GLubyte *dst; + GLint layer; + GLint row; + + /* Compute src and dst pointers, skipping any border */ + srcA = srcPtr + border * ((srcWidth + 1) * bpt); + if (srcHeight > 1) + srcB = srcA + srcRowStride; + else + srcB = srcA; + dst = dstPtr + border * ((dstWidth + 1) * bpt); + + for (layer = 0; layer < dstDepthNB; layer++) { + for (row = 0; row < dstHeightNB; row++) { + do_row(format, srcWidthNB, srcA, srcB, + dstWidthNB, dst); + srcA += 2 * srcRowStride; + srcB += 2 * srcRowStride; + dst += dstRowStride; + } + + /* This is ugly but probably won't be used much */ + if (border > 0) { + /* fill in dest border */ + /* lower-left border pixel */ + MEMCPY(dstPtr, srcPtr, bpt); + /* lower-right border pixel */ + MEMCPY(dstPtr + (dstWidth - 1) * bpt, + srcPtr + (srcWidth - 1) * bpt, bpt); + /* upper-left border pixel */ + MEMCPY(dstPtr + dstWidth * (dstHeight - 1) * bpt, + srcPtr + srcWidth * (srcHeight - 1) * bpt, bpt); + /* upper-right border pixel */ + MEMCPY(dstPtr + (dstWidth * dstHeight - 1) * bpt, + srcPtr + (srcWidth * srcHeight - 1) * bpt, bpt); + /* lower border */ + do_row(format, srcWidthNB, + srcPtr + bpt, + srcPtr + bpt, + dstWidthNB, dstPtr + bpt); + /* upper border */ + do_row(format, srcWidthNB, + srcPtr + (srcWidth * (srcHeight - 1) + 1) * bpt, + srcPtr + (srcWidth * (srcHeight - 1) + 1) * bpt, + dstWidthNB, + dstPtr + (dstWidth * (dstHeight - 1) + 1) * bpt); + /* left and right borders */ + if (srcHeight == dstHeight) { + /* copy border pixel from src to dst */ + for (row = 1; row < srcHeight; row++) { + MEMCPY(dstPtr + dstWidth * row * bpt, + srcPtr + srcWidth * row * bpt, bpt); + MEMCPY(dstPtr + (dstWidth * row + dstWidth - 1) * bpt, + srcPtr + (srcWidth * row + srcWidth - 1) * bpt, bpt); + } + } + else { + /* average two src pixels each dest pixel */ + for (row = 0; row < dstHeightNB; row += 2) { + do_row(format, 1, + srcPtr + (srcWidth * (row * 2 + 1)) * bpt, + srcPtr + (srcWidth * (row * 2 + 2)) * bpt, + 1, dstPtr + (dstWidth * row + 1) * bpt); + do_row(format, 1, + srcPtr + (srcWidth * (row * 2 + 1) + srcWidth - 1) * bpt, + srcPtr + (srcWidth * (row * 2 + 2) + srcWidth - 1) * bpt, + 1, dstPtr + (dstWidth * row + 1 + dstWidth - 1) * bpt); + } + } + } + } +} + + /** * For GL_SGIX_generate_mipmap: * Generate a complete set of mipmaps from texObj's base-level image. @@ -897,13 +1027,15 @@ _mesa_generate_mipmap(GLcontext *ctx, GLenum target, else { dstWidth = srcWidth; /* can't go smaller */ } - if (srcHeight - 2 * border > 1) { + if ((srcHeight - 2 * border > 1) && + (texObj->Target != GL_TEXTURE_1D_ARRAY_EXT)) { dstHeight = (srcHeight - 2 * border) / 2 + 2 * border; } else { dstHeight = srcHeight; /* can't go smaller */ } - if (srcDepth - 2 * border > 1) { + if ((srcDepth - 2 * border > 1) && + (texObj->Target != GL_TEXTURE_2D_ARRAY_EXT)) { dstDepth = (srcDepth - 2 * border) / 2 + 2 * border; } else { @@ -1007,6 +1139,16 @@ _mesa_generate_mipmap(GLcontext *ctx, GLenum target, srcWidth, srcHeight, srcDepth, srcData, dstWidth, dstHeight, dstDepth, dstData); break; + case GL_TEXTURE_1D_ARRAY_EXT: + make_1d_stack_mipmap(convertFormat, border, + srcWidth, srcData, + dstWidth, dstHeight, dstData); + break; + case GL_TEXTURE_2D_ARRAY_EXT: + make_2d_stack_mipmap(convertFormat, border, + srcWidth, srcHeight, srcData, + dstWidth, dstHeight, dstDepth, dstData); + break; case GL_TEXTURE_RECTANGLE_NV: /* no mipmaps, do nothing */ break; diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index 71215d54709..894b9edb36f 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -1127,7 +1127,7 @@ struct gl_stencil_attrib }; -#define NUM_TEXTURE_TARGETS 5 /* 1D, 2D, 3D, CUBE and RECT */ +#define NUM_TEXTURE_TARGETS 7 /* 1D, 2D, 3D, CUBE, RECT, 1D_STACK, and 2D_STACK */ /** * An index for each type of texture object @@ -1138,6 +1138,8 @@ struct gl_stencil_attrib #define TEXTURE_3D_INDEX 2 #define TEXTURE_CUBE_INDEX 3 #define TEXTURE_RECT_INDEX 4 +#define TEXTURE_1D_ARRAY_INDEX 5 +#define TEXTURE_2D_ARRAY_INDEX 6 /*@}*/ /** @@ -1150,6 +1152,8 @@ struct gl_stencil_attrib #define TEXTURE_3D_BIT (1 << TEXTURE_3D_INDEX) #define TEXTURE_CUBE_BIT (1 << TEXTURE_CUBE_INDEX) #define TEXTURE_RECT_BIT (1 << TEXTURE_RECT_INDEX) +#define TEXTURE_1D_ARRAY_BIT (1 << TEXTURE_1D_ARRAY_INDEX) +#define TEXTURE_2D_ARRAY_BIT (1 << TEXTURE_2D_ARRAY_INDEX) /*@}*/ @@ -1520,6 +1524,8 @@ struct gl_texture_unit struct gl_texture_object *Current3D; struct gl_texture_object *CurrentCubeMap; /**< GL_ARB_texture_cube_map */ struct gl_texture_object *CurrentRect; /**< GL_NV_texture_rectangle */ + struct gl_texture_object *Current1DArray; /**< GL_MESA_texture_array */ + struct gl_texture_object *Current2DArray; /**< GL_MESA_texture_array */ struct gl_texture_object *_Current; /**< Points to really enabled tex obj */ @@ -1528,6 +1534,8 @@ struct gl_texture_unit struct gl_texture_object Saved3D; struct gl_texture_object SavedCubeMap; struct gl_texture_object SavedRect; + struct gl_texture_object Saved1DArray; + struct gl_texture_object Saved2DArray; /* GL_SGI_texture_color_table */ struct gl_color_table ColorTable; @@ -1572,6 +1580,8 @@ struct gl_texture_attrib struct gl_texture_object *Proxy3D; struct gl_texture_object *ProxyCubeMap; struct gl_texture_object *ProxyRect; + struct gl_texture_object *Proxy1DArray; + struct gl_texture_object *Proxy2DArray; /** GL_EXT_shared_texture_palette */ GLboolean SharedPalette; @@ -2156,6 +2166,8 @@ struct gl_shared_state struct gl_texture_object *Default3D; struct gl_texture_object *DefaultCubeMap; struct gl_texture_object *DefaultRect; + struct gl_texture_object *Default1DArray; + struct gl_texture_object *Default2DArray; /*@}*/ /** @@ -2322,17 +2334,24 @@ struct gl_renderbuffer */ struct gl_renderbuffer_attachment { - GLenum Type; /* GL_NONE or GL_TEXTURE or GL_RENDERBUFFER_EXT */ + GLenum Type; /**< \c GL_NONE or \c GL_TEXTURE or \c GL_RENDERBUFFER_EXT */ GLboolean Complete; - /* IF Type == GL_RENDERBUFFER_EXT: */ + /** + * If \c Type is \c GL_RENDERBUFFER_EXT, this stores a pointer to the + * application supplied renderbuffer object. + */ struct gl_renderbuffer *Renderbuffer; - /* IF Type == GL_TEXTURE: */ + /** + * If \c Type is \c GL_TEXTURE, this stores a pointer to the application + * supplied texture object. + */ struct gl_texture_object *Texture; - GLuint TextureLevel; - GLuint CubeMapFace; /* 0 .. 5, for cube map textures */ - GLuint Zoffset; /* for 3D textures */ + GLuint TextureLevel; /**< Attached mipmap level. */ + GLuint CubeMapFace; /**< 0 .. 5, for cube map textures. */ + GLuint Zoffset; /**< Slice for 3D textures, or layer for both 1D + * and 2D array textures */ }; @@ -2438,6 +2457,7 @@ struct gl_constants GLint MaxTextureLevels; /**< Maximum number of allowed mipmap levels. */ GLint Max3DTextureLevels; /**< Maximum number of allowed mipmap levels for 3D texture targets. */ GLint MaxCubeTextureLevels; /**< Maximum number of allowed mipmap levels for GL_ARB_texture_cube_map */ + GLint MaxArrayTextureLayers; /**< Maximum number of layers in an array texture. */ GLint MaxTextureRectSize; /* GL_NV_texture_rectangle */ GLuint MaxTextureCoordUnits; GLuint MaxTextureImageUnits; @@ -2586,6 +2606,7 @@ struct gl_extensions GLboolean MESA_program_debug; GLboolean MESA_resize_buffers; GLboolean MESA_ycbcr_texture; + GLboolean MESA_texture_array; GLboolean NV_blend_square; GLboolean NV_fragment_program; GLboolean NV_light_max_exponent; diff --git a/src/mesa/main/state.c b/src/mesa/main/state.c index 96ee5127e11..0a83abc7dda 100644 --- a/src/mesa/main/state.c +++ b/src/mesa/main/state.c @@ -812,6 +812,11 @@ _mesa_init_exec_table(struct _glapi_table *exec) SET_ProgramEnvParameters4fvEXT(exec, _mesa_ProgramEnvParameters4fvEXT); SET_ProgramLocalParameters4fvEXT(exec, _mesa_ProgramLocalParameters4fvEXT); #endif + + /* GL_MESA_texture_array / GL_EXT_texture_array */ +#if FEATURE_EXT_framebuffer_object + SET_FramebufferTextureLayerEXT(exec, _mesa_FramebufferTextureLayerEXT); +#endif } diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c index 9fb430f39b4..8e528d9bbb8 100644 --- a/src/mesa/main/teximage.c +++ b/src/mesa/main/teximage.c @@ -629,6 +629,8 @@ _mesa_set_tex_image(struct gl_texture_object *tObj, case GL_TEXTURE_1D: case GL_TEXTURE_2D: case GL_TEXTURE_3D: + case GL_TEXTURE_1D_ARRAY_EXT: + case GL_TEXTURE_2D_ARRAY_EXT: tObj->Image[0][level] = texImage; break; case GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB: @@ -733,7 +735,9 @@ _mesa_is_proxy_texture(GLenum target) target == GL_PROXY_TEXTURE_2D || target == GL_PROXY_TEXTURE_3D || target == GL_PROXY_TEXTURE_CUBE_MAP_ARB || - target == GL_PROXY_TEXTURE_RECTANGLE_NV); + target == GL_PROXY_TEXTURE_RECTANGLE_NV || + target == GL_PROXY_TEXTURE_1D_ARRAY_EXT || + target == GL_PROXY_TEXTURE_2D_ARRAY_EXT); } @@ -783,6 +787,18 @@ _mesa_select_tex_object(GLcontext *ctx, const struct gl_texture_unit *texUnit, case GL_PROXY_TEXTURE_RECTANGLE_NV: return ctx->Extensions.NV_texture_rectangle ? ctx->Texture.ProxyRect : NULL; + case GL_TEXTURE_1D_ARRAY_EXT: + return ctx->Extensions.MESA_texture_array + ? texUnit->Current1DArray : NULL; + case GL_PROXY_TEXTURE_1D_ARRAY_EXT: + return ctx->Extensions.MESA_texture_array + ? ctx->Texture.Proxy1DArray : NULL; + case GL_TEXTURE_2D_ARRAY_EXT: + return ctx->Extensions.MESA_texture_array + ? texUnit->Current2DArray : NULL; + case GL_PROXY_TEXTURE_2D_ARRAY_EXT: + return ctx->Extensions.MESA_texture_array + ? ctx->Texture.Proxy2DArray : NULL; default: _mesa_problem(NULL, "bad target in _mesa_select_tex_object()"); return NULL; @@ -848,6 +864,13 @@ _mesa_select_tex_image(GLcontext *ctx, const struct gl_texture_object *texObj, else return NULL; + case GL_TEXTURE_1D_ARRAY_EXT: + case GL_PROXY_TEXTURE_1D_ARRAY_EXT: + case GL_TEXTURE_2D_ARRAY_EXT: + case GL_PROXY_TEXTURE_2D_ARRAY_EXT: + return (ctx->Extensions.MESA_texture_array) + ? texObj->Image[0][level] : NULL; + default: return NULL; } @@ -973,6 +996,36 @@ _mesa_get_proxy_tex_image(GLcontext *ctx, GLenum target, GLint level) texImage->TexObject = ctx->Texture.ProxyRect; } return texImage; + case GL_PROXY_TEXTURE_1D_ARRAY_EXT: + if (level >= ctx->Const.MaxTextureLevels) + return NULL; + texImage = ctx->Texture.Proxy1DArray->Image[0][level]; + if (!texImage) { + texImage = ctx->Driver.NewTextureImage(ctx); + if (!texImage) { + _mesa_error(ctx, GL_OUT_OF_MEMORY, "proxy texture allocation"); + return NULL; + } + ctx->Texture.Proxy1DArray->Image[0][level] = texImage; + /* Set the 'back' pointer */ + texImage->TexObject = ctx->Texture.Proxy1DArray; + } + return texImage; + case GL_PROXY_TEXTURE_2D_ARRAY_EXT: + if (level >= ctx->Const.MaxTextureLevels) + return NULL; + texImage = ctx->Texture.Proxy2DArray->Image[0][level]; + if (!texImage) { + texImage = ctx->Driver.NewTextureImage(ctx); + if (!texImage) { + _mesa_error(ctx, GL_OUT_OF_MEMORY, "proxy texture allocation"); + return NULL; + } + ctx->Texture.Proxy2DArray->Image[0][level] = texImage; + /* Set the 'back' pointer */ + texImage->TexObject = ctx->Texture.Proxy2DArray; + } + return texImage; default: return NULL; } @@ -998,6 +1051,10 @@ _mesa_max_texture_levels(GLcontext *ctx, GLenum target) case GL_PROXY_TEXTURE_1D: case GL_TEXTURE_2D: case GL_PROXY_TEXTURE_2D: + case GL_TEXTURE_1D_ARRAY_EXT: + case GL_PROXY_TEXTURE_1D_ARRAY_EXT: + case GL_TEXTURE_2D_ARRAY_EXT: + case GL_PROXY_TEXTURE_2D_ARRAY_EXT: return ctx->Const.MaxTextureLevels; case GL_TEXTURE_3D: case GL_PROXY_TEXTURE_3D: @@ -1292,6 +1349,36 @@ _mesa_test_proxy_teximage(GLcontext *ctx, GLenum target, GLint level, return GL_FALSE; } return GL_TRUE; + case GL_PROXY_TEXTURE_1D_ARRAY_EXT: + maxSize = 1 << (ctx->Const.MaxTextureLevels - 1); + if (width < 2 * border || width > 2 + maxSize || + (!ctx->Extensions.ARB_texture_non_power_of_two && + _mesa_bitcount(width - 2 * border) != 1) || + level >= ctx->Const.MaxTextureLevels) { + /* bad width or level */ + return GL_FALSE; + } + + if (height < 1 || height > ctx->Const.MaxArrayTextureLayers) { + return GL_FALSE; + } + return GL_TRUE; + case GL_PROXY_TEXTURE_2D_ARRAY_EXT: + maxSize = 1 << (ctx->Const.MaxTextureLevels - 1); + if (width < 2 * border || width > 2 + maxSize || + (!ctx->Extensions.ARB_texture_non_power_of_two && + _mesa_bitcount(width - 2 * border) != 1) || + height < 2 * border || height > 2 + maxSize || + (!ctx->Extensions.ARB_texture_non_power_of_two && + _mesa_bitcount(height - 2 * border) != 1) || + level >= ctx->Const.MaxTextureLevels) { + /* bad width or height or level */ + return GL_FALSE; + } + if (depth < 1 || depth > ctx->Const.MaxArrayTextureLayers) { + return GL_FALSE; + } + return GL_TRUE; default: _mesa_problem(ctx, "Invalid target in _mesa_test_proxy_teximage"); return GL_FALSE; @@ -1398,6 +1485,10 @@ texture_error_check( GLcontext *ctx, GLenum target, } proxy_target = GL_PROXY_TEXTURE_RECTANGLE_NV; } + else if (target == GL_PROXY_TEXTURE_1D_ARRAY_EXT || + target == GL_TEXTURE_1D_ARRAY_EXT) { + proxy_target = GL_PROXY_TEXTURE_1D_ARRAY_EXT; + } else { _mesa_error(ctx, GL_INVALID_ENUM, "glTexImage2D(target)"); return GL_TRUE; @@ -1407,6 +1498,10 @@ texture_error_check( GLcontext *ctx, GLenum target, if (target == GL_PROXY_TEXTURE_3D || target == GL_TEXTURE_3D) { proxy_target = GL_PROXY_TEXTURE_3D; } + else if (target == GL_PROXY_TEXTURE_2D_ARRAY_EXT || + target == GL_TEXTURE_2D_ARRAY_EXT) { + proxy_target = GL_PROXY_TEXTURE_2D_ARRAY_EXT; + } else { _mesa_error( ctx, GL_INVALID_ENUM, "glTexImage3D(target)" ); return GL_TRUE; @@ -1595,13 +1690,25 @@ subtexture_error_check( GLcontext *ctx, GLuint dimensions, return GL_TRUE; } } + else if (target == GL_TEXTURE_1D_ARRAY_EXT) { + if (!ctx->Extensions.MESA_texture_array) { + _mesa_error( ctx, GL_INVALID_ENUM, "glTexSubImage2D(target)" ); + return GL_TRUE; + } + } else if (target != GL_TEXTURE_2D) { _mesa_error( ctx, GL_INVALID_ENUM, "glTexSubImage2D(target)" ); return GL_TRUE; } } else if (dimensions == 3) { - if (target != GL_TEXTURE_3D) { + if (target == GL_TEXTURE_2D_ARRAY_EXT) { + if (!ctx->Extensions.MESA_texture_array) { + _mesa_error( ctx, GL_INVALID_ENUM, "glTexSubImage3D(target)" ); + return GL_TRUE; + } + } + else if (target != GL_TEXTURE_3D) { _mesa_error( ctx, GL_INVALID_ENUM, "glTexSubImage3D(target)" ); return GL_TRUE; } @@ -1855,6 +1962,17 @@ copytexture_error_check( GLcontext *ctx, GLuint dimensions, format, type, width, height, 1, border); } + else if (target == GL_TEXTURE_1D_ARRAY_EXT) { + if (!ctx->Extensions.MESA_texture_array) { + _mesa_error(ctx, GL_INVALID_ENUM, "glCopyTexImage2D(target)"); + return GL_TRUE; + } + sizeOK = ctx->Driver.TestProxyTexImage(ctx, + GL_PROXY_TEXTURE_1D_ARRAY_EXT, + level, internalFormat, + format, type, + width, height, 1, border); + } else { _mesa_error( ctx, GL_INVALID_ENUM, "glCopyTexImage2D(target)" ); return GL_TRUE; @@ -1968,15 +2086,23 @@ copytexsubimage_error_check( GLcontext *ctx, GLuint dimensions, return GL_TRUE; } } + else if (target == GL_TEXTURE_1D_ARRAY_EXT) { + if (!ctx->Extensions.MESA_texture_array) { + _mesa_error( ctx, GL_INVALID_ENUM, "glCopyTexSubImage2D(target)" ); + return GL_TRUE; + } + } else if (target != GL_TEXTURE_2D) { _mesa_error( ctx, GL_INVALID_ENUM, "glCopyTexSubImage2D(target)" ); return GL_TRUE; } } else if (dimensions == 3) { - if (target != GL_TEXTURE_3D) { - _mesa_error( ctx, GL_INVALID_ENUM, "glCopyTexSubImage3D(target)" ); - return GL_TRUE; + if (((target != GL_TEXTURE_2D_ARRAY_EXT) || + (!ctx->Extensions.MESA_texture_array)) + && (target != GL_TEXTURE_3D)) { + _mesa_error( ctx, GL_INVALID_ENUM, "glCopyTexSubImage3D(target)" ); + return GL_TRUE; } } @@ -2393,7 +2519,9 @@ _mesa_TexImage2D( GLenum target, GLint level, GLint internalFormat, target >= GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB && target <= GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB) || (ctx->Extensions.NV_texture_rectangle && - target == GL_TEXTURE_RECTANGLE_NV)) { + target == GL_TEXTURE_RECTANGLE_NV) || + (ctx->Extensions.MESA_texture_array && + target == GL_TEXTURE_1D_ARRAY_EXT)) { /* non-proxy target */ struct gl_texture_unit *texUnit; struct gl_texture_object *texObj; @@ -2451,7 +2579,9 @@ _mesa_TexImage2D( GLenum target, GLint level, GLint internalFormat, (target == GL_PROXY_TEXTURE_CUBE_MAP_ARB && ctx->Extensions.ARB_texture_cube_map) || (target == GL_PROXY_TEXTURE_RECTANGLE_NV && - ctx->Extensions.NV_texture_rectangle)) { + ctx->Extensions.NV_texture_rectangle) || + (ctx->Extensions.MESA_texture_array && + target == GL_PROXY_TEXTURE_1D_ARRAY_EXT)) { /* Proxy texture: check for errors and update proxy state */ struct gl_texture_image *texImage; texImage = _mesa_get_proxy_tex_image(ctx, target, level); @@ -2491,7 +2621,9 @@ _mesa_TexImage3D( GLenum target, GLint level, GLint internalFormat, GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); - if (target == GL_TEXTURE_3D) { + if (target == GL_TEXTURE_3D || + (ctx->Extensions.MESA_texture_array && + target == GL_TEXTURE_2D_ARRAY_EXT)) { /* non-proxy target */ struct gl_texture_unit *texUnit; struct gl_texture_object *texObj; @@ -2544,7 +2676,9 @@ _mesa_TexImage3D( GLenum target, GLint level, GLint internalFormat, out: _mesa_unlock_texture(ctx, texObj); } - else if (target == GL_PROXY_TEXTURE_3D) { + else if (target == GL_PROXY_TEXTURE_3D || + (ctx->Extensions.MESA_texture_array && + target == GL_PROXY_TEXTURE_2D_ARRAY_EXT)) { /* Proxy texture: check for errors and update proxy state */ struct gl_texture_image *texImage; texImage = _mesa_get_proxy_tex_image(ctx, target, level); diff --git a/src/mesa/main/texobj.c b/src/mesa/main/texobj.c index 56d816e45f7..bd447ac0688 100644 --- a/src/mesa/main/texobj.c +++ b/src/mesa/main/texobj.c @@ -104,7 +104,9 @@ _mesa_initialize_texture_object( struct gl_texture_object *obj, target == GL_TEXTURE_2D || target == GL_TEXTURE_3D || target == GL_TEXTURE_CUBE_MAP_ARB || - target == GL_TEXTURE_RECTANGLE_NV); + target == GL_TEXTURE_RECTANGLE_NV || + target == GL_TEXTURE_1D_ARRAY_EXT || + target == GL_TEXTURE_2D_ARRAY_EXT); _mesa_bzero(obj, sizeof(*obj)); /* init the non-zero fields */ @@ -279,11 +281,13 @@ _mesa_test_texobj_completeness( const GLcontext *ctx, } /* Compute _MaxLevel */ - if (t->Target == GL_TEXTURE_1D) { + if ((t->Target == GL_TEXTURE_1D) || + (t->Target == GL_TEXTURE_1D_ARRAY_EXT)) { maxLog2 = t->Image[0][baseLevel]->WidthLog2; maxLevels = ctx->Const.MaxTextureLevels; } - else if (t->Target == GL_TEXTURE_2D) { + else if ((t->Target == GL_TEXTURE_2D) || + (t->Target == GL_TEXTURE_2D_ARRAY_EXT)) { maxLog2 = MAX2(t->Image[0][baseLevel]->WidthLog2, t->Image[0][baseLevel]->HeightLog2); maxLevels = ctx->Const.MaxTextureLevels; @@ -365,7 +369,8 @@ _mesa_test_texobj_completeness( const GLcontext *ctx, } /* Test things which depend on number of texture image dimensions */ - if (t->Target == GL_TEXTURE_1D) { + if ((t->Target == GL_TEXTURE_1D) || + (t->Target == GL_TEXTURE_1D_ARRAY_EXT)) { /* Test 1-D mipmaps */ GLuint width = t->Image[0][baseLevel]->Width2; for (i = baseLevel + 1; i < maxLevels; i++) { @@ -389,7 +394,8 @@ _mesa_test_texobj_completeness( const GLcontext *ctx, } } } - else if (t->Target == GL_TEXTURE_2D) { + else if ((t->Target == GL_TEXTURE_2D) || + (t->Target == GL_TEXTURE_2D_ARRAY_EXT)) { /* Test 2-D mipmaps */ GLuint width = t->Image[0][baseLevel]->Width2; GLuint height = t->Image[0][baseLevel]->Height2; @@ -652,6 +658,14 @@ unbind_texobj_from_texunits(GLcontext *ctx, struct gl_texture_object *texObj) curr = &unit->CurrentRect; unit->CurrentRect = ctx->Shared->DefaultRect; } + else if (texObj == unit->Current1DArray) { + curr = &unit->Current1DArray; + unit->CurrentRect = ctx->Shared->Default1DArray; + } + else if (texObj == unit->Current2DArray) { + curr = &unit->Current1DArray; + unit->CurrentRect = ctx->Shared->Default2DArray; + } if (curr) { (*curr)->RefCount++; @@ -796,6 +810,20 @@ _mesa_BindTexture( GLenum target, GLuint texName ) } oldTexObj = texUnit->CurrentRect; break; + case GL_TEXTURE_1D_ARRAY_EXT: + if (!ctx->Extensions.MESA_texture_array) { + _mesa_error( ctx, GL_INVALID_ENUM, "glBindTexture(target)" ); + return; + } + oldTexObj = texUnit->Current1DArray; + break; + case GL_TEXTURE_2D_ARRAY_EXT: + if (!ctx->Extensions.MESA_texture_array) { + _mesa_error( ctx, GL_INVALID_ENUM, "glBindTexture(target)" ); + return; + } + oldTexObj = texUnit->Current2DArray; + break; default: _mesa_error( ctx, GL_INVALID_ENUM, "glBindTexture(target)" ); return; @@ -832,6 +860,12 @@ _mesa_BindTexture( GLenum target, GLuint texName ) case GL_TEXTURE_RECTANGLE_NV: newTexObj = ctx->Shared->DefaultRect; break; + case GL_TEXTURE_1D_ARRAY_EXT: + newTexObj = ctx->Shared->Default1DArray; + break; + case GL_TEXTURE_2D_ARRAY_EXT: + newTexObj = ctx->Shared->Default2DArray; + break; default: ; /* Bad targets are caught above */ } @@ -902,6 +936,12 @@ _mesa_BindTexture( GLenum target, GLuint texName ) case GL_TEXTURE_RECTANGLE_NV: texUnit->CurrentRect = newTexObj; break; + case GL_TEXTURE_1D_ARRAY_EXT: + texUnit->Current1DArray = newTexObj; + break; + case GL_TEXTURE_2D_ARRAY_EXT: + texUnit->Current2DArray = newTexObj; + break; default: _mesa_problem(ctx, "bad target in BindTexture"); return; diff --git a/src/mesa/main/texrender.c b/src/mesa/main/texrender.c index f7385845124..8d5468aff0d 100644 --- a/src/mesa/main/texrender.c +++ b/src/mesa/main/texrender.c @@ -16,10 +16,13 @@ */ struct texture_renderbuffer { - struct gl_renderbuffer Base; /* Base class object */ + struct gl_renderbuffer Base; /**< Base class object */ struct gl_texture_image *TexImage; StoreTexelFunc Store; - GLint Zoffset; + GLint Yoffset; /**< Layer for 1D array textures. */ + GLint Zoffset; /**< Layer for 2D array textures, or slice + * for 3D textures + */ }; @@ -38,6 +41,8 @@ texture_get_row(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, ASSERT(trb->TexImage->Width == rb->Width); ASSERT(trb->TexImage->Height == rb->Height); + y += trb->Yoffset; + if (rb->DataType == CHAN_TYPE) { GLchan *rgbaOut = (GLchan *) values; for (i = 0; i < count; i++) { @@ -87,15 +92,16 @@ texture_get_values(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, if (rb->DataType == CHAN_TYPE) { GLchan *rgbaOut = (GLchan *) values; for (i = 0; i < count; i++) { - trb->TexImage->FetchTexelc(trb->TexImage, x[i], y[i], z, - rgbaOut + 4 * i); + trb->TexImage->FetchTexelc(trb->TexImage, x[i], y[i] + trb->Yoffset, + z, rgbaOut + 4 * i); } } else if (rb->DataType == GL_UNSIGNED_INT) { GLuint *zValues = (GLuint *) values; for (i = 0; i < count; i++) { GLfloat flt; - trb->TexImage->FetchTexelf(trb->TexImage, x[i], y[i], z, &flt); + trb->TexImage->FetchTexelf(trb->TexImage, x[i], y[i] + trb->Yoffset, + z, &flt); #if 0 zValues[i] = (GLuint) (flt * 0xffffffff); #else @@ -107,7 +113,8 @@ texture_get_values(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, GLuint *zValues = (GLuint *) values; for (i = 0; i < count; i++) { GLfloat flt; - trb->TexImage->FetchTexelf(trb->TexImage, x[i], y[i], z, &flt); + trb->TexImage->FetchTexelf(trb->TexImage, x[i], y[i] + trb->Yoffset, + z, &flt); zValues[i] = ((GLuint) (flt * 0xffffff)) << 8; } } @@ -129,6 +136,8 @@ texture_put_row(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, const GLint z = trb->Zoffset; GLuint i; + y += trb->Yoffset; + if (rb->DataType == CHAN_TYPE) { const GLchan *rgba = (const GLchan *) values; for (i = 0; i < count; i++) { @@ -170,6 +179,8 @@ texture_put_mono_row(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, const GLint z = trb->Zoffset; GLuint i; + y += trb->Yoffset; + if (rb->DataType == CHAN_TYPE) { const GLchan *rgba = (const GLchan *) value; for (i = 0; i < count; i++) { @@ -215,7 +226,7 @@ texture_put_values(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, const GLchan *rgba = (const GLchan *) values; for (i = 0; i < count; i++) { if (!mask || mask[i]) { - trb->Store(trb->TexImage, x[i], y[i], z, rgba); + trb->Store(trb->TexImage, x[i], y[i] + trb->Yoffset, z, rgba); } rgba += 4; } @@ -224,7 +235,8 @@ texture_put_values(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, const GLuint *zValues = (const GLuint *) values; for (i = 0; i < count; i++) { if (!mask || mask[i]) { - trb->Store(trb->TexImage, x[i], y[i], z, zValues + i); + trb->Store(trb->TexImage, x[i], y[i] + trb->Yoffset, z, + zValues + i); } } } @@ -233,7 +245,7 @@ texture_put_values(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, for (i = 0; i < count; i++) { if (!mask || mask[i]) { GLfloat flt = (zValues[i] >> 8) * (1.0 / 0xffffff); - trb->Store(trb->TexImage, x[i], y[i], z, &flt); + trb->Store(trb->TexImage, x[i], y[i] + trb->Yoffset, z, &flt); } } } @@ -257,7 +269,7 @@ texture_put_mono_values(GLcontext *ctx, struct gl_renderbuffer *rb, const GLchan *rgba = (const GLchan *) value; for (i = 0; i < count; i++) { if (!mask || mask[i]) { - trb->Store(trb->TexImage, x[i], y[i], z, rgba); + trb->Store(trb->TexImage, x[i], y[i] + trb->Yoffset, z, rgba); } } } @@ -265,7 +277,7 @@ texture_put_mono_values(GLcontext *ctx, struct gl_renderbuffer *rb, const GLuint zValue = *((const GLuint *) value); for (i = 0; i < count; i++) { if (!mask || mask[i]) { - trb->Store(trb->TexImage, x[i], y[i], z, &zValue); + trb->Store(trb->TexImage, x[i], y[i] + trb->Yoffset, z, &zValue); } } } @@ -274,7 +286,7 @@ texture_put_mono_values(GLcontext *ctx, struct gl_renderbuffer *rb, const GLfloat flt = (zValue >> 8) * (1.0 / 0xffffff); for (i = 0; i < count; i++) { if (!mask || mask[i]) { - trb->Store(trb->TexImage, x[i], y[i], z, &flt); + trb->Store(trb->TexImage, x[i], y[i] + trb->Yoffset, z, &flt); } } } @@ -350,7 +362,14 @@ update_wrapper(GLcontext *ctx, const struct gl_renderbuffer_attachment *att) trb->Store = trb->TexImage->TexFormat->StoreTexel; ASSERT(trb->Store); - trb->Zoffset = att->Zoffset; + if (att->Texture->Target == GL_TEXTURE_1D_ARRAY_EXT) { + trb->Yoffset = att->Zoffset; + trb->Zoffset = 0; + } + else { + trb->Yoffset = 0; + trb->Zoffset = att->Zoffset; + } trb->Base.Width = trb->TexImage->Width; trb->Base.Height = trb->TexImage->Height; diff --git a/src/mesa/main/texstate.c b/src/mesa/main/texstate.c index 1b45eae42c3..d15af22b7db 100644 --- a/src/mesa/main/texstate.c +++ b/src/mesa/main/texstate.c @@ -154,6 +154,10 @@ _mesa_copy_texture_state( const GLcontext *src, GLcontext *dst ) src->Texture.Unit[i].CurrentCubeMap); copy_texture_binding(src, &dst->Texture.Unit[i].CurrentRect, src->Texture.Unit[i].CurrentRect); + copy_texture_binding(src, &dst->Texture.Unit[i].Current1DArray, + src->Texture.Unit[i].Current1DArray); + copy_texture_binding(src, &dst->Texture.Unit[i].Current2DArray, + src->Texture.Unit[i].Current2DArray); _mesa_unlock_context_textures(dst); } @@ -1221,6 +1225,20 @@ _mesa_TexParameterfv( GLenum target, GLenum pname, const GLfloat *params ) } texObj = texUnit->CurrentRect; break; + case GL_TEXTURE_1D_ARRAY_EXT: + if (!ctx->Extensions.MESA_texture_array) { + _mesa_error( ctx, GL_INVALID_ENUM, "glTexParameter(target)" ); + return; + } + texObj = texUnit->Current1DArray; + break; + case GL_TEXTURE_2D_ARRAY_EXT: + if (!ctx->Extensions.MESA_texture_array) { + _mesa_error( ctx, GL_INVALID_ENUM, "glTexParameter(target)" ); + return; + } + texObj = texUnit->Current2DArray; + break; default: _mesa_error( ctx, GL_INVALID_ENUM, "glTexParameter(target)" ); return; @@ -1574,6 +1592,12 @@ tex_image_dimensions(GLcontext *ctx, GLenum target) case GL_TEXTURE_RECTANGLE_NV: case GL_PROXY_TEXTURE_RECTANGLE_NV: return ctx->Extensions.NV_texture_rectangle ? 2 : 0; + case GL_TEXTURE_1D_ARRAY_EXT: + case GL_PROXY_TEXTURE_1D_ARRAY_EXT: + return ctx->Extensions.MESA_texture_array ? 2 : 0; + case GL_TEXTURE_2D_ARRAY_EXT: + case GL_PROXY_TEXTURE_2D_ARRAY_EXT: + return ctx->Extensions.MESA_texture_array ? 3 : 0; default: _mesa_problem(ctx, "bad target in _mesa_tex_target_dimensions()"); return 0; @@ -2864,6 +2888,10 @@ update_texture_state( GLcontext *ctx ) * complete. That's the one we'll use for texturing. If we're using * a fragment program we're guaranteed that bitcount(enabledBits) <= 1. */ + texture_override(ctx, texUnit, enableBits, + texUnit->Current2DArray, TEXTURE_2D_ARRAY_BIT); + texture_override(ctx, texUnit, enableBits, + texUnit->Current1DArray, TEXTURE_1D_ARRAY_BIT); texture_override(ctx, texUnit, enableBits, texUnit->CurrentCubeMap, TEXTURE_CUBE_BIT); texture_override(ctx, texUnit, enableBits, @@ -3032,6 +3060,14 @@ alloc_proxy_textures( GLcontext *ctx ) if (!ctx->Texture.ProxyRect) goto cleanup; + ctx->Texture.Proxy1DArray = (*ctx->Driver.NewTextureObject)(ctx, 0, GL_TEXTURE_1D_ARRAY_EXT); + if (!ctx->Texture.Proxy1DArray) + goto cleanup; + + ctx->Texture.Proxy2DArray = (*ctx->Driver.NewTextureObject)(ctx, 0, GL_TEXTURE_2D_ARRAY_EXT); + if (!ctx->Texture.Proxy2DArray) + goto cleanup; + return GL_TRUE; cleanup: @@ -3045,6 +3081,10 @@ alloc_proxy_textures( GLcontext *ctx ) (ctx->Driver.DeleteTexture)(ctx, ctx->Texture.ProxyCubeMap); if (ctx->Texture.ProxyRect) (ctx->Driver.DeleteTexture)(ctx, ctx->Texture.ProxyRect); + if (ctx->Texture.Proxy1DArray) + (ctx->Driver.DeleteTexture)(ctx, ctx->Texture.Proxy1DArray); + if (ctx->Texture.Proxy2DArray) + (ctx->Driver.DeleteTexture)(ctx, ctx->Texture.Proxy2DArray); return GL_FALSE; } @@ -3092,6 +3132,8 @@ init_texture_unit( GLcontext *ctx, GLuint unit ) texUnit->Current3D = ctx->Shared->Default3D; texUnit->CurrentCubeMap = ctx->Shared->DefaultCubeMap; texUnit->CurrentRect = ctx->Shared->DefaultRect; + texUnit->Current1DArray = ctx->Shared->Default1DArray; + texUnit->Current2DArray = ctx->Shared->Default2DArray; } @@ -3112,6 +3154,8 @@ _mesa_init_texture(GLcontext *ctx) ctx->Shared->Default3D->RefCount += MAX_TEXTURE_UNITS; ctx->Shared->DefaultCubeMap->RefCount += MAX_TEXTURE_UNITS; ctx->Shared->DefaultRect->RefCount += MAX_TEXTURE_UNITS; + ctx->Shared->Default1DArray->RefCount += MAX_TEXTURE_UNITS; + ctx->Shared->Default2DArray->RefCount += MAX_TEXTURE_UNITS; /* Texture group */ ctx->Texture.CurrentUnit = 0; /* multitexture */ @@ -3145,6 +3189,8 @@ _mesa_free_texture_data(GLcontext *ctx) (ctx->Driver.DeleteTexture)(ctx, ctx->Texture.Proxy3D ); (ctx->Driver.DeleteTexture)(ctx, ctx->Texture.ProxyCubeMap ); (ctx->Driver.DeleteTexture)(ctx, ctx->Texture.ProxyRect ); + (ctx->Driver.DeleteTexture)(ctx, ctx->Texture.Proxy1DArray ); + (ctx->Driver.DeleteTexture)(ctx, ctx->Texture.Proxy2DArray ); for (i = 0; i < MAX_TEXTURE_IMAGE_UNITS; i++) _mesa_free_colortable_data( &ctx->Texture.Unit[i].ColorTable ); diff --git a/src/mesa/shader/arbprogparse.c b/src/mesa/shader/arbprogparse.c index 5027264f031..7da3c19a89a 100644 --- a/src/mesa/shader/arbprogparse.c +++ b/src/mesa/shader/arbprogparse.c @@ -181,7 +181,7 @@ LONGSTRING static char arb_grammar_text[] = - changed and merged V_* and F_* opcode values to OP_*. - added GL_ARB_fragment_program_shadow specific tokens (michal) */ -#define REVISION 0x09 +#define REVISION 0x0a /* program type */ #define FRAGMENT_PROGRAM 0x01 @@ -209,6 +209,9 @@ LONGSTRING static char arb_grammar_text[] = /* GL_ARB_draw_buffers option */ #define ARB_DRAW_BUFFERS 0x07 +/* GL_MESA_texture_array option */ +#define MESA_TEXTURE_ARRAY 0x08 + /* GL_ARB_fragment_program instruction class */ #define OP_ALU_INST 0x00 #define OP_TEX_INST 0x01 @@ -368,6 +371,9 @@ LONGSTRING static char arb_grammar_text[] = #define TEXTARGET_SHADOW1D 0x06 #define TEXTARGET_SHADOW2D 0x07 #define TEXTARGET_SHADOWRECT 0x08 +/* GL_MESA_texture_array */ +#define TEXTARGET_1D_ARRAY 0x09 +#define TEXTARGET_2D_ARRAY 0x0a /* face type */ #define FACE_FRONT 0x00 @@ -2990,6 +2996,12 @@ parse_fp_instruction (GLcontext * ctx, const GLubyte ** inst, case TEXTARGET_SHADOWRECT: /* TODO ARB_fragment_program_shadow code */ break; + case TEXTARGET_1D_ARRAY: + fp->TexSrcTarget = TEXTURE_1D_ARRAY_INDEX; + break; + case TEXTARGET_2D_ARRAY: + fp->TexSrcTarget = TEXTURE_2D_ARRAY_INDEX; + break; } Program->TexturesUsed[texcoord] |= (1 << fp->TexSrcTarget); /* Check that both "2D" and "CUBE" (for example) aren't both used */ @@ -3464,6 +3476,10 @@ parse_instructions(GLcontext * ctx, const GLubyte * inst, /* do nothing for now */ } break; + + case MESA_TEXTURE_ARRAY: + /* do nothing for now */ + break; } break; @@ -3603,7 +3619,9 @@ enable_parser_extensions(GLcontext *ctx, grammar id) if (ctx->Extensions.ARB_draw_buffers && !enable_ext(ctx, id, "draw_buffers")) return GL_FALSE; - + if (ctx->Extensions.MESA_texture_array + && !enable_ext(ctx, id, "texture_array")) + return GL_FALSE; #if 1 /* hack for Warcraft (see bug 8060) */ enable_ext(ctx, id, "vertex_blend"); diff --git a/src/mesa/shader/arbprogram.syn b/src/mesa/shader/arbprogram.syn index 6ab0f269380..4f82717873e 100644 --- a/src/mesa/shader/arbprogram.syn +++ b/src/mesa/shader/arbprogram.syn @@ -36,7 +36,7 @@ compares the value with its REVISION value. If they do not match, the loader is not up to date. */ -.emtcode REVISION 0x09 +.emtcode REVISION 0x0a /* program type */ .emtcode FRAGMENT_PROGRAM 0x01 @@ -64,6 +64,9 @@ /* GL_ARB_draw_buffers option */ .emtcode ARB_DRAW_BUFFERS 0x07 +/* GL_MESA_texture_array option */ +.emtcode MESA_TEXTURE_ARRAY 0x08 + /* GL_ARB_fragment_program instruction class */ .emtcode OP_ALU_INST 0x00 .emtcode OP_TEX_INST 0x01 @@ -223,6 +226,8 @@ .emtcode TEXTARGET_SHADOW1D 0x06 .emtcode TEXTARGET_SHADOW2D 0x07 .emtcode TEXTARGET_SHADOWRECT 0x08 +.emtcode TEXTARGET_1D_ARRAY 0x09 +.emtcode TEXTARGET_2D_ARRAY 0x0a /* face type */ .emtcode FACE_FRONT 0x00 @@ -436,6 +441,9 @@ /* GL_ARB_draw_buffers */ .regbyte draw_buffers 0x00 +/* GL_MESA_texture_array */ +.regbyte texture_array 0x00 + /* option presence condition registers */ /* they are all initially set to zero - when a particular OPTION is encountered, the appropriate */ /* register is set to 1 to indicate that the OPTION was specified. */ @@ -456,6 +464,9 @@ /* GL_ARB_draw_buffers */ .regbyte ARB_draw_buffers 0x00 +/* GL_MESA_texture_array */ +.regbyte MESA_texture_array 0x00 + /* program target condition register */ /* this syntax script deals with two program targets - VERTEX_PROGRAM and FRAGMENT_PROGRAM. */ /* to distinguish between them we need a register that will store for us the current target. */ @@ -523,7 +534,9 @@ fp_optionString .if (fragment_program_shadow != 0x00) "ARB_fragment_program_shadow" .emit ARB_FRAGMENT_PROGRAM_SHADOW .load ARB_fragment_program_shadow 0x01 .or .if (draw_buffers != 0x00) "ARB_draw_buffers" .emit ARB_DRAW_BUFFERS - .load ARB_draw_buffers 0x01; + .load ARB_draw_buffers 0x01 .or + .if (texture_array != 0x00) "MESA_texture_array" .emit MESA_TEXTURE_ARRAY + .load MESA_texture_array 0x01; vp_optionString "ARB_position_invariant" .emit ARB_POSITION_INVARIANT .load ARB_position_invariant 0x01; fp_ARB_fog_exp @@ -906,7 +919,9 @@ texTarget "3D" .emit TEXTARGET_3D .or .if (texture_rectangle != 0x00) "RECT" .emit TEXTARGET_RECT .or "CUBE" .emit TEXTARGET_CUBE .or - .if (ARB_fragment_program_shadow != 0x00) shadowTarget; + .if (ARB_fragment_program_shadow != 0x00) shadowTarget .or + .if (MESA_texture_array != 0x00) "ARRAY1D" .emit TEXTARGET_1D_ARRAY .or + .if (MESA_texture_array != 0x00) "ARRAY2D" .emit TEXTARGET_2D_ARRAY; /* GL_ARB_fragment_program_shadow diff --git a/src/mesa/shader/arbprogram_syn.h b/src/mesa/shader/arbprogram_syn.h index c67afc67db9..30dc9f4594e 100644 --- a/src/mesa/shader/arbprogram_syn.h +++ b/src/mesa/shader/arbprogram_syn.h @@ -1,5 +1,5 @@ ".syntax program;\n" -".emtcode REVISION 0x09\n" +".emtcode REVISION 0x0a\n" ".emtcode FRAGMENT_PROGRAM 0x01\n" ".emtcode VERTEX_PROGRAM 0x02\n" ".emtcode OPTION 0x01\n" @@ -14,6 +14,7 @@ ".emtcode ARB_POSITION_INVARIANT 0x05\n" ".emtcode ARB_FRAGMENT_PROGRAM_SHADOW 0x06\n" ".emtcode ARB_DRAW_BUFFERS 0x07\n" +".emtcode MESA_TEXTURE_ARRAY 0x08\n" ".emtcode OP_ALU_INST 0x00\n" ".emtcode OP_TEX_INST 0x01\n" ".emtcode OP_ALU_VECTOR 0x00\n" @@ -120,6 +121,8 @@ ".emtcode TEXTARGET_SHADOW1D 0x06\n" ".emtcode TEXTARGET_SHADOW2D 0x07\n" ".emtcode TEXTARGET_SHADOWRECT 0x08\n" +".emtcode TEXTARGET_1D_ARRAY 0x09\n" +".emtcode TEXTARGET_2D_ARRAY 0x0A\n" ".emtcode FACE_FRONT 0x00\n" ".emtcode FACE_BACK 0x01\n" ".emtcode COLOR_PRIMARY 0x00\n" @@ -264,6 +267,7 @@ ".regbyte texture_rectangle 0x00\n" ".regbyte fragment_program_shadow 0x00\n" ".regbyte draw_buffers 0x00\n" +".regbyte texture_array 0x00\n" ".regbyte ARB_precision_hint_fastest 0x00\n" ".regbyte ARB_precision_hint_nicest 0x00\n" ".regbyte ARB_fog_exp 0x00\n" @@ -272,6 +276,7 @@ ".regbyte ARB_position_invariant 0x00\n" ".regbyte ARB_fragment_program_shadow 0x00\n" ".regbyte ARB_draw_buffers 0x00\n" +".regbyte MESA_texture_array 0x00\n" ".regbyte program_target 0x00\n" "program\n" " programs .error UNKNOWN_PROGRAM_SIGNATURE .emit REVISION;\n" @@ -309,7 +314,9 @@ " .if (fragment_program_shadow != 0x00) \"ARB_fragment_program_shadow\"\n" " .emit ARB_FRAGMENT_PROGRAM_SHADOW .load ARB_fragment_program_shadow 0x01 .or\n" " .if (draw_buffers != 0x00) \"ARB_draw_buffers\" .emit ARB_DRAW_BUFFERS\n" -" .load ARB_draw_buffers 0x01;\n" +" .load ARB_draw_buffers 0x01 .or\n" +" .if (texture_array != 0x00) \"MESA_texture_array\" .emit MESA_TEXTURE_ARRAY\n" +" .load MESA_texture_array 0x01;\n" "vp_optionString\n" " \"ARB_position_invariant\" .emit ARB_POSITION_INVARIANT .load ARB_position_invariant 0x01;\n" "fp_ARB_fog_exp\n" @@ -471,7 +478,9 @@ " \"3D\" .emit TEXTARGET_3D .or\n" " .if (texture_rectangle != 0x00) \"RECT\" .emit TEXTARGET_RECT .or\n" " \"CUBE\" .emit TEXTARGET_CUBE .or\n" -" .if (ARB_fragment_program_shadow != 0x00) shadowTarget;\n" +" .if (ARB_fragment_program_shadow != 0x00) shadowTarget .or\n" +" .if (MESA_texture_array != 0x00) \"ARRAY1D\" .emit TEXTARGET_1D_ARRAY .or\n" +" .if (MESA_texture_array != 0x00) \"ARRAY2D\" .emit TEXTARGET_2D_ARRAY;\n" "shadowTarget\n" " \"SHADOW1D\" .emit TEXTARGET_SHADOW1D .or\n" " \"SHADOW2D\" .emit TEXTARGET_SHADOW2D .or\n" diff --git a/src/mesa/sparc/glapi_sparc.S b/src/mesa/sparc/glapi_sparc.S index 86c9f30e143..d4ea12870fe 100644 --- a/src/mesa/sparc/glapi_sparc.S +++ b/src/mesa/sparc/glapi_sparc.S @@ -833,10 +833,11 @@ __glapi_sparc_icache_flush: /* %o0 = insn_addr */ .globl glIsRenderbufferEXT ; .type glIsRenderbufferEXT,#function .globl glRenderbufferStorageEXT ; .type glRenderbufferStorageEXT,#function .globl gl_dispatch_stub_767 ; .type gl_dispatch_stub_767,#function - .globl gl_dispatch_stub_768 ; .type gl_dispatch_stub_768,#function + .globl glFramebufferTextureLayerEXT ; .type glFramebufferTextureLayerEXT,#function .globl gl_dispatch_stub_769 ; .type gl_dispatch_stub_769,#function .globl gl_dispatch_stub_770 ; .type gl_dispatch_stub_770,#function .globl gl_dispatch_stub_771 ; .type gl_dispatch_stub_771,#function + .globl gl_dispatch_stub_772 ; .type gl_dispatch_stub_772,#function .globl _mesa_sparc_glapi_begin ; .type _mesa_sparc_glapi_begin,#function _mesa_sparc_glapi_begin: @@ -1608,10 +1609,11 @@ _mesa_sparc_glapi_begin: GL_STUB(glIsRenderbufferEXT, _gloffset_IsRenderbufferEXT) GL_STUB(glRenderbufferStorageEXT, _gloffset_RenderbufferStorageEXT) GL_STUB(gl_dispatch_stub_767, _gloffset__dispatch_stub_767) - GL_STUB(gl_dispatch_stub_768, _gloffset__dispatch_stub_768) + GL_STUB(glFramebufferTextureLayerEXT, _gloffset_FramebufferTextureLayerEXT) GL_STUB(gl_dispatch_stub_769, _gloffset__dispatch_stub_769) GL_STUB(gl_dispatch_stub_770, _gloffset__dispatch_stub_770) GL_STUB(gl_dispatch_stub_771, _gloffset__dispatch_stub_771) + GL_STUB(gl_dispatch_stub_772, _gloffset__dispatch_stub_772) .globl _mesa_sparc_glapi_end ; .type _mesa_sparc_glapi_end,#function _mesa_sparc_glapi_end: diff --git a/src/mesa/swrast/s_texfilter.c b/src/mesa/swrast/s_texfilter.c index 5413fc04101..2c8e443daf9 100644 --- a/src/mesa/swrast/s_texfilter.c +++ b/src/mesa/swrast/s_texfilter.c @@ -2267,6 +2267,597 @@ sample_lambda_rect( GLcontext *ctx, +/**********************************************************************/ +/* 2D Texture Array Sampling Functions */ +/**********************************************************************/ + +/* + * Return the texture sample for coordinate (s,t,r) using GL_NEAREST filter. + */ +static void +sample_2d_array_nearest(GLcontext *ctx, + const struct gl_texture_object *tObj, + const struct gl_texture_image *img, + const GLfloat texcoord[4], + GLchan rgba[4]) +{ + const GLint width = img->Width2; /* without border, power of two */ + const GLint height = img->Height2; /* without border, power of two */ + const GLint depth = img->Depth; + GLint i, j; + GLint array; + (void) ctx; + + COMPUTE_NEAREST_TEXEL_LOCATION(tObj->WrapS, texcoord[0], width, i); + COMPUTE_NEAREST_TEXEL_LOCATION(tObj->WrapT, texcoord[1], height, j); + array = clamp_rect_coord_nearest(tObj->WrapR, texcoord[2], depth); + + if (i < 0 || i >= (GLint) img->Width || + j < 0 || j >= (GLint) img->Height || + array < 0 || array >= (GLint) img->Depth) { + /* Need this test for GL_CLAMP_TO_BORDER mode */ + COPY_CHAN4(rgba, tObj->_BorderChan); + } + else { + img->FetchTexelc(img, i, j, array, rgba); + } +} + + + +/* + * Return the texture sample for coordinate (s,t,r) using GL_LINEAR filter. + */ +static void +sample_2d_array_linear(GLcontext *ctx, + const struct gl_texture_object *tObj, + const struct gl_texture_image *img, + const GLfloat texcoord[4], + GLchan rgba[4]) +{ + const GLint width = img->Width2; + const GLint height = img->Height2; + const GLint depth = img->Depth; + GLint i0, j0, i1, j1; + GLint array; + GLbitfield useBorderColor = 0x0; + GLfloat u, v; + GLfloat a, b; + GLchan t00[4], t01[4], t10[4], t11[4]; + + COMPUTE_LINEAR_TEXEL_LOCATIONS(tObj->WrapS, texcoord[0], u, width, i0, i1); + COMPUTE_LINEAR_TEXEL_LOCATIONS(tObj->WrapT, texcoord[1], v, height, j0, j1); + array = clamp_rect_coord_nearest(tObj->WrapR, texcoord[2], depth); + + if (array < 0 || array >= depth) { + COPY_CHAN4(rgba, tObj->_BorderChan); + } + else { + if (img->Border) { + i0 += img->Border; + i1 += img->Border; + j0 += img->Border; + j1 += img->Border; + } + else { + /* check if sampling texture border color */ + if (i0 < 0 || i0 >= width) useBorderColor |= I0BIT; + if (i1 < 0 || i1 >= width) useBorderColor |= I1BIT; + if (j0 < 0 || j0 >= height) useBorderColor |= J0BIT; + if (j1 < 0 || j1 >= height) useBorderColor |= J1BIT; + } + + /* Fetch texels */ + if (useBorderColor & (I0BIT | J0BIT)) { + COPY_CHAN4(t00, tObj->_BorderChan); + } + else { + img->FetchTexelc(img, i0, j0, array, t00); + } + if (useBorderColor & (I1BIT | J0BIT)) { + COPY_CHAN4(t10, tObj->_BorderChan); + } + else { + img->FetchTexelc(img, i1, j0, array, t10); + } + if (useBorderColor & (I0BIT | J1BIT)) { + COPY_CHAN4(t01, tObj->_BorderChan); + } + else { + img->FetchTexelc(img, i0, j1, array, t01); + } + if (useBorderColor & (I1BIT | J1BIT)) { + COPY_CHAN4(t11, tObj->_BorderChan); + } + else { + img->FetchTexelc(img, i1, j1, array, t11); + } + + /* trilinear interpolation of samples */ + a = FRAC(u); + b = FRAC(v); + lerp_rgba_2d(rgba, a, b, t00, t10, t01, t11); + } +} + + + +static void +sample_2d_array_nearest_mipmap_nearest(GLcontext *ctx, + const struct gl_texture_object *tObj, + GLuint n, const GLfloat texcoord[][4], + const GLfloat lambda[], GLchan rgba[][4] ) +{ + GLuint i; + for (i = 0; i < n; i++) { + GLint level = nearest_mipmap_level(tObj, lambda[i]); + sample_2d_array_nearest(ctx, tObj, tObj->Image[0][level], texcoord[i], + rgba[i]); + } +} + + +static void +sample_2d_array_linear_mipmap_nearest(GLcontext *ctx, + const struct gl_texture_object *tObj, + GLuint n, const GLfloat texcoord[][4], + const GLfloat lambda[], GLchan rgba[][4]) +{ + GLuint i; + ASSERT(lambda != NULL); + for (i = 0; i < n; i++) { + GLint level = nearest_mipmap_level(tObj, lambda[i]); + sample_2d_array_linear(ctx, tObj, tObj->Image[0][level], + texcoord[i], rgba[i]); + } +} + + +static void +sample_2d_array_nearest_mipmap_linear(GLcontext *ctx, + const struct gl_texture_object *tObj, + GLuint n, const GLfloat texcoord[][4], + const GLfloat lambda[], GLchan rgba[][4]) +{ + GLuint i; + ASSERT(lambda != NULL); + for (i = 0; i < n; i++) { + GLint level = linear_mipmap_level(tObj, lambda[i]); + if (level >= tObj->_MaxLevel) { + sample_2d_array_nearest(ctx, tObj, tObj->Image[0][tObj->_MaxLevel], + texcoord[i], rgba[i]); + } + else { + GLchan t0[4], t1[4]; /* texels */ + const GLfloat f = FRAC(lambda[i]); + sample_2d_array_nearest(ctx, tObj, tObj->Image[0][level ], texcoord[i], t0); + sample_2d_array_nearest(ctx, tObj, tObj->Image[0][level+1], texcoord[i], t1); + lerp_rgba(rgba[i], f, t0, t1); + } + } +} + + +static void +sample_2d_array_linear_mipmap_linear(GLcontext *ctx, + const struct gl_texture_object *tObj, + GLuint n, const GLfloat texcoord[][4], + const GLfloat lambda[], GLchan rgba[][4]) +{ + GLuint i; + ASSERT(lambda != NULL); + for (i = 0; i < n; i++) { + GLint level = linear_mipmap_level(tObj, lambda[i]); + if (level >= tObj->_MaxLevel) { + sample_2d_array_linear(ctx, tObj, tObj->Image[0][tObj->_MaxLevel], + texcoord[i], rgba[i]); + } + else { + GLchan t0[4], t1[4]; /* texels */ + const GLfloat f = FRAC(lambda[i]); + sample_2d_array_linear(ctx, tObj, tObj->Image[0][level ], texcoord[i], t0); + sample_2d_array_linear(ctx, tObj, tObj->Image[0][level+1], texcoord[i], t1); + lerp_rgba(rgba[i], f, t0, t1); + } + } +} + + +static void +sample_nearest_2d_array(GLcontext *ctx, + const struct gl_texture_object *tObj, GLuint n, + const GLfloat texcoords[][4], const GLfloat lambda[], + GLchan rgba[][4]) +{ + GLuint i; + struct gl_texture_image *image = tObj->Image[0][tObj->BaseLevel]; + (void) lambda; + for (i=0;iImage[0][tObj->BaseLevel]; + (void) lambda; + for (i=0;iMinFilter) { + case GL_NEAREST: + for (i = minStart; i < minEnd; i++) + sample_2d_array_nearest(ctx, tObj, tObj->Image[0][tObj->BaseLevel], + texcoords[i], rgba[i]); + break; + case GL_LINEAR: + for (i = minStart; i < minEnd; i++) + sample_2d_array_linear(ctx, tObj, tObj->Image[0][tObj->BaseLevel], + texcoords[i], rgba[i]); + break; + case GL_NEAREST_MIPMAP_NEAREST: + sample_2d_array_nearest_mipmap_nearest(ctx, tObj, m, texcoords + minStart, + lambda + minStart, rgba + minStart); + break; + case GL_LINEAR_MIPMAP_NEAREST: + sample_2d_array_linear_mipmap_nearest(ctx, tObj, m, + texcoords + minStart, + lambda + minStart, + rgba + minStart); + break; + case GL_NEAREST_MIPMAP_LINEAR: + sample_2d_array_nearest_mipmap_linear(ctx, tObj, m, texcoords + minStart, + lambda + minStart, rgba + minStart); + break; + case GL_LINEAR_MIPMAP_LINEAR: + sample_2d_array_linear_mipmap_linear(ctx, tObj, m, + texcoords + minStart, + lambda + minStart, + rgba + minStart); + break; + default: + _mesa_problem(ctx, "Bad min filter in sample_2d_array_texture"); + return; + } + } + + if (magStart < magEnd) { + /* do the magnified texels */ + switch (tObj->MagFilter) { + case GL_NEAREST: + for (i = magStart; i < magEnd; i++) + sample_2d_array_nearest(ctx, tObj, tObj->Image[0][tObj->BaseLevel], + texcoords[i], rgba[i]); + break; + case GL_LINEAR: + for (i = magStart; i < magEnd; i++) + sample_2d_array_linear(ctx, tObj, tObj->Image[0][tObj->BaseLevel], + texcoords[i], rgba[i]); + break; + default: + _mesa_problem(ctx, "Bad mag filter in sample_2d_array_texture"); + return; + } + } +} + + + + +/**********************************************************************/ +/* 1D Texture Array Sampling Functions */ +/**********************************************************************/ + +/* + * Return the texture sample for coordinate (s,t,r) using GL_NEAREST filter. + */ +static void +sample_1d_array_nearest(GLcontext *ctx, + const struct gl_texture_object *tObj, + const struct gl_texture_image *img, + const GLfloat texcoord[4], + GLchan rgba[4]) +{ + const GLint width = img->Width2; /* without border, power of two */ + const GLint height = img->Height; + GLint i; + GLint array; + (void) ctx; + + COMPUTE_NEAREST_TEXEL_LOCATION(tObj->WrapS, texcoord[0], width, i); + array = clamp_rect_coord_nearest(tObj->WrapT, texcoord[1], height); + + if (i < 0 || i >= (GLint) img->Width || + array < 0 || array >= (GLint) img->Height) { + /* Need this test for GL_CLAMP_TO_BORDER mode */ + COPY_CHAN4(rgba, tObj->_BorderChan); + } + else { + img->FetchTexelc(img, i, array, 0, rgba); + } +} + + + +/* + * Return the texture sample for coordinate (s,t,r) using GL_LINEAR filter. + */ +static void +sample_1d_array_linear(GLcontext *ctx, + const struct gl_texture_object *tObj, + const struct gl_texture_image *img, + const GLfloat texcoord[4], + GLchan rgba[4]) +{ + const GLint width = img->Width2; + const GLint height = img->Height; + GLint i0, i1; + GLint array; + GLbitfield useBorderColor = 0x0; + GLfloat u; + GLfloat a; + GLchan t0[4], t1[4]; + + COMPUTE_LINEAR_TEXEL_LOCATIONS(tObj->WrapS, texcoord[0], u, width, i0, i1); + array = clamp_rect_coord_nearest(tObj->WrapT, texcoord[1], height); + + if (img->Border) { + i0 += img->Border; + i1 += img->Border; + } + else { + /* check if sampling texture border color */ + if (i0 < 0 || i0 >= width) useBorderColor |= I0BIT; + if (i1 < 0 || i1 >= width) useBorderColor |= I1BIT; + } + + if (array < 0 || array >= height) useBorderColor |= K0BIT; + + /* Fetch texels */ + if (useBorderColor & (I0BIT | K0BIT)) { + COPY_CHAN4(t0, tObj->_BorderChan); + } + else { + img->FetchTexelc(img, i0, array, 0, t0); + } + if (useBorderColor & (I1BIT | K0BIT)) { + COPY_CHAN4(t1, tObj->_BorderChan); + } + else { + img->FetchTexelc(img, i1, array, 0, t1); + } + + /* bilinear interpolation of samples */ + a = FRAC(u); + lerp_rgba(rgba, a, t0, t1); +} + + + +static void +sample_1d_array_nearest_mipmap_nearest(GLcontext *ctx, + const struct gl_texture_object *tObj, + GLuint n, const GLfloat texcoord[][4], + const GLfloat lambda[], GLchan rgba[][4] ) +{ + GLuint i; + for (i = 0; i < n; i++) { + GLint level = nearest_mipmap_level(tObj, lambda[i]); + sample_1d_array_nearest(ctx, tObj, tObj->Image[0][level], texcoord[i], + rgba[i]); + } +} + + +static void +sample_1d_array_linear_mipmap_nearest(GLcontext *ctx, + const struct gl_texture_object *tObj, + GLuint n, const GLfloat texcoord[][4], + const GLfloat lambda[], GLchan rgba[][4]) +{ + GLuint i; + ASSERT(lambda != NULL); + for (i = 0; i < n; i++) { + GLint level = nearest_mipmap_level(tObj, lambda[i]); + sample_1d_array_linear(ctx, tObj, tObj->Image[0][level], + texcoord[i], rgba[i]); + } +} + + +static void +sample_1d_array_nearest_mipmap_linear(GLcontext *ctx, + const struct gl_texture_object *tObj, + GLuint n, const GLfloat texcoord[][4], + const GLfloat lambda[], GLchan rgba[][4]) +{ + GLuint i; + ASSERT(lambda != NULL); + for (i = 0; i < n; i++) { + GLint level = linear_mipmap_level(tObj, lambda[i]); + if (level >= tObj->_MaxLevel) { + sample_1d_array_nearest(ctx, tObj, tObj->Image[0][tObj->_MaxLevel], + texcoord[i], rgba[i]); + } + else { + GLchan t0[4], t1[4]; /* texels */ + const GLfloat f = FRAC(lambda[i]); + sample_1d_array_nearest(ctx, tObj, tObj->Image[0][level ], texcoord[i], t0); + sample_1d_array_nearest(ctx, tObj, tObj->Image[0][level+1], texcoord[i], t1); + lerp_rgba(rgba[i], f, t0, t1); + } + } +} + + +static void +sample_1d_array_linear_mipmap_linear(GLcontext *ctx, + const struct gl_texture_object *tObj, + GLuint n, const GLfloat texcoord[][4], + const GLfloat lambda[], GLchan rgba[][4]) +{ + GLuint i; + ASSERT(lambda != NULL); + for (i = 0; i < n; i++) { + GLint level = linear_mipmap_level(tObj, lambda[i]); + if (level >= tObj->_MaxLevel) { + sample_1d_array_linear(ctx, tObj, tObj->Image[0][tObj->_MaxLevel], + texcoord[i], rgba[i]); + } + else { + GLchan t0[4], t1[4]; /* texels */ + const GLfloat f = FRAC(lambda[i]); + sample_1d_array_linear(ctx, tObj, tObj->Image[0][level ], texcoord[i], t0); + sample_1d_array_linear(ctx, tObj, tObj->Image[0][level+1], texcoord[i], t1); + lerp_rgba(rgba[i], f, t0, t1); + } + } +} + + +static void +sample_nearest_1d_array(GLcontext *ctx, + const struct gl_texture_object *tObj, GLuint n, + const GLfloat texcoords[][4], const GLfloat lambda[], + GLchan rgba[][4]) +{ + GLuint i; + struct gl_texture_image *image = tObj->Image[0][tObj->BaseLevel]; + (void) lambda; + for (i=0;iImage[0][tObj->BaseLevel]; + (void) lambda; + for (i=0;iMinFilter) { + case GL_NEAREST: + for (i = minStart; i < minEnd; i++) + sample_1d_array_nearest(ctx, tObj, tObj->Image[0][tObj->BaseLevel], + texcoords[i], rgba[i]); + break; + case GL_LINEAR: + for (i = minStart; i < minEnd; i++) + sample_1d_array_linear(ctx, tObj, tObj->Image[0][tObj->BaseLevel], + texcoords[i], rgba[i]); + break; + case GL_NEAREST_MIPMAP_NEAREST: + sample_1d_array_nearest_mipmap_nearest(ctx, tObj, m, texcoords + minStart, + lambda + minStart, rgba + minStart); + break; + case GL_LINEAR_MIPMAP_NEAREST: + sample_1d_array_linear_mipmap_nearest(ctx, tObj, m, + texcoords + minStart, + lambda + minStart, + rgba + minStart); + break; + case GL_NEAREST_MIPMAP_LINEAR: + sample_1d_array_nearest_mipmap_linear(ctx, tObj, m, texcoords + minStart, + lambda + minStart, rgba + minStart); + break; + case GL_LINEAR_MIPMAP_LINEAR: + sample_1d_array_linear_mipmap_linear(ctx, tObj, m, + texcoords + minStart, + lambda + minStart, + rgba + minStart); + break; + default: + _mesa_problem(ctx, "Bad min filter in sample_1d_array_texture"); + return; + } + } + + if (magStart < magEnd) { + /* do the magnified texels */ + switch (tObj->MagFilter) { + case GL_NEAREST: + for (i = magStart; i < magEnd; i++) + sample_1d_array_nearest(ctx, tObj, tObj->Image[0][tObj->BaseLevel], + texcoords[i], rgba[i]); + break; + case GL_LINEAR: + for (i = magStart; i < magEnd; i++) + sample_1d_array_linear(ctx, tObj, tObj->Image[0][tObj->BaseLevel], + texcoords[i], rgba[i]); + break; + default: + _mesa_problem(ctx, "Bad mag filter in sample_1d_array_texture"); + return; + } + } +} + + + + /* * Sample a shadow/depth texture. */ @@ -2280,6 +2871,9 @@ sample_depth_texture( GLcontext *ctx, const struct gl_texture_image *img = tObj->Image[0][baseLevel]; const GLint width = img->Width; const GLint height = img->Height; + const GLint depth = img->Depth; + const GLuint compare_coord = (tObj->Target == GL_TEXTURE_2D_ARRAY_EXT) + ? 3 : 2; GLchan ambient; GLenum function; GLchan result; @@ -2291,7 +2885,9 @@ sample_depth_texture( GLcontext *ctx, ASSERT(tObj->Target == GL_TEXTURE_1D || tObj->Target == GL_TEXTURE_2D || - tObj->Target == GL_TEXTURE_RECTANGLE_NV); + tObj->Target == GL_TEXTURE_RECTANGLE_NV || + tObj->Target == GL_TEXTURE_1D_ARRAY_EXT || + tObj->Target == GL_TEXTURE_2D_ARRAY_EXT); UNCLAMPED_FLOAT_TO_CHAN(ambient, tObj->ShadowAmbient); @@ -2320,20 +2916,48 @@ sample_depth_texture( GLcontext *ctx, GLuint i; for (i = 0; i < n; i++) { GLfloat depthSample; - GLint col, row; + GLint col, row, slice; - if (tObj->Target == GL_TEXTURE_RECTANGLE_ARB) { + switch (tObj->Target) { + case GL_TEXTURE_RECTANGLE_ARB: col = clamp_rect_coord_nearest(tObj->WrapS, texcoords[i][0], width); row = clamp_rect_coord_nearest(tObj->WrapT, texcoords[i][1], height); - } - else { + slice = 0; + break; + + case GL_TEXTURE_1D: + COMPUTE_NEAREST_TEXEL_LOCATION(tObj->WrapS, texcoords[i][0], + width, col); + row = 0; + slice = 0; + break; + + case GL_TEXTURE_2D: COMPUTE_NEAREST_TEXEL_LOCATION(tObj->WrapS, texcoords[i][0], width, col); COMPUTE_NEAREST_TEXEL_LOCATION(tObj->WrapT, texcoords[i][1], height, row); + slice = 0; + break; + + case GL_TEXTURE_1D_ARRAY_EXT: + COMPUTE_NEAREST_TEXEL_LOCATION(tObj->WrapS, texcoords[i][0], + width, col); + row = clamp_rect_coord_nearest(tObj->WrapT, texcoords[i][1], height); + slice = 0; + + case GL_TEXTURE_2D_ARRAY_EXT: + COMPUTE_NEAREST_TEXEL_LOCATION(tObj->WrapS, texcoords[i][0], + width, col); + COMPUTE_NEAREST_TEXEL_LOCATION(tObj->WrapT, texcoords[i][1], + height, row); + slice = clamp_rect_coord_nearest(tObj->WrapR, texcoords[i][2], depth); + break; } - if (col >= 0 && row >= 0 && col < width && row < height) { - img->FetchTexelf(img, col, row, 0, &depthSample); + + if (col >= 0 && row >= 0 && col < width && row < height && + slice >= 0 && slice < depth) { + img->FetchTexelf(img, col, row, slice, &depthSample); } else { depthSample = tObj->BorderColor[0]; @@ -2341,22 +2965,22 @@ sample_depth_texture( GLcontext *ctx, switch (function) { case GL_LEQUAL: - result = (texcoords[i][2] <= depthSample) ? CHAN_MAX : ambient; + result = (texcoords[i][compare_coord] <= depthSample) ? CHAN_MAX : ambient; break; case GL_GEQUAL: - result = (texcoords[i][2] >= depthSample) ? CHAN_MAX : ambient; + result = (texcoords[i][compare_coord] >= depthSample) ? CHAN_MAX : ambient; break; case GL_LESS: - result = (texcoords[i][2] < depthSample) ? CHAN_MAX : ambient; + result = (texcoords[i][compare_coord] < depthSample) ? CHAN_MAX : ambient; break; case GL_GREATER: - result = (texcoords[i][2] > depthSample) ? CHAN_MAX : ambient; + result = (texcoords[i][compare_coord] > depthSample) ? CHAN_MAX : ambient; break; case GL_EQUAL: - result = (texcoords[i][2] == depthSample) ? CHAN_MAX : ambient; + result = (texcoords[i][compare_coord] == depthSample) ? CHAN_MAX : ambient; break; case GL_NOTEQUAL: - result = (texcoords[i][2] != depthSample) ? CHAN_MAX : ambient; + result = (texcoords[i][compare_coord] != depthSample) ? CHAN_MAX : ambient; break; case GL_ALWAYS: result = CHAN_MAX; @@ -2402,28 +3026,52 @@ sample_depth_texture( GLcontext *ctx, for (i = 0; i < n; i++) { GLfloat depth00, depth01, depth10, depth11; GLint i0, i1, j0, j1; + GLint slice; GLfloat u, v; GLuint useBorderTexel; - if (tObj->Target == GL_TEXTURE_RECTANGLE_ARB) { + switch (tObj->Target) { + case GL_TEXTURE_RECTANGLE_ARB: clamp_rect_coord_linear(tObj->WrapS, texcoords[i][0], width, &i0, &i1); clamp_rect_coord_linear(tObj->WrapT, texcoords[i][1], height, &j0, &j1); - } - else { + slice = 0; + break; + + case GL_TEXTURE_1D: + case GL_TEXTURE_2D: COMPUTE_LINEAR_TEXEL_LOCATIONS(tObj->WrapS, texcoords[i][0], u, width, i0, i1); COMPUTE_LINEAR_TEXEL_LOCATIONS(tObj->WrapT, texcoords[i][1], v, height,j0, j1); + slice = 0; + break; + + case GL_TEXTURE_1D_ARRAY_EXT: + COMPUTE_LINEAR_TEXEL_LOCATIONS(tObj->WrapS, texcoords[i][0], + u, width, i0, i1); + j0 = clamp_rect_coord_nearest(tObj->WrapT, texcoords[i][1], height); + j1 = j0; + slice = 0; + + case GL_TEXTURE_2D_ARRAY_EXT: + COMPUTE_LINEAR_TEXEL_LOCATIONS(tObj->WrapS, texcoords[i][0], + u, width, i0, i1); + COMPUTE_LINEAR_TEXEL_LOCATIONS(tObj->WrapT, texcoords[i][1], + v, height,j0, j1); + slice = clamp_rect_coord_nearest(tObj->WrapR, texcoords[i][2], depth); + break; } useBorderTexel = 0; if (img->Border) { i0 += img->Border; i1 += img->Border; - j0 += img->Border; - j1 += img->Border; + if (tObj->Target != GL_TEXTURE_1D_ARRAY_EXT) { + j0 += img->Border; + j1 += img->Border; + } } else { if (i0 < 0 || i0 >= (GLint) width) useBorderTexel |= I0BIT; @@ -2432,30 +3080,45 @@ sample_depth_texture( GLcontext *ctx, if (j1 < 0 || j1 >= (GLint) height) useBorderTexel |= J1BIT; } - /* get four depth samples from the texture */ - if (useBorderTexel & (I0BIT | J0BIT)) { + if (slice < 0 || slice >= (GLint) depth) { depth00 = tObj->BorderColor[0]; - } - else { - img->FetchTexelf(img, i0, j0, 0, &depth00); - } - if (useBorderTexel & (I1BIT | J0BIT)) { - depth10 = tObj->BorderColor[0]; - } - else { - img->FetchTexelf(img, i1, j0, 0, &depth10); - } - if (useBorderTexel & (I0BIT | J1BIT)) { depth01 = tObj->BorderColor[0]; - } - else { - img->FetchTexelf(img, i0, j1, 0, &depth01); - } - if (useBorderTexel & (I1BIT | J1BIT)) { + depth10 = tObj->BorderColor[0]; depth11 = tObj->BorderColor[0]; } else { - img->FetchTexelf(img, i1, j1, 0, &depth11); + /* get four depth samples from the texture */ + if (useBorderTexel & (I0BIT | J0BIT)) { + depth00 = tObj->BorderColor[0]; + } + else { + img->FetchTexelf(img, i0, j0, slice, &depth00); + } + if (useBorderTexel & (I1BIT | J0BIT)) { + depth10 = tObj->BorderColor[0]; + } + else { + img->FetchTexelf(img, i1, j0, slice, &depth10); + } + + if (tObj->Target != GL_TEXTURE_1D_ARRAY_EXT) { + if (useBorderTexel & (I0BIT | J1BIT)) { + depth01 = tObj->BorderColor[0]; + } + else { + img->FetchTexelf(img, i0, j1, slice, &depth01); + } + if (useBorderTexel & (I1BIT | J1BIT)) { + depth11 = tObj->BorderColor[0]; + } + else { + img->FetchTexelf(img, i1, j1, slice, &depth11); + } + } + else { + depth01 = depth00; + depth11 = depth10; + } } if (0) { @@ -2464,8 +3127,8 @@ sample_depth_texture( GLcontext *ctx, const GLfloat b = FRAC(v + 1.0F); const GLfloat depthSample = lerp_2d(a, b, depth00, depth10, depth01, depth11); - if ((depthSample <= texcoords[i][2] && function == GL_LEQUAL) || - (depthSample >= texcoords[i][2] && function == GL_GEQUAL)) { + if ((depthSample <= texcoords[i][compare_coord] && function == GL_LEQUAL) || + (depthSample >= texcoords[i][compare_coord] && function == GL_GEQUAL)) { result = ambient; } else { @@ -2482,45 +3145,45 @@ sample_depth_texture( GLcontext *ctx, switch (function) { case GL_LEQUAL: - if (depth00 <= texcoords[i][2]) luminance -= d; - if (depth01 <= texcoords[i][2]) luminance -= d; - if (depth10 <= texcoords[i][2]) luminance -= d; - if (depth11 <= texcoords[i][2]) luminance -= d; + if (depth00 <= texcoords[i][compare_coord]) luminance -= d; + if (depth01 <= texcoords[i][compare_coord]) luminance -= d; + if (depth10 <= texcoords[i][compare_coord]) luminance -= d; + if (depth11 <= texcoords[i][compare_coord]) luminance -= d; result = (GLchan) luminance; break; case GL_GEQUAL: - if (depth00 >= texcoords[i][2]) luminance -= d; - if (depth01 >= texcoords[i][2]) luminance -= d; - if (depth10 >= texcoords[i][2]) luminance -= d; - if (depth11 >= texcoords[i][2]) luminance -= d; + if (depth00 >= texcoords[i][compare_coord]) luminance -= d; + if (depth01 >= texcoords[i][compare_coord]) luminance -= d; + if (depth10 >= texcoords[i][compare_coord]) luminance -= d; + if (depth11 >= texcoords[i][compare_coord]) luminance -= d; result = (GLchan) luminance; break; case GL_LESS: - if (depth00 < texcoords[i][2]) luminance -= d; - if (depth01 < texcoords[i][2]) luminance -= d; - if (depth10 < texcoords[i][2]) luminance -= d; - if (depth11 < texcoords[i][2]) luminance -= d; + if (depth00 < texcoords[i][compare_coord]) luminance -= d; + if (depth01 < texcoords[i][compare_coord]) luminance -= d; + if (depth10 < texcoords[i][compare_coord]) luminance -= d; + if (depth11 < texcoords[i][compare_coord]) luminance -= d; result = (GLchan) luminance; break; case GL_GREATER: - if (depth00 > texcoords[i][2]) luminance -= d; - if (depth01 > texcoords[i][2]) luminance -= d; - if (depth10 > texcoords[i][2]) luminance -= d; - if (depth11 > texcoords[i][2]) luminance -= d; + if (depth00 > texcoords[i][compare_coord]) luminance -= d; + if (depth01 > texcoords[i][compare_coord]) luminance -= d; + if (depth10 > texcoords[i][compare_coord]) luminance -= d; + if (depth11 > texcoords[i][compare_coord]) luminance -= d; result = (GLchan) luminance; break; case GL_EQUAL: - if (depth00 == texcoords[i][2]) luminance -= d; - if (depth01 == texcoords[i][2]) luminance -= d; - if (depth10 == texcoords[i][2]) luminance -= d; - if (depth11 == texcoords[i][2]) luminance -= d; + if (depth00 == texcoords[i][compare_coord]) luminance -= d; + if (depth01 == texcoords[i][compare_coord]) luminance -= d; + if (depth10 == texcoords[i][compare_coord]) luminance -= d; + if (depth11 == texcoords[i][compare_coord]) luminance -= d; result = (GLchan) luminance; break; case GL_NOTEQUAL: - if (depth00 != texcoords[i][2]) luminance -= d; - if (depth01 != texcoords[i][2]) luminance -= d; - if (depth10 != texcoords[i][2]) luminance -= d; - if (depth11 != texcoords[i][2]) luminance -= d; + if (depth00 != texcoords[i][compare_coord]) luminance -= d; + if (depth01 != texcoords[i][compare_coord]) luminance -= d; + if (depth10 != texcoords[i][compare_coord]) luminance -= d; + if (depth11 != texcoords[i][compare_coord]) luminance -= d; result = (GLchan) luminance; break; case GL_ALWAYS: @@ -2792,6 +3455,28 @@ _swrast_choose_texture_sample_func( GLcontext *ctx, ASSERT(t->MinFilter == GL_NEAREST); return &sample_nearest_rect; } + case GL_TEXTURE_1D_ARRAY_EXT: + if (needLambda) { + return &sample_lambda_1d_array; + } + else if (t->MinFilter == GL_LINEAR) { + return &sample_linear_1d_array; + } + else { + ASSERT(t->MinFilter == GL_NEAREST); + return &sample_nearest_1d_array; + } + case GL_TEXTURE_2D_ARRAY_EXT: + if (needLambda) { + return &sample_lambda_2d_array; + } + else if (t->MinFilter == GL_LINEAR) { + return &sample_linear_2d_array; + } + else { + ASSERT(t->MinFilter == GL_NEAREST); + return &sample_nearest_2d_array; + } default: _mesa_problem(ctx, "invalid target in _swrast_choose_texture_sample_func"); diff --git a/src/mesa/x86-64/glapi_x86-64.S b/src/mesa/x86-64/glapi_x86-64.S index eb54ba4848f..e62dde8a2f7 100644 --- a/src/mesa/x86-64/glapi_x86-64.S +++ b/src/mesa/x86-64/glapi_x86-64.S @@ -29071,10 +29071,9 @@ GL_PREFIX(_dispatch_stub_767): .size GL_PREFIX(_dispatch_stub_767), .-GL_PREFIX(_dispatch_stub_767) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_768) - .type GL_PREFIX(_dispatch_stub_768), @function - HIDDEN(GL_PREFIX(_dispatch_stub_768)) -GL_PREFIX(_dispatch_stub_768): + .globl GL_PREFIX(FramebufferTextureLayerEXT) + .type GL_PREFIX(FramebufferTextureLayerEXT), @function +GL_PREFIX(FramebufferTextureLayerEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT movq 6144(%rax), %r11 @@ -29084,9 +29083,9 @@ GL_PREFIX(_dispatch_stub_768): pushq %rsi pushq %rdx pushq %rcx - pushq %rbp + pushq %r8 call _x86_64_get_dispatch@PLT - popq %rbp + popq %r8 popq %rcx popq %rdx popq %rsi @@ -29104,9 +29103,9 @@ GL_PREFIX(_dispatch_stub_768): pushq %rsi pushq %rdx pushq %rcx - pushq %rbp + pushq %r8 call _glapi_get_dispatch - popq %rbp + popq %r8 popq %rcx popq %rdx popq %rsi @@ -29114,7 +29113,7 @@ GL_PREFIX(_dispatch_stub_768): movq 6144(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_768), .-GL_PREFIX(_dispatch_stub_768) + .size GL_PREFIX(FramebufferTextureLayerEXT), .-GL_PREFIX(FramebufferTextureLayerEXT) .p2align 4,,15 .globl GL_PREFIX(_dispatch_stub_769) @@ -29175,7 +29174,11 @@ GL_PREFIX(_dispatch_stub_770): pushq %rdi pushq %rsi pushq %rdx + pushq %rcx + pushq %rbp call _x86_64_get_dispatch@PLT + popq %rbp + popq %rcx popq %rdx popq %rsi popq %rdi @@ -29191,7 +29194,11 @@ GL_PREFIX(_dispatch_stub_770): pushq %rdi pushq %rsi pushq %rdx + pushq %rcx + pushq %rbp call _glapi_get_dispatch + popq %rbp + popq %rcx popq %rdx popq %rsi popq %rdi @@ -29238,6 +29245,44 @@ GL_PREFIX(_dispatch_stub_771): #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(_dispatch_stub_771), .-GL_PREFIX(_dispatch_stub_771) + .p2align 4,,15 + .globl GL_PREFIX(_dispatch_stub_772) + .type GL_PREFIX(_dispatch_stub_772), @function + HIDDEN(GL_PREFIX(_dispatch_stub_772)) +GL_PREFIX(_dispatch_stub_772): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 6176(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rdx + call _x86_64_get_dispatch@PLT + popq %rdx + popq %rsi + popq %rdi + movq 6176(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 6176(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rdx + call _glapi_get_dispatch + popq %rdx + popq %rsi + popq %rdi + movq 6176(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(_dispatch_stub_772), .-GL_PREFIX(_dispatch_stub_772) + .globl GL_PREFIX(ArrayElementEXT) ; .set GL_PREFIX(ArrayElementEXT), GL_PREFIX(ArrayElement) .globl GL_PREFIX(BindTextureEXT) ; .set GL_PREFIX(BindTextureEXT), GL_PREFIX(BindTexture) .globl GL_PREFIX(DrawArraysEXT) ; .set GL_PREFIX(DrawArraysEXT), GL_PREFIX(DrawArrays) diff --git a/src/mesa/x86/glapi_x86.S b/src/mesa/x86/glapi_x86.S index 1106eeede87..bdf42ac0887 100644 --- a/src/mesa/x86/glapi_x86.S +++ b/src/mesa/x86/glapi_x86.S @@ -938,14 +938,15 @@ GLNAME(gl_dispatch_functions_start): GL_STUB(RenderbufferStorageEXT, _gloffset_RenderbufferStorageEXT, RenderbufferStorageEXT@16) GL_STUB(_dispatch_stub_767, _gloffset_BlitFramebufferEXT, _dispatch_stub_767@40) HIDDEN(GL_PREFIX(_dispatch_stub_767, _dispatch_stub_767@40)) - GL_STUB(_dispatch_stub_768, _gloffset_ProgramEnvParameters4fvEXT, _dispatch_stub_768@16) - HIDDEN(GL_PREFIX(_dispatch_stub_768, _dispatch_stub_768@16)) - GL_STUB(_dispatch_stub_769, _gloffset_ProgramLocalParameters4fvEXT, _dispatch_stub_769@16) + GL_STUB(FramebufferTextureLayerEXT, _gloffset_FramebufferTextureLayerEXT, FramebufferTextureLayerEXT@20) + GL_STUB(_dispatch_stub_769, _gloffset_ProgramEnvParameters4fvEXT, _dispatch_stub_769@16) HIDDEN(GL_PREFIX(_dispatch_stub_769, _dispatch_stub_769@16)) - GL_STUB(_dispatch_stub_770, _gloffset_GetQueryObjecti64vEXT, _dispatch_stub_770@12) - HIDDEN(GL_PREFIX(_dispatch_stub_770, _dispatch_stub_770@12)) - GL_STUB(_dispatch_stub_771, _gloffset_GetQueryObjectui64vEXT, _dispatch_stub_771@12) + GL_STUB(_dispatch_stub_770, _gloffset_ProgramLocalParameters4fvEXT, _dispatch_stub_770@16) + HIDDEN(GL_PREFIX(_dispatch_stub_770, _dispatch_stub_770@16)) + GL_STUB(_dispatch_stub_771, _gloffset_GetQueryObjecti64vEXT, _dispatch_stub_771@12) HIDDEN(GL_PREFIX(_dispatch_stub_771, _dispatch_stub_771@12)) + GL_STUB(_dispatch_stub_772, _gloffset_GetQueryObjectui64vEXT, _dispatch_stub_772@12) + HIDDEN(GL_PREFIX(_dispatch_stub_772, _dispatch_stub_772@12)) GL_STUB_ALIAS(ArrayElementEXT, _gloffset_ArrayElement, ArrayElementEXT@4, ArrayElement, ArrayElement@4) GL_STUB_ALIAS(BindTextureEXT, _gloffset_BindTexture, BindTextureEXT@8, BindTexture, BindTexture@8) GL_STUB_ALIAS(DrawArraysEXT, _gloffset_DrawArrays, DrawArraysEXT@12, DrawArrays, DrawArrays@12) -- cgit v1.2.3 From 67f82731fcb87f789135e07f691d41ebd12f0015 Mon Sep 17 00:00:00 2001 From: Tommy Schultz Lassen Date: Thu, 17 May 2007 14:11:23 +0000 Subject: r300: Removed the radeon_vertex_buffer structure. --- src/mesa/drivers/dri/r300/r300_context.h | 23 ----- src/mesa/drivers/dri/r300/r300_emit.c | 151 +++++++++---------------------- src/mesa/drivers/dri/r300/r300_render.c | 72 +++------------ 3 files changed, 56 insertions(+), 190 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r300/r300_context.h b/src/mesa/drivers/dri/r300/r300_context.h index 13b943f75fc..dbcd5d04d6d 100644 --- a/src/mesa/drivers/dri/r300/r300_context.h +++ b/src/mesa/drivers/dri/r300/r300_context.h @@ -790,28 +790,6 @@ struct r300_fragment_program { #define REG_COLOR0 1 #define REG_TEX0 2 -struct dt { - GLint size; - GLenum type; - GLsizei stride; - void *data; -}; - -struct radeon_vertex_buffer { - int Count; - void *Elts; - int elt_size; - int elt_min, elt_max; /* debug */ - - struct dt AttribPtr[VERT_ATTRIB_MAX]; - - const struct _mesa_prim *Primitive; - GLuint PrimitiveCount; - GLint LockFirst; - GLsizei LockCount; - int lock_uptodate; -}; - struct r300_state { struct r300_depthbuffer_state depth; struct r300_texture_state texture; @@ -820,7 +798,6 @@ struct r300_state { struct r300_pfs_compile_state pfs_compile; struct r300_dma_region aos[R300_MAX_AOS_ARRAYS]; int aos_count; - struct radeon_vertex_buffer VB; GLuint *Elts; struct r300_dma_region elt_dma; diff --git a/src/mesa/drivers/dri/r300/r300_emit.c b/src/mesa/drivers/dri/r300/r300_emit.c index 2c26069f9b3..9fb712f7b8f 100644 --- a/src/mesa/drivers/dri/r300/r300_emit.c +++ b/src/mesa/drivers/dri/r300/r300_emit.c @@ -223,86 +223,48 @@ static void r300EmitVec(GLcontext * ctx, } -static GLuint t_type(struct dt *dt) +#define R300_VIR0_AOS_SIZE_SHIFT 0 +#define R300_VIR0_AOS_INPUT_SHIFT 8 +#define R300_VIR0_AOS_STOP_SHIFT 13 +#define R300_VIR0_AOS_TYPE_SHIFT 14 +#define R300_VIR0_HIGH_SHIFT 16 + +// Pack 4 elemets in a 16 bit (aos_size first 8, input next 5, 1 stop bit(Whild gues), aos_type last 2); +static inline GLuint t_vir_pack(GLvector4f ** dt, int *inputs, int i) { - switch (dt->type) { - case GL_UNSIGNED_BYTE: - return AOS_FORMAT_UBYTE; - case GL_SHORT: - return AOS_FORMAT_USHORT; - case GL_FLOAT: - return AOS_FORMAT_FLOAT; - default: - assert(0); - break; - } - - return AOS_FORMAT_FLOAT; -} - -static GLuint t_vir0_size(struct dt *dt) -{ - switch (dt->type) { - case GL_UNSIGNED_BYTE: - return 4; - case GL_SHORT: - return 7; - case GL_FLOAT: - return dt->size - 1; - default: - assert(0); - break; - } - - return 0; + GLuint dw; + dw = (dt[i]->size - 1) << R300_VIR0_AOS_SIZE_SHIFT; + dw |= inputs[i] << R300_VIR0_AOS_INPUT_SHIFT; + //dw |= t_type(&dt[i]) << R300_VIR0_AOS_TYPE_SHIFT; + return dw; } -static GLuint t_aos_size(struct dt *dt) -{ - switch (dt->type) { - case GL_UNSIGNED_BYTE: - return 1; - case GL_SHORT: - return 2; - case GL_FLOAT: - return dt->size; - default: - assert(0); - break; - } - - return 0; -} - -static GLuint t_vir0(uint32_t * dst, struct dt *dt, int *inputs, +static GLuint t_vir0(uint32_t * dst, GLvector4f ** dt, int *inputs, GLint * tab, GLuint nr) { - GLuint i, dw; + GLuint i, dw, dwInternel; for (i = 0; i + 1 < nr; i += 2) { - dw = t_vir0_size(&dt[tab[i]]) | (inputs[tab[i]] << 8) | - (t_type(&dt[tab[i]]) << 14); - dw |= - (t_vir0_size(&dt[tab[i + 1]]) | - (inputs[tab[i + 1]] << 8) | (t_type(&dt[tab[i + 1]]) - << 14)) << 16; + dw = t_vir_pack(dt, inputs, tab[i]); + dwInternel = t_vir_pack(dt, inputs, tab[i + 1]); + dw |= dwInternel << R300_VIR0_HIGH_SHIFT; if (i + 2 == nr) { - dw |= (1 << (13 + 16)); + dw |= + (1 << + (R300_VIR0_AOS_STOP_SHIFT + R300_VIR0_HIGH_SHIFT)); } - dst[i >> 1] = dw; + dst[i >> 1] = dw; // Is the same as i/2 } if (nr & 1) { - dw = t_vir0_size(&dt[tab[nr - 1]]) | (inputs[tab[nr - 1]] - << 8) | - (t_type(&dt[tab[nr - 1]]) << 14); - dw |= 1 << 13; + dw = t_vir_pack(dt, inputs, tab[nr - 1]); + dw |= 1 << R300_VIR0_AOS_STOP_SHIFT; dst[nr >> 1] = dw; } - return (nr + 1) >> 1; + return (nr + 1) >> 1; // Is the same as (nr+1)/2 } static GLuint t_swizzle(int swizzle[4]) @@ -331,11 +293,6 @@ static GLuint t_vir1(uint32_t * dst, int swizzle[][4], GLuint nr) return (nr + 1) >> 1; } -static GLuint t_emit_size(struct dt *dt) -{ - return dt->size; -} - static GLuint t_vic(GLcontext * ctx, GLuint InputsRead) { r300ContextPtr r300 = R300_CONTEXT(ctx); @@ -369,9 +326,10 @@ int r300EmitArrays(GLcontext * ctx) { r300ContextPtr rmesa = R300_CONTEXT(ctx); r300ContextPtr r300 = rmesa; - struct radeon_vertex_buffer *VB = &rmesa->state.VB; + TNLcontext *tnl = TNL_CONTEXT(ctx); + struct vertex_buffer *vb = &tnl->vb; GLuint nr; - GLuint count = VB->Count; + GLuint count = vb->Count; GLuint i; GLuint InputsRead = 0, OutputsWritten = 0; int *inputs = NULL; @@ -466,57 +424,38 @@ int r300EmitArrays(GLcontext * ctx) swizzle[i][2] = SWIZZLE_ZERO; swizzle[i][3] = SWIZZLE_ONE; - for (ci = 0; ci < VB->AttribPtr[tab[i]].size; ci++) + for (ci = 0; ci < vb->AttribPtr[tab[i]]->size; ci++) swizzle[i][ci] = ci; -#if MESA_BIG_ENDIAN -#define SWAP_INT(a, b) do { \ - int __temp; \ - __temp = a;\ - a = b; \ - b = __temp; \ -} while (0) - - if (VB->AttribPtr[tab[i]].type == GL_UNSIGNED_BYTE) { - SWAP_INT(swizzle[i][0], swizzle[i][3]); - SWAP_INT(swizzle[i][1], swizzle[i][2]); - } -#endif /* MESA_BIG_ENDIAN */ - - if (r300IsGartMemory(rmesa, VB->AttribPtr[tab[i]].data, + if (r300IsGartMemory(rmesa, vb->AttribPtr[tab[i]]->data, /*(count-1)*stride */ 4)) { - if (VB->AttribPtr[tab[i]].stride % 4) + if (vb->AttribPtr[tab[i]]->stride % 4) return R300_FALLBACK_TCL; rmesa->state.aos[i].address = - VB->AttribPtr[tab[i]].data; + (void *)(vb->AttribPtr[tab[i]]->data); rmesa->state.aos[i].start = 0; rmesa->state.aos[i].aos_offset = r300GartOffsetFromVirtual(rmesa, - VB-> - AttribPtr[tab[i]].data); + vb-> + AttribPtr[tab[i]]->data); rmesa->state.aos[i].aos_stride = - VB->AttribPtr[tab[i]].stride / 4; + vb->AttribPtr[tab[i]]->stride / 4; rmesa->state.aos[i].aos_size = - t_emit_size(&VB->AttribPtr[tab[i]]); + vb->AttribPtr[tab[i]]->size; } else { - /* TODO: r300EmitVec can only handle 4 byte vectors */ - if (VB->AttribPtr[tab[i]].type != GL_FLOAT) - return R300_FALLBACK_TCL; - r300EmitVec(ctx, &rmesa->state.aos[i], - VB->AttribPtr[tab[i]].data, - t_emit_size(&VB->AttribPtr[tab[i]]), - VB->AttribPtr[tab[i]].stride, count); + vb->AttribPtr[tab[i]]->data, + vb->AttribPtr[tab[i]]->size, + vb->AttribPtr[tab[i]]->stride, count); } - rmesa->state.aos[i].aos_size = - t_aos_size(&VB->AttribPtr[tab[i]]); + rmesa->state.aos[i].aos_size = vb->AttribPtr[tab[i]]->size; - comp_size = _mesa_sizeof_type(VB->AttribPtr[tab[i]].type); + comp_size = _mesa_sizeof_type(GL_FLOAT); - for (fix = 0; fix <= 4 - VB->AttribPtr[tab[i]].size; fix++) { + for (fix = 0; fix <= 4 - vb->AttribPtr[tab[i]]->size; fix++) { if ((rmesa->state.aos[i].aos_offset - comp_size * fix) % 4) continue; @@ -532,14 +471,14 @@ int r300EmitArrays(GLcontext * ctx) rmesa->state.aos[i].aos_offset -= comp_size * fix; - for (ci = 0; ci < VB->AttribPtr[tab[i]].size; ci++) + for (ci = 0; ci < vb->AttribPtr[tab[i]]->size; ci++) swizzle[i][ci] += fix; } else { WARN_ONCE ("Cannot handle offset %x with stride %d, comp %d\n", rmesa->state.aos[i].aos_offset, rmesa->state.aos[i].aos_stride, - VB->AttribPtr[tab[i]].size); + vb->AttribPtr[tab[i]]->size); return R300_FALLBACK_TCL; } } @@ -547,7 +486,7 @@ int r300EmitArrays(GLcontext * ctx) /* setup INPUT_ROUTE */ R300_STATECHANGE(r300, vir[0]); ((drm_r300_cmd_header_t *) r300->hw.vir[0].cmd)->packet0.count = - t_vir0(&r300->hw.vir[0].cmd[R300_VIR_CNTL_0], VB->AttribPtr, + t_vir0(&r300->hw.vir[0].cmd[R300_VIR_CNTL_0], vb->AttribPtr, inputs, tab, nr); R300_STATECHANGE(r300, vir[1]); diff --git a/src/mesa/drivers/dri/r300/r300_render.c b/src/mesa/drivers/dri/r300/r300_render.c index cc13e9a5304..6cec2bb1ea7 100644 --- a/src/mesa/drivers/dri/r300/r300_render.c +++ b/src/mesa/drivers/dri/r300/r300_render.c @@ -301,6 +301,8 @@ static void r300RunRenderPrimitive(r300ContextPtr rmesa, GLcontext * ctx, int start, int end, int prim) { int type, num_verts; + TNLcontext *tnl = TNL_CONTEXT(ctx); + struct vertex_buffer *vb = &tnl->vb; type = r300PrimitiveType(rmesa, ctx, prim); num_verts = r300NumVerts(rmesa, end - start, prim); @@ -308,88 +310,36 @@ static void r300RunRenderPrimitive(r300ContextPtr rmesa, GLcontext * ctx, if (type < 0 || num_verts <= 0) return; - if (rmesa->state.VB.Elts) { + if (vb->Elts) { r300EmitAOS(rmesa, rmesa->state.aos_count, start); if (num_verts > 65535) { /* not implemented yet */ WARN_ONCE("Too many elts\n"); return; } - r300EmitElts(ctx, rmesa->state.VB.Elts, num_verts, - rmesa->state.VB.elt_size); + r300EmitElts(ctx, vb->Elts, num_verts, 4); r300FireEB(rmesa, rmesa->state.elt_dma.aos_offset, - num_verts, type, rmesa->state.VB.elt_size); + num_verts, type, 4); } else { r300EmitAOS(rmesa, rmesa->state.aos_count, start); r300FireAOS(rmesa, num_verts, type); } } -#define CONV_VB(a, b) rvb->AttribPtr[(a)].size = vb->b->size, \ - rvb->AttribPtr[(a)].type = GL_FLOAT, \ - rvb->AttribPtr[(a)].stride = vb->b->stride, \ - rvb->AttribPtr[(a)].data = vb->b->data - -static void radeon_vb_to_rvb(r300ContextPtr rmesa, - struct radeon_vertex_buffer *rvb, - struct vertex_buffer *vb) -{ - int i; - GLcontext *ctx; - ctx = rmesa->radeon.glCtx; - - memset(rvb, 0, sizeof(*rvb)); - - rvb->Elts = vb->Elts; - rvb->elt_size = 4; - rvb->elt_min = 0; - rvb->elt_max = vb->Count; - - rvb->Count = vb->Count; - - if (hw_tcl_on) { - CONV_VB(VERT_ATTRIB_POS, ObjPtr); - } else { - assert(vb->ClipPtr); - CONV_VB(VERT_ATTRIB_POS, ClipPtr); - } - - CONV_VB(VERT_ATTRIB_NORMAL, NormalPtr); - CONV_VB(VERT_ATTRIB_COLOR0, ColorPtr[0]); - CONV_VB(VERT_ATTRIB_COLOR1, SecondaryColorPtr[0]); - CONV_VB(VERT_ATTRIB_FOG, FogCoordPtr); - - for (i = 0; i < ctx->Const.MaxTextureCoordUnits; i++) - CONV_VB(VERT_ATTRIB_TEX0 + i, TexCoordPtr[i]); - - for (i = 0; i < MAX_VERTEX_PROGRAM_ATTRIBS; i++) - CONV_VB(VERT_ATTRIB_GENERIC0 + i, - AttribPtr[VERT_ATTRIB_GENERIC0 + i]); - - rvb->Primitive = vb->Primitive; - rvb->PrimitiveCount = vb->PrimitiveCount; - rvb->LockFirst = rvb->LockCount = 0; - rvb->lock_uptodate = GL_FALSE; -} - static GLboolean r300RunRender(GLcontext * ctx, struct tnl_pipeline_stage *stage) { r300ContextPtr rmesa = R300_CONTEXT(ctx); - struct radeon_vertex_buffer *VB = &rmesa->state.VB; int i; int cmd_reserved = 0; int cmd_written = 0; drm_radeon_cmd_header_t *cmd = NULL; + TNLcontext *tnl = TNL_CONTEXT(ctx); + struct vertex_buffer *vb = &tnl->vb; if (RADEON_DEBUG & DEBUG_PRIMS) fprintf(stderr, "%s\n", __FUNCTION__); - if (stage) { - TNLcontext *tnl = TNL_CONTEXT(ctx); - radeon_vb_to_rvb(rmesa, VB, &tnl->vb); - } - r300UpdateShaders(rmesa); if (r300EmitArrays(ctx)) return GL_TRUE; @@ -404,10 +354,10 @@ static GLboolean r300RunRender(GLcontext * ctx, r300EmitState(rmesa); - for (i = 0; i < VB->PrimitiveCount; i++) { - GLuint prim = _tnl_translate_prim(&VB->Primitive[i]); - GLuint start = VB->Primitive[i].start; - GLuint end = VB->Primitive[i].start + VB->Primitive[i].count; + for (i = 0; i < vb->PrimitiveCount; i++) { + GLuint prim = _tnl_translate_prim(&vb->Primitive[i]); + GLuint start = vb->Primitive[i].start; + GLuint end = vb->Primitive[i].start + vb->Primitive[i].count; r300RunRenderPrimitive(rmesa, ctx, start, end, prim); } -- cgit v1.2.3 From 0985e786cdd08bf900db889b69783be4bc467e5b Mon Sep 17 00:00:00 2001 From: Christoff Brill Date: Thu, 17 May 2007 17:16:37 -0600 Subject: remove CVS/XFree86 keywords --- src/mesa/drivers/dri/r200/r200_cmdbuf.c | 1 - src/mesa/drivers/dri/r200/r200_context.c | 1 - src/mesa/drivers/dri/r200/r200_context.h | 1 - src/mesa/drivers/dri/r200/r200_ioctl.c | 1 - src/mesa/drivers/dri/r200/r200_ioctl.h | 1 - src/mesa/drivers/dri/r200/r200_lock.c | 1 - src/mesa/drivers/dri/r200/r200_lock.h | 1 - src/mesa/drivers/dri/r200/r200_maos.h | 1 - src/mesa/drivers/dri/r200/r200_maos_arrays.c | 1 - src/mesa/drivers/dri/r200/r200_pixel.c | 1 - src/mesa/drivers/dri/r200/r200_pixel.h | 1 - src/mesa/drivers/dri/r200/r200_reg.h | 1 - src/mesa/drivers/dri/r200/r200_sanity.c | 1 - src/mesa/drivers/dri/r200/r200_span.c | 1 - src/mesa/drivers/dri/r200/r200_span.h | 1 - src/mesa/drivers/dri/r200/r200_state.c | 1 - src/mesa/drivers/dri/r200/r200_state.h | 1 - src/mesa/drivers/dri/r200/r200_state_init.c | 1 - src/mesa/drivers/dri/r200/r200_swtcl.c | 1 - src/mesa/drivers/dri/r200/r200_swtcl.h | 1 - src/mesa/drivers/dri/r200/r200_tcl.c | 1 - src/mesa/drivers/dri/r200/r200_tcl.h | 1 - src/mesa/drivers/dri/r200/r200_tex.c | 1 - src/mesa/drivers/dri/r200/r200_tex.h | 1 - src/mesa/drivers/dri/r200/r200_texmem.c | 1 - src/mesa/drivers/dri/r200/r200_texstate.c | 1 - 26 files changed, 26 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r200/r200_cmdbuf.c b/src/mesa/drivers/dri/r200/r200_cmdbuf.c index 2920ceafd30..c1d51e87001 100644 --- a/src/mesa/drivers/dri/r200/r200_cmdbuf.c +++ b/src/mesa/drivers/dri/r200/r200_cmdbuf.c @@ -1,4 +1,3 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r200/r200_cmdbuf.c,v 1.1 2002/10/30 12:51:51 alanh Exp $ */ /* Copyright (C) The Weather Channel, Inc. 2002. All Rights Reserved. diff --git a/src/mesa/drivers/dri/r200/r200_context.c b/src/mesa/drivers/dri/r200/r200_context.c index 786a298cc3b..5a178442bdb 100644 --- a/src/mesa/drivers/dri/r200/r200_context.c +++ b/src/mesa/drivers/dri/r200/r200_context.c @@ -1,4 +1,3 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r200/r200_context.c,v 1.3 2003/05/06 23:52:08 daenzer Exp $ */ /* Copyright (C) The Weather Channel, Inc. 2002. All Rights Reserved. diff --git a/src/mesa/drivers/dri/r200/r200_context.h b/src/mesa/drivers/dri/r200/r200_context.h index e840a502c0b..bec09e8ef6a 100644 --- a/src/mesa/drivers/dri/r200/r200_context.h +++ b/src/mesa/drivers/dri/r200/r200_context.h @@ -1,4 +1,3 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r200/r200_context.h,v 1.2 2002/12/16 16:18:54 dawes Exp $ */ /* Copyright (C) The Weather Channel, Inc. 2002. All Rights Reserved. diff --git a/src/mesa/drivers/dri/r200/r200_ioctl.c b/src/mesa/drivers/dri/r200/r200_ioctl.c index 463bd64415b..2366bde5250 100644 --- a/src/mesa/drivers/dri/r200/r200_ioctl.c +++ b/src/mesa/drivers/dri/r200/r200_ioctl.c @@ -1,4 +1,3 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r200/r200_ioctl.c,v 1.4 2002/12/17 00:32:56 dawes Exp $ */ /* Copyright (C) The Weather Channel, Inc. 2002. All Rights Reserved. diff --git a/src/mesa/drivers/dri/r200/r200_ioctl.h b/src/mesa/drivers/dri/r200/r200_ioctl.h index f53752739d2..5ed1555f6a3 100644 --- a/src/mesa/drivers/dri/r200/r200_ioctl.h +++ b/src/mesa/drivers/dri/r200/r200_ioctl.h @@ -1,4 +1,3 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r200/r200_ioctl.h,v 1.1 2002/10/30 12:51:52 alanh Exp $ */ /* Copyright (C) The Weather Channel, Inc. 2002. All Rights Reserved. diff --git a/src/mesa/drivers/dri/r200/r200_lock.c b/src/mesa/drivers/dri/r200/r200_lock.c index b050dd7802b..f89b526a312 100644 --- a/src/mesa/drivers/dri/r200/r200_lock.c +++ b/src/mesa/drivers/dri/r200/r200_lock.c @@ -1,4 +1,3 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r200/r200_lock.c,v 1.1 2002/10/30 12:51:52 alanh Exp $ */ /* Copyright (C) The Weather Channel, Inc. 2002. All Rights Reserved. diff --git a/src/mesa/drivers/dri/r200/r200_lock.h b/src/mesa/drivers/dri/r200/r200_lock.h index e4c3a7e9352..4ff98907fbf 100644 --- a/src/mesa/drivers/dri/r200/r200_lock.h +++ b/src/mesa/drivers/dri/r200/r200_lock.h @@ -1,4 +1,3 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r200/r200_lock.h,v 1.1 2002/10/30 12:51:52 alanh Exp $ */ /* Copyright (C) The Weather Channel, Inc. 2002. All Rights Reserved. diff --git a/src/mesa/drivers/dri/r200/r200_maos.h b/src/mesa/drivers/dri/r200/r200_maos.h index 4998f67445c..d3ed06d4021 100644 --- a/src/mesa/drivers/dri/r200/r200_maos.h +++ b/src/mesa/drivers/dri/r200/r200_maos.h @@ -1,4 +1,3 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r200/r200_maos.h,v 1.1 2002/10/30 12:51:52 alanh Exp $ */ /* Copyright (C) The Weather Channel, Inc. 2002. All Rights Reserved. diff --git a/src/mesa/drivers/dri/r200/r200_maos_arrays.c b/src/mesa/drivers/dri/r200/r200_maos_arrays.c index 3162b508c23..7bc05e2f0bd 100644 --- a/src/mesa/drivers/dri/r200/r200_maos_arrays.c +++ b/src/mesa/drivers/dri/r200/r200_maos_arrays.c @@ -1,4 +1,3 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r200/r200_maos_arrays.c,v 1.3 2003/02/23 23:59:01 dawes Exp $ */ /* Copyright (C) The Weather Channel, Inc. 2002. All Rights Reserved. diff --git a/src/mesa/drivers/dri/r200/r200_pixel.c b/src/mesa/drivers/dri/r200/r200_pixel.c index 7b060f9cf0d..2f5aab0744b 100644 --- a/src/mesa/drivers/dri/r200/r200_pixel.c +++ b/src/mesa/drivers/dri/r200/r200_pixel.c @@ -1,4 +1,3 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r200/r200_pixel.c,v 1.2 2002/12/16 16:18:54 dawes Exp $ */ /* Copyright (C) The Weather Channel, Inc. 2002. All Rights Reserved. diff --git a/src/mesa/drivers/dri/r200/r200_pixel.h b/src/mesa/drivers/dri/r200/r200_pixel.h index 8f3923b6b16..e62aa05d749 100644 --- a/src/mesa/drivers/dri/r200/r200_pixel.h +++ b/src/mesa/drivers/dri/r200/r200_pixel.h @@ -1,4 +1,3 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r200/r200_pixel.h,v 1.1 2002/10/30 12:51:52 alanh Exp $ */ /* Copyright (C) The Weather Channel, Inc. 2002. All Rights Reserved. diff --git a/src/mesa/drivers/dri/r200/r200_reg.h b/src/mesa/drivers/dri/r200/r200_reg.h index a88ea4cec26..5ce287f7a5f 100644 --- a/src/mesa/drivers/dri/r200/r200_reg.h +++ b/src/mesa/drivers/dri/r200/r200_reg.h @@ -1,4 +1,3 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r200/r200_reg.h,v 1.2 2002/12/16 16:18:54 dawes Exp $ */ /* Copyright (C) The Weather Channel, Inc. 2002. All Rights Reserved. diff --git a/src/mesa/drivers/dri/r200/r200_sanity.c b/src/mesa/drivers/dri/r200/r200_sanity.c index 3f2a8665309..00d2f65c998 100644 --- a/src/mesa/drivers/dri/r200/r200_sanity.c +++ b/src/mesa/drivers/dri/r200/r200_sanity.c @@ -1,4 +1,3 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r200/r200_sanity.c,v 1.1 2002/10/30 12:51:52 alanh Exp $ */ /************************************************************************** Copyright 2002 ATI Technologies Inc., Ontario, Canada, and diff --git a/src/mesa/drivers/dri/r200/r200_span.c b/src/mesa/drivers/dri/r200/r200_span.c index 6e99dfe159b..fe427bdcdec 100644 --- a/src/mesa/drivers/dri/r200/r200_span.c +++ b/src/mesa/drivers/dri/r200/r200_span.c @@ -1,4 +1,3 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r200/r200_span.c,v 1.1 2002/10/30 12:51:52 alanh Exp $ */ /* Copyright (C) The Weather Channel, Inc. 2002. All Rights Reserved. diff --git a/src/mesa/drivers/dri/r200/r200_span.h b/src/mesa/drivers/dri/r200/r200_span.h index 5e7d3e4282c..bae56443092 100644 --- a/src/mesa/drivers/dri/r200/r200_span.h +++ b/src/mesa/drivers/dri/r200/r200_span.h @@ -1,4 +1,3 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r200/r200_span.h,v 1.1 2002/10/30 12:51:52 alanh Exp $ */ /* Copyright (C) The Weather Channel, Inc. 2002. All Rights Reserved. diff --git a/src/mesa/drivers/dri/r200/r200_state.c b/src/mesa/drivers/dri/r200/r200_state.c index 16726d7d55a..2115799b9b6 100644 --- a/src/mesa/drivers/dri/r200/r200_state.c +++ b/src/mesa/drivers/dri/r200/r200_state.c @@ -1,4 +1,3 @@ -/* $XFree86$ */ /************************************************************************** Copyright (C) The Weather Channel, Inc. 2002. All Rights Reserved. diff --git a/src/mesa/drivers/dri/r200/r200_state.h b/src/mesa/drivers/dri/r200/r200_state.h index f34090b619b..a917163a00a 100644 --- a/src/mesa/drivers/dri/r200/r200_state.h +++ b/src/mesa/drivers/dri/r200/r200_state.h @@ -1,4 +1,3 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r200/r200_state.h,v 1.2 2002/11/05 17:46:08 tsi Exp $ */ /* Copyright (C) The Weather Channel, Inc. 2002. All Rights Reserved. diff --git a/src/mesa/drivers/dri/r200/r200_state_init.c b/src/mesa/drivers/dri/r200/r200_state_init.c index b40d0bdcb7c..0c36cefc161 100644 --- a/src/mesa/drivers/dri/r200/r200_state_init.c +++ b/src/mesa/drivers/dri/r200/r200_state_init.c @@ -1,4 +1,3 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r200/r200_state_init.c,v 1.4 2003/02/22 06:21:11 dawes Exp $ */ /* Copyright (C) The Weather Channel, Inc. 2002. All Rights Reserved. diff --git a/src/mesa/drivers/dri/r200/r200_swtcl.c b/src/mesa/drivers/dri/r200/r200_swtcl.c index 25d229d8ed6..a1ea0198bee 100644 --- a/src/mesa/drivers/dri/r200/r200_swtcl.c +++ b/src/mesa/drivers/dri/r200/r200_swtcl.c @@ -1,4 +1,3 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r200/r200_swtcl.c,v 1.5 2003/05/06 23:52:08 daenzer Exp $ */ /* Copyright (C) The Weather Channel, Inc. 2002. All Rights Reserved. diff --git a/src/mesa/drivers/dri/r200/r200_swtcl.h b/src/mesa/drivers/dri/r200/r200_swtcl.h index ccf817988c5..7458c549288 100644 --- a/src/mesa/drivers/dri/r200/r200_swtcl.h +++ b/src/mesa/drivers/dri/r200/r200_swtcl.h @@ -1,4 +1,3 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r200/r200_swtcl.h,v 1.3 2003/05/06 23:52:08 daenzer Exp $ */ /* Copyright (C) The Weather Channel, Inc. 2002. All Rights Reserved. diff --git a/src/mesa/drivers/dri/r200/r200_tcl.c b/src/mesa/drivers/dri/r200/r200_tcl.c index e0c32b26d92..2ad35d43906 100644 --- a/src/mesa/drivers/dri/r200/r200_tcl.c +++ b/src/mesa/drivers/dri/r200/r200_tcl.c @@ -1,4 +1,3 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r200/r200_tcl.c,v 1.2 2002/12/16 16:18:55 dawes Exp $ */ /* Copyright (C) The Weather Channel, Inc. 2002. All Rights Reserved. diff --git a/src/mesa/drivers/dri/r200/r200_tcl.h b/src/mesa/drivers/dri/r200/r200_tcl.h index ac5bc119468..f191ddc7eb9 100644 --- a/src/mesa/drivers/dri/r200/r200_tcl.h +++ b/src/mesa/drivers/dri/r200/r200_tcl.h @@ -1,4 +1,3 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r200/r200_tcl.h,v 1.2 2002/12/16 16:18:55 dawes Exp $ */ /* Copyright (C) The Weather Channel, Inc. 2002. All Rights Reserved. diff --git a/src/mesa/drivers/dri/r200/r200_tex.c b/src/mesa/drivers/dri/r200/r200_tex.c index 6c6450c681f..85baff0b08a 100644 --- a/src/mesa/drivers/dri/r200/r200_tex.c +++ b/src/mesa/drivers/dri/r200/r200_tex.c @@ -1,4 +1,3 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r200/r200_tex.c,v 1.2 2002/11/05 17:46:08 tsi Exp $ */ /* Copyright (C) The Weather Channel, Inc. 2002. All Rights Reserved. diff --git a/src/mesa/drivers/dri/r200/r200_tex.h b/src/mesa/drivers/dri/r200/r200_tex.h index 4438cc02a82..e6c0e00eb07 100644 --- a/src/mesa/drivers/dri/r200/r200_tex.h +++ b/src/mesa/drivers/dri/r200/r200_tex.h @@ -1,4 +1,3 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r200/r200_tex.h,v 1.1 2002/10/30 12:51:53 alanh Exp $ */ /* Copyright (C) The Weather Channel, Inc. 2002. All Rights Reserved. diff --git a/src/mesa/drivers/dri/r200/r200_texmem.c b/src/mesa/drivers/dri/r200/r200_texmem.c index 28988c97556..d926313d576 100644 --- a/src/mesa/drivers/dri/r200/r200_texmem.c +++ b/src/mesa/drivers/dri/r200/r200_texmem.c @@ -1,4 +1,3 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r200/r200_texmem.c,v 1.5 2002/12/17 00:32:56 dawes Exp $ */ /************************************************************************** Copyright (C) Tungsten Graphics 2002. All Rights Reserved. diff --git a/src/mesa/drivers/dri/r200/r200_texstate.c b/src/mesa/drivers/dri/r200/r200_texstate.c index 875d3bab73f..ae02ec4b638 100644 --- a/src/mesa/drivers/dri/r200/r200_texstate.c +++ b/src/mesa/drivers/dri/r200/r200_texstate.c @@ -1,4 +1,3 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r200/r200_texstate.c,v 1.3 2003/02/15 22:18:47 dawes Exp $ */ /* Copyright (C) The Weather Channel, Inc. 2002. All Rights Reserved. -- cgit v1.2.3 From 63155ca2ca9fc935022a083278645bcf6d1ad3dc Mon Sep 17 00:00:00 2001 From: Christoff Brill Date: Thu, 17 May 2007 17:17:25 -0600 Subject: use R200_DEBUG for debug output --- src/mesa/drivers/dri/r200/r200_tex.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r200/r200_tex.c b/src/mesa/drivers/dri/r200/r200_tex.c index 85baff0b08a..90166f197fe 100644 --- a/src/mesa/drivers/dri/r200/r200_tex.c +++ b/src/mesa/drivers/dri/r200/r200_tex.c @@ -482,7 +482,7 @@ r200ValidateClientStorage( GLcontext *ctx, GLenum target, { r200ContextPtr rmesa = R200_CONTEXT(ctx); - if (0) + if ( R200_DEBUG & DEBUG_TEXTURE ) fprintf(stderr, "intformat %s format %s type %s\n", _mesa_lookup_enum_by_nr( internalFormat ), _mesa_lookup_enum_by_nr( format ), @@ -548,7 +548,7 @@ r200ValidateClientStorage( GLcontext *ctx, GLenum target, format, type); - if (0) + if ( R200_DEBUG & DEBUG_TEXTURE ) fprintf(stderr, "%s: srcRowStride %d/%x\n", __FUNCTION__, srcRowStride, srcRowStride); -- cgit v1.2.3 From 8452814ec6f536fc4177e6c34ff5b8b6d3102a3a Mon Sep 17 00:00:00 2001 From: Christoff Brill Date: Thu, 17 May 2007 17:18:13 -0600 Subject: change max anisotropy test --- src/mesa/drivers/dri/r200/r200_tex.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/r200/r200_tex.c b/src/mesa/drivers/dri/r200/r200_tex.c index 90166f197fe..e7a37dd4c99 100644 --- a/src/mesa/drivers/dri/r200/r200_tex.c +++ b/src/mesa/drivers/dri/r200/r200_tex.c @@ -181,7 +181,7 @@ static void r200SetTexMaxAnisotropy( r200TexObjPtr t, GLfloat max ) { t->pp_txfilter &= ~R200_MAX_ANISO_MASK; - if ( max == 1.0 ) { + if ( max <= 1.0 ) { t->pp_txfilter |= R200_MAX_ANISO_1_TO_1; } else if ( max <= 2.0 ) { t->pp_txfilter |= R200_MAX_ANISO_2_TO_1; -- cgit v1.2.3