69#ifndef NNGN_GRAPHICS_GRAPHICS_H
70#define NNGN_GRAPHICS_GRAPHICS_H
123 std::array<char, name_max_len>
name = {};
127 std::array<char, 256>
name = {};
136 std::array<char, 256>
name = {};
187 std::span<const std::pair<u32, u32>>
buffers = {};
202 static std::unique_ptr<Graphics>
create(
Backend b,
const void *params);
229 virtual std::size_t
n_heaps(std::size_t i)
const = 0;
241 std::size_t i, std::size_t ih,
MemoryType *p)
const = 0;
249 virtual void get_keys(
size_t n, int32_t *keys)
const = 0;
273 void *data,
void f(
void*,
void*,
u64,
u64)) = 0;
279 void *data,
auto &&vgen,
auto &&egen);
283 std::uint32_t i, std::uint32_t n,
const std::byte *
v) = 0;
300 b, offset, n, size, &
f,
301 [](
void *p,
auto ...args) { (*
static_cast<F*
>(p))(args...); });
307 void *data,
auto &&vgen,
auto &&egen
309 const bool ok = this->
write_to_buffer(vbo, voff, vn, vsize, data, vgen)
318template<Graphics::Backend>
static constexpr T mip_levels(T extent)
Definition: math.h:233
precision highp int
Definition: common.h:13
#define NNGN_TEXTURE_EXTENT
Definition: const.h:4
#define NNGN_TEXTURE_SIZE
Definition: const.h:5
function g l
Definition: plot.lua:8
std::uint64_t u64
Definition: def.h:15
std::uint8_t u8
Definition: def.h:12
std::uint32_t u32
Definition: def.h:14
std::unique_ptr< Graphics > graphics_create_backend(const void *params)
vec2_base< double > dvec2
Definition: vec2.h:30
vec2_base< std::uint32_t > uvec2
Definition: vec2.h:27
#define F(...)
Definition: pp.cpp:12
v[1]
Definition: math.lua:19
w
Definition: strict.lua:12
Definition: graphics.h:96
mat4 proj
Definition: graphics.h:96
mat4 view
Definition: graphics.h:96
Wrapper for a small unsigned integral representing flags.
Definition: flags.h:18
Definition: graphics.h:178
const char * name
Definition: graphics.h:180
Type type
Definition: graphics.h:181
Type
Definition: graphics.h:179
u64 size
Definition: graphics.h:182
Definition: graphics.h:192
const mat4 * view
Definition: graphics.h:194
const mat4 * proj
Definition: graphics.h:194
const uvec2 * screen
Definition: graphics.h:193
Definition: graphics.h:132
Type
Definition: graphics.h:133
u32 driver_version
Definition: graphics.h:138
std::array< char, 256 > name
Definition: graphics.h:136
Type type
Definition: graphics.h:139
u32 vendor_id
Definition: graphics.h:138
std::array< char, 15 > version
Definition: graphics.h:137
u32 device_id
Definition: graphics.h:138
Definition: graphics.h:121
u32 version
Definition: graphics.h:124
std::array< char, name_max_len > name
Definition: graphics.h:123
static constexpr std::size_t name_max_len
Definition: graphics.h:122
Definition: graphics.h:126
u32 version
Definition: graphics.h:130
std::array< char, 256 > name
Definition: graphics.h:127
std::array< char, 256 > description
Definition: graphics.h:128
std::array< char, 15 > spec_version
Definition: graphics.h:129
Definition: graphics.h:149
u64 size
Definition: graphics.h:151
Flag
Definition: graphics.h:150
@ DEVICE_LOCAL
Definition: graphics.h:150
Flag flags
Definition: graphics.h:152
Definition: graphics.h:154
Flag
Definition: graphics.h:155
@ HOST_VISIBLE
Definition: graphics.h:156
@ LAZILY_ALLOCATED
Definition: graphics.h:158
@ HOST_CACHED
Definition: graphics.h:157
@ DEVICE_LOCAL
Definition: graphics.h:156
@ HOST_COHERENT
Definition: graphics.h:157
Flag flags
Definition: graphics.h:160
Definition: graphics.h:116
int maj
Definition: graphics.h:116
int min
Definition: graphics.h:116
Definition: graphics.h:109
Flags< Flag > flags
Definition: graphics.h:113
Flag
Definition: graphics.h:110
@ HIDDEN
Definition: graphics.h:111
@ DEBUG
Definition: graphics.h:111
Definition: graphics.h:166
Type
Definition: graphics.h:171
Flag
Definition: graphics.h:167
@ CULL_BACK_FACES
Definition: graphics.h:169
@ DEPTH_TEST
Definition: graphics.h:168
Type type
Definition: graphics.h:175
const char * name
Definition: graphics.h:174
Flag flags
Definition: graphics.h:176
Definition: graphics.h:141
Flag flags
Definition: graphics.h:147
Flag
Definition: graphics.h:142
@ GRAPHICS
Definition: graphics.h:143
@ COMPUTE
Definition: graphics.h:143
@ TRANSFER
Definition: graphics.h:143
@ PRESENT
Definition: graphics.h:144
u32 count
Definition: graphics.h:146
Definition: graphics.h:185
std::span< const std::pair< u32, u32 > > buffers
Definition: graphics.h:187
u32 pipeline
Definition: graphics.h:186
Definition: graphics.h:184
std::span< const Stage > normal
Definition: graphics.h:189
std::span< const Stage > overlay
Definition: graphics.h:189
Definition: graphics.h:162
u32 max_images
Definition: graphics.h:163
uvec2 min_extent
Definition: graphics.h:164
uvec2 cur_extent
Definition: graphics.h:164
u32 min_images
Definition: graphics.h:163
uvec2 max_extent
Definition: graphics.h:164
Definition: graphics.h:115
u32 minor
Definition: graphics.h:115
const char * name
Definition: graphics.h:115
u32 major
Definition: graphics.h:115
u32 patch
Definition: graphics.h:115
Definition: graphics.h:117
Version version
Definition: graphics.h:118
LogLevel log_level
Definition: graphics.h:119
Definition: graphics.h:99
Backend
Definition: graphics.h:104
virtual std::size_t n_memory_types(std::size_t i, std::size_t ih) const =0
static constexpr u32 TEXTURE_SIZE
Definition: graphics.h:199
virtual int swap_interval() const =0
virtual std::size_t n_present_modes() const =0
void(*)(void *, int, int, int, int) key_callback_f
Definition: graphics.h:101
virtual bool init_instance()=0
static constexpr u32 TEXTURE_EXTENT_LOG2
Definition: graphics.h:198
virtual bool init_device()=0
virtual void set_cursor_mode(CursorMode m)=0
virtual GraphicsStats stats()=0
virtual bool resize_textures(std::uint32_t s)=0
void(*)(void *, dvec2) mouse_move_callback_f
Definition: graphics.h:103
virtual u32 create_buffer(const BufferConfiguration &conf)=0
virtual bool init_device(std::size_t i)=0
CursorMode
Definition: graphics.h:191
static std::string flags_str(QueueFamily::Flag f)
Definition: graphics.cpp:49
virtual void set_mouse_move_callback(void *data, mouse_move_callback_f f)=0
virtual void set_mouse_button_callback(void *data, mouse_button_callback_f f)=0
virtual bool init()
Fully initialize the back end.
Definition: graphics.h:291
static std::unique_ptr< Graphics > create(Backend b, const void *params)
Definition: graphics.cpp:7
virtual u32 create_pipeline(const PipelineConfiguration &conf)=0
virtual std::size_t n_device_extensions(std::size_t i) const =0
virtual ivec2 mouse_pos(void) const =0
LogLevel
Definition: graphics.h:107
void(*)(void *, uvec2) size_callback_f
Definition: graphics.h:100
virtual uvec2 window_size() const =0
virtual void present_modes(PresentMode *p) const =0
virtual bool set_render_list(const RenderList &l)=0
virtual void set_key_callback(void *data, key_callback_f f)=0
void(*)(void *, int, int, int) mouse_button_callback_f
Definition: graphics.h:102
virtual void set_camera(const Camera &c)=0
virtual void device_infos(DeviceInfo *p) const =0
virtual void set_window_title(const char *t)=0
virtual void heaps(std::size_t i, MemoryHeap *p) const =0
virtual bool set_buffer_size(u32 b, std::uint64_t size)=0
virtual void memory_types(std::size_t i, std::size_t ih, MemoryType *p) const =0
virtual bool load_textures(std::uint32_t i, std::uint32_t n, const std::byte *v)=0
virtual void queue_families(std::size_t i, QueueFamily *p) const =0
virtual void poll_events() const =0
virtual void layers(Layer *p) const =0
virtual bool window_closed() const =0
virtual void set_swap_interval(int i)=0
virtual Version version() const =0
virtual void device_extensions(std::size_t i, Extension *p) const =0
static constexpr u32 TEXTURE_EXTENT
Definition: graphics.h:197
static const char * enum_str(DeviceInfo::Type t)
Definition: graphics.cpp:24
bool update_buffers(u32 vbo, u32 ebo, u64 voff, u64 eoff, u64 vn, u64 vsize, u64 en, u64 esize, void *data, auto &&vgen, auto &&egen)
Definition: graphics.h:304
virtual bool write_to_buffer(u32 b, u64 offset, u64 n, u64 size, void *data, void f(void *, void *, u64, u64))=0
virtual std::size_t n_extensions() const =0
virtual void extensions(Extension *p) const =0
virtual void resize(int w, int h)=0
virtual void set_camera_updated()=0
virtual std::size_t n_heaps(std::size_t i) const =0
virtual void get_keys(size_t n, int32_t *keys) const =0
virtual bool init_backend()=0
virtual SurfaceInfo surface_info() const =0
virtual std::size_t selected_device() const =0
virtual std::size_t n_queue_families(std::size_t i) const =0
virtual std::size_t n_layers() const =0
PresentMode
Definition: graphics.h:108
virtual std::size_t n_devices() const =0
virtual bool set_n_swap_chain_images(std::size_t n)=0
virtual bool set_n_frames(std::size_t n)=0
virtual bool set_buffer_capacity(u32 b, u64 size)=0
virtual void set_size_callback(void *data, size_callback_f f)=0
static constexpr u32 TEXTURE_MIP_LEVELS
Definition: graphics.h:200
Definition: graphics.h:97
vec3 color
Definition: graphics.h:97
vec3 pos
Definition: graphics.h:97
std::chrono::seconds s
Definition: timing.cpp:6
#define NNGN_VIRTUAL(x)
Definition: utils.h:27