#include "main/config.h"
#include "main/glheader.h"
#include "main/mtypes.h"
+#include "swrast/s_chan.h"
+#include "swrast/swrast.h"
+
struct gl_context;
struct gl_renderbuffer;
/* XXX someday look at transposing first two indexes for better memory
* access pattern.
*/
- GLfloat attribs[FRAG_ATTRIB_MAX][MAX_WIDTH][4];
+ GLfloat attribs[FRAG_ATTRIB_MAX][SWRAST_MAX_WIDTH][4];
/** This mask indicates which fragments are alive or culled */
- GLubyte mask[MAX_WIDTH];
+ GLubyte mask[SWRAST_MAX_WIDTH];
GLenum ChanType; /**< Color channel type, GL_UNSIGNED_BYTE, GL_FLOAT */
/** Attribute arrays that don't fit into attribs[] array above */
/*@{*/
- GLubyte rgba8[MAX_WIDTH][4];
- GLushort rgba16[MAX_WIDTH][4];
+ GLubyte rgba8[SWRAST_MAX_WIDTH][4];
+ GLushort rgba16[SWRAST_MAX_WIDTH][4];
GLchan (*rgba)[4]; /** either == rgba8 or rgba16 */
- GLint x[MAX_WIDTH]; /**< fragment X coords */
- GLint y[MAX_WIDTH]; /**< fragment Y coords */
- GLuint z[MAX_WIDTH]; /**< fragment Z coords */
- GLuint index[MAX_WIDTH]; /**< Color indexes */
- GLfloat lambda[MAX_TEXTURE_COORD_UNITS][MAX_WIDTH]; /**< Texture LOD */
- GLfloat coverage[MAX_WIDTH]; /**< Fragment coverage for AA/smoothing */
+ GLint x[SWRAST_MAX_WIDTH]; /**< fragment X coords */
+ GLint y[SWRAST_MAX_WIDTH]; /**< fragment Y coords */
+ GLuint z[SWRAST_MAX_WIDTH]; /**< fragment Z coords */
+ GLuint index[SWRAST_MAX_WIDTH]; /**< Color indexes */
+ GLfloat lambda[MAX_TEXTURE_COORD_UNITS][SWRAST_MAX_WIDTH]; /**< Texture LOD */
+ GLfloat coverage[SWRAST_MAX_WIDTH]; /**< Fragment coverage for AA/smoothing */
/*@}*/
} SWspanarrays;
*/
GLbitfield arrayMask;
- GLbitfield arrayAttribs;
+ /** Mask of FRAG_BIT_x bits */
+ GLbitfield64 arrayAttribs;
/**
* We store the arrays of fragment values in a separate struct so
extern void
_swrast_read_rgba_span(struct gl_context *ctx, struct gl_renderbuffer *rb,
- GLuint n, GLint x, GLint y, GLenum type, GLvoid *rgba);
-
-extern void
-_swrast_get_values(struct gl_context *ctx, struct gl_renderbuffer *rb,
- GLuint count, const GLint x[], const GLint y[],
- void *values, GLuint valueSize);
+ GLuint n, GLint x, GLint y, GLvoid *rgba);
extern void
_swrast_put_row(struct gl_context *ctx, struct gl_renderbuffer *rb,
+ GLenum datatype,
GLuint count, GLint x, GLint y,
- const GLvoid *values, GLuint valueSize);
-
-extern void
-_swrast_get_row(struct gl_context *ctx, struct gl_renderbuffer *rb,
- GLuint count, GLint x, GLint y,
- GLvoid *values, GLuint valueSize);
-
+ const void *values, const GLubyte *mask);
extern void *
_swrast_get_dest_rgba(struct gl_context *ctx, struct gl_renderbuffer *rb,