intel: use _mesa_expand_bitmap() to skip an intermediate buffer
This commit is contained in:
parent
d5b6dd0001
commit
29e22059a9
|
@ -93,19 +93,12 @@ static const GLubyte *map_pbo( GLcontext *ctx,
|
|||
return ADD_POINTERS(buf, bitmap);
|
||||
}
|
||||
|
||||
static GLboolean test_bit( const GLubyte *src,
|
||||
GLuint bit )
|
||||
static GLboolean test_bit( const GLubyte *src, GLuint bit )
|
||||
{
|
||||
return (src[bit/8] & (1<<(bit % 8))) ? 1 : 0;
|
||||
}
|
||||
|
||||
static GLboolean test_msb_bit(const GLubyte *src, GLuint bit)
|
||||
{
|
||||
return (src[bit/8] & (1<<(7 - (bit % 8)))) ? 1 : 0;
|
||||
}
|
||||
|
||||
static void set_bit( GLubyte *dest,
|
||||
GLuint bit )
|
||||
static void set_bit( GLubyte *dest, GLuint bit )
|
||||
{
|
||||
dest[bit/8] |= 1 << (bit % 8);
|
||||
}
|
||||
|
@ -365,9 +358,7 @@ intel_texture_bitmap(GLcontext * ctx,
|
|||
GLuint texname;
|
||||
GLfloat vertices[4][4];
|
||||
GLint old_active_texture;
|
||||
GLubyte *unpacked_bitmap;
|
||||
GLubyte *a8_bitmap;
|
||||
int x, y;
|
||||
GLfloat dst_z;
|
||||
|
||||
/* We need a fragment program for the KIL effect */
|
||||
|
@ -427,22 +418,16 @@ intel_texture_bitmap(GLcontext * ctx,
|
|||
return GL_FALSE;
|
||||
}
|
||||
|
||||
/* Convert the A1 bitmap to an A8 format suitable for glTexImage */
|
||||
if (unpack->BufferObj->Name) {
|
||||
bitmap = map_pbo(ctx, width, height, unpack, bitmap);
|
||||
if (bitmap == NULL)
|
||||
return GL_TRUE; /* even though this is an error, we're done */
|
||||
}
|
||||
unpacked_bitmap = _mesa_unpack_bitmap(width, height, bitmap,
|
||||
unpack);
|
||||
|
||||
/* Convert the A1 bitmap to an A8 format suitable for glTexImage */
|
||||
a8_bitmap = _mesa_calloc(width * height);
|
||||
for (y = 0; y < height; y++) {
|
||||
for (x = 0; x < width; x++) {
|
||||
if (test_msb_bit(unpacked_bitmap, ALIGN(width, 8) * y + x))
|
||||
a8_bitmap[y * width + x] = 0xff;
|
||||
}
|
||||
}
|
||||
_mesa_free(unpacked_bitmap);
|
||||
_mesa_expand_bitmap(width, height, unpack, bitmap, a8_bitmap, width, 0xff);
|
||||
|
||||
if (unpack->BufferObj->Name) {
|
||||
/* done with PBO so unmap it now */
|
||||
ctx->Driver.UnmapBuffer(ctx, GL_PIXEL_UNPACK_BUFFER_EXT,
|
||||
|
|
Loading…
Reference in New Issue