diff --git a/ps3/rgl/src/ps3/rgl_ps3.cpp b/ps3/rgl/src/ps3/rgl_ps3.cpp index 5271ecd0b1..e3a88e0bea 100644 --- a/ps3/rgl/src/ps3/rgl_ps3.cpp +++ b/ps3/rgl/src/ps3/rgl_ps3.cpp @@ -3126,8 +3126,15 @@ GLAPI void RGL_EXPORT psglSwap (void) } rglGcmDriver *driver = (rglGcmDriver*)_CurrentDevice->rasterDriver; - const char * __restrict v = driver->sharedVPConstants; - GCM_FUNC( cellGcmSetVertexProgramParameterBlock, 0, 8, ( float* )v ); // GCM_PORT_UNTESTED [KHOFF] + float * __restrict v = (float*)driver->sharedVPConstants; + + thisContext->current[0] = (((33) << (18)) | ((0x00001efc))); + thisContext->current[1] = 0; + + __builtin_memcpy(&thisContext->current[2], v, sizeof(float)*16); + __builtin_memcpy(&thisContext->current[18], &v[16], sizeof(float)*16); + thisContext->current += 34; + v += 32; 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 d9d4826f20..4d3ce113e9 100644 --- a/ps3/rgl/src/ps3/rgl_ps3_raster.cpp +++ b/ps3/rgl/src/ps3/rgl_ps3_raster.cpp @@ -168,6 +168,7 @@ template static void setVectorTypeSharedfpIndexArray (void *data, cons } template static void setVectorTypeSharedvpIndex (void *data, const void* __restrict v, const int /*index*/ ) { + CellGcmContextData *thisContext = (CellGcmContextData*)gCellGcmCurrentContext; CgRuntimeParameter *ptr = (CgRuntimeParameter*)data; const float * __restrict f = ( const float * __restrict )v; const CgParameterResource *parameterResource = rglGetParameterResource( ptr->program, ptr->parameterEntry ); @@ -182,11 +183,18 @@ template static void setVectorTypeSharedvpIndex (void *data, const voi memcpy(driver->sharedVPConstants + resource * 4 * sizeof( float ), dst, 4 * sizeof(float)); - GCM_FUNC( cellGcmSetVertexProgramParameterBlock, resource, 1, dst ); + thisContext->current[0] = (((5) << (18)) | ((0x00001efc))); + thisContext->current[1] = resource; + thisContext->current += 2; + + __builtin_memcpy(thisContext->current, dst, sizeof(float)*4); + thisContext->current += 4; + dst += 4; } template static void setVectorTypeSharedvpIndexArray (void *data, const void* __restrict v, const int index ) { + CellGcmContextData *thisContext = (CellGcmContextData*)gCellGcmCurrentContext; CgRuntimeParameter *ptr = (CgRuntimeParameter*)data; const float * __restrict f = ( const float * __restrict )v; const CgParameterResource *parameterResource = rglGetParameterResource( ptr->program, ptr->parameterEntry ); @@ -201,7 +209,13 @@ template static void setVectorTypeSharedvpIndexArray (void *data, cons memcpy(driver->sharedVPConstants + resource * 4 * sizeof( float ), dst, 4 * sizeof(float)); - GCM_FUNC( cellGcmSetVertexProgramParameterBlock, resource, 1, dst ); + thisContext->current[0] = (((5) << (18)) | ((0x00001efc))); + thisContext->current[1] = resource; + thisContext->current += 2; + + __builtin_memcpy(thisContext->current, dst, sizeof(float)*4); + thisContext->current += 4; + dst += 4; }