mirror of
https://github.com/bkaradzic/bgfx.git
synced 2026-02-17 20:52:36 +01:00
D3D9: Enable compilation on Linux.
This commit is contained in:
@@ -0,0 +1 @@
|
||||
#pragma once
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
#pragma once
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
#pragma once
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
#pragma once
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
#pragma once
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
#pragma once
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
#pragma once
|
||||
|
||||
@@ -40,6 +40,7 @@ typedef uint16_t WORD;
|
||||
typedef void* PVOID;
|
||||
typedef char BOOLEAN;
|
||||
typedef uint64_t ULONGLONG;
|
||||
typedef int16_t SHORT, *PSHORT;
|
||||
typedef uint16_t USHORT, *PUSHORT;
|
||||
typedef int64_t LONGLONG, *PLONGLONG;
|
||||
typedef int64_t LONG_PTR, *PLONG_PTR;
|
||||
|
||||
1
3rdparty/directx-headers/include/wsl/stubs/objbase.h
vendored
Normal file
1
3rdparty/directx-headers/include/wsl/stubs/objbase.h
vendored
Normal file
@@ -0,0 +1 @@
|
||||
#pragma once
|
||||
18
3rdparty/directx-headers/include/wsl/stubs/windows.h
vendored
Normal file
18
3rdparty/directx-headers/include/wsl/stubs/windows.h
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
#pragma once
|
||||
#include "basetsd.h"
|
||||
|
||||
typedef struct RGNDATAHEADER {
|
||||
DWORD dwSize;
|
||||
DWORD iType;
|
||||
DWORD nCount;
|
||||
DWORD nRgnSize;
|
||||
RECT rcBound;
|
||||
} RGNDATAHEADER;
|
||||
|
||||
typedef struct RGNDATA {
|
||||
RGNDATAHEADER rdh;
|
||||
char Buffer[1];
|
||||
} RGNDATA;
|
||||
|
||||
#define MAKE_HRESULT(sev,fac,code) \
|
||||
((HRESULT) (((unsigned long)(sev)<<31) | ((unsigned long)(fac)<<16) | ((unsigned long)(code))) )
|
||||
@@ -39,6 +39,7 @@
|
||||
|
||||
# ifndef BGFX_CONFIG_RENDERER_DIRECT3D9
|
||||
# define BGFX_CONFIG_RENDERER_DIRECT3D9 (0 \
|
||||
|| BX_PLATFORM_LINUX \
|
||||
|| BX_PLATFORM_WINDOWS \
|
||||
? 1 : 0)
|
||||
# endif // BGFX_CONFIG_RENDERER_DIRECT3D9
|
||||
|
||||
@@ -455,32 +455,37 @@ namespace bgfx { namespace d3d9
|
||||
// Reference(s):
|
||||
// - https://web.archive.org/web/20190207230309/https://docs.microsoft.com/en-us/windows/desktop/direct3d9/d3dpresent-parameters
|
||||
bx::memSet(&m_params, 0, sizeof(m_params) );
|
||||
m_params.BackBufferWidth = _init.resolution.width;
|
||||
m_params.BackBufferHeight = _init.resolution.height;
|
||||
m_params.BackBufferFormat = adapterFormat;
|
||||
m_params.BackBufferCount = bx::clamp<uint8_t>(_init.resolution.numBackBuffers, 2, BGFX_CONFIG_MAX_BACK_BUFFERS);
|
||||
m_params.MultiSampleType = D3DMULTISAMPLE_NONE;
|
||||
m_params.MultiSampleQuality = 0;
|
||||
m_params.BackBufferWidth = _init.resolution.width;
|
||||
m_params.BackBufferHeight = _init.resolution.height;
|
||||
m_params.BackBufferFormat = adapterFormat;
|
||||
m_params.BackBufferCount = bx::clamp<uint8_t>(_init.resolution.numBackBuffers, 2, BGFX_CONFIG_MAX_BACK_BUFFERS);
|
||||
m_params.MultiSampleType = D3DMULTISAMPLE_NONE;
|
||||
m_params.MultiSampleQuality = 0;
|
||||
m_params.EnableAutoDepthStencil = TRUE;
|
||||
m_params.AutoDepthStencilFormat = D3DFMT_D24S8;
|
||||
m_params.Flags = D3DPRESENTFLAG_DISCARD_DEPTHSTENCIL;
|
||||
m_params.Flags = D3DPRESENTFLAG_DISCARD_DEPTHSTENCIL;
|
||||
|
||||
m_params.FullScreen_RefreshRateInHz = 0;
|
||||
m_params.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;
|
||||
m_params.SwapEffect = D3DSWAPEFFECT_DISCARD;
|
||||
m_params.hDeviceWindow = NULL;
|
||||
m_params.Windowed = true;
|
||||
m_params.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;
|
||||
m_params.SwapEffect = D3DSWAPEFFECT_DISCARD;
|
||||
m_params.hDeviceWindow = NULL;
|
||||
m_params.Windowed = true;
|
||||
m_params.BackBufferWidth = _init.resolution.width;
|
||||
m_params.BackBufferHeight = _init.resolution.height;
|
||||
|
||||
RECT rect;
|
||||
GetWindowRect( (HWND)g_platformData.nwh, &rect);
|
||||
m_params.BackBufferWidth = rect.right-rect.left;
|
||||
m_params.BackBufferHeight = rect.bottom-rect.top;
|
||||
const char* d3d9DllName =
|
||||
#if BX_PLATFORM_LINUX
|
||||
"d3d9.so"
|
||||
#else
|
||||
"d3d9.dll"
|
||||
#endif // BX_PLATFORM_LINUX
|
||||
;
|
||||
|
||||
m_d3d9Dll = bx::dlopen("d3d9.dll");
|
||||
m_d3d9Dll = bx::dlopen(d3d9DllName);
|
||||
|
||||
if (NULL == m_d3d9Dll)
|
||||
{
|
||||
BX_TRACE("Init error: Failed to load d3d9.dll.");
|
||||
BX_TRACE("Init error: Failed to load %s.", d3d9DllName);
|
||||
goto error;
|
||||
}
|
||||
|
||||
@@ -1231,6 +1236,7 @@ namespace bgfx { namespace d3d9
|
||||
|
||||
void requestScreenShot(FrameBufferHandle _handle, const char* _filePath) override
|
||||
{
|
||||
#if BX_PLATFORM_WINDOWS
|
||||
IDirect3DSwapChain9* swapChain = isValid(_handle)
|
||||
? m_frameBuffers[_handle.idx].m_swapChain
|
||||
: m_swapChain
|
||||
@@ -1294,6 +1300,10 @@ namespace bgfx { namespace d3d9
|
||||
|
||||
DX_CHECK(surface->UnlockRect() );
|
||||
DX_RELEASE(surface, 0);
|
||||
#else
|
||||
BX_TRACE("Screenshot not supported!");
|
||||
BX_UNUSED(_handle, _filePath);
|
||||
#endif // BX_PLATFORM_WINDOWS
|
||||
}
|
||||
|
||||
void updateViewName(ViewId _id, const char* _name) override
|
||||
|
||||
@@ -6,12 +6,11 @@
|
||||
#ifndef BGFX_RENDERER_D3D9_H_HEADER_GUARD
|
||||
#define BGFX_RENDERER_D3D9_H_HEADER_GUARD
|
||||
|
||||
#define BGFX_CONFIG_RENDERER_DIRECT3D9EX BX_PLATFORM_WINDOWS
|
||||
#define BGFX_CONFIG_RENDERER_DIRECT3D9EX (BX_PLATFORM_LINUX || BX_PLATFORM_WINDOWS)
|
||||
|
||||
#if BX_PLATFORM_WINDOWS
|
||||
# include <sal.h>
|
||||
# include <d3d9.h>
|
||||
#endif // BX_PLATFORM_
|
||||
#include <sal.h>
|
||||
#include <unknwn.h>
|
||||
#include <d3d9.h>
|
||||
|
||||
#ifndef D3DSTREAMSOURCE_INDEXEDDATA
|
||||
# define D3DSTREAMSOURCE_INDEXEDDATA (1<<30)
|
||||
|
||||
Reference in New Issue
Block a user