Core: Remove ImageWrite and get rid of -Wmissing-declarations warnings
This commit is contained in:
parent
eafe005672
commit
0ad2f3da45
|
@ -65,4 +65,29 @@ bool SavePNG(const std::string& path, const u8* input, ImageByteFormat format, u
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ConvertRGBAToRGBAndSavePNG(const std::string& path, const u8* input, u32 width, u32 height,
|
||||||
|
int stride)
|
||||||
|
{
|
||||||
|
const std::vector<u8> data = RGBAToRGB(input, width, height, stride);
|
||||||
|
return SavePNG(path, data.data(), ImageByteFormat::RGB, width, height);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<u8> RGBAToRGB(const u8* input, u32 width, u32 height, int row_stride)
|
||||||
|
{
|
||||||
|
std::vector<u8> buffer;
|
||||||
|
buffer.reserve(width * height * 3);
|
||||||
|
|
||||||
|
for (u32 y = 0; y < height; ++y)
|
||||||
|
{
|
||||||
|
const u8* pos = input + y * row_stride;
|
||||||
|
for (u32 x = 0; x < width; ++x)
|
||||||
|
{
|
||||||
|
buffer.push_back(pos[x * 4]);
|
||||||
|
buffer.push_back(pos[x * 4 + 1]);
|
||||||
|
buffer.push_back(pos[x * 4 + 2]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return buffer;
|
||||||
|
}
|
||||||
} // namespace Common
|
} // namespace Common
|
||||||
|
|
|
@ -22,4 +22,9 @@ enum class ImageByteFormat
|
||||||
|
|
||||||
bool SavePNG(const std::string& path, const u8* input, ImageByteFormat format, u32 width,
|
bool SavePNG(const std::string& path, const u8* input, ImageByteFormat format, u32 width,
|
||||||
u32 height, int stride = 0);
|
u32 height, int stride = 0);
|
||||||
|
bool ConvertRGBAToRGBAndSavePNG(const std::string& path, const u8* input, u32 width, u32 height,
|
||||||
|
int stride = 0);
|
||||||
|
|
||||||
|
std::vector<u8> RGBAToRGB(const u8* input, u32 width, u32 height, int row_stride = 0);
|
||||||
|
|
||||||
} // namespace Common
|
} // namespace Common
|
||||||
|
|
|
@ -5,18 +5,18 @@
|
||||||
#include "VideoBackends/Software/DebugUtil.h"
|
#include "VideoBackends/Software/DebugUtil.h"
|
||||||
|
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
#include "Common/CommonTypes.h"
|
#include "Common/CommonTypes.h"
|
||||||
#include "Common/FileUtil.h"
|
#include "Common/FileUtil.h"
|
||||||
|
#include "Common/Image.h"
|
||||||
#include "Common/StringUtil.h"
|
#include "Common/StringUtil.h"
|
||||||
#include "Common/Swap.h"
|
#include "Common/Swap.h"
|
||||||
|
|
||||||
#include "VideoBackends/Software/EfbInterface.h"
|
#include "VideoBackends/Software/EfbInterface.h"
|
||||||
#include "VideoBackends/Software/SWRenderer.h"
|
|
||||||
#include "VideoBackends/Software/TextureSampler.h"
|
#include "VideoBackends/Software/TextureSampler.h"
|
||||||
|
|
||||||
#include "VideoCommon/BPMemory.h"
|
#include "VideoCommon/BPMemory.h"
|
||||||
#include "VideoCommon/ImageWrite.h"
|
|
||||||
#include "VideoCommon/Statistics.h"
|
#include "VideoCommon/Statistics.h"
|
||||||
#include "VideoCommon/VideoCommon.h"
|
#include "VideoCommon/VideoCommon.h"
|
||||||
#include "VideoCommon/VideoConfig.h"
|
#include "VideoCommon/VideoConfig.h"
|
||||||
|
@ -61,12 +61,10 @@ static void SaveTexture(const std::string& filename, u32 texmap, s32 mip)
|
||||||
u32 width = ti0.width + 1;
|
u32 width = ti0.width + 1;
|
||||||
u32 height = ti0.height + 1;
|
u32 height = ti0.height + 1;
|
||||||
|
|
||||||
u8* data = new u8[width * height * 4];
|
auto data = std::make_unique<u8[]>(width * height * 4);
|
||||||
|
|
||||||
GetTextureRGBA(data, texmap, mip, width, height);
|
GetTextureRGBA(data.get(), texmap, mip, width, height);
|
||||||
|
Common::SavePNG(filename, data.get(), Common::ImageByteFormat::RGBA, width, height, width * 4);
|
||||||
TextureToPng(data, width * 4, filename, width, height, true);
|
|
||||||
delete[] data;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GetTextureRGBA(u8* dst, u32 texmap, s32 mip, u32 width, u32 height)
|
void GetTextureRGBA(u8* dst, u32 texmap, s32 mip, u32 width, u32 height)
|
||||||
|
@ -133,8 +131,8 @@ void DumpActiveTextures()
|
||||||
|
|
||||||
static void DumpEfb(const std::string& filename)
|
static void DumpEfb(const std::string& filename)
|
||||||
{
|
{
|
||||||
u8* data = new u8[EFB_WIDTH * EFB_HEIGHT * 4];
|
auto data = std::make_unique<u8[]>(EFB_WIDTH * EFB_HEIGHT * 4);
|
||||||
u8* writePtr = data;
|
u8* writePtr = data.get();
|
||||||
|
|
||||||
for (u32 y = 0; y < EFB_HEIGHT; y++)
|
for (u32 y = 0; y < EFB_HEIGHT; y++)
|
||||||
{
|
{
|
||||||
|
@ -148,8 +146,8 @@ static void DumpEfb(const std::string& filename)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TextureToPng(data, EFB_WIDTH * 4, filename, EFB_WIDTH, EFB_HEIGHT, true);
|
Common::SavePNG(filename, data.get(), Common::ImageByteFormat::RGBA, EFB_WIDTH, EFB_HEIGHT,
|
||||||
delete[] data;
|
EFB_WIDTH * 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DrawObjectBuffer(s16 x, s16 y, const u8* color, int bufferBase, int subBuffer,
|
void DrawObjectBuffer(s16 x, s16 y, const u8* color, int bufferBase, int subBuffer,
|
||||||
|
@ -219,7 +217,8 @@ void OnObjectEnd()
|
||||||
"%sobject%i_%s(%i).png", File::GetUserPath(D_DUMPOBJECTS_IDX).c_str(),
|
"%sobject%i_%s(%i).png", File::GetUserPath(D_DUMPOBJECTS_IDX).c_str(),
|
||||||
g_stats.this_frame.num_drawn_objects, ObjectBufferName[i], i - BufferBase[i]);
|
g_stats.this_frame.num_drawn_objects, ObjectBufferName[i], i - BufferBase[i]);
|
||||||
|
|
||||||
TextureToPng((u8*)ObjectBuffer[i], EFB_WIDTH * 4, filename, EFB_WIDTH, EFB_HEIGHT, true);
|
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));
|
memset(ObjectBuffer[i], 0, EFB_WIDTH * EFB_HEIGHT * sizeof(u32));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,10 +5,10 @@
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
#include "Common/Assert.h"
|
#include "Common/Assert.h"
|
||||||
|
#include "Common/Image.h"
|
||||||
#include "Common/MsgHandler.h"
|
#include "Common/MsgHandler.h"
|
||||||
#include "VideoCommon/AbstractStagingTexture.h"
|
#include "VideoCommon/AbstractStagingTexture.h"
|
||||||
#include "VideoCommon/AbstractTexture.h"
|
#include "VideoCommon/AbstractTexture.h"
|
||||||
#include "VideoCommon/ImageWrite.h"
|
|
||||||
#include "VideoCommon/RenderBase.h"
|
#include "VideoCommon/RenderBase.h"
|
||||||
|
|
||||||
AbstractTexture::AbstractTexture(const TextureConfig& c) : m_config(c)
|
AbstractTexture::AbstractTexture(const TextureConfig& c) : m_config(c)
|
||||||
|
@ -48,9 +48,10 @@ bool AbstractTexture::Save(const std::string& filename, unsigned int level)
|
||||||
if (!readback_texture->Map())
|
if (!readback_texture->Map())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return TextureToPng(reinterpret_cast<const u8*>(readback_texture->GetMappedPointer()),
|
return Common::SavePNG(filename,
|
||||||
static_cast<int>(readback_texture->GetMappedStride()), filename, level_width,
|
reinterpret_cast<const u8*>(readback_texture->GetMappedPointer()),
|
||||||
level_height);
|
Common::ImageByteFormat::RGBA, level_width, level_height,
|
||||||
|
static_cast<int>(readback_texture->GetMappedStride()));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AbstractTexture::IsCompressedFormat(AbstractTextureFormat format)
|
bool AbstractTexture::IsCompressedFormat(AbstractTextureFormat format)
|
||||||
|
|
|
@ -42,8 +42,6 @@ add_library(videocommon
|
||||||
HiresTextures.cpp
|
HiresTextures.cpp
|
||||||
HiresTextures.h
|
HiresTextures.h
|
||||||
HiresTextures_DDSLoader.cpp
|
HiresTextures_DDSLoader.cpp
|
||||||
ImageWrite.cpp
|
|
||||||
ImageWrite.h
|
|
||||||
IndexGenerator.cpp
|
IndexGenerator.cpp
|
||||||
IndexGenerator.h
|
IndexGenerator.h
|
||||||
LightingShaderGen.cpp
|
LightingShaderGen.cpp
|
||||||
|
|
|
@ -1,57 +0,0 @@
|
||||||
// Copyright 2008 Dolphin Emulator Project
|
|
||||||
// Licensed under GPLv2+
|
|
||||||
// Refer to the license.txt file included.
|
|
||||||
|
|
||||||
#include <list>
|
|
||||||
#include <string>
|
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
#include "Common/CommonTypes.h"
|
|
||||||
#include "Common/File.h"
|
|
||||||
#include "Common/FileUtil.h"
|
|
||||||
#include "Common/Image.h"
|
|
||||||
|
|
||||||
bool SaveData(const std::string& filename, const std::string& data)
|
|
||||||
{
|
|
||||||
std::ofstream f;
|
|
||||||
File::OpenFStream(f, filename, std::ios::binary);
|
|
||||||
f << data;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
TextureToPng
|
|
||||||
|
|
||||||
Inputs:
|
|
||||||
data : This is an array of RGBA with 8 bits per channel. 4 bytes for each pixel.
|
|
||||||
row_stride: Determines the amount of bytes per row of pixels.
|
|
||||||
*/
|
|
||||||
bool TextureToPng(const u8* data, int row_stride, const std::string& filename, int width,
|
|
||||||
int height, bool save_alpha)
|
|
||||||
{
|
|
||||||
if (!data)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
if (save_alpha)
|
|
||||||
{
|
|
||||||
return Common::SavePNG(filename, data, Common::ImageByteFormat::RGBA, width, height,
|
|
||||||
row_stride);
|
|
||||||
}
|
|
||||||
|
|
||||||
std::vector<u8> buffer;
|
|
||||||
buffer.reserve(width * height * 3);
|
|
||||||
|
|
||||||
for (int y = 0; y < height; ++y)
|
|
||||||
{
|
|
||||||
const u8* pos = data + y * row_stride;
|
|
||||||
for (int x = 0; x < width; ++x)
|
|
||||||
{
|
|
||||||
buffer.push_back(pos[x * 4]);
|
|
||||||
buffer.push_back(pos[x * 4 + 1]);
|
|
||||||
buffer.push_back(pos[x * 4 + 2]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return Common::SavePNG(filename, buffer.data(), Common::ImageByteFormat::RGB, width, height);
|
|
||||||
}
|
|
|
@ -1,12 +0,0 @@
|
||||||
// Copyright 2008 Dolphin Emulator Project
|
|
||||||
// Licensed under GPLv2+
|
|
||||||
// Refer to the license.txt file included.
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include <string>
|
|
||||||
#include "Common/CommonTypes.h"
|
|
||||||
|
|
||||||
bool SaveData(const std::string& filename, const std::string& data);
|
|
||||||
bool TextureToPng(const u8* data, int row_stride, const std::string& filename, int width,
|
|
||||||
int height, bool save_alpha = true);
|
|
|
@ -29,9 +29,9 @@
|
||||||
#include "Common/ChunkFile.h"
|
#include "Common/ChunkFile.h"
|
||||||
#include "Common/CommonTypes.h"
|
#include "Common/CommonTypes.h"
|
||||||
#include "Common/Config/Config.h"
|
#include "Common/Config/Config.h"
|
||||||
#include "Common/Event.h"
|
|
||||||
#include "Common/FileUtil.h"
|
#include "Common/FileUtil.h"
|
||||||
#include "Common/Flag.h"
|
#include "Common/Flag.h"
|
||||||
|
#include "Common/Image.h"
|
||||||
#include "Common/Logging/Log.h"
|
#include "Common/Logging/Log.h"
|
||||||
#include "Common/MsgHandler.h"
|
#include "Common/MsgHandler.h"
|
||||||
#include "Common/Profiler.h"
|
#include "Common/Profiler.h"
|
||||||
|
@ -64,7 +64,6 @@
|
||||||
#include "VideoCommon/FramebufferManager.h"
|
#include "VideoCommon/FramebufferManager.h"
|
||||||
#include "VideoCommon/FramebufferShaderGen.h"
|
#include "VideoCommon/FramebufferShaderGen.h"
|
||||||
#include "VideoCommon/FreeLookCamera.h"
|
#include "VideoCommon/FreeLookCamera.h"
|
||||||
#include "VideoCommon/ImageWrite.h"
|
|
||||||
#include "VideoCommon/NetPlayChatUI.h"
|
#include "VideoCommon/NetPlayChatUI.h"
|
||||||
#include "VideoCommon/NetPlayGolfUI.h"
|
#include "VideoCommon/NetPlayGolfUI.h"
|
||||||
#include "VideoCommon/OnScreenDisplay.h"
|
#include "VideoCommon/OnScreenDisplay.h"
|
||||||
|
@ -92,6 +91,12 @@ static float AspectToWidescreen(float aspect)
|
||||||
return aspect * ((16.0f / 9.0f) / (4.0f / 3.0f));
|
return aspect * ((16.0f / 9.0f) / (4.0f / 3.0f));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool DumpFrameToPNG(const FrameDump::FrameData& frame, const std::string& file_name)
|
||||||
|
{
|
||||||
|
return Common::ConvertRGBAToRGBAndSavePNG(file_name, frame.data, frame.width, frame.height,
|
||||||
|
frame.stride);
|
||||||
|
}
|
||||||
|
|
||||||
Renderer::Renderer(int backbuffer_width, int backbuffer_height, float backbuffer_scale,
|
Renderer::Renderer(int backbuffer_width, int backbuffer_height, float backbuffer_scale,
|
||||||
AbstractTextureFormat backbuffer_format)
|
AbstractTextureFormat backbuffer_format)
|
||||||
: m_backbuffer_width(backbuffer_width), m_backbuffer_height(backbuffer_height),
|
: m_backbuffer_width(backbuffer_width), m_backbuffer_height(backbuffer_height),
|
||||||
|
@ -1572,8 +1577,7 @@ void Renderer::FrameDumpThreadFunc()
|
||||||
{
|
{
|
||||||
std::lock_guard<std::mutex> lk(m_screenshot_lock);
|
std::lock_guard<std::mutex> lk(m_screenshot_lock);
|
||||||
|
|
||||||
if (TextureToPng(frame.data, frame.stride, m_screenshot_name, frame.width, frame.height,
|
if (DumpFrameToPNG(frame, m_screenshot_name))
|
||||||
false))
|
|
||||||
OSD::AddMessage("Screenshot saved to " + m_screenshot_name);
|
OSD::AddMessage("Screenshot saved to " + m_screenshot_name);
|
||||||
|
|
||||||
// Reset settings
|
// Reset settings
|
||||||
|
@ -1681,8 +1685,7 @@ bool Renderer::StartFrameDumpToImage(const FrameDump::FrameData&)
|
||||||
|
|
||||||
void Renderer::DumpFrameToImage(const FrameDump::FrameData& frame)
|
void Renderer::DumpFrameToImage(const FrameDump::FrameData& frame)
|
||||||
{
|
{
|
||||||
std::string filename = GetFrameDumpNextImageFileName();
|
DumpFrameToPNG(frame, GetFrameDumpNextImageFileName());
|
||||||
TextureToPng(frame.data, frame.stride, filename, frame.width, frame.height, false);
|
|
||||||
m_frame_dump_image_counter++;
|
m_frame_dump_image_counter++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -48,7 +48,6 @@
|
||||||
<ClCompile Include="FreeLookCamera.cpp" />
|
<ClCompile Include="FreeLookCamera.cpp" />
|
||||||
<ClCompile Include="HiresTextures.cpp" />
|
<ClCompile Include="HiresTextures.cpp" />
|
||||||
<ClCompile Include="HiresTextures_DDSLoader.cpp" />
|
<ClCompile Include="HiresTextures_DDSLoader.cpp" />
|
||||||
<ClCompile Include="ImageWrite.cpp" />
|
|
||||||
<ClCompile Include="IndexGenerator.cpp" />
|
<ClCompile Include="IndexGenerator.cpp" />
|
||||||
<ClCompile Include="NetPlayChatUI.cpp" />
|
<ClCompile Include="NetPlayChatUI.cpp" />
|
||||||
<ClCompile Include="NetPlayGolfUI.cpp" />
|
<ClCompile Include="NetPlayGolfUI.cpp" />
|
||||||
|
@ -132,7 +131,6 @@
|
||||||
<ClInclude Include="UberShaderCommon.h" />
|
<ClInclude Include="UberShaderCommon.h" />
|
||||||
<ClInclude Include="UberShaderPixel.h" />
|
<ClInclude Include="UberShaderPixel.h" />
|
||||||
<ClInclude Include="HiresTextures.h" />
|
<ClInclude Include="HiresTextures.h" />
|
||||||
<ClInclude Include="ImageWrite.h" />
|
|
||||||
<ClInclude Include="IndexGenerator.h" />
|
<ClInclude Include="IndexGenerator.h" />
|
||||||
<ClInclude Include="LightingShaderGen.h" />
|
<ClInclude Include="LightingShaderGen.h" />
|
||||||
<ClInclude Include="LookUpTables.h" />
|
<ClInclude Include="LookUpTables.h" />
|
||||||
|
@ -201,4 +199,4 @@
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
<ImportGroup Label="ExtensionTargets">
|
<ImportGroup Label="ExtensionTargets">
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
@ -95,9 +95,6 @@
|
||||||
<ClCompile Include="HiresTextures.cpp">
|
<ClCompile Include="HiresTextures.cpp">
|
||||||
<Filter>Util</Filter>
|
<Filter>Util</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="ImageWrite.cpp">
|
|
||||||
<Filter>Util</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="IndexGenerator.cpp">
|
<ClCompile Include="IndexGenerator.cpp">
|
||||||
<Filter>Util</Filter>
|
<Filter>Util</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
@ -290,9 +287,6 @@
|
||||||
<ClInclude Include="HiresTextures.h">
|
<ClInclude Include="HiresTextures.h">
|
||||||
<Filter>Util</Filter>
|
<Filter>Util</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="ImageWrite.h">
|
|
||||||
<Filter>Util</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="IndexGenerator.h">
|
<ClInclude Include="IndexGenerator.h">
|
||||||
<Filter>Util</Filter>
|
<Filter>Util</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
@ -411,4 +405,4 @@
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Text Include="CMakeLists.txt" />
|
<Text Include="CMakeLists.txt" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
Loading…
Reference in New Issue