General merge and repair
- Fix defines - Fix POLYGON logic - change static func names to macro - Fix checkEnum
This commit is contained in:
parent
a561fd469f
commit
ba211c3a50
14
GL/draw.c
14
GL/draw.c
|
@ -757,6 +757,7 @@ static void genArraysTriangleStrip(
|
||||||
}
|
}
|
||||||
|
|
||||||
#define MAX_POLYGON_SIZE 32
|
#define MAX_POLYGON_SIZE 32
|
||||||
|
static ClipVertex buffer[MAX_POLYGON_SIZE];
|
||||||
|
|
||||||
static void genArraysTriangleFan(
|
static void genArraysTriangleFan(
|
||||||
ClipVertex* output,
|
ClipVertex* output,
|
||||||
|
@ -769,8 +770,7 @@ static void genArraysTriangleFan(
|
||||||
GLboolean doTexture, GLboolean doMultitexture, GLboolean doLighting) {
|
GLboolean doTexture, GLboolean doMultitexture, GLboolean doLighting) {
|
||||||
|
|
||||||
assert(count < MAX_POLYGON_SIZE);
|
assert(count < MAX_POLYGON_SIZE);
|
||||||
static ClipVertex buffer[MAX_POLYGON_SIZE];
|
|
||||||
|
|
||||||
genArraysCommon(
|
genArraysCommon(
|
||||||
output, count,
|
output, count,
|
||||||
vptr, vstride, cptr, cstride, uvptr, uvstride, stptr, ststride, nptr, nstride,
|
vptr, vstride, cptr, cstride, uvptr, uvstride, stptr, ststride, nptr, nstride,
|
||||||
|
@ -793,8 +793,8 @@ static void genArraysTriangleFan(
|
||||||
|
|
||||||
for(; i < count; ++i) {
|
for(; i < count; ++i) {
|
||||||
output[target++] = *first;
|
output[target++] = *first;
|
||||||
output[target++] = buffer[i];
|
output[target++] = buffer[i - 1];
|
||||||
output[target] = buffer[i - 1];
|
output[target] = buffer[i];
|
||||||
output[target++].flags = PVR_CMD_VERTEX_EOL;
|
output[target++].flags = PVR_CMD_VERTEX_EOL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1280,7 +1280,7 @@ void APIENTRY glEnableClientState(GLenum cap) {
|
||||||
(ENABLED_VERTEX_ATTRIBUTES |= UV_ENABLED_FLAG);
|
(ENABLED_VERTEX_ATTRIBUTES |= UV_ENABLED_FLAG);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
_glKosThrowError(GL_INVALID_ENUM, "glEnableClientState");
|
_glKosThrowError(GL_INVALID_ENUM, __func__);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1303,7 +1303,7 @@ void APIENTRY glDisableClientState(GLenum cap) {
|
||||||
(ENABLED_VERTEX_ATTRIBUTES &= ~UV_ENABLED_FLAG);
|
(ENABLED_VERTEX_ATTRIBUTES &= ~UV_ENABLED_FLAG);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
_glKosThrowError(GL_INVALID_ENUM, "glDisableClientState");
|
_glKosThrowError(GL_INVALID_ENUM, __func__);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1315,7 +1315,7 @@ void APIENTRY glClientActiveTextureARB(GLenum texture) {
|
||||||
TRACE();
|
TRACE();
|
||||||
|
|
||||||
if(texture < GL_TEXTURE0_ARB || texture > GL_TEXTURE0_ARB + MAX_TEXTURE_UNITS) {
|
if(texture < GL_TEXTURE0_ARB || texture > GL_TEXTURE0_ARB + MAX_TEXTURE_UNITS) {
|
||||||
_glKosThrowError(GL_INVALID_ENUM, "glClientActiveTextureARB");
|
_glKosThrowError(GL_INVALID_ENUM, __func__);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(_glKosHasError()) {
|
if(_glKosHasError()) {
|
||||||
|
|
|
@ -57,6 +57,7 @@ void _glKosPrintError() {
|
||||||
}
|
}
|
||||||
|
|
||||||
fprintf(stderr, "GL ERROR: %s when calling %s\n", _glErrorEnumAsString(last_error), error_function);
|
fprintf(stderr, "GL ERROR: %s when calling %s\n", _glErrorEnumAsString(last_error), error_function);
|
||||||
|
_glKosResetError();
|
||||||
}
|
}
|
||||||
|
|
||||||
GLenum glGetError(void) {
|
GLenum glGetError(void) {
|
||||||
|
|
|
@ -186,7 +186,7 @@ GLboolean _glCalculateAverageTexel(const GLubyte* src, const GLuint srcWidth, co
|
||||||
*d1 = (r << 11 | g << 5 | b);
|
*d1 = (r << 11 | g << 5 | b);
|
||||||
} else {
|
} else {
|
||||||
fprintf(stderr, "ERROR: Unsupported PVR format for mipmap generation");
|
fprintf(stderr, "ERROR: Unsupported PVR format for mipmap generation");
|
||||||
_glKosThrowError(GL_INVALID_OPERATION, "glGenerateMipmapEXT");
|
_glKosThrowError(GL_INVALID_OPERATION, __func__);
|
||||||
_glKosPrintError();
|
_glKosPrintError();
|
||||||
return GL_FALSE;
|
return GL_FALSE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -134,7 +134,7 @@ static void _updatePVRBlend(pvr_poly_cxt_t* context) {
|
||||||
GLboolean _glCheckValidEnum(GLint param, GLenum* values, const char* func) {
|
GLboolean _glCheckValidEnum(GLint param, GLenum* values, const char* func) {
|
||||||
GLubyte found = 0;
|
GLubyte found = 0;
|
||||||
while(*values != 0) {
|
while(*values != 0) {
|
||||||
if(*values == param) {
|
if(*values == (GLenum)param) {
|
||||||
found++;
|
found++;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -225,7 +225,7 @@ void _glUpdatePVRTextureContext(pvr_poly_cxt_t* context, GLshort textureUnit) {
|
||||||
if(tx1->isPaletted) {
|
if(tx1->isPaletted) {
|
||||||
if(_glIsSharedTexturePaletteEnabled()) {
|
if(_glIsSharedTexturePaletteEnabled()) {
|
||||||
TexturePalette* palette = _glGetSharedPalette(tx1->shared_bank);
|
TexturePalette* palette = _glGetSharedPalette(tx1->shared_bank);
|
||||||
context->txr.format |= PVR_TXRFMT_8BPP_PAL((palette) ? 0 : palette->bank);
|
context->txr.format |= PVR_TXRFMT_8BPP_PAL((palette) ? 0 : palette->bank);
|
||||||
} else {
|
} else {
|
||||||
context->txr.format |= PVR_TXRFMT_8BPP_PAL((tx1->palette) ? tx1->palette->bank : 0);
|
context->txr.format |= PVR_TXRFMT_8BPP_PAL((tx1->palette) ? tx1->palette->bank : 0);
|
||||||
}
|
}
|
||||||
|
@ -614,7 +614,7 @@ void APIENTRY glGetFloatv(GLenum pname, GLfloat* params) {
|
||||||
memcpy(params, _glGetModelViewMatrix(), sizeof(float) * 16);
|
memcpy(params, _glGetModelViewMatrix(), sizeof(float) * 16);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
_glKosThrowError(GL_INVALID_ENUM, "glGetIntegerv");
|
_glKosThrowError(GL_INVALID_ENUM, __func__);
|
||||||
_glKosPrintError();
|
_glKosPrintError();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -656,7 +656,7 @@ void APIENTRY glGetIntegerv(GLenum pname, GLint *params) {
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
default:
|
default:
|
||||||
_glKosThrowError(GL_INVALID_ENUM, "glGetIntegerv");
|
_glKosThrowError(GL_INVALID_ENUM, __func__);
|
||||||
_glKosPrintError();
|
_glKosPrintError();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
31
GL/texture.c
31
GL/texture.c
|
@ -31,6 +31,7 @@ static GLboolean SUBBANKS_USED[4][16]; // 4 counts of the used 16 colour banks w
|
||||||
static TexturePalette* _initTexturePalette() {
|
static TexturePalette* _initTexturePalette() {
|
||||||
TexturePalette* palette = (TexturePalette*) malloc(sizeof(TexturePalette));
|
TexturePalette* palette = (TexturePalette*) malloc(sizeof(TexturePalette));
|
||||||
assert(palette);
|
assert(palette);
|
||||||
|
memset(palette, 0x0, sizeof(TexturePalette));
|
||||||
|
|
||||||
palette->data = NULL;
|
palette->data = NULL;
|
||||||
palette->format = 0;
|
palette->format = 0;
|
||||||
|
@ -366,7 +367,7 @@ void APIENTRY glTexEnvi(GLenum target, GLenum pname, GLint param) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void APIENTRY glTexEnvf(GLenum target, GLenum pname, GLfloat param) {
|
void APIENTRY glTexEnvf(GLenum target, GLenum pname, GLint param) {
|
||||||
glTexEnvi(target, pname, param);
|
glTexEnvi(target, pname, param);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -929,7 +930,7 @@ void APIENTRY glTexImage2D(GLenum target, GLint level, GLint internalFormat,
|
||||||
assert(bytes);
|
assert(bytes);
|
||||||
|
|
||||||
if(needsTwiddling) {
|
if(needsTwiddling) {
|
||||||
assert(type == GL_UNSIGNED_BYTE); // Anything else needs this loop adjusting
|
/*assert(type == GL_UNSIGNED_BYTE); // Anything else needs this loop adjusting
|
||||||
GLuint x, y;
|
GLuint x, y;
|
||||||
for(y = 0; y < height; ++y) {
|
for(y = 0; y < height; ++y) {
|
||||||
for(x = 0; x < width; ++x) {
|
for(x = 0; x < width; ++x) {
|
||||||
|
@ -939,7 +940,33 @@ void APIENTRY glTexImage2D(GLenum target, GLint level, GLint internalFormat,
|
||||||
targetData[dest] = ((GLubyte*) data)[src];
|
targetData[dest] = ((GLubyte*) data)[src];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
/* Don't convert color indexes */
|
||||||
|
/* Linear/iterative twiddling algorithm from Marcus' tatest */
|
||||||
|
#define TWIDTAB(x) ( (x&1)|((x&2)<<1)|((x&4)<<2)|((x&8)<<3)|((x&16)<<4)| \
|
||||||
|
((x&32)<<5)|((x&64)<<6)|((x&128)<<7)|((x&256)<<8)|((x&512)<<9) )
|
||||||
|
#define TWIDOUT(x, y) ( TWIDTAB((y)) | (TWIDTAB((x)) << 1) )
|
||||||
|
|
||||||
|
#define MIN(a, b) ( (a)<(b)? (a):(b) )
|
||||||
|
|
||||||
|
uint32 x, y, min, mask;
|
||||||
|
|
||||||
|
min = MIN(w, h);
|
||||||
|
mask = min - 1;
|
||||||
|
|
||||||
|
uint8 * pixels;
|
||||||
|
uint16 * vtex;
|
||||||
|
pixels = (uint8 *) data;
|
||||||
|
vtex = (uint16*)targetData;
|
||||||
|
|
||||||
|
for(y = 0; y < h; y += 2) {
|
||||||
|
for(x = 0; x < w; x++) {
|
||||||
|
vtex[TWIDOUT((y & mask) / 2, x & mask) +
|
||||||
|
(x / min + y / min)*min * min / 2] =
|
||||||
|
pixels[y * w + x] | (pixels[(y + 1) * w + x] << 8);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
data = NULL;
|
||||||
} else {
|
} else {
|
||||||
/* No conversion? Just copy the data, and the pvr_format is correct */
|
/* No conversion? Just copy the data, and the pvr_format is correct */
|
||||||
sq_cpy(targetData, data, bytes);
|
sq_cpy(targetData, data, bytes);
|
||||||
|
|
10
include/gl.h
10
include/gl.h
|
@ -112,10 +112,10 @@ __BEGIN_DECLS
|
||||||
|
|
||||||
/* Texture Environment */
|
/* Texture Environment */
|
||||||
#define GL_TEXTURE_ENV_MODE 0x2200
|
#define GL_TEXTURE_ENV_MODE 0x2200
|
||||||
#define GL_REPLACE 0x0
|
#define GL_REPLACE 0x1E01
|
||||||
#define GL_MODULATE 0x1
|
#define GL_MODULATE 0x2100
|
||||||
#define GL_DECAL 0x2
|
#define GL_DECAL 0x2101
|
||||||
#define GL_MODULATEALPHA 0x3
|
|
||||||
|
|
||||||
/* TextureMagFilter */
|
/* TextureMagFilter */
|
||||||
#define GL_NEAREST 0x2600
|
#define GL_NEAREST 0x2600
|
||||||
|
@ -493,7 +493,7 @@ GLAPI void APIENTRY glBlendFunc(GLenum sfactor, GLenum dfactor);
|
||||||
/* Texturing */
|
/* Texturing */
|
||||||
GLAPI void APIENTRY glTexParameteri(GLenum target, GLenum pname, GLint param);
|
GLAPI void APIENTRY glTexParameteri(GLenum target, GLenum pname, GLint param);
|
||||||
GLAPI void APIENTRY glTexEnvi(GLenum target, GLenum pname, GLint param);
|
GLAPI void APIENTRY glTexEnvi(GLenum target, GLenum pname, GLint param);
|
||||||
GLAPI void APIENTRY glTexEnvf(GLenum target, GLenum pname, GLfloat param);
|
GLAPI void APIENTRY glTexEnvf(GLenum target, GLenum pname, GLint param);
|
||||||
|
|
||||||
GLAPI GLboolean APIENTRY glIsTexture(GLuint texture);
|
GLAPI GLboolean APIENTRY glIsTexture(GLuint texture);
|
||||||
GLAPI void APIENTRY glGenTextures(GLsizei n, GLuint *textures);
|
GLAPI void APIENTRY glGenTextures(GLsizei n, GLuint *textures);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user