GSdx: working on linux port again, almost ready to run.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4344 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
gabest11 2011-02-22 23:39:02 +00:00
parent b2cf9d026f
commit 879aad9fd5
18 changed files with 493 additions and 190 deletions

View File

@ -7,23 +7,24 @@
<Option compiler="gcc" /> <Option compiler="gcc" />
<Build> <Build>
<Target title="Debug"> <Target title="Debug">
<Option output="SDL-1" prefix_auto="1" extension_auto="1" /> <Option output="../../../deps/debug/libSDL-1.3" prefix_auto="1" extension_auto="1" />
<Option working_dir="" />
<Option object_output="obj/Debug/" /> <Option object_output="obj/Debug/" />
<Option type="3" /> <Option type="2" />
<Option compiler="gcc" /> <Option compiler="gcc" />
<Option createDefFile="1" /> <Option createDefFile="1" />
<Option createStaticLib="1" />
<Compiler> <Compiler>
<Add option="-Wall" /> <Add option="-Wall" />
<Add option="-g" />
</Compiler> </Compiler>
</Target> </Target>
<Target title="Release"> <Target title="Release">
<Option output="SDL-1" prefix_auto="1" extension_auto="1" /> <Option output="../../../deps/release/libSDL-1.3" prefix_auto="1" extension_auto="1" />
<Option working_dir="" />
<Option object_output="obj/Release/" /> <Option object_output="obj/Release/" />
<Option type="3" /> <Option type="2" />
<Option compiler="gcc" /> <Option compiler="gcc" />
<Option createDefFile="1" /> <Option createDefFile="1" />
<Option createStaticLib="1" />
<Compiler> <Compiler>
<Add option="-O3" /> <Add option="-O3" />
<Add option="-Wall" /> <Add option="-Wall" />
@ -326,7 +327,7 @@
<Unit filename="../src/libm/s_sin.c"> <Unit filename="../src/libm/s_sin.c">
<Option compilerVar="CC" /> <Option compilerVar="CC" />
</Unit> </Unit>
<Unit filename="../src/loadso/dummy/SDL_sysloadso.c"> <Unit filename="../src/loadso/dlopen/SDL_sysloadso.c">
<Option compilerVar="CC" /> <Option compilerVar="CC" />
</Unit> </Unit>
<Unit filename="../src/main/beos/SDL_BeApp.h" /> <Unit filename="../src/main/beos/SDL_BeApp.h" />
@ -659,6 +660,7 @@
<Extensions> <Extensions>
<code_completion /> <code_completion />
<debugger /> <debugger />
<envvars />
</Extensions> </Extensions>
</Project> </Project>
</CodeBlocks_project_file> </CodeBlocks_project_file>

View File

@ -1,3 +1,4 @@
/* include/SDL_config.h. Generated from SDL_config.h.in by configure. */
/* /*
SDL - Simple DirectMedia Layer SDL - Simple DirectMedia Layer
Copyright (C) 1997-2011 Sam Lantinga Copyright (C) 1997-2011 Sam Lantinga
@ -23,27 +24,274 @@
#ifndef _SDL_config_h #ifndef _SDL_config_h
#define _SDL_config_h #define _SDL_config_h
/**
* \file SDL_config.h.in
*
* This is a set of defines to configure the SDL features
*/
/* General platform specific identifiers */
#include "SDL_platform.h" #include "SDL_platform.h"
/** /* Make sure that this isn't included by Visual C++ */
* \file SDL_config.h #ifdef _MSC_VER
* #error You should copy include/SDL_config.h.default to include/SDL_config.h
* SDL_config.h for any platform that doesn't build using the configure system. #endif
*/
/* C language features */
/* Add any platform that doesn't build using the configure system. */ /* #undef const */
#if defined(__WIN32__) /* #undef inline */
#include "SDL_config_windows.h" /* #undef volatile */
#elif defined(__MACOSX__)
#include "SDL_config_macosx.h" /* C datatypes */
#elif defined(__IPHONEOS__) #if !defined(_STDINT_H_) && (!defined(HAVE_STDINT_H) || !_HAVE_STDINT_H)
#include "SDL_config_iphoneos.h" /* #undef size_t */
#elif defined(__ANDROID__) /* #undef int8_t */
#include "SDL_config_android.h" /* #undef uint8_t */
#elif defined(__NINTENDODS__) /* #undef int16_t */
#include "SDL_config_nintendods.h" /* #undef uint16_t */
/* #undef int32_t */
/* #undef uint32_t */
/* #undef int64_t */
/* #undef uint64_t */
/* #undef uintptr_t */
#endif /* !_STDINT_H_ && !HAVE_STDINT_H */
#define SIZEOF_VOIDP 4
#define SDL_HAS_64BIT_TYPE 1
#define HAVE_GCC_ATOMICS 1
/* #undef HAVE_GCC_SYNC_LOCK_TEST_AND_SET */
/* Comment this if you want to build without any C library requirements */
#define HAVE_LIBC 1
#if HAVE_LIBC
/* Useful headers */
#define HAVE_ALLOCA_H 1
#define HAVE_SYS_TYPES_H 1
#define HAVE_STDIO_H 1
#define STDC_HEADERS 1
#define HAVE_STDLIB_H 1
#define HAVE_STDARG_H 1
#define HAVE_MALLOC_H 1
#define HAVE_MEMORY_H 1
#define HAVE_STRING_H 1
#define HAVE_STRINGS_H 1
#define HAVE_INTTYPES_H 1
#define HAVE_STDINT_H 1
#define HAVE_CTYPE_H 1
#define HAVE_MATH_H 1
#define HAVE_ICONV_H 1
#define HAVE_SIGNAL_H 1
/* C library functions */
#define HAVE_MALLOC 1
#define HAVE_CALLOC 1
#define HAVE_REALLOC 1
#define HAVE_FREE 1
#define HAVE_ALLOCA 1
#ifndef __WIN32__ /* Don't use C runtime versions of these on Windows */
#define HAVE_GETENV 1
#define HAVE_SETENV 1
#define HAVE_PUTENV 1
#define HAVE_UNSETENV 1
#endif
#define HAVE_QSORT 1
#define HAVE_ABS 1
#define HAVE_BCOPY 1
#define HAVE_MEMSET 1
#define HAVE_MEMCPY 1
#define HAVE_MEMMOVE 1
#define HAVE_MEMCMP 1
#define HAVE_STRLEN 1
/* #undef HAVE_STRLCPY */
/* #undef HAVE_STRLCAT */
#define HAVE_STRDUP 1
/* #undef HAVE__STRREV */
/* #undef HAVE__STRUPR */
/* #undef HAVE__STRLWR */
/* #undef HAVE_INDEX */
/* #undef HAVE_RINDEX */
#define HAVE_STRCHR 1
#define HAVE_STRRCHR 1
#define HAVE_STRSTR 1
/* #undef HAVE_ITOA */
/* #undef HAVE__LTOA */
/* #undef HAVE__UITOA */
/* #undef HAVE__ULTOA */
#define HAVE_STRTOL 1
#define HAVE_STRTOUL 1
/* #undef HAVE__I64TOA */
/* #undef HAVE__UI64TOA */
#define HAVE_STRTOLL 1
#define HAVE_STRTOULL 1
#define HAVE_STRTOD 1
#define HAVE_ATOI 1
#define HAVE_ATOF 1
#define HAVE_STRCMP 1
#define HAVE_STRNCMP 1
/* #undef HAVE__STRICMP */
#define HAVE_STRCASECMP 1
/* #undef HAVE__STRNICMP */
#define HAVE_STRNCASECMP 1
#define HAVE_SSCANF 1
#define HAVE_SNPRINTF 1
#define HAVE_VSNPRINTF 1
#define HAVE_M_PI
#define HAVE_ATAN 1
#define HAVE_ATAN2 1
#define HAVE_CEIL 1
#define HAVE_COPYSIGN 1
#define HAVE_COS 1
#define HAVE_COSF 1
#define HAVE_FABS 1
#define HAVE_FLOOR 1
#define HAVE_LOG 1
#define HAVE_POW 1
#define HAVE_SCALBN 1
#define HAVE_SIN 1
#define HAVE_SINF 1
#define HAVE_SQRT 1
#define HAVE_SIGACTION 1
#define HAVE_SETJMP 1
#define HAVE_NANOSLEEP 1
#define HAVE_SYSCONF 1
/* #undef HAVE_SYSCTLBYNAME */
/* #undef HAVE_CLOCK_GETTIME */
/* #undef HAVE_GETPAGESIZE */
#define HAVE_MPROTECT 1
#define HAVE_ICONV 1
#else #else
#include "SDL_config_minimal.h" /* We may need some replacement for stdarg.h here */
#endif /* platform config */ #include <stdarg.h>
#endif /* HAVE_LIBC */
/* SDL internal assertion support */
/* #undef SDL_DEFAULT_ASSERT_LEVEL */
/* Allow disabling of core subsystems */
/* #undef SDL_ATOMIC_DISABLED */
#define SDL_AUDIO_DISABLED 1
/* #undef SDL_AUDIO_DISABLED */
/* #undef SDL_CPUINFO_DISABLED */
/* #undef SDL_EVENTS_DISABLED */
/* #undef SDL_FILE_DISABLED */
/* #undef SDL_JOYSTICK_DISABLED */
/* #undef SDL_HAPTIC_DISABLED */
/* #undef SDL_LOADSO_DISABLED */
/* #undef SDL_RENDER_DISABLED */
/* #undef SDL_THREADS_DISABLED */
/* #undef SDL_TIMERS_DISABLED */
/* #undef SDL_VIDEO_DISABLED */
/* #undef SDL_POWER_DISABLED */
/* Enable various audio drivers */
/* #undef SDL_AUDIO_DRIVER_ARTS */
/* #undef SDL_AUDIO_DRIVER_ARTS_DYNAMIC */
/* #undef SDL_AUDIO_DRIVER_BEOSAUDIO */
/* #undef SDL_AUDIO_DRIVER_BSD */
/* #undef SDL_AUDIO_DRIVER_COREAUDIO */
/* #undef SDL_AUDIO_DRIVER_DMEDIA */
/* #undef SDL_AUDIO_DRIVER_DSOUND */
/* #undef SDL_AUDIO_DRIVER_MMEAUDIO */
/* #undef SDL_AUDIO_DRIVER_NDS */
/* #undef SDL_AUDIO_DRIVER_OSS_SOUNDCARD_H */
/* #undef SDL_AUDIO_DRIVER_PAUDIO */
/* #undef SDL_AUDIO_DRIVER_QSA */
/* #undef SDL_AUDIO_DRIVER_SUNAUDIO */
/* #undef SDL_AUDIO_DRIVER_WINWAVEOUT */
/* #undef SDL_AUDIO_DRIVER_FUSIONSOUND */
/* #undef SDL_AUDIO_DRIVER_FUSIONSOUND_DYNAMIC */
/* Enable various input drivers */
#define SDL_INPUT_LINUXEV 1
/* #undef SDL_INPUT_TSLIB */
/* #undef SDL_JOYSTICK_BEOS */
/* #undef SDL_JOYSTICK_DINPUT */
/* #undef SDL_JOYSTICK_DUMMY */
/* #undef SDL_JOYSTICK_IOKIT */
#define SDL_JOYSTICK_LINUX 1
/* #undef SDL_JOYSTICK_NDS */
/* #undef SDL_JOYSTICK_WINMM */
/* #undef SDL_JOYSTICK_USBHID */
/* #undef SDL_JOYSTICK_USBHID_MACHINE_JOYSTICK_H */
/* #undef SDL_HAPTIC_DUMMY */
#define SDL_HAPTIC_LINUX 1
/* #undef SDL_HAPTIC_IOKIT */
/* #undef SDL_HAPTIC_DINPUT */
/* Enable various shared object loading systems */
/* #undef SDL_LOADSO_BEOS */
/* #undef SDL_LOADSO_DLCOMPAT */
#define SDL_LOADSO_DLOPEN 1
/* #undef SDL_LOADSO_DUMMY */
/* #undef SDL_LOADSO_LDG */
/* #undef SDL_LOADSO_WINDOWS */
/* Enable various threading systems */
/* #undef SDL_THREAD_BEOS */
/* #undef SDL_THREAD_NDS */
#define SDL_THREAD_PTHREAD 1
#define SDL_THREAD_PTHREAD_RECURSIVE_MUTEX 1
/* #undef SDL_THREAD_PTHREAD_RECURSIVE_MUTEX_NP */
/* #undef SDL_THREAD_SPROC */
/* #undef SDL_THREAD_WINDOWS */
/* Enable various timer systems */
/* #undef SDL_TIMER_BEOS */
/* #undef SDL_TIMER_DUMMY */
/* #undef SDL_TIMER_NDS */
#define SDL_TIMER_UNIX 1
/* #undef SDL_TIMER_WINDOWS */
/* #undef SDL_TIMER_WINCE */
/* Enable various video drivers */
/* #undef SDL_VIDEO_DRIVER_BWINDOW */
/* #undef SDL_VIDEO_DRIVER_COCOA */
/* #undef SDL_VIDEO_DRIVER_DIRECTFB */
/* #undef SDL_VIDEO_DRIVER_DIRECTFB_DYNAMIC */
#define SDL_VIDEO_DRIVER_DUMMY 1
/* #undef SDL_VIDEO_DRIVER_NDS */
/* #undef SDL_VIDEO_DRIVER_WINDOWS */
#define SDL_VIDEO_DRIVER_X11 1
#define SDL_VIDEO_DRIVER_X11_DYNAMIC "libX11.so.6"
#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT "libXext.so.6"
#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR "libXrandr.so.2"
#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT "libXi.so.6"
/* #undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS */
#define SDL_VIDEO_DRIVER_X11_VIDMODE 1
#define SDL_VIDEO_DRIVER_X11_XINERAMA 1
#define SDL_VIDEO_DRIVER_X11_XRANDR 1
#define SDL_VIDEO_DRIVER_X11_XINPUT 1
/* #undef SDL_VIDEO_DRIVER_X11_SCRNSAVER */
#define SDL_VIDEO_DRIVER_X11_XV 1
#define SDL_VIDEO_DRIVER_X11_XSHAPE 1
/* #undef SDL_VIDEO_RENDER_D3D */
#define SDL_VIDEO_RENDER_OGL 1
/* #undef SDL_VIDEO_RENDER_OGL_ES */
/* #undef SDL_VIDEO_RENDER_DIRECTFB */
/* Enable OpenGL support */
#define SDL_VIDEO_OPENGL 1
/* #undef SDL_VIDEO_OPENGL_ES */
/* #undef SDL_VIDEO_OPENGL_BGL */
/* #undef SDL_VIDEO_OPENGL_CGL */
#define SDL_VIDEO_OPENGL_GLX 1
/* #undef SDL_VIDEO_OPENGL_WGL */
/* #undef SDL_VIDEO_OPENGL_OSMESA */
/* #undef SDL_VIDEO_OPENGL_OSMESA_DYNAMIC */
/* Enable system power support */
#define SDL_POWER_LINUX 1
/* #undef SDL_POWER_WINDOWS */
/* #undef SDL_POWER_MACOSX */
/* #undef SDL_POWER_BEOS */
/* #undef SDL_POWER_NINTENDODS */
/* #undef SDL_POWER_HARDWIRED */
/* Enable assembly routines */
#define SDL_ASSEMBLY_ROUTINES 1
#endif /* _SDL_config_h */ #endif /* _SDL_config_h */

View File

@ -110,7 +110,7 @@ void GSDevice::Present(GSTexture* st, GSTexture* dt, const GSVector4& dr, int sh
StretchRect(st, dt, dr, shader); StretchRect(st, dt, dr, shader);
} }
GSTexture* GSDevice::Fetch(int type, int w, int h, bool msaa, int format) GSTexture* GSDevice::FetchSurface(int type, int w, int h, bool msaa, int format)
{ {
GSVector2i size(w, h); GSVector2i size(w, h);
@ -126,7 +126,7 @@ GSTexture* GSDevice::Fetch(int type, int w, int h, bool msaa, int format)
} }
} }
return Create(type, w, h, msaa, format); return CreateSurface(type, w, h, msaa, format);
} }
void GSDevice::EndScene() void GSDevice::EndScene()
@ -168,22 +168,22 @@ void GSDevice::AgePool()
GSTexture* GSDevice::CreateRenderTarget(int w, int h, bool msaa, int format) GSTexture* GSDevice::CreateRenderTarget(int w, int h, bool msaa, int format)
{ {
return Fetch(GSTexture::RenderTarget, w, h, msaa, format); return FetchSurface(GSTexture::RenderTarget, w, h, msaa, format);
} }
GSTexture* GSDevice::CreateDepthStencil(int w, int h, bool msaa, int format) GSTexture* GSDevice::CreateDepthStencil(int w, int h, bool msaa, int format)
{ {
return Fetch(GSTexture::DepthStencil, w, h, msaa, format); return FetchSurface(GSTexture::DepthStencil, w, h, msaa, format);
} }
GSTexture* GSDevice::CreateTexture(int w, int h, int format) GSTexture* GSDevice::CreateTexture(int w, int h, int format)
{ {
return Fetch(GSTexture::Texture, w, h, false, format); return FetchSurface(GSTexture::Texture, w, h, false, format);
} }
GSTexture* GSDevice::CreateOffscreen(int w, int h, int format) GSTexture* GSDevice::CreateOffscreen(int w, int h, int format)
{ {
return Fetch(GSTexture::Offscreen, w, h, false, format); return FetchSurface(GSTexture::Offscreen, w, h, false, format);
} }
void GSDevice::StretchRect(GSTexture* st, GSTexture* dt, const GSVector4& dr, int shader, bool linear) void GSDevice::StretchRect(GSTexture* st, GSTexture* dt, const GSVector4& dr, int shader, bool linear)
@ -305,3 +305,4 @@ bool GSDevice::ResizeTexture(GSTexture** t, int w, int h)
return t2 != NULL; return t2 != NULL;
} }

View File

@ -65,8 +65,8 @@ protected:
struct {size_t stride, start, count, limit;} m_vertices; struct {size_t stride, start, count, limit;} m_vertices;
unsigned int m_frame; // for ageing the pool unsigned int m_frame; // for ageing the pool
virtual GSTexture* Create(int type, int w, int h, bool msaa, int format) = 0; virtual GSTexture* CreateSurface(int type, int w, int h, bool msaa, int format) = 0;
virtual GSTexture* Fetch(int type, int w, int h, bool msaa, int format); virtual GSTexture* FetchSurface(int type, int w, int h, bool msaa, int format);
virtual void DoMerge(GSTexture* st[2], GSVector4* sr, GSTexture* dt, GSVector4* dr, bool slbg, bool mmod, const GSVector4& c) = 0; virtual void DoMerge(GSTexture* st[2], GSVector4* sr, GSTexture* dt, GSVector4* dr, bool slbg, bool mmod, const GSVector4& c) = 0;
virtual void DoInterlace(GSTexture* st, GSTexture* dt, int shader, bool linear, float yoffset) = 0; virtual void DoInterlace(GSTexture* st, GSTexture* dt, int shader, bool linear, float yoffset) = 0;
@ -107,10 +107,10 @@ public:
virtual GSTexture* CopyOffscreen(GSTexture* src, const GSVector4& sr, int w, int h, int format = 0) {return NULL;} virtual GSTexture* CopyOffscreen(GSTexture* src, const GSVector4& sr, int w, int h, int format = 0) {return NULL;}
virtual void CopyRect(GSTexture* st, GSTexture* dt, const GSVector4i& r) {} virtual void CopyRect(GSTexture* st, GSTexture* dt, const GSVector4i& r) {}
virtual void StretchRect(GSTexture* st, GSTexture* dt, const GSVector4& dr, int shader = 0, bool linear = true);
virtual void StretchRect(GSTexture* st, const GSVector4& sr, GSTexture* dt, const GSVector4& dr, int shader = 0, bool linear = true) {} virtual void StretchRect(GSTexture* st, const GSVector4& sr, GSTexture* dt, const GSVector4& dr, int shader = 0, bool linear = true) {}
void StretchRect(GSTexture* st, GSTexture* dt, const GSVector4& dr, int shader = 0, bool linear = true);
virtual void PSSetShaderResources(GSTexture* sr0, GSTexture* sr1) {} virtual void PSSetShaderResources(GSTexture* sr0, GSTexture* sr1) {}
virtual void PSSetShaderResource(int i, GSTexture* sr) {} virtual void PSSetShaderResource(int i, GSTexture* sr) {}
virtual void OMSetRenderTargets(GSTexture* rt, GSTexture* ds, const GSVector4i* scissor = NULL) {} virtual void OMSetRenderTargets(GSTexture* rt, GSTexture* ds, const GSVector4i* scissor = NULL) {}
@ -126,3 +126,4 @@ public:
void AgePool(); void AgePool();
}; };

View File

@ -292,7 +292,7 @@ bool GSDevice11::Reset(int w, int h)
if(m_swapchain) if(m_swapchain)
{ {
DXGI_SWAP_CHAIN_DESC scd; DXGI_SWAP_CHAIN_DESC scd;
memset(&scd, 0, sizeof(scd)); memset(&scd, 0, sizeof(scd));
m_swapchain->GetDesc(&scd); m_swapchain->GetDesc(&scd);
@ -365,7 +365,7 @@ void GSDevice11::ClearStencil(GSTexture* t, uint8 c)
m_ctx->ClearDepthStencilView(*(GSTexture11*)t, D3D11_CLEAR_STENCIL, 0, c); m_ctx->ClearDepthStencilView(*(GSTexture11*)t, D3D11_CLEAR_STENCIL, 0, c);
} }
GSTexture* GSDevice11::Create(int type, int w, int h, bool msaa, int format) GSTexture* GSDevice11::CreateSurface(int type, int w, int h, bool msaa, int format)
{ {
HRESULT hr; HRESULT hr;
@ -795,7 +795,7 @@ void GSDevice11::PSSetShaderResource(int i, GSTexture* sr)
if(sr) srv = *(GSTexture11*)sr; if(sr) srv = *(GSTexture11*)sr;
if(m_state.ps_srv[i] != srv) if(m_state.ps_srv[i] != srv)
{ {
m_state.ps_srv[i] = srv; m_state.ps_srv[i] = srv;
@ -827,14 +827,14 @@ void GSDevice11::PSSetShader(ID3D11PixelShader* ps, ID3D11Buffer* ps_cb)
if (m_srv_changed) if (m_srv_changed)
{ {
m_ctx->PSSetShaderResources(0, 3, m_state.ps_srv); m_ctx->PSSetShaderResources(0, 3, m_state.ps_srv);
m_srv_changed = false; m_srv_changed = false;
} }
if(m_ss_changed) if(m_ss_changed)
{ {
m_ctx->PSSetSamplers(0, 3, m_state.ps_ss); m_ctx->PSSetSamplers(0, 3, m_state.ps_ss);
m_ss_changed = false; m_ss_changed = false;
} }
@ -996,7 +996,7 @@ HRESULT GSDevice11::CompileShader(uint32 id, const string& entry, D3D11_SHADER_M
CComPtr<ID3D11Blob> shader, error; CComPtr<ID3D11Blob> shader, error;
hr = D3DX11CompileFromResource(theApp.GetModuleHandle(), MAKEINTRESOURCE(id), NULL, &m[0], NULL, entry.c_str(), m_shader.ps.c_str(), 0, 0, NULL, &shader, &error, NULL); hr = D3DX11CompileFromResource(theApp.GetModuleHandle(), MAKEINTRESOURCE(id), NULL, &m[0], NULL, entry.c_str(), m_shader.ps.c_str(), 0, 0, NULL, &shader, &error, NULL);
if(error) if(error)
{ {
printf("%s\n", (const char*)error->GetBufferPointer()); printf("%s\n", (const char*)error->GetBufferPointer());
@ -1016,3 +1016,4 @@ HRESULT GSDevice11::CompileShader(uint32 id, const string& entry, D3D11_SHADER_M
return hr; return hr;
} }

View File

@ -32,7 +32,7 @@ struct GSVertexShader11
class GSDevice11 : public GSDeviceDX class GSDevice11 : public GSDeviceDX
{ {
GSTexture* Create(int type, int w, int h, bool msaa, int format); GSTexture* CreateSurface(int type, int w, int h, bool msaa, int format);
void DoMerge(GSTexture* st[2], GSVector4* sr, GSTexture* dt, GSVector4* dr, bool slbg, bool mmod, const GSVector4& c); void DoMerge(GSTexture* st[2], GSVector4* sr, GSTexture* dt, GSVector4* dr, bool slbg, bool mmod, const GSVector4& c);
void DoInterlace(GSTexture* st, GSTexture* dt, int shader, bool linear, float yoffset = 0); void DoInterlace(GSTexture* st, GSTexture* dt, int shader, bool linear, float yoffset = 0);
@ -186,3 +186,4 @@ public:
HRESULT CompileShader(uint32 id, const string& entry, D3D11_SHADER_MACRO* macro, ID3D11GeometryShader** gs); HRESULT CompileShader(uint32 id, const string& entry, D3D11_SHADER_MACRO* macro, ID3D11GeometryShader** gs);
HRESULT CompileShader(uint32 id, const string& entry, D3D11_SHADER_MACRO* macro, ID3D11PixelShader** ps); HRESULT CompileShader(uint32 id, const string& entry, D3D11_SHADER_MACRO* macro, ID3D11PixelShader** ps);
}; };

View File

@ -95,10 +95,10 @@ static D3DFORMAT BestD3dFormat(IDirect3D9* d3d, int msaaCount = 0, DXGI_SAMPLE_D
{ {
// In descending order of preference // In descending order of preference
static D3DFORMAT fmts[] = static D3DFORMAT fmts[] =
{ {
D3DFMT_D32, D3DFMT_D32,
D3DFMT_D32F_LOCKABLE, D3DFMT_D32F_LOCKABLE,
D3DFMT_D24S8 D3DFMT_D24S8
}; };
@ -125,7 +125,7 @@ uint32 GSDevice9::GetMaxDepth(uint32 msaa = 0)
switch(BestD3dFormat(d3d, msaa)) switch(BestD3dFormat(d3d, msaa))
{ {
case D3DFMT_D32: case D3DFMT_D32:
case D3DFMT_D32F_LOCKABLE: case D3DFMT_D32F_LOCKABLE:
return 32; return 32;
case D3DFMT_D24S8: case D3DFMT_D24S8:
@ -157,18 +157,18 @@ bool GSDevice9::Create(GSWnd* wnd)
if(!m_d3d) return false; if(!m_d3d) return false;
ForceValidMsaaConfig(); ForceValidMsaaConfig();
// Get best format/depth for msaa. Assumption is that if the resulting depth is 24 instead of possible 32, // Get best format/depth for msaa. Assumption is that if the resulting depth is 24 instead of possible 32,
// the user was already warned when she selected it. (Lower res z buffer without warning is unacceptable). // the user was already warned when she selected it. (Lower res z buffer without warning is unacceptable).
m_depth_format = BestD3dFormat(m_d3d, m_msaa, &m_msaa_desc); m_depth_format = BestD3dFormat(m_d3d, m_msaa, &m_msaa_desc);
if(D3DFMT_UNKNOWN == m_depth_format) if(D3DFMT_UNKNOWN == m_depth_format)
{ {
// can't find a format with requested msaa, try without. // can't find a format with requested msaa, try without.
m_depth_format = BestD3dFormat(m_d3d, 0); m_depth_format = BestD3dFormat(m_d3d, 0);
if(D3DFMT_UNKNOWN == m_depth_format) if(D3DFMT_UNKNOWN == m_depth_format)
{ {
return false; return false;
@ -566,7 +566,7 @@ void GSDevice9::ClearStencil(GSTexture* t, uint8 c)
m_dev->SetDepthStencilSurface(dssurface); m_dev->SetDepthStencilSurface(dssurface);
} }
GSTexture* GSDevice9::Create(int type, int w, int h, bool msaa, int format) GSTexture* GSDevice9::CreateSurface(int type, int w, int h, bool msaa, int format)
{ {
HRESULT hr; HRESULT hr;
@ -967,10 +967,10 @@ void GSDevice9::PSSetShaderResource(int i, GSTexture* sr)
if(sr) srv = *(GSTexture9*)sr; if(sr) srv = *(GSTexture9*)sr;
if(m_state.ps_srvs[i] != srv) if(m_state.ps_srvs[i] != srv)
{ {
m_state.ps_srvs[i] = srv; m_state.ps_srvs[i] = srv;
m_dev->SetTexture(i, srv); m_dev->SetTexture(i, srv);
} }
} }
@ -1200,3 +1200,4 @@ HRESULT GSDevice9::CompileShader(uint32 id, const string& entry, const D3DXMACRO
return S_OK; return S_OK;
} }

View File

@ -67,7 +67,7 @@ struct GSVertexShader9
class GSDevice9 : public GSDeviceDX class GSDevice9 : public GSDeviceDX
{ {
GSTexture* Create(int type, int w, int h, bool msaa, int format); GSTexture* CreateSurface(int type, int w, int h, bool msaa, int format);
void DoMerge(GSTexture* st[2], GSVector4* sr, GSTexture* dt, GSVector4* dr, bool slbg, bool mmod, const GSVector4& c); void DoMerge(GSTexture* st[2], GSVector4* sr, GSTexture* dt, GSVector4* dr, bool slbg, bool mmod, const GSVector4& c);
void DoInterlace(GSTexture* st, GSTexture* dt, int shader, bool linear, float yoffset = 0); void DoInterlace(GSTexture* st, GSTexture* dt, int shader, bool linear, float yoffset = 0);
@ -217,3 +217,4 @@ public:
static void ForceValidMsaaConfig(); static void ForceValidMsaaConfig();
}; };

View File

@ -35,14 +35,14 @@ GSDeviceDX::~GSDeviceDX()
{ {
} }
GSTexture* GSDeviceDX::Fetch(int type, int w, int h, bool msaa, int format) GSTexture* GSDeviceDX::FetchSurface(int type, int w, int h, bool msaa, int format)
{ {
if(m_msaa < 2) if(m_msaa < 2)
{ {
msaa = false; msaa = false;
} }
return __super::Fetch(type, w, h, msaa, format); return __super::FetchSurface(type, w, h, msaa, format);
} }
bool GSDeviceDX::SetFeatureLevel(D3D_FEATURE_LEVEL level, bool compat_mode) bool GSDeviceDX::SetFeatureLevel(D3D_FEATURE_LEVEL level, bool compat_mode)
@ -186,3 +186,4 @@ const GSDeviceDX::D3D9Blend GSDeviceDX::m_blendMapD3D9[3*3*3*3] =
{0, D3DBLENDOP_ADD, D3DBLEND_ZERO, D3DBLEND_ONE}, // 2221: (0 - 0)*F + Cd ==> Cd {0, D3DBLENDOP_ADD, D3DBLEND_ZERO, D3DBLEND_ONE}, // 2221: (0 - 0)*F + Cd ==> Cd
{0, D3DBLENDOP_ADD, D3DBLEND_ZERO, D3DBLEND_ZERO}, // 2222: (0 - 0)*F + 0 ==> 0 {0, D3DBLENDOP_ADD, D3DBLEND_ZERO, D3DBLEND_ZERO}, // 2222: (0 - 0)*F + 0 ==> 0
}; };

View File

@ -270,7 +270,7 @@ protected:
uint32 m_msaa; uint32 m_msaa;
DXGI_SAMPLE_DESC m_msaa_desc; DXGI_SAMPLE_DESC m_msaa_desc;
GSTexture* Fetch(int type, int w, int h, bool msaa, int format); GSTexture* FetchSurface(int type, int w, int h, bool msaa, int format);
public: public:
GSDeviceDX(); GSDeviceDX();
@ -311,3 +311,4 @@ public:
dst.push_back(m); dst.push_back(m);
} }
}; };

View File

@ -40,7 +40,8 @@ bool GSDeviceNull::Reset(int w, int h)
return true; return true;
} }
GSTexture* GSDeviceNull::Create(int type, int w, int h, bool msaa, int format) GSTexture* GSDeviceNull::CreateSurface(int type, int w, int h, bool msaa, int format)
{ {
return new GSTextureNull(type, w, h, format); return new GSTextureNull(type, w, h, format);
} }

View File

@ -27,7 +27,7 @@
class GSDeviceNull : public GSDevice class GSDeviceNull : public GSDevice
{ {
private: private:
GSTexture* Create(int type, int w, int h, bool msaa, int format); GSTexture* CreateSurface(int type, int w, int h, bool msaa, int format);
void DoMerge(GSTexture* st[2], GSVector4* sr, GSTexture* dt, GSVector4* dr, bool slbg, bool mmod, const GSVector4& c) {} void DoMerge(GSTexture* st[2], GSVector4* sr, GSTexture* dt, GSVector4* dr, bool slbg, bool mmod, const GSVector4& c) {}
void DoInterlace(GSTexture* st, GSTexture* dt, int shader, bool linear, float yoffset = 0) {} void DoInterlace(GSTexture* st, GSTexture* dt, int shader, bool linear, float yoffset = 0) {}
@ -38,3 +38,4 @@ public:
bool Create(GSWnd* wnd); bool Create(GSWnd* wnd);
bool Reset(int w, int h); bool Reset(int w, int h);
}; };

View File

@ -65,8 +65,18 @@ bool GSDeviceSDL::Create(GSWnd* wnd)
m_init = true; m_init = true;
} }
#if 1 //def _WINDOWS
m_window = SDL_CreateWindowFrom(wnd->GetHandle()); m_window = SDL_CreateWindowFrom(wnd->GetHandle());
#else
// TODO: linux sould use wnd->GetHandle() too
m_window = SDL_CreateWindow("GSdx", 0, 0, 640, 480, SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN | SDL_WINDOW_RESIZABLE);
#endif
if(m_window == NULL) if(m_window == NULL)
{ {
return false; return false;
@ -96,14 +106,14 @@ bool GSDeviceSDL::Reset(int w, int h)
m_renderer = NULL; m_renderer = NULL;
} }
m_renderer = SDL_CreateRenderer(m_window, -1, SDL_RENDERER_ACCELERATED); // SDL_RENDERER_PRESENTVSYNC m_renderer = SDL_CreateRenderer(m_window, -1, SDL_RENDERER_ACCELERATED); // SDL_RENDERER_PRESENTVSYNC
return m_renderer != NULL; return m_renderer != NULL;
} }
void GSDeviceSDL::Present(GSTexture* st, GSTexture* dt, const GSVector4& dr, int shader) void GSDeviceSDL::Present(GSTexture* st, GSTexture* dt, const GSVector4& dr, int shader)
{ {
ASSERT(dt == m_backbuffer); // ignore m_backbuffer ASSERT(dt == m_backbuffer); // ignore m_backbuffer
GSVector2i size = st->GetSize(); GSVector2i size = st->GetSize();

View File

@ -48,7 +48,7 @@ bool GSDeviceSW::Reset(int w, int h)
return true; return true;
} }
GSTexture* GSDeviceSW::Create(int type, int w, int h, bool msaa, int format) GSTexture* GSDeviceSW::CreateSurface(int type, int w, int h, bool msaa, int format)
{ {
if(format != 0) return false; // there is only one format if(format != 0) return false; // there is only one format
@ -80,12 +80,12 @@ void GSDeviceSW::ClearRenderTarget(GSTexture* t, uint32 c)
Clear(t, c); Clear(t, c);
} }
void GSDeviceSW::ClearDepth(GSTexture* t, float c) void GSDeviceSW::ClearDepth(GSTexture* t, float c)
{ {
Clear(t, *(uint32*)&c); Clear(t, *(uint32*)&c);
} }
void GSDeviceSW::ClearStencil(GSTexture* t, uint8 c) void GSDeviceSW::ClearStencil(GSTexture* t, uint8 c)
{ {
Clear(t, c); Clear(t, c);
} }
@ -245,7 +245,7 @@ template<class SHADER> static void StretchRect(GSTexture* st, const GSVector4& s
// TODO: clipping may not be that necessary knowing we don't address outside (except the linear filter +1 pixel) // TODO: clipping may not be that necessary knowing we don't address outside (except the linear filter +1 pixel)
GSVector4i uvmax = GSVector4i((ssize.x - 1) << 16, (ssize.y - 1) << 16).xxyy(); GSVector4i uvmax = GSVector4i((ssize.x - 1) << 16, (ssize.y - 1) << 16).xxyy();
GSVector4i v = uv; GSVector4i v = uv;
@ -258,7 +258,7 @@ template<class SHADER> static void StretchRect(GSTexture* st, const GSVector4& s
int v0 = vi.extract16<5>(); int v0 = vi.extract16<5>();
int v1 = vi.extract16<7>(); int v1 = vi.extract16<7>();
uint32* RESTRICT src0 = (uint32*)&sm.bits[v0 * sm.pitch]; uint32* RESTRICT src0 = (uint32*)&sm.bits[v0 * sm.pitch];
uint32* RESTRICT src1 = (uint32*)&sm.bits[v1 * sm.pitch]; uint32* RESTRICT src1 = (uint32*)&sm.bits[v1 * sm.pitch];
uint32* RESTRICT dst = (uint32*)dm.bits; uint32* RESTRICT dst = (uint32*)dm.bits;
@ -370,7 +370,7 @@ void GSDeviceSW::DoMerge(GSTexture* st[2], GSVector4* sr, GSTexture* dt, GSVecto
} }
else else
{ {
// alpha = c.a // alpha = c.a
ShaderFactorBlend s((uint32)(int)(c.a * 255)); ShaderFactorBlend s((uint32)(int)(c.a * 255));
@ -433,3 +433,4 @@ void GSDeviceSW::Clear(GSTexture* t, uint32 c)
t->Unmap(); t->Unmap();
} }
} }

View File

@ -26,7 +26,7 @@
class GSDeviceSW : public GSDevice class GSDeviceSW : public GSDevice
{ {
GSTexture* Create(int type, int w, int h, bool msaa, int format); GSTexture* CreateSurface(int type, int w, int h, bool msaa, int format);
void DoMerge(GSTexture* st[2], GSVector4* sr, GSTexture* dt, GSVector4* dr, bool slbg, bool mmod, const GSVector4& c); void DoMerge(GSTexture* st[2], GSVector4* sr, GSTexture* dt, GSVector4* dr, bool slbg, bool mmod, const GSVector4& c);
void DoInterlace(GSTexture* st, GSTexture* dt, int shader, bool linear, float yoffset = 0); void DoInterlace(GSTexture* st, GSTexture* dt, int shader, bool linear, float yoffset = 0);
@ -59,3 +59,4 @@ public:
void PSSetShaderResource(int i, GSTexture* sr); void PSSetShaderResource(int i, GSTexture* sr);
void OMSetRenderTargets(GSTexture* rt, GSTexture* ds, const GSVector4i* scissor = NULL); void OMSetRenderTargets(GSTexture* rt, GSTexture* ds, const GSVector4i* scissor = NULL);
}; };

View File

@ -18,163 +18,184 @@
* http://www.gnu.org/copyleft/gpl.html * http://www.gnu.org/copyleft/gpl.html
* *
*/ */
#include "stdafx.h" #include "stdafx.h"
#include "gtk/gtk.h" #include <gtk/gtk.h>
#include "GSdx.h"
static void SysMessage(const char *fmt, ...) static void SysMessage(const char *fmt, ...)
{ {
va_list list; va_list list;
char msg[512]; char msg[512];
va_start(list, fmt); va_start(list, fmt);
vsprintf(msg, fmt, list); vsprintf(msg, fmt, list);
va_end(list); va_end(list);
if (msg[strlen(msg)-1] == '\n') msg[strlen(msg)-1] = 0; if (msg[strlen(msg)-1] == '\n') msg[strlen(msg) - 1] = 0;
GtkWidget *dialog; GtkWidget *dialog;
dialog = gtk_message_dialog_new (NULL, dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, "%s", msg);
GTK_DIALOG_DESTROY_WITH_PARENT, gtk_dialog_run (GTK_DIALOG (dialog));
GTK_MESSAGE_INFO, gtk_widget_destroy (dialog);
GTK_BUTTONS_OK,
"%s", msg);
gtk_dialog_run (GTK_DIALOG (dialog));
gtk_widget_destroy (dialog);
} }
bool RunLinuxDialog() bool RunLinuxDialog()
{ {
GtkWidget *dialog; GtkWidget *dialog;
GtkWidget *main_frame, *main_box; GtkWidget *main_frame, *main_box;
GtkWidget *res_label, *res_combo_box; GtkWidget *res_label, *res_combo_box;
GtkWidget *render_label, *render_combo_box; GtkWidget *render_label, *render_combo_box;
GtkWidget *interlace_label, *interlace_combo_box; GtkWidget *interlace_label, *interlace_combo_box;
GtkWidget *aspect_label, *aspect_combo_box; GtkWidget *aspect_label, *aspect_combo_box;
GtkWidget *texture_check, *log_check, *an_8_bit_check, *alpha_check, *aa_check, *win_check; GtkWidget *texture_check, *log_check, *an_8_bit_check, *alpha_check, *aa_check, *win_check;
int return_value; int return_value;
/* Create the widgets */ /* Create the widgets */
dialog = gtk_dialog_new_with_buttons ( dialog = gtk_dialog_new_with_buttons (
"GSdx Config", "GSdx Config",
NULL, /* parent window*/ NULL, /* parent window*/
(GtkDialogFlags)(GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), (GtkDialogFlags)(GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT),
GTK_STOCK_OK, GTK_STOCK_OK,
GTK_RESPONSE_ACCEPT, GTK_RESPONSE_ACCEPT,
GTK_STOCK_CANCEL, GTK_STOCK_CANCEL,
GTK_RESPONSE_REJECT, GTK_RESPONSE_REJECT,
NULL); NULL);
main_box = gtk_vbox_new(false, 5); main_box = gtk_vbox_new(false, 5);
main_frame = gtk_frame_new ("GSdx Config"); main_frame = gtk_frame_new ("GSdx Config");
gtk_container_add (GTK_CONTAINER(main_frame), main_box); gtk_container_add (GTK_CONTAINER(main_frame), main_box);
res_label = gtk_label_new ("Interpolation:"); res_label = gtk_label_new ("Interpolation:");
res_combo_box = gtk_combo_box_new_text (); res_combo_box = gtk_combo_box_new_text ();
gtk_combo_box_append_text(GTK_COMBO_BOX(res_combo_box), "640x480@60"); gtk_combo_box_append_text(GTK_COMBO_BOX(res_combo_box), "640x480@60");
gtk_combo_box_append_text(GTK_COMBO_BOX(res_combo_box), "800x600@60"); gtk_combo_box_append_text(GTK_COMBO_BOX(res_combo_box), "800x600@60");
gtk_combo_box_append_text(GTK_COMBO_BOX(res_combo_box), "1024x768@60"); gtk_combo_box_append_text(GTK_COMBO_BOX(res_combo_box), "1024x768@60");
gtk_combo_box_append_text(GTK_COMBO_BOX(res_combo_box), "And a few other values like that."); gtk_combo_box_append_text(GTK_COMBO_BOX(res_combo_box), "And a few other values like that.");
// Or whatever the default value is. // Or whatever the default value is.
gtk_combo_box_set_active(GTK_COMBO_BOX(res_combo_box), 2); gtk_combo_box_set_active(GTK_COMBO_BOX(res_combo_box), 2);
gtk_container_add(GTK_CONTAINER(main_box), res_label); gtk_container_add(GTK_CONTAINER(main_box), res_label);
gtk_container_add(GTK_CONTAINER(main_box), res_combo_box); gtk_container_add(GTK_CONTAINER(main_box), res_combo_box);
render_label = gtk_label_new ("Renderer:"); render_label = gtk_label_new ("Renderer:");
render_combo_box = gtk_combo_box_new_text (); render_combo_box = gtk_combo_box_new_text ();
gtk_combo_box_append_text(GTK_COMBO_BOX(render_combo_box), "Null Renderer");
for(size_t i = 6; i < theApp.m_gs_renderers.size(); i++)
gtk_combo_box_set_active(GTK_COMBO_BOX(render_combo_box), 0); {
const GSSetting& s = theApp.m_gs_renderers[i];
string label = s.name;
if(!s.note.empty()) label += format(" (%s)", s.note.c_str());
gtk_combo_box_append_text(GTK_COMBO_BOX(render_combo_box), label.c_str());
}
gtk_combo_box_set_active(GTK_COMBO_BOX(render_combo_box), 0);
gtk_container_add(GTK_CONTAINER(main_box), render_label); gtk_container_add(GTK_CONTAINER(main_box), render_label);
gtk_container_add(GTK_CONTAINER(main_box), render_combo_box); gtk_container_add(GTK_CONTAINER(main_box), render_combo_box);
interlace_label = gtk_label_new ("Interlace:"); interlace_label = gtk_label_new ("Interlace:");
interlace_combo_box = gtk_combo_box_new_text (); interlace_combo_box = gtk_combo_box_new_text ();
gtk_combo_box_append_text(GTK_COMBO_BOX(interlace_combo_box), "None");
gtk_combo_box_append_text(GTK_COMBO_BOX(interlace_combo_box), "Weave tff (sawtooth)"); for(size_t i = 0; i < theApp.m_gs_interlace.size(); i++)
gtk_combo_box_append_text(GTK_COMBO_BOX(interlace_combo_box), "Weave bff (sawtooth)"); {
gtk_combo_box_append_text(GTK_COMBO_BOX(interlace_combo_box), "Bob tff (use blend if shaking)"); const GSSetting& s = theApp.m_gs_interlace[i];
gtk_combo_box_append_text(GTK_COMBO_BOX(interlace_combo_box), "Bob bff (use blend if shaking)");
gtk_combo_box_append_text(GTK_COMBO_BOX(interlace_combo_box), "Blend tff (slight blur, 1/2 fps)"); string label = s.name;
gtk_combo_box_append_text(GTK_COMBO_BOX(interlace_combo_box), "Blend bff (slight blur, 1/2 fps)");
if(!s.note.empty()) label += format(" (%s)", s.note.c_str());
gtk_combo_box_set_active(GTK_COMBO_BOX(interlace_combo_box), 0);
gtk_combo_box_append_text(GTK_COMBO_BOX(interlace_combo_box), label.c_str());
}
gtk_combo_box_set_active(GTK_COMBO_BOX(interlace_combo_box), 0);
gtk_container_add(GTK_CONTAINER(main_box), interlace_label); gtk_container_add(GTK_CONTAINER(main_box), interlace_label);
gtk_container_add(GTK_CONTAINER(main_box), interlace_combo_box); gtk_container_add(GTK_CONTAINER(main_box), interlace_combo_box);
aspect_label = gtk_label_new ("Aspect Ratio:"); aspect_label = gtk_label_new ("Aspect Ratio:");
aspect_combo_box = gtk_combo_box_new_text (); aspect_combo_box = gtk_combo_box_new_text ();
gtk_combo_box_append_text(GTK_COMBO_BOX(aspect_combo_box), "Stretch");
gtk_combo_box_append_text(GTK_COMBO_BOX(aspect_combo_box), "4:3"); for(size_t i = 0; i < theApp.m_gs_aspectratio.size(); i++)
gtk_combo_box_append_text(GTK_COMBO_BOX(aspect_combo_box), "16:9"); {
const GSSetting& s = theApp.m_gs_aspectratio[i];
gtk_combo_box_set_active(GTK_COMBO_BOX(aspect_combo_box), 0);
string label = s.name;
if(!s.note.empty()) label += format(" (%s)", s.note.c_str());
gtk_combo_box_append_text(GTK_COMBO_BOX(aspect_combo_box), label.c_str());
}
gtk_combo_box_set_active(GTK_COMBO_BOX(aspect_combo_box), 0);
gtk_container_add(GTK_CONTAINER(main_box), aspect_label); gtk_container_add(GTK_CONTAINER(main_box), aspect_label);
gtk_container_add(GTK_CONTAINER(main_box), aspect_combo_box); gtk_container_add(GTK_CONTAINER(main_box), aspect_combo_box);
texture_check = gtk_check_button_new_with_label("Texture Filtering"); texture_check = gtk_check_button_new_with_label("Texture Filtering");
log_check = gtk_check_button_new_with_label("Logarithmic Z"); log_check = gtk_check_button_new_with_label("Logarithmic Z");
an_8_bit_check = gtk_check_button_new_with_label("Allow 8 bit textures"); an_8_bit_check = gtk_check_button_new_with_label("Allow 8 bit textures");
alpha_check = gtk_check_button_new_with_label("Alpha correction (FBA)"); alpha_check = gtk_check_button_new_with_label("Alpha correction (FBA)");
aa_check = gtk_check_button_new_with_label("Edge anti-aliasing"); aa_check = gtk_check_button_new_with_label("Edge anti-aliasing");
win_check = gtk_check_button_new_with_label("Disable Effects Processing"); win_check = gtk_check_button_new_with_label("Disable Effects Processing");
gtk_container_add(GTK_CONTAINER(main_box), texture_check); gtk_container_add(GTK_CONTAINER(main_box), texture_check);
gtk_container_add(GTK_CONTAINER(main_box), log_check); gtk_container_add(GTK_CONTAINER(main_box), log_check);
gtk_container_add(GTK_CONTAINER(main_box), an_8_bit_check); gtk_container_add(GTK_CONTAINER(main_box), an_8_bit_check);
gtk_container_add(GTK_CONTAINER(main_box), alpha_check); gtk_container_add(GTK_CONTAINER(main_box), alpha_check);
gtk_container_add(GTK_CONTAINER(main_box), aa_check); gtk_container_add(GTK_CONTAINER(main_box), aa_check);
gtk_container_add(GTK_CONTAINER(main_box), win_check); gtk_container_add(GTK_CONTAINER(main_box), win_check);
// These should be set to their actual values, not false. // These should be set to their actual values, not false.
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(texture_check), false); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(texture_check), false);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(log_check), false); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(log_check), false);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(an_8_bit_check), false); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(an_8_bit_check), false);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(alpha_check), false); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(alpha_check), false);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(aa_check), false); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(aa_check), false);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(win_check), false); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(win_check), false);
gtk_container_add (GTK_CONTAINER(gtk_dialog_get_content_area(GTK_DIALOG(dialog))), main_frame); gtk_container_add (GTK_CONTAINER(gtk_dialog_get_content_area(GTK_DIALOG(dialog))), main_frame);
gtk_widget_show_all (dialog); gtk_widget_show_all (dialog);
return_value = gtk_dialog_run (GTK_DIALOG (dialog)); return_value = gtk_dialog_run (GTK_DIALOG (dialog));
if (return_value == GTK_RESPONSE_ACCEPT) if (return_value == GTK_RESPONSE_ACCEPT)
{ {
// Get all the settings from the dialog box. // Get all the settings from the dialog box.
#if 0 // I'll put the right variable names in later. #if 0 // I'll put the right variable names in later.
if (gtk_combo_box_get_active(GTK_COMBO_BOX(res_combo_box)) != -1) if (gtk_combo_box_get_active(GTK_COMBO_BOX(res_combo_box)) != -1)
resolution = gtk_combo_box_get_active(GTK_COMBO_BOX(res_combo_box)); resolution = gtk_combo_box_get_active(GTK_COMBO_BOX(res_combo_box));
if (gtk_combo_box_get_active(GTK_COMBO_BOX(render_combo_box)) != -1) if (gtk_combo_box_get_active(GTK_COMBO_BOX(render_combo_box)) != -1)
renderer = gtk_combo_box_get_active(GTK_COMBO_BOX(render_combo_box)); renderer = gtk_combo_box_get_active(GTK_COMBO_BOX(render_combo_box));
if (gtk_combo_box_get_active(GTK_COMBO_BOX(interlace_combo_box)) != -1) if (gtk_combo_box_get_active(GTK_COMBO_BOX(interlace_combo_box)) != -1)
interlace = gtk_combo_box_get_active(GTK_COMBO_BOX(interlace_combo_box)); interlace = gtk_combo_box_get_active(GTK_COMBO_BOX(interlace_combo_box));
if (gtk_combo_box_get_active(GTK_COMBO_BOX(aspect_combo_box)) != -1) if (gtk_combo_box_get_active(GTK_COMBO_BOX(aspect_combo_box)) != -1)
aspect = gtk_combo_box_get_active(GTK_COMBO_BOX(aspect_combo_box)); aspect = gtk_combo_box_get_active(GTK_COMBO_BOX(aspect_combo_box));
texture = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(texture_check)); texture = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(texture_check));
log = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(log_check)); log = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(log_check));
8_bit = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(an_8_bit_check)); 8_bit = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(an_8_bit_check));
alpha = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(alpha_check)); alpha = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(alpha_check));
aa = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(aa_check)); aa = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(aa_check));
windowed = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(win_check)); windowed = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(win_check));
#endif #endif
gtk_widget_destroy (dialog); gtk_widget_destroy (dialog);
return true; return true;
} }
gtk_widget_destroy (dialog); gtk_widget_destroy (dialog);
return false; return false;
} }

View File

@ -18,6 +18,9 @@
<Compiler> <Compiler>
<Add option="-g" /> <Add option="-g" />
</Compiler> </Compiler>
<Linker>
<Add library="../../deps/debug/libSDL-1.3.a" />
</Linker>
</Target> </Target>
<Target title="Release"> <Target title="Release">
<Option output="../../bin/plugins/libGSdx" prefix_auto="1" extension_auto="1" /> <Option output="../../bin/plugins/libGSdx" prefix_auto="1" extension_auto="1" />
@ -31,6 +34,9 @@
<Compiler> <Compiler>
<Add option="-O2" /> <Add option="-O2" />
</Compiler> </Compiler>
<Linker>
<Add library="../../deps/release/libSDL-1.3.a" />
</Linker>
</Target> </Target>
</Build> </Build>
<Compiler> <Compiler>
@ -82,6 +88,8 @@
<Unit filename="GSDevice.h" /> <Unit filename="GSDevice.h" />
<Unit filename="GSDeviceNull.cpp" /> <Unit filename="GSDeviceNull.cpp" />
<Unit filename="GSDeviceNull.h" /> <Unit filename="GSDeviceNull.h" />
<Unit filename="GSDeviceSDL.cpp" />
<Unit filename="GSDeviceSDL.h" />
<Unit filename="GSDeviceSW.cpp" /> <Unit filename="GSDeviceSW.cpp" />
<Unit filename="GSDeviceSW.h" /> <Unit filename="GSDeviceSW.h" />
<Unit filename="GSDirtyRect.cpp" /> <Unit filename="GSDirtyRect.cpp" />

View File

@ -77,6 +77,8 @@
<Unit filename="GSDevice.h" /> <Unit filename="GSDevice.h" />
<Unit filename="GSDeviceNull.cpp" /> <Unit filename="GSDeviceNull.cpp" />
<Unit filename="GSDeviceNull.h" /> <Unit filename="GSDeviceNull.h" />
<Unit filename="GSDeviceSDL.cpp" />
<Unit filename="GSDeviceSDL.h" />
<Unit filename="GSDeviceSW.cpp" /> <Unit filename="GSDeviceSW.cpp" />
<Unit filename="GSDeviceSW.h" /> <Unit filename="GSDeviceSW.h" />
<Unit filename="GSDirtyRect.cpp" /> <Unit filename="GSDirtyRect.cpp" />