From 8049687c2d27f0c3128812001295673d385888ca Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 15 Apr 2013 12:07:49 +0200 Subject: [PATCH] (RGL PS3) Replace more GCM_FUNC instances --- ps3/rgl/src/ps3/include/rgl-inline.h | 31 ++++++++++++++++++++++++++++ ps3/rgl/src/ps3/rgl_ps3.cpp | 2 +- ps3/rgl/src/ps3/rgl_ps3_raster.cpp | 14 ++++++------- 3 files changed, 39 insertions(+), 8 deletions(-) diff --git a/ps3/rgl/src/ps3/include/rgl-inline.h b/ps3/rgl/src/ps3/include/rgl-inline.h index 00bf8c20d7..110fbdc9e5 100644 --- a/ps3/rgl/src/ps3/include/rgl-inline.h +++ b/ps3/rgl/src/ps3/include/rgl-inline.h @@ -26,6 +26,37 @@ static inline GLuint rglPlatformGetBitsPerPixel (GLenum internalFormat) #define SUBPIXEL_BITS 12 #define SUBPIXEL_ADJUST (0.5/(1<current[0] = (((4) << (18)) | ((0x00001c00) + (index) * 16)); \ + __builtin_memcpy(&thisContext->current[1], v, sizeof(float)*4); \ + thisContext->current += 5; + +#define rglGcmSetVertexDataArray(thisContext, index, frequency, stride, size, type, location, offset) \ + (thisContext->current)[0] = (((1) << (18)) | ((0x00001740) + ((index)) * 4)); \ + (thisContext->current)[1] = ((((frequency)) << 16) | (((stride)) << 8) | (((size)) << 4) | ((type))); \ + (thisContext->current) += 2; \ + (thisContext->current)[0] = (((1) << (18)) | ((0x00001680) + ((index)) * 4)); \ + (thisContext->current)[1] = ((((location)) << 31) | (offset)); \ + (thisContext->current) += 2; + +#define rglGcmSetInlineTransferPointer(thisContext, offset, count, pointer) \ + (thisContext->current)[0] = (((1) << (18)) | ((0x0000630C))); \ + (thisContext->current)[1] = (offset & ~63); \ + (thisContext->current) += 2; \ + (thisContext->current)[0] = (((2) << (18)) | ((0x00006300))); \ + (thisContext->current)[1] = (CELL_GCM_TRANSFER_SURFACE_FORMAT_Y32); \ + (thisContext->current)[2] = ((0x1000) | ((0x1000) << 16)); \ + (thisContext->current) += 3; \ + (thisContext->current)[0] = (((3) << (18)) | ((0x0000A304))); \ + (thisContext->current)[1] = (((0) << 16) | ((offset & 63) >> 2)); \ + (thisContext->current)[2] = (((1) << 16) | (count)); \ + (thisContext->current)[3] = (((1) << 16) | (count)); \ + (thisContext->current) += 4; \ + thisContext->current[0] = ((((count + 1) & ~1) << (18)) | ((0x0000A400))); \ + thisContext->current += 1; \ + pointer = thisContext->current; \ + thisContext->current += ((count + 1) & ~1); + #define rglGcmSetWriteBackEndLabel(thisContext, index, value) \ (thisContext->current)[0] = (((1) << (18)) | ((0x00001d6c))); \ (thisContext->current)[1] = 0x10 * index; /* offset */ \ diff --git a/ps3/rgl/src/ps3/rgl_ps3.cpp b/ps3/rgl/src/ps3/rgl_ps3.cpp index 5f745de838..0b3f59883e 100644 --- a/ps3/rgl/src/ps3/rgl_ps3.cpp +++ b/ps3/rgl/src/ps3/rgl_ps3.cpp @@ -1713,7 +1713,7 @@ void rglGcmSetOpenGLState (void *data) for ( i = 0; i < RGLGCM_ATTRIB_COUNT; i++ ) { - GCM_FUNC( cellGcmSetVertexDataArray, i, 0, 0, 0, CELL_GCM_VERTEX_F, CELL_GCM_LOCATION_LOCAL, 0); + rglGcmSetVertexDataArray(thisContext, i, 0, 0, 0, CELL_GCM_VERTEX_F, CELL_GCM_LOCATION_LOCAL, 0); } rglGcmSetDitherEnable(thisContext, RGLGCM_TRUE ); diff --git a/ps3/rgl/src/ps3/rgl_ps3_raster.cpp b/ps3/rgl/src/ps3/rgl_ps3_raster.cpp index 1fe97022e9..647fea4835 100644 --- a/ps3/rgl/src/ps3/rgl_ps3_raster.cpp +++ b/ps3/rgl/src/ps3/rgl_ps3_raster.cpp @@ -91,7 +91,8 @@ template inline static void swapandsetfp( int ucodeSize, unsigned int { void *pointer=NULL; const int paddedSIZE = (SIZE + 1) & ~1; // even width only - GCM_FUNC( cellGcmSetInlineTransferPointer, gmmIdToOffset( loadProgramId ) + loadProgramOffset + *( ec++ ), paddedSIZE, &pointer); + uint32_t var = gmmIdToOffset( loadProgramId ) + loadProgramOffset + *( ec++ ); + rglGcmSetInlineTransferPointer(thisContext, var, paddedSIZE, pointer); float *fp = (float*)pointer; float *src = (float*)v; for (uint32_t j=0; j static void setMatrixSharedfpIndex (voi } rglGcmSetTransferLocation(thisContext, CELL_GCM_LOCATION_LOCAL ); void *pointer=NULL; - GCM_FUNC( cellGcmSetInlineTransferPointer, dstVidOffset, 4*ROWS, &pointer); + rglGcmSetInlineTransferPointer(thisContext, dstVidOffset, (4*ROWS), pointer); float *fp = (float*)pointer; float *src = (float*)tmp; for (uint32_t j=0; j static void setMatrixSharedfpIndexArray rglGcmSetTransferLocation(thisContext, CELL_GCM_LOCATION_LOCAL ); - void *pointer=NULL; - GCM_FUNC( cellGcmSetInlineTransferPointer, dstVidOffset, 4*ROWS, &pointer); + rglGcmSetInlineTransferPointer(thisContext, dstVidOffset, (4*ROWS), pointer); float *fp = (float*)pointer; const float *src = (const float*)tmp; for (uint32_t j=0; j<4*ROWS;j++) @@ -2084,13 +2084,13 @@ beginning: break; } - GCM_FUNC( cellGcmSetVertexDataArray, i, freq, stride, size, gcmType, CELL_GCM_LOCATION_LOCAL, gpuOffset ); + rglGcmSetVertexDataArray(thisContext, i, freq, stride, size, gcmType, CELL_GCM_LOCATION_LOCAL, gpuOffset ); } else { // attribute is disabled - GCM_FUNC( cellGcmSetVertexDataArray, i, 0, 0, 0, CELL_GCM_VERTEX_F, CELL_GCM_LOCATION_LOCAL, 0); - GCM_FUNC( cellGcmSetVertexData4f, i, attrib->value ); + rglGcmSetVertexDataArray(thisContext, i, 0, 0, 0, CELL_GCM_VERTEX_F, CELL_GCM_LOCATION_LOCAL, 0); + rglGcmSetVertexData4f(thisContext, i, attrib->value ); } } driver->invalidateVertexCache = GL_TRUE;