merge latest kazade changes

This commit is contained in:
Hayden K 2019-03-13 07:21:57 -04:00
commit 21ccc32bc0
12 changed files with 75 additions and 24 deletions

View File

@ -783,7 +783,14 @@ static void genArraysTriangleFan(
return;
}
memcpy(buffer, output, sizeof(ClipVertex) * count);
if( !((uint32)&buffer % 32) && !((uint32)&output % 32)){
int temp = sizeof(ClipVertex) *count;
if (temp % 4)
temp = (temp & 0xfffffffc) + 4;
sq_cpy(buffer, output, temp);
} else {
memcpy(buffer, output, sizeof(ClipVertex) * count);
}
// First 3 vertices are in the right place, just end early
output[2].flags = PVR_CMD_VERTEX_EOL;

View File

@ -118,9 +118,10 @@ void APIENTRY glKosInit() {
}
#define QACRTA ((((unsigned int)0x10000000)>>26)<<2)&0x1c
static int frame_count = 0;
void APIENTRY glKosSwapBuffers() {
static int frame_count = 0;
TRACE();
@ -152,8 +153,26 @@ void APIENTRY glKosSwapBuffers() {
PROFILER_CHECKPOINT("scene");
PROFILER_POP();
#if PROFILER_COMPILE
if(++frame_count > 49) {
profiler_print_stats();
PROFILER_PRINT_STATS();
frame_count = 0;
}
#endif
}
void APIENTRY glKosReserveOPList(unsigned int elements){
aligned_vector_reserve(&OP_LIST.vector, elements);
aligned_vector_reserve((AlignedVector*)_glKosINTERNALGetVertices(), elements/3);
}
void APIENTRY glKosReservePTList(unsigned int elements){
aligned_vector_reserve(&PT_LIST.vector, elements);
aligned_vector_reserve((AlignedVector*)_glKosINTERNALGetVertices(), elements/3);
}
void APIENTRY glKosReserveTRList(unsigned int elements){
aligned_vector_reserve(&TR_LIST.vector, elements);
aligned_vector_reserve((AlignedVector*)_glKosINTERNALGetVertices(), elements/3);
}

View File

@ -259,3 +259,8 @@ void APIENTRY glRecti(GLint x1, GLint y1, GLint x2, GLint y2) {
void APIENTRY glRectiv(const GLint *v1, const GLint *v2) {
return glRectfv((const GLfloat *)v1, (const GLfloat *)v2);
}
AlignedVector* APIENTRY _glKosINTERNALGetVertices(){
return &VERTICES;
}

View File

@ -131,7 +131,7 @@ typedef struct {
GLint size;
} AttribPointer;
GLboolean _glCheckValidEnum(GLint param, GLenum* values, const char* func);
GLboolean _glCheckValidEnum(GLenum param, GLenum* values, const char* func);
GLuint _glGetEnabledAttributes();
AttribPointer* _glGetVertexAttribPointer();

View File

@ -6,7 +6,7 @@
#include "profiler.h"
#include "private.h"
#ifdef PROFILER_COMPILE
#if PROFILER_COMPILE
#include "../containers/aligned_vector.h"
#ifdef PROFILER_COMPILE

View File

@ -2,11 +2,12 @@
#include <stdint.h>
#define PROFILER_COMPILE 1
#define PROFILER_COMPILE 0
#if PROFILER_COMPILE
#define PROFILER_PUSH(S) profiler_push(S)
#define PROFILER_CHECKPOINT(P) profiler_checkpoint(P)
#define PROFILER_POP() profiler_pop()
#define PROFILER_PRINT_STATS() profiler_print_stats()
void profiler_enable();
void profiler_disable();
@ -25,4 +26,5 @@ void profiler_print_stats();
#define PROFILER_PUSH(S)
#define PROFILER_CHECKPOINT(P)
#define PROFILER_POP()
#define PROFILER_PRINT_STATS()
#endif

View File

@ -131,7 +131,7 @@ static void _updatePVRBlend(pvr_poly_cxt_t* context) {
}
}
GLboolean _glCheckValidEnum(GLint param, GLenum* values, const char* func) {
GLboolean _glCheckValidEnum(GLenum param, GLenum* values, const char* func) {
GLubyte found = 0;
while(*values != 0) {
if(*values == (GLenum)param) {

View File

@ -35,7 +35,9 @@ static GLenum INTERNAL_PALETTE_FORMAT = GL_RGBA4;
static TexturePalette* _initTexturePalette() {
TexturePalette* palette = (TexturePalette*) malloc(sizeof(TexturePalette));
assert(palette);
memset(palette, 0x0, sizeof(TexturePalette));
//memset(palette, 0x0, sizeof(TexturePalette));
sq_clr(palette, (sizeof(TexturePalette) & 0xfffffffc) + 4);
palette->data = NULL;
palette->format = 0;
@ -223,6 +225,8 @@ GLubyte _glInitTextures() {
SHARED_PALETTES[2] = _initTexturePalette();
SHARED_PALETTES[3] = _initTexturePalette();
memset((void*)BANKS_USED,0x0,sizeof(BANKS_USED));
return 1;
}
@ -346,7 +350,7 @@ void APIENTRY glBindTexture(GLenum target, GLuint texture) {
}
}
void APIENTRY glTexEnvi(GLenum target, GLenum pname, GLint param) {
void APIENTRY glTexEnvi(GLenum target, GLenum pname, GLenum param) {
TRACE();
GLenum target_values [] = {GL_TEXTURE_ENV, 0};
@ -384,10 +388,6 @@ void APIENTRY glTexEnvi(GLenum target, GLenum pname, GLint param) {
}
}
void APIENTRY glTexEnvf(GLenum target, GLenum pname, GLint param) {
glTexEnvi(target, pname, param);
}
void APIENTRY glCompressedTexImage2DARB(GLenum target,
GLint level,
GLenum internalFormat,
@ -776,11 +776,10 @@ GLboolean _glIsMipmapComplete(const TextureObject* obj) {
}
#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) )
((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) )
#define MIN(a, b) ( (a)<(b)? (a):(b) )
void APIENTRY glTexImage2D(GLenum target, GLint level, GLint internalFormat,
GLsizei width, GLsizei height, GLint border,
@ -941,7 +940,6 @@ void APIENTRY glTexImage2D(GLenum target, GLint level, GLint internalFormat,
if(needsTwiddling) {
assert(type == GL_UNSIGNED_BYTE); // Anything else needs this loop adjusting
GLuint x, y, min, min2, mask;
min = MIN(w, h);
min2 = min * min;

View File

@ -36,7 +36,8 @@ void aligned_vector_reserve(AlignedVector* vector, unsigned int element_count) {
if(element_count <= vector->capacity) {
return;
}
element_count = ((element_count+_VECTOR_ALIGN_COUNT) & ~_VECTOR_ALIGN_COUNT);
unsigned int original_byte_size = vector->size * vector->element_size;
/* We overallocate so that we don't make small allocations during push backs */
@ -47,7 +48,14 @@ void aligned_vector_reserve(AlignedVector* vector, unsigned int element_count) {
vector->data = (unsigned char*) memalign(0x20, new_byte_size);
if(original_data) {
memcpy(vector->data, original_data, original_byte_size);
if( !(*vector->data % 32) && !(*original_data % 32)){
if (original_byte_size % 4)
original_byte_size = (original_byte_size & 0xfffffffc) + 4;
sq_cpy(vector->data, original_data, original_byte_size);
} else {
memcpy(vector->data, original_data, original_byte_size);
}
free(original_data);
}
@ -64,6 +72,7 @@ void* aligned_vector_push_back(AlignedVector* vector, const void* objs, unsigned
/* Copy the objects in */
memcpy(dest, objs, vector->element_size * count);
//sq_cpy(dest, objs, ((vector->element_size * count) & 0xfffffffc) + 4);
return dest;
}
@ -121,6 +130,8 @@ void aligned_vector_shrink_to_fit(AlignedVector* vector) {
if(original_data) {
memcpy(vector->data, original_data, new_byte_size);
//sq_cpy(vector->data, original_data, ((new_byte_size) & 0xfffffffc) + 4);
free(original_data);
}

View File

@ -38,7 +38,8 @@ void named_array_init(NamedArray* array, unsigned int element_size, unsigned int
array->elements = (unsigned char*) malloc(element_size * max_elements);
array->used_markers = (unsigned char*) malloc(array->marker_count);
#endif
memset(array->used_markers, 0, sizeof(unsigned char) * array->marker_count);
//memset(array->used_markers, 0, sizeof(unsigned char) * array->marker_count);
sq_clr(array->used_markers, ((sizeof(unsigned char) * array->marker_count) & 0xfffffffc) + 4);
}
char named_array_used(NamedArray* array, unsigned int id) {
@ -58,7 +59,9 @@ void* named_array_alloc(NamedArray* array, unsigned int* new_id) {
array->used_markers[i] |= (unsigned char) 1 << j;
*new_id = id;
unsigned char* ptr = &array->elements[id * array->element_size];
memset(ptr, 0, array->element_size);
//memset(ptr, 0, array->element_size);
sq_clr(ptr, (array->element_size & 0xfffffffc) + 4);
return ptr;
}
}
@ -76,7 +79,8 @@ void* named_array_reserve(NamedArray* array, unsigned int id) {
assert(named_array_used(array, id));
unsigned char* ptr = &array->elements[id * array->element_size];
memset(ptr, 0, array->element_size);
//memset(ptr, 0, array->element_size);
sq_clr(ptr, (array->element_size & 0xfffffffc) + 4);
return ptr;
}

View File

@ -485,8 +485,9 @@ GLAPI void APIENTRY glBlendFunc(GLenum sfactor, GLenum dfactor);
/* Texturing */
GLAPI void APIENTRY glTexParameteri(GLenum target, GLenum pname, GLint param);
GLAPI void APIENTRY glTexEnvi(GLenum target, GLenum pname, GLint param);
GLAPI void APIENTRY glTexEnvf(GLenum target, GLenum pname, GLint param);
GLAPI void APIENTRY glTexEnvi(GLenum target, GLenum pname, GLenum param);
#define glTexEnvf(target, pname, param) glTexEnvi(target, pname, param)
//GLAPI void APIENTRY glTexEnvf(GLenum target, GLenum pname, GLenum param);
GLAPI GLboolean APIENTRY glIsTexture(GLuint texture);
GLAPI void APIENTRY glGenTextures(GLsizei n, GLuint *textures);

View File

@ -91,5 +91,9 @@ GLAPI void APIENTRY glKosSwapBuffers();
/* Pass to glTexParameteri to set the shared bank */
#define GL_SHARED_TEXTURE_BANK_KOS 0xEF00
GLAPI void APIENTRY glKosReserveOPList(unsigned int elements);
GLAPI void APIENTRY glKosReservePTList(unsigned int elements);
GLAPI void APIENTRY glKosReserveTRList(unsigned int elements);
__END_DECLS