16 #ifndef VULKAN_COMMON_H__ 17 #define VULKAN_COMMON_H__ 20 #include "../../config.h" 23 #define VULKAN_DESCRIPTOR_MANAGER_BLOCK_SETS 16 24 #define VULKAN_MAX_DESCRIPTOR_POOL_SIZES 16 25 #define VULKAN_BUFFER_BLOCK_SIZE (64 * 1024) 27 #define VULKAN_MAX_SWAPCHAIN_IMAGES 8 29 #define VULKAN_DIRTY_DYNAMIC_BIT 0x0001 45 #include "../../driver.h" 46 #include "../../retroarch.h" 47 #include "../../verbosity.h" 48 #include "../font_driver.h" 49 #include "../video_driver.h" 50 #include "../drivers_shader/shader_vulkan.h" 51 #include "../../libretro-common/include/gfx/math/matrix_4x4.h" 52 #include "../include/vulkan/vulkan.h" 53 #include "../../libretro-common/include/gfx/scaler/scaler.h" 54 #include "../../libretro-common/include/libretro_vulkan.h" 127 VkDebugReportCallbackEXT debug_callback;
148 VkDevice
device, VkSwapchainKHR swapchain);
515 RARCH_ERR(
"[Vulkan]: Unknown format.\n");
522 float tex_x,
float tex_y,
float tex_width,
float tex_height,
526 static const float strip[2 * 6] = {
535 for (i = 0; i < 6; i++)
537 pv[i].
x =
x + strip[2 * i + 0] *
width;
538 pv[i].
y =
y + strip[2 * i + 1] *
height;
539 pv[i].
tex_x = tex_x + strip[2 * i + 0] * tex_width;
540 pv[i].
tex_y = tex_y + strip[2 * i + 1] * tex_height;
573 bool destroy_surface);
577 void *display,
void *surface,
GLsizeiptr const GLvoid GLenum usage
Definition: glext.h:6559
Definition: vulkan_core.h:525
bool acquired
Definition: vulkan_common.h:140
struct scaler_ctx scaler
Definition: vulkan_common.h:356
size_t offset
Definition: vulkan_common.h:203
VkFramebuffer framebuffer
Definition: vulkan_common.h:192
#define VULKAN_MAX_SWAPCHAIN_IMAGES
Definition: vulkan_common.h:27
VkSampler nearest
Definition: vulkan_common.h:399
scond_t * cond
Definition: vulkan_common.h:137
VkDevice device
Definition: vulkan_common.h:111
bool should_resize
Definition: vulkan_common.h:325
unsigned monitor_index
Definition: vulkan_common.h:173
bool quitting
Definition: vulkan_common.h:324
VkSampler mipmap_linear
Definition: vulkan_common.h:401
unsigned vp_out_height
Definition: vulkan_common.h:328
size_t uniform_size
Definition: vulkan_common.h:311
unsigned rotation
Definition: vulkan_common.h:329
void vulkan_transition_texture(vk_t *vk, VkCommandBuffer cmd, struct vk_texture *texture)
Definition: vulkan_common.c:942
VkBufferUsageFlags usage
Definition: vulkan_common.h:240
Definition: matrix_4x4.h:40
VkPhysicalDeviceProperties gpu_properties
Definition: vulkan_common.h:114
VkResult result
Definition: vulkan_common.h:144
struct vk_texture texture_optimal
Definition: vulkan_common.h:290
VkFlags VkBufferUsageFlags
Definition: vulkan_core.h:1447
#define const
Definition: zconf.h:217
unsigned count
Definition: vulkan_common.h:279
#define INLINE
Definition: retro_inline.h:35
VkPipeline pipeline
Definition: vulkan_common.h:301
float b
Definition: vulkan_common.h:178
Definition: vulkan_common.h:299
bool valid_semaphore
Definition: vulkan_common.h:407
slock_t * lock
Definition: vulkan_common.h:136
unsigned num_sizes
Definition: vulkan_common.h:283
VkPipeline pipeline
Definition: vulkan_common.h:429
VkCommandPool cmd_pool
Definition: vulkan_common.h:295
VkCommandBuffer cmd
Definition: vulkan_common.h:348
Definition: vulkan_core.h:2428
#define RETRO_BEGIN_DECLS
Definition: retro_common_api.h:41
VkSampler sampler
Definition: vulkan_common.h:303
Definition: vulkan_common.h:176
unsigned last_height
Definition: vulkan_common.h:411
unsigned height
Definition: vulkan_common.h:202
bool vulkan_surface_create(gfx_ctx_vulkan_data_t *vk, enum vulkan_wsi_type type, void *display, void *surface, unsigned width, unsigned height, unsigned swap_interval)
Definition: vulkan_common.c:2285
struct vk_buffer_node * next
Definition: vulkan_common.h:232
bool swap_interval_emulation_lock
Definition: vulkan_common.h:98
struct vk_image backbuffer
Definition: vulkan_common.h:288
struct vk_descriptor_pool * head
Definition: vulkan_common.h:277
Definition: vulkan_common.h:131
unsigned tex_w
Definition: vulkan_common.h:327
Definition: vulkan_common.h:81
void vulkan_buffer_chain_discard(struct vk_buffer_chain *chain)
Definition: vulkan_common.c:1403
void vulkan_transfer_image_ownership(VkCommandBuffer cmd, VkImage image, VkImageLayout layout, VkPipelineStageFlags src_stages, VkPipelineStageFlags dst_stages, uint32_t src_queue_family, uint32_t dst_queue_family)
Definition: vulkan_common.c:306
struct vk_buffer_chain ubo
Definition: vulkan_common.h:292
void vulkan_acquire_next_image(gfx_ctx_vulkan_data_t *vk)
Definition: vulkan_common.c:2668
Definition: rthreads.c:88
Definition: vulkan_common.h:73
bool fullscreen
Definition: vulkan_common.h:166
VkDeviceSize alignment
Definition: vulkan_common.h:238
unsigned vp_out_width
Definition: vulkan_common.h:328
bool dirty[VULKAN_MAX_SWAPCHAIN_IMAGES]
Definition: vulkan_common.h:393
uint32_t memory_type
Definition: vulkan_common.h:201
const gfx_ctx_driver_t * ctx_driver
Definition: vulkan_common.h:336
unsigned width
Definition: vulkan_common.h:202
VkDeviceSize offset
Definition: vulkan_common.h:249
unsigned tex_h
Definition: vulkan_common.h:327
GLenum GLint * range
Definition: glext.h:8206
void vulkan_image_layout_transition_levels(VkCommandBuffer cmd, VkImage image, uint32_t levels, VkImageLayout old_layout, VkImageLayout new_layout, VkAccessFlags src_access, VkAccessFlags dst_access, VkPipelineStageFlags src_stages, VkPipelineStageFlags dst_stages)
Definition: vulkan_common.c:1177
bool need_manual_cache_management
Definition: vulkan_common.h:199
VkImageView view
Definition: vulkan_common.h:430
GLsizeiptr size
Definition: glext.h:6559
VkDevice device
Definition: vulkan_common.h:134
static INLINE void vulkan_write_quad_vbo(struct vk_vertex *pv, float x, float y, float width, float height, float tex_x, float tex_y, float tex_width, float tex_height, const struct vk_color *color)
Definition: vulkan_common.h:520
VkQueue queue
Definition: vulkan_common.h:112
float a
Definition: vulkan_common.h:178
Definition: vulkan_common.h:82
VkImage swapchain_images[VULKAN_MAX_SWAPCHAIN_IMAGES]
Definition: vulkan_common.h:117
Definition: vulkan_common.h:86
Definition: vulkan_core.h:485
Definition: vulkan_common.h:70
static unsigned swap_interval
Definition: config.def.h:183
struct vk::@214 pipelines
VkBuffer buffer
Definition: vulkan_common.h:248
Definition: vulkan_common.h:169
VkDescriptorSet sets[VULKAN_DESCRIPTOR_MANAGER_BLOCK_SETS]
Definition: vulkan_common.h:271
VkBuffer buffer
Definition: vulkan_common.h:212
VkCommandBuffer * cmd
Definition: vulkan_common.h:421
slock_t * queue_lock
Definition: vulkan_common.h:123
GLuint GLenum swizzle
Definition: glext.h:10418
bool has_pending_request
Definition: vulkan_common.h:143
VkDescriptorSetLayout set_layout
Definition: vulkan_common.h:282
Definition: vulkan_common.h:93
VkSwapchainKHR swapchain
Definition: vulkan_common.h:135
VkFormat
Definition: vulkan_core.h:480
bool default_smooth
Definition: vulkan_common.h:198
Definition: vulkan_common.h:76
#define VULKAN_MAX_DESCRIPTOR_POOL_SIZES
Definition: vulkan_common.h:24
const VkSemaphore * semaphores
Definition: vulkan_common.h:418
unsigned last_valid_index
Definition: vulkan_common.h:331
VkDeviceSize memory_size
Definition: vulkan_common.h:216
struct vk_texture default_texture
Definition: vulkan_common.h:345
VkPipelineStageFlags * wait_dst_stages
Definition: vulkan_common.h:420
void * mapped
Definition: vulkan_common.h:226
VkPipelineCache cache
Definition: vulkan_common.h:375
typedefRETRO_BEGIN_DECLS struct sthread sthread_t
Definition: rthreads.h:35
struct vk_buffer vulkan_create_buffer(const struct vulkan_context *context, size_t size, VkBufferUsageFlags usage)
Definition: vulkan_common.c:1205
Definition: vulkan_core.h:2123
uint32_t num_semaphores
Definition: vulkan_common.h:412
struct vk_per_frame * chain
Definition: vulkan_common.h:343
const math_matrix_4x4 * mvp
Definition: vulkan_common.h:304
uint64_t dirty
Definition: vulkan_common.h:426
VkPhysicalDeviceMemoryProperties memory_properties
Definition: vulkan_common.h:115
Definition: libretro_vulkan.h:139
bool has_acquired_swapchain
Definition: vulkan_common.h:99
VkSwapchainKHR swapchain
Definition: vulkan_common.h:161
bool vulkan_buffer_chain_alloc(const struct vulkan_context *context, struct vk_buffer_chain *chain, size_t size, struct vk_buffer_range *range)
Definition: vulkan_common.c:1409
VkSemaphore swapchain_semaphores[VULKAN_MAX_SWAPCHAIN_IMAGES]
Definition: vulkan_common.h:120
bool vulkan_emulated_mailbox_init(struct vulkan_emulated_mailbox *mailbox, VkDevice device, VkSwapchainKHR swapchain)
Definition: vulkan_common.c:247
size_t stride
Definition: vulkan_common.h:204
struct video_viewport vp
Definition: vulkan_common.h:342
struct vk_descriptor_pool * current
Definition: vulkan_common.h:278
VkImageLayout
Definition: vulkan_core.h:798
bool dead
Definition: vulkan_common.h:142
void vulkan_descriptor_manager_restart(struct vk_descriptor_manager *manager)
Definition: vulkan_common.c:1303
sthread_t * thread
Definition: vulkan_common.h:133
void vulkan_destroy_descriptor_manager(VkDevice device, struct vk_descriptor_manager *manager)
Definition: vulkan_common.c:1327
VkFence swapchain_fences[VULKAN_MAX_SWAPCHAIN_IMAGES]
Definition: vulkan_common.h:118
VkDescriptorSet vulkan_descriptor_manager_alloc(VkDevice device, struct vk_descriptor_manager *manager)
Definition: vulkan_common.c:1282
video_info_t video
Definition: vulkan_common.h:334
VkDescriptorSetLayout set_layout
Definition: vulkan_common.h:373
struct vk_texture * texture
Definition: vulkan_common.h:314
GLenum type
Definition: glext.h:6233
bool enable
Definition: vulkan_common.h:362
uint32_t num_cmd
Definition: vulkan_common.h:413
bool created_new_swapchain
Definition: vulkan_common.h:156
float g
Definition: vulkan_common.h:178
VkResult vulkan_emulated_mailbox_acquire_next_image(struct vulkan_emulated_mailbox *mailbox, unsigned *index)
Definition: vulkan_common.c:140
const void * uniform
Definition: vulkan_common.h:312
VkPhysicalDevice gpu
Definition: vulkan_common.h:110
bool fullscreen
Definition: vulkan_common.h:323
ubyte cmd
Definition: wiiuse_internal.h:319
VkDeviceMemory memory
Definition: vulkan_common.h:224
Definition: vulkan_common.h:84
void vulkan_sync_texture_to_gpu(vk_t *vk, const struct vk_texture *tex)
Definition: vulkan_common.c:430
bool request_acquire
Definition: vulkan_common.h:141
Definition: vulkan_common.h:85
float x
Definition: vulkan_common.h:183
bool keep_aspect
Definition: vulkan_common.h:322
bool mipmap
Definition: vulkan_common.h:200
Definition: vulkan_common.h:88
const struct retro_vulkan_image * image
Definition: vulkan_common.h:417
float r
Definition: vulkan_common.h:178
bool pending
Definition: vulkan_common.h:354
Definition: vulkan_common.h:83
void vulkan_destroy_texture(VkDevice device, struct vk_texture *tex)
Definition: vulkan_common.c:880
Definition: vulkan_core.h:1869
Definition: vulkan_common.h:195
void vulkan_draw_quad(vk_t *vk, const struct vk_draw_quad *quad)
Definition: vulkan_common.c:1061
math_matrix_4x4 mvp
Definition: vulkan_common.h:339
bool invalid_swapchain
Definition: vulkan_common.h:95
struct vk_buffer_node * current
Definition: vulkan_common.h:242
Definition: vulkan_core.h:490
Definition: vulkan_common.h:90
Definition: vulkan_core.h:2245
struct vk_texture * images
Definition: vulkan_common.h:365
void vulkan_map_persistent_texture(VkDevice device, struct vk_texture *texture)
Definition: vulkan_common.c:331
struct vk_buffer_chain vulkan_buffer_chain_init(VkDeviceSize block_size, VkDeviceSize alignment, VkBufferUsageFlags usage)
Definition: vulkan_common.c:1386
VkBuffer buffer
Definition: vulkan_common.h:223
struct vk_texture vulkan_create_texture(vk_t *vk, struct vk_texture *old, unsigned width, unsigned height, VkFormat format, const void *initial, const VkComponentMapping *swizzle, enum vk_texture_type type)
Definition: vulkan_common.c:466
Definition: vulkan_core.h:2226
VkInstance instance
Definition: vulkan_common.h:109
bool use_scissor
Definition: vulkan_common.h:428
static INLINE unsigned vulkan_format_to_bpp(VkFormat format)
Definition: vulkan_common.h:499
VkPipeline font
Definition: vulkan_common.h:372
VkImage image
Definition: vulkan_common.h:209
Definition: vulkan_common.h:61
GLenum GLsizei GLenum GLenum const GLvoid * image
Definition: glext.h:6305
struct vk_descriptor_manager vulkan_create_descriptor_manager(VkDevice device, const VkDescriptorPoolSize *sizes, unsigned num_sizes, VkDescriptorSetLayout set_layout)
Definition: vulkan_common.c:1309
Definition: video_driver.h:513
Definition: libretro_vulkan.h:32
float y
Definition: vulkan_common.h:183
VkFormat tex_fmt
Definition: vulkan_common.h:338
GLint GLint GLint GLint GLint GLint y
Definition: glext.h:6295
Definition: video_driver.h:332
VkPipelineLayout layout
Definition: vulkan_common.h:374
void * filter_chain
Definition: vulkan_common.h:435
bool need_new_swapchain
Definition: vulkan_common.h:155
struct vk_texture staging[VULKAN_MAX_SWAPCHAIN_IMAGES]
Definition: vulkan_common.h:357
struct vk_buffer_chain vbo
Definition: vulkan_common.h:291
unsigned last_index
Definition: vulkan_common.h:389
Definition: vulkan_common.h:268
Definition: vulkan_common.h:65
VkDeviceSize block_size
Definition: vulkan_common.h:237
bool emulating_mailbox
Definition: vulkan_common.h:158
GLint GLint GLint GLint GLint x
Definition: glext.h:6295
Definition: rthreads.c:106
unsigned width
Definition: vulkan_common.h:171
VkImage image
Definition: vulkan_common.h:190
bool streamed
Definition: vulkan_common.h:355
VkSampler mipmap_nearest
Definition: vulkan_common.h:400
unsigned swap_interval
Definition: vulkan_common.h:103
VkImageView view
Definition: vulkan_common.h:191
Definition: vulkan_common.h:89
GLsizei levels
Definition: glext.h:8551
float alpha
Definition: vulkan_common.h:390
VkResult
Definition: vulkan_core.h:124
enum vk_texture_type type
Definition: vulkan_common.h:197
unsigned num_swapchain_images
Definition: vulkan_common.h:330
Definition: vulkan_core.h:484
unsigned vertices
Definition: vulkan_common.h:310
VkSampler sampler
Definition: vulkan_common.h:431
bool blend
Definition: vulkan_common.h:380
vulkan_context_t * context
Definition: vulkan_common.h:333
const GLuint * pipelines
Definition: glext.h:8291
vk_texture_type
Definition: vulkan_common.h:58
VkFormat format
Definition: vulkan_common.h:214
struct retro_hw_render_interface_vulkan iface
Definition: vulkan_common.h:416
#define RETRO_END_DECLS
Definition: retro_common_api.h:42
void(* retro_vulkan_destroy_device_t)(void)
Definition: libretro_vulkan.h:79
void vulkan_present(gfx_ctx_vulkan_data_t *vk, unsigned index)
Definition: vulkan_common.c:2524
void * mapped
Definition: vulkan_common.h:207
uint32_t src_queue_family
Definition: vulkan_common.h:414
VkImageLayout layout
Definition: vulkan_common.h:218
Definition: vulkan_common.h:319
struct vk_texture blank_texture
Definition: vulkan_common.h:382
GLuint index
Definition: glext.h:6671
void vulkan_draw_triangles(vk_t *vk, const struct vk_draw_triangles *call)
Definition: vulkan_common.c:1002
VkImageView view
Definition: vulkan_common.h:210
struct vk_color color
Definition: vulkan_common.h:185
struct vulkan_emulated_mailbox mailbox
Definition: vulkan_common.h:163
float tex_y
Definition: vulkan_common.h:184
uint32_t num_swapchain_images
Definition: vulkan_common.h:106
bool full_screen
Definition: vulkan_common.h:363
Definition: vulkan_core.h:1898
bool swapchain_fences_signalled[VULKAN_MAX_SWAPCHAIN_IMAGES]
Definition: vulkan_common.h:119
VkPipeline pipeline
Definition: vulkan_common.h:315
struct vk_vertex * vertex
Definition: vulkan_common.h:366
Definition: video_driver.h:686
float tex_x
Definition: vulkan_common.h:184
math_matrix_4x4 mvp_no_rot
Definition: vulkan_common.h:339
VkFlags VkPipelineStageFlags
Definition: vulkan_core.h:1360
VkCommandBuffer cmd
Definition: vulkan_common.h:296
size_t size
Definition: vulkan_common.h:205
VkRect2D scissor
Definition: vulkan_common.h:427
GLuint color
Definition: glext.h:6883
bool vulkan_create_swapchain(gfx_ctx_vulkan_data_t *vk, unsigned width, unsigned height, unsigned swap_interval)
Definition: vulkan_common.c:2781
void vulkan_context_destroy(gfx_ctx_vulkan_data_t *vk, bool destroy_surface)
Definition: vulkan_common.c:2569
VkViewport vk_vp
Definition: vulkan_common.h:340
Definition: vulkan_common.h:229
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
Definition: glext.h:6293
const GLuint * textures
Definition: glext.h:9001
bool vulkan_context_init(gfx_ctx_vulkan_data_t *vk, enum vulkan_wsi_type type)
Definition: vulkan_common.c:1854
void vulkan_destroy_buffer(VkDevice device, struct vk_buffer *buffer)
Definition: vulkan_common.c:1237
VkSurfaceKHR vk_surface
Definition: vulkan_common.h:160
GLint GLint GLsizei width
Definition: glext.h:6293
Definition: vulkan_common.h:188
bool emulate_mailbox
Definition: vulkan_common.h:157
#define VULKAN_DESCRIPTOR_MANAGER_BLOCK_SETS
Definition: vulkan_common.h:23
struct gfx_ctx_vulkan_data gfx_ctx_vulkan_data_t
struct vk_descriptor_manager descriptor_manager
Definition: vulkan_common.h:293
uint32_t graphics_queue_index
Definition: vulkan_common.h:105
void vulkan_image_layout_transition(vk_t *vk, VkCommandBuffer cmd, VkImage image, VkImageLayout old_layout, VkImageLayout new_layout, VkAccessFlags srcAccess, VkAccessFlags dstAccess, VkPipelineStageFlags srcStages, VkPipelineStageFlags dstStages)
Definition: vulkan_common.c:1144
uint32_t current_swapchain_index
Definition: vulkan_common.h:107
struct vk_buffer_node * head
Definition: vulkan_common.h:241
void vulkan_copy_staging_to_dynamic(vk_t *vk, VkCommandBuffer cmd, struct vk_texture *dynamic, struct vk_texture *staging)
Definition: vulkan_common.c:339
const struct vk_buffer_range * vbo
Definition: vulkan_common.h:313
Definition: vulkan_common.h:87
struct vk_per_frame swapchain[VULKAN_MAX_SWAPCHAIN_IMAGES]
Definition: vulkan_common.h:344
Definition: metal_common.m:516
GLuint GLsizei const GLuint const GLintptr const GLsizeiptr * sizes
Definition: glsym_gl.h:634
VkFlags VkAccessFlags
Definition: vulkan_core.h:1561
Definition: vulkan_common.h:286
VkSampler linear
Definition: vulkan_common.h:398
VkDeviceMemory memory
Definition: vulkan_common.h:211
Definition: vulkan_common.h:153
VkRenderPass render_pass
Definition: vulkan_common.h:341
unsigned swapchain_height
Definition: vulkan_common.h:102
unsigned capacity_cmd
Definition: vulkan_common.h:409
VkDeviceSize offset
Definition: vulkan_common.h:239
VkResult vulkan_emulated_mailbox_acquire_next_image_blocking(struct vulkan_emulated_mailbox *mailbox, unsigned *index)
Definition: vulkan_common.c:171
unsigned index
Definition: vulkan_common.h:139
VkDeviceSize size
Definition: vulkan_common.h:225
Definition: vulkan_common.h:245
VkPipeline alpha_blend
Definition: vulkan_common.h:371
bool swapchain_is_srgb
Definition: vulkan_common.h:97
unsigned count
Definition: vulkan_common.h:364
VkSampler sampler
Definition: vulkan_common.h:316
uint32_t vulkan_find_memory_type_fallback(const VkPhysicalDeviceMemoryProperties *mem_props, uint32_t device_reqs, uint32_t host_reqs_first, uint32_t host_reqs_second)
Definition: vulkan_common.c:283
Definition: vulkan_common.h:221
struct vk_descriptor_pool * next
Definition: vulkan_common.h:272
VkFormat swapchain_format
Definition: vulkan_common.h:121
void * ctx_data
Definition: vulkan_common.h:335
unsigned height
Definition: vulkan_common.h:172
Definition: video4linux2.c:51
Definition: vulkan_common.h:181
struct vulkan_context vulkan_context_t
uint32_t vulkan_find_memory_type(const VkPhysicalDeviceMemoryProperties *mem_props, uint32_t device_reqs, uint32_t host_reqs)
Definition: vulkan_common.c:267
vulkan_context_t context
Definition: vulkan_common.h:159
uint8_t * data
Definition: vulkan_common.h:247
void vulkan_sync_texture_to_cpu(vk_t *vk, const struct vk_texture *tex)
Definition: vulkan_common.c:442
Definition: vulkan_core.h:483
vulkan_wsi_type
Definition: vulkan_common.h:79
bool vsync
Definition: vulkan_common.h:321
struct nk_device device
Definition: nk_common.c:44
uint64_t VkDeviceSize
Definition: vulkan_core.h:70
unsigned __int64 uint64_t
Definition: stdint.h:136
unsigned char uint8_t
Definition: stdint.h:124
retro_vulkan_destroy_device_t destroy_device
Definition: vulkan_common.h:124
unsigned int uint32_t
Definition: stdint.h:126
any call(F fn, Args &&... args)
Definition: peglib.h:337
VkCommandPool staging_pool
Definition: vulkan_common.h:350
Definition: vulkan_common.h:308
void vulkan_buffer_chain_free(VkDevice device, struct vk_buffer_chain *chain)
Definition: vulkan_common.c:1453
Definition: vulkan_common.h:275
unsigned last_width
Definition: vulkan_common.h:410
void vulkan_emulated_mailbox_deinit(struct vulkan_emulated_mailbox *mailbox)
Definition: vulkan_common.c:121
VkSemaphore signal_semaphore
Definition: vulkan_common.h:419
GLint GLint GLsizei GLsizei height
Definition: glext.h:6293
void RARCH_ERR(const char *fmt,...)
Definition: verbosity.c:313
struct vk_texture * texture
Definition: vulkan_common.h:302
struct vk_texture textures_optimal[VULKAN_MAX_SWAPCHAIN_IMAGES]
Definition: vulkan_common.h:392
Definition: vulkan_common.h:235
unsigned swapchain_width
Definition: vulkan_common.h:101
VkDescriptorPool pool
Definition: vulkan_common.h:270