mirror of
https://github.com/CTCaer/RetroArch.git
synced 2025-02-28 23:55:54 +00:00
(RGL PS3) No more GCM_FUNC calls inside rgl_ps3_raster.cpp
This commit is contained in:
parent
edb4ec6509
commit
2ee221e7c6
@ -23,6 +23,43 @@ static inline GLuint rglPlatformGetBitsPerPixel (GLenum internalFormat)
|
||||
}
|
||||
}
|
||||
|
||||
static inline void rglGcmSetVertexProgramParameterBlock(struct CellGcmContextData *thisContext, uint32_t baseConst,
|
||||
uint32_t constCount, const float * __restrict value)
|
||||
{
|
||||
uint32_t blockCount, blockRemain, i;
|
||||
|
||||
blockCount = (constCount * 4) >> 5;
|
||||
blockRemain = (constCount * 4) & 0x1f;
|
||||
|
||||
for (i=0; i < blockCount; i++)
|
||||
{
|
||||
uint32_t loadAt = baseConst + i * 8;
|
||||
|
||||
thisContext->current[0] = (((33) << (18)) | ((0x00001efc)));
|
||||
thisContext->current[1] = (loadAt);
|
||||
|
||||
memcpy(&thisContext->current[2], value, 16 * sizeof(float));
|
||||
memcpy(&thisContext->current[18], &value[16], 16 * sizeof(float));
|
||||
thisContext->current += 34;
|
||||
value += 32;
|
||||
}
|
||||
|
||||
if(blockRemain)
|
||||
{
|
||||
thisContext->current[0] = (((blockRemain+1) << (18)) | ((0x00001efc)));
|
||||
thisContext->current[1] = (baseConst + blockCount * 8);
|
||||
thisContext->current += 2;
|
||||
|
||||
blockRemain >>= 2;
|
||||
for (i=0; i < blockRemain; ++i)
|
||||
{
|
||||
memcpy(thisContext->current, value, 4 * sizeof(float));
|
||||
thisContext->current += 4;
|
||||
value += 4;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#define SUBPIXEL_BITS 12
|
||||
#define SUBPIXEL_ADJUST (0.5/(1<<SUBPIXEL_BITS))
|
||||
|
||||
@ -150,6 +187,10 @@ static inline GLuint rglPlatformGetBitsPerPixel (GLenum internalFormat)
|
||||
(thisContext->current)[1] = (control1); \
|
||||
(thisContext->current) += 2;
|
||||
|
||||
#define rglGcmSetJumpCommand(thisContext, offset) \
|
||||
thisContext->current[0] = ((offset) | (0x20000000)); \
|
||||
thisContext->current += 1
|
||||
|
||||
#define rglGcmSetBlendEnable(thisContext, enable) \
|
||||
{ \
|
||||
bool continue_func = true; \
|
||||
|
@ -562,7 +562,7 @@ void rglCreatePushBuffer(void *data)
|
||||
memset( rglGcmCurrent, 0, 4*( 4*registerCount + 3 ) );
|
||||
CellGcmContextData gcmContext;
|
||||
gcmContext.current = (uint32_t*)rglGcmCurrent;
|
||||
cellGcmSetVertexProgramParameterBlockUnsafeInline(&gcmContext, parameterResource->resource, registerCount, ( float* )rglGcmCurrent );
|
||||
rglGcmSetVertexProgramParameterBlock(&gcmContext, parameterResource->resource, registerCount, ( float* )rglGcmCurrent );
|
||||
rglGcmCurrent = (typeof(rglGcmCurrent))gcmContext.current;
|
||||
|
||||
rtParameter->pushBufferPointer = rglGcmCurrent - 4 * registerCount;
|
||||
@ -579,7 +579,7 @@ void rglCreatePushBuffer(void *data)
|
||||
memset( rglGcmCurrent, 0, 4*( 4*registerStride + 3 ) );
|
||||
CellGcmContextData gcmContext;
|
||||
gcmContext.current = (uint32_t*)rglGcmCurrent;
|
||||
cellGcmSetVertexProgramParameterBlockUnsafeInline(&gcmContext, program->resources[resourceIndex], registerStride, ( float* )rglGcmCurrent );
|
||||
rglGcmSetVertexProgramParameterBlock(&gcmContext, program->resources[resourceIndex], registerStride, ( float* )rglGcmCurrent );
|
||||
rglGcmCurrent = (typeof(rglGcmCurrent))gcmContext.current;
|
||||
*( programPushBuffer++ ) = ( unsigned int* )( rglGcmCurrent - 4 * registerStride );
|
||||
}
|
||||
@ -1379,7 +1379,6 @@ GLAPI void APIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count)
|
||||
rglGcmSetTextureBorder(thisContext, unit, texture, 0x1);
|
||||
|
||||
CellGcmContextData *gcm_context = (CellGcmContextData*)&rglGcmState_i.fifo;
|
||||
cellGcmReserveMethodSizeInline(gcm_context, 11);
|
||||
uint32_t *current = gcm_context->current;
|
||||
current[0] = CELL_GCM_METHOD_HEADER_TEXTURE_OFFSET(unit, 8);
|
||||
current[1] = CELL_GCM_METHOD_DATA_TEXTURE_OFFSET(platformTexture->gcmTexture.offset);
|
||||
@ -1517,7 +1516,7 @@ GLAPI void APIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count)
|
||||
case CG_FIXED2:
|
||||
case CG_FIXED3:
|
||||
case CG_FIXED4:
|
||||
GCM_FUNC( cellGcmSetVertexProgramParameterBlock, parameterResource->resource, 1, value ); // GCM_PORT_TESTED [Cedric]
|
||||
rglGcmSetVertexProgramParameterBlock(gCellGcmCurrentContext, parameterResource->resource, 1, value );
|
||||
break;
|
||||
case CG_FLOAT4x4:
|
||||
case CG_HALF4x4:
|
||||
@ -1543,7 +1542,7 @@ GLAPI void APIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count)
|
||||
v2[13] = value[7];
|
||||
v2[14] = value[11];
|
||||
v2[15] = value[15];
|
||||
GCM_FUNC( cellGcmSetVertexProgramParameterBlock, parameterResource->resource, 4, v2 ); // GCM_PORT_TESTED [Cedric]
|
||||
rglGcmSetVertexProgramParameterBlock(gCellGcmCurrentContext, parameterResource->resource, 4, v2 );
|
||||
}
|
||||
break;
|
||||
case CG_FLOAT3x3:
|
||||
@ -1566,7 +1565,7 @@ GLAPI void APIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count)
|
||||
v2[9] = value[5];
|
||||
v2[10] = value[8];
|
||||
v2[11] = 0;
|
||||
GCM_FUNC( cellGcmSetVertexProgramParameterBlock, parameterResource->resource, 3, v2 );
|
||||
rglGcmSetVertexProgramParameterBlock(gCellGcmCurrentContext, parameterResource->resource, 3, v2 );
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user