Vulkan fixes

This commit is contained in:
luboslenco
2025-06-11 11:36:22 +02:00
parent de718c3586
commit d7a5931b73
3 changed files with 305 additions and 756 deletions
File diff suppressed because it is too large Load Diff
+3 -34
View File
@@ -6,12 +6,7 @@
#include <vulkan/vulkan.h>
#include <vulkan/vulkan_core.h>
#define IRON_INTERNAL_NAMED_NUMBER_COUNT 32
typedef struct {
char name[256];
uint32_t number;
} iron_internal_named_number;
#define MAXIMUM_WINDOWS 1
struct vk_funs {
PFN_vkGetPhysicalDeviceSurfaceSupportKHR fpGetPhysicalDeviceSurfaceSupportKHR;
@@ -48,41 +43,25 @@ struct vk_window {
uint32_t image_count;
VkImage *images;
VkImageView *views;
VkFramebuffer *framebuffers;
VkRenderPass framebuffer_render_pass;
VkRenderPass rendertarget_render_pass;
VkRenderPass rendertarget_render_pass_with_depth;
struct vk_depth depth;
};
#define MAXIMUM_WINDOWS 1
struct vk_context {
VkInstance instance;
VkPhysicalDevice gpu;
VkDevice device;
VkPhysicalDeviceMemoryProperties memory_properties;
VkCommandBuffer setup_cmd;
VkCommandPool cmd_pool;
VkQueue queue;
struct vk_window windows[MAXIMUM_WINDOWS];
// buffer hack
VkBuffer *vertex_uniform_buffer;
VkBuffer *uniform_buffer;
#ifdef VALIDATE
bool validation_found;
VkDebugUtilsMessengerEXT debug_messenger;
#endif
};
extern struct vk_funs vk;
extern struct vk_context vk_ctx;
extern void flush_init_cmd(void);
extern void reuse_descriptor_sets(void);
typedef struct {
int _indexCount;
VkCommandBuffer _buffer;
@@ -93,17 +72,9 @@ typedef struct gpu_pipeline_impl {
const char **textures;
int *textureValues;
int textureCount;
VkPipeline framebuffer_pipeline;
VkPipeline rendertarget_pipeline;
VkPipeline pipeline;
VkShaderModule vert_shader_module;
VkShaderModule frag_shader_module;
iron_internal_named_number vertexLocations[IRON_INTERNAL_NAMED_NUMBER_COUNT];
iron_internal_named_number vertexTextureBindings[IRON_INTERNAL_NAMED_NUMBER_COUNT];
iron_internal_named_number fragmentTextureBindings[IRON_INTERNAL_NAMED_NUMBER_COUNT];
iron_internal_named_number vertexOffsets[IRON_INTERNAL_NAMED_NUMBER_COUNT];
VkPipelineLayout pipeline_layout;
} gpu_pipeline_impl_t;
@@ -131,7 +102,6 @@ typedef struct {
VkImageView depthView;
int depthBufferBits;
VkFramebuffer framebuffer;
VkFormat format;
VkBuffer readback_buffer;
@@ -140,7 +110,6 @@ typedef struct {
int stage;
int stage_depth;
} gpu_texture_impl_t;
typedef struct {
+4 -3
View File
@@ -351,7 +351,8 @@ function render_path_base_draw_taa(bufa: string, bufb: string) {
function render_path_base_draw_gbuffer() {
render_path_set_target("gbuffer0", null, clear_flag_t.DEPTH, 0, 1.0); // Only clear gbuffer0
let additional: string[] = ["gbuffer1", "gbuffer2"];
// let additional: string[] = ["gbuffer1", "gbuffer2"];
let additional: string[] = ["gbuffer1"];
render_path_set_target("gbuffer0", additional);
render_path_paint_bind_layers();
render_path_draw_meshes("mesh");
@@ -362,7 +363,7 @@ function render_path_base_draw_gbuffer() {
let ping: string = i % 2 == 1 ? "_copy" : "";
let pong: string = i % 2 == 1 ? "" : "_copy";
if (i == make_mesh_layer_pass_count - 1) {
render_path_set_target("gbuffer2" + ping, null, clear_flag_t.COLOR, 0xff000000);
// render_path_set_target("gbuffer2" + ping, null, clear_flag_t.COLOR, 0xff000000);
}
let g1ping: string = "gbuffer1" + ping;
let g2ping: string = "gbuffer2" + ping;
@@ -370,7 +371,7 @@ function render_path_base_draw_gbuffer() {
render_path_set_target("gbuffer0" + ping, additional);
render_path_bind_target("gbuffer0" + pong, "gbuffer0");
render_path_bind_target("gbuffer1" + pong, "gbuffer1");
render_path_bind_target("gbuffer2" + pong, "gbuffer2");
// render_path_bind_target("gbuffer2" + pong, "gbuffer2");
render_path_paint_bind_layers();
render_path_draw_meshes("mesh" + i);
render_path_paint_unbind_layers();