summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends
diff options
context:
space:
mode:
authorMai <mathew1800@gmail.com>2022-09-29 09:05:51 -0400
committerGitHub <noreply@github.com>2022-09-29 09:05:51 -0400
commit0c19a1d87cbd51d62833d31d3413c61b3bc8ccf4 (patch)
treebd5a76acfeec8d7e70345b8720c5e164ef8e4da7 /Source/Core/VideoBackends
parent3fab5b2338f1b7bc1b4ddc0e283c2650a6e2e825 (diff)
parent3d0cd8b076a4a8ff4f6741769781305cd571b5b7 (diff)
Merge pull request #11100 from Pokechu22/software-settings-merge
Use the same settings for the software renderer as other backends
Diffstat (limited to 'Source/Core/VideoBackends')
-rw-r--r--Source/Core/VideoBackends/Software/CMakeLists.txt2
-rw-r--r--Source/Core/VideoBackends/Software/DebugUtil.cpp219
-rw-r--r--Source/Core/VideoBackends/Software/DebugUtil.h25
-rw-r--r--Source/Core/VideoBackends/Software/SWOGLWindow.cpp2
-rw-r--r--Source/Core/VideoBackends/Software/SWTexture.cpp71
-rw-r--r--Source/Core/VideoBackends/Software/SWTexture.h6
-rw-r--r--Source/Core/VideoBackends/Software/SWVertexLoader.cpp7
-rw-r--r--Source/Core/VideoBackends/Software/SWmain.cpp3
-rw-r--r--Source/Core/VideoBackends/Software/Tev.cpp45
9 files changed, 50 insertions, 330 deletions
diff --git a/Source/Core/VideoBackends/Software/CMakeLists.txt b/Source/Core/VideoBackends/Software/CMakeLists.txt
index 752fac48cc..f71421cb57 100644
--- a/Source/Core/VideoBackends/Software/CMakeLists.txt
+++ b/Source/Core/VideoBackends/Software/CMakeLists.txt
@@ -2,8 +2,6 @@ add_library(videosoftware
Clipper.cpp
Clipper.h
CopyRegion.h
- DebugUtil.cpp
- DebugUtil.h
EfbCopy.cpp
EfbCopy.h
EfbInterface.cpp
diff --git a/Source/Core/VideoBackends/Software/DebugUtil.cpp b/Source/Core/VideoBackends/Software/DebugUtil.cpp
deleted file mode 100644
index c580461172..0000000000
--- a/Source/Core/VideoBackends/Software/DebugUtil.cpp
+++ /dev/null
@@ -1,219 +0,0 @@
-// Copyright 2009 Dolphin Emulator Project
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#include "VideoBackends/Software/DebugUtil.h"
-
-#include <cstring>
-#include <memory>
-
-#include "Common/CommonTypes.h"
-#include "Common/FileUtil.h"
-#include "Common/Image.h"
-#include "Common/StringUtil.h"
-#include "Common/Swap.h"
-
-#include "VideoBackends/Software/EfbInterface.h"
-#include "VideoBackends/Software/TextureSampler.h"
-
-#include "VideoCommon/BPMemory.h"
-#include "VideoCommon/Statistics.h"
-#include "VideoCommon/VideoCommon.h"
-#include "VideoCommon/VideoConfig.h"
-
-namespace DebugUtil
-{
-static const int NUM_OBJECT_BUFFERS = 40;
-
-static u32* ObjectBuffer[NUM_OBJECT_BUFFERS];
-static u32 TempBuffer[NUM_OBJECT_BUFFERS];
-
-static bool DrawnToBuffer[NUM_OBJECT_BUFFERS];
-static const char* ObjectBufferName[NUM_OBJECT_BUFFERS];
-static int BufferBase[NUM_OBJECT_BUFFERS];
-
-void Init()
-{
- for (int i = 0; i < NUM_OBJECT_BUFFERS; i++)
- {
- ObjectBuffer[i] = new u32[EFB_WIDTH * EFB_HEIGHT]();
- DrawnToBuffer[i] = false;
- ObjectBufferName[i] = nullptr;
- BufferBase[i] = 0;
- }
-}
-
-void Shutdown()
-{
- for (auto& slot : ObjectBuffer)
- {
- delete[] slot;
- }
-}
-
-static void SaveTexture(const std::string& filename, u32 texmap, s32 mip)
-{
- u32 width = bpmem.tex.GetUnit(texmap).texImage0.width + 1;
- u32 height = bpmem.tex.GetUnit(texmap).texImage0.height + 1;
-
- auto data = std::make_unique<u8[]>(width * height * 4);
-
- GetTextureRGBA(data.get(), texmap, mip, width, height);
- Common::SavePNG(filename, data.get(), Common::ImageByteFormat::RGBA, width, height, width * 4);
-}
-
-void GetTextureRGBA(u8* dst, u32 texmap, s32 mip, u32 width, u32 height)
-{
- for (u32 y = 0; y < height; y++)
- {
- for (u32 x = 0; x < width; x++)
- {
- TextureSampler::SampleMip(x << 7, y << 7, mip, false, texmap, dst);
- dst += 4;
- }
- }
-}
-
-static s32 GetMaxTextureLod(u32 texmap)
-{
- u8 maxLod = bpmem.tex.GetUnit(texmap).texMode1.max_lod;
- u8 mip = maxLod >> 4;
- u8 fract = maxLod & 0xf;
-
- if (fract)
- ++mip;
-
- return (s32)mip;
-}
-
-void DumpActiveTextures()
-{
- for (unsigned int stageNum = 0; stageNum < bpmem.genMode.numindstages; stageNum++)
- {
- u32 texmap = bpmem.tevindref.getTexMap(stageNum);
-
- s32 maxLod = GetMaxTextureLod(texmap);
- for (s32 mip = 0; mip <= maxLod; ++mip)
- {
- SaveTexture(StringFromFormat("%star%i_ind%i_map%i_mip%i.png",
- File::GetUserPath(D_DUMPTEXTURES_IDX).c_str(),
- g_stats.this_frame.num_drawn_objects, stageNum, texmap, mip),
- texmap, mip);
- }
- }
-
- for (unsigned int stageNum = 0; stageNum <= bpmem.genMode.numtevstages; stageNum++)
- {
- int stageNum2 = stageNum >> 1;
- int stageOdd = stageNum & 1;
- TwoTevStageOrders& order = bpmem.tevorders[stageNum2];
-
- int texmap = order.getTexMap(stageOdd);
-
- s32 maxLod = GetMaxTextureLod(texmap);
- for (s32 mip = 0; mip <= maxLod; ++mip)
- {
- SaveTexture(StringFromFormat("%star%i_stage%i_map%i_mip%i.png",
- File::GetUserPath(D_DUMPTEXTURES_IDX).c_str(),
- g_stats.this_frame.num_drawn_objects, stageNum, texmap, mip),
- texmap, mip);
- }
- }
-}
-
-static void DumpEfb(const std::string& filename)
-{
- auto data = std::make_unique<u8[]>(EFB_WIDTH * EFB_HEIGHT * 4);
- u8* writePtr = data.get();
-
- for (u32 y = 0; y < EFB_HEIGHT; y++)
- {
- for (u32 x = 0; x < EFB_WIDTH; x++)
- {
- // ABGR to RGBA
- const u32 sample = Common::swap32(EfbInterface::GetColor(x, y));
-
- std::memcpy(writePtr, &sample, sizeof(u32));
- writePtr += sizeof(u32);
- }
- }
-
- Common::SavePNG(filename, data.get(), Common::ImageByteFormat::RGBA, EFB_WIDTH, EFB_HEIGHT,
- EFB_WIDTH * 4);
-}
-
-void DrawObjectBuffer(s16 x, s16 y, const u8* color, int bufferBase, int subBuffer,
- const char* name)
-{
- int buffer = bufferBase + subBuffer;
-
- u32 offset = (x + y * EFB_WIDTH) * 4;
- u8* dst = (u8*)&ObjectBuffer[buffer][offset];
- *(dst++) = color[2];
- *(dst++) = color[1];
- *(dst++) = color[0];
- *(dst++) = color[3];
-
- DrawnToBuffer[buffer] = true;
- ObjectBufferName[buffer] = name;
- BufferBase[buffer] = bufferBase;
-}
-
-void DrawTempBuffer(const u8* color, int buffer)
-{
- u8* dst = (u8*)&TempBuffer[buffer];
- *(dst++) = color[2];
- *(dst++) = color[1];
- *(dst++) = color[0];
- *(dst++) = color[3];
-}
-
-void CopyTempBuffer(s16 x, s16 y, int bufferBase, int subBuffer, const char* name)
-{
- int buffer = bufferBase + subBuffer;
-
- u32 offset = (x + y * EFB_WIDTH);
- ObjectBuffer[buffer][offset] = TempBuffer[buffer];
-
- DrawnToBuffer[buffer] = true;
- ObjectBufferName[buffer] = name;
- BufferBase[buffer] = bufferBase;
-}
-
-void OnObjectBegin()
-{
- if (g_ActiveConfig.bDumpTextures &&
- g_stats.this_frame.num_drawn_objects >= g_ActiveConfig.drawStart &&
- g_stats.this_frame.num_drawn_objects < g_ActiveConfig.drawEnd)
- {
- DumpActiveTextures();
- }
-}
-
-void OnObjectEnd()
-{
- if (g_ActiveConfig.bDumpObjects &&
- g_stats.this_frame.num_drawn_objects >= g_ActiveConfig.drawStart &&
- g_stats.this_frame.num_drawn_objects < g_ActiveConfig.drawEnd)
- {
- DumpEfb(StringFromFormat("%sobject%i.png", File::GetUserPath(D_DUMPOBJECTS_IDX).c_str(),
- g_stats.this_frame.num_drawn_objects));
- }
-
- for (int i = 0; i < NUM_OBJECT_BUFFERS; i++)
- {
- if (DrawnToBuffer[i])
- {
- DrawnToBuffer[i] = false;
- std::string filename = StringFromFormat(
- "%sobject%i_%s(%i).png", File::GetUserPath(D_DUMPOBJECTS_IDX).c_str(),
- g_stats.this_frame.num_drawn_objects, ObjectBufferName[i], i - BufferBase[i]);
-
- Common::SavePNG(filename, reinterpret_cast<u8*>(ObjectBuffer[i]),
- Common::ImageByteFormat::RGBA, EFB_WIDTH, EFB_HEIGHT, EFB_WIDTH * 4);
- memset(ObjectBuffer[i], 0, EFB_WIDTH * EFB_HEIGHT * sizeof(u32));
- }
- }
-
- g_stats.this_frame.num_drawn_objects++;
-}
-} // namespace DebugUtil
diff --git a/Source/Core/VideoBackends/Software/DebugUtil.h b/Source/Core/VideoBackends/Software/DebugUtil.h
deleted file mode 100644
index 20209577a9..0000000000
--- a/Source/Core/VideoBackends/Software/DebugUtil.h
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2008 Dolphin Emulator Project
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#pragma once
-
-#include "Common/CommonTypes.h"
-
-namespace DebugUtil
-{
-void Init();
-void Shutdown();
-
-void GetTextureRGBA(u8* dst, u32 texmap, s32 mip, u32 width, u32 height);
-
-void DumpActiveTextures();
-
-void OnObjectBegin();
-void OnObjectEnd();
-
-void DrawObjectBuffer(s16 x, s16 y, const u8* color, int bufferBase, int subBuffer,
- const char* name);
-
-void DrawTempBuffer(const u8* color, int buffer);
-void CopyTempBuffer(s16 x, s16 y, int bufferBase, int subBuffer, const char* name);
-} // namespace DebugUtil
diff --git a/Source/Core/VideoBackends/Software/SWOGLWindow.cpp b/Source/Core/VideoBackends/Software/SWOGLWindow.cpp
index 387375cc85..a002e3e519 100644
--- a/Source/Core/VideoBackends/Software/SWOGLWindow.cpp
+++ b/Source/Core/VideoBackends/Software/SWOGLWindow.cpp
@@ -105,7 +105,7 @@ void SWOGLWindow::ShowImage(const AbstractTexture* image,
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, static_cast<GLsizei>(sw_image->GetConfig().width),
static_cast<GLsizei>(sw_image->GetConfig().height), 0, GL_RGBA, GL_UNSIGNED_BYTE,
- sw_image->GetData());
+ sw_image->GetData(0, 0));
glUseProgram(m_image_program);
diff --git a/Source/Core/VideoBackends/Software/SWTexture.cpp b/Source/Core/VideoBackends/Software/SWTexture.cpp
index 082c26371e..6805ff0eb8 100644
--- a/Source/Core/VideoBackends/Software/SWTexture.cpp
+++ b/Source/Core/VideoBackends/Software/SWTexture.cpp
@@ -25,17 +25,17 @@ struct Pixel
#pragma pack(pop)
void CopyTextureData(const TextureConfig& src_config, const u8* src_ptr, u32 src_x, u32 src_y,
- u32 width, u32 height, const TextureConfig& dst_config, u8* dst_ptr, u32 dst_x,
- u32 dst_y)
+ u32 width, u32 height, u32 src_level, const TextureConfig& dst_config,
+ u8* dst_ptr, u32 dst_x, u32 dst_y, u32 dst_level)
{
- size_t texel_size = AbstractTexture::GetTexelSizeForFormat(src_config.format);
- size_t src_stride = src_config.GetStride();
- size_t src_offset =
+ const size_t texel_size = AbstractTexture::GetTexelSizeForFormat(src_config.format);
+ const size_t src_stride = src_config.GetMipStride(src_level);
+ const size_t src_offset =
static_cast<size_t>(src_y) * src_stride + static_cast<size_t>(src_x) * texel_size;
- size_t dst_stride = dst_config.GetStride();
- size_t dst_offset =
+ const size_t dst_stride = dst_config.GetMipStride(dst_level);
+ const size_t dst_offset =
static_cast<size_t>(dst_y) * dst_stride + static_cast<size_t>(dst_x) * texel_size;
- size_t copy_len = static_cast<size_t>(width) * texel_size;
+ const size_t copy_len = static_cast<size_t>(width) * texel_size;
src_ptr += src_offset;
dst_ptr += dst_offset;
@@ -56,15 +56,24 @@ void SWRenderer::ScaleTexture(AbstractFramebuffer* dst_framebuffer,
const SWTexture* software_source_texture = static_cast<const SWTexture*>(src_texture);
SWTexture* software_dest_texture = static_cast<SWTexture*>(dst_framebuffer->GetColorAttachment());
- CopyRegion(reinterpret_cast<const Pixel*>(software_source_texture->GetData()), src_rect,
+ CopyRegion(reinterpret_cast<const Pixel*>(software_source_texture->GetData(0, 0)), src_rect,
src_texture->GetWidth(), src_texture->GetHeight(),
- reinterpret_cast<Pixel*>(software_dest_texture->GetData()), dst_rect,
+ reinterpret_cast<Pixel*>(software_dest_texture->GetData(0, 0)), dst_rect,
dst_framebuffer->GetWidth(), dst_framebuffer->GetHeight());
}
SWTexture::SWTexture(const TextureConfig& tex_config) : AbstractTexture(tex_config)
{
- m_data.resize(tex_config.width * tex_config.height * 4);
+ m_data.resize(tex_config.layers);
+ for (u32 layer = 0; layer < tex_config.layers; layer++)
+ {
+ m_data[layer].resize(tex_config.levels);
+ for (u32 level = 0; level < tex_config.levels; level++)
+ {
+ m_data[layer][level].resize(std::max(tex_config.width >> level, 1u) *
+ std::max(tex_config.height >> level, 1u) * sizeof(Pixel));
+ }
+ }
}
void SWTexture::CopyRectangleFromTexture(const AbstractTexture* src,
@@ -72,10 +81,10 @@ void SWTexture::CopyRectangleFromTexture(const AbstractTexture* src,
u32 src_level, const MathUtil::Rectangle<int>& dst_rect,
u32 dst_layer, u32 dst_level)
{
- ASSERT(src_level == 0 && src_layer == 0 && dst_layer == 0 && dst_level == 0);
- CopyTextureData(src->GetConfig(), static_cast<const SWTexture*>(src)->m_data.data(),
- src_rect.left, src_rect.top, src_rect.GetWidth(), src_rect.GetHeight(), m_config,
- m_data.data(), dst_rect.left, dst_rect.top);
+ CopyTextureData(src->GetConfig(),
+ static_cast<const SWTexture*>(src)->GetData(src_layer, src_level), src_rect.left,
+ src_rect.top, src_rect.GetWidth(), src_rect.GetHeight(), src_level, m_config,
+ GetData(dst_layer, dst_level), dst_rect.left, dst_rect.top, dst_level);
}
void SWTexture::ResolveFromTexture(const AbstractTexture* src, const MathUtil::Rectangle<int>& rect,
u32 layer, u32 level)
@@ -85,17 +94,25 @@ void SWTexture::ResolveFromTexture(const AbstractTexture* src, const MathUtil::R
void SWTexture::Load(u32 level, u32 width, u32 height, u32 row_length, const u8* buffer,
size_t buffer_size)
{
- m_data.assign(buffer, buffer + buffer_size);
+ for (u32 layer = 0; layer < m_config.layers; layer++)
+ {
+ u8* data = GetData(layer, level);
+ for (u32 y = 0; y < height; y++)
+ {
+ memcpy(&data[width * y * sizeof(Pixel)], &buffer[y * row_length * sizeof(Pixel)],
+ width * sizeof(Pixel));
+ }
+ }
}
-const u8* SWTexture::GetData() const
+const u8* SWTexture::GetData(u32 layer, u32 level) const
{
- return m_data.data();
+ return m_data[layer][level].data();
}
-u8* SWTexture::GetData()
+u8* SWTexture::GetData(u32 layer, u32 level)
{
- return m_data.data();
+ return m_data[layer][level].data();
}
SWStagingTexture::SWStagingTexture(StagingTextureType type, const TextureConfig& config)
@@ -112,10 +129,10 @@ void SWStagingTexture::CopyFromTexture(const AbstractTexture* src,
const MathUtil::Rectangle<int>& src_rect, u32 src_layer,
u32 src_level, const MathUtil::Rectangle<int>& dst_rect)
{
- ASSERT(src_level == 0 && src_layer == 0);
- CopyTextureData(src->GetConfig(), static_cast<const SWTexture*>(src)->GetData(), src_rect.left,
- src_rect.top, src_rect.GetWidth(), src_rect.GetHeight(), m_config, m_data.data(),
- dst_rect.left, dst_rect.top);
+ CopyTextureData(src->GetConfig(),
+ static_cast<const SWTexture*>(src)->GetData(src_layer, src_level), src_rect.left,
+ src_rect.top, src_rect.GetWidth(), src_rect.GetHeight(), src_level, m_config,
+ m_data.data(), dst_rect.left, dst_rect.top, 0);
m_needs_flush = true;
}
@@ -123,10 +140,10 @@ void SWStagingTexture::CopyToTexture(const MathUtil::Rectangle<int>& src_rect, A
const MathUtil::Rectangle<int>& dst_rect, u32 dst_layer,
u32 dst_level)
{
- ASSERT(dst_level == 0 && dst_layer == 0);
CopyTextureData(m_config, m_data.data(), src_rect.left, src_rect.top, src_rect.GetWidth(),
- src_rect.GetHeight(), dst->GetConfig(), static_cast<SWTexture*>(dst)->GetData(),
- dst_rect.left, dst_rect.top);
+ src_rect.GetHeight(), 0, dst->GetConfig(),
+ static_cast<SWTexture*>(dst)->GetData(dst_layer, dst_level), dst_rect.left,
+ dst_rect.top, dst_level);
m_needs_flush = true;
}
diff --git a/Source/Core/VideoBackends/Software/SWTexture.h b/Source/Core/VideoBackends/Software/SWTexture.h
index bc3fcfbbf7..e3b90eb978 100644
--- a/Source/Core/VideoBackends/Software/SWTexture.h
+++ b/Source/Core/VideoBackends/Software/SWTexture.h
@@ -29,11 +29,11 @@ public:
void Load(u32 level, u32 width, u32 height, u32 row_length, const u8* buffer,
size_t buffer_size) override;
- const u8* GetData() const;
- u8* GetData();
+ const u8* GetData(u32 layer, u32 level) const;
+ u8* GetData(u32 layer, u32 level);
private:
- std::vector<u8> m_data;
+ std::vector<std::vector<std::vector<u8>>> m_data;
};
class SWStagingTexture final : public AbstractStagingTexture
diff --git a/Source/Core/VideoBackends/Software/SWVertexLoader.cpp b/Source/Core/VideoBackends/Software/SWVertexLoader.cpp
index 00357b12d7..a38fd163ec 100644
--- a/Source/Core/VideoBackends/Software/SWVertexLoader.cpp
+++ b/Source/Core/VideoBackends/Software/SWVertexLoader.cpp
@@ -10,7 +10,6 @@
#include "Common/CommonTypes.h"
#include "Common/Logging/Log.h"
-#include "VideoBackends/Software/DebugUtil.h"
#include "VideoBackends/Software/NativeVertexFormat.h"
#include "VideoBackends/Software/Rasterizer.h"
#include "VideoBackends/Software/SWRenderer.h"
@@ -42,8 +41,6 @@ DataReader SWVertexLoader::PrepareForAdditionalData(OpcodeDecoder::Primitive pri
void SWVertexLoader::DrawCurrentBatch(u32 base_index, u32 num_indices, u32 base_vertex)
{
- DebugUtil::OnObjectBegin();
-
using OpcodeDecoder::Primitive;
Primitive primitive_type = Primitive::GX_DRAW_QUADS;
switch (m_current_primitive_type)
@@ -90,10 +87,10 @@ void SWVertexLoader::DrawCurrentBatch(u32 base_index, u32 num_indices, u32 base_
// assemble and rasterize the primitive
m_setup_unit.SetupVertex();
- INCSTAT(g_stats.this_frame.num_vertices_loaded)
+ INCSTAT(g_stats.this_frame.num_vertices_loaded);
}
- DebugUtil::OnObjectEnd();
+ INCSTAT(g_stats.this_frame.num_drawn_objects);
}
void SWVertexLoader::SetFormat()
diff --git a/Source/Core/VideoBackends/Software/SWmain.cpp b/Source/Core/VideoBackends/Software/SWmain.cpp
index 5076106089..b6d2005c26 100644
--- a/Source/Core/VideoBackends/Software/SWmain.cpp
+++ b/Source/Core/VideoBackends/Software/SWmain.cpp
@@ -14,7 +14,6 @@
#include "Common/MsgHandler.h"
#include "VideoBackends/Software/Clipper.h"
-#include "VideoBackends/Software/DebugUtil.h"
#include "VideoBackends/Software/EfbInterface.h"
#include "VideoBackends/Software/Rasterizer.h"
#include "VideoBackends/Software/SWOGLWindow.h"
@@ -105,7 +104,6 @@ bool VideoSoftware::Initialize(const WindowSystemInfo& wsi)
Clipper::Init();
Rasterizer::Init();
- DebugUtil::Init();
g_renderer = std::make_unique<SWRenderer>(std::move(window));
g_vertex_manager = std::make_unique<SWVertexLoader>();
@@ -135,7 +133,6 @@ void VideoSoftware::Shutdown()
if (g_renderer)
g_renderer->Shutdown();
- DebugUtil::Shutdown();
g_texture_cache.reset();
g_perf_query.reset();
g_framebuffer_manager.reset();
diff --git a/Source/Core/VideoBackends/Software/Tev.cpp b/Source/Core/VideoBackends/Software/Tev.cpp
index e788d55d92..f2f903ccfc 100644
--- a/Source/Core/VideoBackends/Software/Tev.cpp
+++ b/Source/Core/VideoBackends/Software/Tev.cpp
@@ -9,7 +9,6 @@
#include "Common/ChunkFile.h"
#include "Common/CommonTypes.h"
-#include "VideoBackends/Software/DebugUtil.h"
#include "VideoBackends/Software/EfbInterface.h"
#include "VideoBackends/Software/SWBoundingBox.h"
#include "VideoBackends/Software/TextureSampler.h"
@@ -428,16 +427,6 @@ void Tev::Draw()
TextureSampler::Sample(Uv[texcoordSel].s >> scaleS, Uv[texcoordSel].t >> scaleT,
IndirectLod[stageNum], IndirectLinear[stageNum], texmap,
IndirectTex[stageNum]);
-
-#if ALLOW_TEV_DUMPS
- if (g_ActiveConfig.bDumpTevStages)
- {
- u8 stage[4] = {IndirectTex[stageNum][TextureSampler::ALP_SMP],
- IndirectTex[stageNum][TextureSampler::BLU_SMP],
- IndirectTex[stageNum][TextureSampler::GRN_SMP], 255};
- DebugUtil::DrawTempBuffer(stage, INDIRECT + stageNum);
- }
-#endif
}
for (unsigned int stageNum = 0; stageNum <= bpmem.genMode.numtevstages; stageNum++)
@@ -478,11 +467,6 @@ void Tev::Draw()
std::memset(texel, 0, 4);
}
-#if ALLOW_TEV_DUMPS
- if (g_ActiveConfig.bDumpTevTextureFetches)
- DebugUtil::DrawTempBuffer(texel, DIRECT_TFETCH + stageNum);
-#endif
-
const auto& swap = bpmem.tevksel.GetSwapTable(ac.tswap);
TexColor.r = texel[u32(swap[ColorChannel::Red])];
TexColor.g = texel[u32(swap[ColorChannel::Green])];
@@ -547,15 +531,6 @@ void Tev::Draw()
Reg[ac.dest].a = Clamp255(Reg[ac.dest].a);
else
Reg[ac.dest].a = Clamp1024(Reg[ac.dest].a);
-
-#if ALLOW_TEV_DUMPS
- if (g_ActiveConfig.bDumpTevStages)
- {
- u8 stage[4] = {(u8)Reg[cc.dest].r, (u8)Reg[cc.dest].g, (u8)Reg[cc.dest].b,
- (u8)Reg[ac.dest].a};
- DebugUtil::DrawTempBuffer(stage, DIRECT + stageNum);
- }
-#endif
}
// convert to 8 bits per component
@@ -711,26 +686,6 @@ void Tev::Draw()
BBoxManager::Update(static_cast<u16>(Position[0] & ~1), static_cast<u16>(Position[0] | 1),
static_cast<u16>(Position[1] & ~1), static_cast<u16>(Position[1] | 1));
-#if ALLOW_TEV_DUMPS
- if (g_ActiveConfig.bDumpTevStages)
- {
- for (u32 i = 0; i < bpmem.genMode.numindstages; ++i)
- DebugUtil::CopyTempBuffer(Position[0], Position[1], INDIRECT, i, "Indirect");
- for (u32 i = 0; i <= bpmem.genMode.numtevstages; ++i)
- DebugUtil::CopyTempBuffer(Position[0], Position[1], DIRECT, i, "Stage");
- }
-
- if (g_ActiveConfig.bDumpTevTextureFetches)
- {
- for (u32 i = 0; i <= bpmem.genMode.numtevstages; ++i)
- {
- TwoTevStageOrders& order = bpmem.tevorders[i >> 1];
- if (order.getEnable(i & 1))
- DebugUtil::CopyTempBuffer(Position[0], Position[1], DIRECT_TFETCH, i, "TFetch");
- }
- }
-#endif
-
INCSTAT(g_stats.this_frame.tev_pixels_out);
EfbInterface::IncPerfCounterQuadCount(PQ_BLEND_INPUT);