(RGL PS3) Replace more GCM_FUNC instances

This commit is contained in:
twinaphex 2013-04-15 12:07:49 +02:00
parent e08339775f
commit 8049687c2d
3 changed files with 39 additions and 8 deletions

View File

@ -26,6 +26,37 @@ static inline GLuint rglPlatformGetBitsPerPixel (GLenum internalFormat)
#define SUBPIXEL_BITS 12
#define SUBPIXEL_ADJUST (0.5/(1<<SUBPIXEL_BITS))
#define rglGcmSetVertexData4f(thisContext, index, v) \
thisContext->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 */ \

View File

@ -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 );

View File

@ -91,7 +91,8 @@ template<int SIZE> 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<SIZE;j++)
@ -351,7 +352,7 @@ template <int ROWS, int COLS, int ORDER> 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<ROWS;j++)
@ -401,9 +402,8 @@ template <int ROWS, int COLS, int ORDER> 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;