mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-07-07 15:31:26 +12:00
Implement CELL_GCM_TEXTURE_A1R5G5B5 & CELL_GCM_TEXTURE_A4R4G4B4
This commit is contained in:
parent
68b0f800ff
commit
0d9de89a26
1 changed files with 51 additions and 40 deletions
|
@ -91,6 +91,24 @@ public:
|
||||||
checkForGlError("GLTexture::Init() -> glTexParameteri");
|
checkForGlError("GLTexture::Init() -> glTexParameteri");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case CELL_GCM_TEXTURE_A1R5G5B5:
|
||||||
|
// TODO: texture swizzling
|
||||||
|
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, tex.GetWidth(), tex.GetHeight(), 0, GL_RGBA, GL_UNSIGNED_SHORT_1_5_5_5_REV, pixels);
|
||||||
|
checkForGlError("GLTexture::Init() -> glTexImage2D");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case CELL_GCM_TEXTURE_A4R4G4B4:
|
||||||
|
// TODO: texture swizzling
|
||||||
|
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, tex.GetWidth(), tex.GetHeight(), 0, GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4_REV, pixels);
|
||||||
|
checkForGlError("GLTexture::Init() -> glTexImage2D");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case CELL_GCM_TEXTURE_R5G6B5:
|
||||||
|
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, tex.GetWidth(), tex.GetHeight(), 0, GL_RGB, GL_UNSIGNED_SHORT_5_6_5, pixels);
|
||||||
|
checkForGlError("GLTexture::Init() -> glTexImage2D");
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
case CELL_GCM_TEXTURE_A8R8G8B8:
|
case CELL_GCM_TEXTURE_A8R8G8B8:
|
||||||
if(is_swizzled)
|
if(is_swizzled)
|
||||||
{
|
{
|
||||||
|
@ -117,18 +135,6 @@ public:
|
||||||
checkForGlError("GLTexture::Init() -> glTexImage2D");
|
checkForGlError("GLTexture::Init() -> glTexImage2D");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CELL_GCM_TEXTURE_R5G5B5A1:
|
|
||||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, tex.GetWidth(), tex.GetHeight(), 0, GL_RGBA, GL_UNSIGNED_SHORT_5_5_5_1, pixels);
|
|
||||||
checkForGlError("GLTexture::Init() -> glTexImage2D");
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
case CELL_GCM_TEXTURE_R5G6B5:
|
|
||||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, tex.GetWidth(), tex.GetHeight(), 0, GL_RGB, GL_UNSIGNED_SHORT_5_6_5, pixels);
|
|
||||||
checkForGlError("GLTexture::Init() -> glTexImage2D");
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
case CELL_GCM_TEXTURE_COMPRESSED_DXT1: // Compressed 4x4 pixels into 8 bytes
|
case CELL_GCM_TEXTURE_COMPRESSED_DXT1: // Compressed 4x4 pixels into 8 bytes
|
||||||
{
|
{
|
||||||
u32 size = ((tex.GetWidth() + 3) / 4) * ((tex.GetHeight() + 3) / 4) * 8;
|
u32 size = ((tex.GetWidth() + 3) / 4) * ((tex.GetHeight() + 3) / 4) * 8;
|
||||||
|
@ -156,6 +162,26 @@ public:
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case CELL_GCM_TEXTURE_DEPTH24_D8: // 24-bit unsigned fixed-point number and 8 bits of garbage
|
||||||
|
glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT24, tex.GetWidth(), tex.GetHeight(), 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_BYTE, pixels);
|
||||||
|
checkForGlError("GLTexture::Init() -> glTexImage2D");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case CELL_GCM_TEXTURE_DEPTH24_D8_FLOAT: // 24-bit unsigned float and 8 bits of garbage
|
||||||
|
glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT24, tex.GetWidth(), tex.GetHeight(), 0, GL_DEPTH_COMPONENT, GL_FLOAT, pixels);
|
||||||
|
checkForGlError("GLTexture::Init() -> glTexImage2D");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case CELL_GCM_TEXTURE_DEPTH16: // 16-bit unsigned fixed-point number
|
||||||
|
glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT16, tex.GetWidth(), tex.GetHeight(), 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_BYTE, pixels);
|
||||||
|
checkForGlError("GLTexture::Init() -> glTexImage2D");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case CELL_GCM_TEXTURE_DEPTH16_FLOAT: // 16-bit unsigned float
|
||||||
|
glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT16, tex.GetWidth(), tex.GetHeight(), 0, GL_DEPTH_COMPONENT, GL_FLOAT, pixels);
|
||||||
|
checkForGlError("GLTexture::Init() -> glTexImage2D");
|
||||||
|
break;
|
||||||
|
|
||||||
case CELL_GCM_TEXTURE_X16: // A 16-bit fixed-point number
|
case CELL_GCM_TEXTURE_X16: // A 16-bit fixed-point number
|
||||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, tex.GetWidth(), tex.GetHeight(), 0, GL_RED, GL_SHORT, pixels);
|
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, tex.GetWidth(), tex.GetHeight(), 0, GL_RED, GL_SHORT, pixels);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_R, GL_ONE);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_R, GL_ONE);
|
||||||
|
@ -165,6 +191,11 @@ public:
|
||||||
checkForGlError("GLTexture::Init() -> glTexImage2D");
|
checkForGlError("GLTexture::Init() -> glTexImage2D");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case CELL_GCM_TEXTURE_R5G5B5A1:
|
||||||
|
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, tex.GetWidth(), tex.GetHeight(), 0, GL_RGBA, GL_UNSIGNED_SHORT_5_5_5_1, pixels);
|
||||||
|
checkForGlError("GLTexture::Init() -> glTexImage2D");
|
||||||
|
break;
|
||||||
|
|
||||||
case CELL_GCM_TEXTURE_W16_Z16_Y16_X16_FLOAT: // Four fp16 values
|
case CELL_GCM_TEXTURE_W16_Z16_Y16_X16_FLOAT: // Four fp16 values
|
||||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, tex.GetWidth(), tex.GetHeight(), 0, GL_BGRA, GL_HALF_FLOAT, pixels);
|
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, tex.GetWidth(), tex.GetHeight(), 0, GL_BGRA, GL_HALF_FLOAT, pixels);
|
||||||
checkForGlError("GLTexture::Init() -> glTexImage2D");
|
checkForGlError("GLTexture::Init() -> glTexImage2D");
|
||||||
|
@ -184,26 +215,6 @@ public:
|
||||||
checkForGlError("GLTexture::Init() -> glTexImage2D");
|
checkForGlError("GLTexture::Init() -> glTexImage2D");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CELL_GCM_TEXTURE_DEPTH24_D8: // 24-bit unsigned fixed-point number and 8 bits of garbage
|
|
||||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT24, tex.GetWidth(), tex.GetHeight(), 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_BYTE, pixels);
|
|
||||||
checkForGlError("GLTexture::Init() -> glTexImage2D");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case CELL_GCM_TEXTURE_DEPTH24_D8_FLOAT: // 24-bit unsigned float and 8 bits of garbage
|
|
||||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT24, tex.GetWidth(), tex.GetHeight(), 0, GL_DEPTH_COMPONENT, GL_FLOAT, pixels);
|
|
||||||
checkForGlError("GLTexture::Init() -> glTexImage2D");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case CELL_GCM_TEXTURE_DEPTH16: // 16-bit unsigned fixed-point number
|
|
||||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT16, tex.GetWidth(), tex.GetHeight(), 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_BYTE, pixels);
|
|
||||||
checkForGlError("GLTexture::Init() -> glTexImage2D");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case CELL_GCM_TEXTURE_DEPTH16_FLOAT: // 16-bit unsigned float
|
|
||||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT16, tex.GetWidth(), tex.GetHeight(), 0, GL_DEPTH_COMPONENT, GL_FLOAT, pixels);
|
|
||||||
checkForGlError("GLTexture::Init() -> glTexImage2D");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case CELL_GCM_TEXTURE_D8R8G8B8: // 8 bits of garbage and three unsigned 8-bit fixed-point numbers
|
case CELL_GCM_TEXTURE_D8R8G8B8: // 8 bits of garbage and three unsigned 8-bit fixed-point numbers
|
||||||
{
|
{
|
||||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, tex.GetWidth(), tex.GetHeight(), 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8, pixels);
|
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, tex.GetWidth(), tex.GetHeight(), 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8, pixels);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue