Pica/DebugUtils: Better document LookupTexture.

This commit is contained in:
Tony Wasserka 2014-12-19 19:15:47 +01:00
parent e4e9710d18
commit 6e275778c9
2 changed files with 16 additions and 7 deletions

View file

@ -392,8 +392,10 @@ const Math::Vec4<u8> LookupTexture(const u8* source, int x, int y, const Texture
{ {
const u8* source_ptr = source + coarse_x * block_height * 2 + coarse_y * info.stride + texel_index_within_tile * 2; const u8* source_ptr = source + coarse_x * block_height * 2 + coarse_y * info.stride + texel_index_within_tile * 2;
// TODO: Better control this... // TODO: compoent order not verified
if (disable_alpha) { if (disable_alpha) {
// Show intensity as red, alpha as green
return { *source_ptr, *(source_ptr+1), 0, 255 }; return { *source_ptr, *(source_ptr+1), 0, 255 };
} else { } else {
return { *source_ptr, *source_ptr, *source_ptr, *(source_ptr+1)}; return { *source_ptr, *source_ptr, *source_ptr, *(source_ptr+1)};
@ -403,8 +405,6 @@ const Math::Vec4<u8> LookupTexture(const u8* source, int x, int y, const Texture
case Regs::TextureFormat::I8: case Regs::TextureFormat::I8:
{ {
const u8* source_ptr = source + coarse_x * block_height + coarse_y * info.stride + texel_index_within_tile; const u8* source_ptr = source + coarse_x * block_height + coarse_y * info.stride + texel_index_within_tile;
// TODO: Better control this...
return { *source_ptr, *source_ptr, *source_ptr, 255 }; return { *source_ptr, *source_ptr, *source_ptr, 255 };
} }
@ -412,7 +412,6 @@ const Math::Vec4<u8> LookupTexture(const u8* source, int x, int y, const Texture
{ {
const u8* source_ptr = source + coarse_x * block_height + coarse_y * info.stride + texel_index_within_tile; const u8* source_ptr = source + coarse_x * block_height + coarse_y * info.stride + texel_index_within_tile;
// TODO: Better control this...
if (disable_alpha) { if (disable_alpha) {
return { *source_ptr, *source_ptr, *source_ptr, 255 }; return { *source_ptr, *source_ptr, *source_ptr, 255 };
} else { } else {
@ -424,14 +423,15 @@ const Math::Vec4<u8> LookupTexture(const u8* source, int x, int y, const Texture
{ {
const u8* source_ptr = source + coarse_x * block_height / 2 + coarse_y * info.stride + texel_index_within_tile / 2; const u8* source_ptr = source + coarse_x * block_height / 2 + coarse_y * info.stride + texel_index_within_tile / 2;
// TODO: Order? // TODO: compoent order not verified
u8 i = (*source_ptr)&0xF; u8 i = (*source_ptr)&0xF;
u8 a = ((*source_ptr) & 0xF0) >> 4; u8 a = ((*source_ptr) & 0xF0) >> 4;
a |= a << 4; a |= a << 4;
i |= i << 4; i |= i << 4;
// TODO: Better control this...
if (disable_alpha) { if (disable_alpha) {
// Show intensity as red, alpha as green
return { i, a, 0, 255 }; return { i, a, 0, 255 };
} else { } else {
return { i, i, i, a }; return { i, i, i, a };

View file

@ -203,8 +203,17 @@ struct TextureInfo {
const Pica::Regs::TextureFormat& format); const Pica::Regs::TextureFormat& format);
}; };
const Math::Vec4<u8> LookupTexture(const u8* source, int x, int y, const TextureInfo& info, /**
* Lookup texel located at the given coordinates and return an RGBA vector of its color.
* @param source Source pointer to read data from
* @param s,t Texture coordinates to read from
* @param info TextureInfo object describing the texture setup
* @param disable_alpha This is used for debug widgets which use this method to display textures without providing a good way to visualize alpha by themselves. If true, this will return 255 for the alpha component, and either drop the information entirely or store it in an "unused" color channel.
* @todo Eventually we should get rid of the disable_alpha parameter.
*/
const Math::Vec4<u8> LookupTexture(const u8* source, int s, int t, const TextureInfo& info,
bool disable_alpha = false); bool disable_alpha = false);
void DumpTexture(const Pica::Regs::TextureConfig& texture_config, u8* data); void DumpTexture(const Pica::Regs::TextureConfig& texture_config, u8* data);
void DumpTevStageConfig(const std::array<Pica::Regs::TevStageConfig,6>& stages); void DumpTevStageConfig(const std::array<Pica::Regs::TevStageConfig,6>& stages);