citra_qt: Add enhanced texture debugging widgets.
Double-clicking a texture parameter command in the pica command lists will spawn these as a new tab in the pica command list dock area.
This commit is contained in:
parent
fd194d95b0
commit
2793619dce
5 changed files with 209 additions and 19 deletions
|
@ -382,6 +382,18 @@ const Math::Vec4<u8> LookupTexture(const u8* source, int x, int y, const Texture
|
|||
return { source_ptr[2], source_ptr[1], source_ptr[0], 255 };
|
||||
}
|
||||
|
||||
TextureInfo TextureInfo::FromPicaRegister(const Regs::TextureConfig& config,
|
||||
const Regs::TextureFormat& format)
|
||||
{
|
||||
TextureInfo info;
|
||||
info.address = config.GetPhysicalAddress();
|
||||
info.width = config.width;
|
||||
info.height = config.height;
|
||||
info.format = format;
|
||||
info.stride = Pica::Regs::BytesPerPixel(info.format) * info.width;
|
||||
return info;
|
||||
}
|
||||
|
||||
void DumpTexture(const Pica::Regs::TextureConfig& texture_config, u8* data) {
|
||||
// NOTE: Permanently enabling this just trashes hard disks for no reason.
|
||||
// Hence, this is currently disabled.
|
||||
|
|
|
@ -192,10 +192,14 @@ void OnPicaRegWrite(u32 id, u32 value);
|
|||
std::unique_ptr<PicaTrace> FinishPicaTracing();
|
||||
|
||||
struct TextureInfo {
|
||||
unsigned int address;
|
||||
int width;
|
||||
int height;
|
||||
int stride;
|
||||
Pica::Regs::TextureFormat format;
|
||||
|
||||
static TextureInfo FromPicaRegister(const Pica::Regs::TextureConfig& config,
|
||||
const Pica::Regs::TextureFormat& format);
|
||||
};
|
||||
|
||||
const Math::Vec4<u8> LookupTexture(const u8* source, int x, int y, const TextureInfo& info);
|
||||
|
|
|
@ -130,7 +130,20 @@ struct Regs {
|
|||
// Seems like they are luminance formats and compressed textures.
|
||||
};
|
||||
|
||||
BitField<0, 1, u32> texturing_enable;
|
||||
static unsigned BytesPerPixel(TextureFormat format) {
|
||||
if (format == TextureFormat::RGBA8)
|
||||
return 4;
|
||||
else if (format == TextureFormat::RGB8)
|
||||
return 3;
|
||||
else if (format == TextureFormat::RGBA5551 ||
|
||||
format == TextureFormat::RGB565 ||
|
||||
format == TextureFormat::RGBA4)
|
||||
return 2;
|
||||
else // placeholder
|
||||
return 1;
|
||||
}
|
||||
|
||||
BitField< 0, 1, u32> texturing_enable;
|
||||
TextureConfig texture0;
|
||||
INSERT_PADDING_WORDS(0x8);
|
||||
BitField<0, 4, TextureFormat> texture0_format;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue