Просмотр исходного кода

emit_spirv: Fix RescalingLayout alignment

ameerj 5 лет назад
Родитель
Сommit
dc28284437

+ 2 - 2
src/shader_recompiler/backend/spirv/emit_spirv.h

@@ -23,8 +23,8 @@ constexpr u32 NUM_TEXTURE_AND_IMAGE_SCALING_WORDS =
 
 struct RescalingLayout {
     u32 down_factor;
-    std::array<u32, NUM_TEXTURE_SCALING_WORDS> rescaling_textures;
-    std::array<u32, NUM_IMAGE_SCALING_WORDS> rescaling_images;
+    alignas(16) std::array<u32, NUM_TEXTURE_SCALING_WORDS> rescaling_textures;
+    alignas(16) std::array<u32, NUM_IMAGE_SCALING_WORDS> rescaling_images;
 };
 
 [[nodiscard]] std::vector<u32> EmitSPIRV(const Profile& profile, const RuntimeInfo& runtime_info,

+ 1 - 1
src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp

@@ -479,7 +479,7 @@ void GraphicsPipeline::ConfigureDraw(const RescalingPushConstant& rescaling) {
         }
         if (update_rescaling) {
             const f32 config_down_factor{Settings::values.resolution_info.down_factor};
-            const float scale_down_factor{is_rescaling ? config_down_factor : 1.0f};
+            const f32 scale_down_factor{is_rescaling ? config_down_factor : 1.0f};
             cmdbuf.PushConstants(*pipeline_layout, VK_SHADER_STAGE_ALL_GRAPHICS, 0,
                                  sizeof(scale_down_factor), &scale_down_factor);
         }