r300: Further reduced the radeon_span.c diff.
[mesa.git] / src / mesa / swrast / swrast.h
index 86cc7d2cc890a21e2c3399bc4ae7799966beec41..12264a159ad33ee9b61d74129695a2e206e342d8 100644 (file)
@@ -2,7 +2,7 @@
  * Mesa 3-D graphics library
  * Version:  6.5
  *
- * Copyright (C) 1999-2005  Brian Paul   All Rights Reserved.
+ * 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"),
@@ -67,12 +67,11 @@ typedef struct {
     * that clip{XYZ} were multiplied by to get ndc{XYZ}.
     */
    GLfloat win[4];
-   GLfloat texcoord[MAX_TEXTURE_COORD_UNITS][4];
    GLchan color[4];
    GLchan specular[4];
-   GLfloat fog;
    GLfloat index;
    GLfloat pointSize;
+   GLfloat attrib[FRAG_ATTRIB_MAX][4]; /**< texcoords & varying, more to come */
 } SWvertex;
 
 
@@ -123,13 +122,16 @@ _swrast_ReadPixels( GLcontext *ctx,
                    GLvoid *pixels );
 
 extern void
-_swrast_Clear( GLcontext *ctx, GLbitfield mask, GLboolean all,
-              GLint x, GLint y, GLint width, GLint height );
+_swrast_BlitFramebuffer(GLcontext *ctx,
+                        GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1,
+                        GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1,
+                        GLbitfield mask, GLenum filter);
 
 extern void
-_swrast_Accum( GLcontext *ctx, GLenum op,
-              GLfloat value, GLint xpos, GLint ypos,
-              GLint width, GLint height );
+_swrast_Clear(GLcontext *ctx, GLbitfield buffers);
+
+extern void
+_swrast_Accum(GLcontext *ctx, GLenum op, GLfloat value);
 
 
 
@@ -173,7 +175,7 @@ _swrast_render_finish( GLcontext *ctx );
 /* Tell the software rasterizer about core state changes.
  */
 extern void
-_swrast_InvalidateState( GLcontext *ctx, GLuint new_state );
+_swrast_InvalidateState( GLcontext *ctx, GLbitfield new_state );
 
 /* Configure software rasterizer to match hardware rasterizer characteristics:
  */
@@ -244,26 +246,35 @@ _swrast_copy_texsubimage3d(GLcontext *ctx,
                            GLint x, GLint y, GLsizei width, GLsizei height);
 
 
-/* The driver interface for the software rasterizer.
- * Unless otherwise noted, all functions are mandatory.  
+extern void
+_swrast_eject_texture_images(GLcontext *ctx);
+
+
+#if FEATURE_MESA_program_debug
+extern void
+_swrast_get_program_register(GLcontext *, enum register_file file,
+                             GLuint index, GLfloat val[4]);
+#endif /* FEATURE_MESA_program_debug */
+
+
+/**
+ * The driver interface for the software rasterizer.
+ * XXX this may go away.
+ * We may move these functions to ctx->Driver.RenderStart, RenderEnd.
  */
 struct swrast_device_driver {
-   /***
-    *** Functions for synchronizing access to the framebuffer:
-    ***/
-
-   void (*SpanRenderStart)(GLcontext *ctx);
-   void (*SpanRenderFinish)(GLcontext *ctx);
-   /* OPTIONAL.
+   /*
+    * These are called before and after accessing renderbuffers during
+    * software rasterization.
     *
-    * Called before and after all rendering operations, including DrawPixels,
-    * ReadPixels, Bitmap, span functions, and CopyTexImage, etc commands.
     * These are a suitable place for grabbing/releasing hardware locks.
     *
     * NOTE: The swrast triangle/line/point routines *DO NOT* call
     * these functions.  Locking in that case must be organized by the
     * driver by other mechanisms.
     */
+   void (*SpanRenderStart)(GLcontext *ctx);
+   void (*SpanRenderFinish)(GLcontext *ctx);
 };