Vulkan fixes
This commit is contained in:
+298
-719
File diff suppressed because it is too large
Load Diff
@@ -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 {
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user