blob: 5fb27e3ab12baa56a2c2bf0807698cc1284a874d [file]
/*
* Copyright 2025 Rive
*/
#pragma once
#include <d3dcommon.h>
#include <wrl/client.h>
#include <system_error>
#include "rive/renderer/render_context.hpp"
using Microsoft::WRL::ComPtr;
#define VERIFY_OK(CODE) \
{ \
HRESULT hr = (CODE); \
if (hr != S_OK) \
{ \
fprintf(stderr, \
__FILE__ ":%i: D3D error %s: %s\n", \
static_cast<int>(__LINE__), \
std::system_category().message(hr).c_str(), \
#CODE); \
fflush(stderr); \
abort(); \
} \
}
namespace rive::gpu
{
struct D3DCapabilities
{
bool supportsRasterizerOrderedViews = false;
bool supportsTypedUAVLoadStore =
false; // Can we load/store all UAV formats used by Rive?
bool supportsMin16Precision =
false; // Can we use minimum 16-bit types (e.g. min16int)?
bool isIntel = false;
bool allowsUAVSlot0WithColorOutput = true;
};
struct D3DContextOptions
{
ShaderCompilationMode shaderCompilationMode =
ShaderCompilationMode::standard;
bool disableRasterizerOrderedViews = false; // Primarily for testing.
bool disableTypedUAVLoadStore = false; // Primarily for testing.
bool isIntel = false;
bool isIntelArc = false;
};
} // namespace rive::gpu