mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-02-20 10:54:16 +01:00
[tests] Added D3D11 test stub + install targets
This commit is contained in:
parent
024d69784d
commit
90c3e21c17
3
tests/d3d11/meson.build
Normal file
3
tests/d3d11/meson.build
Normal file
@ -0,0 +1,3 @@
|
||||
test_d3d11_deps = [ dxvk_dep, dxgi_dep, d3d11_dep ]
|
||||
|
||||
executable('d3d11-triangle', files('test_d3d11_triangle.cpp'), dependencies : test_d3d11_deps, install : true)
|
115
tests/d3d11/test_d3d11_triangle.cpp
Normal file
115
tests/d3d11/test_d3d11_triangle.cpp
Normal file
@ -0,0 +1,115 @@
|
||||
#include <d3d11_include.h>
|
||||
|
||||
#include <windows.h>
|
||||
#include <windowsx.h>
|
||||
|
||||
using namespace dxvk;
|
||||
|
||||
class TriangleApp {
|
||||
|
||||
public:
|
||||
|
||||
TriangleApp(HINSTANCE instance, HWND window) {
|
||||
if (FAILED(CreateDXGIFactory(__uuidof(IDXGIFactory),
|
||||
reinterpret_cast<void**>(&m_factory))))
|
||||
throw DxvkError("Failed to create DXGI factory");
|
||||
|
||||
if (FAILED(m_factory->EnumAdapters(0, &m_adapter)))
|
||||
throw DxvkError("Failed to enumerate DXGI adapter");
|
||||
|
||||
HRESULT status = D3D11CreateDevice(
|
||||
m_adapter.ptr(),
|
||||
D3D_DRIVER_TYPE_UNKNOWN,
|
||||
nullptr, 0,
|
||||
nullptr, 0, 0,
|
||||
&m_device,
|
||||
&m_featureLevel,
|
||||
&m_context);
|
||||
|
||||
if (FAILED(status))
|
||||
throw DxvkError("Failed to create D3D11 device");
|
||||
}
|
||||
|
||||
~TriangleApp() {
|
||||
|
||||
}
|
||||
|
||||
void run() {
|
||||
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
Com<IDXGIFactory> m_factory;
|
||||
Com<IDXGIAdapter> m_adapter;
|
||||
Com<ID3D11Device> m_device;
|
||||
Com<ID3D11DeviceContext> m_context;
|
||||
|
||||
D3D_FEATURE_LEVEL m_featureLevel;
|
||||
|
||||
};
|
||||
|
||||
LRESULT CALLBACK WindowProc(HWND hWnd,
|
||||
UINT message,
|
||||
WPARAM wParam,
|
||||
LPARAM lParam);
|
||||
|
||||
int WINAPI WinMain(HINSTANCE hInstance,
|
||||
HINSTANCE hPrevInstance,
|
||||
LPSTR lpCmdLine,
|
||||
int nCmdShow) {
|
||||
HWND hWnd;
|
||||
WNDCLASSEXW wc;
|
||||
ZeroMemory(&wc, sizeof(WNDCLASSEX));
|
||||
wc.cbSize = sizeof(WNDCLASSEX);
|
||||
wc.style = CS_HREDRAW | CS_VREDRAW;
|
||||
wc.lpfnWndProc = WindowProc;
|
||||
wc.hInstance = hInstance;
|
||||
wc.hCursor = LoadCursor(nullptr, IDC_ARROW);
|
||||
wc.hbrBackground = (HBRUSH)COLOR_WINDOW;
|
||||
wc.lpszClassName = L"WindowClass1";
|
||||
RegisterClassExW(&wc);
|
||||
|
||||
hWnd = CreateWindowExW(0,
|
||||
L"WindowClass1",
|
||||
L"Our First Windowed Program",
|
||||
WS_OVERLAPPEDWINDOW,
|
||||
300, 300,
|
||||
640, 480,
|
||||
nullptr,
|
||||
nullptr,
|
||||
hInstance,
|
||||
nullptr);
|
||||
ShowWindow(hWnd, nCmdShow);
|
||||
|
||||
MSG msg;
|
||||
|
||||
TriangleApp app(hInstance, hWnd);
|
||||
|
||||
try {
|
||||
while (true) {
|
||||
if (PeekMessage(&msg, nullptr, 0, 0, PM_REMOVE)) {
|
||||
TranslateMessage(&msg);
|
||||
DispatchMessage(&msg);
|
||||
|
||||
if (msg.message == WM_QUIT)
|
||||
return msg.wParam;
|
||||
} else {
|
||||
app.run();
|
||||
}
|
||||
}
|
||||
} catch (const dxvk::DxvkError& e) {
|
||||
Logger::err(e.message());
|
||||
return msg.wParam;
|
||||
}
|
||||
}
|
||||
|
||||
LRESULT CALLBACK WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
|
||||
switch (message) {
|
||||
case WM_CLOSE:
|
||||
PostQuitMessage(0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
return DefWindowProc(hWnd, message, wParam, lParam);
|
||||
}
|
@ -1,5 +1,3 @@
|
||||
test_dxgi_deps = [ dxvk_dep, dxgi_dep ]
|
||||
|
||||
executable('dxgi-factory', files('test_dxgi_factory.cpp'),
|
||||
link_with : util_lib,
|
||||
dependencies : test_dxgi_deps)
|
||||
executable('dxgi-factory', files('test_dxgi_factory.cpp'), dependencies : test_dxgi_deps, install: true)
|
@ -1,3 +1,3 @@
|
||||
test_dxvk_deps = [ dxvk_dep ]
|
||||
|
||||
executable('dxvk-triangle', files('test_dxvk_triangle.cpp'), dependencies: test_dxvk_deps)
|
||||
executable('dxvk-triangle', files('test_dxvk_triangle.cpp'), dependencies: test_dxvk_deps, install: true)
|
@ -1,2 +1,3 @@
|
||||
subdir('d3d11')
|
||||
subdir('dxgi')
|
||||
subdir('dxvk')
|
Loading…
x
Reference in New Issue
Block a user