summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon
diff options
context:
space:
mode:
authorPierre Bourdon <delroth@gmail.com>2014-02-28 23:08:56 +0100
committerPierre Bourdon <delroth@gmail.com>2014-02-28 23:08:56 +0100
commitbc844a168fe54174cd4de04e17ef23849e1fcccb (patch)
tree1293208fb1072c1f13cdf16006190a18a7882dfd /Source/Core/VideoCommon
parent1a7e3b3227070fcac6499e6e9eaa8d8ad3ef3e49 (diff)
parent892012dc02d13229e88db1809f7b785fc3516787 (diff)
Merge pull request #100 from Tilka/misc_fixes
Misc fixes
Diffstat (limited to 'Source/Core/VideoCommon')
-rw-r--r--Source/Core/VideoCommon/BPFunctions.cpp1
-rw-r--r--Source/Core/VideoCommon/FPSCounter.cpp2
-rw-r--r--Source/Core/VideoCommon/Fifo.cpp1
-rw-r--r--Source/Core/VideoCommon/ImageWrite.cpp2
-rw-r--r--Source/Core/VideoCommon/ImageWrite.h2
-rw-r--r--Source/Core/VideoCommon/TextureCacheBase.cpp13
-rw-r--r--Source/Core/VideoCommon/TextureCacheBase.h2
-rw-r--r--Source/Core/VideoCommon/TextureConversionShader.cpp34
-rw-r--r--Source/Core/VideoCommon/TextureDecoder_x64.cpp7
-rw-r--r--Source/Core/VideoCommon/VertexLoader.cpp28
-rw-r--r--Source/Core/VideoCommon/VertexLoader.h9
11 files changed, 47 insertions, 54 deletions
diff --git a/Source/Core/VideoCommon/BPFunctions.cpp b/Source/Core/VideoCommon/BPFunctions.cpp
index a3bcd3af30..1149392179 100644
--- a/Source/Core/VideoCommon/BPFunctions.cpp
+++ b/Source/Core/VideoCommon/BPFunctions.cpp
@@ -14,7 +14,6 @@
#include "VideoCommon/VertexShaderManager.h"
#include "VideoCommon/VideoConfig.h"
-const bool renderFog = false;
namespace BPFunctions
{
// ----------------------------------------------
diff --git a/Source/Core/VideoCommon/FPSCounter.cpp b/Source/Core/VideoCommon/FPSCounter.cpp
index cdf7c1d85f..59a67e002a 100644
--- a/Source/Core/VideoCommon/FPSCounter.cpp
+++ b/Source/Core/VideoCommon/FPSCounter.cpp
@@ -32,7 +32,7 @@ static void LogFPSToFile(unsigned long val)
s_bench_file.Open(File::GetUserPath(D_LOGS_IDX) + "fps.txt", "w");
char buffer[256];
- snprintf(buffer, 256, "%ld\n", val);
+ snprintf(buffer, 256, "%lu\n", val);
s_bench_file.WriteArray(buffer, strlen(buffer));
}
diff --git a/Source/Core/VideoCommon/Fifo.cpp b/Source/Core/VideoCommon/Fifo.cpp
index 9e3f615291..233f1e8109 100644
--- a/Source/Core/VideoCommon/Fifo.cpp
+++ b/Source/Core/VideoCommon/Fifo.cpp
@@ -70,6 +70,7 @@ void Fifo_Shutdown()
{
if (GpuRunningState) PanicAlert("Fifo shutting down while active");
FreeMemoryPages(videoBuffer, FIFO_SIZE);
+ videoBuffer = NULL;
}
u8* GetVideoBufferStartPtr()
diff --git a/Source/Core/VideoCommon/ImageWrite.cpp b/Source/Core/VideoCommon/ImageWrite.cpp
index ad0449dd2f..a3c9dec86a 100644
--- a/Source/Core/VideoCommon/ImageWrite.cpp
+++ b/Source/Core/VideoCommon/ImageWrite.cpp
@@ -26,7 +26,7 @@ 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(u8* data, int row_stride, const std::string filename, int width, int height, bool saveAlpha)
+bool TextureToPng(u8* data, int row_stride, const std::string& filename, int width, int height, bool saveAlpha)
{
bool success = false;
diff --git a/Source/Core/VideoCommon/ImageWrite.h b/Source/Core/VideoCommon/ImageWrite.h
index 5df630651a..b46dc1376f 100644
--- a/Source/Core/VideoCommon/ImageWrite.h
+++ b/Source/Core/VideoCommon/ImageWrite.h
@@ -7,4 +7,4 @@
#include "Common/Common.h"
bool SaveData(const char* filename, const char* pdata);
-bool TextureToPng(u8* data, int row_stride, const std::string filename, int width, int height, bool saveAlpha = true);
+bool TextureToPng(u8* data, int row_stride, const std::string& filename, int width, int height, bool saveAlpha = true);
diff --git a/Source/Core/VideoCommon/TextureCacheBase.cpp b/Source/Core/VideoCommon/TextureCacheBase.cpp
index 5abce6fdee..9ea6fae5ad 100644
--- a/Source/Core/VideoCommon/TextureCacheBase.cpp
+++ b/Source/Core/VideoCommon/TextureCacheBase.cpp
@@ -73,11 +73,8 @@ void TextureCache::Invalidate()
TextureCache::~TextureCache()
{
Invalidate();
- if (temp)
- {
- FreeAlignedMemory(temp);
- temp = NULL;
- }
+ FreeAlignedMemory(temp);
+ temp = NULL;
}
void TextureCache::OnConfigChanged(VideoConfig& config)
@@ -238,11 +235,11 @@ bool TextureCache::CheckForCustomTextureLODs(u64 tex_hash, int texformat, unsign
for (unsigned int level = 1; level < levels; ++level)
{
- sprintf(texPathTemp, "%s_mip%i", texBasePathTemp, level);
+ sprintf(texPathTemp, "%s_mip%u", texBasePathTemp, level);
if (!HiresTextures::HiresTexExists(texPathTemp))
{
if (level > 1)
- WARN_LOG(VIDEO, "Couldn't find custom texture LOD with index %i (filename: %s), disabling custom LODs for this texture", level, texPathTemp);
+ WARN_LOG(VIDEO, "Couldn't find custom texture LOD with index %u (filename: %s), disabling custom LODs for this texture", level, texPathTemp);
return false;
}
@@ -260,7 +257,7 @@ PC_TexFormat TextureCache::LoadCustomTexture(u64 tex_hash, int texformat, unsign
if (level == 0)
sprintf(texPathTemp, "%s_%08x_%i", SConfig::GetInstance().m_LocalCoreStartupParameter.m_strUniqueID.c_str(), tex_hash_u32, texformat);
else
- sprintf(texPathTemp, "%s_%08x_%i_mip%i", SConfig::GetInstance().m_LocalCoreStartupParameter.m_strUniqueID.c_str(), tex_hash_u32, texformat, level);
+ sprintf(texPathTemp, "%s_%08x_%i_mip%u", SConfig::GetInstance().m_LocalCoreStartupParameter.m_strUniqueID.c_str(), tex_hash_u32, texformat, level);
unsigned int required_size = 0;
PC_TexFormat ret = HiresTextures::GetHiresTex(texPathTemp, &newWidth, &newHeight, &required_size, texformat, temp_size, temp);
diff --git a/Source/Core/VideoCommon/TextureCacheBase.h b/Source/Core/VideoCommon/TextureCacheBase.h
index 517f45433d..f66726f478 100644
--- a/Source/Core/VideoCommon/TextureCacheBase.h
+++ b/Source/Core/VideoCommon/TextureCacheBase.h
@@ -72,7 +72,7 @@ public:
virtual ~TCacheEntryBase();
virtual void Bind(unsigned int stage) = 0;
- virtual bool Save(const std::string filename, unsigned int level) = 0;
+ virtual bool Save(const std::string& filename, unsigned int level) = 0;
virtual void Load(unsigned int width, unsigned int height,
unsigned int expanded_width, unsigned int level) = 0;
diff --git a/Source/Core/VideoCommon/TextureConversionShader.cpp b/Source/Core/VideoCommon/TextureConversionShader.cpp
index 47f9df21ba..1564afa338 100644
--- a/Source/Core/VideoCommon/TextureConversionShader.cpp
+++ b/Source/Core/VideoCommon/TextureConversionShader.cpp
@@ -141,13 +141,13 @@ void WriteToBitDepth(char*& p, u8 depth, const char* src, const char* dest)
WRITE(p, " %s = floor(%s * 255.0 / exp2(8.0 - %d.0));\n", dest, src, depth);
}
-void WriteEncoderEnd(char* p, API_TYPE ApiType)
+void WriteEncoderEnd(char*& p, API_TYPE ApiType)
{
WRITE(p, "}\n");
IntensityConstantAdded = false;
}
-void WriteI8Encoder(char* p, API_TYPE ApiType)
+void WriteI8Encoder(char*& p, API_TYPE ApiType)
{
WriteSwizzler(p, GX_TF_I8, ApiType);
WRITE(p, " float3 texSample;\n");
@@ -169,7 +169,7 @@ void WriteI8Encoder(char* p, API_TYPE ApiType)
WriteEncoderEnd(p, ApiType);
}
-void WriteI4Encoder(char* p, API_TYPE ApiType)
+void WriteI4Encoder(char*& p, API_TYPE ApiType)
{
WriteSwizzler(p, GX_TF_I4, ApiType);
WRITE(p, " float3 texSample;\n");
@@ -210,7 +210,7 @@ void WriteI4Encoder(char* p, API_TYPE ApiType)
WriteEncoderEnd(p, ApiType);
}
-void WriteIA8Encoder(char* p,API_TYPE ApiType)
+void WriteIA8Encoder(char*& p,API_TYPE ApiType)
{
WriteSwizzler(p, GX_TF_IA8, ApiType);
WRITE(p, " float4 texSample;\n");
@@ -228,7 +228,7 @@ void WriteIA8Encoder(char* p,API_TYPE ApiType)
WriteEncoderEnd(p, ApiType);
}
-void WriteIA4Encoder(char* p,API_TYPE ApiType)
+void WriteIA4Encoder(char*& p,API_TYPE ApiType)
{
WriteSwizzler(p, GX_TF_IA4, ApiType);
WRITE(p, " float4 texSample;\n");
@@ -260,7 +260,7 @@ void WriteIA4Encoder(char* p,API_TYPE ApiType)
WriteEncoderEnd(p, ApiType);
}
-void WriteRGB565Encoder(char* p,API_TYPE ApiType)
+void WriteRGB565Encoder(char*& p,API_TYPE ApiType)
{
WriteSwizzler(p, GX_TF_RGB565, ApiType);
@@ -283,7 +283,7 @@ void WriteRGB565Encoder(char* p,API_TYPE ApiType)
WriteEncoderEnd(p, ApiType);
}
-void WriteRGB5A3Encoder(char* p,API_TYPE ApiType)
+void WriteRGB5A3Encoder(char*& p,API_TYPE ApiType)
{
WriteSwizzler(p, GX_TF_RGB5A3, ApiType);
@@ -349,7 +349,7 @@ void WriteRGB5A3Encoder(char* p,API_TYPE ApiType)
WriteEncoderEnd(p, ApiType);
}
-void WriteRGBA4443Encoder(char* p,API_TYPE ApiType)
+void WriteRGBA4443Encoder(char*& p,API_TYPE ApiType)
{
WriteSwizzler(p, GX_TF_RGB5A3, ApiType);
@@ -373,7 +373,7 @@ void WriteRGBA4443Encoder(char* p,API_TYPE ApiType)
WriteEncoderEnd(p, ApiType);
}
-void WriteRGBA8Encoder(char* p,API_TYPE ApiType)
+void WriteRGBA8Encoder(char*& p,API_TYPE ApiType)
{
WriteSwizzler(p, GX_TF_RGBA8, ApiType);
@@ -398,7 +398,7 @@ void WriteRGBA8Encoder(char* p,API_TYPE ApiType)
WriteEncoderEnd(p, ApiType);
}
-void WriteC4Encoder(char* p, const char* comp,API_TYPE ApiType)
+void WriteC4Encoder(char*& p, const char* comp,API_TYPE ApiType)
{
WriteSwizzler(p, GX_CTF_R4, ApiType);
WRITE(p, " float4 color0;\n");
@@ -420,7 +420,7 @@ void WriteC4Encoder(char* p, const char* comp,API_TYPE ApiType)
WriteEncoderEnd(p, ApiType);
}
-void WriteC8Encoder(char* p, const char* comp,API_TYPE ApiType)
+void WriteC8Encoder(char*& p, const char* comp,API_TYPE ApiType)
{
WriteSwizzler(p, GX_CTF_R8, ApiType);
@@ -432,7 +432,7 @@ void WriteC8Encoder(char* p, const char* comp,API_TYPE ApiType)
WriteEncoderEnd(p, ApiType);
}
-void WriteCC4Encoder(char* p, const char* comp,API_TYPE ApiType)
+void WriteCC4Encoder(char*& p, const char* comp,API_TYPE ApiType)
{
WriteSwizzler(p, GX_CTF_RA4, ApiType);
WRITE(p, " float2 texSample;\n");
@@ -462,7 +462,7 @@ void WriteCC4Encoder(char* p, const char* comp,API_TYPE ApiType)
WriteEncoderEnd(p, ApiType);
}
-void WriteCC8Encoder(char* p, const char* comp, API_TYPE ApiType)
+void WriteCC8Encoder(char*& p, const char* comp, API_TYPE ApiType)
{
WriteSwizzler(p, GX_CTF_RA8, ApiType);
@@ -472,7 +472,7 @@ void WriteCC8Encoder(char* p, const char* comp, API_TYPE ApiType)
WriteEncoderEnd(p, ApiType);
}
-void WriteZ8Encoder(char* p, const char* multiplier,API_TYPE ApiType)
+void WriteZ8Encoder(char*& p, const char* multiplier,API_TYPE ApiType)
{
WriteSwizzler(p, GX_CTF_Z8M, ApiType);
@@ -493,7 +493,7 @@ void WriteZ8Encoder(char* p, const char* multiplier,API_TYPE ApiType)
WriteEncoderEnd(p, ApiType);
}
-void WriteZ16Encoder(char* p,API_TYPE ApiType)
+void WriteZ16Encoder(char*& p,API_TYPE ApiType)
{
WriteSwizzler(p, GX_TF_Z16, ApiType);
@@ -525,7 +525,7 @@ void WriteZ16Encoder(char* p,API_TYPE ApiType)
WriteEncoderEnd(p, ApiType);
}
-void WriteZ16LEncoder(char* p,API_TYPE ApiType)
+void WriteZ16LEncoder(char*& p,API_TYPE ApiType)
{
WriteSwizzler(p, GX_CTF_Z16L, ApiType);
@@ -561,7 +561,7 @@ void WriteZ16LEncoder(char* p,API_TYPE ApiType)
WriteEncoderEnd(p, ApiType);
}
-void WriteZ24Encoder(char* p, API_TYPE ApiType)
+void WriteZ24Encoder(char*& p, API_TYPE ApiType)
{
WriteSwizzler(p, GX_TF_Z24X8, ApiType);
diff --git a/Source/Core/VideoCommon/TextureDecoder_x64.cpp b/Source/Core/VideoCommon/TextureDecoder_x64.cpp
index d00a9bb454..875ba8f8e2 100644
--- a/Source/Core/VideoCommon/TextureDecoder_x64.cpp
+++ b/Source/Core/VideoCommon/TextureDecoder_x64.cpp
@@ -177,13 +177,6 @@ int TexDecoder_GetPaletteSize(int format)
}
}
-static inline u32 decodeIA8(u16 val)
-{
- int a = val >> 8;
- int i = val & 0xFF;
- return (a << 24) | (i << 16) | (i << 8) | i;
-}
-
static inline u32 decode5A3(u16 val)
{
int r,g,b,a;
diff --git a/Source/Core/VideoCommon/VertexLoader.cpp b/Source/Core/VideoCommon/VertexLoader.cpp
index a9bdb468b8..29abdb227c 100644
--- a/Source/Core/VideoCommon/VertexLoader.cpp
+++ b/Source/Core/VideoCommon/VertexLoader.cpp
@@ -28,11 +28,6 @@
//BBox
#include "VideoCommon/XFMemory.h"
-#ifndef _M_GENERIC
-#ifndef __APPLE__
-#define USE_JIT
-#endif
-#endif
#define COMPILED_CODE_SIZE 4096
@@ -472,7 +467,6 @@ VertexLoader::VertexLoader(const TVtxDesc &vtx_desc, const VAT &vtx_attr)
m_compiledCode = NULL;
m_numLoadedVertices = 0;
m_VertexSize = 0;
- m_numPipelineStages = 0;
m_NativeFmt = 0;
loop_counter = 0;
VertexLoader_Normal::Init();
@@ -482,11 +476,12 @@ VertexLoader::VertexLoader(const TVtxDesc &vtx_desc, const VAT &vtx_attr)
m_VtxDesc = vtx_desc;
SetVAT(vtx_attr.g0.Hex, vtx_attr.g1.Hex, vtx_attr.g2.Hex);
- #ifdef USE_JIT
+ #ifdef USE_VERTEX_LOADER_JIT
AllocCodeSpace(COMPILED_CODE_SIZE);
CompileVertexTranslator();
WriteProtect();
#else
+ m_numPipelineStages = 0;
CompileVertexTranslator();
#endif
@@ -494,7 +489,7 @@ VertexLoader::VertexLoader(const TVtxDesc &vtx_desc, const VAT &vtx_attr)
VertexLoader::~VertexLoader()
{
- #ifdef USE_JIT
+ #ifdef USE_VERTEX_LOADER_JIT
FreeCodeSpace();
#endif
delete m_NativeFmt;
@@ -505,7 +500,7 @@ void VertexLoader::CompileVertexTranslator()
m_VertexSize = 0;
const TVtxAttr &vtx_attr = m_VtxAttr;
-#ifdef USE_JIT
+#ifdef USE_VERTEX_LOADER_JIT
if (m_compiledCode)
PanicAlert("Trying to recompile a vertex translator");
@@ -531,6 +526,9 @@ void VertexLoader::CompileVertexTranslator()
WriteSetVariable(32, &s_texmtxwrite, Imm32(0));
WriteSetVariable(32, &s_texmtxread, Imm32(0));
}
+#else
+ // Reset pipeline
+ m_numPipelineStages = 0;
#endif
// Colors
@@ -544,8 +542,6 @@ void VertexLoader::CompileVertexTranslator()
m_VtxDesc.Tex4Coord, m_VtxDesc.Tex5Coord, m_VtxDesc.Tex6Coord, (const u32)((m_VtxDesc.Hex >> 31) & 3)
};
- // Reset pipeline
- m_numPipelineStages = 0;
u32 components = 0;
// Position in pc vertex format.
@@ -770,7 +766,7 @@ void VertexLoader::CompileVertexTranslator()
native_stride = nat_offset;
vtx_decl.stride = native_stride;
-#ifdef USE_JIT
+#ifdef USE_VERTEX_LOADER_JIT
// End loop here
#ifdef _M_X64
MOV(64, R(RAX), Imm64((u64)&loop_counter));
@@ -790,7 +786,7 @@ void VertexLoader::CompileVertexTranslator()
void VertexLoader::WriteCall(TPipelineFunction func)
{
-#ifdef USE_JIT
+#ifdef USE_VERTEX_LOADER_JIT
#ifdef _M_X64
MOV(64, R(RAX), Imm64((u64)func));
CALLptr(R(RAX));
@@ -805,7 +801,7 @@ void VertexLoader::WriteCall(TPipelineFunction func)
#ifndef _M_GENERIC
void VertexLoader::WriteGetVariable(int bits, OpArg dest, void *address)
{
-#ifdef USE_JIT
+#ifdef USE_VERTEX_LOADER_JIT
#ifdef _M_X64
MOV(64, R(RAX), Imm64((u64)address));
MOV(bits, dest, MatR(RAX));
@@ -817,7 +813,7 @@ void VertexLoader::WriteGetVariable(int bits, OpArg dest, void *address)
void VertexLoader::WriteSetVariable(int bits, void *address, OpArg value)
{
-#ifdef USE_JIT
+#ifdef USE_VERTEX_LOADER_JIT
#ifdef _M_X64
MOV(64, R(RAX), Imm64((u64)address));
MOV(bits, MatR(RAX), value);
@@ -870,7 +866,7 @@ void VertexLoader::SetupRunVertices(int vtx_attr_group, int primitive, int const
void VertexLoader::ConvertVertices ( int count )
{
-#ifdef USE_JIT
+#ifdef USE_VERTEX_LOADER_JIT
if (count > 0)
{
loop_counter = count;
diff --git a/Source/Core/VideoCommon/VertexLoader.h b/Source/Core/VideoCommon/VertexLoader.h
index 6b720b54aa..01c4bb0acd 100644
--- a/Source/Core/VideoCommon/VertexLoader.h
+++ b/Source/Core/VideoCommon/VertexLoader.h
@@ -17,6 +17,11 @@
#include "VideoCommon/DataReader.h"
#include "VideoCommon/NativeVertexFormat.h"
+#ifndef _M_GENERIC
+#ifndef __APPLE__
+#define USE_VERTEX_LOADER_JIT
+#endif
+#endif
class VertexLoaderUID
{
@@ -119,9 +124,11 @@ private:
NativeVertexFormat *m_NativeFmt;
int native_stride;
- // Pipeline. To be JIT compiled in the future.
+#ifndef USE_VERTEX_LOADER_JIT
+ // Pipeline.
TPipelineFunction m_PipelineStages[64]; // TODO - figure out real max. it's lower.
int m_numPipelineStages;
+#endif
const u8 *m_compiledCode;