only had one or two functions left in them.
-# $Id: Makefile.X11,v 1.53 2001/06/01 22:22:41 keithw Exp $
+# $Id: Makefile.X11,v 1.54 2001/06/18 17:26:08 brianp Exp $
# Mesa 3-D graphics library
# Version: 3.5
CORE_SOURCES = \
api_arrayelt.c \
- tnl/t_array_api.c \
- tnl/t_array_import.c \
- tnl/t_context.c \
- tnl/t_eval_api.c \
- tnl/t_imm_alloc.c \
- tnl/t_imm_api.c \
- tnl/t_imm_debug.c \
- tnl/t_imm_dlist.c \
- tnl/t_imm_elt.c \
- tnl/t_imm_eval.c \
- tnl/t_imm_exec.c \
- tnl/t_imm_fixup.c \
- tnl/t_pipeline.c \
- tnl/t_vb_fog.c \
- tnl/t_vb_light.c \
- tnl/t_vb_normals.c \
- tnl/t_vb_points.c \
- tnl/t_vb_render.c \
- tnl/t_vb_texgen.c \
- tnl/t_vb_texmat.c \
- tnl/t_vb_vertex.c \
- swrast_setup/ss_context.c \
- swrast_setup/ss_triangle.c \
- swrast_setup/ss_vb.c \
- swrast_setup/ss_interp.c \
api_loopback.c \
api_noop.c \
api_validate.c \
accum.c \
- alpha.c \
attrib.c \
- bitmap.c \
blend.c \
buffers.c \
clip.c \
config.c \
context.c \
convolve.c \
- copypix.c \
debug.c \
depth.c \
dispatch.c \
imports.c \
light.c \
lines.c \
- logic.c \
- masking.c \
matrix.c \
mem.c \
mmath.c \
pixel.c \
- pixeltex.c \
points.c \
polygon.c \
rastpos.c \
- readpix.c \
- scissor.c \
state.c \
stencil.c \
texformat.c \
texutil.c \
varray.c \
vtxfmt.c \
- winpos.c \
X86/x86.c \
X86/common_x86.c \
X86/3dnow.c \
swrast/s_texture.c \
swrast/s_texstore.c \
swrast/s_triangle.c \
- swrast/s_zoom.c
+ swrast/s_zoom.c \
+ swrast_setup/ss_context.c \
+ swrast_setup/ss_triangle.c \
+ swrast_setup/ss_vb.c \
+ swrast_setup/ss_interp.c \
+ tnl/t_array_api.c \
+ tnl/t_array_import.c \
+ tnl/t_context.c \
+ tnl/t_eval_api.c \
+ tnl/t_imm_alloc.c \
+ tnl/t_imm_api.c \
+ tnl/t_imm_debug.c \
+ tnl/t_imm_dlist.c \
+ tnl/t_imm_elt.c \
+ tnl/t_imm_eval.c \
+ tnl/t_imm_exec.c \
+ tnl/t_imm_fixup.c \
+ tnl/t_pipeline.c \
+ tnl/t_vb_fog.c \
+ tnl/t_vb_light.c \
+ tnl/t_vb_normals.c \
+ tnl/t_vb_points.c \
+ tnl/t_vb_render.c \
+ tnl/t_vb_texgen.c \
+ tnl/t_vb_texmat.c \
+ tnl/t_vb_vertex.c
DRIVER_SOURCES = \
-# $Id: Makefile.OSMesa16,v 1.2 2001/05/29 22:06:13 brianp Exp $
+# $Id: Makefile.OSMesa16,v 1.3 2001/06/18 17:26:08 brianp Exp $
# Mesa 3-D graphics library
# Version: 3.5
CORE_SOURCES = \
- tnl/t_array_api.c \
- tnl/t_array_import.c \
- tnl/t_context.c \
- tnl/t_eval_api.c \
- tnl/t_imm_alloc.c \
- tnl/t_imm_api.c \
- tnl/t_imm_debug.c \
- tnl/t_imm_dlist.c \
- tnl/t_imm_elt.c \
- tnl/t_imm_eval.c \
- tnl/t_imm_exec.c \
- tnl/t_imm_fixup.c \
- tnl/t_pipeline.c \
- tnl/t_vb_fog.c \
- tnl/t_vb_light.c \
- tnl/t_vb_normals.c \
- tnl/t_vb_points.c \
- tnl/t_vb_render.c \
- tnl/t_vb_texgen.c \
- tnl/t_vb_texmat.c \
- tnl/t_vb_vertex.c \
- swrast_setup/ss_context.c \
- swrast_setup/ss_triangle.c \
- swrast_setup/ss_vb.c \
- swrast_setup/ss_interp.c \
api_loopback.c \
api_noop.c \
api_validate.c \
accum.c \
- alpha.c \
attrib.c \
- bitmap.c \
blend.c \
buffers.c \
clip.c \
config.c \
context.c \
convolve.c \
- copypix.c \
debug.c \
depth.c \
dispatch.c \
imports.c \
light.c \
lines.c \
- logic.c \
- masking.c \
matrix.c \
mem.c \
mmath.c \
pixel.c \
- pixeltex.c \
points.c \
polygon.c \
rastpos.c \
- readpix.c \
- scissor.c \
state.c \
stencil.c \
texformat.c \
texutil.c \
varray.c \
vtxfmt.c \
- winpos.c \
X86/x86.c \
X86/common_x86.c \
X86/3dnow.c \
swrast/s_texstore.c \
swrast/s_triangle.c \
swrast/s_zoom.c \
+ swrast_setup/ss_context.c \
+ swrast_setup/ss_triangle.c \
+ swrast_setup/ss_vb.c \
+ swrast_setup/ss_interp.c \
+ tnl/t_array_api.c \
+ tnl/t_array_import.c \
+ tnl/t_context.c \
+ tnl/t_eval_api.c \
+ tnl/t_imm_alloc.c \
+ tnl/t_imm_api.c \
+ tnl/t_imm_debug.c \
+ tnl/t_imm_dlist.c \
+ tnl/t_imm_elt.c \
+ tnl/t_imm_eval.c \
+ tnl/t_imm_exec.c \
+ tnl/t_imm_fixup.c \
+ tnl/t_pipeline.c \
+ tnl/t_vb_fog.c \
+ tnl/t_vb_light.c \
+ tnl/t_vb_normals.c \
+ tnl/t_vb_points.c \
+ tnl/t_vb_render.c \
+ tnl/t_vb_texgen.c \
+ tnl/t_vb_texmat.c \
+ tnl/t_vb_vertex.c \
OSmesa/osmesa.c
ASM_SOURCES =
-# $Id: Makefile.X11,v 1.53 2001/06/01 22:22:41 keithw Exp $
+# $Id: Makefile.X11,v 1.54 2001/06/18 17:26:08 brianp Exp $
# Mesa 3-D graphics library
# Version: 3.5
CORE_SOURCES = \
api_arrayelt.c \
- tnl/t_array_api.c \
- tnl/t_array_import.c \
- tnl/t_context.c \
- tnl/t_eval_api.c \
- tnl/t_imm_alloc.c \
- tnl/t_imm_api.c \
- tnl/t_imm_debug.c \
- tnl/t_imm_dlist.c \
- tnl/t_imm_elt.c \
- tnl/t_imm_eval.c \
- tnl/t_imm_exec.c \
- tnl/t_imm_fixup.c \
- tnl/t_pipeline.c \
- tnl/t_vb_fog.c \
- tnl/t_vb_light.c \
- tnl/t_vb_normals.c \
- tnl/t_vb_points.c \
- tnl/t_vb_render.c \
- tnl/t_vb_texgen.c \
- tnl/t_vb_texmat.c \
- tnl/t_vb_vertex.c \
- swrast_setup/ss_context.c \
- swrast_setup/ss_triangle.c \
- swrast_setup/ss_vb.c \
- swrast_setup/ss_interp.c \
api_loopback.c \
api_noop.c \
api_validate.c \
accum.c \
- alpha.c \
attrib.c \
- bitmap.c \
blend.c \
buffers.c \
clip.c \
config.c \
context.c \
convolve.c \
- copypix.c \
debug.c \
depth.c \
dispatch.c \
imports.c \
light.c \
lines.c \
- logic.c \
- masking.c \
matrix.c \
mem.c \
mmath.c \
pixel.c \
- pixeltex.c \
points.c \
polygon.c \
rastpos.c \
- readpix.c \
- scissor.c \
state.c \
stencil.c \
texformat.c \
texutil.c \
varray.c \
vtxfmt.c \
- winpos.c \
X86/x86.c \
X86/common_x86.c \
X86/3dnow.c \
swrast/s_texture.c \
swrast/s_texstore.c \
swrast/s_triangle.c \
- swrast/s_zoom.c
+ swrast/s_zoom.c \
+ swrast_setup/ss_context.c \
+ swrast_setup/ss_triangle.c \
+ swrast_setup/ss_vb.c \
+ swrast_setup/ss_interp.c \
+ tnl/t_array_api.c \
+ tnl/t_array_import.c \
+ tnl/t_context.c \
+ tnl/t_eval_api.c \
+ tnl/t_imm_alloc.c \
+ tnl/t_imm_api.c \
+ tnl/t_imm_debug.c \
+ tnl/t_imm_dlist.c \
+ tnl/t_imm_elt.c \
+ tnl/t_imm_eval.c \
+ tnl/t_imm_exec.c \
+ tnl/t_imm_fixup.c \
+ tnl/t_pipeline.c \
+ tnl/t_vb_fog.c \
+ tnl/t_vb_light.c \
+ tnl/t_vb_normals.c \
+ tnl/t_vb_points.c \
+ tnl/t_vb_render.c \
+ tnl/t_vb_texgen.c \
+ tnl/t_vb_texmat.c \
+ tnl/t_vb_vertex.c
DRIVER_SOURCES = \
api_noop.c \
api_validate.c \
accum.c \
- alpha.c \
attrib.c \
- bitmap.c \
blend.c \
buffers.c \
clip.c \
config.c \
context.c \
convolve.c \
- copypix.c \
debug.c \
depth.c \
dispatch.c \
imports.c \
light.c \
lines.c \
- logic.c \
lowpc.c \
- masking.c \
matrix.c \
mem.c \
mmath.c \
pixel.c \
- pixeltex.c \
points.c \
polygon.c \
rastpos.c \
- readpix.c \
- scissor.c \
state.c \
stencil.c \
teximage.c \
texutil.c \
varray.c \
vtxfmt.c \
- winpos.c \
X86\x86.c \
X86\common_x86.c \
X86\3dnow.c \
-/* $Id: attrib.c,v 1.51 2001/05/29 15:23:48 brianp Exp $ */
+/* $Id: attrib.c,v 1.52 2001/06/18 17:26:08 brianp Exp $ */
/*
* Mesa 3-D graphics library
#else
#include "glheader.h"
#include "accum.h"
-#include "alpha.h"
#include "attrib.h"
#include "blend.h"
#include "buffers.h"
#include "hint.h"
#include "light.h"
#include "lines.h"
-#include "logic.h"
-#include "masking.h"
#include "matrix.h"
#include "mem.h"
#include "points.h"
#include "polygon.h"
-#include "scissor.h"
#include "simple_list.h"
#include "stencil.h"
#include "texstate.h"
-/* $Id: blend.c,v 1.32 2001/03/29 16:50:31 brianp Exp $ */
+/* $Id: blend.c,v 1.33 2001/06/18 17:26:08 brianp Exp $ */
/*
* Mesa 3-D graphics library
#else
#include "glheader.h"
#include "blend.h"
+#include "colormac.h"
#include "context.h"
#include "enums.h"
#include "macros.h"
if (ctx->Driver.BlendColor)
(*ctx->Driver.BlendColor)(ctx, tmp);
}
+
+
+void
+_mesa_AlphaFunc( GLenum func, GLclampf ref )
+{
+ GET_CURRENT_CONTEXT(ctx);
+ GLchan cref;
+ ASSERT_OUTSIDE_BEGIN_END(ctx);
+
+ switch (func) {
+ case GL_NEVER:
+ case GL_LESS:
+ case GL_EQUAL:
+ case GL_LEQUAL:
+ case GL_GREATER:
+ case GL_NOTEQUAL:
+ case GL_GEQUAL:
+ case GL_ALWAYS:
+ /* convert float alpha ref to GLchan type */
+ UNCLAMPED_FLOAT_TO_CHAN(cref, ref);
+
+ if (ctx->Color.AlphaFunc == func && ctx->Color.AlphaRef == cref)
+ return;
+
+ FLUSH_VERTICES(ctx, _NEW_COLOR);
+ ctx->Color.AlphaFunc = func;
+ ctx->Color.AlphaRef = cref;
+
+ if (ctx->Driver.AlphaFunc)
+ ctx->Driver.AlphaFunc(ctx, func, cref);
+ return;
+
+ default:
+ _mesa_error( ctx, GL_INVALID_ENUM, "glAlphaFunc(func)" );
+ return;
+ }
+}
+
+
+void
+_mesa_LogicOp( GLenum opcode )
+{
+ GET_CURRENT_CONTEXT(ctx);
+ ASSERT_OUTSIDE_BEGIN_END(ctx);
+
+ switch (opcode) {
+ case GL_CLEAR:
+ case GL_SET:
+ case GL_COPY:
+ case GL_COPY_INVERTED:
+ case GL_NOOP:
+ case GL_INVERT:
+ case GL_AND:
+ case GL_NAND:
+ case GL_OR:
+ case GL_NOR:
+ case GL_XOR:
+ case GL_EQUIV:
+ case GL_AND_REVERSE:
+ case GL_AND_INVERTED:
+ case GL_OR_REVERSE:
+ case GL_OR_INVERTED:
+ break;
+ default:
+ _mesa_error( ctx, GL_INVALID_ENUM, "glLogicOp" );
+ return;
+ }
+
+ if (ctx->Color.LogicOp == opcode)
+ return;
+
+ FLUSH_VERTICES(ctx, _NEW_COLOR);
+ ctx->Color.LogicOp = opcode;
+
+ if (ctx->Driver.LogicOpcode)
+ ctx->Driver.LogicOpcode( ctx, opcode );
+}
+
+
+void
+_mesa_IndexMask( GLuint mask )
+{
+ GET_CURRENT_CONTEXT(ctx);
+ ASSERT_OUTSIDE_BEGIN_END(ctx);
+
+ if (ctx->Color.IndexMask == mask)
+ return;
+
+ FLUSH_VERTICES(ctx, _NEW_COLOR);
+ ctx->Color.IndexMask = mask;
+
+ if (ctx->Driver.IndexMask)
+ ctx->Driver.IndexMask( ctx, mask );
+}
+
+
+void
+_mesa_ColorMask( GLboolean red, GLboolean green,
+ GLboolean blue, GLboolean alpha )
+{
+ GET_CURRENT_CONTEXT(ctx);
+ GLubyte tmp[4];
+ ASSERT_OUTSIDE_BEGIN_END(ctx);
+
+ if (MESA_VERBOSE & VERBOSE_API)
+ fprintf(stderr, "glColorMask %d %d %d %d\n", red, green, blue, alpha);
+
+ /* Shouldn't have any information about channel depth in core mesa
+ * -- should probably store these as the native booleans:
+ */
+ tmp[RCOMP] = red ? 0xff : 0x0;
+ tmp[GCOMP] = green ? 0xff : 0x0;
+ tmp[BCOMP] = blue ? 0xff : 0x0;
+ tmp[ACOMP] = alpha ? 0xff : 0x0;
+
+ if (TEST_EQ_4UBV(tmp, ctx->Color.ColorMask))
+ return;
+
+ FLUSH_VERTICES(ctx, _NEW_COLOR);
+ COPY_4UBV(ctx->Color.ColorMask, tmp);
+
+ if (ctx->Driver.ColorMask)
+ ctx->Driver.ColorMask( ctx, red, green, blue, alpha );
+}
-/* $Id: blend.h,v 1.8 2001/03/12 00:48:37 gareth Exp $ */
+/* $Id: blend.h,v 1.9 2001/06/18 17:26:08 brianp Exp $ */
/*
* Mesa 3-D graphics library
#include "mtypes.h"
+
extern void
_mesa_BlendFunc( GLenum sfactor, GLenum dfactor );
_mesa_BlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
+extern void
+_mesa_AlphaFunc( GLenum func, GLclampf ref );
+
+
+extern void
+_mesa_LogicOp( GLenum opcode );
+
+
+extern void
+_mesa_IndexMask( GLuint mask );
+
+extern void
+_mesa_ColorMask( GLboolean red, GLboolean green,
+ GLboolean blue, GLboolean alpha );
+
+
#endif
-/* $Id: buffers.c,v 1.29 2001/05/29 15:23:48 brianp Exp $ */
+/* $Id: buffers.c,v 1.30 2001/06/18 17:26:08 brianp Exp $ */
/*
* Mesa 3-D graphics library
#include "depth.h"
#include "enums.h"
#include "macros.h"
-#include "masking.h"
#include "mem.h"
#include "stencil.h"
#include "state.h"
}
+void
+_mesa_Scissor( GLint x, GLint y, GLsizei width, GLsizei height )
+{
+ GET_CURRENT_CONTEXT(ctx);
+ ASSERT_OUTSIDE_BEGIN_END(ctx);
+
+ if (width < 0 || height < 0) {
+ _mesa_error( ctx, GL_INVALID_VALUE, "glScissor" );
+ return;
+ }
+
+ if (MESA_VERBOSE & VERBOSE_API)
+ fprintf(stderr, "glScissor %d %d %d %d\n", x, y, width, height);
+
+ if (x == ctx->Scissor.X &&
+ y == ctx->Scissor.Y &&
+ width == ctx->Scissor.Width &&
+ height == ctx->Scissor.Height)
+ return;
+
+ FLUSH_VERTICES(ctx, _NEW_SCISSOR);
+ ctx->Scissor.X = x;
+ ctx->Scissor.Y = y;
+ ctx->Scissor.Width = width;
+ ctx->Scissor.Height = height;
+
+ if (ctx->Driver.Scissor)
+ ctx->Driver.Scissor( ctx, x, y, width, height );
+}
+
+
/*
* XXX move somewhere else someday?
*/
-/* $Id: buffers.h,v 1.4 2001/05/29 15:23:48 brianp Exp $ */
+/* $Id: buffers.h,v 1.5 2001/06/18 17:26:08 brianp Exp $ */
/*
* Mesa 3-D graphics library
extern void
_mesa_ResizeBuffersMESA( void );
+extern void
+_mesa_Scissor( GLint x, GLint y, GLsizei width, GLsizei height );
+
extern void
_mesa_SampleCoverageARB(GLclampf value, GLboolean invert);
CFLAGS = /include=($(INCDIR),[])/define=(PTHREADS=1)/name=(as_is,short)
CORE_SOURCES =accum.c \
- alpha.c \
api_loopback.c \
api_noop.c \
api_validate.c \
attrib.c \
- bitmap.c \
blend.c \
buffers.c \
clip.c \
config.c \
context.c \
convolve.c \
- copypix.c \
debug.c \
depth.c \
dispatch.c \
imports.c \
light.c \
lines.c \
- logic.c \
lowpc.c \
- masking.c \
matrix.c \
mem.c \
mmath.c \
pixel.c \
- pixeltex.c \
points.c \
polygon.c \
rastpos.c \
- readpix.c \
- scissor.c \
state.c \
stencil.c \
texformat.c \
texutil.c \
varray.c \
vtxfmt.c \
- winpos.c \
[.x86]x86.c
DRIVER_SOURCES = [.x]glxapi.c [.x]fakeglx.c [.x]xfonts.c \
-/* $Id: dlist.c,v 1.74 2001/06/12 22:06:10 brianp Exp $ */
+/* $Id: dlist.c,v 1.75 2001/06/18 17:26:08 brianp Exp $ */
/*
* Mesa 3-D graphics library
#include "all.h"
#else
#include "glheader.h"
-#include "accum.h"
#include "api_loopback.h"
#include "attrib.h"
-#include "bitmap.h"
#include "blend.h"
#include "buffers.h"
#include "clip.h"
#include "colortab.h"
#include "context.h"
#include "convolve.h"
-#include "copypix.h"
#include "depth.h"
#include "dlist.h"
#include "enable.h"
#include "matrix.h"
#include "mem.h"
#include "pixel.h"
-#include "pixeltex.h"
#include "points.h"
#include "polygon.h"
-#include "readpix.h"
#include "state.h"
#include "texobj.h"
#include "teximage.h"
-/* $Id: drawpix.c,v 1.53 2001/04/28 08:39:17 keithw Exp $ */
+/* $Id: drawpix.c,v 1.54 2001/06/18 17:26:08 brianp Exp $ */
/*
* Mesa 3-D graphics library
}
}
}
+
+
+
+void
+_mesa_ReadPixels( GLint x, GLint y, GLsizei width, GLsizei height,
+ GLenum format, GLenum type, GLvoid *pixels )
+{
+ GET_CURRENT_CONTEXT(ctx);
+ ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
+
+ if (!pixels) {
+ _mesa_error( ctx, GL_INVALID_VALUE, "glReadPixels(pixels)" );
+ return;
+ }
+
+ if (ctx->NewState)
+ _mesa_update_state(ctx);
+
+ ctx->Driver.ReadPixels(ctx, x, y, width, height,
+ format, type, &ctx->Pack, pixels);
+
+}
+
+
+
+void
+_mesa_CopyPixels( GLint srcx, GLint srcy, GLsizei width, GLsizei height,
+ GLenum type )
+{
+ GET_CURRENT_CONTEXT(ctx);
+ GLint destx, desty;
+ ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
+
+ if (width < 0 || height < 0) {
+ _mesa_error( ctx, GL_INVALID_VALUE, "glCopyPixels" );
+ return;
+ }
+
+ if (ctx->NewState) {
+ _mesa_update_state(ctx);
+ }
+
+ if (ctx->RenderMode==GL_RENDER) {
+ /* Destination of copy: */
+ if (!ctx->Current.RasterPosValid) {
+ return;
+ }
+ destx = IROUND(ctx->Current.RasterPos[0]);
+ desty = IROUND(ctx->Current.RasterPos[1]);
+
+ ctx->OcclusionResult = GL_TRUE;
+
+ ctx->Driver.CopyPixels( ctx, srcx, srcy, width, height, destx, desty,
+ type );
+ }
+ else if (ctx->RenderMode == GL_FEEDBACK) {
+ FLUSH_CURRENT( ctx, 0 );
+ FEEDBACK_TOKEN( ctx, (GLfloat) (GLint) GL_COPY_PIXEL_TOKEN );
+ _mesa_feedback_vertex( ctx,
+ ctx->Current.RasterPos,
+ ctx->Current.Color,
+ ctx->Current.Index,
+ ctx->Current.Texcoord[0] );
+ }
+ else if (ctx->RenderMode == GL_SELECT) {
+ _mesa_update_hitflag( ctx, ctx->Current.RasterPos[2] );
+ }
+}
+
+
+
+void
+_mesa_Bitmap( GLsizei width, GLsizei height,
+ GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove,
+ const GLubyte *bitmap )
+{
+ GET_CURRENT_CONTEXT(ctx);
+ ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
+
+
+ /* Error checking */
+ if (width < 0 || height < 0) {
+ _mesa_error( ctx, GL_INVALID_VALUE, "glBitmap" );
+ return;
+ }
+
+ if (ctx->Current.RasterPosValid == GL_FALSE) {
+ return; /* do nothing */
+ }
+
+ if (ctx->RenderMode==GL_RENDER) {
+ if (bitmap) {
+ GLint x = (GLint) ( (ctx->Current.RasterPos[0] - xorig) + 0.0F );
+ GLint y = (GLint) ( (ctx->Current.RasterPos[1] - yorig) + 0.0F );
+
+ if (ctx->NewState) {
+ _mesa_update_state(ctx);
+ }
+
+ ctx->OcclusionResult = GL_TRUE;
+ ctx->Driver.Bitmap( ctx, x, y, width, height, &ctx->Unpack, bitmap );
+ }
+ }
+ else if (ctx->RenderMode==GL_FEEDBACK) {
+ GLfloat color[4], texcoord[4], invq;
+
+ color[0] = ctx->Current.RasterColor[0];
+ color[1] = ctx->Current.RasterColor[1];
+ color[2] = ctx->Current.RasterColor[2];
+ color[3] = ctx->Current.RasterColor[3];
+ if (ctx->Current.Texcoord[0][3] == 0.0)
+ invq = 1.0F;
+ else
+ invq = 1.0F / ctx->Current.RasterTexCoord[3];
+ texcoord[0] = ctx->Current.RasterTexCoord[0] * invq;
+ texcoord[1] = ctx->Current.RasterTexCoord[1] * invq;
+ texcoord[2] = ctx->Current.RasterTexCoord[2] * invq;
+ texcoord[3] = ctx->Current.RasterTexCoord[3];
+ FEEDBACK_TOKEN( ctx, (GLfloat) (GLint) GL_BITMAP_TOKEN );
+ _mesa_feedback_vertex( ctx,
+ ctx->Current.RasterPos,
+ color, ctx->Current.RasterIndex, texcoord );
+ }
+ else if (ctx->RenderMode==GL_SELECT) {
+ /* Bitmaps don't generate selection hits. See appendix B of 1.1 spec. */
+ }
+
+ /* update raster position */
+ ctx->Current.RasterPos[0] += xmove;
+ ctx->Current.RasterPos[1] += ymove;
+}
-/* $Id: drawpix.h,v 1.6 2001/03/12 00:48:37 gareth Exp $ */
+/* $Id: drawpix.h,v 1.7 2001/06/18 17:26:08 brianp Exp $ */
/*
* Mesa 3-D graphics library
#include "mtypes.h"
+
extern void
_mesa_DrawPixels( GLsizei width, GLsizei height,
GLenum format, GLenum type, const GLvoid *pixels );
+extern void
+_mesa_ReadPixels( GLint x, GLint y, GLsizei width, GLsizei height,
+ GLenum format, GLenum type, GLvoid *pixels );
+
+
+extern void
+_mesa_CopyPixels( GLint srcx, GLint srcy, GLsizei width, GLsizei height,
+ GLenum type );
+
+
+extern void
+_mesa_Bitmap( GLsizei width, GLsizei height,
+ GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove,
+ const GLubyte *bitmap );
+
+
#endif
-/* $Id: rastpos.c,v 1.25 2001/05/30 15:22:04 brianp Exp $ */
+/* $Id: rastpos.c,v 1.26 2001/06/18 17:26:08 brianp Exp $ */
/*
* Mesa 3-D graphics library
{
_mesa_RasterPos4f(v[0], v[1], v[2], v[3]);
}
+
+
+
+/**********************************************************************/
+/*** GL_MESA_window_pos ***/
+/**********************************************************************/
+
+
+/*
+ * This is a MESA extension function. Pretty much just like glRasterPos
+ * except we don't apply the modelview or projection matrices; specify a
+ * window coordinate directly.
+ * Caller: context->API.WindowPos4fMESA pointer.
+ */
+void
+_mesa_WindowPos4fMESA( GLfloat x, GLfloat y, GLfloat z, GLfloat w )
+{
+ GET_CURRENT_CONTEXT(ctx);
+ ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
+ FLUSH_CURRENT(ctx, 0);
+
+ /* set raster position */
+ ctx->Current.RasterPos[0] = x;
+ ctx->Current.RasterPos[1] = y;
+ ctx->Current.RasterPos[2] = CLAMP( z, 0.0F, 1.0F );
+ ctx->Current.RasterPos[3] = w;
+
+ ctx->Current.RasterPosValid = GL_TRUE;
+ ctx->Current.RasterDistance = 0.0F;
+ ctx->Current.RasterFogCoord = 0.0F;
+
+ /* raster color = current color or index */
+ if (ctx->Visual.rgbMode) {
+ ctx->Current.RasterColor[0] = (ctx->Current.Color[0]);
+ ctx->Current.RasterColor[1] = (ctx->Current.Color[1]);
+ ctx->Current.RasterColor[2] = (ctx->Current.Color[2]);
+ ctx->Current.RasterColor[3] = (ctx->Current.Color[3]);
+ }
+ else {
+ ctx->Current.RasterIndex = ctx->Current.Index;
+ }
+
+ /* raster texcoord = current texcoord */
+ {
+ GLuint texSet;
+ for (texSet = 0; texSet < ctx->Const.MaxTextureUnits; texSet++) {
+ COPY_4FV( ctx->Current.RasterMultiTexCoord[texSet],
+ ctx->Current.Texcoord[texSet] );
+ }
+ }
+
+ if (ctx->RenderMode==GL_SELECT) {
+ _mesa_update_hitflag( ctx, ctx->Current.RasterPos[2] );
+ }
+}
+
+
+
+
+void
+_mesa_WindowPos2dMESA(GLdouble x, GLdouble y)
+{
+ _mesa_WindowPos4fMESA(x, y, 0.0F, 1.0F);
+}
+
+void
+_mesa_WindowPos2fMESA(GLfloat x, GLfloat y)
+{
+ _mesa_WindowPos4fMESA(x, y, 0.0F, 1.0F);
+}
+
+void
+_mesa_WindowPos2iMESA(GLint x, GLint y)
+{
+ _mesa_WindowPos4fMESA(x, y, 0.0F, 1.0F);
+}
+
+void
+_mesa_WindowPos2sMESA(GLshort x, GLshort y)
+{
+ _mesa_WindowPos4fMESA(x, y, 0.0F, 1.0F);
+}
+
+void
+_mesa_WindowPos3dMESA(GLdouble x, GLdouble y, GLdouble z)
+{
+ _mesa_WindowPos4fMESA(x, y, z, 1.0F);
+}
+
+void
+_mesa_WindowPos3fMESA(GLfloat x, GLfloat y, GLfloat z)
+{
+ _mesa_WindowPos4fMESA(x, y, z, 1.0F);
+}
+
+void
+_mesa_WindowPos3iMESA(GLint x, GLint y, GLint z)
+{
+ _mesa_WindowPos4fMESA(x, y, z, 1.0F);
+}
+
+void
+_mesa_WindowPos3sMESA(GLshort x, GLshort y, GLshort z)
+{
+ _mesa_WindowPos4fMESA(x, y, z, 1.0F);
+}
+
+void
+_mesa_WindowPos4dMESA(GLdouble x, GLdouble y, GLdouble z, GLdouble w)
+{
+ _mesa_WindowPos4fMESA(x, y, z, w);
+}
+
+void
+_mesa_WindowPos4iMESA(GLint x, GLint y, GLint z, GLint w)
+{
+ _mesa_WindowPos4fMESA(x, y, z, w);
+}
+
+void
+_mesa_WindowPos4sMESA(GLshort x, GLshort y, GLshort z, GLshort w)
+{
+ _mesa_WindowPos4fMESA(x, y, z, w);
+}
+
+void
+_mesa_WindowPos2dvMESA(const GLdouble *v)
+{
+ _mesa_WindowPos4fMESA(v[0], v[1], 0.0F, 1.0F);
+}
+
+void
+_mesa_WindowPos2fvMESA(const GLfloat *v)
+{
+ _mesa_WindowPos4fMESA(v[0], v[1], 0.0F, 1.0F);
+}
+
+void
+_mesa_WindowPos2ivMESA(const GLint *v)
+{
+ _mesa_WindowPos4fMESA(v[0], v[1], 0.0F, 1.0F);
+}
+
+void
+_mesa_WindowPos2svMESA(const GLshort *v)
+{
+ _mesa_WindowPos4fMESA(v[0], v[1], 0.0F, 1.0F);
+}
+
+void
+_mesa_WindowPos3dvMESA(const GLdouble *v)
+{
+ _mesa_WindowPos4fMESA(v[0], v[1], v[2], 1.0F);
+}
+
+void
+_mesa_WindowPos3fvMESA(const GLfloat *v)
+{
+ _mesa_WindowPos4fMESA(v[0], v[1], v[2], 1.0F);
+}
+
+void
+_mesa_WindowPos3ivMESA(const GLint *v)
+{
+ _mesa_WindowPos4fMESA(v[0], v[1], v[2], 1.0F);
+}
+
+void
+_mesa_WindowPos3svMESA(const GLshort *v)
+{
+ _mesa_WindowPos4fMESA(v[0], v[1], v[2], 1.0F);
+}
+
+void
+_mesa_WindowPos4dvMESA(const GLdouble *v)
+{
+ _mesa_WindowPos4fMESA(v[0], v[1], v[2], v[3]);
+}
+
+void
+_mesa_WindowPos4fvMESA(const GLfloat *v)
+{
+ _mesa_WindowPos4fMESA(v[0], v[1], v[2], v[3]);
+}
+
+void
+_mesa_WindowPos4ivMESA(const GLint *v)
+{
+ _mesa_WindowPos4fMESA(v[0], v[1], v[2], v[3]);
+}
+
+void
+_mesa_WindowPos4svMESA(const GLshort *v)
+{
+ _mesa_WindowPos4fMESA(v[0], v[1], v[2], v[3]);
+}
+
+
+
+#if 0
+
+/*
+ * OpenGL implementation of glWindowPos*MESA()
+ */
+void glWindowPos4fMESA( GLfloat x, GLfloat y, GLfloat z, GLfloat w )
+{
+ GLfloat fx, fy;
+
+ /* Push current matrix mode and viewport attributes */
+ glPushAttrib( GL_TRANSFORM_BIT | GL_VIEWPORT_BIT );
+
+ /* Setup projection parameters */
+ glMatrixMode( GL_PROJECTION );
+ glPushMatrix();
+ glLoadIdentity();
+ glMatrixMode( GL_MODELVIEW );
+ glPushMatrix();
+ glLoadIdentity();
+
+ glDepthRange( z, z );
+ glViewport( (int) x - 1, (int) y - 1, 2, 2 );
+
+ /* set the raster (window) position */
+ fx = x - (int) x;
+ fy = y - (int) y;
+ glRasterPos4f( fx, fy, 0.0, w );
+
+ /* restore matrices, viewport and matrix mode */
+ glPopMatrix();
+ glMatrixMode( GL_PROJECTION );
+ glPopMatrix();
+
+ glPopAttrib();
+}
+
+#endif
-/* $Id: rastpos.h,v 1.3 2001/03/12 00:48:38 gareth Exp $ */
+/* $Id: rastpos.h,v 1.4 2001/06/18 17:26:08 brianp Exp $ */
/*
* Mesa 3-D graphics library
_mesa_RasterPos4sv(const GLshort *v);
+/**********************************************************************/
+/*** GL_MESA_window_pos ***/
+/**********************************************************************/
+
+extern void
+_mesa_WindowPos2dMESA(GLdouble x, GLdouble y);
+
+extern void
+_mesa_WindowPos2fMESA(GLfloat x, GLfloat y);
+
+extern void
+_mesa_WindowPos2iMESA(GLint x, GLint y);
+
+extern void
+_mesa_WindowPos2sMESA(GLshort x, GLshort y);
+
+extern void
+_mesa_WindowPos3dMESA(GLdouble x, GLdouble y, GLdouble z);
+
+extern void
+_mesa_WindowPos3fMESA(GLfloat x, GLfloat y, GLfloat z);
+
+extern void
+_mesa_WindowPos3iMESA(GLint x, GLint y, GLint z);
+
+extern void
+_mesa_WindowPos3sMESA(GLshort x, GLshort y, GLshort z);
+
+extern void
+_mesa_WindowPos4dMESA(GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+
+extern void
+_mesa_WindowPos4fMESA(GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+
+extern void
+_mesa_WindowPos4iMESA(GLint x, GLint y, GLint z, GLint w);
+
+extern void
+_mesa_WindowPos4sMESA(GLshort x, GLshort y, GLshort z, GLshort w);
+
+extern void
+_mesa_WindowPos2dvMESA(const GLdouble *v);
+
+extern void
+_mesa_WindowPos2fvMESA(const GLfloat *v);
+
+extern void
+_mesa_WindowPos2ivMESA(const GLint *v);
+
+extern void
+_mesa_WindowPos2svMESA(const GLshort *v);
+
+extern void
+_mesa_WindowPos3dvMESA(const GLdouble *v);
+
+extern void
+_mesa_WindowPos3fvMESA(const GLfloat *v);
+
+extern void
+_mesa_WindowPos3ivMESA(const GLint *v);
+
+extern void
+_mesa_WindowPos3svMESA(const GLshort *v);
+
+extern void
+_mesa_WindowPos4dvMESA(const GLdouble *v);
+
+extern void
+_mesa_WindowPos4fvMESA(const GLfloat *v);
+
+extern void
+_mesa_WindowPos4ivMESA(const GLint *v);
+
+extern void
+_mesa_WindowPos4svMESA(const GLshort *v);
+
+
#endif
-/* $Id: state.c,v 1.67 2001/06/15 14:18:46 brianp Exp $ */
+/* $Id: state.c,v 1.68 2001/06/18 17:26:08 brianp Exp $ */
/*
* Mesa 3-D graphics library
#else
#include "glheader.h"
#include "accum.h"
-#include "alpha.h"
#include "api_loopback.h"
#include "attrib.h"
-#include "bitmap.h"
#include "blend.h"
#include "buffers.h"
#include "clip.h"
#include "colortab.h"
#include "context.h"
#include "convolve.h"
-#include "copypix.h"
#include "depth.h"
#include "dlist.h"
#include "drawpix.h"
#include "histogram.h"
#include "light.h"
#include "lines.h"
-#include "logic.h"
-#include "masking.h"
#include "matrix.h"
#include "mmath.h"
#include "pixel.h"
-#include "pixeltex.h"
#include "points.h"
#include "polygon.h"
#include "rastpos.h"
-#include "readpix.h"
-#include "scissor.h"
#include "state.h"
#include "stencil.h"
#include "teximage.h"
#include "texstate.h"
#include "mtypes.h"
#include "varray.h"
-#include "winpos.h"
#include "math/m_matrix.h"
#include "math/m_xform.h"
-/* $Id: texstate.c,v 1.53 2001/06/13 14:56:14 brianp Exp $ */
+/* $Id: texstate.c,v 1.54 2001/06/18 17:26:08 brianp Exp $ */
/*
* Mesa 3-D graphics library
FLUSH_VERTICES(ctx, _NEW_ARRAY);
ctx->Array.ActiveTexture = texUnit;
}
+
+
+
+/**********************************************************************/
+/* Pixel Texgen Extensions */
+/**********************************************************************/
+
+void
+_mesa_PixelTexGenSGIX(GLenum mode)
+{
+ GLenum newRgbSource, newAlphaSource;
+ GET_CURRENT_CONTEXT(ctx);
+ ASSERT_OUTSIDE_BEGIN_END(ctx);
+
+ switch (mode) {
+ case GL_NONE:
+ newRgbSource = GL_PIXEL_GROUP_COLOR_SGIS;
+ newAlphaSource = GL_PIXEL_GROUP_COLOR_SGIS;
+ break;
+ case GL_ALPHA:
+ newRgbSource = GL_PIXEL_GROUP_COLOR_SGIS;
+ newAlphaSource = GL_CURRENT_RASTER_COLOR;
+ break;
+ case GL_RGB:
+ newRgbSource = GL_CURRENT_RASTER_COLOR;
+ newAlphaSource = GL_PIXEL_GROUP_COLOR_SGIS;
+ break;
+ case GL_RGBA:
+ newRgbSource = GL_CURRENT_RASTER_COLOR;
+ newAlphaSource = GL_CURRENT_RASTER_COLOR;
+ break;
+ default:
+ _mesa_error(ctx, GL_INVALID_ENUM, "glPixelTexGenSGIX(mode)");
+ return;
+ }
+
+ if (newRgbSource == ctx->Pixel.FragmentRgbSource &&
+ newAlphaSource == ctx->Pixel.FragmentAlphaSource)
+ return;
+
+ FLUSH_VERTICES(ctx, _NEW_PIXEL);
+ ctx->Pixel.FragmentRgbSource = newRgbSource;
+ ctx->Pixel.FragmentAlphaSource = newAlphaSource;
+}
+
+
+void
+_mesa_PixelTexGenParameterfSGIS(GLenum target, GLfloat value)
+{
+ _mesa_PixelTexGenParameteriSGIS(target, (GLint) value);
+}
+
+
+void
+_mesa_PixelTexGenParameterfvSGIS(GLenum target, const GLfloat *value)
+{
+ _mesa_PixelTexGenParameteriSGIS(target, (GLint) *value);
+}
+
+
+void
+_mesa_PixelTexGenParameteriSGIS(GLenum target, GLint value)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ ASSERT_OUTSIDE_BEGIN_END(ctx);
+
+ if (value != GL_CURRENT_RASTER_COLOR && value != GL_PIXEL_GROUP_COLOR_SGIS) {
+ _mesa_error(ctx, GL_INVALID_ENUM, "glPixelTexGenParameterSGIS(value)");
+ return;
+ }
+
+ switch (target) {
+ case GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS:
+ if (ctx->Pixel.FragmentRgbSource == (GLenum) value)
+ return;
+ FLUSH_VERTICES(ctx, _NEW_PIXEL);
+ ctx->Pixel.FragmentRgbSource = (GLenum) value;
+ break;
+ case GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS:
+ if (ctx->Pixel.FragmentAlphaSource == (GLenum) value)
+ return;
+ FLUSH_VERTICES(ctx, _NEW_PIXEL);
+ ctx->Pixel.FragmentAlphaSource = (GLenum) value;
+ break;
+ default:
+ _mesa_error(ctx, GL_INVALID_ENUM, "glPixelTexGenParameterSGIS(target)");
+ return;
+ }
+}
+
+
+void
+_mesa_PixelTexGenParameterivSGIS(GLenum target, const GLint *value)
+{
+ _mesa_PixelTexGenParameteriSGIS(target, *value);
+}
+
+
+void
+_mesa_GetPixelTexGenParameterfvSGIS(GLenum target, GLfloat *value)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ ASSERT_OUTSIDE_BEGIN_END(ctx);
+
+ if (target == GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS) {
+ *value = (GLfloat) ctx->Pixel.FragmentRgbSource;
+ }
+ else if (target == GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS) {
+ *value = (GLfloat) ctx->Pixel.FragmentAlphaSource;
+ }
+ else {
+ _mesa_error(ctx, GL_INVALID_ENUM, "glGetPixelTexGenParameterfvSGIS(target)");
+ }
+}
+
+
+void
+_mesa_GetPixelTexGenParameterivSGIS(GLenum target, GLint *value)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ ASSERT_OUTSIDE_BEGIN_END(ctx);
+
+ if (target == GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS) {
+ *value = (GLint) ctx->Pixel.FragmentRgbSource;
+ }
+ else if (target == GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS) {
+ *value = (GLint) ctx->Pixel.FragmentAlphaSource;
+ }
+ else {
+ _mesa_error(ctx, GL_INVALID_ENUM, "glGetPixelTexGenParameterivSGIS(target)");
+ }
+}
-/* $Id: texstate.h,v 1.7 2001/03/12 00:48:39 gareth Exp $ */
+/* $Id: texstate.h,v 1.8 2001/06/18 17:26:08 brianp Exp $ */
/*
* Mesa 3-D graphics library
_mesa_ClientActiveTextureARB( GLenum target );
+/*
+ * Pixel Texture Extensions
+ */
+
+extern void
+_mesa_PixelTexGenSGIX(GLenum mode);
+
+extern void
+_mesa_PixelTexGenParameterfSGIS(GLenum target, GLfloat value);
+
+#ifdef VMS
+#define _mesa_PixelTexGenParameterfvSGIS _mesa_PixelTexGenParameterfv
+#endif
+extern void
+_mesa_PixelTexGenParameterfvSGIS(GLenum target, const GLfloat *value);
+
+extern void
+_mesa_PixelTexGenParameteriSGIS(GLenum target, GLint value);
+
+#ifdef VMS
+#define _mesa_PixelTexGenParameterivSGIS _mesa_PixelTexGenParameteriv
+#endif
+extern void
+_mesa_PixelTexGenParameterivSGIS(GLenum target, const GLint *value);
+
+#ifdef VMS
+#define _mesa_GetPixelTexGenParameterfvSGIS _mesa_GetPixelTexGenParameterfv
+#endif
+extern void
+_mesa_GetPixelTexGenParameterfvSGIS(GLenum target, GLfloat *value);
+
+#ifdef VMS
+#define _mesa_GetPixelTexGenParameterivSGIS _mesa_GetPixelTexGenParameteriv
+#endif
+extern void
+_mesa_GetPixelTexGenParameterivSGIS(GLenum target, GLint *value);
+
+
#endif