tess
0.4.0
Performance-first tile and path simulation substrate
Toggle main menu visibility
Loading...
Searching...
No Matches
backend.h
1
#pragma once
2
3
#include <tess/gpu/descriptors.h>
4
5
#include <concepts>
6
#include <cstdint>
7
8
// M13 GPU backend concept: compile-time polymorphic, supplied by the
9
// game or a plugin, never required. tess defines what a backend must
10
// answer (capabilities) and accept (uploads, dispatches, readbacks);
11
// NoGpuBackend is the default that compiles everywhere and refuses
12
// everything, so CPU-only builds carry zero GPU obligations.
13
namespace
tess::gpu {
14
20
struct
GpuCapabilities
{
21
bool
compute =
false
;
22
bool
async_dispatch =
false
;
23
bool
async_readback =
false
;
24
std::uint64_t max_buffer_bytes = 0;
25
std::uint64_t max_dispatch_chunks = 0;
26
std::uint32_t buffer_alignment = 0;
27
28
friend
constexpr
auto
operator==(
const
GpuCapabilities
&,
29
const
GpuCapabilities
&)
noexcept
30
->
bool
=
default
;
31
};
32
39
template
<
typename
B>
40
concept
GpuBackend
=
41
requires
(B& backend,
const
B& const_backend,
const
UploadDesc
& upload,
42
const
DispatchDesc
& dispatch,
const
ReadbackDesc
& readback) {
43
{
44
const_backend.capabilities()
45
}
noexcept
-> std::same_as<GpuCapabilities>;
46
{ backend.upload(upload) } -> std::same_as<bool>;
47
{ backend.dispatch(dispatch) } -> std::same_as<bool>;
48
{ backend.readback(readback) } -> std::same_as<bool>;
49
};
50
52
struct
NoGpuBackend
{
53
[[nodiscard]]
constexpr
auto
capabilities()
const
noexcept
54
->
GpuCapabilities
{
55
return
GpuCapabilities
{};
56
}
57
58
[[nodiscard]]
constexpr
auto
upload(
const
UploadDesc
&)
noexcept
->
bool
{
59
return
false
;
60
}
61
62
[[nodiscard]]
constexpr
auto
dispatch(
const
DispatchDesc
&)
noexcept
->
bool
{
63
return
false
;
64
}
65
66
[[nodiscard]]
constexpr
auto
readback(
const
ReadbackDesc
&)
noexcept
->
bool
{
67
return
false
;
68
}
69
};
70
71
static_assert
(
GpuBackend<NoGpuBackend>
);
72
73
}
// namespace tess::gpu
tess::gpu::GpuBackend
Definition
backend.h:40
tess::gpu::DispatchDesc
Definition
descriptors.h:161
tess::gpu::GpuCapabilities
Definition
backend.h:20
tess::gpu::NoGpuBackend
Definition
backend.h:52
tess::gpu::ReadbackDesc
Definition
descriptors.h:179
tess::gpu::UploadDesc
Definition
descriptors.h:133
include
tess
gpu
backend.h
Generated by
1.17.0