diff --git a/gfx/common/vulkan_common.c b/gfx/common/vulkan_common.c index 5774a208ee..e1e5e1abed 100644 --- a/gfx/common/vulkan_common.c +++ b/gfx/common/vulkan_common.c @@ -2324,6 +2324,7 @@ bool vulkan_create_swapchain(gfx_ctx_vulkan_data_t *vk, vkGetPhysicalDeviceSurfaceFormatsKHR(vk->context.gpu, vk->vk_surface, &format_count, formats); + format.format = VK_FORMAT_UNDEFINED; if (format_count == 1 && formats[0].format == VK_FORMAT_UNDEFINED) { format = formats[0]; @@ -2337,7 +2338,19 @@ bool vulkan_create_swapchain(gfx_ctx_vulkan_data_t *vk, return false; } - format = formats[0]; + for (i = 0; i < format_count; i++) + { + if ( + formats[i].format == VK_FORMAT_R8G8B8A8_UNORM || + formats[i].format == VK_FORMAT_B8G8R8A8_UNORM || + formats[i].format == VK_FORMAT_A8B8G8R8_UNORM_PACK32) + { + format = formats[i]; + } + } + + if (format.format == VK_FORMAT_UNDEFINED) + format = formats[0]; } if (surface_properties.currentExtent.width == -1) diff --git a/gfx/common/vulkan_common.h b/gfx/common/vulkan_common.h index f183020ca2..29d2abf918 100644 --- a/gfx/common/vulkan_common.h +++ b/gfx/common/vulkan_common.h @@ -331,7 +331,7 @@ typedef struct vk struct { bool blend; - VkPipeline pipelines[8]; + VkPipeline pipelines[5 * 2]; struct vk_texture blank_texture; } display; diff --git a/gfx/drivers/vulkan.c b/gfx/drivers/vulkan.c index f4bcbc418b..e4e0964ee7 100644 --- a/gfx/drivers/vulkan.c +++ b/gfx/drivers/vulkan.c @@ -225,6 +225,10 @@ static void vulkan_init_pipelines( #include "vulkan_shaders/pipeline_ribbon_simple.frag.inc" ; + static const uint32_t pipeline_snow_simple_frag[] = +#include "vulkan_shaders/pipeline_snow_simple.frag.inc" + ; + unsigned i; VkPipelineInputAssemblyStateCreateInfo input_assembly = { VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO }; @@ -390,17 +394,28 @@ static void vulkan_init_pipelines( vkDestroyShaderModule(vk->context->device, shader_stages[1].module, NULL); /* Other menu pipelines. */ - for (i = 0; i < 4; i++) + for (i = 0; i < ARRAY_SIZE(vk->display.pipelines) - 4; i++) { - if (i & 2) + switch (i >> 1) { - module_info.codeSize = sizeof(pipeline_ribbon_simple_vert); - module_info.pCode = pipeline_ribbon_simple_vert; - } - else - { - module_info.codeSize = sizeof(pipeline_ribbon_vert); - module_info.pCode = pipeline_ribbon_vert; + case 0: + module_info.codeSize = sizeof(pipeline_ribbon_vert); + module_info.pCode = pipeline_ribbon_vert; + break; + + case 1: + module_info.codeSize = sizeof(pipeline_ribbon_simple_vert); + module_info.pCode = pipeline_ribbon_simple_vert; + break; + + case 2: + module_info.codeSize = sizeof(alpha_blend_vert); + module_info.pCode = alpha_blend_vert; + break; + + default: + retro_assert(0 && "No shader for menu pipeline."); + break; } shader_stages[0].stage = VK_SHADER_STAGE_VERTEX_BIT; @@ -408,15 +423,26 @@ static void vulkan_init_pipelines( vkCreateShaderModule(vk->context->device, &module_info, NULL, &shader_stages[0].module); - if (i & 2) + switch (i >> 1) { - module_info.codeSize = sizeof(pipeline_ribbon_simple_frag); - module_info.pCode = pipeline_ribbon_simple_frag; - } - else - { - module_info.codeSize = sizeof(pipeline_ribbon_frag); - module_info.pCode = pipeline_ribbon_frag; + case 0: + module_info.codeSize = sizeof(pipeline_ribbon_frag); + module_info.pCode = pipeline_ribbon_frag; + break; + + case 1: + module_info.codeSize = sizeof(pipeline_ribbon_simple_frag); + module_info.pCode = pipeline_ribbon_simple_frag; + break; + + case 2: + module_info.codeSize = sizeof(pipeline_snow_simple_frag); + module_info.pCode = pipeline_snow_simple_frag; + break; + + default: + retro_assert(0 && "No shader for menu pipeline."); + break; } shader_stages[1].stage = VK_SHADER_STAGE_FRAGMENT_BIT; @@ -639,7 +665,7 @@ static void vulkan_deinit_pipelines(vk_t *vk) vkDestroyPipeline(vk->context->device, vk->pipelines.font, NULL); - for (i = 0; i < 8; i++) + for (i = 0; i < ARRAY_SIZE(vk->display.pipelines); i++) vkDestroyPipeline(vk->context->device, vk->display.pipelines[i], NULL); } @@ -1524,7 +1550,6 @@ static bool vulkan_frame(void *data, const void *frame, unsigned pitch, const char *msg, video_frame_info_t *video_info) { VkSemaphore signal_semaphores[2]; - VkClearValue clear_value; vk_t *vk = (vk_t*)data; struct vk_per_frame *chain = NULL; static struct retro_perf_counter frame_run = {0}; @@ -1537,6 +1562,7 @@ static bool vulkan_frame(void *data, const void *frame, bool waits_for_semaphores = false; unsigned width = video_info->width; unsigned height = video_info->height; + VkClearValue clear_color; VkCommandBufferBeginInfo begin_info = { VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO }; @@ -1711,16 +1737,17 @@ static bool vulkan_frame(void *data, const void *frame, (vulkan_filter_chain_t*)vk->filter_chain, vk->cmd, &vk->vk_vp); /* Render to backbuffer. */ - clear_value.color.float32[0] = 0.0f; - clear_value.color.float32[1] = 0.0f; - clear_value.color.float32[2] = 0.0f; - clear_value.color.float32[3] = 1.0f; rp_info.renderPass = vk->render_pass; rp_info.framebuffer = chain->backbuffer.framebuffer; rp_info.renderArea.extent.width = vk->context->swapchain_width; rp_info.renderArea.extent.height = vk->context->swapchain_height; rp_info.clearValueCount = 1; - rp_info.pClearValues = &clear_value; + rp_info.pClearValues = &clear_color; + + clear_color.color.float32[0] = 0.0f; + clear_color.color.float32[1] = 0.0f; + clear_color.color.float32[2] = 0.0f; + clear_color.color.float32[3] = 0.0f; /* Prepare backbuffer for rendering. We don't use WSI semaphores here. */ vulkan_image_layout_transition(vk, vk->cmd, chain->backbuffer.image, diff --git a/gfx/drivers/vulkan_shaders/pipeline_snow_simple.frag b/gfx/drivers/vulkan_shaders/pipeline_snow_simple.frag index 1dcc659225..e5f837d02d 100644 --- a/gfx/drivers/vulkan_shaders/pipeline_snow_simple.frag +++ b/gfx/drivers/vulkan_shaders/pipeline_snow_simple.frag @@ -1,18 +1,18 @@ #version 310 es -precision highp float; +precision mediump float; layout(std140, set = 0, binding = 0) uniform UBO { - vec4 OutputSize; + mat4 MVP; + vec2 OutputSize; float time; -} global; +} constants; -layout(location = 0) in vec2 vTexCoord; layout(location = 0) out vec4 FragColor; -float baseScale = 1.25; // [1.0 .. 10.0] -float density = 0.5; // [0.01 .. 1.0] -float speed = 0.15; // [0.1 .. 1.0] +const float baseScale = 1.25; // [1.0 .. 10.0] +const float density = 0.5; // [0.01 .. 1.0] +const float speed = 0.15; // [0.1 .. 1.0] float rand(vec2 co) { @@ -29,7 +29,7 @@ float dist_func(vec2 distv) float random_dots(vec2 co) { float part = 1.0 / 20.0; - vec2 cd = floor(co / vec2(part)); + vec2 cd = floor(co / part); float p = rand(cd); if (p > 0.005 * (density * 40.0)) @@ -47,19 +47,17 @@ float snow(vec2 pos, float time, float scale) { // add wobble pos.x += cos(pos.y * 1.2 + time * 3.14159 * 2.0 + 1.0 / scale) / (8.0 / scale) * 4.0; - // add gravity pos += time * scale * vec2(-0.5, 1.0) * 4.0; - - return random_dots(pos / vec2(scale)) * (scale * 0.5 + 0.5); + return random_dots(pos / scale) * (scale * 0.5 + 0.5); } -void main() +void main(void) { - float tim = global.time * 0.4 * speed; - vec2 pos = vTexCoord.xy / global.OutputSize.xx; + float tim = constants.time * 0.4 * speed; + vec2 pos = gl_FragCoord.xy / constants.OutputSize.xx; + pos.y = 1.0 - pos.y; // Flip Y float a = 0.0; - // Each of these is a layer of snow // Remove some for better performance // Changing the scale (3rd value) will mess with the looping @@ -72,6 +70,7 @@ void main() a += snow(pos, tim, 0.25); a += snow(pos, tim, 0.125); a = a * min(pos.y * 4.0, 1.0); - FragColor = vec4(1.0, 1.0, 1.0, a); } + + diff --git a/gfx/drivers/vulkan_shaders/pipeline_snow_simple.frag.inc b/gfx/drivers/vulkan_shaders/pipeline_snow_simple.frag.inc index d503fdf156..a415621896 100644 --- a/gfx/drivers/vulkan_shaders/pipeline_snow_simple.frag.inc +++ b/gfx/drivers/vulkan_shaders/pipeline_snow_simple.frag.inc @@ -1,9 +1,9 @@ -{0x07230203,0x00010000,0x00080001,0x0000010e, +{0x07230203,0x00010000,0x00080001,0x0000010a, 0x00000000,0x00020011,0x00000001,0x0006000b, 0x00000001,0x4c534c47,0x6474732e,0x3035342e, 0x00000000,0x0003000e,0x00000000,0x00000001, 0x0007000f,0x00000004,0x00000004,0x6e69616d, -0x00000000,0x000000b7,0x0000010b,0x00030010, +0x00000000,0x000000ad,0x00000106,0x00030010, 0x00000004,0x00000007,0x00030003,0x00000001, 0x00000136,0x000a0004,0x475f4c47,0x4c474f4f, 0x70635f45,0x74735f70,0x5f656c79,0x656e696c, @@ -22,59 +22,180 @@ 0x003b3166,0x00030005,0x00000015,0x00736f70, 0x00040005,0x00000016,0x656d6974,0x00000000, 0x00040005,0x00000017,0x6c616373,0x00000065, -0x00050005,0x0000001b,0x65736162,0x6c616353, -0x00000065,0x00040005,0x0000001d,0x736e6564, -0x00797469,0x00040005,0x0000001f,0x65657073, -0x00000064,0x00040005,0x0000002c,0x74736964, -0x00000000,0x00040005,0x0000004b,0x74726170, -0x00000000,0x00030005,0x0000004d,0x00006463, -0x00030005,0x00000053,0x00000070,0x00040005, -0x00000054,0x61726170,0x0000006d,0x00040005, -0x00000061,0x736f7064,0x00000000,0x00040005, -0x0000006c,0x6c6c6563,0x00736f70,0x00040005, -0x00000072,0x74736964,0x00000076,0x00040005, -0x00000076,0x61726170,0x0000006d,0x00040005, -0x0000009f,0x61726170,0x0000006d,0x00030005, -0x000000a7,0x006d6974,0x00030005,0x000000a9, -0x004f4255,0x00060006,0x000000a9,0x00000000, -0x7074754f,0x69537475,0x0000657a,0x00050006, -0x000000a9,0x00000001,0x656d6974,0x00000000, -0x00040005,0x000000ab,0x626f6c67,0x00006c61, -0x00030005,0x000000b5,0x00736f70,0x00050005, -0x000000b7,0x78655476,0x726f6f43,0x00000064, -0x00030005,0x000000bf,0x00000061,0x00040005, -0x000000c0,0x61726170,0x0000006d,0x00040005, -0x000000c2,0x61726170,0x0000006d,0x00040005, -0x000000c4,0x61726170,0x0000006d,0x00040005, -0x000000c9,0x61726170,0x0000006d,0x00040005, -0x000000cb,0x61726170,0x0000006d,0x00040005, -0x000000cd,0x61726170,0x0000006d,0x00040005, -0x000000d2,0x61726170,0x0000006d,0x00040005, -0x000000d4,0x61726170,0x0000006d,0x00040005, -0x000000d6,0x61726170,0x0000006d,0x00040005, -0x000000da,0x61726170,0x0000006d,0x00040005, -0x000000dc,0x61726170,0x0000006d,0x00040005, -0x000000de,0x61726170,0x0000006d,0x00040005, -0x000000e2,0x61726170,0x0000006d,0x00040005, -0x000000e4,0x61726170,0x0000006d,0x00040005, -0x000000e6,0x61726170,0x0000006d,0x00040005, -0x000000eb,0x61726170,0x0000006d,0x00040005, -0x000000ed,0x61726170,0x0000006d,0x00040005, -0x000000ef,0x61726170,0x0000006d,0x00040005, -0x000000f3,0x61726170,0x0000006d,0x00040005, -0x000000f5,0x61726170,0x0000006d,0x00040005, -0x000000f7,0x61726170,0x0000006d,0x00040005, -0x000000fc,0x61726170,0x0000006d,0x00040005, -0x000000fe,0x61726170,0x0000006d,0x00040005, -0x00000100,0x61726170,0x0000006d,0x00050005, -0x0000010b,0x67617246,0x6f6c6f43,0x00000072, -0x00050048,0x000000a9,0x00000000,0x00000023, -0x00000000,0x00050048,0x000000a9,0x00000001, -0x00000023,0x00000010,0x00030047,0x000000a9, -0x00000002,0x00040047,0x000000ab,0x00000022, -0x00000000,0x00040047,0x000000ab,0x00000021, -0x00000000,0x00040047,0x000000b7,0x0000001e, -0x00000000,0x00040047,0x0000010b,0x0000001e, +0x00040005,0x00000025,0x74736964,0x00000000, +0x00040005,0x00000043,0x74726170,0x00000000, +0x00030005,0x00000045,0x00006463,0x00030005, +0x0000004b,0x00000070,0x00040005,0x0000004c, +0x61726170,0x0000006d,0x00040005,0x00000056, +0x736f7064,0x00000000,0x00040005,0x00000061, +0x6c6c6563,0x00736f70,0x00040005,0x00000067, +0x74736964,0x00000076,0x00040005,0x0000006b, +0x61726170,0x0000006d,0x00040005,0x00000094, +0x61726170,0x0000006d,0x00030005,0x0000009c, +0x006d6974,0x00030005,0x0000009f,0x004f4255, +0x00040006,0x0000009f,0x00000000,0x0050564d, +0x00060006,0x0000009f,0x00000001,0x7074754f, +0x69537475,0x0000657a,0x00050006,0x0000009f, +0x00000002,0x656d6974,0x00000000,0x00050005, +0x000000a1,0x736e6f63,0x746e6174,0x00000073, +0x00030005,0x000000ab,0x00736f70,0x00060005, +0x000000ad,0x465f6c67,0x43676172,0x64726f6f, +0x00000000,0x00030005,0x000000ba,0x00000061, +0x00040005,0x000000bb,0x61726170,0x0000006d, +0x00040005,0x000000bd,0x61726170,0x0000006d, +0x00040005,0x000000bf,0x61726170,0x0000006d, +0x00040005,0x000000c4,0x61726170,0x0000006d, +0x00040005,0x000000c6,0x61726170,0x0000006d, +0x00040005,0x000000c8,0x61726170,0x0000006d, +0x00040005,0x000000cd,0x61726170,0x0000006d, +0x00040005,0x000000cf,0x61726170,0x0000006d, +0x00040005,0x000000d1,0x61726170,0x0000006d, +0x00040005,0x000000d5,0x61726170,0x0000006d, +0x00040005,0x000000d7,0x61726170,0x0000006d, +0x00040005,0x000000d9,0x61726170,0x0000006d, +0x00040005,0x000000dd,0x61726170,0x0000006d, +0x00040005,0x000000df,0x61726170,0x0000006d, +0x00040005,0x000000e1,0x61726170,0x0000006d, +0x00040005,0x000000e6,0x61726170,0x0000006d, +0x00040005,0x000000e8,0x61726170,0x0000006d, +0x00040005,0x000000ea,0x61726170,0x0000006d, +0x00040005,0x000000ee,0x61726170,0x0000006d, +0x00040005,0x000000f0,0x61726170,0x0000006d, +0x00040005,0x000000f2,0x61726170,0x0000006d, +0x00040005,0x000000f7,0x61726170,0x0000006d, +0x00040005,0x000000f9,0x61726170,0x0000006d, +0x00040005,0x000000fb,0x61726170,0x0000006d, +0x00050005,0x00000106,0x67617246,0x6f6c6f43, +0x00000072,0x00030047,0x0000000b,0x00000000, +0x00030047,0x0000000a,0x00000000,0x00030047, +0x0000000e,0x00000000,0x00030047,0x0000000d, +0x00000000,0x00030047,0x00000011,0x00000000, +0x00030047,0x00000010,0x00000000,0x00030047, +0x00000018,0x00000000,0x00030047,0x00000015, +0x00000000,0x00030047,0x00000016,0x00000000, +0x00030047,0x00000017,0x00000000,0x00030047, +0x0000001a,0x00000000,0x00030047,0x0000001e, +0x00000000,0x00030047,0x0000001f,0x00000000, +0x00030047,0x00000021,0x00000000,0x00030047, +0x00000022,0x00000000,0x00030047,0x00000025, +0x00000000,0x00030047,0x00000029,0x00000000, +0x00030047,0x0000002b,0x00000000,0x00030047, +0x0000002c,0x00000000,0x00030047,0x0000002f, +0x00000000,0x00030047,0x00000031,0x00000000, +0x00030047,0x00000032,0x00000000,0x00030047, +0x00000033,0x00000000,0x00030047,0x00000034, +0x00000000,0x00030047,0x00000036,0x00000000, +0x00030047,0x00000037,0x00000000,0x00030047, +0x0000003a,0x00000000,0x00030047,0x0000003b, +0x00000000,0x00030047,0x0000003d,0x00000000, +0x00030047,0x0000003e,0x00000000,0x00030047, +0x00000040,0x00000000,0x00030047,0x00000043, +0x00000000,0x00030047,0x00000045,0x00000000, +0x00030047,0x00000046,0x00000000,0x00030047, +0x00000047,0x00000000,0x00030047,0x00000048, +0x00000000,0x00030047,0x00000049,0x00000000, +0x00030047,0x0000004a,0x00000000,0x00030047, +0x0000004b,0x00000000,0x00030047,0x0000004d, +0x00000000,0x00030047,0x0000004e,0x00000000, +0x00030047,0x0000004f,0x00000000,0x00030047, +0x00000056,0x00000000,0x00030047,0x00000057, +0x00000000,0x00030047,0x00000059,0x00000000, +0x00030047,0x0000005a,0x00000000,0x00030047, +0x0000005b,0x00000000,0x00030047,0x0000005c, +0x00000000,0x00030047,0x0000005e,0x00000000, +0x00030047,0x00000060,0x00000000,0x00030047, +0x00000061,0x00000000,0x00030047,0x00000062, +0x00000000,0x00030047,0x00000063,0x00000000, +0x00030047,0x00000064,0x00000000,0x00030047, +0x00000065,0x00000000,0x00030047,0x00000066, +0x00000000,0x00030047,0x00000067,0x00000000, +0x00030047,0x00000068,0x00000000,0x00030047, +0x00000069,0x00000000,0x00030047,0x0000006a, +0x00000000,0x00030047,0x0000006c,0x00000000, +0x00030047,0x0000006d,0x00000000,0x00030047, +0x00000071,0x00000000,0x00030047,0x00000073, +0x00000000,0x00030047,0x00000074,0x00000000, +0x00030047,0x00000076,0x00000000,0x00030047, +0x00000077,0x00000000,0x00030047,0x00000078, +0x00000000,0x00030047,0x00000079,0x00000000, +0x00030047,0x0000007a,0x00000000,0x00030047, +0x0000007b,0x00000000,0x00030047,0x0000007c, +0x00000000,0x00030047,0x0000007e,0x00000000, +0x00030047,0x0000007f,0x00000000,0x00030047, +0x00000080,0x00000000,0x00030047,0x00000082, +0x00000000,0x00030047,0x00000084,0x00000000, +0x00030047,0x00000085,0x00000000,0x00030047, +0x00000087,0x00000000,0x00030047,0x00000088, +0x00000000,0x00030047,0x00000089,0x00000000, +0x00030047,0x0000008c,0x00000000,0x00030047, +0x0000008d,0x00000000,0x00030047,0x0000008e, +0x00000000,0x00030047,0x0000008f,0x00000000, +0x00030047,0x00000090,0x00000000,0x00030047, +0x00000091,0x00000000,0x00030047,0x00000092, +0x00000000,0x00030047,0x00000093,0x00000000, +0x00030047,0x00000095,0x00000000,0x00030047, +0x00000096,0x00000000,0x00030047,0x00000097, +0x00000000,0x00030047,0x00000098,0x00000000, +0x00030047,0x00000099,0x00000000,0x00030047, +0x0000009c,0x00000000,0x00040048,0x0000009f, +0x00000000,0x00000005,0x00040048,0x0000009f, +0x00000000,0x00000000,0x00050048,0x0000009f, +0x00000000,0x00000023,0x00000000,0x00050048, +0x0000009f,0x00000000,0x00000007,0x00000010, +0x00040048,0x0000009f,0x00000001,0x00000000, +0x00050048,0x0000009f,0x00000001,0x00000023, +0x00000040,0x00040048,0x0000009f,0x00000002, +0x00000000,0x00050048,0x0000009f,0x00000002, +0x00000023,0x00000048,0x00030047,0x0000009f, +0x00000002,0x00040047,0x000000a1,0x00000022, +0x00000000,0x00040047,0x000000a1,0x00000021, +0x00000000,0x00030047,0x000000a6,0x00000000, +0x00030047,0x000000a8,0x00000000,0x00030047, +0x000000aa,0x00000000,0x00030047,0x000000ab, +0x00000000,0x00040047,0x000000ad,0x0000000b, +0x0000000f,0x00030047,0x000000b3,0x00000000, +0x00030047,0x000000b4,0x00000000,0x00030047, +0x000000b7,0x00000000,0x00030047,0x000000b8, +0x00000000,0x00030047,0x000000ba,0x00000000, +0x00030047,0x000000bc,0x00000000,0x00030047, +0x000000be,0x00000000,0x00030047,0x000000c0, +0x00000000,0x00030047,0x000000c1,0x00000000, +0x00030047,0x000000c2,0x00000000,0x00030047, +0x000000c5,0x00000000,0x00030047,0x000000c7, +0x00000000,0x00030047,0x000000c9,0x00000000, +0x00030047,0x000000ca,0x00000000,0x00030047, +0x000000cb,0x00000000,0x00030047,0x000000ce, +0x00000000,0x00030047,0x000000d0,0x00000000, +0x00030047,0x000000d2,0x00000000,0x00030047, +0x000000d3,0x00000000,0x00030047,0x000000d4, +0x00000000,0x00030047,0x000000d6,0x00000000, +0x00030047,0x000000d8,0x00000000,0x00030047, +0x000000da,0x00000000,0x00030047,0x000000db, +0x00000000,0x00030047,0x000000dc,0x00000000, +0x00030047,0x000000de,0x00000000,0x00030047, +0x000000e0,0x00000000,0x00030047,0x000000e2, +0x00000000,0x00030047,0x000000e3,0x00000000, +0x00030047,0x000000e4,0x00000000,0x00030047, +0x000000e7,0x00000000,0x00030047,0x000000e9, +0x00000000,0x00030047,0x000000eb,0x00000000, +0x00030047,0x000000ec,0x00000000,0x00030047, +0x000000ed,0x00000000,0x00030047,0x000000ef, +0x00000000,0x00030047,0x000000f1,0x00000000, +0x00030047,0x000000f3,0x00000000,0x00030047, +0x000000f4,0x00000000,0x00030047,0x000000f5, +0x00000000,0x00030047,0x000000f8,0x00000000, +0x00030047,0x000000fa,0x00000000,0x00030047, +0x000000fc,0x00000000,0x00030047,0x000000fd, +0x00000000,0x00030047,0x000000fe,0x00000000, +0x00030047,0x000000ff,0x00000000,0x00030047, +0x00000101,0x00000000,0x00030047,0x00000102, +0x00000000,0x00030047,0x00000103,0x00000000, +0x00030047,0x00000104,0x00000000,0x00030047, +0x00000106,0x00000000,0x00040047,0x00000106, +0x0000001e,0x00000000,0x00030047,0x00000107, +0x00000000,0x00030047,0x00000108,0x00000000, +0x00030047,0x00000109,0x00000000,0x00030047, +0x0000003f,0x00000000,0x00030047,0x000000a9, 0x00000000,0x00020013,0x00000002,0x00030021, 0x00000003,0x00000002,0x00030016,0x00000006, 0x00000020,0x00040017,0x00000007,0x00000006, @@ -82,327 +203,322 @@ 0x00000007,0x00040021,0x00000009,0x00000006, 0x00000008,0x00040020,0x00000013,0x00000007, 0x00000006,0x00060021,0x00000014,0x00000006, -0x00000008,0x00000013,0x00000013,0x00040020, -0x0000001a,0x00000006,0x00000006,0x0004003b, -0x0000001a,0x0000001b,0x00000006,0x0004002b, -0x00000006,0x0000001c,0x3fa00000,0x0004003b, -0x0000001a,0x0000001d,0x00000006,0x0004002b, -0x00000006,0x0000001e,0x3f000000,0x0004003b, -0x0000001a,0x0000001f,0x00000006,0x0004002b, -0x00000006,0x00000020,0x3e19999a,0x0004002b, -0x00000006,0x00000022,0x414fd639,0x0004002b, -0x00000006,0x00000023,0x429c774c,0x0005002c, -0x00000007,0x00000024,0x00000022,0x00000023, -0x0004002b,0x00000006,0x00000027,0x472aee8c, -0x00040015,0x0000002d,0x00000020,0x00000000, -0x0004002b,0x0000002d,0x0000002e,0x00000000, -0x0004002b,0x0000002d,0x00000034,0x00000001, -0x0004002b,0x00000006,0x0000003c,0x42200000, -0x0004002b,0x00000006,0x00000041,0x00000000, -0x0004002b,0x00000006,0x00000042,0x3f800000, -0x0004002b,0x00000006,0x00000045,0x3fc90fdb, -0x0004002b,0x00000006,0x0000004c,0x3d4ccccd, -0x0004002b,0x00000006,0x00000058,0x3ba3d70a, -0x00020014,0x0000005c,0x0004002b,0x00000006, -0x00000063,0x40000000,0x0005002c,0x00000007, -0x00000068,0x00000063,0x00000063,0x0004002b, -0x00000006,0x0000006a,0x3e800000,0x0004002b, -0x00000006,0x0000007d,0x3f99999a,0x0004002b, -0x00000006,0x00000080,0x40490fd0,0x0004002b, -0x00000006,0x00000088,0x41000000,0x0004002b, -0x00000006,0x0000008c,0x40800000,0x0004002b, -0x00000006,0x00000095,0xbf000000,0x0005002c, -0x00000007,0x00000096,0x00000095,0x00000042, -0x00040017,0x000000a8,0x00000006,0x00000004, -0x0004001e,0x000000a9,0x000000a8,0x00000006, -0x00040020,0x000000aa,0x00000002,0x000000a9, -0x0004003b,0x000000aa,0x000000ab,0x00000002, -0x00040015,0x000000ac,0x00000020,0x00000001, -0x0004002b,0x000000ac,0x000000ad,0x00000001, -0x00040020,0x000000ae,0x00000002,0x00000006, -0x0004002b,0x00000006,0x000000b1,0x3ecccccd, -0x00040020,0x000000b6,0x00000001,0x00000007, -0x0004003b,0x000000b6,0x000000b7,0x00000001, -0x0004002b,0x000000ac,0x000000b9,0x00000000, -0x00040020,0x000000ba,0x00000002,0x000000a8, -0x0004002b,0x00000006,0x000000c8,0x3f333333, -0x0004002b,0x00000006,0x000000d1,0x3f19999a, -0x0004002b,0x00000006,0x000000ea,0x3e99999a, -0x0004002b,0x00000006,0x000000fb,0x3e000000, -0x00040020,0x0000010a,0x00000003,0x000000a8, -0x0004003b,0x0000010a,0x0000010b,0x00000003, -0x00050036,0x00000002,0x00000004,0x00000000, -0x00000003,0x000200f8,0x00000005,0x0004003b, -0x00000013,0x000000a7,0x00000007,0x0004003b, -0x00000008,0x000000b5,0x00000007,0x0004003b, -0x00000013,0x000000bf,0x00000007,0x0004003b, -0x00000008,0x000000c0,0x00000007,0x0004003b, -0x00000013,0x000000c2,0x00000007,0x0004003b, -0x00000013,0x000000c4,0x00000007,0x0004003b, -0x00000008,0x000000c9,0x00000007,0x0004003b, -0x00000013,0x000000cb,0x00000007,0x0004003b, -0x00000013,0x000000cd,0x00000007,0x0004003b, -0x00000008,0x000000d2,0x00000007,0x0004003b, -0x00000013,0x000000d4,0x00000007,0x0004003b, -0x00000013,0x000000d6,0x00000007,0x0004003b, -0x00000008,0x000000da,0x00000007,0x0004003b, -0x00000013,0x000000dc,0x00000007,0x0004003b, -0x00000013,0x000000de,0x00000007,0x0004003b, -0x00000008,0x000000e2,0x00000007,0x0004003b, -0x00000013,0x000000e4,0x00000007,0x0004003b, -0x00000013,0x000000e6,0x00000007,0x0004003b, -0x00000008,0x000000eb,0x00000007,0x0004003b, -0x00000013,0x000000ed,0x00000007,0x0004003b, -0x00000013,0x000000ef,0x00000007,0x0004003b, -0x00000008,0x000000f3,0x00000007,0x0004003b, -0x00000013,0x000000f5,0x00000007,0x0004003b, -0x00000013,0x000000f7,0x00000007,0x0004003b, -0x00000008,0x000000fc,0x00000007,0x0004003b, -0x00000013,0x000000fe,0x00000007,0x0004003b, -0x00000013,0x00000100,0x00000007,0x0003003e, -0x0000001b,0x0000001c,0x0003003e,0x0000001d, -0x0000001e,0x0003003e,0x0000001f,0x00000020, -0x00050041,0x000000ae,0x000000af,0x000000ab, -0x000000ad,0x0004003d,0x00000006,0x000000b0, -0x000000af,0x00050085,0x00000006,0x000000b2, -0x000000b0,0x000000b1,0x0004003d,0x00000006, -0x000000b3,0x0000001f,0x00050085,0x00000006, -0x000000b4,0x000000b2,0x000000b3,0x0003003e, -0x000000a7,0x000000b4,0x0004003d,0x00000007, -0x000000b8,0x000000b7,0x00050041,0x000000ba, -0x000000bb,0x000000ab,0x000000b9,0x0004003d, -0x000000a8,0x000000bc,0x000000bb,0x0007004f, -0x00000007,0x000000bd,0x000000bc,0x000000bc, -0x00000000,0x00000000,0x00050088,0x00000007, -0x000000be,0x000000b8,0x000000bd,0x0003003e, -0x000000b5,0x000000be,0x0003003e,0x000000bf, -0x00000041,0x0004003d,0x00000007,0x000000c1, -0x000000b5,0x0003003e,0x000000c0,0x000000c1, -0x0004003d,0x00000006,0x000000c3,0x000000a7, -0x0003003e,0x000000c2,0x000000c3,0x0003003e, -0x000000c4,0x00000042,0x00070039,0x00000006, -0x000000c5,0x00000018,0x000000c0,0x000000c2, -0x000000c4,0x0004003d,0x00000006,0x000000c6, -0x000000bf,0x00050081,0x00000006,0x000000c7, -0x000000c6,0x000000c5,0x0003003e,0x000000bf, -0x000000c7,0x0004003d,0x00000007,0x000000ca, -0x000000b5,0x0003003e,0x000000c9,0x000000ca, -0x0004003d,0x00000006,0x000000cc,0x000000a7, -0x0003003e,0x000000cb,0x000000cc,0x0003003e, -0x000000cd,0x000000c8,0x00070039,0x00000006, -0x000000ce,0x00000018,0x000000c9,0x000000cb, -0x000000cd,0x0004003d,0x00000006,0x000000cf, -0x000000bf,0x00050081,0x00000006,0x000000d0, -0x000000cf,0x000000ce,0x0003003e,0x000000bf, -0x000000d0,0x0004003d,0x00000007,0x000000d3, -0x000000b5,0x0003003e,0x000000d2,0x000000d3, -0x0004003d,0x00000006,0x000000d5,0x000000a7, -0x0003003e,0x000000d4,0x000000d5,0x0003003e, -0x000000d6,0x000000d1,0x00070039,0x00000006, -0x000000d7,0x00000018,0x000000d2,0x000000d4, +0x00000008,0x00000013,0x00000013,0x0004002b, +0x00000006,0x0000001b,0x414fd639,0x0004002b, +0x00000006,0x0000001c,0x429c774c,0x0005002c, +0x00000007,0x0000001d,0x0000001b,0x0000001c, +0x0004002b,0x00000006,0x00000020,0x472aee8c, +0x00040015,0x00000026,0x00000020,0x00000000, +0x0004002b,0x00000026,0x00000027,0x00000000, +0x0004002b,0x00000026,0x0000002d,0x00000001, +0x0004002b,0x00000006,0x00000035,0x42000000, +0x0004002b,0x00000006,0x00000038,0x00000000, +0x0004002b,0x00000006,0x00000039,0x3f800000, +0x0004002b,0x00000006,0x0000003c,0x3fc90fdb, +0x0004002b,0x00000006,0x0000003f,0x3f000000, +0x0004002b,0x00000006,0x00000044,0x3d4ccccd, +0x0004002b,0x00000006,0x00000050,0x3dcccccd, +0x00020014,0x00000051,0x0004002b,0x00000006, +0x00000058,0x40000000,0x0005002c,0x00000007, +0x0000005d,0x00000058,0x00000058,0x0004002b, +0x00000006,0x0000005f,0x3e800000,0x0004002b, +0x00000006,0x00000072,0x3f99999a,0x0004002b, +0x00000006,0x00000075,0x40490fd0,0x0004002b, +0x00000006,0x0000007d,0x41000000,0x0004002b, +0x00000006,0x00000081,0x40800000,0x0004002b, +0x00000006,0x0000008a,0xbf000000,0x0005002c, +0x00000007,0x0000008b,0x0000008a,0x00000039, +0x00040017,0x0000009d,0x00000006,0x00000004, +0x00040018,0x0000009e,0x0000009d,0x00000004, +0x0005001e,0x0000009f,0x0000009e,0x00000007, +0x00000006,0x00040020,0x000000a0,0x00000002, +0x0000009f,0x0004003b,0x000000a0,0x000000a1, +0x00000002,0x00040015,0x000000a2,0x00000020, +0x00000001,0x0004002b,0x000000a2,0x000000a3, +0x00000002,0x00040020,0x000000a4,0x00000002, +0x00000006,0x0004002b,0x00000006,0x000000a7, +0x3ecccccd,0x0004002b,0x00000006,0x000000a9, +0x3e19999a,0x00040020,0x000000ac,0x00000001, +0x0000009d,0x0004003b,0x000000ac,0x000000ad, +0x00000001,0x0004002b,0x000000a2,0x000000b0, +0x00000001,0x00040020,0x000000b1,0x00000002, +0x00000007,0x0004002b,0x00000006,0x000000c3, +0x3f333333,0x0004002b,0x00000006,0x000000cc, +0x3f19999a,0x0004002b,0x00000006,0x000000e5, +0x3e99999a,0x0004002b,0x00000006,0x000000f6, +0x3e000000,0x00040020,0x00000105,0x00000003, +0x0000009d,0x0004003b,0x00000105,0x00000106, +0x00000003,0x0004002b,0x00000006,0x00000109, +0x3fa00000,0x00050036,0x00000002,0x00000004, +0x00000000,0x00000003,0x000200f8,0x00000005, +0x0004003b,0x00000013,0x0000009c,0x00000007, +0x0004003b,0x00000008,0x000000ab,0x00000007, +0x0004003b,0x00000013,0x000000ba,0x00000007, +0x0004003b,0x00000008,0x000000bb,0x00000007, +0x0004003b,0x00000013,0x000000bd,0x00000007, +0x0004003b,0x00000013,0x000000bf,0x00000007, +0x0004003b,0x00000008,0x000000c4,0x00000007, +0x0004003b,0x00000013,0x000000c6,0x00000007, +0x0004003b,0x00000013,0x000000c8,0x00000007, +0x0004003b,0x00000008,0x000000cd,0x00000007, +0x0004003b,0x00000013,0x000000cf,0x00000007, +0x0004003b,0x00000013,0x000000d1,0x00000007, +0x0004003b,0x00000008,0x000000d5,0x00000007, +0x0004003b,0x00000013,0x000000d7,0x00000007, +0x0004003b,0x00000013,0x000000d9,0x00000007, +0x0004003b,0x00000008,0x000000dd,0x00000007, +0x0004003b,0x00000013,0x000000df,0x00000007, +0x0004003b,0x00000013,0x000000e1,0x00000007, +0x0004003b,0x00000008,0x000000e6,0x00000007, +0x0004003b,0x00000013,0x000000e8,0x00000007, +0x0004003b,0x00000013,0x000000ea,0x00000007, +0x0004003b,0x00000008,0x000000ee,0x00000007, +0x0004003b,0x00000013,0x000000f0,0x00000007, +0x0004003b,0x00000013,0x000000f2,0x00000007, +0x0004003b,0x00000008,0x000000f7,0x00000007, +0x0004003b,0x00000013,0x000000f9,0x00000007, +0x0004003b,0x00000013,0x000000fb,0x00000007, +0x00050041,0x000000a4,0x000000a5,0x000000a1, +0x000000a3,0x0004003d,0x00000006,0x000000a6, +0x000000a5,0x00050085,0x00000006,0x000000a8, +0x000000a6,0x000000a7,0x00050085,0x00000006, +0x000000aa,0x000000a8,0x000000a9,0x0003003e, +0x0000009c,0x000000aa,0x0004003d,0x0000009d, +0x000000ae,0x000000ad,0x0007004f,0x00000007, +0x000000af,0x000000ae,0x000000ae,0x00000000, +0x00000001,0x00050041,0x000000b1,0x000000b2, +0x000000a1,0x000000b0,0x0004003d,0x00000007, +0x000000b3,0x000000b2,0x0007004f,0x00000007, +0x000000b4,0x000000b3,0x000000b3,0x00000000, +0x00000000,0x00050088,0x00000007,0x000000b5, +0x000000af,0x000000b4,0x0003003e,0x000000ab, +0x000000b5,0x00050041,0x00000013,0x000000b6, +0x000000ab,0x0000002d,0x0004003d,0x00000006, +0x000000b7,0x000000b6,0x00050083,0x00000006, +0x000000b8,0x00000039,0x000000b7,0x00050041, +0x00000013,0x000000b9,0x000000ab,0x0000002d, +0x0003003e,0x000000b9,0x000000b8,0x0003003e, +0x000000ba,0x00000038,0x0004003d,0x00000007, +0x000000bc,0x000000ab,0x0003003e,0x000000bb, +0x000000bc,0x0004003d,0x00000006,0x000000be, +0x0000009c,0x0003003e,0x000000bd,0x000000be, +0x0003003e,0x000000bf,0x00000039,0x00070039, +0x00000006,0x000000c0,0x00000018,0x000000bb, +0x000000bd,0x000000bf,0x0004003d,0x00000006, +0x000000c1,0x000000ba,0x00050081,0x00000006, +0x000000c2,0x000000c1,0x000000c0,0x0003003e, +0x000000ba,0x000000c2,0x0004003d,0x00000007, +0x000000c5,0x000000ab,0x0003003e,0x000000c4, +0x000000c5,0x0004003d,0x00000006,0x000000c7, +0x0000009c,0x0003003e,0x000000c6,0x000000c7, +0x0003003e,0x000000c8,0x000000c3,0x00070039, +0x00000006,0x000000c9,0x00000018,0x000000c4, +0x000000c6,0x000000c8,0x0004003d,0x00000006, +0x000000ca,0x000000ba,0x00050081,0x00000006, +0x000000cb,0x000000ca,0x000000c9,0x0003003e, +0x000000ba,0x000000cb,0x0004003d,0x00000007, +0x000000ce,0x000000ab,0x0003003e,0x000000cd, +0x000000ce,0x0004003d,0x00000006,0x000000d0, +0x0000009c,0x0003003e,0x000000cf,0x000000d0, +0x0003003e,0x000000d1,0x000000cc,0x00070039, +0x00000006,0x000000d2,0x00000018,0x000000cd, +0x000000cf,0x000000d1,0x0004003d,0x00000006, +0x000000d3,0x000000ba,0x00050081,0x00000006, +0x000000d4,0x000000d3,0x000000d2,0x0003003e, +0x000000ba,0x000000d4,0x0004003d,0x00000007, +0x000000d6,0x000000ab,0x0003003e,0x000000d5, 0x000000d6,0x0004003d,0x00000006,0x000000d8, -0x000000bf,0x00050081,0x00000006,0x000000d9, -0x000000d8,0x000000d7,0x0003003e,0x000000bf, -0x000000d9,0x0004003d,0x00000007,0x000000db, -0x000000b5,0x0003003e,0x000000da,0x000000db, -0x0004003d,0x00000006,0x000000dd,0x000000a7, -0x0003003e,0x000000dc,0x000000dd,0x0003003e, -0x000000de,0x0000001e,0x00070039,0x00000006, -0x000000df,0x00000018,0x000000da,0x000000dc, +0x0000009c,0x0003003e,0x000000d7,0x000000d8, +0x0003003e,0x000000d9,0x0000003f,0x00070039, +0x00000006,0x000000da,0x00000018,0x000000d5, +0x000000d7,0x000000d9,0x0004003d,0x00000006, +0x000000db,0x000000ba,0x00050081,0x00000006, +0x000000dc,0x000000db,0x000000da,0x0003003e, +0x000000ba,0x000000dc,0x0004003d,0x00000007, +0x000000de,0x000000ab,0x0003003e,0x000000dd, 0x000000de,0x0004003d,0x00000006,0x000000e0, -0x000000bf,0x00050081,0x00000006,0x000000e1, -0x000000e0,0x000000df,0x0003003e,0x000000bf, -0x000000e1,0x0004003d,0x00000007,0x000000e3, -0x000000b5,0x0003003e,0x000000e2,0x000000e3, -0x0004003d,0x00000006,0x000000e5,0x000000a7, -0x0003003e,0x000000e4,0x000000e5,0x0003003e, -0x000000e6,0x000000b1,0x00070039,0x00000006, -0x000000e7,0x00000018,0x000000e2,0x000000e4, -0x000000e6,0x0004003d,0x00000006,0x000000e8, -0x000000bf,0x00050081,0x00000006,0x000000e9, -0x000000e8,0x000000e7,0x0003003e,0x000000bf, -0x000000e9,0x0004003d,0x00000007,0x000000ec, -0x000000b5,0x0003003e,0x000000eb,0x000000ec, -0x0004003d,0x00000006,0x000000ee,0x000000a7, -0x0003003e,0x000000ed,0x000000ee,0x0003003e, -0x000000ef,0x000000ea,0x00070039,0x00000006, -0x000000f0,0x00000018,0x000000eb,0x000000ed, +0x0000009c,0x0003003e,0x000000df,0x000000e0, +0x0003003e,0x000000e1,0x000000a7,0x00070039, +0x00000006,0x000000e2,0x00000018,0x000000dd, +0x000000df,0x000000e1,0x0004003d,0x00000006, +0x000000e3,0x000000ba,0x00050081,0x00000006, +0x000000e4,0x000000e3,0x000000e2,0x0003003e, +0x000000ba,0x000000e4,0x0004003d,0x00000007, +0x000000e7,0x000000ab,0x0003003e,0x000000e6, +0x000000e7,0x0004003d,0x00000006,0x000000e9, +0x0000009c,0x0003003e,0x000000e8,0x000000e9, +0x0003003e,0x000000ea,0x000000e5,0x00070039, +0x00000006,0x000000eb,0x00000018,0x000000e6, +0x000000e8,0x000000ea,0x0004003d,0x00000006, +0x000000ec,0x000000ba,0x00050081,0x00000006, +0x000000ed,0x000000ec,0x000000eb,0x0003003e, +0x000000ba,0x000000ed,0x0004003d,0x00000007, +0x000000ef,0x000000ab,0x0003003e,0x000000ee, 0x000000ef,0x0004003d,0x00000006,0x000000f1, -0x000000bf,0x00050081,0x00000006,0x000000f2, -0x000000f1,0x000000f0,0x0003003e,0x000000bf, -0x000000f2,0x0004003d,0x00000007,0x000000f4, -0x000000b5,0x0003003e,0x000000f3,0x000000f4, -0x0004003d,0x00000006,0x000000f6,0x000000a7, -0x0003003e,0x000000f5,0x000000f6,0x0003003e, -0x000000f7,0x0000006a,0x00070039,0x00000006, -0x000000f8,0x00000018,0x000000f3,0x000000f5, -0x000000f7,0x0004003d,0x00000006,0x000000f9, -0x000000bf,0x00050081,0x00000006,0x000000fa, -0x000000f9,0x000000f8,0x0003003e,0x000000bf, -0x000000fa,0x0004003d,0x00000007,0x000000fd, -0x000000b5,0x0003003e,0x000000fc,0x000000fd, -0x0004003d,0x00000006,0x000000ff,0x000000a7, -0x0003003e,0x000000fe,0x000000ff,0x0003003e, -0x00000100,0x000000fb,0x00070039,0x00000006, -0x00000101,0x00000018,0x000000fc,0x000000fe, -0x00000100,0x0004003d,0x00000006,0x00000102, -0x000000bf,0x00050081,0x00000006,0x00000103, -0x00000102,0x00000101,0x0003003e,0x000000bf, -0x00000103,0x0004003d,0x00000006,0x00000104, -0x000000bf,0x00050041,0x00000013,0x00000105, -0x000000b5,0x00000034,0x0004003d,0x00000006, -0x00000106,0x00000105,0x00050085,0x00000006, -0x00000107,0x00000106,0x0000008c,0x0007000c, -0x00000006,0x00000108,0x00000001,0x00000025, -0x00000107,0x00000042,0x00050085,0x00000006, -0x00000109,0x00000104,0x00000108,0x0003003e, -0x000000bf,0x00000109,0x0004003d,0x00000006, -0x0000010c,0x000000bf,0x00070050,0x000000a8, -0x0000010d,0x00000042,0x00000042,0x00000042, -0x0000010c,0x0003003e,0x0000010b,0x0000010d, -0x000100fd,0x00010038,0x00050036,0x00000006, -0x0000000b,0x00000000,0x00000009,0x00030037, -0x00000008,0x0000000a,0x000200f8,0x0000000c, -0x0004003d,0x00000007,0x00000021,0x0000000a, -0x00050094,0x00000006,0x00000025,0x00000021, -0x00000024,0x0006000c,0x00000006,0x00000026, -0x00000001,0x0000000d,0x00000025,0x00050085, -0x00000006,0x00000028,0x00000026,0x00000027, -0x0006000c,0x00000006,0x00000029,0x00000001, -0x0000000a,0x00000028,0x000200fe,0x00000029, -0x00010038,0x00050036,0x00000006,0x0000000e, -0x00000000,0x00000009,0x00030037,0x00000008, -0x0000000d,0x000200f8,0x0000000f,0x0004003b, -0x00000013,0x0000002c,0x00000007,0x00050041, -0x00000013,0x0000002f,0x0000000d,0x0000002e, -0x0004003d,0x00000006,0x00000030,0x0000002f, -0x00050041,0x00000013,0x00000031,0x0000000d, -0x0000002e,0x0004003d,0x00000006,0x00000032, -0x00000031,0x00050085,0x00000006,0x00000033, -0x00000030,0x00000032,0x00050041,0x00000013, -0x00000035,0x0000000d,0x00000034,0x0004003d, -0x00000006,0x00000036,0x00000035,0x00050041, -0x00000013,0x00000037,0x0000000d,0x00000034, -0x0004003d,0x00000006,0x00000038,0x00000037, -0x00050085,0x00000006,0x00000039,0x00000036, -0x00000038,0x00050081,0x00000006,0x0000003a, -0x00000033,0x00000039,0x0006000c,0x00000006, -0x0000003b,0x00000001,0x0000001f,0x0000003a, -0x0004003d,0x00000006,0x0000003d,0x0000001b, -0x00050088,0x00000006,0x0000003e,0x0000003c, -0x0000003d,0x00050085,0x00000006,0x0000003f, -0x0000003b,0x0000003e,0x0003003e,0x0000002c, -0x0000003f,0x0004003d,0x00000006,0x00000040, -0x0000002c,0x0008000c,0x00000006,0x00000043, -0x00000001,0x0000002b,0x00000040,0x00000041, -0x00000042,0x0003003e,0x0000002c,0x00000043, -0x0004003d,0x00000006,0x00000044,0x0000002c, -0x00050085,0x00000006,0x00000046,0x00000044, -0x00000045,0x0006000c,0x00000006,0x00000047, -0x00000001,0x0000000e,0x00000046,0x00050085, -0x00000006,0x00000048,0x00000047,0x0000001e, -0x000200fe,0x00000048,0x00010038,0x00050036, +0x0000009c,0x0003003e,0x000000f0,0x000000f1, +0x0003003e,0x000000f2,0x0000005f,0x00070039, +0x00000006,0x000000f3,0x00000018,0x000000ee, +0x000000f0,0x000000f2,0x0004003d,0x00000006, +0x000000f4,0x000000ba,0x00050081,0x00000006, +0x000000f5,0x000000f4,0x000000f3,0x0003003e, +0x000000ba,0x000000f5,0x0004003d,0x00000007, +0x000000f8,0x000000ab,0x0003003e,0x000000f7, +0x000000f8,0x0004003d,0x00000006,0x000000fa, +0x0000009c,0x0003003e,0x000000f9,0x000000fa, +0x0003003e,0x000000fb,0x000000f6,0x00070039, +0x00000006,0x000000fc,0x00000018,0x000000f7, +0x000000f9,0x000000fb,0x0004003d,0x00000006, +0x000000fd,0x000000ba,0x00050081,0x00000006, +0x000000fe,0x000000fd,0x000000fc,0x0003003e, +0x000000ba,0x000000fe,0x0004003d,0x00000006, +0x000000ff,0x000000ba,0x00050041,0x00000013, +0x00000100,0x000000ab,0x0000002d,0x0004003d, +0x00000006,0x00000101,0x00000100,0x00050085, +0x00000006,0x00000102,0x00000101,0x00000081, +0x0007000c,0x00000006,0x00000103,0x00000001, +0x00000025,0x00000102,0x00000039,0x00050085, +0x00000006,0x00000104,0x000000ff,0x00000103, +0x0003003e,0x000000ba,0x00000104,0x0004003d, +0x00000006,0x00000107,0x000000ba,0x00070050, +0x0000009d,0x00000108,0x00000039,0x00000039, +0x00000039,0x00000107,0x0003003e,0x00000106, +0x00000108,0x000100fd,0x00010038,0x00050036, +0x00000006,0x0000000b,0x00000000,0x00000009, +0x00030037,0x00000008,0x0000000a,0x000200f8, +0x0000000c,0x0004003d,0x00000007,0x0000001a, +0x0000000a,0x00050094,0x00000006,0x0000001e, +0x0000001a,0x0000001d,0x0006000c,0x00000006, +0x0000001f,0x00000001,0x0000000d,0x0000001e, +0x00050085,0x00000006,0x00000021,0x0000001f, +0x00000020,0x0006000c,0x00000006,0x00000022, +0x00000001,0x0000000a,0x00000021,0x000200fe, +0x00000022,0x00010038,0x00050036,0x00000006, +0x0000000e,0x00000000,0x00000009,0x00030037, +0x00000008,0x0000000d,0x000200f8,0x0000000f, +0x0004003b,0x00000013,0x00000025,0x00000007, +0x00050041,0x00000013,0x00000028,0x0000000d, +0x00000027,0x0004003d,0x00000006,0x00000029, +0x00000028,0x00050041,0x00000013,0x0000002a, +0x0000000d,0x00000027,0x0004003d,0x00000006, +0x0000002b,0x0000002a,0x00050085,0x00000006, +0x0000002c,0x00000029,0x0000002b,0x00050041, +0x00000013,0x0000002e,0x0000000d,0x0000002d, +0x0004003d,0x00000006,0x0000002f,0x0000002e, +0x00050041,0x00000013,0x00000030,0x0000000d, +0x0000002d,0x0004003d,0x00000006,0x00000031, +0x00000030,0x00050085,0x00000006,0x00000032, +0x0000002f,0x00000031,0x00050081,0x00000006, +0x00000033,0x0000002c,0x00000032,0x0006000c, +0x00000006,0x00000034,0x00000001,0x0000001f, +0x00000033,0x00050085,0x00000006,0x00000036, +0x00000034,0x00000035,0x0003003e,0x00000025, +0x00000036,0x0004003d,0x00000006,0x00000037, +0x00000025,0x0008000c,0x00000006,0x0000003a, +0x00000001,0x0000002b,0x00000037,0x00000038, +0x00000039,0x0003003e,0x00000025,0x0000003a, +0x0004003d,0x00000006,0x0000003b,0x00000025, +0x00050085,0x00000006,0x0000003d,0x0000003b, +0x0000003c,0x0006000c,0x00000006,0x0000003e, +0x00000001,0x0000000e,0x0000003d,0x00050085, +0x00000006,0x00000040,0x0000003e,0x0000003f, +0x000200fe,0x00000040,0x00010038,0x00050036, 0x00000006,0x00000011,0x00000000,0x00000009, 0x00030037,0x00000008,0x00000010,0x000200f8, -0x00000012,0x0004003b,0x00000013,0x0000004b, -0x00000007,0x0004003b,0x00000008,0x0000004d, -0x00000007,0x0004003b,0x00000013,0x00000053, -0x00000007,0x0004003b,0x00000008,0x00000054, +0x00000012,0x0004003b,0x00000013,0x00000043, +0x00000007,0x0004003b,0x00000008,0x00000045, +0x00000007,0x0004003b,0x00000013,0x0000004b, +0x00000007,0x0004003b,0x00000008,0x0000004c, +0x00000007,0x0004003b,0x00000008,0x00000056, 0x00000007,0x0004003b,0x00000008,0x00000061, -0x00000007,0x0004003b,0x00000008,0x0000006c, -0x00000007,0x0004003b,0x00000008,0x00000072, -0x00000007,0x0004003b,0x00000008,0x00000076, -0x00000007,0x0003003e,0x0000004b,0x0000004c, -0x0004003d,0x00000007,0x0000004e,0x00000010, -0x0004003d,0x00000006,0x0000004f,0x0000004b, -0x00050050,0x00000007,0x00000050,0x0000004f, -0x0000004f,0x00050088,0x00000007,0x00000051, -0x0000004e,0x00000050,0x0006000c,0x00000007, -0x00000052,0x00000001,0x00000008,0x00000051, -0x0003003e,0x0000004d,0x00000052,0x0004003d, -0x00000007,0x00000055,0x0000004d,0x0003003e, -0x00000054,0x00000055,0x00050039,0x00000006, -0x00000056,0x0000000b,0x00000054,0x0003003e, -0x00000053,0x00000056,0x0004003d,0x00000006, -0x00000057,0x00000053,0x0004003d,0x00000006, -0x00000059,0x0000001d,0x00050085,0x00000006, -0x0000005a,0x00000059,0x0000003c,0x00050085, -0x00000006,0x0000005b,0x00000058,0x0000005a, -0x000500ba,0x0000005c,0x0000005d,0x00000057, -0x0000005b,0x000300f7,0x0000005f,0x00000000, -0x000400fa,0x0000005d,0x0000005e,0x0000005f, -0x000200f8,0x0000005e,0x000200fe,0x00000041, -0x000200f8,0x0000005f,0x0004003d,0x00000006, -0x00000062,0x00000053,0x00050085,0x00000006, -0x00000064,0x00000062,0x00000063,0x0006000c, -0x00000006,0x00000065,0x00000001,0x0000000a, -0x00000064,0x0004003d,0x00000006,0x00000066, -0x00000053,0x00050050,0x00000007,0x00000067, -0x00000065,0x00000066,0x00050081,0x00000007, -0x00000069,0x00000067,0x00000068,0x0005008e, -0x00000007,0x0000006b,0x00000069,0x0000006a, -0x0003003e,0x00000061,0x0000006b,0x0004003d, -0x00000007,0x0000006d,0x00000010,0x0004003d, -0x00000006,0x0000006e,0x0000004b,0x00050050, -0x00000007,0x0000006f,0x0000006e,0x0000006e, -0x00050088,0x00000007,0x00000070,0x0000006d, -0x0000006f,0x0006000c,0x00000007,0x00000071, -0x00000001,0x0000000a,0x00000070,0x0003003e, -0x0000006c,0x00000071,0x0004003d,0x00000007, -0x00000073,0x0000006c,0x0004003d,0x00000007, -0x00000074,0x00000061,0x00050083,0x00000007, -0x00000075,0x00000073,0x00000074,0x0003003e, -0x00000072,0x00000075,0x0004003d,0x00000007, -0x00000077,0x00000072,0x0003003e,0x00000076, -0x00000077,0x00050039,0x00000006,0x00000078, -0x0000000e,0x00000076,0x000200fe,0x00000078, -0x00010038,0x00050036,0x00000006,0x00000018, -0x00000000,0x00000014,0x00030037,0x00000008, -0x00000015,0x00030037,0x00000013,0x00000016, -0x00030037,0x00000013,0x00000017,0x000200f8, -0x00000019,0x0004003b,0x00000008,0x0000009f, -0x00000007,0x00050041,0x00000013,0x0000007b, -0x00000015,0x00000034,0x0004003d,0x00000006, -0x0000007c,0x0000007b,0x00050085,0x00000006, -0x0000007e,0x0000007c,0x0000007d,0x0004003d, -0x00000006,0x0000007f,0x00000016,0x00050085, -0x00000006,0x00000081,0x0000007f,0x00000080, -0x00050085,0x00000006,0x00000082,0x00000081, -0x00000063,0x00050081,0x00000006,0x00000083, -0x0000007e,0x00000082,0x0004003d,0x00000006, -0x00000084,0x00000017,0x00050088,0x00000006, -0x00000085,0x00000042,0x00000084,0x00050081, -0x00000006,0x00000086,0x00000083,0x00000085, -0x0006000c,0x00000006,0x00000087,0x00000001, -0x0000000e,0x00000086,0x0004003d,0x00000006, -0x00000089,0x00000017,0x00050088,0x00000006, -0x0000008a,0x00000088,0x00000089,0x00050088, -0x00000006,0x0000008b,0x00000087,0x0000008a, -0x00050085,0x00000006,0x0000008d,0x0000008b, -0x0000008c,0x00050041,0x00000013,0x0000008e, -0x00000015,0x0000002e,0x0004003d,0x00000006, -0x0000008f,0x0000008e,0x00050081,0x00000006, -0x00000090,0x0000008f,0x0000008d,0x00050041, -0x00000013,0x00000091,0x00000015,0x0000002e, -0x0003003e,0x00000091,0x00000090,0x0004003d, -0x00000006,0x00000092,0x00000016,0x0004003d, -0x00000006,0x00000093,0x00000017,0x00050085, -0x00000006,0x00000094,0x00000092,0x00000093, -0x0005008e,0x00000007,0x00000097,0x00000096, -0x00000094,0x0005008e,0x00000007,0x00000098, -0x00000097,0x0000008c,0x0004003d,0x00000007, -0x00000099,0x00000015,0x00050081,0x00000007, -0x0000009a,0x00000099,0x00000098,0x0003003e, -0x00000015,0x0000009a,0x0004003d,0x00000007, -0x0000009b,0x00000015,0x0004003d,0x00000006, -0x0000009c,0x00000017,0x00050050,0x00000007, -0x0000009d,0x0000009c,0x0000009c,0x00050088, -0x00000007,0x0000009e,0x0000009b,0x0000009d, -0x0003003e,0x0000009f,0x0000009e,0x00050039, -0x00000006,0x000000a0,0x00000011,0x0000009f, -0x0004003d,0x00000006,0x000000a1,0x00000017, -0x00050085,0x00000006,0x000000a2,0x000000a1, -0x0000001e,0x00050081,0x00000006,0x000000a3, -0x000000a2,0x0000001e,0x00050085,0x00000006, -0x000000a4,0x000000a0,0x000000a3,0x000200fe, -0x000000a4,0x00010038} +0x00000007,0x0004003b,0x00000008,0x00000067, +0x00000007,0x0004003b,0x00000008,0x0000006b, +0x00000007,0x0003003e,0x00000043,0x00000044, +0x0004003d,0x00000007,0x00000046,0x00000010, +0x0004003d,0x00000006,0x00000047,0x00000043, +0x00050050,0x00000007,0x00000048,0x00000047, +0x00000047,0x00050088,0x00000007,0x00000049, +0x00000046,0x00000048,0x0006000c,0x00000007, +0x0000004a,0x00000001,0x00000008,0x00000049, +0x0003003e,0x00000045,0x0000004a,0x0004003d, +0x00000007,0x0000004d,0x00000045,0x0003003e, +0x0000004c,0x0000004d,0x00050039,0x00000006, +0x0000004e,0x0000000b,0x0000004c,0x0003003e, +0x0000004b,0x0000004e,0x0004003d,0x00000006, +0x0000004f,0x0000004b,0x000500ba,0x00000051, +0x00000052,0x0000004f,0x00000050,0x000300f7, +0x00000054,0x00000000,0x000400fa,0x00000052, +0x00000053,0x00000054,0x000200f8,0x00000053, +0x000200fe,0x00000038,0x000200f8,0x00000054, +0x0004003d,0x00000006,0x00000057,0x0000004b, +0x00050085,0x00000006,0x00000059,0x00000057, +0x00000058,0x0006000c,0x00000006,0x0000005a, +0x00000001,0x0000000a,0x00000059,0x0004003d, +0x00000006,0x0000005b,0x0000004b,0x00050050, +0x00000007,0x0000005c,0x0000005a,0x0000005b, +0x00050081,0x00000007,0x0000005e,0x0000005c, +0x0000005d,0x0005008e,0x00000007,0x00000060, +0x0000005e,0x0000005f,0x0003003e,0x00000056, +0x00000060,0x0004003d,0x00000007,0x00000062, +0x00000010,0x0004003d,0x00000006,0x00000063, +0x00000043,0x00050050,0x00000007,0x00000064, +0x00000063,0x00000063,0x00050088,0x00000007, +0x00000065,0x00000062,0x00000064,0x0006000c, +0x00000007,0x00000066,0x00000001,0x0000000a, +0x00000065,0x0003003e,0x00000061,0x00000066, +0x0004003d,0x00000007,0x00000068,0x00000061, +0x0004003d,0x00000007,0x00000069,0x00000056, +0x00050083,0x00000007,0x0000006a,0x00000068, +0x00000069,0x0003003e,0x00000067,0x0000006a, +0x0004003d,0x00000007,0x0000006c,0x00000067, +0x0003003e,0x0000006b,0x0000006c,0x00050039, +0x00000006,0x0000006d,0x0000000e,0x0000006b, +0x000200fe,0x0000006d,0x00010038,0x00050036, +0x00000006,0x00000018,0x00000000,0x00000014, +0x00030037,0x00000008,0x00000015,0x00030037, +0x00000013,0x00000016,0x00030037,0x00000013, +0x00000017,0x000200f8,0x00000019,0x0004003b, +0x00000008,0x00000094,0x00000007,0x00050041, +0x00000013,0x00000070,0x00000015,0x0000002d, +0x0004003d,0x00000006,0x00000071,0x00000070, +0x00050085,0x00000006,0x00000073,0x00000071, +0x00000072,0x0004003d,0x00000006,0x00000074, +0x00000016,0x00050085,0x00000006,0x00000076, +0x00000074,0x00000075,0x00050085,0x00000006, +0x00000077,0x00000076,0x00000058,0x00050081, +0x00000006,0x00000078,0x00000073,0x00000077, +0x0004003d,0x00000006,0x00000079,0x00000017, +0x00050088,0x00000006,0x0000007a,0x00000039, +0x00000079,0x00050081,0x00000006,0x0000007b, +0x00000078,0x0000007a,0x0006000c,0x00000006, +0x0000007c,0x00000001,0x0000000e,0x0000007b, +0x0004003d,0x00000006,0x0000007e,0x00000017, +0x00050088,0x00000006,0x0000007f,0x0000007d, +0x0000007e,0x00050088,0x00000006,0x00000080, +0x0000007c,0x0000007f,0x00050085,0x00000006, +0x00000082,0x00000080,0x00000081,0x00050041, +0x00000013,0x00000083,0x00000015,0x00000027, +0x0004003d,0x00000006,0x00000084,0x00000083, +0x00050081,0x00000006,0x00000085,0x00000084, +0x00000082,0x00050041,0x00000013,0x00000086, +0x00000015,0x00000027,0x0003003e,0x00000086, +0x00000085,0x0004003d,0x00000006,0x00000087, +0x00000016,0x0004003d,0x00000006,0x00000088, +0x00000017,0x00050085,0x00000006,0x00000089, +0x00000087,0x00000088,0x0005008e,0x00000007, +0x0000008c,0x0000008b,0x00000089,0x0005008e, +0x00000007,0x0000008d,0x0000008c,0x00000081, +0x0004003d,0x00000007,0x0000008e,0x00000015, +0x00050081,0x00000007,0x0000008f,0x0000008e, +0x0000008d,0x0003003e,0x00000015,0x0000008f, +0x0004003d,0x00000007,0x00000090,0x00000015, +0x0004003d,0x00000006,0x00000091,0x00000017, +0x00050050,0x00000007,0x00000092,0x00000091, +0x00000091,0x00050088,0x00000007,0x00000093, +0x00000090,0x00000092,0x0003003e,0x00000094, +0x00000093,0x00050039,0x00000006,0x00000095, +0x00000011,0x00000094,0x0004003d,0x00000006, +0x00000096,0x00000017,0x00050085,0x00000006, +0x00000097,0x00000096,0x0000003f,0x00050081, +0x00000006,0x00000098,0x00000097,0x0000003f, +0x00050085,0x00000006,0x00000099,0x00000095, +0x00000098,0x000200fe,0x00000099,0x00010038} diff --git a/gfx/drivers_shader/shader_vulkan.cpp b/gfx/drivers_shader/shader_vulkan.cpp index 50bcdf412e..fb3e47c1f7 100644 --- a/gfx/drivers_shader/shader_vulkan.cpp +++ b/gfx/drivers_shader/shader_vulkan.cpp @@ -2067,17 +2067,12 @@ void Pass::build_commands( VkRenderPassBeginInfo rp_info = { VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO }; - VkClearValue clear_value; - clear_value.color.float32[0] = 0.0f; - clear_value.color.float32[1] = 0.0f; - clear_value.color.float32[2] = 0.0f; - clear_value.color.float32[3] = 1.0f; rp_info.renderPass = framebuffer->get_render_pass(); rp_info.framebuffer = framebuffer->get_framebuffer(); rp_info.renderArea.extent.width = current_framebuffer_size.width; rp_info.renderArea.extent.height = current_framebuffer_size.height; - rp_info.clearValueCount = 1; - rp_info.pClearValues = &clear_value; + rp_info.clearValueCount = 0; + rp_info.pClearValues = nullptr; vkCmdBeginRenderPass(cmd, &rp_info, VK_SUBPASS_CONTENTS_INLINE); } diff --git a/menu/drivers_display/menu_display_vulkan.c b/menu/drivers_display/menu_display_vulkan.c index 3e99dc454f..ff0508b451 100644 --- a/menu/drivers_display/menu_display_vulkan.c +++ b/menu/drivers_display/menu_display_vulkan.c @@ -42,6 +42,13 @@ static const float vk_tex_coords[] = { 1, 0 }; +static const float vk_colors[] = { + 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, +}; + static void *menu_display_vk_get_default_mvp(void) { vk_t *vk = (vk_t*)video_driver_get_ptr(false); @@ -55,6 +62,11 @@ static const float *menu_display_vk_get_default_vertices(void) return &vk_vertexes[0]; } +static const float *menu_display_vk_get_default_color(void) +{ + return &vk_colors[0]; +} + static const float *menu_display_vk_get_default_tex_coords(void) { return &vk_tex_coords[0]; @@ -76,6 +88,8 @@ static unsigned to_menu_pipeline( return 4 + (type == MENU_DISPLAY_PRIM_TRIANGLESTRIP); case VIDEO_SHADER_MENU_2: return 6 + (type == MENU_DISPLAY_PRIM_TRIANGLESTRIP); + case VIDEO_SHADER_MENU_3: + return 8 + (type == MENU_DISPLAY_PRIM_TRIANGLESTRIP); default: return 0; } @@ -103,18 +117,50 @@ static void menu_display_vk_draw_pipeline(void *data) #ifdef HAVE_SHADERPIPELINE menu_display_ctx_draw_t *draw = (menu_display_ctx_draw_t*)data; vk_t *vk = (vk_t*)video_driver_get_ptr(false); - video_coord_array_t *ca = NULL; + video_coord_array_t *ca = NULL; + + static uint8_t ubo_scratch_data[256]; static float t = 0.0f; + static struct video_coords blank_coords; if (!vk || !draw) return; - ca = menu_display_get_coords_array(); - draw->x = 0; - draw->y = 0; - draw->coords = (struct video_coords*)&ca->coords; - draw->matrix_data = NULL; - draw->pipeline.backend_data = &t; + draw->x = 0; + draw->y = 0; + draw->matrix_data = NULL; + + float output_size[2] = { vk->context->swapchain_width, vk->context->swapchain_height }; + + switch (draw->pipeline.id) + { + /* Ribbon */ + default: + case VIDEO_SHADER_MENU: + case VIDEO_SHADER_MENU_2: + ca = menu_display_get_coords_array(); + draw->coords = (struct video_coords*)&ca->coords; + draw->pipeline.backend_data = ubo_scratch_data; + draw->pipeline.backend_data_size = sizeof(float); + + /* Match UBO layout in shader. */ + memcpy(ubo_scratch_data, &t, sizeof(t)); + break; + + /* Snow simple */ + case VIDEO_SHADER_MENU_3: + draw->pipeline.backend_data = ubo_scratch_data; + draw->pipeline.backend_data_size = sizeof(math_matrix_4x4) + 3 * sizeof(float); + + /* Match UBO layout in shader. */ + memcpy(ubo_scratch_data, menu_display_vk_get_default_mvp(), sizeof(math_matrix_4x4)); + memcpy(ubo_scratch_data + sizeof(math_matrix_4x4), output_size, sizeof(output_size)); + memcpy(ubo_scratch_data + sizeof(math_matrix_4x4) + 2 * sizeof(float), &t, sizeof(t)); + draw->coords = &blank_coords; + blank_coords.vertices = 4; + draw->prim_type = MENU_DISPLAY_PRIM_TRIANGLESTRIP; + break; + } t += 0.01; #endif @@ -148,6 +194,8 @@ static void menu_display_vk_draw(void *data) draw->coords->lut_tex_coord = menu_display_vk_get_default_tex_coords(); if (!texture) texture = &vk->display.blank_texture; + if (!color) + color = menu_display_vk_get_default_color(); menu_display_vk_viewport(draw); vk->tracker.dirty |= VULKAN_DIRTY_DYNAMIC_BIT; @@ -177,8 +225,6 @@ static void menu_display_vk_draw(void *data) case VIDEO_SHADER_MENU: case VIDEO_SHADER_MENU_2: case VIDEO_SHADER_MENU_3: - case VIDEO_SHADER_MENU_4: - case VIDEO_SHADER_MENU_5: { const struct vk_draw_triangles call = { vk->display.pipelines[ @@ -186,13 +232,18 @@ static void menu_display_vk_draw(void *data) NULL, VK_NULL_HANDLE, draw->pipeline.backend_data, - sizeof(float), + draw->pipeline.backend_data_size, &range, draw->coords->vertices, }; vulkan_draw_triangles(vk, &call); break; } + + /* Not implemented yet. */ + case VIDEO_SHADER_MENU_4: + case VIDEO_SHADER_MENU_5: + break; #endif default: diff --git a/menu/menu_display.h b/menu/menu_display.h index c3c8104dec..74e6620358 100644 --- a/menu/menu_display.h +++ b/menu/menu_display.h @@ -134,6 +134,7 @@ typedef struct menu_display_ctx_draw { unsigned id; const void *backend_data; + size_t backend_data_size; bool active; } pipeline; } menu_display_ctx_draw_t;