mirror of https://github.com/ClassiCube/ClassiCube
Dreamcast: Minor code tidyup
This commit is contained in:
parent
843173a118
commit
55c4b51a39
|
|
@ -530,16 +530,15 @@ static Vertex* ReserveOutput(AlignedVector* vec, uint32_t elems) {
|
||||||
|
|
||||||
void DrawQuads(int count, void* src) {
|
void DrawQuads(int count, void* src) {
|
||||||
if (!count) return;
|
if (!count) return;
|
||||||
PolyList* output = _glActivePolyList();
|
AlignedVector* vec = _glActivePolyList();
|
||||||
AlignedVector* vec = &output->vector;
|
|
||||||
|
|
||||||
uint32_t header_required = (vec->size == 0) || STATE_DIRTY;
|
uint32_t header_required = (vec->size == 0) || STATE_DIRTY;
|
||||||
// Reserve room for the vertices and header
|
// Reserve room for the vertices and header
|
||||||
Vertex* beg = ReserveOutput(&output->vector, vec->size + (header_required) + count);
|
Vertex* beg = ReserveOutput(vec, vec->size + (header_required) + count);
|
||||||
if (!beg) return;
|
if (!beg) return;
|
||||||
|
|
||||||
if (header_required) {
|
if (header_required) {
|
||||||
apply_poly_header((pvr_poly_hdr_t*)beg, output->list_type);
|
apply_poly_header((pvr_poly_hdr_t*)beg, vec->list_type);
|
||||||
STATE_DIRTY = false;
|
STATE_DIRTY = false;
|
||||||
beg++;
|
beg++;
|
||||||
vec->size += 1;
|
vec->size += 1;
|
||||||
|
|
@ -638,9 +637,9 @@ void Gfx_OnWindowResize(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static void PushCommand(void* cmd) {
|
static void PushCommand(void* cmd) {
|
||||||
aligned_vector_push_back(&OP_LIST.vector, cmd, 1);
|
aligned_vector_push_back(&OP_LIST, cmd, 1);
|
||||||
aligned_vector_push_back(&PT_LIST.vector, cmd, 1);
|
aligned_vector_push_back(&PT_LIST, cmd, 1);
|
||||||
aligned_vector_push_back(&TR_LIST.vector, cmd, 1);
|
aligned_vector_push_back(&TR_LIST, cmd, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Gfx_SetViewport(int x, int y, int w, int h) {
|
void Gfx_SetViewport(int x, int y, int w, int h) {
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,8 @@
|
||||||
typedef struct {
|
typedef struct {
|
||||||
uint32_t size;
|
uint32_t size;
|
||||||
uint32_t capacity;
|
uint32_t capacity;
|
||||||
uint32_t padding[6];
|
uint32_t list_type;
|
||||||
|
uint32_t padding[5];
|
||||||
uint8_t* data;
|
uint8_t* data;
|
||||||
} __attribute__((aligned(32))) AlignedVector;
|
} __attribute__((aligned(32))) AlignedVector;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -44,11 +44,6 @@ typedef struct {
|
||||||
|
|
||||||
#define GL_FORCE_INLINE static __attribute__((always_inline)) inline
|
#define GL_FORCE_INLINE static __attribute__((always_inline)) inline
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
unsigned int list_type;
|
|
||||||
AlignedVector vector;
|
|
||||||
} PolyList;
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
float hwidth; /* width * 0.5f */
|
float hwidth; /* width * 0.5f */
|
||||||
float hheight; /* height * 0.5f */
|
float hheight; /* height * 0.5f */
|
||||||
|
|
@ -102,18 +97,15 @@ extern GLenum SHADE_MODEL;
|
||||||
extern GLboolean AUTOSORT_ENABLED;
|
extern GLboolean AUTOSORT_ENABLED;
|
||||||
|
|
||||||
|
|
||||||
extern PolyList OP_LIST;
|
extern AlignedVector OP_LIST;
|
||||||
extern PolyList PT_LIST;
|
extern AlignedVector PT_LIST;
|
||||||
extern PolyList TR_LIST;
|
extern AlignedVector TR_LIST;
|
||||||
|
|
||||||
GL_FORCE_INLINE PolyList* _glActivePolyList() {
|
GL_FORCE_INLINE AlignedVector* _glActivePolyList() {
|
||||||
if(BLEND_ENABLED) {
|
if (BLEND_ENABLED) return &TR_LIST;
|
||||||
return &TR_LIST;
|
if (ALPHA_TEST_ENABLED) return &PT_LIST;
|
||||||
} else if(ALPHA_TEST_ENABLED) {
|
|
||||||
return &PT_LIST;
|
return &OP_LIST;
|
||||||
} else {
|
|
||||||
return &OP_LIST;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Memory allocation extension (GL_KOS_texture_memory_management) */
|
/* Memory allocation extension (GL_KOS_texture_memory_management) */
|
||||||
|
|
|
||||||
|
|
@ -23,9 +23,9 @@ GLboolean BLEND_ENABLED;
|
||||||
GLboolean TEXTURES_ENABLED;
|
GLboolean TEXTURES_ENABLED;
|
||||||
GLboolean AUTOSORT_ENABLED;
|
GLboolean AUTOSORT_ENABLED;
|
||||||
|
|
||||||
PolyList OP_LIST;
|
AlignedVector OP_LIST;
|
||||||
PolyList PT_LIST;
|
AlignedVector PT_LIST;
|
||||||
PolyList TR_LIST;
|
AlignedVector TR_LIST;
|
||||||
Viewport VIEWPORTS[3];
|
Viewport VIEWPORTS[3];
|
||||||
|
|
||||||
void glKosInit() {
|
void glKosInit() {
|
||||||
|
|
@ -35,31 +35,31 @@ void glKosInit() {
|
||||||
PT_LIST.list_type = PVR_LIST_PT_POLY;
|
PT_LIST.list_type = PVR_LIST_PT_POLY;
|
||||||
TR_LIST.list_type = PVR_LIST_TR_POLY;
|
TR_LIST.list_type = PVR_LIST_TR_POLY;
|
||||||
|
|
||||||
aligned_vector_reserve(&OP_LIST.vector, 1024 * 3);
|
aligned_vector_reserve(&OP_LIST, 1024 * 3);
|
||||||
aligned_vector_reserve(&PT_LIST.vector, 512 * 3);
|
aligned_vector_reserve(&PT_LIST, 512 * 3);
|
||||||
aligned_vector_reserve(&TR_LIST.vector, 1024 * 3);
|
aligned_vector_reserve(&TR_LIST, 1024 * 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
void glKosSwapBuffers() {
|
void glKosSwapBuffers() {
|
||||||
if (OP_LIST.vector.size > 2) {
|
if (OP_LIST.size > 2) {
|
||||||
pvr_list_begin(PVR_LIST_OP_POLY);
|
pvr_list_begin(PVR_LIST_OP_POLY);
|
||||||
SceneListSubmit((Vertex*)OP_LIST.vector.data, OP_LIST.vector.size, 0);
|
SceneListSubmit((Vertex*)OP_LIST.data, OP_LIST.size, 0);
|
||||||
pvr_list_finish();
|
pvr_list_finish();
|
||||||
OP_LIST.vector.size = 0;
|
OP_LIST.size = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (PT_LIST.vector.size > 2) {
|
if (PT_LIST.size > 2) {
|
||||||
pvr_list_begin(PVR_LIST_PT_POLY);
|
pvr_list_begin(PVR_LIST_PT_POLY);
|
||||||
SceneListSubmit((Vertex*)PT_LIST.vector.data, PT_LIST.vector.size, 1);
|
SceneListSubmit((Vertex*)PT_LIST.data, PT_LIST.size, 1);
|
||||||
pvr_list_finish();
|
pvr_list_finish();
|
||||||
PT_LIST.vector.size = 0;
|
PT_LIST.size = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (TR_LIST.vector.size > 2) {
|
if (TR_LIST.size > 2) {
|
||||||
pvr_list_begin(PVR_LIST_TR_POLY);
|
pvr_list_begin(PVR_LIST_TR_POLY);
|
||||||
SceneListSubmit((Vertex*)TR_LIST.vector.data, TR_LIST.vector.size, 2);
|
SceneListSubmit((Vertex*)TR_LIST.data, TR_LIST.size, 2);
|
||||||
pvr_list_finish();
|
pvr_list_finish();
|
||||||
TR_LIST.vector.size = 0;
|
TR_LIST.size = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue