D3D9: Enable compilation on Linux.

This commit is contained in:
Бранимир Караџић
2022-09-17 19:59:35 -07:00
parent 7ffeaefad2
commit d30032984b
13 changed files with 59 additions and 22 deletions

View File

@@ -0,0 +1 @@
#pragma once

View File

@@ -0,0 +1 @@
#pragma once

View File

@@ -0,0 +1 @@
#pragma once

View File

@@ -0,0 +1 @@
#pragma once

View File

@@ -0,0 +1 @@
#pragma once

View File

@@ -0,0 +1 @@
#pragma once

View File

@@ -0,0 +1 @@
#pragma once

View File

@@ -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;

View File

@@ -0,0 +1 @@
#pragma once

View 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))) )

View File

@@ -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

View File

@@ -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

View File

@@ -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)