(D3D) Start merging in XDK code

This commit is contained in:
twinaphex 2014-09-11 20:59:52 +02:00
parent 7f6084fca4
commit 4706be0905
8 changed files with 55 additions and 116 deletions

View File

@ -15,12 +15,8 @@
* If not, see <http://www.gnu.org/licenses/>.
*/
#ifdef _XBOX
#include "../d3d9/xdk_d3d.h"
#else
#include "../d3d9/d3d.hpp"
#include "win32_common.h"
#endif
#include "../gfx_common.h"

View File

@ -20,10 +20,14 @@
extern "C" {
#endif
#ifdef _XBOX
#include <xtl.h>
#else
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
LRESULT win32_handle_keyboard_event(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam);
#endif
#ifdef __cplusplus
}

View File

@ -21,13 +21,18 @@
#endif
#include "d3d.hpp"
#ifndef _XBOX
#include "render_chain.hpp"
#endif
#include "../../file.h"
#include "../gfx_common.h"
#include "../context/win32_common.h"
#ifndef _XBOX
#define HAVE_MONITOR
#define HAVE_WINDOW
#endif
#include "../../compat/posix_string.h"
#include "../../performance.h"
@ -94,6 +99,7 @@ static RECT d3d_monitor_rect(d3d_video_t *d3d)
}
#endif
#ifndef _XBOX
static void d3d_recompute_pass_sizes(d3d_video_t *d3d)
{
LinkInfo link_info = {0};
@ -135,6 +141,7 @@ static void d3d_recompute_pass_sizes(d3d_video_t *d3d)
link_info.pass = &d3d->shader.pass[i];
}
}
#endif
#ifndef DONT_HAVE_STATE_TRACKER
static bool d3d_init_imports(d3d_video_t *d3d)
@ -176,15 +183,21 @@ static bool d3d_init_chain(d3d_video_t *d3d, const video_info_t *video_info)
{
LPDIRECT3DDEVICE d3dr = (LPDIRECT3DDEVICE)d3d->dev;
/* Setup information for first pass. */
#ifdef _XBOX
/* TODO - properly implement this. */
d3d_video_t *link_info = (d3d_video_t*)d3d;
link_info->tex_w = link_info->tex_h =
RARCH_SCALE_BASE * video_info->input_scale;
#else
LinkInfo link_info = {0};
link_info.pass = &d3d->shader.pass[0];
link_info.tex_w = link_info.tex_h =
video_info->input_scale * RARCH_SCALE_BASE;
#endif
d3d_deinit_chain(d3d);
#ifdef _XBOX
if (!renderchain_init(d3d, info))
if (!renderchain_init(d3d, video_info))
{
RARCH_ERR("[D3D]: Failed to init render chain.\n");
return false;
@ -455,6 +468,7 @@ static void d3d_set_font_rect(d3d_video_t *d3d,
static bool d3d_init_singlepass(d3d_video_t *d3d)
{
#ifndef _XBOX
memset(&d3d->shader, 0, sizeof(d3d->shader));
d3d->shader.passes = 1;
gfx_shader_pass &pass = d3d->shader.pass[0];
@ -463,6 +477,7 @@ static bool d3d_init_singlepass(d3d_video_t *d3d)
pass.fbo.type_x = pass.fbo.type_y = RARCH_SCALE_VIEWPORT;
strlcpy(pass.source.path, d3d->cg_shader.c_str(),
sizeof(pass.source.path));
#endif
return true;
}
@ -478,6 +493,7 @@ static bool d3d_process_shader(d3d_video_t *d3d)
return d3d_init_singlepass(d3d);
}
#ifndef _XBOX
static bool d3d_init_luts(d3d_video_t *d3d)
{
for (unsigned i = 0; i < d3d->shader.luts; i++)
@ -494,6 +510,7 @@ static bool d3d_init_luts(d3d_video_t *d3d)
return true;
}
#endif
#ifdef HAVE_OVERLAY
#include "d3d_overlays.cpp"

View File

@ -35,6 +35,10 @@
#endif
#endif
#ifdef _XBOX1
#include <xfont.h>
#endif
#include "../../general.h"
#include "../../driver.h"
#include "../shader_parse.h"
@ -53,7 +57,13 @@
class RenderChain;
#ifndef _XBOX
#if defined(_XBOX)
#if defined(_XBOX1)
#define D3DDevice_Presents(d3d, device) D3DDevice_Swap(0)
#elif defined(_XBOX360)
#define D3DDevice_Presents(d3d, device) D3DDevice_Present(device)
#endif
#else
#define D3DDevice_SetSamplerState_AddressU(dev, sampler, type) dev->SetSamplerState(sampler, D3DSAMP_ADDRESSU, type)
#define D3DDevice_SetSamplerState_AddressV(dev, sampler, type) dev->SetSamplerState(sampler, D3DSAMP_ADDRESSV, type)
#define D3DDevice_SetSamplerState_MinFilter(dev, sampler, type) dev->SetSamplerState(sampler, D3DSAMP_MINFILTER, type)
@ -93,7 +103,7 @@ class RenderChain;
}
#endif
#ifdef HAVE_OVERLAY
typedef struct
{
struct Coords
@ -109,6 +119,7 @@ typedef struct
LPDIRECT3DTEXTURE tex;
LPDIRECT3DVERTEXBUFFER vert_buf;
} overlay_t;
#endif
#ifdef _XBOX
typedef struct Vertex
@ -160,7 +171,9 @@ typedef struct d3d_video
std::string cg_shader;
#ifndef _XBOX
struct gfx_shader shader;
#endif
video_info_t video_info;
@ -180,7 +193,7 @@ typedef struct d3d_video
bool menu_texture_enable;
bool menu_texture_full_screen;
#ifdef HAVE_MENU
#if defined(HAVE_MENU) && defined(HAVE_OVERLAY)
overlay_t *menu;
#endif
void *chain;
@ -200,6 +213,9 @@ typedef struct d3d_video
unsigned tex_w;
unsigned tex_h;
#endif
#ifdef _XBOX
bool vsync;
#endif
} d3d_video_t;
#ifndef _XBOX

View File

@ -425,7 +425,7 @@ static bool d3d_construct(d3d_video_t *d3d,
gfx_set_dwm();
#endif
#ifdef HAVE_MENU
#if defined(HAVE_MENU) && defined(HAVE_OVERLAY)
if (d3d->menu)
free(d3d->menu);
@ -440,7 +440,7 @@ static bool d3d_construct(d3d_video_t *d3d,
d3d->menu->vert_coords.h = -1;
#endif
#ifdef HAVE_WINDOW
#if defined(HAVE_WINDOW) && !defined(_XBOX)
memset(&d3d->windowClass, 0, sizeof(d3d->windowClass));
d3d->windowClass.cbSize = sizeof(d3d->windowClass);
d3d->windowClass.style = CS_HREDRAW | CS_VREDRAW;
@ -478,7 +478,7 @@ static bool d3d_construct(d3d_video_t *d3d,
d3d->screen_width = info->fullscreen ? full_x : info->width;
d3d->screen_height = info->fullscreen ? full_y : info->height;
#ifdef HAVE_WINDOW
#if defined(HAVE_WINDOW) && !defined(_XBOX)
unsigned win_width = d3d->screen_width;
unsigned win_height = d3d->screen_height;
@ -517,7 +517,7 @@ static bool d3d_construct(d3d_video_t *d3d,
#endif
);
#ifdef HAVE_WINDOW
#if defined(HAVE_WINDOW) && !defined(_XBOX)
ShowWindow(d3d->hWnd, SW_RESTORE);
UpdateWindow(d3d->hWnd);
SetForegroundWindow(d3d->hWnd);
@ -647,8 +647,9 @@ static void *d3d_init(const video_info_t *info,
#ifdef _XBOX
vid->should_resize = false;
vid->vsync = info->vsync;
#endif
#else
vid->menu = NULL;
#endif
if (!d3d_construct(vid, info, input, input_data))
{

View File

@ -18,100 +18,5 @@
#define _XDK_D3D_VIDEO_H
#include <stdint.h>
#ifdef _XBOX1
#include <xfont.h>
#endif
#include "d3d_defines.h"
#include "../../gfx/shader_common.h"
#include "../../gfx/shader_parse.h"
#include "../../gfx/image/image.h"
#include "../../gfx/fonts/d3d_font.h"
#include "../../gfx/gfx_context.h"
#include "../../gfx/d3d9/xdk_defines.h"
typedef struct
{
struct Coords
{
float x, y, w, h;
};
Coords tex_coords;
Coords vert_coords;
unsigned tex_w, tex_h;
bool fullscreen;
bool enabled;
float alpha_mod;
LPDIRECT3DTEXTURE tex;
LPDIRECT3DVERTEXBUFFER vert_buf;
} overlay_t;
typedef struct Vertex
{
float x, y;
#if defined(_XBOX1)
float z;
float rhw;
#endif
float u, v;
} Vertex;
typedef struct gl_shader_backend gl_shader_backend_t;
typedef struct d3d_video
{
const d3d_font_renderer_t *font_ctx;
const gfx_ctx_driver_t *ctx_driver;
const gl_shader_backend_t *shader;
bool should_resize;
bool quitting;
bool vsync;
bool needs_restore;
bool overlays_enabled;
unsigned screen_width;
unsigned screen_height;
unsigned dev_rotation;
HWND hWnd;
LPDIRECT3D g_pD3D;
LPDIRECT3DDEVICE dev;
#ifndef _XBOX
LPD3DXFONT font;
#endif
#ifdef HAVE_D3D9
LPDIRECT3DSURFACE lpSurface;
LPDIRECT3DTEXTURE lpTexture_ot_as16srgb;
LPDIRECT3DTEXTURE lpTexture_ot;
#endif
#ifdef HAVE_MENU
bool menu_texture_enable;
bool menu_texture_full_screen;
#endif
D3DVIEWPORT final_viewport;
video_info_t video_info;
HRESULT d3d_err;
unsigned cur_mon_id;
// RENDERCHAIN PASS
unsigned pixel_size;
LPDIRECT3DTEXTURE tex;
LPDIRECT3DVERTEXBUFFER vertex_buf;
unsigned last_width;
unsigned last_height;
#ifdef HAVE_D3D9
LPDIRECT3DVERTEXDECLARATION vertex_decl;
#endif
// RENDERCHAIN PASS -> INFO
unsigned tex_w;
unsigned tex_h;
#ifdef HAVE_MENU
overlay_t *menu;
#endif
} d3d_video_t;
#include "d3d_shared.h"
extern void d3d_make_d3dpp(void *data, const video_info_t *info, D3DPRESENT_PARAMETERS *d3dpp);
extern bool texture_image_render(struct texture_image *out_img);
#endif

View File

@ -219,7 +219,7 @@ VIDEO DRIVER
#endif
#ifdef _XBOX
#include "../gfx/d3d9/xdk_d3d.cpp"
#include "../gfx/d3d9/d3d.cpp"
#endif
#if defined(GEKKO)

View File

@ -113,7 +113,7 @@
<MinimalRebuild>true</MinimalRebuild>
<BufferSecurityCheck>false</BufferSecurityCheck>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PreprocessorDefinitions>_DEBUG;_XBOX;HAVE_XINPUT2;%(PreprocessorDefinitions);_CRT_SECURE_NO_WARNINGS;RARCH_CONSOLE;HAVE_RMENU_XUI;HAVE_MENU;HAVE_NETPLAY;HAVE_SOCKET_LEGACY;HAVE_ZLIB;HAVE_RARCH_EXEC;HAVE_LIBRETRO_MANAGEMENT;D3DCOMPILE_USEVOIDS;HAVE_GRIFFIN;HAVE_CC_RESAMPLER;HAVE_HLSL;HAVE_D3D9;RARCH_INTERNAL;MSB_FIRST;_XBOX360;HAVE_FBO;WANT_MINIZ;SINC_LOWER_QUALITY;HAVE_XAUDIO;WANT_RPNG;HAVE_THREADS;HAVE_BUILTIN_AUTOCONFIG</PreprocessorDefinitions>
<PreprocessorDefinitions>_DEBUG;_XBOX;HAVE_XINPUT2;%(PreprocessorDefinitions);_CRT_SECURE_NO_WARNINGS;RARCH_CONSOLE;HAVE_RMENU_XUI;HAVE_MENU;HAVE_NETPLAY;HAVE_SOCKET_LEGACY;HAVE_ZLIB;HAVE_RARCH_EXEC;HAVE_LIBRETRO_MANAGEMENT;D3DCOMPILE_USEVOIDS;HAVE_GRIFFIN;HAVE_CC_RESAMPLER;HAVE_HLSL;HAVE_D3D9;RARCH_INTERNAL;MSB_FIRST;_XBOX360;WANT_MINIZ;SINC_LOWER_QUALITY;HAVE_XAUDIO;WANT_RPNG;HAVE_THREADS;HAVE_BUILTIN_AUTOCONFIG</PreprocessorDefinitions>
<CallAttributedProfiling>Callcap</CallAttributedProfiling>
<AdditionalIncludeDirectories>$(SolutionDir)\..\deps\rzlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
@ -152,7 +152,7 @@
<PREfast>AnalyzeOnly</PREfast>
<BufferSecurityCheck>false</BufferSecurityCheck>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PreprocessorDefinitions>_DEBUG;_XBOX;%(PreprocessorDefinitions);HAVE_XINPUT2;_CRT_SECURE_NO_WARNINGS;RARCH_CONSOLE;HAVE_RMENU_XUI;HAVE_MENU;HAVE_ZLIB;HAVE_RARCH_EXEC;HAVE_LIBRETRO_MANAGEMENT;D3DCOMPILE_USEVOIDS;HAVE_GRIFFIN;HAVE_CC_RESAMPLER;HAVE_HLSL;HAVE_D3D9;RARCH_INTERNAL;MSB_FIRST;_XBOX360;HAVE_FBO;WANT_MINIZ;SINC_LOWER_QUALITY;WANT_RPNG;HAVE_THREADS;HAVE_BUILTIN_AUTOCONFIG</PreprocessorDefinitions>
<PreprocessorDefinitions>_DEBUG;_XBOX;%(PreprocessorDefinitions);HAVE_XINPUT2;_CRT_SECURE_NO_WARNINGS;RARCH_CONSOLE;HAVE_RMENU_XUI;HAVE_MENU;HAVE_ZLIB;HAVE_RARCH_EXEC;HAVE_LIBRETRO_MANAGEMENT;D3DCOMPILE_USEVOIDS;HAVE_GRIFFIN;HAVE_CC_RESAMPLER;HAVE_HLSL;HAVE_D3D9;RARCH_INTERNAL;MSB_FIRST;_XBOX360;WANT_MINIZ;SINC_LOWER_QUALITY;WANT_RPNG;HAVE_THREADS;HAVE_BUILTIN_AUTOCONFIG</PreprocessorDefinitions>
<CallAttributedProfiling>Callcap</CallAttributedProfiling>
<AdditionalIncludeDirectories>$(SolutionDir)\..\deps\rzlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
@ -192,7 +192,7 @@
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
<BufferSecurityCheck>false</BufferSecurityCheck>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PreprocessorDefinitions>NDEBUG;_XBOX;PROFILE;%(PreprocessorDefinitions);HAVE_XINPUT2;_CRT_SECURE_NO_WARNINGS;RARCH_CONSOLE;HAVE_RMENU_XUI;HAVE_MENU;HAVE_ZLIB;HAVE_RARCH_EXEC;HAVE_LIBRETRO_MANAGEMENT;D3DCOMPILE_USEVOIDS;HAVE_GRIFFIN;HAVE_CC_RESAMPLER;HAVE_HLSL;HAVE_D3D9;RARCH_INTERNAL;MSB_FIRST;_XBOX360;HAVE_FBO;WANT_MINIZ;SINC_LOWER_QUALITY;HAVE_XAUDIO;WANT_RPNG;HAVE_THREADS;HAVE_BUILTIN_AUTOCONFIG</PreprocessorDefinitions>
<PreprocessorDefinitions>NDEBUG;_XBOX;PROFILE;%(PreprocessorDefinitions);HAVE_XINPUT2;_CRT_SECURE_NO_WARNINGS;RARCH_CONSOLE;HAVE_RMENU_XUI;HAVE_MENU;HAVE_ZLIB;HAVE_RARCH_EXEC;HAVE_LIBRETRO_MANAGEMENT;D3DCOMPILE_USEVOIDS;HAVE_GRIFFIN;HAVE_CC_RESAMPLER;HAVE_HLSL;HAVE_D3D9;RARCH_INTERNAL;MSB_FIRST;_XBOX360;WANT_MINIZ;SINC_LOWER_QUALITY;HAVE_XAUDIO;WANT_RPNG;HAVE_THREADS;HAVE_BUILTIN_AUTOCONFIG</PreprocessorDefinitions>
<CallAttributedProfiling>Callcap</CallAttributedProfiling>
<AdditionalIncludeDirectories>$(SolutionDir)\..\deps\rzlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
@ -237,7 +237,7 @@
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
<BufferSecurityCheck>false</BufferSecurityCheck>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PreprocessorDefinitions>NDEBUG;_XBOX;PROFILE;FASTCAP;%(PreprocessorDefinitions);HAVE_XINPUT2;_CRT_SECURE_NO_WARNINGS;HAVE_ZLIB;HAVE_RARCH_EXEC;HAVE_LIBRETRO_MANAGEMENT;D3DCOMPILE_USEVOIDS;HAVE_GRIFFIN;HAVE_CC_RESAMPLER;HAVE_HLSL;HAVE_D3D9;RARCH_INTERNAL;MSB_FIRST;_XBOX360;HAVE_FBO;WANT_MINIZ;SINC_LOWER_QUALITY;HAVE_RMENU_XUI;HAVE_MENU;HAVE_XAUDIO;WANT_RPNG;HAVE_THREADS;HAVE_BUILTIN_AUTOCONFIG</PreprocessorDefinitions>
<PreprocessorDefinitions>NDEBUG;_XBOX;PROFILE;FASTCAP;%(PreprocessorDefinitions);HAVE_XINPUT2;_CRT_SECURE_NO_WARNINGS;HAVE_ZLIB;HAVE_RARCH_EXEC;HAVE_LIBRETRO_MANAGEMENT;D3DCOMPILE_USEVOIDS;HAVE_GRIFFIN;HAVE_CC_RESAMPLER;HAVE_HLSL;HAVE_D3D9;RARCH_INTERNAL;MSB_FIRST;_XBOX360;WANT_MINIZ;SINC_LOWER_QUALITY;HAVE_RMENU_XUI;HAVE_MENU;HAVE_XAUDIO;WANT_RPNG;HAVE_THREADS;HAVE_BUILTIN_AUTOCONFIG</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(SolutionDir)\..\deps\rzlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
@ -279,7 +279,7 @@
<ExceptionHandling>false</ExceptionHandling>
<BufferSecurityCheck>false</BufferSecurityCheck>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PreprocessorDefinitions>NDEBUG;_XBOX;%(PreprocessorDefinitions);HAVE_XINPUT2;_CRT_SECURE_NO_WARNINGS;RARCH_CONSOLE=1;HAVE_NETPLAY;HAVE_SOCKET_LEGACY;HAVE_ZLIB;HAVE_RARCH_EXEC;HAVE_LIBRETRO_MANAGEMENT;D3DCOMPILE_USEVOIDS;HAVE_GRIFFIN;HAVE_CC_RESAMPLER;HAVE_HLSL;HAVE_D3D9;RARCH_INTERNAL;MSB_FIRST;_XBOX360;HAVE_FBO;WANT_MINIZ;SINC_LOWER_QUALITY;HAVE_RMENU_XUI;HAVE_MENU;HAVE_XAUDIO;WANT_RPNG;HAVE_THREADS;HAVE_BUILTIN_AUTOCONFIG</PreprocessorDefinitions>
<PreprocessorDefinitions>NDEBUG;_XBOX;%(PreprocessorDefinitions);HAVE_XINPUT2;_CRT_SECURE_NO_WARNINGS;RARCH_CONSOLE=1;HAVE_NETPLAY;HAVE_SOCKET_LEGACY;HAVE_ZLIB;HAVE_RARCH_EXEC;HAVE_LIBRETRO_MANAGEMENT;D3DCOMPILE_USEVOIDS;HAVE_GRIFFIN;HAVE_CC_RESAMPLER;HAVE_HLSL;HAVE_D3D9;RARCH_INTERNAL;MSB_FIRST;_XBOX360;WANT_MINIZ;SINC_LOWER_QUALITY;HAVE_RMENU_XUI;HAVE_MENU;HAVE_XAUDIO;WANT_RPNG;HAVE_THREADS;HAVE_BUILTIN_AUTOCONFIG</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(SolutionDir)\..\deps\rzlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
@ -321,7 +321,7 @@
<ExceptionHandling>false</ExceptionHandling>
<BufferSecurityCheck>false</BufferSecurityCheck>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PreprocessorDefinitions>NDEBUG;_XBOX;LTCG;%(PreprocessorDefinitions);HAVE_XINPUT2;_CRT_SECURE_NO_WARNINGS;RARCH_CONSOLE;HAVE_RMENU_XUI;HAVE_MENU;HAVE_NETPLAY;HAVE_SOCKET_LEGACY;HAVE_ZLIB;HAVE_RARCH_EXEC;HAVE_LIBRETRO_MANAGEMENT;D3DCOMPILE_USEVOIDS;HAVE_GRIFFIN;HAVE_CC_RESAMPLER;HAVE_HLSL;HAVE_D3D9;RARCH_INTERNAL;MSB_FIRST;_XBOX360;HAVE_FBO;WANT_MINIZ;SINC_LOWER_QUALITY;HAVE_XAUDIO;WANT_RPNG;HAVE_THREADS;HAVE_BUILTIN_AUTOCONFIG</PreprocessorDefinitions>
<PreprocessorDefinitions>NDEBUG;_XBOX;LTCG;%(PreprocessorDefinitions);HAVE_XINPUT2;_CRT_SECURE_NO_WARNINGS;RARCH_CONSOLE;HAVE_RMENU_XUI;HAVE_MENU;HAVE_NETPLAY;HAVE_SOCKET_LEGACY;HAVE_ZLIB;HAVE_RARCH_EXEC;HAVE_LIBRETRO_MANAGEMENT;D3DCOMPILE_USEVOIDS;HAVE_GRIFFIN;HAVE_CC_RESAMPLER;HAVE_HLSL;HAVE_D3D9;RARCH_INTERNAL;MSB_FIRST;_XBOX360;WANT_MINIZ;SINC_LOWER_QUALITY;HAVE_XAUDIO;WANT_RPNG;HAVE_THREADS;HAVE_BUILTIN_AUTOCONFIG</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(SolutionDir)\..\deps\rzlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>