[D3D12] Shaders (not all compiling yet)

This commit is contained in:
Triang3l
2018-07-24 14:57:21 +03:00
parent b0421de496
commit 87aecfa1b8
10 changed files with 671 additions and 59 deletions

View File

@@ -15,6 +15,7 @@
#include <dxgi1_4.h>
#include <d3d12.h>
#include <d3dcompiler.h>
#define XELOGD3D XELOGI

View File

@@ -9,18 +9,13 @@
#include "xenia/ui/d3d12/d3d12_context.h"
#include <gflags/gflags.h>
#include "xenia/base/logging.h"
#include "xenia/base/math.h"
#include "xenia/gpu/gpu_flags.h"
#include "xenia/ui/d3d12/d3d12_immediate_drawer.h"
#include "xenia/ui/d3d12/d3d12_provider.h"
#include "xenia/ui/window.h"
DEFINE_int32(d3d12_sync_interval, 1,
"Vertical synchronization interval. 0 to disable vertical sync, "
"1 to enable it, 2/3/4 to sync every 2/3/4 vertical blanks.");
namespace xe {
namespace ui {
namespace d3d12 {
@@ -284,8 +279,7 @@ void D3D12Context::EndSwap() {
graphics_command_list->ResourceBarrier(1, &barrier);
command_list->Execute();
// Present and check if the context was lost.
HRESULT result =
swap_chain_->Present(xe::clamp(FLAGS_d3d12_sync_interval, 0, 4), 0);
HRESULT result = swap_chain_->Present(FLAGS_vsync ? 1 : 0, 0);
if (result == DXGI_ERROR_DEVICE_RESET ||
result == DXGI_ERROR_DEVICE_REMOVED) {
context_lost_ = true;
@@ -311,6 +305,9 @@ std::unique_ptr<RawImage> D3D12Context::Capture() {
void D3D12Context::AwaitAllFramesCompletion() {
// Await the last frame since previous frames must be completed before it.
if (context_lost_) {
return;
}
uint32_t await_frame = current_queue_frame_ + (kQueuedFrames - 1);
if (await_frame >= kQueuedFrames) {
await_frame -= kQueuedFrames;

View File

@@ -18,6 +18,8 @@
#include "xenia/ui/d3d12/d3d12_provider.h"
#include "xenia/ui/graphics_context.h"
#define FINE_GRAINED_DRAW_SCOPES 1
namespace xe {
namespace ui {
namespace d3d12 {