(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_BITS 12
|
||||||
#define SUBPIXEL_ADJUST (0.5/(1<<SUBPIXEL_BITS))
|
#define SUBPIXEL_ADJUST (0.5/(1<<SUBPIXEL_BITS))
|
||||||
|
|
||||||
|
@ -150,6 +187,10 @@ static inline GLuint rglPlatformGetBitsPerPixel (GLenum internalFormat)
|
||||||
(thisContext->current)[1] = (control1); \
|
(thisContext->current)[1] = (control1); \
|
||||||
(thisContext->current) += 2;
|
(thisContext->current) += 2;
|
||||||
|
|
||||||
|
#define rglGcmSetJumpCommand(thisContext, offset) \
|
||||||
|
thisContext->current[0] = ((offset) | (0x20000000)); \
|
||||||
|
thisContext->current += 1
|
||||||
|
|
||||||
#define rglGcmSetBlendEnable(thisContext, enable) \
|
#define rglGcmSetBlendEnable(thisContext, enable) \
|
||||||
{ \
|
{ \
|
||||||
bool continue_func = true; \
|
bool continue_func = true; \
|
||||||
|
|
|
@ -562,7 +562,7 @@ void rglCreatePushBuffer(void *data)
|
||||||
memset( rglGcmCurrent, 0, 4*( 4*registerCount + 3 ) );
|
memset( rglGcmCurrent, 0, 4*( 4*registerCount + 3 ) );
|
||||||
CellGcmContextData gcmContext;
|
CellGcmContextData gcmContext;
|
||||||
gcmContext.current = (uint32_t*)rglGcmCurrent;
|
gcmContext.current = (uint32_t*)rglGcmCurrent;
|
||||||
cellGcmSetVertexProgramParameterBlockUnsafeInline(&gcmContext, parameterResource->resource, registerCount, ( float* )rglGcmCurrent );
|
rglGcmSetVertexProgramParameterBlock(&gcmContext, parameterResource->resource, registerCount, ( float* )rglGcmCurrent );
|
||||||
rglGcmCurrent = (typeof(rglGcmCurrent))gcmContext.current;
|
rglGcmCurrent = (typeof(rglGcmCurrent))gcmContext.current;
|
||||||
|
|
||||||
rtParameter->pushBufferPointer = rglGcmCurrent - 4 * registerCount;
|
rtParameter->pushBufferPointer = rglGcmCurrent - 4 * registerCount;
|
||||||
|
@ -579,7 +579,7 @@ void rglCreatePushBuffer(void *data)
|
||||||
memset( rglGcmCurrent, 0, 4*( 4*registerStride + 3 ) );
|
memset( rglGcmCurrent, 0, 4*( 4*registerStride + 3 ) );
|
||||||
CellGcmContextData gcmContext;
|
CellGcmContextData gcmContext;
|
||||||
gcmContext.current = (uint32_t*)rglGcmCurrent;
|
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;
|
rglGcmCurrent = (typeof(rglGcmCurrent))gcmContext.current;
|
||||||
*( programPushBuffer++ ) = ( unsigned int* )( rglGcmCurrent - 4 * registerStride );
|
*( 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);
|
rglGcmSetTextureBorder(thisContext, unit, texture, 0x1);
|
||||||
|
|
||||||
CellGcmContextData *gcm_context = (CellGcmContextData*)&rglGcmState_i.fifo;
|
CellGcmContextData *gcm_context = (CellGcmContextData*)&rglGcmState_i.fifo;
|
||||||
cellGcmReserveMethodSizeInline(gcm_context, 11);
|
|
||||||
uint32_t *current = gcm_context->current;
|
uint32_t *current = gcm_context->current;
|
||||||
current[0] = CELL_GCM_METHOD_HEADER_TEXTURE_OFFSET(unit, 8);
|
current[0] = CELL_GCM_METHOD_HEADER_TEXTURE_OFFSET(unit, 8);
|
||||||
current[1] = CELL_GCM_METHOD_DATA_TEXTURE_OFFSET(platformTexture->gcmTexture.offset);
|
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_FIXED2:
|
||||||
case CG_FIXED3:
|
case CG_FIXED3:
|
||||||
case CG_FIXED4:
|
case CG_FIXED4:
|
||||||
GCM_FUNC( cellGcmSetVertexProgramParameterBlock, parameterResource->resource, 1, value ); // GCM_PORT_TESTED [Cedric]
|
rglGcmSetVertexProgramParameterBlock(gCellGcmCurrentContext, parameterResource->resource, 1, value );
|
||||||
break;
|
break;
|
||||||
case CG_FLOAT4x4:
|
case CG_FLOAT4x4:
|
||||||
case CG_HALF4x4:
|
case CG_HALF4x4:
|
||||||
|
@ -1543,7 +1542,7 @@ GLAPI void APIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count)
|
||||||
v2[13] = value[7];
|
v2[13] = value[7];
|
||||||
v2[14] = value[11];
|
v2[14] = value[11];
|
||||||
v2[15] = value[15];
|
v2[15] = value[15];
|
||||||
GCM_FUNC( cellGcmSetVertexProgramParameterBlock, parameterResource->resource, 4, v2 ); // GCM_PORT_TESTED [Cedric]
|
rglGcmSetVertexProgramParameterBlock(gCellGcmCurrentContext, parameterResource->resource, 4, v2 );
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case CG_FLOAT3x3:
|
case CG_FLOAT3x3:
|
||||||
|
@ -1566,7 +1565,7 @@ GLAPI void APIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count)
|
||||||
v2[9] = value[5];
|
v2[9] = value[5];
|
||||||
v2[10] = value[8];
|
v2[10] = value[8];
|
||||||
v2[11] = 0;
|
v2[11] = 0;
|
||||||
GCM_FUNC( cellGcmSetVertexProgramParameterBlock, parameterResource->resource, 3, v2 );
|
rglGcmSetVertexProgramParameterBlock(gCellGcmCurrentContext, parameterResource->resource, 3, v2 );
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue