mirror of
https://github.com/libretro/RetroArch
synced 2025-02-20 15:40:44 +00:00
(RGL PS3) Disable RGB remap - was never used up to now - set gamma to 0 -
call GCM functions directly - some other ghetto inlining tweaks
This commit is contained in:
parent
e6bc99f929
commit
ea916d95d5
@ -196,224 +196,6 @@ static inline GLuint rglGcmMapWrapMode( GLuint mode )
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void rglGcmMapTextureFormat( GLuint internalFormat, uint8_t *gcmFormat, uint32_t *remap )
|
||||
{
|
||||
*gcmFormat = 0;
|
||||
|
||||
switch (internalFormat)
|
||||
{
|
||||
case RGLGCM_ALPHA8: // in_rgba = xxAx, out_rgba = 000A
|
||||
{
|
||||
*gcmFormat = CELL_GCM_TEXTURE_B8;
|
||||
*remap = CELL_GCM_REMAP_MODE(
|
||||
CELL_GCM_TEXTURE_REMAP_ORDER_XYXY,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_B,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_R,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_B,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_B,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_ZERO,
|
||||
CELL_GCM_TEXTURE_REMAP_ZERO,
|
||||
CELL_GCM_TEXTURE_REMAP_ZERO );
|
||||
|
||||
}
|
||||
break;
|
||||
case RGLGCM_ALPHA16: // in_rgba = xAAx, out_rgba = 000A
|
||||
{
|
||||
*gcmFormat = CELL_GCM_TEXTURE_X16;
|
||||
*remap = CELL_GCM_REMAP_MODE(
|
||||
CELL_GCM_TEXTURE_REMAP_ORDER_XYXY,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_G,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_B,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_G,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_B,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_ZERO,
|
||||
CELL_GCM_TEXTURE_REMAP_ZERO,
|
||||
CELL_GCM_TEXTURE_REMAP_ZERO );
|
||||
|
||||
}
|
||||
break;
|
||||
case RGLGCM_HILO8: // in_rgba = HLxx, out_rgba = HL11
|
||||
{
|
||||
*gcmFormat = CELL_GCM_TEXTURE_COMPRESSED_HILO8;
|
||||
*remap = CELL_GCM_REMAP_MODE(
|
||||
CELL_GCM_TEXTURE_REMAP_ORDER_XYXY,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_A,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_R,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_G,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_B,
|
||||
CELL_GCM_TEXTURE_REMAP_ONE,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_ONE );
|
||||
|
||||
}
|
||||
break;
|
||||
case RGLGCM_HILO16: // in_rgba = HLxx, out_rgba = HL11
|
||||
{
|
||||
*gcmFormat = CELL_GCM_TEXTURE_Y16_X16;
|
||||
*remap = CELL_GCM_REMAP_MODE(
|
||||
CELL_GCM_TEXTURE_REMAP_ORDER_XYXY,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_A,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_R,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_G,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_B,
|
||||
CELL_GCM_TEXTURE_REMAP_ONE,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_ONE );
|
||||
|
||||
}
|
||||
break;
|
||||
case RGLGCM_ARGB8: // in_rgba = RGBA, out_rgba = RGBA
|
||||
{
|
||||
*gcmFormat = CELL_GCM_TEXTURE_A8R8G8B8;
|
||||
*remap = CELL_GCM_REMAP_MODE(
|
||||
CELL_GCM_TEXTURE_REMAP_ORDER_XYXY,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_A,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_R,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_G,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_B,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP );
|
||||
|
||||
}
|
||||
break;
|
||||
case RGLGCM_BGRA8: // in_rgba = GRAB, out_rgba = RGBA ** NEEDS TO BE TESTED
|
||||
{
|
||||
*gcmFormat = CELL_GCM_TEXTURE_A8R8G8B8;
|
||||
*remap = CELL_GCM_REMAP_MODE(
|
||||
CELL_GCM_TEXTURE_REMAP_ORDER_XYXY,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_B,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_G,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_R,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_A,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP );
|
||||
|
||||
}
|
||||
break;
|
||||
case RGLGCM_RGBA8: // in_rgba = GBAR, out_rgba = RGBA ** NEEDS TO BE TESTED
|
||||
{
|
||||
*gcmFormat = CELL_GCM_TEXTURE_A8R8G8B8;
|
||||
*remap = CELL_GCM_REMAP_MODE(
|
||||
CELL_GCM_TEXTURE_REMAP_ORDER_XYXY,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_B,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_A,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_R,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_G,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP );
|
||||
}
|
||||
break;
|
||||
case RGLGCM_ABGR8: // in_rgba = BGRA, out_rgba = RGBA ** NEEDS TO BE TESTED
|
||||
{
|
||||
*gcmFormat = CELL_GCM_TEXTURE_A8R8G8B8;
|
||||
*remap = CELL_GCM_REMAP_MODE(
|
||||
CELL_GCM_TEXTURE_REMAP_ORDER_XYXY,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_A,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_B,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_G,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_R,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP );
|
||||
|
||||
}
|
||||
break;
|
||||
case RGLGCM_RGBX8: // in_rgba = BGRA, out_rgba = RGB1 ** NEEDS TO BE TESTED
|
||||
{
|
||||
*gcmFormat = CELL_GCM_TEXTURE_A8R8G8B8;
|
||||
*remap = CELL_GCM_REMAP_MODE(
|
||||
CELL_GCM_TEXTURE_REMAP_ORDER_XYXY,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_B,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_A,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_R,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_G,
|
||||
CELL_GCM_TEXTURE_REMAP_ONE,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP );
|
||||
|
||||
}
|
||||
break;
|
||||
case RGLGCM_XBGR8: // in_rgba = BGRA, out_rgba = RGB1 ** NEEDS TO BE TESTED
|
||||
{
|
||||
*gcmFormat = CELL_GCM_TEXTURE_A8R8G8B8;
|
||||
*remap = CELL_GCM_REMAP_MODE(
|
||||
CELL_GCM_TEXTURE_REMAP_ORDER_XYXY,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_A,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_B,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_G,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_R,
|
||||
CELL_GCM_TEXTURE_REMAP_ONE,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP );
|
||||
|
||||
}
|
||||
break;
|
||||
case RGLGCM_FLOAT_R32: // in_rgba = Rxxx, out_rgba = R001
|
||||
{
|
||||
*gcmFormat = CELL_GCM_TEXTURE_X32_FLOAT;
|
||||
*remap = CELL_GCM_REMAP_MODE(
|
||||
CELL_GCM_TEXTURE_REMAP_ORDER_XYXY,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_A,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_R,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_G,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_B,
|
||||
CELL_GCM_TEXTURE_REMAP_ONE,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_ZERO,
|
||||
CELL_GCM_TEXTURE_REMAP_ZERO );
|
||||
|
||||
}
|
||||
break;
|
||||
case RGLGCM_RGB5_A1_SCE: // in_rgba = RGBA, out_rgba = RGBA
|
||||
{
|
||||
*gcmFormat = CELL_GCM_TEXTURE_A1R5G5B5;
|
||||
*remap = CELL_GCM_REMAP_MODE(
|
||||
CELL_GCM_TEXTURE_REMAP_ORDER_XXXY,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_A,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_R,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_G,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_B,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP );
|
||||
|
||||
}
|
||||
break;
|
||||
case RGLGCM_RGB565_SCE: // in_rgba = RGBA, out_rgba = RGBA
|
||||
{
|
||||
*gcmFormat = CELL_GCM_TEXTURE_R5G6B5;
|
||||
*remap = CELL_GCM_REMAP_MODE(
|
||||
CELL_GCM_TEXTURE_REMAP_ORDER_XXXY,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_A,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_R,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_G,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_B,
|
||||
CELL_GCM_TEXTURE_REMAP_ONE,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP );
|
||||
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Fast conversion for values between 0.0 and 65535.0
|
||||
static inline GLuint RGLGCM_QUICK_FLOAT2UINT (const GLfloat f)
|
||||
{
|
||||
@ -461,99 +243,6 @@ static inline void rglGcmUtilWaitForIdle (void)
|
||||
rglGcmState_i.labelValue++;
|
||||
}
|
||||
|
||||
// Sets the source and destination factor used for blending.
|
||||
static inline void rglGcmFifoGlBlendFunc( rglGcmEnum sf, rglGcmEnum df, rglGcmEnum sfAlpha, rglGcmEnum dfAlpha )
|
||||
{
|
||||
// syntax check
|
||||
switch ( sf )
|
||||
{
|
||||
case RGLGCM_ZERO:
|
||||
case RGLGCM_ONE:
|
||||
case RGLGCM_SRC_COLOR:
|
||||
case RGLGCM_ONE_MINUS_SRC_COLOR:
|
||||
case RGLGCM_SRC_ALPHA:
|
||||
case RGLGCM_ONE_MINUS_SRC_ALPHA:
|
||||
case RGLGCM_DST_ALPHA:
|
||||
case RGLGCM_ONE_MINUS_DST_ALPHA:
|
||||
case RGLGCM_DST_COLOR:
|
||||
case RGLGCM_ONE_MINUS_DST_COLOR:
|
||||
case RGLGCM_SRC_ALPHA_SATURATE:
|
||||
case RGLGCM_CONSTANT_COLOR:
|
||||
case RGLGCM_ONE_MINUS_CONSTANT_COLOR:
|
||||
case RGLGCM_CONSTANT_ALPHA:
|
||||
case RGLGCM_ONE_MINUS_CONSTANT_ALPHA:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
switch ( sfAlpha )
|
||||
{
|
||||
case RGLGCM_ZERO:
|
||||
case RGLGCM_ONE:
|
||||
case RGLGCM_SRC_COLOR:
|
||||
case RGLGCM_ONE_MINUS_SRC_COLOR:
|
||||
case RGLGCM_SRC_ALPHA:
|
||||
case RGLGCM_ONE_MINUS_SRC_ALPHA:
|
||||
case RGLGCM_DST_ALPHA:
|
||||
case RGLGCM_ONE_MINUS_DST_ALPHA:
|
||||
case RGLGCM_DST_COLOR:
|
||||
case RGLGCM_ONE_MINUS_DST_COLOR:
|
||||
case RGLGCM_SRC_ALPHA_SATURATE:
|
||||
case RGLGCM_CONSTANT_COLOR:
|
||||
case RGLGCM_ONE_MINUS_CONSTANT_COLOR:
|
||||
case RGLGCM_CONSTANT_ALPHA:
|
||||
case RGLGCM_ONE_MINUS_CONSTANT_ALPHA:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
switch ( df )
|
||||
{
|
||||
case RGLGCM_ZERO:
|
||||
case RGLGCM_ONE:
|
||||
case RGLGCM_SRC_COLOR:
|
||||
case RGLGCM_ONE_MINUS_SRC_COLOR:
|
||||
case RGLGCM_SRC_ALPHA:
|
||||
case RGLGCM_ONE_MINUS_SRC_ALPHA:
|
||||
case RGLGCM_DST_ALPHA:
|
||||
case RGLGCM_ONE_MINUS_DST_ALPHA:
|
||||
case RGLGCM_DST_COLOR:
|
||||
case RGLGCM_ONE_MINUS_DST_COLOR:
|
||||
case RGLGCM_SRC_ALPHA_SATURATE:
|
||||
case RGLGCM_CONSTANT_COLOR:
|
||||
case RGLGCM_ONE_MINUS_CONSTANT_COLOR:
|
||||
case RGLGCM_CONSTANT_ALPHA:
|
||||
case RGLGCM_ONE_MINUS_CONSTANT_ALPHA:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
switch ( dfAlpha )
|
||||
{
|
||||
case RGLGCM_ZERO:
|
||||
case RGLGCM_ONE:
|
||||
case RGLGCM_SRC_COLOR:
|
||||
case RGLGCM_ONE_MINUS_SRC_COLOR:
|
||||
case RGLGCM_SRC_ALPHA:
|
||||
case RGLGCM_ONE_MINUS_SRC_ALPHA:
|
||||
case RGLGCM_DST_ALPHA:
|
||||
case RGLGCM_ONE_MINUS_DST_ALPHA:
|
||||
case RGLGCM_DST_COLOR:
|
||||
case RGLGCM_ONE_MINUS_DST_COLOR:
|
||||
case RGLGCM_SRC_ALPHA_SATURATE:
|
||||
case RGLGCM_CONSTANT_COLOR:
|
||||
case RGLGCM_ONE_MINUS_CONSTANT_COLOR:
|
||||
case RGLGCM_CONSTANT_ALPHA:
|
||||
case RGLGCM_ONE_MINUS_CONSTANT_ALPHA:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
GCM_FUNC( cellGcmSetBlendFunc, sf, df, sfAlpha, dfAlpha );
|
||||
}
|
||||
|
||||
// Prints out an int in hexedecimal and binary, broken into bytes.
|
||||
// Can be used for printing out macro and constant values.
|
||||
// example: rglPrintIt( RGLGCM_3DCONST(SET_SURFACE_FORMAT, COLOR, LE_A8R8G8B8) );
|
||||
@ -599,71 +288,6 @@ static inline void rglGcmFifoGlIncFenceRef (GLuint *ref)
|
||||
*ref = rglGcmFifoPutReference( fifo );
|
||||
}
|
||||
|
||||
// Flush the current FIFO.
|
||||
static inline void rglGcmFifoGlFlush (void)
|
||||
{
|
||||
GCM_FUNC_NO_ARGS( cellGcmSetInvalidateVertexCache );
|
||||
rglGcmFifoFlush( &rglGcmState_i.fifo );
|
||||
}
|
||||
|
||||
// Set blending constant, used for certain blending modes.
|
||||
static inline void rglGcmFifoGlBlendColor( GLfloat r, GLfloat g, GLfloat b, GLfloat a )
|
||||
{
|
||||
rglGcmBlendState *blend = &rglGcmState_i.state.blend;
|
||||
GLuint hwColor;
|
||||
|
||||
// syntax check
|
||||
blend->r = r;
|
||||
blend->g = g;
|
||||
blend->b = b;
|
||||
blend->a = a;
|
||||
|
||||
// program hw
|
||||
switch ( rglGcmState_i.renderTarget.colorFormat )
|
||||
{
|
||||
case RGLGCM_ARGB8:
|
||||
RGLGCM_CALC_COLOR_LE_ARGB8( &hwColor, r, g, b, a );
|
||||
GCM_FUNC( cellGcmSetBlendColor, hwColor, hwColor );
|
||||
break;
|
||||
case RGLGCM_NONE:
|
||||
case RGLGCM_FLOAT_R32:
|
||||
// no native support support
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Set the current blend equation.
|
||||
static inline void rglGcmFifoGlBlendEquation( rglGcmEnum mode, rglGcmEnum modeAlpha )
|
||||
{
|
||||
// syntax check
|
||||
switch ( mode )
|
||||
{
|
||||
case RGLGCM_FUNC_ADD:
|
||||
case RGLGCM_MIN:
|
||||
case RGLGCM_MAX:
|
||||
case RGLGCM_FUNC_SUBTRACT:
|
||||
case RGLGCM_FUNC_REVERSE_SUBTRACT:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
switch ( modeAlpha )
|
||||
{
|
||||
case RGLGCM_FUNC_ADD:
|
||||
case RGLGCM_MIN:
|
||||
case RGLGCM_MAX:
|
||||
case RGLGCM_FUNC_SUBTRACT:
|
||||
case RGLGCM_FUNC_REVERSE_SUBTRACT:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
GCM_FUNC( cellGcmSetBlendEquation, mode, modeAlpha );
|
||||
}
|
||||
|
||||
static inline void rglGcmFifoGlVertexAttribPointer
|
||||
(
|
||||
GLuint index,
|
||||
@ -729,44 +353,6 @@ static inline void rglGcmFifoGlVertexAttribPointer
|
||||
GCM_FUNC( cellGcmSetVertexDataArray, index, frequency, stride, size, gcmType, CELL_GCM_LOCATION_LOCAL, offset );
|
||||
}
|
||||
|
||||
static inline void rglGcmFifoGlEnable( rglGcmEnum cap )
|
||||
{
|
||||
switch (cap)
|
||||
{
|
||||
case RGLGCM_BLEND:
|
||||
GCM_FUNC( cellGcmSetBlendEnable, RGLGCM_TRUE );
|
||||
GCM_FUNC( cellGcmSetBlendEnableMrt, RGLGCM_TRUE, RGLGCM_TRUE, RGLGCM_TRUE );
|
||||
break;
|
||||
case RGLGCM_DITHER:
|
||||
GCM_FUNC( cellGcmSetDitherEnable, RGLGCM_TRUE );
|
||||
break;
|
||||
case RGLGCM_PSHADER_SRGB_REMAPPING:
|
||||
GCM_FUNC( cellGcmSetFragmentProgramGammaEnable, RGLGCM_TRUE );
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static inline void rglGcmFifoGlDisable( rglGcmEnum cap )
|
||||
{
|
||||
switch (cap)
|
||||
{
|
||||
case RGLGCM_BLEND:
|
||||
GCM_FUNC( cellGcmSetBlendEnable, RGLGCM_FALSE );
|
||||
GCM_FUNC( cellGcmSetBlendEnableMrt, RGLGCM_FALSE, RGLGCM_FALSE, RGLGCM_FALSE );
|
||||
break;
|
||||
case RGLGCM_DITHER:
|
||||
GCM_FUNC( cellGcmSetDitherEnable, RGLGCM_FALSE );
|
||||
break;
|
||||
case RGLGCM_PSHADER_SRGB_REMAPPING:
|
||||
GCM_FUNC( cellGcmSetFragmentProgramGammaEnable, RGLGCM_FALSE );
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Look up the memory location of a buffer object (VBO, PBO)
|
||||
static inline GLuint rglGcmGetBufferObjectOrigin (GLuint buffer)
|
||||
{
|
||||
|
@ -1570,19 +1570,20 @@ void rglGcmSetOpenGLState (void *data)
|
||||
GLuint i;
|
||||
|
||||
// initialize the default OpenGL state
|
||||
rglGcmFifoGlBlendColor( 0.0f, 0.0f, 0.0f, 0.0f );
|
||||
rglGcmFifoGlBlendEquation( RGLGCM_FUNC_ADD, RGLGCM_FUNC_ADD );
|
||||
rglGcmFifoGlBlendFunc( RGLGCM_ONE, RGLGCM_ZERO, RGLGCM_ONE, RGLGCM_ZERO );
|
||||
GCM_FUNC( cellGcmSetBlendColor, 0, 0);
|
||||
GCM_FUNC( cellGcmSetBlendEquation, RGLGCM_FUNC_ADD, RGLGCM_FUNC_ADD );
|
||||
GCM_FUNC( cellGcmSetBlendFunc, RGLGCM_ONE, RGLGCM_ZERO, RGLGCM_ONE, RGLGCM_ZERO );
|
||||
GCM_FUNC( cellGcmSetClearColor, 0 );
|
||||
rglGcmFifoGlDisable( RGLGCM_BLEND );
|
||||
rglGcmFifoGlDisable( RGLGCM_PSHADER_SRGB_REMAPPING );
|
||||
GCM_FUNC( cellGcmSetBlendEnable, RGLGCM_FALSE );
|
||||
GCM_FUNC( cellGcmSetBlendEnableMrt, RGLGCM_FALSE, RGLGCM_FALSE, RGLGCM_FALSE );
|
||||
GCM_FUNC( cellGcmSetFragmentProgramGammaEnable, RGLGCM_FALSE );
|
||||
|
||||
for ( i = 0; i < RGLGCM_ATTRIB_COUNT; i++ )
|
||||
{
|
||||
GCM_FUNC( cellGcmSetVertexDataArray, i, 0, 0, 0, CELL_GCM_VERTEX_F, CELL_GCM_LOCATION_LOCAL, 0);
|
||||
}
|
||||
|
||||
rglGcmFifoGlEnable( RGLGCM_DITHER );
|
||||
GCM_FUNC( cellGcmSetDitherEnable, RGLGCM_TRUE );
|
||||
|
||||
for ( i = 0; i < RGLGCM_MAX_TEXIMAGE_COUNT; i++ )
|
||||
{
|
||||
@ -1895,7 +1896,8 @@ void rglPsglPlatformExit(void)
|
||||
|
||||
if ( LContext )
|
||||
{
|
||||
rglGcmFifoGlFlush();
|
||||
GCM_FUNC_NO_ARGS( cellGcmSetInvalidateVertexCache );
|
||||
rglGcmFifoFlush( &rglGcmState_i.fifo );
|
||||
|
||||
psglMakeCurrent( NULL, NULL );
|
||||
rglDeviceExit();
|
||||
@ -3145,17 +3147,19 @@ GLAPI void RGL_EXPORT psglSwap (void)
|
||||
const char * __restrict v = driver->sharedVPConstants;
|
||||
GCM_FUNC( cellGcmSetVertexProgramParameterBlock, 0, 8, ( float* )v ); // GCM_PORT_UNTESTED [KHOFF]
|
||||
|
||||
rglGcmFifoGlEnable( RGLGCM_DITHER );
|
||||
GCM_FUNC( cellGcmSetDitherEnable, RGLGCM_TRUE );
|
||||
|
||||
RGLcontext *context = (RGLcontext*)_CurrentContext;
|
||||
context->needValidate = RGL_VALIDATE_ALL;
|
||||
context->attribs->DirtyMask = ( 1 << RGL_MAX_VERTEX_ATTRIBS ) - 1;
|
||||
|
||||
rglGcmFifoGlFlush();
|
||||
GCM_FUNC_NO_ARGS( cellGcmSetInvalidateVertexCache );
|
||||
rglGcmFifoFlush( &rglGcmState_i.fifo );
|
||||
|
||||
while (sys_semaphore_wait(FlipSem,1000) != CELL_OK);
|
||||
|
||||
rglGcmFifoGlFlush();
|
||||
GCM_FUNC_NO_ARGS( cellGcmSetInvalidateVertexCache );
|
||||
rglGcmFifoFlush( &rglGcmState_i.fifo );
|
||||
|
||||
if ( device->deviceParameters.bufferingMode == RGL_BUFFERING_MODE_DOUBLE )
|
||||
{
|
||||
|
@ -1427,7 +1427,8 @@ GLAPI void APIENTRY glClear( GLbitfield mask )
|
||||
gmmFree( bufferId );
|
||||
}
|
||||
|
||||
rglGcmFifoGlFlush();
|
||||
GCM_FUNC_NO_ARGS( cellGcmSetInvalidateVertexCache );
|
||||
rglGcmFifoFlush( &rglGcmState_i.fifo );
|
||||
}
|
||||
|
||||
rglFramebuffer* rglCreateFramebuffer (void)
|
||||
@ -1980,15 +1981,23 @@ static inline void rglValidateStates (GLuint mask)
|
||||
{
|
||||
GCM_FUNC( cellGcmSetBlendEnable, LContext->Blending );
|
||||
|
||||
rglGcmFifoGlBlendColor(
|
||||
LContext->BlendColor.R,
|
||||
LContext->BlendColor.G,
|
||||
LContext->BlendColor.B,
|
||||
LContext->BlendColor.A);
|
||||
rglGcmFifoGlBlendEquation(
|
||||
(rglGcmEnum)LContext->BlendEquationRGB,
|
||||
(rglGcmEnum)LContext->BlendEquationAlpha);
|
||||
rglGcmFifoGlBlendFunc((rglGcmEnum)LContext->BlendFactorSrcRGB,(rglGcmEnum)LContext->BlendFactorDestRGB,(rglGcmEnum)LContext->BlendFactorSrcAlpha,(rglGcmEnum)LContext->BlendFactorDestAlpha);
|
||||
rglGcmBlendState *blend = &rglGcmState_i.state.blend;
|
||||
GLuint hwColor;
|
||||
|
||||
blend->r = LContext->BlendColor.R;
|
||||
blend->g = LContext->BlendColor.G;
|
||||
blend->b = LContext->BlendColor.B;
|
||||
blend->a = LContext->BlendColor.A;
|
||||
|
||||
if (rglGcmState_i.renderTarget.colorFormat == RGLGCM_ARGB8)
|
||||
{
|
||||
RGLGCM_CALC_COLOR_LE_ARGB8( &hwColor, blend->r, blend->g, blend->b, blend->a );
|
||||
GCM_FUNC( cellGcmSetBlendColor, hwColor, hwColor );
|
||||
}
|
||||
|
||||
GCM_FUNC( cellGcmSetBlendEquation, (rglGcmEnum)LContext->BlendEquationRGB,
|
||||
(rglGcmEnum)LContext->BlendEquationAlpha );
|
||||
GCM_FUNC( cellGcmSetBlendFunc, (rglGcmEnum)LContext->BlendFactorSrcRGB,(rglGcmEnum)LContext->BlendFactorDestRGB,(rglGcmEnum)LContext->BlendFactorSrcAlpha,(rglGcmEnum)LContext->BlendFactorDestAlpha);
|
||||
}
|
||||
}
|
||||
|
||||
@ -2284,69 +2293,6 @@ void rglPlatformDropTexture (void *data)
|
||||
rglTextureTouchFBOs( texture );
|
||||
}
|
||||
|
||||
// Drop unbound textures from the GPU memory
|
||||
// This is kind of slow, but we hit a slow path anyway.
|
||||
// If the pool argument is not RGLGCM_SURFACE_POOL_NONE, then only textures
|
||||
// in the specified pool will be dropped.
|
||||
void rglPlatformDropUnboundTextures (GLenum pool)
|
||||
{
|
||||
RGLcontext* LContext = _CurrentContext;
|
||||
GLuint i, j;
|
||||
|
||||
for (i = 0; i < LContext->textureNameSpace.capacity; ++i)
|
||||
{
|
||||
GLboolean bound = GL_FALSE;
|
||||
rglTexture *texture = ( rglTexture * )LContext->textureNameSpace.data[i];
|
||||
|
||||
if (!texture || (texture->referenceBuffer != 0))
|
||||
continue;
|
||||
|
||||
// check if bound
|
||||
for ( j = 0;j < RGL_MAX_TEXTURE_IMAGE_UNITS;++j )
|
||||
{
|
||||
rglTextureImageUnit *tu = LContext->TextureImageUnits + j;
|
||||
if ( tu->bound2D == i)
|
||||
{
|
||||
bound = GL_TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ( bound )
|
||||
continue;
|
||||
|
||||
rglGcmTexture *gcmTexture = ( rglGcmTexture * )texture->platformTexture;
|
||||
|
||||
// check pool
|
||||
if ( pool != RGLGCM_SURFACE_POOL_NONE &&
|
||||
pool != gcmTexture->pool )
|
||||
continue;
|
||||
|
||||
rglPlatformDropTexture( texture );
|
||||
}
|
||||
}
|
||||
|
||||
// Drop filitering mode for FP32 texture
|
||||
static inline GLenum unFilter( GLenum filter )
|
||||
{
|
||||
GLenum newFilter;
|
||||
switch ( filter )
|
||||
{
|
||||
case GL_NEAREST:
|
||||
case GL_LINEAR:
|
||||
newFilter = GL_NEAREST;
|
||||
break;
|
||||
case GL_NEAREST_MIPMAP_NEAREST:
|
||||
case GL_NEAREST_MIPMAP_LINEAR:
|
||||
case GL_LINEAR_MIPMAP_NEAREST:
|
||||
case GL_LINEAR_MIPMAP_LINEAR:
|
||||
newFilter = GL_NEAREST_MIPMAP_NEAREST;
|
||||
break;
|
||||
default:
|
||||
newFilter = GL_NEAREST;
|
||||
}
|
||||
return newFilter;
|
||||
}
|
||||
|
||||
// Free memory pooled by a GCM texture
|
||||
void rglPlatformFreeGcmTexture (void *data)
|
||||
{
|
||||
@ -2565,6 +2511,7 @@ source: RGLGCM_SURFACE_SOURCE_TEXTURE,
|
||||
platformTexture->gcmMethods.address.wrapR = rglGcmMapWrapMode( texture->wrapR );
|
||||
platformTexture->gcmMethods.address.unsignedRemap = CELL_GCM_TEXTURE_UNSIGNED_REMAP_NORMAL;
|
||||
|
||||
#if 0
|
||||
// now for gamma remap
|
||||
GLuint gamma = 0;
|
||||
GLuint remap = texture->gammaRemap;
|
||||
@ -2574,6 +2521,9 @@ source: RGLGCM_SURFACE_SOURCE_TEXTURE,
|
||||
gamma |= ( remap & RGLGCM_GAMMA_REMAP_ALPHA_BIT ) ? CELL_GCM_TEXTURE_GAMMA_A : 0;
|
||||
|
||||
platformTexture->gcmMethods.address.gamma = gamma;
|
||||
#else
|
||||
platformTexture->gcmMethods.address.gamma = 0;
|
||||
#endif
|
||||
|
||||
// set border colors
|
||||
RGLGCM_CALC_COLOR_LE_ARGB8(&(platformTexture->gcmMethods.borderColor),
|
||||
@ -2591,8 +2541,225 @@ source: RGLGCM_SURFACE_SOURCE_TEXTURE,
|
||||
GLuint internalFormat = layout->internalFormat;
|
||||
|
||||
// set the format and remap( control 1)
|
||||
rglGcmMapTextureFormat( internalFormat,
|
||||
&platformTexture->gcmTexture.format, &platformTexture->gcmTexture.remap );
|
||||
uint8_t *gcmFormat = &platformTexture->gcmTexture.format;
|
||||
uint32_t *remap = &platformTexture->gcmTexture.remap;
|
||||
|
||||
*gcmFormat = 0;
|
||||
|
||||
switch (internalFormat)
|
||||
{
|
||||
case RGLGCM_ALPHA8: // in_rgba = xxAx, out_rgba = 000A
|
||||
{
|
||||
*gcmFormat = CELL_GCM_TEXTURE_B8;
|
||||
*remap = CELL_GCM_REMAP_MODE(
|
||||
CELL_GCM_TEXTURE_REMAP_ORDER_XYXY,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_B,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_R,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_B,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_B,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_ZERO,
|
||||
CELL_GCM_TEXTURE_REMAP_ZERO,
|
||||
CELL_GCM_TEXTURE_REMAP_ZERO );
|
||||
|
||||
}
|
||||
break;
|
||||
case RGLGCM_ALPHA16: // in_rgba = xAAx, out_rgba = 000A
|
||||
{
|
||||
*gcmFormat = CELL_GCM_TEXTURE_X16;
|
||||
*remap = CELL_GCM_REMAP_MODE(
|
||||
CELL_GCM_TEXTURE_REMAP_ORDER_XYXY,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_G,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_B,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_G,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_B,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_ZERO,
|
||||
CELL_GCM_TEXTURE_REMAP_ZERO,
|
||||
CELL_GCM_TEXTURE_REMAP_ZERO );
|
||||
|
||||
}
|
||||
break;
|
||||
#if 0
|
||||
case RGLGCM_HILO8: // in_rgba = HLxx, out_rgba = HL11
|
||||
{
|
||||
*gcmFormat = CELL_GCM_TEXTURE_COMPRESSED_HILO8;
|
||||
*remap = CELL_GCM_REMAP_MODE(
|
||||
CELL_GCM_TEXTURE_REMAP_ORDER_XYXY,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_A,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_R,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_G,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_B,
|
||||
CELL_GCM_TEXTURE_REMAP_ONE,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_ONE );
|
||||
|
||||
}
|
||||
break;
|
||||
case RGLGCM_HILO16: // in_rgba = HLxx, out_rgba = HL11
|
||||
{
|
||||
*gcmFormat = CELL_GCM_TEXTURE_Y16_X16;
|
||||
*remap = CELL_GCM_REMAP_MODE(
|
||||
CELL_GCM_TEXTURE_REMAP_ORDER_XYXY,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_A,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_R,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_G,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_B,
|
||||
CELL_GCM_TEXTURE_REMAP_ONE,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_ONE );
|
||||
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
case RGLGCM_ARGB8: // in_rgba = RGBA, out_rgba = RGBA
|
||||
{
|
||||
*gcmFormat = CELL_GCM_TEXTURE_A8R8G8B8;
|
||||
*remap = CELL_GCM_REMAP_MODE(
|
||||
CELL_GCM_TEXTURE_REMAP_ORDER_XYXY,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_A,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_R,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_G,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_B,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP );
|
||||
|
||||
}
|
||||
break;
|
||||
#if 0
|
||||
case RGLGCM_BGRA8: // in_rgba = GRAB, out_rgba = RGBA ** NEEDS TO BE TESTED
|
||||
{
|
||||
*gcmFormat = CELL_GCM_TEXTURE_A8R8G8B8;
|
||||
*remap = CELL_GCM_REMAP_MODE(
|
||||
CELL_GCM_TEXTURE_REMAP_ORDER_XYXY,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_B,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_G,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_R,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_A,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP );
|
||||
|
||||
}
|
||||
break;
|
||||
case RGLGCM_RGBA8: // in_rgba = GBAR, out_rgba = RGBA ** NEEDS TO BE TESTED
|
||||
{
|
||||
*gcmFormat = CELL_GCM_TEXTURE_A8R8G8B8;
|
||||
*remap = CELL_GCM_REMAP_MODE(
|
||||
CELL_GCM_TEXTURE_REMAP_ORDER_XYXY,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_B,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_A,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_R,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_G,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP );
|
||||
}
|
||||
break;
|
||||
case RGLGCM_ABGR8: // in_rgba = BGRA, out_rgba = RGBA ** NEEDS TO BE TESTED
|
||||
{
|
||||
*gcmFormat = CELL_GCM_TEXTURE_A8R8G8B8;
|
||||
*remap = CELL_GCM_REMAP_MODE(
|
||||
CELL_GCM_TEXTURE_REMAP_ORDER_XYXY,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_A,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_B,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_G,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_R,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP );
|
||||
|
||||
}
|
||||
break;
|
||||
case RGLGCM_RGBX8: // in_rgba = BGRA, out_rgba = RGB1 ** NEEDS TO BE TESTED
|
||||
{
|
||||
*gcmFormat = CELL_GCM_TEXTURE_A8R8G8B8;
|
||||
*remap = CELL_GCM_REMAP_MODE(
|
||||
CELL_GCM_TEXTURE_REMAP_ORDER_XYXY,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_B,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_A,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_R,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_G,
|
||||
CELL_GCM_TEXTURE_REMAP_ONE,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP );
|
||||
|
||||
}
|
||||
break;
|
||||
case RGLGCM_XBGR8: // in_rgba = BGRA, out_rgba = RGB1 ** NEEDS TO BE TESTED
|
||||
{
|
||||
*gcmFormat = CELL_GCM_TEXTURE_A8R8G8B8;
|
||||
*remap = CELL_GCM_REMAP_MODE(
|
||||
CELL_GCM_TEXTURE_REMAP_ORDER_XYXY,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_A,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_B,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_G,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_R,
|
||||
CELL_GCM_TEXTURE_REMAP_ONE,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP );
|
||||
|
||||
}
|
||||
break;
|
||||
case RGLGCM_FLOAT_R32: // in_rgba = Rxxx, out_rgba = R001
|
||||
{
|
||||
*gcmFormat = CELL_GCM_TEXTURE_X32_FLOAT;
|
||||
*remap = CELL_GCM_REMAP_MODE(
|
||||
CELL_GCM_TEXTURE_REMAP_ORDER_XYXY,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_A,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_R,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_G,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_B,
|
||||
CELL_GCM_TEXTURE_REMAP_ONE,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_ZERO,
|
||||
CELL_GCM_TEXTURE_REMAP_ZERO );
|
||||
|
||||
}
|
||||
break;
|
||||
case RGLGCM_RGB5_A1_SCE: // in_rgba = RGBA, out_rgba = RGBA
|
||||
{
|
||||
*gcmFormat = CELL_GCM_TEXTURE_A1R5G5B5;
|
||||
*remap = CELL_GCM_REMAP_MODE(
|
||||
CELL_GCM_TEXTURE_REMAP_ORDER_XXXY,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_A,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_R,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_G,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_B,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP );
|
||||
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
case RGLGCM_RGB565_SCE: // in_rgba = RGBA, out_rgba = RGBA
|
||||
{
|
||||
*gcmFormat = CELL_GCM_TEXTURE_R5G6B5;
|
||||
*remap = CELL_GCM_REMAP_MODE(
|
||||
CELL_GCM_TEXTURE_REMAP_ORDER_XXXY,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_A,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_R,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_G,
|
||||
CELL_GCM_TEXTURE_REMAP_FROM_B,
|
||||
CELL_GCM_TEXTURE_REMAP_ONE,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP,
|
||||
CELL_GCM_TEXTURE_REMAP_REMAP );
|
||||
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
// This is just to cover the conversion from swizzled to linear
|
||||
if(layout->pitch)
|
||||
@ -2851,8 +3018,15 @@ void static inline rglGcmSetColorDepthBuffers(void *data, const void *data_args)
|
||||
{
|
||||
// ARGB8 and FP16 interpret some registers differently
|
||||
rglGcmBlendState *blend = &rglGcmState_i.state.blend;
|
||||
GLuint hwColor;
|
||||
|
||||
rt->colorFormat = args->colorFormat;
|
||||
rglGcmFifoGlBlendColor( blend->r, blend->g, blend->b, blend->a );
|
||||
|
||||
if (rglGcmState_i.renderTarget.colorFormat == RGLGCM_ARGB8)
|
||||
{
|
||||
RGLGCM_CALC_COLOR_LE_ARGB8( &hwColor, blend->r, blend->g, blend->b, blend->a );
|
||||
GCM_FUNC( cellGcmSetBlendColor, hwColor, hwColor );
|
||||
}
|
||||
}
|
||||
|
||||
GLuint i = 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user