Browse Source

build: fix the X360 port.

legacy
Sam Hocevar sam 11 years ago
parent
commit
c6ffd1ffcf
7 changed files with 68 additions and 26 deletions
  1. +36
    -11
      src/gpu/framebuffer.cpp
  2. +6
    -2
      src/gpu/indexbuffer.cpp
  3. +1
    -1
      src/gpu/renderer.cpp
  4. +7
    -3
      src/gpu/shader.cpp
  5. +9
    -4
      src/gpu/texture.cpp
  6. +8
    -4
      src/gpu/vertexbuffer.cpp
  7. +1
    -1
      src/platform/xbox/xboxapp.cpp

+ 36
- 11
src/gpu/framebuffer.cpp View File

@@ -19,6 +19,10 @@
# define FAR
# define NEAR
# include <d3d9.h>
#elif defined _XBOX
# include <xtl.h>
# undef near /* Fuck Microsoft */
# undef far /* Fuck Microsoft again */
#endif

using namespace std;
@@ -44,7 +48,7 @@ class FramebufferData
IDirect3DTexture9 *m_texture;
IDirect3DSurface9 *m_surface, *m_back_surface;
#elif defined _XBOX
D3DDevice9 *m_dev;
D3DDevice *m_dev;
D3DTexture *m_texture;
D3DSurface *m_surface, *m_back_surface;
#else
@@ -61,7 +65,7 @@ uint32_t FramebufferFormat::GetFormat()
{
switch (m_format)
{
#if defined USE_D3D9 || defined _XBOX
#if defined USE_D3D9
case R_16_F: return D3DFMT_R16F;
case R_32_F: return D3DFMT_R32F;
case RG_16:
@@ -80,6 +84,25 @@ uint32_t FramebufferFormat::GetFormat()
case RGBA_16_UI: return D3DFMT_A16B16G16R16;
case RGBA_16_F: return D3DFMT_A16B16G16R16F;
case RGBA_32_F: return D3DFMT_A32B32G32R32F;
#elif defined _XBOX
case R_16_F: return D3DFMT_R16F;
case R_32_F: return D3DFMT_R32F;
case RG_16:
case RG_16_I:
case RG_16_UI: return D3DFMT_G16R16;
case RG_16_F: return D3DFMT_G16R16F;
case RG_32_F: return D3DFMT_G32R32F;
case RGB_8:
case RGB_8_I:
case RGB_8_UI: return D3DFMT_X8R8G8B8;
case RGBA_8:
case RGBA_8_I:
case RGBA_8_UI: return D3DFMT_A8R8G8B8;
case RGBA_16:
case RGBA_16_I:
case RGBA_16_UI: return D3DFMT_A16B16G16R16;
case RGBA_16_F: return D3DFMT_A16B16G16R16F;
case RGBA_32_F: return D3DFMT_A32B32G32R32F;
#elif defined __CELLOS_LV2__
/* Supported drawable formats on the PS3: GL_ARGB_SCE, GL_RGB16F_ARB,
* GL_RGBA16F_ARB, GL_RGB32F_ARB, GL_RGBA32F_ARB, GL_LUMINANCE32F_ARB. */
@@ -291,23 +314,25 @@ Framebuffer::Framebuffer(ivec2 size, FramebufferFormat fbo_format)
m_data->m_dev = (IDirect3DDevice9 *)g_renderer->GetDevice();

if (FAILED(m_data->m_dev->CreateTexture(size.x, size.y, 1,
D3DUSAGE_RENDERTARGET,
(D3DFORMAT)fbo_format.GetFormat(), D3DPOOL_DEFAULT,
&m_data->m_texture, nullptr)))
D3DUSAGE_RENDERTARGET,
(D3DFORMAT)fbo_format.GetFormat(),
D3DPOOL_DEFAULT,
&m_data->m_texture, nullptr)))
Abort();
if (FAILED(m_data->m_texture->GetSurfaceLevel(0, &m_data->m_surface)))
Abort();
#elif defined _XBOX
m_data->m_dev = (D3DDevice9 *)g_renderer->GetDevice();
m_data->m_dev = (D3DDevice *)g_renderer->GetDevice();

if (FAILED(m_data->m_dev->CreateTexture(size.x, size.y, 1, 0,
fbo_format.GetFormat(), D3DPOOL_DEFAULT,
&m_data->m_texture, nullptr)))
(D3DFORMAT)fbo_format.GetFormat(),
D3DPOOL_DEFAULT,
&m_data->m_texture, nullptr)))
Abort();
if (FAILED(m_data->m_dev->CreateRenderTarget(size.x, size.y,
fbo_format.GetFormat(),
D3DMULTISAMPLE_NONE, 0, 0,
&m_data->m_surface, nullptr)))
(D3DFORMAT)fbo_format.GetFormat(),
D3DMULTISAMPLE_NONE, 0, 0,
&m_data->m_surface, nullptr)))
Abort();
#else
# if GL_VERSION_1_1


+ 6
- 2
src/gpu/indexbuffer.cpp View File

@@ -19,6 +19,10 @@
# define FAR
# define NEAR
# include <d3d9.h>
#elif defined _XBOX
# include <xtl.h>
# undef near /* Fuck Microsoft */
# undef far /* Fuck Microsoft again */
#endif

using namespace std;
@@ -41,7 +45,7 @@ class IndexBufferData
IDirect3DDevice9 *m_dev;
IDirect3DIndexBuffer9 *m_ibo;
#elif defined _XBOX
D3DDevice9 *m_dev;
D3DDevice *m_dev;
D3DIndexBuffer *m_ibo;
#else
GLuint m_ibo;
@@ -64,7 +68,7 @@ IndexBuffer::IndexBuffer(size_t size)
# if defined USE_D3D9
m_data->m_dev = (IDirect3DDevice9 *)g_renderer->GetDevice();
# elif defined _XBOX
m_data->m_dev = (D3DDevice9 *)g_renderer->GetDevice();
m_data->m_dev = (D3DDevice *)g_renderer->GetDevice();
# endif

if (FAILED(m_data->m_dev->CreateIndexBuffer(size, D3DUSAGE_WRITEONLY,


+ 1
- 1
src/gpu/renderer.cpp View File

@@ -97,7 +97,7 @@ Renderer::Renderer(ivec2 size)
XVIDEO_MODE VideoMode;
XGetVideoMode(&VideoMode);
size = lol::min(size, ivec2(VideoMode.dwDisplayWidth,
VideoMode.dwDisplayHeight);
VideoMode.dwDisplayHeight));
# endif
D3DPRESENT_PARAMETERS d3dpp;
memset(&d3dpp, 0, sizeof(d3dpp));


+ 7
- 3
src/gpu/shader.cpp View File

@@ -15,7 +15,7 @@
#include <cstring>
#include <cstdio>

#ifdef WIN32
#if defined WIN32 && !defined _XBOX
# define WIN32_LEAN_AND_MEAN
# include <windows.h>
# if defined USE_D3D9
@@ -25,6 +25,10 @@
# include <d3d9.h>
# include <d3dx9shader.h>
# endif
#elif defined _XBOX
# include <xtl.h>
# undef near /* Fuck Microsoft */
# undef far /* Fuck Microsoft again */
#endif

#include "core.h"
@@ -50,7 +54,7 @@ private:
IDirect3DPixelShader9 *frag_shader;
ID3DXConstantTable *vert_table, *frag_table;
#elif defined _XBOX
D3DDevice9 *m_dev;
D3DDevice *m_dev;
D3DVertexShader *vert_shader;
D3DPixelShader *frag_shader;
ID3DXConstantTable *vert_table, *frag_table;
@@ -192,7 +196,7 @@ Shader::Shader(char const *vert, char const *frag)
# if defined USE_D3D9
data->m_dev = (IDirect3DDevice9 *)g_renderer->GetDevice();
# elif defined _XBOX
data->m_dev = (D3DDevice9 *)g_renderer->GetDevice();
data->m_dev = (D3DDevice *)g_renderer->GetDevice();
# endif

hr = D3DXCompileShader(vert, (UINT)strlen(vert), macros, nullptr, "main",


+ 9
- 4
src/gpu/texture.cpp View File

@@ -45,8 +45,11 @@ class TextureData
D3DTEXTUREFILTERTYPE m_min_filter;
D3DTEXTUREFILTERTYPE m_mip_filter;
#elif defined _XBOX
D3DDevice9 *m_dev;
D3DDevice *m_dev;
D3DTexture *m_texture;
D3DTEXTUREFILTERTYPE m_mag_filter;
D3DTEXTUREFILTERTYPE m_min_filter;
D3DTEXTUREFILTERTYPE m_mip_filter;
#else
GLuint m_texture;
GLint m_internal_format;
@@ -74,7 +77,7 @@ Texture::Texture(ivec2 size, PixelFormat format)
# if defined USE_D3D9
m_data->m_dev = (IDirect3DDevice9 *)g_renderer->GetDevice();
# elif defined _XBOX
m_data->m_dev = (D3DDevice9 *)g_renderer->GetDevice();
m_data->m_dev = (D3DDevice *)g_renderer->GetDevice();
# endif

static struct
@@ -297,8 +300,10 @@ void Texture::SetMinFiltering(TextureMinFilter filter)

void Texture::GenerateMipmaps()
{
#if defined _XBOX || defined USE_D3D9
m_data->m_texture->GenerateMipSubLevels();
#if defined USE_D3D9
m_data->m_texture->->GenerateMipSubLevels();
#elif defined _XBOX
/* FIXME: No direct mipmap generation support on X360 */
#elif defined __CELLOS_LV2__
glBindTexture(GL_TEXTURE_2D, m_data->m_texture);
glGenerateMipmapOES(GL_TEXTURE_2D);


+ 8
- 4
src/gpu/vertexbuffer.cpp View File

@@ -19,6 +19,10 @@
# define FAR
# define NEAR
# include <d3d9.h>
#elif defined _XBOX
# include <xtl.h>
# undef near /* Fuck Microsoft */
# undef far /* Fuck Microsoft again */
#endif

using namespace std;
@@ -42,7 +46,7 @@ class VertexBufferData
IDirect3DDevice9 *m_dev;
IDirect3DVertexBuffer9 *m_vbo;
#elif defined _XBOX
D3DDevice9 *m_dev;
D3DDevice *m_dev;
D3DVertexBuffer *m_vbo;
#else
GLuint m_vbo;
@@ -64,7 +68,7 @@ class VertexDeclarationData
IDirect3DDevice9 *m_dev;
IDirect3DVertexDeclaration9 *m_vdecl;
#elif defined _XBOX
D3DDevice9 *m_dev;
D3DDevice *m_dev;
D3DVertexDeclaration *m_vdecl;
#else
#endif
@@ -564,7 +568,7 @@ void VertexDeclaration::Initialize()
# if defined USE_D3D9
m_data->m_dev = (IDirect3DDevice9 *)g_renderer->GetDevice();
# elif defined _XBOX
m_data->m_dev = (D3DDevice9 *)g_renderer->GetDevice();
m_data->m_dev = (D3DDevice *)g_renderer->GetDevice();
# endif

if (FAILED(m_data->m_dev->CreateVertexDeclaration(elements,
@@ -647,7 +651,7 @@ VertexBuffer::VertexBuffer(size_t size)
# if defined USE_D3D9
m_data->m_dev = (IDirect3DDevice9 *)g_renderer->GetDevice();
# elif defined _XBOX
m_data->m_dev = (D3DDevice9 *)g_renderer->GetDevice();
m_data->m_dev = (D3DDevice *)g_renderer->GetDevice();
# endif

if (FAILED(m_data->m_dev->CreateVertexBuffer(size, D3DUSAGE_WRITEONLY, nullptr,


+ 1
- 1
src/platform/xbox/xboxapp.cpp View File

@@ -63,7 +63,7 @@ void XboxApp::Tick()
Ticker::TickDraw();

#if defined _XBOX
D3DDevice9 *d3d_dev = (D3DDevice9 *)g_renderer->GetDevice();
D3DDevice *d3d_dev = (D3DDevice *)g_renderer->GetDevice();
d3d_dev->Present(nullptr, nullptr, nullptr, nullptr);
#endif
}


Loading…
Cancel
Save