(RGL PS3) Reuse gcm_emit macros in more places

This commit is contained in:
twinaphex 2014-02-18 19:43:39 +01:00
parent c02888b4a5
commit 2a738677e3
2 changed files with 25 additions and 27 deletions

View File

@ -1882,8 +1882,8 @@ int32_t rglOutOfSpaceCallback (void *data, uint32_t spaceInWords)
// same position when the fifo is in GPU memory. // same position when the fifo is in GPU memory.
for ( GLuint i = 0; i < 8; i++ ) for ( GLuint i = 0; i < 8; i++ )
{ {
fifo->ctx.current[0] = 0; gcm_emit_at(fifo->ctx.current, 0, 0);
fifo->ctx.current++; gcm_finish_n_commands(fifo->ctx.current, 1);
} }
return CELL_OK; return CELL_OK;
@ -2894,8 +2894,8 @@ GLAPI void RGL_EXPORT psglSwap (void)
} }
} }
thisContext->current[0] = (((33) << (18)) | CELL_GCM_NV4097_SET_TRANSFORM_CONSTANT_LOAD); gcm_emit_method_at(thisContext->current, 0, CELL_GCM_NV4097_SET_TRANSFORM_CONSTANT_LOAD, 33);
thisContext->current[1] = 0; gcm_emit_at(thisContext->current, 1, 0);
rglGcmSetDitherEnable(thisContext, true ); rglGcmSetDitherEnable(thisContext, true );

View File

@ -1345,41 +1345,39 @@ GLAPI void APIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count)
rglGcmSetTextureBorder(thisContext, unit, texture, 0x1); rglGcmSetTextureBorder(thisContext, unit, texture, 0x1);
CellGcmContextData *gcm_context = (CellGcmContextData*)&rglGcmState_i.fifo; CellGcmContextData *gcm_context = (CellGcmContextData*)&rglGcmState_i.fifo;
uint32_t *current = gcm_context->current; gcm_emit_at(gcm_context->current, 0, CELL_GCM_METHOD_HEADER_TEXTURE_OFFSET(unit, 8));
current[0] = CELL_GCM_METHOD_HEADER_TEXTURE_OFFSET(unit, 8); gcm_emit_at(gcm_context->current, 1, CELL_GCM_METHOD_DATA_TEXTURE_OFFSET(platformTexture->gcmTexture.offset));
current[1] = CELL_GCM_METHOD_DATA_TEXTURE_OFFSET(platformTexture->gcmTexture.offset); gcm_emit_at(gcm_context->current, 2, CELL_GCM_METHOD_DATA_TEXTURE_FORMAT(platformTexture->gcmTexture.location,
current[2] = CELL_GCM_METHOD_DATA_TEXTURE_FORMAT(platformTexture->gcmTexture.location,
platformTexture->gcmTexture.cubemap, platformTexture->gcmTexture.cubemap,
platformTexture->gcmTexture.dimension, platformTexture->gcmTexture.dimension,
platformTexture->gcmTexture.format, platformTexture->gcmTexture.format,
platformTexture->gcmTexture.mipmap); platformTexture->gcmTexture.mipmap));
current[3] = CELL_GCM_METHOD_DATA_TEXTURE_ADDRESS( platformTexture->gcmMethods.address.wrapS, gcm_emit_at(gcm_context->current, 3, CELL_GCM_METHOD_DATA_TEXTURE_ADDRESS( platformTexture->gcmMethods.address.wrapS,
platformTexture->gcmMethods.address.wrapT, platformTexture->gcmMethods.address.wrapT,
platformTexture->gcmMethods.address.wrapR, platformTexture->gcmMethods.address.wrapR,
platformTexture->gcmMethods.address.unsignedRemap, platformTexture->gcmMethods.address.unsignedRemap,
platformTexture->gcmMethods.address.zfunc, platformTexture->gcmMethods.address.zfunc,
platformTexture->gcmMethods.address.gamma, platformTexture->gcmMethods.address.gamma,
0); 0));
current[4] = CELL_GCM_METHOD_DATA_TEXTURE_CONTROL0(CELL_GCM_TRUE, gcm_emit_at(gcm_context->current, 4, CELL_GCM_METHOD_DATA_TEXTURE_CONTROL0(CELL_GCM_TRUE,
platformTexture->gcmMethods.control0.minLOD, platformTexture->gcmMethods.control0.minLOD,
platformTexture->gcmMethods.control0.maxLOD, platformTexture->gcmMethods.control0.maxLOD,
platformTexture->gcmMethods.control0.maxAniso); platformTexture->gcmMethods.control0.maxAniso));
current[5] = platformTexture->gcmTexture.remap; gcm_emit_at(gcm_context->current, 5, platformTexture->gcmTexture.remap);
current[6] = CELL_GCM_METHOD_DATA_TEXTURE_FILTER( gcm_emit_at(gcm_context->current, 6, CELL_GCM_METHOD_DATA_TEXTURE_FILTER(
(platformTexture->gcmMethods.filter.bias & 0x1fff), (platformTexture->gcmMethods.filter.bias & 0x1fff),
platformTexture->gcmMethods.filter.min, platformTexture->gcmMethods.filter.min,
platformTexture->gcmMethods.filter.mag, platformTexture->gcmMethods.filter.mag,
platformTexture->gcmMethods.filter.conv); platformTexture->gcmMethods.filter.conv));
current[7] = CELL_GCM_METHOD_DATA_TEXTURE_IMAGE_RECT( gcm_emit_at(gcm_context->current, 7, CELL_GCM_METHOD_DATA_TEXTURE_IMAGE_RECT(
platformTexture->gcmTexture.height, platformTexture->gcmTexture.height,
platformTexture->gcmTexture.width); platformTexture->gcmTexture.width));
current[8] = CELL_GCM_METHOD_DATA_TEXTURE_BORDER_COLOR( gcm_emit_at(gcm_context->current, 8, CELL_GCM_METHOD_DATA_TEXTURE_BORDER_COLOR(
platformTexture->gcmMethods.borderColor); platformTexture->gcmMethods.borderColor));
current[9] = CELL_GCM_METHOD_HEADER_TEXTURE_CONTROL3(unit,1); gcm_emit_at(gcm_context->current, 9, CELL_GCM_METHOD_HEADER_TEXTURE_CONTROL3(unit,1));
current[10] = CELL_GCM_METHOD_DATA_TEXTURE_CONTROL3( gcm_emit_at(gcm_context->current, 10, CELL_GCM_METHOD_DATA_TEXTURE_CONTROL3(platformTexture->gcmTexture.pitch,
platformTexture->gcmTexture.pitch, platformTexture->gcmTexture.depth));
platformTexture->gcmTexture.depth); gcm_finish_n_commands(gcm_context->current, 11);
gcm_context->current = &current[11];
} }
else else
{ {