mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-01-02 15:02:11 +00:00
Few source-code improvements
* Fixed identation inconsistency after last merge. * Replaced uint32_t with u32 in LinearToSwizzleAddress. * Replaced hardcoded values with defined GCM constants (in Emu/GS/GCM.h) in some switch statements. This commit won't produce any changes in the RPCS3 executable. It's just to make the code easier to read.
This commit is contained in:
parent
bd8ff4ca11
commit
ab25edfacc
@ -22,6 +22,57 @@ enum
|
||||
CELL_GCM_DISPLAY_FREQUENCY_DISABLE = 3,
|
||||
};
|
||||
|
||||
// GCM Texture
|
||||
enum
|
||||
{
|
||||
// Format
|
||||
CELL_GCM_TEXTURE_B8 = 0x81,
|
||||
CELL_GCM_TEXTURE_A1R5G5B5 = 0x82,
|
||||
CELL_GCM_TEXTURE_A4R4G4B4 = 0x83,
|
||||
CELL_GCM_TEXTURE_R5G6B5 = 0x84,
|
||||
CELL_GCM_TEXTURE_A8R8G8B8 = 0x85,
|
||||
CELL_GCM_TEXTURE_COMPRESSED_DXT1 = 0x86,
|
||||
CELL_GCM_TEXTURE_COMPRESSED_DXT23 = 0x87,
|
||||
CELL_GCM_TEXTURE_COMPRESSED_DXT45 = 0x88,
|
||||
CELL_GCM_TEXTURE_G8B8 = 0x8B,
|
||||
CELL_GCM_TEXTURE_R6G5B5 = 0x8F,
|
||||
CELL_GCM_TEXTURE_DEPTH24_D8 = 0x90,
|
||||
CELL_GCM_TEXTURE_DEPTH24_D8_FLOAT = 0x91,
|
||||
CELL_GCM_TEXTURE_DEPTH16 = 0x92,
|
||||
CELL_GCM_TEXTURE_DEPTH16_FLOAT = 0x93,
|
||||
CELL_GCM_TEXTURE_X16 = 0x94,
|
||||
CELL_GCM_TEXTURE_Y16_X16 = 0x95,
|
||||
CELL_GCM_TEXTURE_R5G5B5A1 = 0x97,
|
||||
CELL_GCM_TEXTURE_COMPRESSED_HILO8 = 0x98,
|
||||
CELL_GCM_TEXTURE_COMPRESSED_HILO_S8 = 0x99,
|
||||
CELL_GCM_TEXTURE_W16_Z16_Y16_X16_FLOAT = 0x9A,
|
||||
CELL_GCM_TEXTURE_W32_Z32_Y32_X32_FLOAT = 0x9B,
|
||||
CELL_GCM_TEXTURE_X32_FLOAT = 0x9C,
|
||||
CELL_GCM_TEXTURE_D1R5G5B5 = 0x9D,
|
||||
CELL_GCM_TEXTURE_D8R8G8B8 = 0x9E,
|
||||
CELL_GCM_TEXTURE_Y16_X16_FLOAT = 0x9F,
|
||||
CELL_GCM_TEXTURE_COMPRESSED_B8R8_G8R8 = 0xAD,
|
||||
CELL_GCM_TEXTURE_COMPRESSED_R8B8_R8G8 = 0xAE,
|
||||
|
||||
// Format flags
|
||||
CELL_GCM_TEXTURE_SZ = 0x00,
|
||||
CELL_GCM_TEXTURE_LN = 0x20,
|
||||
CELL_GCM_TEXTURE_NR = 0x00,
|
||||
CELL_GCM_TEXTURE_UN = 0x40,
|
||||
};
|
||||
|
||||
// GCM Surface
|
||||
enum
|
||||
{
|
||||
// Target
|
||||
CELL_GCM_SURFACE_TARGET_NONE = 0,
|
||||
CELL_GCM_SURFACE_TARGET_0 = 1,
|
||||
CELL_GCM_SURFACE_TARGET_1 = 2,
|
||||
CELL_GCM_SURFACE_TARGET_MRT1 = 0x13,
|
||||
CELL_GCM_SURFACE_TARGET_MRT2 = 0x17,
|
||||
CELL_GCM_SURFACE_TARGET_MRT3 = 0x1f,
|
||||
};
|
||||
|
||||
struct CellGcmControl
|
||||
{
|
||||
u32 put;
|
||||
|
@ -556,29 +556,29 @@ void GLGSRender::WriteBuffers()
|
||||
|
||||
switch(m_surface_colour_target)
|
||||
{
|
||||
case 0x0:
|
||||
case CELL_GCM_SURFACE_TARGET_NONE:
|
||||
return;
|
||||
|
||||
case 0x1:
|
||||
case CELL_GCM_SURFACE_TARGET_0:
|
||||
WriteColourBufferA();
|
||||
break;
|
||||
|
||||
case 0x2:
|
||||
case CELL_GCM_SURFACE_TARGET_1:
|
||||
WriteColourBufferB();
|
||||
break;
|
||||
|
||||
case 0x13:
|
||||
case CELL_GCM_SURFACE_TARGET_MRT1:
|
||||
WriteColourBufferA();
|
||||
WriteColourBufferB();
|
||||
break;
|
||||
|
||||
case 0x17:
|
||||
case CELL_GCM_SURFACE_TARGET_MRT2:
|
||||
WriteColourBufferA();
|
||||
WriteColourBufferB();
|
||||
WriteColourBufferC();
|
||||
break;
|
||||
|
||||
case 0x1f:
|
||||
case CELL_GCM_SURFACE_TARGET_MRT3:
|
||||
WriteColourBufferA();
|
||||
WriteColourBufferB();
|
||||
WriteColourBufferC();
|
||||
@ -726,26 +726,26 @@ void GLGSRender::ExecCMD()
|
||||
|
||||
switch(m_surface_colour_target)
|
||||
{
|
||||
case 0x0:
|
||||
case CELL_GCM_SURFACE_TARGET_NONE:
|
||||
break;
|
||||
|
||||
case 0x1:
|
||||
case CELL_GCM_SURFACE_TARGET_0:
|
||||
glDrawBuffer(draw_buffers[0]);
|
||||
break;
|
||||
|
||||
case 0x2:
|
||||
case CELL_GCM_SURFACE_TARGET_1:
|
||||
glDrawBuffer(draw_buffers[1]);
|
||||
break;
|
||||
|
||||
case 0x13:
|
||||
case CELL_GCM_SURFACE_TARGET_MRT1:
|
||||
glDrawBuffers(2, draw_buffers);
|
||||
break;
|
||||
|
||||
case 0x17:
|
||||
case CELL_GCM_SURFACE_TARGET_MRT2:
|
||||
glDrawBuffers(3, draw_buffers);
|
||||
break;
|
||||
|
||||
case 0x1f:
|
||||
case CELL_GCM_SURFACE_TARGET_MRT3:
|
||||
glDrawBuffers(4, draw_buffers);
|
||||
break;
|
||||
|
||||
@ -1147,12 +1147,10 @@ void GLGSRender::Flip()
|
||||
}
|
||||
}
|
||||
|
||||
uint32_t LinearToSwizzleAddress(
|
||||
uint32_t x, uint32_t y, uint32_t z,
|
||||
uint32_t log2_width, uint32_t log2_height, uint32_t log2_depth)
|
||||
u32 LinearToSwizzleAddress(u32 x, u32 y, u32 z, u32 log2_width, u32 log2_height, u32 log2_depth)
|
||||
{
|
||||
uint32_t offset = 0;
|
||||
uint32_t shift_count = 0;
|
||||
u32 offset = 0;
|
||||
u32 shift_count = 0;
|
||||
while(log2_width | log2_height | log2_depth){
|
||||
if(log2_width){
|
||||
offset |= (x & 0x01) << shift_count;
|
||||
|
@ -13,9 +13,7 @@
|
||||
|
||||
extern GLenum g_last_gl_error;
|
||||
void printGlError(GLenum err, const char* situation);
|
||||
uint32_t LinearToSwizzleAddress(
|
||||
uint32_t x, uint32_t y, uint32_t z,
|
||||
uint32_t log2_width, uint32_t log2_height, uint32_t log2_depth);
|
||||
u32 LinearToSwizzleAddress(u32 x, u32 y, u32 z, u32 log2_width, u32 log2_height, u32 log2_depth);
|
||||
|
||||
#if RSX_DEBUG
|
||||
#define checkForGlError(sit) if((g_last_gl_error = glGetError()) != GL_NO_ERROR) printGlError(g_last_gl_error, sit)
|
||||
@ -79,7 +77,7 @@ public:
|
||||
checkForGlError("GLTexture::Init() -> glBindTexture");
|
||||
|
||||
int format = tex.GetFormat() & ~(0x20 | 0x40);
|
||||
bool is_swizzled = (tex.GetFormat() & 0x20) == 0;
|
||||
bool is_swizzled = !(tex.GetFormat() & CELL_GCM_TEXTURE_LN);
|
||||
|
||||
glPixelStorei(GL_PACK_ALIGNMENT, tex.m_pitch);
|
||||
char* pixels = (char*)Memory.GetMemFromAddr(GetAddress(tex.GetOffset(), tex.GetLocation()));
|
||||
@ -87,7 +85,7 @@ public:
|
||||
|
||||
switch(format)
|
||||
{
|
||||
case 0x81:
|
||||
case CELL_GCM_TEXTURE_B8:
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, tex.GetWidth(), tex.GetHeight(), 0, GL_BLUE, GL_UNSIGNED_BYTE, pixels);
|
||||
checkForGlError("GLTexture::Init() -> glTexImage2D");
|
||||
|
||||
@ -99,15 +97,15 @@ public:
|
||||
checkForGlError("GLTexture::Init() -> glTexParameteri");
|
||||
break;
|
||||
|
||||
case 0x85:
|
||||
case CELL_GCM_TEXTURE_A8R8G8B8:
|
||||
if(is_swizzled)
|
||||
{
|
||||
uint32_t *src, *dst;
|
||||
uint32_t log2width, log2height;
|
||||
u32 *src, *dst;
|
||||
u32 log2width, log2height;
|
||||
|
||||
unswizzledPixels = (char*)malloc(tex.GetWidth() * tex.GetHeight() * 4);
|
||||
src = (uint32_t*)pixels;
|
||||
dst = (uint32_t*)unswizzledPixels;
|
||||
src = (u32*)pixels;
|
||||
dst = (u32*)unswizzledPixels;
|
||||
|
||||
log2width = log(tex.GetWidth())/log(2);
|
||||
log2height = log(tex.GetHeight())/log(2);
|
||||
@ -125,7 +123,7 @@ public:
|
||||
checkForGlError("GLTexture::Init() -> glTexImage2D");
|
||||
break;
|
||||
|
||||
case 0x86:
|
||||
case CELL_GCM_TEXTURE_COMPRESSED_DXT1:
|
||||
{
|
||||
u32 size = ((tex.GetWidth() + 3) / 4) * ((tex.GetHeight() + 3) / 4) * 8;
|
||||
|
||||
@ -134,7 +132,7 @@ public:
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x87:
|
||||
case CELL_GCM_TEXTURE_COMPRESSED_DXT23:
|
||||
{
|
||||
u32 size = ((tex.GetWidth() + 3) / 4) * ((tex.GetHeight() + 3) / 4) * 16;
|
||||
|
||||
@ -143,7 +141,7 @@ public:
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x88:
|
||||
case CELL_GCM_TEXTURE_COMPRESSED_DXT45:
|
||||
{
|
||||
u32 size = ((tex.GetWidth() + 3) / 4) * ((tex.GetHeight() + 3) / 4) * 16;
|
||||
|
||||
@ -152,7 +150,7 @@ public:
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x94:
|
||||
case CELL_GCM_TEXTURE_X16:
|
||||
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_G, GL_ONE);
|
||||
@ -161,12 +159,12 @@ public:
|
||||
checkForGlError("GLTexture::Init() -> glTexImage2D");
|
||||
break;
|
||||
|
||||
case 0x9a:
|
||||
case CELL_GCM_TEXTURE_W16_Z16_Y16_X16_FLOAT:
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, tex.GetWidth(), tex.GetHeight(), 0, GL_BGRA, GL_HALF_FLOAT, pixels);
|
||||
checkForGlError("GLTexture::Init() -> glTexImage2D");
|
||||
break;
|
||||
|
||||
case 0x9e:
|
||||
case CELL_GCM_TEXTURE_D8R8G8B8:
|
||||
{
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, tex.GetWidth(), tex.GetHeight(), 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8, pixels);
|
||||
checkForGlError("GLTexture::Init() -> glTexImage2D");
|
||||
@ -255,7 +253,7 @@ public:
|
||||
|
||||
void Save(RSXTexture& tex, const wxString& name)
|
||||
{
|
||||
if(!m_id || !tex.GetOffset() || !tex.GetWidth() || !tex.GetHeight()) return;
|
||||
if(!m_id || !tex.GetOffset() || !tex.GetWidth() || !tex.GetHeight()) return;
|
||||
|
||||
u32* alldata = new u32[tex.GetWidth() * tex.GetHeight()];
|
||||
|
||||
@ -263,11 +261,11 @@ public:
|
||||
|
||||
switch(tex.GetFormat() & ~(0x20 | 0x40))
|
||||
{
|
||||
case 0x81:
|
||||
case CELL_GCM_TEXTURE_B8:
|
||||
glGetTexImage(GL_TEXTURE_2D, 0, GL_RGBA, GL_UNSIGNED_INT_8_8_8_8, alldata);
|
||||
break;
|
||||
|
||||
case 0x85:
|
||||
case CELL_GCM_TEXTURE_A8R8G8B8:
|
||||
glGetTexImage(GL_TEXTURE_2D, 0, GL_RGBA, GL_UNSIGNED_INT_8_8_8_8_REV, alldata);
|
||||
break;
|
||||
|
||||
|
@ -42,37 +42,37 @@ void RSXTexture::Init()
|
||||
|
||||
u32 RSXTexture::GetOffset() const
|
||||
{
|
||||
return methodRegisters[NV4097_SET_TEXTURE_OFFSET + (m_index*32)];
|
||||
return methodRegisters[NV4097_SET_TEXTURE_OFFSET + (m_index*32)];
|
||||
}
|
||||
|
||||
u8 RSXTexture::GetLocation() const
|
||||
{
|
||||
return (methodRegisters[NV4097_SET_TEXTURE_FORMAT + (m_index*32)] & 0x3) - 1;
|
||||
return (methodRegisters[NV4097_SET_TEXTURE_FORMAT + (m_index*32)] & 0x3) - 1;
|
||||
}
|
||||
|
||||
bool RSXTexture::isCubemap() const
|
||||
{
|
||||
return ((methodRegisters[NV4097_SET_TEXTURE_FORMAT + (m_index*32)] >> 2) & 0x1);
|
||||
return ((methodRegisters[NV4097_SET_TEXTURE_FORMAT + (m_index*32)] >> 2) & 0x1);
|
||||
}
|
||||
|
||||
u8 RSXTexture::GetBorderType() const
|
||||
{
|
||||
return ((methodRegisters[NV4097_SET_TEXTURE_FORMAT + (m_index*32)] >> 3) & 0x1);
|
||||
return ((methodRegisters[NV4097_SET_TEXTURE_FORMAT + (m_index*32)] >> 3) & 0x1);
|
||||
}
|
||||
|
||||
u8 RSXTexture::GetDimension() const
|
||||
{
|
||||
return ((methodRegisters[NV4097_SET_TEXTURE_FORMAT + (m_index*32)] >> 4) & 0xf);
|
||||
return ((methodRegisters[NV4097_SET_TEXTURE_FORMAT + (m_index*32)] >> 4) & 0xf);
|
||||
}
|
||||
|
||||
u8 RSXTexture::GetFormat() const
|
||||
{
|
||||
return ((methodRegisters[NV4097_SET_TEXTURE_FORMAT + (m_index*32)] >> 8) & 0xff);
|
||||
return ((methodRegisters[NV4097_SET_TEXTURE_FORMAT + (m_index*32)] >> 8) & 0xff);
|
||||
}
|
||||
|
||||
u16 RSXTexture::Getmipmap() const
|
||||
{
|
||||
return ((methodRegisters[NV4097_SET_TEXTURE_FORMAT + (m_index*32)] >> 16) & 0xffff);
|
||||
return ((methodRegisters[NV4097_SET_TEXTURE_FORMAT + (m_index*32)] >> 16) & 0xffff);
|
||||
}
|
||||
|
||||
u8 RSXTexture::GetWrapS() const
|
||||
@ -197,6 +197,6 @@ u16 RSXTexture::GetHeight() const
|
||||
|
||||
void RSXTexture::SetControl3(u16 depth, u32 pitch)
|
||||
{
|
||||
m_depth = depth;
|
||||
m_pitch = pitch;
|
||||
m_depth = depth;
|
||||
m_pitch = pitch;
|
||||
}
|
@ -1378,7 +1378,7 @@ void RSXThread::End()
|
||||
|
||||
void RSXThread::Task()
|
||||
{
|
||||
u8 inc;
|
||||
u8 inc;
|
||||
ConLog.Write("RSX thread entry");
|
||||
|
||||
OnInitThread();
|
||||
@ -1387,7 +1387,7 @@ void RSXThread::Task()
|
||||
{
|
||||
wxCriticalSectionLocker lock(m_cs_main);
|
||||
|
||||
inc=1;
|
||||
inc=1;
|
||||
|
||||
u32 put, get;
|
||||
se_t<u32>::func(put, std::atomic_load((volatile std::atomic<u32>*)((u8*)m_ctrl + offsetof(CellGcmControl, put))));
|
||||
@ -1439,7 +1439,7 @@ void RSXThread::Task()
|
||||
if(cmd & CELL_GCM_METHOD_FLAG_NON_INCREMENT)
|
||||
{
|
||||
//ConLog.Warning("non increment cmd! 0x%x", cmd);
|
||||
inc=0;
|
||||
inc=0;
|
||||
}
|
||||
|
||||
if(cmd == 0)
|
||||
@ -1449,10 +1449,10 @@ void RSXThread::Task()
|
||||
continue;
|
||||
}
|
||||
|
||||
for(int i=0; i<count; i++)
|
||||
{
|
||||
methodRegisters[(cmd & 0xffff) + (i*4*inc)] = ARGS(i);
|
||||
}
|
||||
for(int i=0; i<count; i++)
|
||||
{
|
||||
methodRegisters[(cmd & 0xffff) + (i*4*inc)] = ARGS(i);
|
||||
}
|
||||
|
||||
mem32_ptr_t args(Memory.RSXIOMem.GetStartAddr() + get + 4);
|
||||
DoCmd(cmd, cmd & 0x3ffff, args, count);
|
||||
|
@ -17,7 +17,8 @@ u32 GetAddress(u32 offset, u8 location);
|
||||
|
||||
class RSXTexture
|
||||
{
|
||||
u8 m_index;
|
||||
u8 m_index;
|
||||
|
||||
public:
|
||||
u32 m_pitch;
|
||||
u16 m_depth;
|
||||
@ -484,11 +485,11 @@ protected:
|
||||
m_point_x = 0;
|
||||
m_point_y = 0;
|
||||
|
||||
// Construct Textures
|
||||
for(int i=0; i<16; i++)
|
||||
{
|
||||
m_textures[i] = RSXTexture(i);
|
||||
}
|
||||
// Construct Textures
|
||||
for(int i=0; i<16; i++)
|
||||
{
|
||||
m_textures[i] = RSXTexture(i);
|
||||
}
|
||||
|
||||
Reset();
|
||||
}
|
||||
@ -549,10 +550,10 @@ protected:
|
||||
m_clear_surface_mask = 0;
|
||||
m_begin_end = 0;
|
||||
|
||||
for(uint i=0; i<m_textures_count; ++i)
|
||||
{
|
||||
for(uint i=0; i<m_textures_count; ++i)
|
||||
{
|
||||
m_textures[i].Init();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Begin(u32 draw_mode);
|
||||
|
Loading…
Reference in New Issue
Block a user