From 428d2346eac6eefe1cb4258017c13e70cc332640 Mon Sep 17 00:00:00 2001 From: luboslenco Date: Wed, 9 Jul 2025 16:13:07 +0200 Subject: [PATCH] Vulkan fixes --- base/assets/shader_datas.arm | Bin 14896 -> 15646 bytes base/sources/backends/vulkan_gpu.c | 6 ++---- base/sources/ts/export_arm.ts | 6 ------ base/sources/ts/render_path_base.ts | 4 ++-- base/sources/ts/render_path_deferred.ts | 1 + base/sources/ts/render_path_preview.ts | 2 +- base/sources/ts/util_render.ts | 7 ++----- 7 files changed, 8 insertions(+), 18 deletions(-) diff --git a/base/assets/shader_datas.arm b/base/assets/shader_datas.arm index 623ad63058ae90f118f4d76d1f55e6c766d5fd67..51f92a5c68a7af368b18e40034157d20c17b7848 100644 GIT binary patch delta 61 zcmV-D0K)&Ube?*!oDP$m6%(_s4&ngimpl.readback_buffer_created = true; } - set_image_layout(render_target->impl.image, VK_IMAGE_ASPECT_COLOR_BIT, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL); + set_image_layout(render_target->impl.image, VK_IMAGE_ASPECT_COLOR_BIT, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL); VkBufferImageCopy region; region.bufferOffset = 0; @@ -1391,7 +1389,7 @@ void gpu_get_render_target_pixels(gpu_texture_t *render_target, uint8_t *data) { region.imageExtent.depth = 1; vkCmdCopyImageToBuffer(command_buffer, render_target->impl.image, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, render_target->impl.readback_buffer, 1, ®ion); - set_image_layout(render_target->impl.image, VK_IMAGE_ASPECT_COLOR_BIT, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL); + set_image_layout(render_target->impl.image, VK_IMAGE_ASPECT_COLOR_BIT, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL); gpu_flush(); diff --git a/base/sources/ts/export_arm.ts b/base/sources/ts/export_arm.ts index f27e23b7..d83b8d56 100644 --- a/base/sources/ts/export_arm.ts +++ b/base/sources/ts/export_arm.ts @@ -181,12 +181,6 @@ function export_arm_run_project() { draw_scaled_image(tex, -(256 * r - 256) / 2, 0, 256 * r, 256); draw_end(); - ///if arm_metal - // Flush command list - draw_begin(mesh_icon); - draw_end(); - ///end - let mesh_icon_pixels: buffer_t = gpu_get_texture_pixels(mesh_icon); let u8a: u8_array_t = mesh_icon_pixels; for (let i: i32 = 0; i < 256 * 256 * 4; ++i) { diff --git a/base/sources/ts/render_path_base.ts b/base/sources/ts/render_path_base.ts index 10914dbb..0f5ecc29 100644 --- a/base/sources/ts/render_path_base.ts +++ b/base/sources/ts/render_path_base.ts @@ -119,7 +119,7 @@ function render_path_base_is_cached(): bool { render_path_set_target(""); render_path_bind_target("last", "tex"); if (render_path_base_ssaa4()) { - render_path_draw_shader("shader_datas/supersample_resolve/supersample_resolve"); + render_path_draw_shader("shader_datas/supersample_resolve/supersample_resolveRGBA64"); } else { render_path_draw_shader("shader_datas/copy_pass/copy_pass"); @@ -329,7 +329,7 @@ function render_path_base_draw_taa(bufa: string, bufb: string) { render_path_bind_target(bufb, "tex"); if (render_path_base_ssaa4()) { - render_path_draw_shader("shader_datas/supersample_resolve/supersample_resolve"); + render_path_draw_shader("shader_datas/supersample_resolve/supersample_resolveRGBA64"); } else { render_path_draw_shader("shader_datas/copy_pass/copy_pass"); diff --git a/base/sources/ts/render_path_deferred.ts b/base/sources/ts/render_path_deferred.ts index 0539db23..67208d39 100644 --- a/base/sources/ts/render_path_deferred.ts +++ b/base/sources/ts/render_path_deferred.ts @@ -113,6 +113,7 @@ function render_path_deferred_init() { render_path_load_shader("shader_datas/copy_pass/copyR8_pass"); render_path_load_shader("shader_datas/taa_pass/taa_pass"); render_path_load_shader("shader_datas/supersample_resolve/supersample_resolve"); + render_path_load_shader("shader_datas/supersample_resolve/supersample_resolveRGBA64"); render_path_paint_init(); diff --git a/base/sources/ts/render_path_preview.ts b/base/sources/ts/render_path_preview.ts index daaeab1d..e9f8ad4e 100644 --- a/base/sources/ts/render_path_preview.ts +++ b/base/sources/ts/render_path_preview.ts @@ -104,7 +104,7 @@ function render_path_preview_commands_preview() { render_path_set_target("texpreview_icon"); render_path_bind_target("texpreview", "tex"); - render_path_draw_shader("shader_datas/supersample_resolve/supersample_resolve"); + render_path_draw_shader("shader_datas/supersample_resolve/supersample_resolveRGBA64"); } function render_path_preview_commands_decal() { diff --git a/base/sources/ts/util_render.ts b/base/sources/ts/util_render.ts index 10a5e58d..a7ec384c 100644 --- a/base/sources/ts/util_render.ts +++ b/base/sources/ts/util_render.ts @@ -370,7 +370,7 @@ function util_render_make_brush_preview() { draw_set_pipeline(null); draw_end(); - // Scale image preview down to to icon + // Scale image preview down to icon let texpreview: render_target_t = map_get(render_path_render_targets, "texpreview"); texpreview._image = context_raw.brush.image; let texpreview_icon: render_target_t = map_get(render_path_render_targets, "texpreview_icon"); @@ -424,10 +424,7 @@ function util_render_pick_pos_nor_tex() { render_path_paint_set_plane_mesh(); } render_path_paint_commands_paint(false); - ///if arm_metal - // Flush command list - render_path_paint_commands_paint(false); - ///end + if (context_raw.paint2d) { render_path_paint_restore_plane_mesh(); }