summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authorSoren Jorvang <soren.jorvang@gmail.com>2010-07-24 10:24:16 +0000
committerSoren Jorvang <soren.jorvang@gmail.com>2010-07-24 10:24:16 +0000
commit53f5bc682d5347e2771dc857fcb29c59f9b77c62 (patch)
treeba2db1d96471849c0b17a4e54dee819fcf781129 /Source
parent7828a689e716bb3f1165b6f2d4d7f4d39e05a4fc (diff)
Make Cg conditional on those platforms for which it is available.
Of course, this doesn't do much good without another shader compiler.. WIP of OS X application bundle building. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5961 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source')
-rw-r--r--Source/Core/Core/Src/MemTools.cpp1
-rw-r--r--Source/Core/DolphinWX/Src/GameListCtrl.cpp3
-rw-r--r--Source/Core/DolphinWX/Src/SConscript41
-rw-r--r--Source/Plugins/Plugin_VideoOGL/Src/GLUtil.h4
-rw-r--r--Source/Plugins/Plugin_VideoOGL/Src/PixelShaderCache.cpp5
-rw-r--r--Source/Plugins/Plugin_VideoOGL/Src/Render.cpp24
-rw-r--r--Source/Plugins/Plugin_VideoOGL/Src/TextureConverter.cpp3
-rw-r--r--Source/Plugins/Plugin_VideoOGL/Src/VertexShaderCache.cpp5
8 files changed, 55 insertions, 31 deletions
diff --git a/Source/Core/Core/Src/MemTools.cpp b/Source/Core/Core/Src/MemTools.cpp
index 8e09680902..dbbf69abf4 100644
--- a/Source/Core/Core/Src/MemTools.cpp
+++ b/Source/Core/Core/Src/MemTools.cpp
@@ -40,7 +40,6 @@
#define CREG_EAX(ctx) (ctx)->gregs[REG_EAX]
#define CREG_EIP(ctx) (ctx)->gregs[REG_EIP]
#elif defined __NetBSD__
-#include <sys/siginfo.h>
#define CREG_RAX(ctx) (ctx)->__gregs[_REG_RAX]
#define CREG_RIP(ctx) (ctx)->__gregs[_REG_RIP]
#define CREG_EAX(ctx) (ctx)->__gregs[_REG_EAX]
diff --git a/Source/Core/DolphinWX/Src/GameListCtrl.cpp b/Source/Core/DolphinWX/Src/GameListCtrl.cpp
index 5c1a3b8871..decc3d17b0 100644
--- a/Source/Core/DolphinWX/Src/GameListCtrl.cpp
+++ b/Source/Core/DolphinWX/Src/GameListCtrl.cpp
@@ -554,12 +554,15 @@ void CGameListCtrl::ScanForISOs()
sprintf(tempstring,"Scanning %s", FileName.c_str());
msg = wxString(tempstring, *wxConvCurrent);
+// With wxWidgets 2.9.1, each Update() sleeps for several seconds
+#ifndef __APPLE__
// Update with the progress (i) and the message (msg)
bool Cont = dialog.Update(i, msg);
if (!Cont)
{
break;
}
+#endif
GameListItem ISOFile(rFilenames[i]);
if (ISOFile.IsValid())
{
diff --git a/Source/Core/DolphinWX/Src/SConscript b/Source/Core/DolphinWX/Src/SConscript
index 12f0f5a856..1ca8d253bc 100644
--- a/Source/Core/DolphinWX/Src/SConscript
+++ b/Source/Core/DolphinWX/Src/SConscript
@@ -57,29 +57,40 @@ elif sys.platform == 'darwin' and not env['HAVE_WX']:
files += [ 'cocoaApp.m' ]
exeNoGUI = env['binary_dir'] + 'DolphinNoGUI'
elif sys.platform == 'darwin' and env['HAVE_WX']:
- exeGUI = env['binary_dir'] + 'Dolphin.app/Contents/MacOS/Dolphin'
+ exeGUI = 'Dolphin'
+ exeGUIdist = env['binary_dir'] + 'Dolphin.app/Contents/MacOS/Dolphin'
env.Install(env['binary_dir'] + 'Dolphin.app/Contents/' +
'Library/Frameworks/Cg.framework',
'#Externals/Cg/Cg.framework/Cg')
- env.Install(env['binary_dir'] + 'Dolphin.app/Contents/Resources/',
+ env.Install(env['data_dir'],
'#Source/Core/DolphinWX/resources/Dolphin.icns')
- env.Plist(
- env['binary_dir'] + 'Dolphin.app/Contents/Info.plist',
- Value(dict(
- CFBundleExecutable = 'Dolphin',
- CFBundleIconFile = 'Dolphin.icns',
- CFBundleIdentifier = 'com.dolphin-emu.dolphin',
- CFBundlePackageType = 'APPL',
- CFBundleShortVersionString =
+ from plistlib import writePlist
+ def createPlist(target, source, env):
+ for srcNode in source:
+ writePlist(srcNode.value, str(target[0]))
+ env.Append(BUILDERS = {'Plist' : Builder(action = createPlist)})
+ env.Plist(env['binary_dir'] + 'Dolphin.app/Contents/Info.plist', Value(
+ dict(
+ CFBundleExecutable = 'Dolphin',
+ CFBundleIconFile = 'Dolphin.icns',
+ CFBundleIdentifier = 'com.dolphin-emu.dolphin',
+ CFBundlePackageType = 'APPL',
+ CFBundleShortVersionString =
os.popen('svnversion -n ' + Dir('#').abspath).read(),
- CFBundleVersion = '2.0',
- LSMinimumSystemVersion = '10.5.0',
- LSRequiresCarbon = True,
- ))
- )
+ CFBundleVersion = '2.0',
+ LSMinimumSystemVersion = '10.5.0',
+ LSRequiresCarbon = True,
+ )))
+
+ def Fixup(target, source, env):
+ os.link(str(source[0]), str(target[0]))
+ env.Append(BUILDERS = {'Fixup' : Builder(action = Fixup)})
+ env.Depends(exeGUIdist, env['plugin_dir'])
+ if env['CPPDEFINES'].count('WXUSINGDLL'):
+ env.Fixup(exeGUIdist, exeGUI)
else:
files += [ 'X11Utils.cpp' ]
libs += [ 'SDL' ]
diff --git a/Source/Plugins/Plugin_VideoOGL/Src/GLUtil.h b/Source/Plugins/Plugin_VideoOGL/Src/GLUtil.h
index 242bd3e8f6..380430c24f 100644
--- a/Source/Plugins/Plugin_VideoOGL/Src/GLUtil.h
+++ b/Source/Plugins/Plugin_VideoOGL/Src/GLUtil.h
@@ -133,10 +133,12 @@ bool OpenGL_ReportFBOError(const char *function, const char *file, int line);
#define GL_REPORT_ERRORD()
#endif
+#if defined __APPLE__ || defined __linux__ || defined _WIN32
#include <Cg/cg.h>
#include <Cg/cgGL.h>
-
+#define HAVE_CG 1
extern CGcontext g_cgcontext;
extern CGprofile g_cgvProf, g_cgfProf;
+#endif
#endif // _GLINIT_H_
diff --git a/Source/Plugins/Plugin_VideoOGL/Src/PixelShaderCache.cpp b/Source/Plugins/Plugin_VideoOGL/Src/PixelShaderCache.cpp
index 04c481178d..8bdab0f9a7 100644
--- a/Source/Plugins/Plugin_VideoOGL/Src/PixelShaderCache.cpp
+++ b/Source/Plugins/Plugin_VideoOGL/Src/PixelShaderCache.cpp
@@ -20,9 +20,6 @@
#include "GLUtil.h"
-#include <Cg/cg.h>
-#include <Cg/cgGL.h>
-
#include <cmath>
#include "Statistics.h"
@@ -248,6 +245,7 @@ bool PixelShaderCache::CompilePixelShader(FRAGMENTSHADER& ps, const char* pstrpr
ERROR_LOG(VIDEO, "glError %08x before PS!", err);
}
+#if defined HAVE_CG && HAVE_CG
char stropt[128];
sprintf(stropt, "MaxLocalParams=32,NumInstructionSlots=%d", s_nMaxPixelInstructions);
const char *opts[] = {"-profileopts", stropt, "-O2", "-q", NULL};
@@ -305,6 +303,7 @@ bool PixelShaderCache::CompilePixelShader(FRAGMENTSHADER& ps, const char* pstrpr
}
cgDestroyProgram(tempprog);
+#endif
#if defined(_DEBUG) || defined(DEBUGFAST)
ps.strprog = pstrprogram;
diff --git a/Source/Plugins/Plugin_VideoOGL/Src/Render.cpp b/Source/Plugins/Plugin_VideoOGL/Src/Render.cpp
index eb62b81a94..30bf77ca30 100644
--- a/Source/Plugins/Plugin_VideoOGL/Src/Render.cpp
+++ b/Source/Plugins/Plugin_VideoOGL/Src/Render.cpp
@@ -26,9 +26,6 @@
#include "GLUtil.h"
-#include <Cg/cg.h>
-#include <Cg/cgGL.h>
-
#include "FileUtil.h"
#ifdef _WIN32
@@ -76,9 +73,11 @@
// ----------------------------
int s_fps=0;
+#if defined HAVE_CG && HAVE_CG
CGcontext g_cgcontext;
CGprofile g_cgvProf;
CGprofile g_cgfProf;
+#endif
RasterFont* s_pfont = NULL;
@@ -208,6 +207,7 @@ void SetDefaultRectTexParams()
glTexParameteri(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
}
+#if defined HAVE_CG && HAVE_CG
void HandleCgError(CGcontext ctx, CGerror err, void* appdata)
{
DEBUG_LOG(VIDEO, "Cg error: %s", cgGetErrorString(err));
@@ -216,6 +216,7 @@ void HandleCgError(CGcontext ctx, CGerror err, void* appdata)
DEBUG_LOG(VIDEO, " last listing: %s", listing);
}
}
+#endif
} // namespace
void VideoConfig::UpdateProjectionHack()
@@ -231,6 +232,8 @@ bool Renderer::Init()
bool bSuccess = true;
s_blendMode = 0;
s_MSAACoverageSamples = 0;
+ GLint numvertexattribs = 0;
+
switch (g_ActiveConfig.iMultisampleMode)
{
case MULTISAMPLE_OFF: s_MSAASamples = 1; break;
@@ -244,11 +247,12 @@ bool Renderer::Init()
default:
s_MSAASamples = 1;
}
- GLint numvertexattribs = 0;
- g_cgcontext = cgCreateContext();
+#if defined HAVE_CG && HAVE_CG
+ g_cgcontext = cgCreateContext();
cgGetError();
cgSetErrorHandler(HandleCgError, NULL);
+#endif
// Look for required extensions.
const char *ptoken = (const char*)glGetString(GL_EXTENSIONS);
@@ -388,6 +392,7 @@ bool Renderer::Init()
s_pfont = new RasterFont();
+#if defined HAVE_CG && HAVE_CG
// load the effect, find the best profiles (if any)
if (cgGLIsProfileSupported(CG_PROFILE_ARBVP1) != CG_TRUE) {
ERROR_LOG(VIDEO, "arbvp1 not supported");
@@ -415,8 +420,8 @@ bool Renderer::Init()
cgGLSetOptimalOptions(g_cgvProf);
cgGLSetOptimalOptions(g_cgfProf);
#endif
+#endif // HAVE_CG
- INFO_LOG(VIDEO, "Max buffer sizes: %d %d", cgGetProgramBufferMaxSize(g_cgvProf), cgGetProgramBufferMaxSize(g_cgfProf));
int nenvvertparams, nenvfragparams, naddrregisters[2];
glGetProgramivARB(GL_VERTEX_PROGRAM_ARB, GL_MAX_PROGRAM_ENV_PARAMETERS_ARB, (GLint *)&nenvvertparams);
glGetProgramivARB(GL_FRAGMENT_PROGRAM_ARB, GL_MAX_PROGRAM_ENV_PARAMETERS_ARB, (GLint *)&nenvfragparams);
@@ -428,9 +433,14 @@ bool Renderer::Init()
if (nenvvertparams < 238)
ERROR_LOG(VIDEO, "Not enough vertex shader environment constants!!");
+#if defined HAVE_CG && HAVE_CG
+ INFO_LOG(VIDEO, "Max buffer sizes: %d %d",
+ cgGetProgramBufferMaxSize(g_cgvProf),
+ cgGetProgramBufferMaxSize(g_cgfProf));
#ifndef _DEBUG
cgGLSetDebugMode(GL_FALSE);
#endif
+#endif
glStencilFunc(GL_ALWAYS, 0, 0);
glBlendFunc(GL_ONE, GL_ONE);
@@ -479,10 +489,12 @@ void Renderer::Shutdown(void)
delete s_pfont;
s_pfont = 0;
+#if defined HAVE_CG && HAVE_CG
if (g_cgcontext) {
cgDestroyContext(g_cgcontext);
g_cgcontext = 0;
}
+#endif
g_framebufferManager.Shutdown();
diff --git a/Source/Plugins/Plugin_VideoOGL/Src/TextureConverter.cpp b/Source/Plugins/Plugin_VideoOGL/Src/TextureConverter.cpp
index 49be231ac0..d4e57ec3d2 100644
--- a/Source/Plugins/Plugin_VideoOGL/Src/TextureConverter.cpp
+++ b/Source/Plugins/Plugin_VideoOGL/Src/TextureConverter.cpp
@@ -125,8 +125,7 @@ FRAGMENTSHADER &GetOrCreateEncodingShader(u32 format)
#endif
if (!PixelShaderCache::CompilePixelShader(s_encodingPrograms[format], shader)) {
- const char* error = cgGetLastListing(g_cgcontext);
- ERROR_LOG(VIDEO, "Failed to create encoding fragment program:\n%s", error);
+ ERROR_LOG(VIDEO, "Failed to create encoding fragment program");
}
}
diff --git a/Source/Plugins/Plugin_VideoOGL/Src/VertexShaderCache.cpp b/Source/Plugins/Plugin_VideoOGL/Src/VertexShaderCache.cpp
index 43f6e7a9c9..27190a894e 100644
--- a/Source/Plugins/Plugin_VideoOGL/Src/VertexShaderCache.cpp
+++ b/Source/Plugins/Plugin_VideoOGL/Src/VertexShaderCache.cpp
@@ -24,9 +24,6 @@
#include "GLUtil.h"
-#include <Cg/cg.h>
-#include <Cg/cgGL.h>
-
#include "Render.h"
#include "VertexShaderGen.h"
#include "VertexShaderManager.h"
@@ -187,6 +184,7 @@ bool VertexShaderCache::CompileVertexShader(VERTEXSHADER& vs, const char* pstrpr
ERROR_LOG(VIDEO, "glError %08x before VS!", err);
}
+#if defined HAVE_CG && HAVE_CG
char stropt[64];
sprintf(stropt, "MaxLocalParams=256,MaxInstructions=%d", s_nMaxVertexInstructions);
const char *opts[] = {"-profileopts", stropt, "-O2", "-q", NULL};
@@ -228,6 +226,7 @@ bool VertexShaderCache::CompileVertexShader(VERTEXSHADER& vs, const char* pstrpr
}
cgDestroyProgram(tempprog);
+#endif
#if defined(_DEBUG) || defined(DEBUGFAST)
vs.strprog = pstrprogram;