changes
This commit is contained in:
parent
4dadbcb20d
commit
3553fdf19d
|
@ -2,7 +2,7 @@
|
|||
#define CONFIG_H
|
||||
|
||||
|
||||
#define MAX_TEXTURE_COUNT 512
|
||||
#define MAX_TEXTURE_COUNT 512 //@Todo: or 1088 explain why increased. mrneo240
|
||||
|
||||
|
||||
#endif // CONFIG_H
|
||||
|
|
|
@ -1288,7 +1288,7 @@ void APIENTRY glEnableClientState(GLenum cap) {
|
|||
(ENABLED_VERTEX_ATTRIBUTES |= UV_ENABLED_FLAG);
|
||||
break;
|
||||
default:
|
||||
_glKosThrowError(GL_INVALID_ENUM, "glEnableClientState");
|
||||
_glKosThrowError(GL_INVALID_ENUM, __func__);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1311,7 +1311,7 @@ void APIENTRY glDisableClientState(GLenum cap) {
|
|||
(ENABLED_VERTEX_ATTRIBUTES &= ~UV_ENABLED_FLAG);
|
||||
break;
|
||||
default:
|
||||
_glKosThrowError(GL_INVALID_ENUM, "glDisableClientState");
|
||||
_glKosThrowError(GL_INVALID_ENUM, __func__);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1324,7 +1324,7 @@ void APIENTRY glClientActiveTextureARB(GLenum texture) {
|
|||
//TRACE();
|
||||
|
||||
if(texture < GL_TEXTURE0_ARB || texture > GL_TEXTURE0_ARB + MAX_TEXTURE_UNITS) {
|
||||
_glKosThrowError(GL_INVALID_ENUM, "glClientActiveTextureARB");
|
||||
_glKosThrowError(GL_INVALID_ENUM, __func__);
|
||||
}
|
||||
|
||||
if(_glKosHasError()) {
|
||||
|
|
|
@ -57,6 +57,7 @@ void _glKosPrintError() {
|
|||
}
|
||||
|
||||
fprintf(stderr, "GL ERROR: %s when calling %s\n", _glErrorEnumAsString(last_error), error_function);
|
||||
_glKosResetError();
|
||||
}
|
||||
|
||||
GLenum glGetError(void) {
|
||||
|
|
13
GL/flush.c
13
GL/flush.c
|
@ -94,24 +94,28 @@ void APIENTRY glKosSwapBuffers() {
|
|||
|
||||
TRACE();
|
||||
|
||||
profiler_push(__func__);
|
||||
PROFILER_PUSH(__func__);
|
||||
|
||||
pvr_wait_ready();
|
||||
|
||||
|
||||
pvr_scene_begin();
|
||||
QACR0 = QACRTA;
|
||||
QACR1 = QACRTA;
|
||||
|
||||
pvr_list_begin(PVR_LIST_OP_POLY);
|
||||
pvr_list_submit(OP_LIST.vector.data, OP_LIST.vector.size);
|
||||
printf("OP_POLY: data: %p size:%d\n",OP_LIST.vector.data,OP_LIST.vector.size);
|
||||
pvr_list_finish();
|
||||
|
||||
pvr_list_begin(PVR_LIST_PT_POLY);
|
||||
pvr_list_submit(PT_LIST.vector.data, PT_LIST.vector.size);
|
||||
printf("PT_POLY: data: %p size:%d\n",PT_LIST.vector.data,PT_LIST.vector.size);
|
||||
pvr_list_finish();
|
||||
|
||||
pvr_list_begin(PVR_LIST_TR_POLY);
|
||||
pvr_list_submit(TR_LIST.vector.data, TR_LIST.vector.size);
|
||||
printf("TR_POLY: data: %p size:%d\n",TR_LIST.vector.data,TR_LIST.vector.size);
|
||||
pvr_list_finish();
|
||||
pvr_scene_finish();
|
||||
|
||||
|
@ -119,11 +123,12 @@ void APIENTRY glKosSwapBuffers() {
|
|||
aligned_vector_clear(&PT_LIST.vector);
|
||||
aligned_vector_clear(&TR_LIST.vector);
|
||||
|
||||
profiler_checkpoint("scene");
|
||||
profiler_pop();
|
||||
|
||||
PROFILER_CHECKPOINT("scene");
|
||||
PROFILER_POP();
|
||||
#ifdef PROFILER_COMPILE
|
||||
if(frame_count++ > 100) {
|
||||
profiler_print_stats();
|
||||
frame_count = 0;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -186,7 +186,7 @@ GLboolean _glCalculateAverageTexel(const GLubyte* src, const GLuint srcWidth, co
|
|||
*d1 = (r << 11 | g << 5 | b);
|
||||
} else {
|
||||
fprintf(stderr, "ERROR: Unsupported PVR format for mipmap generation");
|
||||
_glKosThrowError(GL_INVALID_OPERATION, "glGenerateMipmapEXT");
|
||||
_glKosThrowError(GL_INVALID_OPERATION, __func__);
|
||||
_glKosPrintError();
|
||||
return GL_FALSE;
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
#define DEG2RAD (0.01745329251994329576923690768489)
|
||||
|
||||
/* Viewport mapping */
|
||||
static GLfloat gl_viewport_scale[3], gl_viewport_offset[3];
|
||||
//static GLfloat gl_viewport_scale[3], gl_viewport_offset[3];
|
||||
|
||||
/* Depth range */
|
||||
static GLclampf gl_depthrange_near, gl_depthrange_far;
|
||||
|
@ -33,6 +33,10 @@ static const matrix_t IDENTITY = {
|
|||
|
||||
void APIENTRY glDepthRange(GLclampf n, GLclampf f);
|
||||
|
||||
matrix_t* _glGetModelViewMatrix() {
|
||||
return (matrix_t*) stack_top(&MATRIX_STACKS[0]);
|
||||
}
|
||||
|
||||
matrix_t* _glGetProjectionMatrix() {
|
||||
return (matrix_t*) stack_top(&MATRIX_STACKS[1]);
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
#include "../containers/named_array.h"
|
||||
#include "./clip.h"
|
||||
|
||||
#define TRACE_ENABLED 1
|
||||
#define TRACE_ENABLED 0
|
||||
#define TRACE() if(TRACE_ENABLED) {fprintf(stderr, "%s\n", __func__);}
|
||||
|
||||
#define VERTEX_ENABLED_FLAG (1 << 0)
|
||||
|
|
|
@ -16,3 +16,14 @@ void profiler_print_stats();
|
|||
|
||||
void profiler_enable();
|
||||
void profiler_disable();
|
||||
|
||||
#define PROFILER_COMPILE 0
|
||||
#ifdef PROFILER_COMPILE
|
||||
#define PROFILER_PUSH(S) profiler_push(S)
|
||||
#define PROFILER_CHECKPOINT(P) profiler_checkpoint(P)
|
||||
#define PROFILER_POP() profiler_pop()
|
||||
#else
|
||||
#define PROFILER_PUSH(S) do {} while (0)
|
||||
#define PROFILER_CHECKPOINT(P) do {} while (0)
|
||||
#define PROFILER_POP() do {} while (0)
|
||||
#endif
|
||||
|
|
11
GL/state.c
11
GL/state.c
|
@ -135,8 +135,9 @@ GLboolean _glCheckValidEnum(GLint param, GLenum* values, const char* func) {
|
|||
}
|
||||
|
||||
if(!found) {
|
||||
_glKosThrowError(GL_INVALID_ENUM, func);
|
||||
_glKosPrintError();
|
||||
//_glKosThrowError(GL_INVALID_ENUM, func);
|
||||
//_glKosPrintError();
|
||||
printf("GL_INVALID_ENUM when calling %s\n",func);
|
||||
return GL_TRUE;
|
||||
}
|
||||
|
||||
|
@ -567,9 +568,11 @@ void APIENTRY glGetFloatv(GLenum pname, GLfloat* params) {
|
|||
switch(pname) {
|
||||
case GL_PROJECTION_MATRIX:
|
||||
memcpy(params, _glGetProjectionMatrix(), sizeof(float) * 16);
|
||||
case GL_MODELVIEW_MATRIX:
|
||||
memcpy(params, _glGetModelViewMatrix(), sizeof(float) * 16);
|
||||
break;
|
||||
default:
|
||||
_glKosThrowError(GL_INVALID_ENUM, "glGetIntegerv");
|
||||
_glKosThrowError(GL_INVALID_ENUM, __func__);
|
||||
_glKosPrintError();
|
||||
break;
|
||||
}
|
||||
|
@ -611,7 +614,7 @@ void APIENTRY glGetIntegerv(GLenum pname, GLint *params) {
|
|||
}
|
||||
} break;
|
||||
default:
|
||||
_glKosThrowError(GL_INVALID_ENUM, "glGetIntegerv");
|
||||
_glKosThrowError(GL_INVALID_ENUM, __func__);
|
||||
_glKosPrintError();
|
||||
break;
|
||||
}
|
||||
|
|
22
GL/texture.c
22
GL/texture.c
|
@ -55,7 +55,7 @@ void _glApplyColorTable() {
|
|||
GLushort i = 0;
|
||||
for(; i < src->width; ++i) {
|
||||
GLubyte* entry = &src->data[i * 4];
|
||||
pvr_set_pal_entry(i, PACK_ARGB8888(entry[3], entry[1], entry[2], entry[0]));
|
||||
pvr_set_pal_entry(i, PACK_ARGB8888(entry[3], entry[0], entry[1], entry[2]));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -241,14 +241,13 @@ void APIENTRY glBindTexture(GLenum target, GLuint texture) {
|
|||
return;
|
||||
}
|
||||
|
||||
/* If this didn't come from glGenTextures, then we should initialize the
|
||||
* texture the first time it's bound */
|
||||
if(!named_array_used(&TEXTURE_OBJECTS, texture)) {
|
||||
TextureObject* txr = named_array_reserve(&TEXTURE_OBJECTS, texture);
|
||||
_glInitializeTextureObject(txr, texture);
|
||||
}
|
||||
|
||||
if(texture) {
|
||||
/* If this didn't come from glGenTextures, then we should initialize the
|
||||
* texture the first time it's bound */
|
||||
if(!named_array_used(&TEXTURE_OBJECTS, texture)) {
|
||||
TextureObject* txr = named_array_reserve(&TEXTURE_OBJECTS, texture);
|
||||
_glInitializeTextureObject(txr, texture);
|
||||
}
|
||||
TEXTURE_UNITS[ACTIVE_TEXTURE] = (TextureObject*) named_array_get(&TEXTURE_OBJECTS, texture);
|
||||
} else {
|
||||
TEXTURE_UNITS[ACTIVE_TEXTURE] = NULL;
|
||||
|
@ -264,9 +263,9 @@ void APIENTRY glTexEnvi(GLenum target, GLenum pname, GLint param) {
|
|||
|
||||
GLubyte failures = 0;
|
||||
|
||||
failures += _glCheckValidEnum(target, target_values, __func__);
|
||||
/*failures += _glCheckValidEnum(target, target_values, __func__);
|
||||
failures += _glCheckValidEnum(pname, pname_values, __func__);
|
||||
failures += _glCheckValidEnum(param, param_values, __func__);
|
||||
failures += _glCheckValidEnum(param, param_values, __func__);*/
|
||||
|
||||
TextureObject* active = TEXTURE_UNITS[ACTIVE_TEXTURE];
|
||||
|
||||
|
@ -591,7 +590,6 @@ static inline void _i8_to_i8(const GLubyte* source, GLubyte* dest) {
|
|||
}
|
||||
|
||||
static TextureConversionFunc _determineConversion(GLint internalFormat, GLenum format, GLenum type) {
|
||||
printf("attempted conversion: %x -> %x, %x \n", internalFormat, format, type);
|
||||
switch(internalFormat) {
|
||||
case GL_ALPHA: {
|
||||
if(type == GL_UNSIGNED_BYTE && format == GL_RGBA) {
|
||||
|
@ -690,7 +688,6 @@ void APIENTRY glTexImage2D(GLenum target, GLint level, GLint internalFormat,
|
|||
GLenum format, GLenum type, const GLvoid *data) {
|
||||
|
||||
TRACE();
|
||||
printf("glTexImage2D(%x, %d, %x, %d, %d, %d ,%x, %x, *data) \n", target, level, internalFormat,width, height, border, format, type);
|
||||
|
||||
if(target != GL_TEXTURE_2D) {
|
||||
_glKosThrowError(GL_INVALID_ENUM, "glTexImage2D-tex2d");
|
||||
|
@ -870,6 +867,7 @@ void APIENTRY glTexImage2D(GLenum target, GLint level, GLint internalFormat,
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
void APIENTRY glTexParameterf(GLenum target, GLenum pname, GLint param) {
|
||||
glTexParameteri(target, pname, (GLint)param);
|
||||
}
|
||||
|
|
|
@ -12,6 +12,17 @@
|
|||
|
||||
#include "named_array.h"
|
||||
|
||||
#define BYTE_TO_BINARY_PATTERN "%c%c%c%c%c%c%c%c"
|
||||
#define BYTE_TO_BINARY(byte) \
|
||||
(byte & 0x80 ? '1' : '0'), \
|
||||
(byte & 0x40 ? '1' : '0'), \
|
||||
(byte & 0x20 ? '1' : '0'), \
|
||||
(byte & 0x10 ? '1' : '0'), \
|
||||
(byte & 0x08 ? '1' : '0'), \
|
||||
(byte & 0x04 ? '1' : '0'), \
|
||||
(byte & 0x02 ? '1' : '0'), \
|
||||
(byte & 0x01 ? '1' : '0')
|
||||
|
||||
void named_array_init(NamedArray* array, unsigned int element_size, unsigned int max_elements) {
|
||||
array->element_size = element_size;
|
||||
array->max_element_count = max_elements;
|
||||
|
@ -31,7 +42,6 @@ void named_array_init(NamedArray* array, unsigned int element_size, unsigned int
|
|||
}
|
||||
|
||||
char named_array_used(NamedArray* array, unsigned int id) {
|
||||
id--;
|
||||
|
||||
unsigned int i = id / 8;
|
||||
unsigned int j = id % 8;
|
||||
|
@ -60,10 +70,9 @@ void* named_array_alloc(NamedArray* array, unsigned int* new_id) {
|
|||
|
||||
void* named_array_reserve(NamedArray* array, unsigned int id) {
|
||||
if(!named_array_used(array, id)) {
|
||||
unsigned int j = (id % 8) - 1;
|
||||
unsigned int j = (id % 8);
|
||||
unsigned int i = id / 8;
|
||||
|
||||
assert(!named_array_used(array, id));
|
||||
array->used_markers[i] |= (unsigned char) 1 << j;
|
||||
assert(named_array_used(array, id));
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user