Merge pull request #716 from delroth/vertex-loader
Make vertex loader testable
This commit is contained in:
commit
e15ec56bf0
|
@ -48,6 +48,11 @@ if(WIN32)
|
||||||
set(SRCS ${SRCS} ExtendedTrace.cpp)
|
set(SRCS ${SRCS} ExtendedTrace.cpp)
|
||||||
endif(WIN32)
|
endif(WIN32)
|
||||||
|
|
||||||
|
set(LIBS "${CMAKE_THREAD_LIBS_INIT}")
|
||||||
|
if((NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin") AND (NOT ANDROID))
|
||||||
|
set(LIBS ${LIBS} rt)
|
||||||
|
endif()
|
||||||
|
|
||||||
enable_precompiled_headers(stdafx.h stdafx.cpp SRCS)
|
enable_precompiled_headers(stdafx.h stdafx.cpp SRCS)
|
||||||
|
|
||||||
add_dolphin_library(common "${SRCS}" "${CMAKE_THREAD_LIBS_INIT}")
|
add_dolphin_library(common "${SRCS}" "${LIBS}")
|
||||||
|
|
|
@ -221,7 +221,18 @@ if(_M_ARM_32)
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(LIBS bdisasm inputcommon videoogl videosoftware sfml-network)
|
set(LIBS
|
||||||
|
audiocommon
|
||||||
|
bdisasm
|
||||||
|
common
|
||||||
|
discio
|
||||||
|
inputcommon
|
||||||
|
${LZO}
|
||||||
|
sfml-network
|
||||||
|
videoogl
|
||||||
|
videosoftware
|
||||||
|
z
|
||||||
|
)
|
||||||
|
|
||||||
if(LIBUSB_FOUND)
|
if(LIBUSB_FOUND)
|
||||||
# Using shared LibUSB
|
# Using shared LibUSB
|
||||||
|
@ -236,6 +247,8 @@ if(WIN32)
|
||||||
HW/WiimoteReal/IOWin.cpp)
|
HW/WiimoteReal/IOWin.cpp)
|
||||||
elseif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
elseif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
||||||
set(SRCS ${SRCS} HW/BBA-TAP/TAP_Apple.cpp HW/WiimoteReal/IOdarwin.mm)
|
set(SRCS ${SRCS} HW/BBA-TAP/TAP_Apple.cpp HW/WiimoteReal/IOdarwin.mm)
|
||||||
|
set(LIBS ${LIBS}
|
||||||
|
${IOB_LIBRARY})
|
||||||
elseif(UNIX)
|
elseif(UNIX)
|
||||||
set(SRCS ${SRCS} HW/BBA-TAP/TAP_Unix.cpp)
|
set(SRCS ${SRCS} HW/BBA-TAP/TAP_Unix.cpp)
|
||||||
if((${CMAKE_SYSTEM_NAME} MATCHES "Linux") AND BLUEZ_FOUND)
|
if((${CMAKE_SYSTEM_NAME} MATCHES "Linux") AND BLUEZ_FOUND)
|
||||||
|
|
|
@ -42,6 +42,8 @@ void Host_UpdateLogDisplay();
|
||||||
void Host_UpdateMainFrame();
|
void Host_UpdateMainFrame();
|
||||||
void Host_UpdateStatusBar(const std::string& text, int Filed = 0);
|
void Host_UpdateStatusBar(const std::string& text, int Filed = 0);
|
||||||
void Host_UpdateTitle(const std::string& title);
|
void Host_UpdateTitle(const std::string& title);
|
||||||
|
void Host_ShowVideoConfig(void* parent, const std::string& backend_name,
|
||||||
|
const std::string& config_name);
|
||||||
|
|
||||||
// TODO (neobrain): Remove this from host!
|
// TODO (neobrain): Remove this from host!
|
||||||
void* Host_GetRenderHandle();
|
void* Host_GetRenderHandle();
|
||||||
|
|
|
@ -4,41 +4,17 @@ endif()
|
||||||
|
|
||||||
set(LIBS core
|
set(LIBS core
|
||||||
${LZO}
|
${LZO}
|
||||||
discio
|
|
||||||
bdisasm
|
|
||||||
inputcommon
|
|
||||||
common
|
|
||||||
audiocommon
|
|
||||||
z
|
|
||||||
sfml-network
|
|
||||||
${GTK2_LIBRARIES})
|
${GTK2_LIBRARIES})
|
||||||
|
|
||||||
if((NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin") AND (NOT ANDROID))
|
|
||||||
set(LIBS ${LIBS} rt)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(NOT ANDROID)
|
if(NOT ANDROID)
|
||||||
if(USE_X11)
|
if(USE_X11)
|
||||||
set(LIBS ${LIBS} ${X11_LIBRARIES}
|
set(LIBS ${LIBS} ${XRANDR_LIBRARIES})
|
||||||
${XINPUT2_LIBRARIES}
|
|
||||||
${XRANDR_LIBRARIES})
|
|
||||||
endif()
|
endif()
|
||||||
if(USE_WAYLAND)
|
if(USE_WAYLAND)
|
||||||
set(LIBS ${LIBS} ${WAYLAND_LIBRARIES}
|
set(LIBS ${LIBS} ${WAYLAND_LIBRARIES} ${XKBCOMMON_LIBRARIES})
|
||||||
${XKBCOMMON_LIBRARIES})
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
link_directories(${CMAKE_PREFIX_PATH}/lib)
|
link_directories(${CMAKE_PREFIX_PATH}/lib)
|
||||||
|
|
||||||
if(SDL2_FOUND)
|
|
||||||
# Using shared SDL2
|
|
||||||
set(LIBS ${LIBS} ${SDL2_LIBRARY})
|
|
||||||
else(SDL2_FOUND)
|
|
||||||
if(SDL_FOUND)
|
|
||||||
# Using shared SDL
|
|
||||||
set(LIBS ${LIBS} ${SDL_LIBRARY})
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
else()
|
else()
|
||||||
set(LIBS ${LIBS} png iconv)
|
set(LIBS ${LIBS} png iconv)
|
||||||
endif()
|
endif()
|
||||||
|
@ -87,6 +63,7 @@ if(wxWidgets_FOUND)
|
||||||
MemoryCards/WiiSaveCrypted.cpp
|
MemoryCards/WiiSaveCrypted.cpp
|
||||||
NetWindow.cpp
|
NetWindow.cpp
|
||||||
PatchAddEdit.cpp
|
PatchAddEdit.cpp
|
||||||
|
SoftwareVideoConfigDialog.cpp
|
||||||
TASInputDlg.cpp
|
TASInputDlg.cpp
|
||||||
VideoConfigDiag.cpp
|
VideoConfigDiag.cpp
|
||||||
WXInputBase.cpp
|
WXInputBase.cpp
|
||||||
|
@ -123,6 +100,7 @@ else()
|
||||||
|
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
set(SRCS ${SRCS} GLInterface/GLInterface.cpp)
|
||||||
|
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
set(SRCS ${SRCS} stdafx.cpp)
|
set(SRCS ${SRCS} stdafx.cpp)
|
||||||
|
@ -134,7 +112,6 @@ elseif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
||||||
${COREAUDIO_LIBRARY}
|
${COREAUDIO_LIBRARY}
|
||||||
${COREFUND_LIBRARY}
|
${COREFUND_LIBRARY}
|
||||||
${CORESERV_LIBRARY}
|
${CORESERV_LIBRARY}
|
||||||
${IOB_LIBRARY}
|
|
||||||
${IOK_LIBRARY}
|
${IOK_LIBRARY}
|
||||||
${FORCEFEEDBACK}
|
${FORCEFEEDBACK}
|
||||||
)
|
)
|
||||||
|
|
|
@ -74,6 +74,7 @@
|
||||||
<ClCompile Include="FrameTools.cpp" />
|
<ClCompile Include="FrameTools.cpp" />
|
||||||
<ClCompile Include="GameListCtrl.cpp" />
|
<ClCompile Include="GameListCtrl.cpp" />
|
||||||
<ClCompile Include="GeckoCodeDiag.cpp" />
|
<ClCompile Include="GeckoCodeDiag.cpp" />
|
||||||
|
<ClCompile Include="GLInterface\GLInterface.cpp" />
|
||||||
<ClCompile Include="GLInterface\WGL.cpp" />
|
<ClCompile Include="GLInterface\WGL.cpp" />
|
||||||
<ClCompile Include="HotkeyDlg.cpp" />
|
<ClCompile Include="HotkeyDlg.cpp" />
|
||||||
<ClCompile Include="InputConfigDiag.cpp" />
|
<ClCompile Include="InputConfigDiag.cpp" />
|
||||||
|
@ -90,6 +91,7 @@
|
||||||
<ClCompile Include="MemoryCards\WiiSaveCrypted.cpp" />
|
<ClCompile Include="MemoryCards\WiiSaveCrypted.cpp" />
|
||||||
<ClCompile Include="NetWindow.cpp" />
|
<ClCompile Include="NetWindow.cpp" />
|
||||||
<ClCompile Include="PatchAddEdit.cpp" />
|
<ClCompile Include="PatchAddEdit.cpp" />
|
||||||
|
<ClCompile Include="SoftwareVideoConfigDialog.cpp" />
|
||||||
<ClCompile Include="stdafx.cpp">
|
<ClCompile Include="stdafx.cpp">
|
||||||
<PrecompiledHeader>Create</PrecompiledHeader>
|
<PrecompiledHeader>Create</PrecompiledHeader>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
@ -125,7 +127,6 @@
|
||||||
<ClInclude Include="Frame.h" />
|
<ClInclude Include="Frame.h" />
|
||||||
<ClInclude Include="GameListCtrl.h" />
|
<ClInclude Include="GameListCtrl.h" />
|
||||||
<ClInclude Include="GeckoCodeDiag.h" />
|
<ClInclude Include="GeckoCodeDiag.h" />
|
||||||
<ClInclude Include="GLInterface\InterfaceBase.h" />
|
|
||||||
<ClInclude Include="GLInterface\WGL.h" />
|
<ClInclude Include="GLInterface\WGL.h" />
|
||||||
<ClInclude Include="Globals.h" />
|
<ClInclude Include="Globals.h" />
|
||||||
<ClInclude Include="HotkeyDlg.h" />
|
<ClInclude Include="HotkeyDlg.h" />
|
||||||
|
@ -139,6 +140,7 @@
|
||||||
<ClInclude Include="MemoryCards\WiiSaveCrypted.h" />
|
<ClInclude Include="MemoryCards\WiiSaveCrypted.h" />
|
||||||
<ClInclude Include="NetWindow.h" />
|
<ClInclude Include="NetWindow.h" />
|
||||||
<ClInclude Include="PatchAddEdit.h" />
|
<ClInclude Include="PatchAddEdit.h" />
|
||||||
|
<ClInclude Include="SoftwareVideoConfigDialog.h" />
|
||||||
<ClInclude Include="stdafx.h" />
|
<ClInclude Include="stdafx.h" />
|
||||||
<ClInclude Include="TASInputDlg.h" />
|
<ClInclude Include="TASInputDlg.h" />
|
||||||
<ClInclude Include="VideoConfigDiag.h" />
|
<ClInclude Include="VideoConfigDiag.h" />
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
</Filter>
|
</Filter>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<ClCompile Include="GLInterface\GLInterface.cpp" />
|
||||||
<ClCompile Include="GLInterface\WGL.cpp" />
|
<ClCompile Include="GLInterface\WGL.cpp" />
|
||||||
<ClCompile Include="Main.cpp" />
|
<ClCompile Include="Main.cpp" />
|
||||||
<ClCompile Include="MainNoGUI.cpp" />
|
<ClCompile Include="MainNoGUI.cpp" />
|
||||||
|
@ -153,9 +154,11 @@
|
||||||
<Filter>GUI</Filter>
|
<Filter>GUI</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="stdafx.cpp" />
|
<ClCompile Include="stdafx.cpp" />
|
||||||
|
<ClCompile Include="SoftwareVideoConfigDialog.cpp">
|
||||||
|
<Filter>GUI\Video</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="GLInterface\InterfaceBase.h" />
|
|
||||||
<ClInclude Include="GLInterface\WGL.h" />
|
<ClInclude Include="GLInterface\WGL.h" />
|
||||||
<ClInclude Include="Main.h" />
|
<ClInclude Include="Main.h" />
|
||||||
<ClInclude Include="WXInputBase.h" />
|
<ClInclude Include="WXInputBase.h" />
|
||||||
|
@ -276,6 +279,9 @@
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="stdafx.h" />
|
<ClInclude Include="stdafx.h" />
|
||||||
<ClInclude Include="GLInterface\GLInterface.h" />
|
<ClInclude Include="GLInterface\GLInterface.h" />
|
||||||
|
<ClInclude Include="SoftwareVideoConfigDialog.h">
|
||||||
|
<Filter>GUI\Video</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Text Include="CMakeLists.txt" />
|
<Text Include="CMakeLists.txt" />
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
#import <AppKit/AppKit.h>
|
#import <AppKit/AppKit.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "DolphinWX/GLInterface/InterfaceBase.h"
|
#include "VideoBackends/OGL/GLInterfaceBase.h"
|
||||||
|
|
||||||
class cInterfaceAGL : public cInterfaceBase
|
class cInterfaceAGL : public cInterfaceBase
|
||||||
{
|
{
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
#include <EGL/egl.h>
|
#include <EGL/egl.h>
|
||||||
|
|
||||||
#include "Core/ConfigManager.h"
|
#include "Core/ConfigManager.h"
|
||||||
#include "DolphinWX/GLInterface/InterfaceBase.h"
|
#include "VideoBackends/OGL/GLInterfaceBase.h"
|
||||||
|
|
||||||
|
|
||||||
class cPlatform
|
class cPlatform
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
// Copyright 2014 Dolphin Emulator Project
|
||||||
|
// Licensed under GPLv2
|
||||||
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#include "DolphinWX/GLInterface/GLInterface.h"
|
||||||
|
#include "VideoBackends/OGL/GLInterfaceBase.h"
|
||||||
|
|
||||||
|
GLWindow GLWin;
|
||||||
|
|
||||||
|
cInterfaceBase* HostGL_CreateGLInterface()
|
||||||
|
{
|
||||||
|
#if defined(USE_EGL) && USE_EGL
|
||||||
|
return new cInterfaceEGL;
|
||||||
|
#elif defined(__APPLE__)
|
||||||
|
return new cInterfaceAGL;
|
||||||
|
#elif defined(_WIN32)
|
||||||
|
return new cInterfaceWGL;
|
||||||
|
#elif defined(HAVE_X11) && HAVE_X11
|
||||||
|
return new cInterfaceGLX;
|
||||||
|
#else
|
||||||
|
return nullptr;
|
||||||
|
#endif
|
||||||
|
}
|
|
@ -108,5 +108,4 @@ typedef struct {
|
||||||
unsigned int width, height;
|
unsigned int width, height;
|
||||||
} GLWindow;
|
} GLWindow;
|
||||||
|
|
||||||
extern cInterfaceBase *GLInterface;
|
|
||||||
extern GLWindow GLWin;
|
extern GLWindow GLWin;
|
||||||
|
|
|
@ -6,8 +6,8 @@
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
#include "DolphinWX/GLInterface/InterfaceBase.h"
|
|
||||||
#include "DolphinWX/GLInterface/X11_Util.h"
|
#include "DolphinWX/GLInterface/X11_Util.h"
|
||||||
|
#include "VideoBackends/OGL/GLInterfaceBase.h"
|
||||||
|
|
||||||
class cInterfaceGLX : public cInterfaceBase
|
class cInterfaceGLX : public cInterfaceBase
|
||||||
{
|
{
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include "DolphinWX/GLInterface/InterfaceBase.h"
|
#include "VideoBackends/OGL/GLInterfaceBase.h"
|
||||||
|
|
||||||
class cInterfaceWGL : public cInterfaceBase
|
class cInterfaceWGL : public cInterfaceBase
|
||||||
{
|
{
|
||||||
|
|
|
@ -46,6 +46,8 @@
|
||||||
#include "DolphinWX/Frame.h"
|
#include "DolphinWX/Frame.h"
|
||||||
#include "DolphinWX/Globals.h"
|
#include "DolphinWX/Globals.h"
|
||||||
#include "DolphinWX/Main.h"
|
#include "DolphinWX/Main.h"
|
||||||
|
#include "DolphinWX/SoftwareVideoConfigDialog.h"
|
||||||
|
#include "DolphinWX/VideoConfigDiag.h"
|
||||||
#include "DolphinWX/WxUtils.h"
|
#include "DolphinWX/WxUtils.h"
|
||||||
#include "DolphinWX/Debugger/CodeWindow.h"
|
#include "DolphinWX/Debugger/CodeWindow.h"
|
||||||
#include "DolphinWX/Debugger/JitWindow.h"
|
#include "DolphinWX/Debugger/JitWindow.h"
|
||||||
|
@ -686,3 +688,18 @@ void Host_ConnectWiimote(int wm_idx, bool connect)
|
||||||
{
|
{
|
||||||
CFrame::ConnectWiimote(wm_idx, connect);
|
CFrame::ConnectWiimote(wm_idx, connect);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Host_ShowVideoConfig(void* parent, const std::string& backend_name,
|
||||||
|
const std::string& config_name)
|
||||||
|
{
|
||||||
|
if (backend_name == "Direct3D" || backend_name == "OpenGL")
|
||||||
|
{
|
||||||
|
VideoConfigDiag diag((wxWindow*)parent, backend_name, config_name);
|
||||||
|
diag.ShowModal();
|
||||||
|
}
|
||||||
|
else if (backend_name == "Software Renderer")
|
||||||
|
{
|
||||||
|
SoftwareVideoConfigDialog diag((wxWindow*)parent, backend_name, config_name);
|
||||||
|
diag.ShowModal();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -125,6 +125,8 @@ void Host_SysMessage(const char *fmt, ...)
|
||||||
|
|
||||||
void Host_SetWiiMoteConnectionState(int _State) {}
|
void Host_SetWiiMoteConnectionState(int _State) {}
|
||||||
|
|
||||||
|
void Host_ShowVideoConfig(void*, const std::string&, const std::string&) {}
|
||||||
|
|
||||||
#define DVD_BANNER_WIDTH 96
|
#define DVD_BANNER_WIDTH 96
|
||||||
#define DVD_BANNER_HEIGHT 32
|
#define DVD_BANNER_HEIGHT 32
|
||||||
std::vector<std::string> m_volume_names;
|
std::vector<std::string> m_volume_names;
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
#include "Core/ConfigManager.h"
|
#include "Core/ConfigManager.h"
|
||||||
#include "Core/Core.h"
|
#include "Core/Core.h"
|
||||||
#include "Core/CoreParameter.h"
|
#include "Core/CoreParameter.h"
|
||||||
|
#include "Core/Host.h"
|
||||||
#include "Core/HW/Wiimote.h"
|
#include "Core/HW/Wiimote.h"
|
||||||
#include "Core/PowerPC/PowerPC.h"
|
#include "Core/PowerPC/PowerPC.h"
|
||||||
|
|
||||||
|
@ -133,6 +134,8 @@ void Host_SysMessage(const char *fmt, ...)
|
||||||
|
|
||||||
void Host_SetWiiMoteConnectionState(int _State) {}
|
void Host_SetWiiMoteConnectionState(int _State) {}
|
||||||
|
|
||||||
|
void Host_ShowVideoConfig(void*, const std::string&, const std::string&) {}
|
||||||
|
|
||||||
#if HAVE_X11
|
#if HAVE_X11
|
||||||
void X11_MainLoop()
|
void X11_MainLoop()
|
||||||
{
|
{
|
||||||
|
|
|
@ -0,0 +1,144 @@
|
||||||
|
// Copyright 2013 Dolphin Emulator Project
|
||||||
|
// Licensed under GPLv2
|
||||||
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
#include <wx/button.h>
|
||||||
|
#include <wx/checkbox.h>
|
||||||
|
#include <wx/combobox.h>
|
||||||
|
#include <wx/notebook.h>
|
||||||
|
#include <wx/panel.h>
|
||||||
|
#include <wx/spinctrl.h>
|
||||||
|
#include <wx/stattext.h>
|
||||||
|
#include <wx/textctrl.h>
|
||||||
|
#include <wx/wx.h>
|
||||||
|
|
||||||
|
#include "Common/FileUtil.h"
|
||||||
|
#include "Core/Core.h"
|
||||||
|
#include "DolphinWX/SoftwareVideoConfigDialog.h"
|
||||||
|
#include "DolphinWX/VideoConfigDiag.h"
|
||||||
|
#include "DolphinWX/WxUtils.h"
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
IntegerSetting<T>::IntegerSetting(wxWindow* parent, const wxString& label, T& setting, int minVal, int maxVal, long style) :
|
||||||
|
wxSpinCtrl(parent, -1, label, wxDefaultPosition, wxDefaultSize, style),
|
||||||
|
m_setting(setting)
|
||||||
|
{
|
||||||
|
SetRange(minVal, maxVal);
|
||||||
|
SetValue(m_setting);
|
||||||
|
Bind(wxEVT_COMMAND_SPINCTRL_UPDATED, &IntegerSetting::UpdateValue, this);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SoftwareVideoConfigDialog::SoftwareVideoConfigDialog(wxWindow* parent, const std::string& title, const std::string& _ininame) :
|
||||||
|
wxDialog(parent, -1,
|
||||||
|
wxString(wxString::Format(_("Dolphin %s Graphics Configuration"), title))),
|
||||||
|
vconfig(g_SWVideoConfig),
|
||||||
|
ininame(_ininame)
|
||||||
|
{
|
||||||
|
vconfig.Load((File::GetUserPath(D_CONFIG_IDX) + ininame + ".ini").c_str());
|
||||||
|
|
||||||
|
wxNotebook* const notebook = new wxNotebook(this, -1, wxDefaultPosition, wxDefaultSize);
|
||||||
|
|
||||||
|
// -- GENERAL --
|
||||||
|
{
|
||||||
|
wxPanel* const page_general= new wxPanel(notebook, -1, wxDefaultPosition);
|
||||||
|
notebook->AddPage(page_general, wxT("General"));
|
||||||
|
wxBoxSizer* const szr_general = new wxBoxSizer(wxVERTICAL);
|
||||||
|
|
||||||
|
// - rendering
|
||||||
|
{
|
||||||
|
wxStaticBoxSizer* const group_rendering = new wxStaticBoxSizer(wxVERTICAL, page_general, wxT("Rendering"));
|
||||||
|
szr_general->Add(group_rendering, 0, wxEXPAND | wxALL, 5);
|
||||||
|
wxGridSizer* const szr_rendering = new wxGridSizer(2, 5, 5);
|
||||||
|
group_rendering->Add(szr_rendering, 1, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 5);
|
||||||
|
|
||||||
|
// backend
|
||||||
|
wxStaticText* const label_backend = new wxStaticText(page_general, wxID_ANY, _("Backend:"));
|
||||||
|
wxChoice* const choice_backend = new wxChoice(page_general, wxID_ANY, wxDefaultPosition);
|
||||||
|
|
||||||
|
for (const VideoBackend* backend : g_available_video_backends)
|
||||||
|
{
|
||||||
|
choice_backend->AppendString(StrToWxStr(backend->GetDisplayName()));
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: How to get the translated plugin name?
|
||||||
|
choice_backend->SetStringSelection(StrToWxStr(g_video_backend->GetName()));
|
||||||
|
choice_backend->Bind(wxEVT_COMMAND_CHOICE_SELECTED, &SoftwareVideoConfigDialog::Event_Backend, this);
|
||||||
|
|
||||||
|
szr_rendering->Add(label_backend, 1, wxALIGN_CENTER_VERTICAL, 5);
|
||||||
|
szr_rendering->Add(choice_backend, 1, 0, 0);
|
||||||
|
|
||||||
|
if (Core::GetState() != Core::CORE_UNINITIALIZED)
|
||||||
|
{
|
||||||
|
label_backend->Disable();
|
||||||
|
choice_backend->Disable();
|
||||||
|
}
|
||||||
|
|
||||||
|
// rasterizer
|
||||||
|
szr_rendering->Add(new SettingCheckBox(page_general, wxT("Hardware rasterization"), wxT(""), vconfig.bHwRasterizer));
|
||||||
|
|
||||||
|
// xfb
|
||||||
|
szr_rendering->Add(new SettingCheckBox(page_general, wxT("Bypass XFB"), wxT(""), vconfig.bBypassXFB));
|
||||||
|
}
|
||||||
|
|
||||||
|
// - info
|
||||||
|
{
|
||||||
|
wxStaticBoxSizer* const group_info = new wxStaticBoxSizer(wxVERTICAL, page_general, wxT("Overlay Information"));
|
||||||
|
szr_general->Add(group_info, 0, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 5);
|
||||||
|
wxGridSizer* const szr_info = new wxGridSizer(2, 5, 5);
|
||||||
|
group_info->Add(szr_info, 1, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 5);
|
||||||
|
|
||||||
|
szr_info->Add(new SettingCheckBox(page_general, wxT("Various Statistics"), wxT(""), vconfig.bShowStats));
|
||||||
|
}
|
||||||
|
|
||||||
|
// - utility
|
||||||
|
{
|
||||||
|
wxStaticBoxSizer* const group_utility = new wxStaticBoxSizer(wxVERTICAL, page_general, wxT("Utility"));
|
||||||
|
szr_general->Add(group_utility, 0, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 5);
|
||||||
|
wxGridSizer* const szr_utility = new wxGridSizer(2, 5, 5);
|
||||||
|
group_utility->Add(szr_utility, 1, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 5);
|
||||||
|
|
||||||
|
szr_utility->Add(new SettingCheckBox(page_general, wxT("Dump Textures"), wxT(""), vconfig.bDumpTextures));
|
||||||
|
szr_utility->Add(new SettingCheckBox(page_general, wxT("Dump Objects"), wxT(""), vconfig.bDumpObjects));
|
||||||
|
szr_utility->Add(new SettingCheckBox(page_general, wxT("Dump Frames"), wxT(""), vconfig.bDumpFrames));
|
||||||
|
|
||||||
|
// - debug only
|
||||||
|
wxStaticBoxSizer* const group_debug_only_utility = new wxStaticBoxSizer(wxHORIZONTAL, page_general, wxT("Debug Only"));
|
||||||
|
group_utility->Add(group_debug_only_utility, 0, wxEXPAND | wxBOTTOM, 5);
|
||||||
|
wxGridSizer* const szr_debug_only_utility = new wxGridSizer(2, 5, 5);
|
||||||
|
group_debug_only_utility->Add(szr_debug_only_utility, 1, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 5);
|
||||||
|
|
||||||
|
szr_debug_only_utility->Add(new SettingCheckBox(page_general, wxT("Dump TEV Stages"), wxT(""), vconfig.bDumpTevStages));
|
||||||
|
szr_debug_only_utility->Add(new SettingCheckBox(page_general, wxT("Dump Texture Fetches"), wxT(""), vconfig.bDumpTevTextureFetches));
|
||||||
|
}
|
||||||
|
|
||||||
|
// - misc
|
||||||
|
{
|
||||||
|
wxStaticBoxSizer* const group_misc = new wxStaticBoxSizer(wxVERTICAL, page_general, wxT("Drawn Object Range"));
|
||||||
|
szr_general->Add(group_misc, 0, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 5);
|
||||||
|
wxFlexGridSizer* const szr_misc = new wxFlexGridSizer(2, 5, 5);
|
||||||
|
group_misc->Add(szr_misc, 1, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 5);
|
||||||
|
|
||||||
|
szr_misc->Add(new U32Setting(page_general, wxT("Start"), vconfig.drawStart, 0, 100000));
|
||||||
|
szr_misc->Add(new U32Setting(page_general, wxT("End"), vconfig.drawEnd, 0, 100000));
|
||||||
|
}
|
||||||
|
|
||||||
|
page_general->SetSizerAndFit(szr_general);
|
||||||
|
}
|
||||||
|
|
||||||
|
wxBoxSizer* const szr_main = new wxBoxSizer(wxVERTICAL);
|
||||||
|
szr_main->Add(notebook, 1, wxEXPAND | wxALL, 5);
|
||||||
|
szr_main->Add(new wxButton(this, wxID_OK, wxT("Close"), wxDefaultPosition),
|
||||||
|
0, wxALIGN_RIGHT | wxRIGHT | wxBOTTOM, 5);
|
||||||
|
|
||||||
|
SetSizerAndFit(szr_main);
|
||||||
|
Center();
|
||||||
|
SetFocus();
|
||||||
|
}
|
||||||
|
|
||||||
|
SoftwareVideoConfigDialog::~SoftwareVideoConfigDialog()
|
||||||
|
{
|
||||||
|
g_SWVideoConfig.Save((File::GetUserPath(D_CONFIG_IDX) + ininame + ".ini").c_str());
|
||||||
|
}
|
|
@ -0,0 +1,51 @@
|
||||||
|
// Copyright 2013 Dolphin Emulator Project
|
||||||
|
// Licensed under GPLv2
|
||||||
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
// TODO: Merge this with the original VideoConfigDiag or something
|
||||||
|
// This is an awful way of managing a separate video backend.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
#include <wx/button.h>
|
||||||
|
#include <wx/checkbox.h>
|
||||||
|
#include <wx/combobox.h>
|
||||||
|
#include <wx/notebook.h>
|
||||||
|
#include <wx/panel.h>
|
||||||
|
#include <wx/spinctrl.h>
|
||||||
|
#include <wx/stattext.h>
|
||||||
|
#include <wx/textctrl.h>
|
||||||
|
#include <wx/wx.h>
|
||||||
|
|
||||||
|
#include "Core/ConfigManager.h"
|
||||||
|
#include "VideoBackends/Software/SWVideoConfig.h"
|
||||||
|
#include "VideoCommon/VideoBackendBase.h"
|
||||||
|
|
||||||
|
class SoftwareVideoConfigDialog : public wxDialog
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
SoftwareVideoConfigDialog(wxWindow* parent, const std::string &title, const std::string& ininame);
|
||||||
|
~SoftwareVideoConfigDialog();
|
||||||
|
|
||||||
|
void Event_Backend(wxCommandEvent &ev)
|
||||||
|
{
|
||||||
|
VideoBackend* new_backend = g_available_video_backends[ev.GetInt()];
|
||||||
|
|
||||||
|
if (g_video_backend != new_backend)
|
||||||
|
{
|
||||||
|
Close();
|
||||||
|
|
||||||
|
g_video_backend = new_backend;
|
||||||
|
SConfig::GetInstance().m_LocalCoreStartupParameter.m_strVideoBackend = g_video_backend->GetName();
|
||||||
|
|
||||||
|
g_video_backend->ShowConfig(GetParent());
|
||||||
|
}
|
||||||
|
ev.Skip();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
SWVideoConfig& vconfig;
|
||||||
|
std::string ininame;
|
||||||
|
};
|
|
@ -31,6 +31,7 @@
|
||||||
#include "DolphinWX/Main.h"
|
#include "DolphinWX/Main.h"
|
||||||
#include "DolphinWX/VideoConfigDiag.h"
|
#include "DolphinWX/VideoConfigDiag.h"
|
||||||
#include "DolphinWX/WxUtils.h"
|
#include "DolphinWX/WxUtils.h"
|
||||||
|
#include "VideoBackends/OGL/main.h"
|
||||||
#include "VideoCommon/VideoBackendBase.h"
|
#include "VideoCommon/VideoBackendBase.h"
|
||||||
#include "VideoCommon/VideoConfig.h"
|
#include "VideoCommon/VideoConfig.h"
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,9 @@ set(SRCS ControllerEmu.cpp
|
||||||
ControllerInterface/Device.cpp
|
ControllerInterface/Device.cpp
|
||||||
ControllerInterface/ExpressionParser.cpp)
|
ControllerInterface/ExpressionParser.cpp)
|
||||||
|
|
||||||
|
|
||||||
|
set(LIBS common)
|
||||||
|
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
set(SRCS ${SRCS}
|
set(SRCS ${SRCS}
|
||||||
ControllerInterface/DInput/DInput.cpp
|
ControllerInterface/DInput/DInput.cpp
|
||||||
|
@ -24,6 +27,7 @@ elseif(X11_FOUND)
|
||||||
set(SRCS ${SRCS}
|
set(SRCS ${SRCS}
|
||||||
ControllerInterface/Xlib/XInput2.cpp)
|
ControllerInterface/Xlib/XInput2.cpp)
|
||||||
endif()
|
endif()
|
||||||
|
set(LIBS ${LIBS} ${X11_LIBRARIES} ${XINPUT2_LIBRARIES})
|
||||||
elseif(ANDROID)
|
elseif(ANDROID)
|
||||||
set(SRCS ${SRCS}
|
set(SRCS ${SRCS}
|
||||||
ControllerInterface/Android/Android.cpp)
|
ControllerInterface/Android/Android.cpp)
|
||||||
|
@ -31,6 +35,11 @@ endif()
|
||||||
|
|
||||||
if(SDL_FOUND OR SDL2_FOUND)
|
if(SDL_FOUND OR SDL2_FOUND)
|
||||||
set(SRCS ${SRCS} ControllerInterface/SDL/SDL.cpp)
|
set(SRCS ${SRCS} ControllerInterface/SDL/SDL.cpp)
|
||||||
|
if (SDL2_FOUND)
|
||||||
|
set(LIBS ${LIBS} ${SDL2_LIBRARY})
|
||||||
|
elseif(SDL_FOUND)
|
||||||
|
set(LIBS ${LIBS} ${SDL_LIBRARY})
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_dolphin_library(inputcommon "${SRCS}" "")
|
add_dolphin_library(inputcommon "${SRCS}" "${LIBS}")
|
||||||
|
|
|
@ -5,10 +5,6 @@
|
||||||
#include "Common/Thread.h"
|
#include "Common/Thread.h"
|
||||||
#include "InputCommon/ControllerInterface/ControllerInterface.h"
|
#include "InputCommon/ControllerInterface/ControllerInterface.h"
|
||||||
|
|
||||||
#if USE_EGL
|
|
||||||
#include "DolphinWX/GLInterface/GLInterface.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CIFACE_USE_XINPUT
|
#ifdef CIFACE_USE_XINPUT
|
||||||
#include "InputCommon/ControllerInterface/XInput/XInput.h"
|
#include "InputCommon/ControllerInterface/XInput/XInput.h"
|
||||||
#endif
|
#endif
|
||||||
|
@ -57,16 +53,10 @@ void ControllerInterface::Initialize()
|
||||||
ciface::XInput::Init(m_devices);
|
ciface::XInput::Init(m_devices);
|
||||||
#endif
|
#endif
|
||||||
#ifdef CIFACE_USE_XLIB
|
#ifdef CIFACE_USE_XLIB
|
||||||
#if USE_EGL
|
|
||||||
if (GLWin.platform == EGL_PLATFORM_X11) {
|
|
||||||
#endif
|
|
||||||
ciface::Xlib::Init(m_devices, m_hwnd);
|
ciface::Xlib::Init(m_devices, m_hwnd);
|
||||||
#ifdef CIFACE_USE_X11_XINPUT2
|
#ifdef CIFACE_USE_X11_XINPUT2
|
||||||
ciface::XInput2::Init(m_devices, m_hwnd);
|
ciface::XInput2::Init(m_devices, m_hwnd);
|
||||||
#endif
|
#endif
|
||||||
#if USE_EGL
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
#ifdef CIFACE_USE_OSX
|
#ifdef CIFACE_USE_OSX
|
||||||
ciface::OSX::Init(m_devices, m_hwnd);
|
ciface::OSX::Init(m_devices, m_hwnd);
|
||||||
|
|
|
@ -3,7 +3,6 @@
|
||||||
// Refer to the license.txt file included.
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <wx/wx.h>
|
|
||||||
|
|
||||||
#include "Common/FileUtil.h"
|
#include "Common/FileUtil.h"
|
||||||
#include "Common/IniFile.h"
|
#include "Common/IniFile.h"
|
||||||
|
@ -14,9 +13,6 @@
|
||||||
#include "Core/Core.h"
|
#include "Core/Core.h"
|
||||||
#include "Core/Host.h"
|
#include "Core/Host.h"
|
||||||
|
|
||||||
#include "DolphinWX/VideoConfigDiag.h"
|
|
||||||
#include "DolphinWX/Debugger/DebuggerPanel.h"
|
|
||||||
|
|
||||||
#include "VideoBackends/D3D/D3DBase.h"
|
#include "VideoBackends/D3D/D3DBase.h"
|
||||||
#include "VideoBackends/D3D/D3DUtil.h"
|
#include "VideoBackends/D3D/D3DUtil.h"
|
||||||
#include "VideoBackends/D3D/Globals.h"
|
#include "VideoBackends/D3D/Globals.h"
|
||||||
|
@ -139,13 +135,10 @@ void InitBackendInfo()
|
||||||
DX11::D3D::UnloadD3D();
|
DX11::D3D::UnloadD3D();
|
||||||
}
|
}
|
||||||
|
|
||||||
void VideoBackend::ShowConfig(void *_hParent)
|
void VideoBackend::ShowConfig(void *hParent)
|
||||||
{
|
{
|
||||||
#if defined(HAVE_WX) && HAVE_WX
|
|
||||||
InitBackendInfo();
|
InitBackendInfo();
|
||||||
VideoConfigDiag diag((wxWindow*)_hParent, _trans("Direct3D"), "gfx_dx11");
|
Host_ShowVideoConfig(hParent, GetDisplayName(), "gfx_dx11");
|
||||||
diag.ShowModal();
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool VideoBackend::Initialize(void *&window_handle)
|
bool VideoBackend::Initialize(void *&window_handle)
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
#include <unordered_map>
|
#include <unordered_map>
|
||||||
|
|
||||||
#include "Common/Logging/Log.h"
|
#include "Common/Logging/Log.h"
|
||||||
|
#include "VideoBackends/OGL/GLInterfaceBase.h"
|
||||||
#include "VideoBackends/OGL/GLExtensions/GLExtensions.h"
|
#include "VideoBackends/OGL/GLExtensions/GLExtensions.h"
|
||||||
|
|
||||||
#if defined(__linux__) || defined(__APPLE__)
|
#if defined(__linux__) || defined(__APPLE__)
|
||||||
|
|
|
@ -4,8 +4,6 @@
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
#include "DolphinWX/GLInterface/GLInterface.h"
|
|
||||||
|
|
||||||
#include "VideoBackends/OGL/GLExtensions/ARB_blend_func_extended.h"
|
#include "VideoBackends/OGL/GLExtensions/ARB_blend_func_extended.h"
|
||||||
#include "VideoBackends/OGL/GLExtensions/ARB_buffer_storage.h"
|
#include "VideoBackends/OGL/GLExtensions/ARB_buffer_storage.h"
|
||||||
#include "VideoBackends/OGL/GLExtensions/ARB_debug_output.h"
|
#include "VideoBackends/OGL/GLExtensions/ARB_debug_output.h"
|
||||||
|
|
|
@ -41,3 +41,9 @@ public:
|
||||||
virtual void Update() { }
|
virtual void Update() { }
|
||||||
virtual bool PeekMessages() { return false; }
|
virtual bool PeekMessages() { return false; }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
extern cInterfaceBase *GLInterface;
|
||||||
|
|
||||||
|
// This function has to be defined along the Host_ functions from Core/Host.h.
|
||||||
|
// Current canonical implementation: DolphinWX/GLInterface/GLInterface.cpp.
|
||||||
|
cInterfaceBase* HostGL_CreateGLInterface();
|
|
@ -8,13 +8,13 @@
|
||||||
#include "Core/ConfigManager.h"
|
#include "Core/ConfigManager.h"
|
||||||
#include "Core/Core.h"
|
#include "Core/Core.h"
|
||||||
|
|
||||||
|
#include "VideoBackends/OGL/GLInterfaceBase.h"
|
||||||
#include "VideoBackends/OGL/GLUtil.h"
|
#include "VideoBackends/OGL/GLUtil.h"
|
||||||
#include "VideoBackends/OGL/Render.h"
|
#include "VideoBackends/OGL/Render.h"
|
||||||
#include "VideoBackends/OGL/VideoBackend.h"
|
#include "VideoBackends/OGL/VideoBackend.h"
|
||||||
|
|
||||||
#include "VideoCommon/VideoConfig.h"
|
#include "VideoCommon/VideoConfig.h"
|
||||||
|
|
||||||
GLWindow GLWin;
|
|
||||||
cInterfaceBase *GLInterface;
|
cInterfaceBase *GLInterface;
|
||||||
|
|
||||||
namespace OGL
|
namespace OGL
|
||||||
|
@ -35,15 +35,7 @@ void VideoBackend::UpdateFPSDisplay(const std::string& text)
|
||||||
}
|
}
|
||||||
void InitInterface()
|
void InitInterface()
|
||||||
{
|
{
|
||||||
#if defined(USE_EGL) && USE_EGL
|
GLInterface = HostGL_CreateGLInterface();
|
||||||
GLInterface = new cInterfaceEGL;
|
|
||||||
#elif defined(__APPLE__)
|
|
||||||
GLInterface = new cInterfaceAGL;
|
|
||||||
#elif defined(_WIN32)
|
|
||||||
GLInterface = new cInterfaceWGL;
|
|
||||||
#elif defined(HAVE_X11) && HAVE_X11
|
|
||||||
GLInterface = new cInterfaceGLX;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
GLuint OpenGL_CompileProgram(const char* vertexShader, const char* fragmentShader)
|
GLuint OpenGL_CompileProgram(const char* vertexShader, const char* fragmentShader)
|
||||||
|
|
|
@ -5,7 +5,6 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "Common/MathUtil.h"
|
#include "Common/MathUtil.h"
|
||||||
#include "DolphinWX/GLInterface/GLInterface.h"
|
|
||||||
#include "VideoBackends/OGL/GLExtensions/GLExtensions.h"
|
#include "VideoBackends/OGL/GLExtensions/GLExtensions.h"
|
||||||
#include "VideoCommon/VideoConfig.h"
|
#include "VideoCommon/VideoConfig.h"
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
// Licensed under GPLv2
|
// Licensed under GPLv2
|
||||||
// Refer to the license.txt file included.
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
#include "DolphinWX/GLInterface/GLInterface.h"
|
#include "VideoBackends/OGL/GLInterfaceBase.h"
|
||||||
#include "VideoBackends/OGL/GLUtil.h"
|
#include "VideoBackends/OGL/GLUtil.h"
|
||||||
#include "VideoBackends/OGL/PerfQuery.h"
|
#include "VideoBackends/OGL/PerfQuery.h"
|
||||||
#include "VideoCommon/RenderBase.h"
|
#include "VideoCommon/RenderBase.h"
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
#include "Core/Movie.h"
|
#include "Core/Movie.h"
|
||||||
|
|
||||||
#include "VideoBackends/OGL/FramebufferManager.h"
|
#include "VideoBackends/OGL/FramebufferManager.h"
|
||||||
|
#include "VideoBackends/OGL/GLInterfaceBase.h"
|
||||||
#include "VideoBackends/OGL/GLUtil.h"
|
#include "VideoBackends/OGL/GLUtil.h"
|
||||||
#include "VideoBackends/OGL/main.h"
|
#include "VideoBackends/OGL/main.h"
|
||||||
#include "VideoBackends/OGL/PostProcessing.h"
|
#include "VideoBackends/OGL/PostProcessing.h"
|
||||||
|
@ -1459,7 +1460,7 @@ void Renderer::SwapImpl(u32 xfbAddr, u32 fbWidth, u32 fbHeight,const EFBRectangl
|
||||||
if (!bLastFrameDumped)
|
if (!bLastFrameDumped)
|
||||||
{
|
{
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
bAVIDumping = AVIDump::Start((HWND)((cInterfaceWGL*)GLInterface)->m_window_handle, w, h);
|
bAVIDumping = AVIDump::Start(nullptr, w, h);
|
||||||
#else
|
#else
|
||||||
bAVIDumping = AVIDump::Start(w, h);
|
bAVIDumping = AVIDump::Start(w, h);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
// Licensed under GPLv2
|
// Licensed under GPLv2
|
||||||
// Refer to the license.txt file included.
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#include "VideoBackends/OGL/GLInterfaceBase.h"
|
||||||
#include "VideoBackends/OGL/SamplerCache.h"
|
#include "VideoBackends/OGL/SamplerCache.h"
|
||||||
#include "VideoCommon/DriverDetails.h"
|
#include "VideoCommon/DriverDetails.h"
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
#include "Core/HW/Memmap.h"
|
#include "Core/HW/Memmap.h"
|
||||||
|
|
||||||
#include "VideoBackends/OGL/FramebufferManager.h"
|
#include "VideoBackends/OGL/FramebufferManager.h"
|
||||||
|
#include "VideoBackends/OGL/GLInterfaceBase.h"
|
||||||
#include "VideoBackends/OGL/ProgramShaderCache.h"
|
#include "VideoBackends/OGL/ProgramShaderCache.h"
|
||||||
#include "VideoBackends/OGL/Render.h"
|
#include "VideoBackends/OGL/Render.h"
|
||||||
#include "VideoBackends/OGL/TextureCache.h"
|
#include "VideoBackends/OGL/TextureCache.h"
|
||||||
|
|
|
@ -49,6 +49,7 @@ Make AA apply instantly during gameplay if possible
|
||||||
#include "Core/Host.h"
|
#include "Core/Host.h"
|
||||||
|
|
||||||
#include "VideoBackends/OGL/FramebufferManager.h"
|
#include "VideoBackends/OGL/FramebufferManager.h"
|
||||||
|
#include "VideoBackends/OGL/GLInterfaceBase.h"
|
||||||
#include "VideoBackends/OGL/GLUtil.h"
|
#include "VideoBackends/OGL/GLUtil.h"
|
||||||
#include "VideoBackends/OGL/PerfQuery.h"
|
#include "VideoBackends/OGL/PerfQuery.h"
|
||||||
#include "VideoBackends/OGL/PostProcessing.h"
|
#include "VideoBackends/OGL/PostProcessing.h"
|
||||||
|
@ -82,11 +83,6 @@ Make AA apply instantly during gameplay if possible
|
||||||
#include "Common/IniFile.h"
|
#include "Common/IniFile.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(HAVE_WX) && HAVE_WX
|
|
||||||
#include "DolphinWX/VideoConfigDiag.h"
|
|
||||||
#include "DolphinWX/Debugger/DebuggerPanel.h"
|
|
||||||
#endif // HAVE_WX
|
|
||||||
|
|
||||||
namespace OGL
|
namespace OGL
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -160,11 +156,8 @@ static void InitBackendInfo()
|
||||||
|
|
||||||
void VideoBackend::ShowConfig(void *_hParent)
|
void VideoBackend::ShowConfig(void *_hParent)
|
||||||
{
|
{
|
||||||
#if defined(HAVE_WX) && HAVE_WX
|
|
||||||
InitBackendInfo();
|
InitBackendInfo();
|
||||||
VideoConfigDiag diag((wxWindow*)_hParent, "OpenGL", "gfx_opengl");
|
Host_ShowVideoConfig(_hParent, GetDisplayName(), "gfx_opengl");
|
||||||
diag.ShowModal();
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool VideoBackend::Initialize(void *&window_handle)
|
bool VideoBackend::Initialize(void *&window_handle)
|
||||||
|
|
|
@ -4,4 +4,6 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
#include "VideoCommon/MainBase.h"
|
#include "VideoCommon/MainBase.h"
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
|
|
||||||
#include "Core/Core.h"
|
#include "Core/Core.h"
|
||||||
#include "Core/HW/Memmap.h"
|
#include "Core/HW/Memmap.h"
|
||||||
|
#include "VideoBackends/OGL/GLInterfaceBase.h"
|
||||||
#include "VideoBackends/Software/BPMemLoader.h"
|
#include "VideoBackends/Software/BPMemLoader.h"
|
||||||
#include "VideoBackends/Software/DebugUtil.h"
|
#include "VideoBackends/Software/DebugUtil.h"
|
||||||
#include "VideoBackends/Software/EfbCopy.h"
|
#include "VideoBackends/Software/EfbCopy.h"
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
#include "Common/Common.h"
|
#include "Common/Common.h"
|
||||||
#include "Common/MemoryUtil.h"
|
#include "Common/MemoryUtil.h"
|
||||||
|
|
||||||
|
#include "VideoBackends/OGL/GLInterfaceBase.h"
|
||||||
#include "VideoBackends/Software/BPMemLoader.h"
|
#include "VideoBackends/Software/BPMemLoader.h"
|
||||||
#include "VideoBackends/Software/DebugUtil.h"
|
#include "VideoBackends/Software/DebugUtil.h"
|
||||||
#include "VideoBackends/Software/HwRasterizer.h"
|
#include "VideoBackends/Software/HwRasterizer.h"
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
#include "Common/Common.h"
|
#include "Common/Common.h"
|
||||||
#include "Common/StringUtil.h"
|
#include "Common/StringUtil.h"
|
||||||
#include "Core/Core.h"
|
#include "Core/Core.h"
|
||||||
|
#include "VideoBackends/OGL/GLInterfaceBase.h"
|
||||||
#include "VideoBackends/OGL/GLUtil.h"
|
#include "VideoBackends/OGL/GLUtil.h"
|
||||||
#include "VideoBackends/Software/RasterFont.h"
|
#include "VideoBackends/Software/RasterFont.h"
|
||||||
#include "VideoBackends/Software/SWCommandProcessor.h"
|
#include "VideoBackends/Software/SWCommandProcessor.h"
|
||||||
|
|
|
@ -12,9 +12,11 @@
|
||||||
|
|
||||||
#include "Core/ConfigManager.h"
|
#include "Core/ConfigManager.h"
|
||||||
#include "Core/Core.h"
|
#include "Core/Core.h"
|
||||||
|
#include "Core/Host.h"
|
||||||
#include "Core/HW/Memmap.h"
|
#include "Core/HW/Memmap.h"
|
||||||
#include "Core/HW/VideoInterface.h"
|
#include "Core/HW/VideoInterface.h"
|
||||||
|
|
||||||
|
#include "VideoBackends/OGL/GLInterfaceBase.h"
|
||||||
#include "VideoBackends/OGL/GLExtensions/GLExtensions.h"
|
#include "VideoBackends/OGL/GLExtensions/GLExtensions.h"
|
||||||
#include "VideoBackends/Software/BPMemLoader.h"
|
#include "VideoBackends/Software/BPMemLoader.h"
|
||||||
#include "VideoBackends/Software/Clipper.h"
|
#include "VideoBackends/Software/Clipper.h"
|
||||||
|
@ -31,10 +33,6 @@
|
||||||
#include "VideoBackends/Software/VideoBackend.h"
|
#include "VideoBackends/Software/VideoBackend.h"
|
||||||
#include "VideoBackends/Software/XFMemLoader.h"
|
#include "VideoBackends/Software/XFMemLoader.h"
|
||||||
|
|
||||||
#if defined(HAVE_WX) && HAVE_WX
|
|
||||||
#include "VideoBackends/Software/VideoConfigDialog.h"
|
|
||||||
#endif // HAVE_WX
|
|
||||||
|
|
||||||
#include "VideoCommon/Fifo.h"
|
#include "VideoCommon/Fifo.h"
|
||||||
#include "VideoCommon/OnScreenDisplay.h"
|
#include "VideoCommon/OnScreenDisplay.h"
|
||||||
#include "VideoCommon/PixelEngine.h"
|
#include "VideoCommon/PixelEngine.h"
|
||||||
|
@ -60,15 +58,17 @@ static std::mutex m_csSWVidOccupied;
|
||||||
|
|
||||||
std::string VideoSoftware::GetName() const
|
std::string VideoSoftware::GetName() const
|
||||||
{
|
{
|
||||||
return _trans("Software Renderer");
|
return "Software Renderer";
|
||||||
}
|
}
|
||||||
|
|
||||||
void VideoSoftware::ShowConfig(void *_hParent)
|
std::string VideoSoftware::GetDisplayName() const
|
||||||
{
|
{
|
||||||
#if defined(HAVE_WX) && HAVE_WX
|
return "Software Renderer";
|
||||||
VideoConfigDialog diag((wxWindow*)_hParent, "Software", "gfx_software");
|
}
|
||||||
diag.ShowModal();
|
|
||||||
#endif
|
void VideoSoftware::ShowConfig(void *hParent)
|
||||||
|
{
|
||||||
|
Host_ShowVideoConfig(hParent, GetDisplayName(), "gfx_software");
|
||||||
}
|
}
|
||||||
|
|
||||||
bool VideoSoftware::Initialize(void *&window_handle)
|
bool VideoSoftware::Initialize(void *&window_handle)
|
||||||
|
|
|
@ -59,7 +59,6 @@
|
||||||
<ClCompile Include="TextureEncoder.cpp" />
|
<ClCompile Include="TextureEncoder.cpp" />
|
||||||
<ClCompile Include="TextureSampler.cpp" />
|
<ClCompile Include="TextureSampler.cpp" />
|
||||||
<ClCompile Include="TransformUnit.cpp" />
|
<ClCompile Include="TransformUnit.cpp" />
|
||||||
<ClCompile Include="VideoConfigDialog.cpp" />
|
|
||||||
<ClCompile Include="XFMemLoader.cpp" />
|
<ClCompile Include="XFMemLoader.cpp" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
@ -87,7 +86,6 @@
|
||||||
<ClInclude Include="TransformUnit.h" />
|
<ClInclude Include="TransformUnit.h" />
|
||||||
<ClInclude Include="Vec3.h" />
|
<ClInclude Include="Vec3.h" />
|
||||||
<ClInclude Include="VideoBackend.h" />
|
<ClInclude Include="VideoBackend.h" />
|
||||||
<ClInclude Include="VideoConfigDialog.h" />
|
|
||||||
<ClInclude Include="XFMemLoader.h" />
|
<ClInclude Include="XFMemLoader.h" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
|
@ -14,6 +14,7 @@ class VideoSoftware : public VideoBackend
|
||||||
void Shutdown() override;
|
void Shutdown() override;
|
||||||
|
|
||||||
std::string GetName() const override;
|
std::string GetName() const override;
|
||||||
|
std::string GetDisplayName() const override;
|
||||||
|
|
||||||
void EmuStateChange(EMUSTATE_CHANGE newState) override;
|
void EmuStateChange(EMUSTATE_CHANGE newState) override;
|
||||||
|
|
||||||
|
|
|
@ -12,16 +12,13 @@
|
||||||
|
|
||||||
#include "VideoCommon/BPMemory.h"
|
#include "VideoCommon/BPMemory.h"
|
||||||
#include "VideoCommon/DataReader.h"
|
#include "VideoCommon/DataReader.h"
|
||||||
#include "VideoCommon/IndexGenerator.h"
|
|
||||||
#include "VideoCommon/LookUpTables.h"
|
#include "VideoCommon/LookUpTables.h"
|
||||||
#include "VideoCommon/PixelEngine.h"
|
#include "VideoCommon/PixelEngine.h"
|
||||||
#include "VideoCommon/Statistics.h"
|
|
||||||
#include "VideoCommon/VertexLoader.h"
|
#include "VideoCommon/VertexLoader.h"
|
||||||
#include "VideoCommon/VertexLoader_Color.h"
|
#include "VideoCommon/VertexLoader_Color.h"
|
||||||
#include "VideoCommon/VertexLoader_Normal.h"
|
#include "VideoCommon/VertexLoader_Normal.h"
|
||||||
#include "VideoCommon/VertexLoader_Position.h"
|
#include "VideoCommon/VertexLoader_Position.h"
|
||||||
#include "VideoCommon/VertexLoader_TextCoord.h"
|
#include "VideoCommon/VertexLoader_TextCoord.h"
|
||||||
#include "VideoCommon/VertexLoaderManager.h"
|
|
||||||
#include "VideoCommon/VideoCommon.h"
|
#include "VideoCommon/VideoCommon.h"
|
||||||
#include "VideoCommon/VideoConfig.h"
|
#include "VideoCommon/VideoConfig.h"
|
||||||
|
|
||||||
|
@ -866,13 +863,7 @@ void VertexLoader::RunVertices(const VAT& vat, int primitive, int const count)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
SetupRunVertices(vat, primitive, count);
|
SetupRunVertices(vat, primitive, count);
|
||||||
VertexManager::PrepareForAdditionalData(primitive, count,
|
|
||||||
m_native_vtx_decl.stride);
|
|
||||||
ConvertVertices(count);
|
ConvertVertices(count);
|
||||||
IndexGenerator::AddIndices(primitive, count);
|
|
||||||
|
|
||||||
ADDSTAT(stats.thisFrame.numPrims, count);
|
|
||||||
INCSTAT(stats.thisFrame.numPrimitiveJoins);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void VertexLoader::SetVAT(const VAT& vat)
|
void VertexLoader::SetVAT(const VAT& vat)
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
|
|
||||||
#include "Core/HW/Memmap.h"
|
#include "Core/HW/Memmap.h"
|
||||||
|
|
||||||
|
#include "VideoCommon/IndexGenerator.h"
|
||||||
#include "VideoCommon/Statistics.h"
|
#include "VideoCommon/Statistics.h"
|
||||||
#include "VideoCommon/VertexLoader.h"
|
#include "VideoCommon/VertexLoader.h"
|
||||||
#include "VideoCommon/VertexLoaderManager.h"
|
#include "VideoCommon/VertexLoaderManager.h"
|
||||||
|
@ -152,7 +153,15 @@ void RunVertices(int vtx_attr_group, int primitive, int count)
|
||||||
VertexManager::Flush();
|
VertexManager::Flush();
|
||||||
s_current_vtx_fmt = required_vtx_fmt;
|
s_current_vtx_fmt = required_vtx_fmt;
|
||||||
|
|
||||||
RefreshLoader(vtx_attr_group)->RunVertices(g_VtxAttr[vtx_attr_group], primitive, count);
|
VertexManager::PrepareForAdditionalData(primitive, count,
|
||||||
|
loader->GetNativeVertexDeclaration().stride);
|
||||||
|
|
||||||
|
loader->RunVertices(g_VtxAttr[vtx_attr_group], primitive, count);
|
||||||
|
|
||||||
|
IndexGenerator::AddIndices(primitive, count);
|
||||||
|
|
||||||
|
ADDSTAT(stats.thisFrame.numPrims, count);
|
||||||
|
INCSTAT(stats.thisFrame.numPrimitiveJoins);
|
||||||
}
|
}
|
||||||
|
|
||||||
int GetVertexSize(int vtx_attr_group)
|
int GetVertexSize(int vtx_attr_group)
|
||||||
|
|
|
@ -1,12 +1,20 @@
|
||||||
macro(add_dolphin_test target srcs libs)
|
macro(add_dolphin_test target srcs)
|
||||||
add_executable(Tests/${target} EXCLUDE_FROM_ALL ${srcs})
|
# Since this is a Core dependency, it can't be linked as a library and has
|
||||||
|
# to be linked as an object file. Otherwise CMake inserts the library after
|
||||||
|
# core, but before other core dependencies like videocommon which also use
|
||||||
|
# Host_ functions.
|
||||||
|
set(srcs2 ${srcs} ${CMAKE_SOURCE_DIR}/Source/UnitTests/TestUtils/StubHost.cpp)
|
||||||
|
add_executable(Tests/${target} EXCLUDE_FROM_ALL ${srcs2})
|
||||||
add_custom_command(TARGET Tests/${target}
|
add_custom_command(TARGET Tests/${target}
|
||||||
PRE_LINK
|
PRE_LINK
|
||||||
COMMAND mkdir -p ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/Tests)
|
COMMAND mkdir -p ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/Tests)
|
||||||
target_link_libraries(Tests/${target} ${libs} gtest)
|
target_link_libraries(Tests/${target} core gtest)
|
||||||
add_dependencies(unittests Tests/${target})
|
add_dependencies(unittests Tests/${target})
|
||||||
add_test(NAME ${target} COMMAND ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/Tests/${target})
|
add_test(NAME ${target} COMMAND ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/Tests/${target})
|
||||||
endmacro(add_dolphin_test)
|
endmacro(add_dolphin_test)
|
||||||
|
|
||||||
|
add_subdirectory(TestUtils)
|
||||||
|
|
||||||
add_subdirectory(Common)
|
add_subdirectory(Common)
|
||||||
add_subdirectory(Core)
|
add_subdirectory(Core)
|
||||||
|
add_subdirectory(VideoCommon)
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
add_dolphin_test(BitFieldTest BitFieldTest.cpp common)
|
add_dolphin_test(BitFieldTest BitFieldTest.cpp)
|
||||||
add_dolphin_test(CommonFuncsTest CommonFuncsTest.cpp common)
|
add_dolphin_test(CommonFuncsTest CommonFuncsTest.cpp)
|
||||||
add_dolphin_test(EventTest EventTest.cpp common)
|
add_dolphin_test(EventTest EventTest.cpp)
|
||||||
add_dolphin_test(FifoQueueTest FifoQueueTest.cpp common)
|
add_dolphin_test(FifoQueueTest FifoQueueTest.cpp)
|
||||||
add_dolphin_test(FixedSizeQueueTest FixedSizeQueueTest.cpp common)
|
add_dolphin_test(FixedSizeQueueTest FixedSizeQueueTest.cpp)
|
||||||
add_dolphin_test(FlagTest FlagTest.cpp common)
|
add_dolphin_test(FlagTest FlagTest.cpp)
|
||||||
add_dolphin_test(MathUtilTest MathUtilTest.cpp common)
|
add_dolphin_test(MathUtilTest MathUtilTest.cpp)
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
add_dolphin_test(MMIOTest MMIOTest.cpp core)
|
add_dolphin_test(MMIOTest MMIOTest.cpp)
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
set(SRCS
|
||||||
|
# Do not add StubHost.cpp here - it is added manually via add_dolphin_test.
|
||||||
|
)
|
||||||
|
|
||||||
|
set(LIBS
|
||||||
|
)
|
||||||
|
|
||||||
|
# TODO: uncomment when there is actually something here.
|
||||||
|
#add_dolphin_library(testutils "${SRCS}" "${LIBS}")
|
|
@ -0,0 +1,34 @@
|
||||||
|
// Copyright 2014 Dolphin Emulator Project
|
||||||
|
// Licensed under GPLv2
|
||||||
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
// Stub implementation of the Host_* callbacks for tests. These implementations
|
||||||
|
// do nothing except return default values when required.
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
#include "Core/Host.h"
|
||||||
|
#include "VideoBackends/OGL/GLInterfaceBase.h"
|
||||||
|
|
||||||
|
void Host_NotifyMapLoaded() {}
|
||||||
|
void Host_RefreshDSPDebuggerWindow() {}
|
||||||
|
void Host_ShowJitResults(unsigned int) {}
|
||||||
|
void Host_Message(int) {}
|
||||||
|
void* Host_GetRenderHandle() { return nullptr; }
|
||||||
|
void* Host_GetInstance() { return nullptr; }
|
||||||
|
void Host_UpdateTitle(const std::string&) {}
|
||||||
|
void Host_UpdateLogDisplay() {}
|
||||||
|
void Host_UpdateDisasmDialog() {}
|
||||||
|
void Host_UpdateMainFrame() {}
|
||||||
|
void Host_UpdateBreakPointView() {}
|
||||||
|
void Host_GetRenderWindowSize(int&, int&, int&, int&) {}
|
||||||
|
void Host_RequestRenderWindowSize(int, int) {}
|
||||||
|
void Host_SetStartupDebuggingParameters() {}
|
||||||
|
bool Host_UIHasFocus() { return false; }
|
||||||
|
bool Host_RendererHasFocus() { return false; }
|
||||||
|
void Host_ConnectWiimote(int, bool) {}
|
||||||
|
void Host_UpdateStatusBar(const std::string&, int) {}
|
||||||
|
void Host_SysMessage(const char*, ...) {}
|
||||||
|
void Host_SetWiiMoteConnectionState(int) {}
|
||||||
|
void Host_ShowVideoConfig(void*, const std::string&, const std::string&) {}
|
||||||
|
cInterfaceBase* HostGL_CreateGLInterface() { return nullptr; }
|
|
@ -0,0 +1 @@
|
||||||
|
add_dolphin_test(VertexLoaderTest VertexLoaderTest.cpp)
|
|
@ -0,0 +1,249 @@
|
||||||
|
#include <set>
|
||||||
|
|
||||||
|
#include "Common/Common.h"
|
||||||
|
#include "VideoCommon/DataReader.h"
|
||||||
|
#include "VideoCommon/VertexLoader.h"
|
||||||
|
|
||||||
|
// Needs to be included later because it defines a TEST macro that conflicts
|
||||||
|
// with a TEST method definition in x64Emitter.h.
|
||||||
|
#include <gtest/gtest.h> // NOLINT
|
||||||
|
|
||||||
|
TEST(VertexLoaderUID, UniqueEnough)
|
||||||
|
{
|
||||||
|
std::set<VertexLoaderUID> uids;
|
||||||
|
|
||||||
|
TVtxDesc vtx_desc;
|
||||||
|
memset(&vtx_desc, 0, sizeof (vtx_desc));
|
||||||
|
VAT vat;
|
||||||
|
memset(&vat, 0, sizeof (vat));
|
||||||
|
uids.insert(VertexLoaderUID(vtx_desc, vat));
|
||||||
|
|
||||||
|
vtx_desc.Hex = 0xFEDCBA9876543210ull;
|
||||||
|
EXPECT_EQ(uids.end(), uids.find(VertexLoaderUID(vtx_desc, vat)));
|
||||||
|
uids.insert(VertexLoaderUID(vtx_desc, vat));
|
||||||
|
|
||||||
|
vat.g0.Hex = 0xFFFFFFFF;
|
||||||
|
vat.g1.Hex = 0xFFFFFFFF;
|
||||||
|
vat.g2.Hex = 0xFFFFFFFF;
|
||||||
|
EXPECT_EQ(uids.end(), uids.find(VertexLoaderUID(vtx_desc, vat)));
|
||||||
|
uids.insert(VertexLoaderUID(vtx_desc, vat));
|
||||||
|
}
|
||||||
|
|
||||||
|
static u8 input_memory[16 * 1024 * 1024];
|
||||||
|
static u8 output_memory[16 * 1024 * 1024];
|
||||||
|
|
||||||
|
class VertexLoaderTest : public testing::Test
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
|
||||||
|
void SetUp() override
|
||||||
|
{
|
||||||
|
memset(&input_memory[0], 0, sizeof (input_memory));
|
||||||
|
memset(&output_memory[0], 0, sizeof (input_memory));
|
||||||
|
|
||||||
|
memset(&m_vtx_desc, 0, sizeof (m_vtx_desc));
|
||||||
|
memset(&m_vtx_attr, 0, sizeof (m_vtx_attr));
|
||||||
|
|
||||||
|
ResetPointers();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Pushes a value to the input stream.
|
||||||
|
template <typename T>
|
||||||
|
void Input(T val)
|
||||||
|
{
|
||||||
|
// Converts *to* big endian, not from.
|
||||||
|
*(T*)(&input_memory[m_input_pos]) = Common::FromBigEndian(val);
|
||||||
|
m_input_pos += sizeof (val);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reads a value from the output stream.
|
||||||
|
template <typename T>
|
||||||
|
T Output()
|
||||||
|
{
|
||||||
|
T out = *(T*)&output_memory[m_output_pos];
|
||||||
|
m_output_pos += sizeof (out);
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Combination of EXPECT_EQ and Output.
|
||||||
|
template <typename T>
|
||||||
|
void ExpectOut(T val)
|
||||||
|
{
|
||||||
|
EXPECT_EQ(val, Output<T>());
|
||||||
|
}
|
||||||
|
|
||||||
|
void ResetPointers()
|
||||||
|
{
|
||||||
|
g_pVideoData = &input_memory[0];
|
||||||
|
VertexManager::s_pCurBufferPointer = &output_memory[0];
|
||||||
|
m_input_pos = m_output_pos = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
u32 m_input_pos, m_output_pos;
|
||||||
|
|
||||||
|
TVtxDesc m_vtx_desc;
|
||||||
|
VAT m_vtx_attr;
|
||||||
|
};
|
||||||
|
|
||||||
|
TEST_F(VertexLoaderTest, PositionDirectFloatXYZ)
|
||||||
|
{
|
||||||
|
m_vtx_desc.Position = 1; // Direct
|
||||||
|
m_vtx_attr.g0.PosElements = 1; // XYZ
|
||||||
|
m_vtx_attr.g0.PosFormat = 4; // Float
|
||||||
|
|
||||||
|
VertexLoader loader(m_vtx_desc, m_vtx_attr);
|
||||||
|
|
||||||
|
ASSERT_EQ(3 * sizeof (float), (u32)loader.GetNativeVertexDeclaration().stride);
|
||||||
|
ASSERT_EQ(3 * sizeof (float), (u32)loader.GetVertexSize());
|
||||||
|
|
||||||
|
// Write some vertices.
|
||||||
|
Input(0.0f); Input(0.0f); Input(0.0f);
|
||||||
|
Input(1.0f); Input(0.0f); Input(0.0f);
|
||||||
|
Input(0.0f); Input(1.0f); Input(0.0f);
|
||||||
|
Input(0.0f); Input(0.0f); Input(1.0f);
|
||||||
|
|
||||||
|
// Convert 4 points. "7" -> primitive are points.
|
||||||
|
loader.RunVertices(m_vtx_attr, 7, 4);
|
||||||
|
|
||||||
|
ExpectOut(0.0f); ExpectOut(0.0f); ExpectOut(0.0f);
|
||||||
|
ExpectOut(1.0f); ExpectOut(0.0f); ExpectOut(0.0f);
|
||||||
|
ExpectOut(0.0f); ExpectOut(1.0f); ExpectOut(0.0f);
|
||||||
|
ExpectOut(0.0f); ExpectOut(0.0f); ExpectOut(1.0f);
|
||||||
|
|
||||||
|
// Test that scale does nothing for floating point inputs.
|
||||||
|
Input(1.0f); Input(2.0f); Input(4.0f);
|
||||||
|
m_vtx_attr.g0.PosFrac = 1;
|
||||||
|
loader.RunVertices(m_vtx_attr, 7, 1);
|
||||||
|
ExpectOut(1.0f); ExpectOut(2.0f); ExpectOut(4.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(VertexLoaderTest, PositionDirectU16XY)
|
||||||
|
{
|
||||||
|
m_vtx_desc.Position = 1; // Direct
|
||||||
|
m_vtx_attr.g0.PosElements = 0; // XY
|
||||||
|
m_vtx_attr.g0.PosFormat = 2; // U16
|
||||||
|
|
||||||
|
VertexLoader loader(m_vtx_desc, m_vtx_attr);
|
||||||
|
|
||||||
|
ASSERT_EQ(3 * sizeof (float), (u32)loader.GetNativeVertexDeclaration().stride);
|
||||||
|
ASSERT_EQ(2 * sizeof (u16), (u32)loader.GetVertexSize());
|
||||||
|
|
||||||
|
// Write some vertices.
|
||||||
|
Input<u16>(0); Input<u16>(0);
|
||||||
|
Input<u16>(1); Input<u16>(2);
|
||||||
|
Input<u16>(256); Input<u16>(257);
|
||||||
|
Input<u16>(65535); Input<u16>(65534);
|
||||||
|
Input<u16>(12345); Input<u16>(54321);
|
||||||
|
|
||||||
|
// Convert 5 points. "7" -> primitive are points.
|
||||||
|
loader.RunVertices(m_vtx_attr, 7, 5);
|
||||||
|
|
||||||
|
ExpectOut(0.0f); ExpectOut(0.0f); ExpectOut(0.0f);
|
||||||
|
ExpectOut(1.0f); ExpectOut(2.0f); ExpectOut(0.0f);
|
||||||
|
ExpectOut(256.0f); ExpectOut(257.0f); ExpectOut(0.0f);
|
||||||
|
ExpectOut(65535.0f); ExpectOut(65534.0f); ExpectOut(0.0f);
|
||||||
|
ExpectOut(12345.0f); ExpectOut(54321.0f); ExpectOut(0.0f);
|
||||||
|
|
||||||
|
// Test that scale works on U16 inputs.
|
||||||
|
Input<u16>(42); Input<u16>(24);
|
||||||
|
m_vtx_attr.g0.PosFrac = 1;
|
||||||
|
loader.RunVertices(m_vtx_attr, 7, 1);
|
||||||
|
ExpectOut(21.0f); ExpectOut(12.0f); ExpectOut(0.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(VertexLoaderTest, PositionDirectFloatXYZSpeed)
|
||||||
|
{
|
||||||
|
m_vtx_desc.Position = 1; // Direct
|
||||||
|
m_vtx_attr.g0.PosElements = 1; // XYZ
|
||||||
|
m_vtx_attr.g0.PosFormat = 4; // Float
|
||||||
|
|
||||||
|
VertexLoader loader(m_vtx_desc, m_vtx_attr);
|
||||||
|
|
||||||
|
ASSERT_EQ(3 * sizeof (float), (u32)loader.GetNativeVertexDeclaration().stride);
|
||||||
|
ASSERT_EQ(3 * sizeof (float), (u32)loader.GetVertexSize());
|
||||||
|
|
||||||
|
for (int i = 0; i < 1000; ++i)
|
||||||
|
{
|
||||||
|
ResetPointers();
|
||||||
|
loader.RunVertices(m_vtx_attr, 7, 100000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(VertexLoaderTest, PositionDirectU16XYSpeed)
|
||||||
|
{
|
||||||
|
m_vtx_desc.Position = 1; // Direct
|
||||||
|
m_vtx_attr.g0.PosElements = 0; // XY
|
||||||
|
m_vtx_attr.g0.PosFormat = 2; // U16
|
||||||
|
|
||||||
|
VertexLoader loader(m_vtx_desc, m_vtx_attr);
|
||||||
|
|
||||||
|
ASSERT_EQ(3 * sizeof (float), (u32)loader.GetNativeVertexDeclaration().stride);
|
||||||
|
ASSERT_EQ(2 * sizeof (u16), (u32)loader.GetVertexSize());
|
||||||
|
|
||||||
|
for (int i = 0; i < 1000; ++i)
|
||||||
|
{
|
||||||
|
ResetPointers();
|
||||||
|
loader.RunVertices(m_vtx_attr, 7, 100000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(VertexLoaderTest, LargeFloatVertexSpeed)
|
||||||
|
{
|
||||||
|
// Enables most attributes in floating point direct mode to test speed.
|
||||||
|
m_vtx_desc.PosMatIdx = 1;
|
||||||
|
m_vtx_desc.Tex0MatIdx = 1;
|
||||||
|
m_vtx_desc.Tex1MatIdx = 1;
|
||||||
|
m_vtx_desc.Tex2MatIdx = 1;
|
||||||
|
m_vtx_desc.Tex3MatIdx = 1;
|
||||||
|
m_vtx_desc.Tex4MatIdx = 1;
|
||||||
|
m_vtx_desc.Tex5MatIdx = 1;
|
||||||
|
m_vtx_desc.Tex6MatIdx = 1;
|
||||||
|
m_vtx_desc.Tex7MatIdx = 1;
|
||||||
|
m_vtx_desc.Position = 1;
|
||||||
|
m_vtx_desc.Normal = 1;
|
||||||
|
m_vtx_desc.Color0 = 1;
|
||||||
|
m_vtx_desc.Color1 = 1;
|
||||||
|
m_vtx_desc.Tex0Coord = 1;
|
||||||
|
m_vtx_desc.Tex1Coord = 1;
|
||||||
|
m_vtx_desc.Tex2Coord = 1;
|
||||||
|
m_vtx_desc.Tex3Coord = 1;
|
||||||
|
m_vtx_desc.Tex4Coord = 1;
|
||||||
|
m_vtx_desc.Tex5Coord = 1;
|
||||||
|
m_vtx_desc.Tex6Coord = 1;
|
||||||
|
m_vtx_desc.Tex7Coord = 1;
|
||||||
|
|
||||||
|
m_vtx_attr.g0.PosElements = 1; // XYZ
|
||||||
|
m_vtx_attr.g0.PosFormat = 4; // Float
|
||||||
|
m_vtx_attr.g0.NormalElements = 1; // NBT
|
||||||
|
m_vtx_attr.g0.NormalFormat = 4; // Float
|
||||||
|
m_vtx_attr.g0.Color0Elements = 1; // Has Alpha
|
||||||
|
m_vtx_attr.g0.Color0Comp = 5; // RGBA8888
|
||||||
|
m_vtx_attr.g0.Color1Elements = 1; // Has Alpha
|
||||||
|
m_vtx_attr.g0.Color1Comp = 5; // RGBA8888
|
||||||
|
m_vtx_attr.g0.Tex0CoordElements = 1; // ST
|
||||||
|
m_vtx_attr.g0.Tex0CoordFormat = 4; // Float
|
||||||
|
m_vtx_attr.g1.Tex1CoordElements = 1; // ST
|
||||||
|
m_vtx_attr.g1.Tex1CoordFormat = 4; // Float
|
||||||
|
m_vtx_attr.g1.Tex2CoordElements = 1; // ST
|
||||||
|
m_vtx_attr.g1.Tex2CoordFormat = 4; // Float
|
||||||
|
m_vtx_attr.g1.Tex3CoordElements = 1; // ST
|
||||||
|
m_vtx_attr.g1.Tex3CoordFormat = 4; // Float
|
||||||
|
m_vtx_attr.g1.Tex4CoordElements = 1; // ST
|
||||||
|
m_vtx_attr.g1.Tex4CoordFormat = 4; // Float
|
||||||
|
m_vtx_attr.g2.Tex5CoordElements = 1; // ST
|
||||||
|
m_vtx_attr.g2.Tex5CoordFormat = 4; // Float
|
||||||
|
m_vtx_attr.g2.Tex6CoordElements = 1; // ST
|
||||||
|
m_vtx_attr.g2.Tex6CoordFormat = 4; // Float
|
||||||
|
m_vtx_attr.g2.Tex7CoordElements = 1; // ST
|
||||||
|
m_vtx_attr.g2.Tex7CoordFormat = 4; // Float
|
||||||
|
|
||||||
|
VertexLoader loader(m_vtx_desc, m_vtx_attr);
|
||||||
|
|
||||||
|
// This test is only done 100x in a row since it's ~20x slower using the
|
||||||
|
// current vertex loader implementation.
|
||||||
|
for (int i = 0; i < 100; ++i)
|
||||||
|
{
|
||||||
|
ResetPointers();
|
||||||
|
loader.RunVertices(m_vtx_attr, 7, 100000);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue