projects
/
mesa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
store's to RC/HC didn't work (bug 976287)
[mesa.git]
/
src
/
mesa
/
swrast
/
s_bitmap.c
diff --git
a/src/mesa/swrast/s_bitmap.c
b/src/mesa/swrast/s_bitmap.c
index 6757fa496cab2cd537107ad334d728e4be565a62..8bd9854f0ca9bf68df1238ddfd896e5126df673e 100644
(file)
--- a/
src/mesa/swrast/s_bitmap.c
+++ b/
src/mesa/swrast/s_bitmap.c
@@
-1,10
+1,8
@@
-/* $Id: s_bitmap.c,v 1.16 2002/02/17 17:30:23 brianp Exp $ */
-
/*
* Mesa 3-D graphics library
/*
* Mesa 3-D graphics library
- * Version:
4
.1
+ * Version:
6
.1
*
*
- * Copyright (C) 1999-200
2
Brian Paul All Rights Reserved.
+ * Copyright (C) 1999-200
4
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"),
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
@@
-33,7
+31,6
@@
#include "glheader.h"
#include "image.h"
#include "macros.h"
#include "glheader.h"
#include "image.h"
#include "macros.h"
-#include "mmath.h"
#include "pixel.h"
#include "s_context.h"
#include "pixel.h"
#include "s_context.h"
@@
-56,16
+53,23
@@
_swrast_Bitmap( GLcontext *ctx, GLint px, GLint py,
struct sw_span span;
ASSERT(ctx->RenderMode == GL_RENDER);
struct sw_span span;
ASSERT(ctx->RenderMode == GL_RENDER);
- ASSERT(bitmap);
+
+ bitmap = (const GLubyte *) _swrast_validate_pbo_access(unpack, width,
+ height, 1,
+ GL_COLOR_INDEX, GL_BITMAP,
+ (GLvoid *) bitmap);
+ if (!bitmap) {
+ /* XXX GL_INVALID_OPERATION? */
+ return;
+ }
RENDER_START(swrast,ctx);
if (SWRAST_CONTEXT(ctx)->NewState)
_swrast_validate_derived( ctx );
RENDER_START(swrast,ctx);
if (SWRAST_CONTEXT(ctx)->NewState)
_swrast_validate_derived( ctx );
- INIT_SPAN(span);
- span.arrayMask |= SPAN_XY;
- span.end = width;
+ INIT_SPAN(span, GL_BITMAP, width, 0, SPAN_XY);
+
if (ctx->Visual.rgbMode) {
span.interpMask |= SPAN_RGBA;
span.red = FloatToFixed(ctx->Current.RasterColor[0] * CHAN_MAXF);
if (ctx->Visual.rgbMode) {
span.interpMask |= SPAN_RGBA;
span.red = FloatToFixed(ctx->Current.RasterColor[0] * CHAN_MAXF);
@@
-76,14
+80,16
@@
_swrast_Bitmap( GLcontext *ctx, GLint px, GLint py,
}
else {
span.interpMask |= SPAN_INDEX;
}
else {
span.interpMask |= SPAN_INDEX;
- span.index =
Chan
ToFixed(ctx->Current.RasterIndex);
+ span.index =
Float
ToFixed(ctx->Current.RasterIndex);
span.indexStep = 0;
}
if (ctx->Depth.Test)
span.indexStep = 0;
}
if (ctx->Depth.Test)
- _
mesa
_span_default_z(ctx, &span);
+ _
swrast
_span_default_z(ctx, &span);
if (ctx->Fog.Enabled)
if (ctx->Fog.Enabled)
- _mesa_span_default_fog(ctx, &span);
+ _swrast_span_default_fog(ctx, &span);
+ if (ctx->Texture._EnabledCoordUnits)
+ _swrast_span_default_texcoords(ctx, &span);
for (row = 0; row < height; row++, span.y++) {
const GLubyte *src = (const GLubyte *) _mesa_image_address( unpack,
for (row = 0; row < height; row++, span.y++) {
const GLubyte *src = (const GLubyte *) _mesa_image_address( unpack,
@@
-94,8
+100,8
@@
_swrast_Bitmap( GLcontext *ctx, GLint px, GLint py,
GLubyte mask = 1U << (unpack->SkipPixels & 0x7);
for (col = 0; col < width; col++) {
if (*src & mask) {
GLubyte mask = 1U << (unpack->SkipPixels & 0x7);
for (col = 0; col < width; col++) {
if (*src & mask) {
- span.
xArray
[count] = px + col;
- span.
yArra
y[count] = py + row;
+ span.
array->x
[count] = px + col;
+ span.
array->
y[count] = py + row;
count++;
}
if (mask == 128U) {
count++;
}
if (mask == 128U) {
@@
-116,8
+122,8
@@
_swrast_Bitmap( GLcontext *ctx, GLint px, GLint py,
GLubyte mask = 128U >> (unpack->SkipPixels & 0x7);
for (col = 0; col < width; col++) {
if (*src & mask) {
GLubyte mask = 128U >> (unpack->SkipPixels & 0x7);
for (col = 0; col < width; col++) {
if (*src & mask) {
- span.
xArray
[count] = px + col;
- span.
yArra
y[count] = py + row;
+ span.
array->x
[count] = px + col;
+ span.
array->
y[count] = py + row;
count++;
}
if (mask == 1U) {
count++;
}
if (mask == 1U) {
@@
-138,9
+144,9
@@
_swrast_Bitmap( GLcontext *ctx, GLint px, GLint py,
/* flush the span */
span.end = count;
if (ctx->Visual.rgbMode)
/* flush the span */
span.end = count;
if (ctx->Visual.rgbMode)
- _
mesa_write_rgba_span(ctx, &span, GL_BITMAP
);
+ _
swrast_write_rgba_span(ctx, &span
);
else
else
- _
mesa_write_index_span(ctx, &span, GL_BITMAP
);
+ _
swrast_write_index_span(ctx, &span
);
span.end = 0;
count = 0;
}
span.end = 0;
count = 0;
}
@@
-156,7
+162,6
@@
_swrast_Bitmap( GLcontext *ctx, GLint px, GLint py,
* fragments, initializing the mask array to indicate which fragmens to
* draw or skip.
*/
* fragments, initializing the mask array to indicate which fragmens to
* draw or skip.
*/
-
void
_swrast_Bitmap( GLcontext *ctx, GLint px, GLint py,
GLsizei width, GLsizei height,
void
_swrast_Bitmap( GLcontext *ctx, GLint px, GLint py,
GLsizei width, GLsizei height,
@@
-175,11
+180,12
@@
_swrast_Bitmap( GLcontext *ctx, GLint px, GLint py,
if (SWRAST_CONTEXT(ctx)->NewState)
_swrast_validate_derived( ctx );
if (SWRAST_CONTEXT(ctx)->NewState)
_swrast_validate_derived( ctx );
- INIT_SPAN(span);
- span.arrayMask |= SPAN_MASK; /* we'll init span.mask[] */
+ INIT_SPAN(span, GL_BITMAP, width, 0, SPAN_MASK);
+
+ /*span.arrayMask |= SPAN_MASK;*/ /* we'll init span.mask[] */
span.x = px;
span.y = py;
span.x = px;
span.y = py;
- span.end = width;
+ /*span.end = width;*/
if (ctx->Visual.rgbMode) {
span.interpMask |= SPAN_RGBA;
span.red = FloatToFixed(ctx->Current.RasterColor[0] * CHAN_MAXF);
if (ctx->Visual.rgbMode) {
span.interpMask |= SPAN_RGBA;
span.red = FloatToFixed(ctx->Current.RasterColor[0] * CHAN_MAXF);
@@
-190,14
+196,16
@@
_swrast_Bitmap( GLcontext *ctx, GLint px, GLint py,
}
else {
span.interpMask |= SPAN_INDEX;
}
else {
span.interpMask |= SPAN_INDEX;
- span.index =
Chan
ToFixed(ctx->Current.RasterIndex);
+ span.index =
Float
ToFixed(ctx->Current.RasterIndex);
span.indexStep = 0;
}
if (ctx->Depth.Test)
span.indexStep = 0;
}
if (ctx->Depth.Test)
- _
mesa
_span_default_z(ctx, &span);
+ _
swrast
_span_default_z(ctx, &span);
if (ctx->Fog.Enabled)
if (ctx->Fog.Enabled)
- _mesa_span_default_fog(ctx, &span);
+ _swrast_span_default_fog(ctx, &span);
+ if (ctx->Texture._EnabledCoordUnits)
+ _swrast_span_default_texcoords(ctx, &span);
for (row=0; row<height; row++, span.y++) {
const GLubyte *src = (const GLubyte *) _mesa_image_address( unpack,
for (row=0; row<height; row++, span.y++) {
const GLubyte *src = (const GLubyte *) _mesa_image_address( unpack,
@@
-207,7
+215,7
@@
_swrast_Bitmap( GLcontext *ctx, GLint px, GLint py,
/* Lsb first */
GLubyte mask = 1U << (unpack->SkipPixels & 0x7);
for (col=0; col<width; col++) {
/* Lsb first */
GLubyte mask = 1U << (unpack->SkipPixels & 0x7);
for (col=0; col<width; col++) {
- span.mask[col] = (*src & mask) ? GL_TRUE : GL_FALSE;
+ span.
array->
mask[col] = (*src & mask) ? GL_TRUE : GL_FALSE;
if (mask == 128U) {
src++;
mask = 1U;
if (mask == 128U) {
src++;
mask = 1U;
@@
-218,9
+226,9
@@
_swrast_Bitmap( GLcontext *ctx, GLint px, GLint py,
}
if (ctx->Visual.rgbMode)
}
if (ctx->Visual.rgbMode)
- _
mesa_write_rgba_span(ctx, &span, GL_BITMAP
);
+ _
swrast_write_rgba_span(ctx, &span
);
else
else
-
_mesa_write_index_span(ctx, &span, GL_BITMAP
);
+
_swrast_write_index_span(ctx, &span
);
/* get ready for next row */
if (mask != 1)
/* get ready for next row */
if (mask != 1)
@@
-230,7
+238,7
@@
_swrast_Bitmap( GLcontext *ctx, GLint px, GLint py,
/* Msb first */
GLubyte mask = 128U >> (unpack->SkipPixels & 0x7);
for (col=0; col<width; col++) {
/* Msb first */
GLubyte mask = 128U >> (unpack->SkipPixels & 0x7);
for (col=0; col<width; col++) {
- span.mask[col] = (*src & mask) ? GL_TRUE : GL_FALSE;
+ span.
array->
mask[col] = (*src & mask) ? GL_TRUE : GL_FALSE;
if (mask == 1U) {
src++;
mask = 128U;
if (mask == 1U) {
src++;
mask = 128U;
@@
-241,9
+249,9
@@
_swrast_Bitmap( GLcontext *ctx, GLint px, GLint py,
}
if (ctx->Visual.rgbMode)
}
if (ctx->Visual.rgbMode)
- _
mesa_write_rgba_span(ctx, &span, GL_BITMAP
);
+ _
swrast_write_rgba_span(ctx, &span
);
else
else
- _
mesa_write_index_span(ctx, &span, GL_BITMAP
);
+ _
swrast_write_index_span(ctx, &span
);
/* get ready for next row */
if (mask != 128)
/* get ready for next row */
if (mask != 128)