feat: add fast path for sq_cpy-able verts
This commit is contained in:
parent
2965df485b
commit
c741d4d622
39
GL/draw.c
39
GL/draw.c
|
@ -771,6 +771,44 @@ static void generate(SubmissionTarget* target, const GLenum mode, const GLsizei
|
|||
const GLsizei istride = byte_size(type);
|
||||
|
||||
if(!indices) {
|
||||
if( ((ENABLED_VERTEX_ATTRIBUTES & DIFFUSE_ENABLED_FLAG) == DIFFUSE_ENABLED_FLAG ) && (DIFFUSE_POINTER.type == GL_UNSIGNED_BYTE ) && DIFFUSE_POINTER.stride == 32){
|
||||
|
||||
profiler_push(__func__);
|
||||
|
||||
Vertex* start = _glSubmissionTargetStart(target);
|
||||
Vertex* it = start;
|
||||
|
||||
sq_cpy(start, VERTEX_POINTER.ptr - ( sizeof(unsigned int) * 1 ), count * sizeof(Vertex) );
|
||||
|
||||
ITERATE(count) {
|
||||
it->flags = PVR_CMD_VERTEX;
|
||||
++it;
|
||||
}
|
||||
|
||||
profiler_checkpoint("flags");
|
||||
|
||||
// Drawing arrays
|
||||
switch(mode) {
|
||||
case GL_TRIANGLES:
|
||||
genTriangles(start, count);
|
||||
break;
|
||||
case GL_QUADS:
|
||||
genQuads(start, count);
|
||||
break;
|
||||
case GL_TRIANGLE_FAN:
|
||||
genTriangleFan(start, count);
|
||||
break;
|
||||
case GL_TRIANGLE_STRIP:
|
||||
genTriangleStrip(_glSubmissionTargetStart(target), count);
|
||||
break;
|
||||
default:
|
||||
assert(0 && "Not Implemented");
|
||||
}
|
||||
|
||||
profiler_checkpoint("quads");
|
||||
profiler_pop();
|
||||
|
||||
}else {
|
||||
profiler_push(__func__);
|
||||
|
||||
Vertex* start = _glSubmissionTargetStart(target);
|
||||
|
@ -823,6 +861,7 @@ static void generate(SubmissionTarget* target, const GLenum mode, const GLsizei
|
|||
|
||||
profiler_checkpoint("quads");
|
||||
profiler_pop();
|
||||
}
|
||||
} else {
|
||||
const IndexParseFunc indexFunc = _calcParseIndexFunc(type);
|
||||
GLuint j;
|
||||
|
|
|
@ -314,7 +314,7 @@ static void _glInitializeTextureObject(TextureObject* txr, unsigned int id) {
|
|||
txr->width = txr->height = 0;
|
||||
txr->mipmap = 0;
|
||||
txr->uv_clamp = 0;
|
||||
txr->env = PVR_TXRENV_MODULATEALPHA;
|
||||
txr->env = PVR_TXRENV_MODULATE;
|
||||
txr->data = NULL;
|
||||
txr->mipmapCount = 0;
|
||||
txr->minFilter = GL_NEAREST;
|
||||
|
@ -430,7 +430,7 @@ void APIENTRY glTexEnvi(GLenum target, GLenum pname, GLint param) {
|
|||
|
||||
switch(param) {
|
||||
case GL_MODULATE:
|
||||
active->env = PVR_TXRENV_MODULATEALPHA;
|
||||
active->env = PVR_TXRENV_MODULATE;
|
||||
break;
|
||||
case GL_DECAL:
|
||||
active->env = PVR_TXRENV_DECAL;
|
||||
|
|
Loading…
Reference in New Issue
Block a user