summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar ReinUsesLisp2020-01-21 17:41:09 -0300
committerGravatar ReinUsesLisp2020-01-29 17:53:11 -0300
commitc29584a0906e4d9a624b58467a74ff9d04c8d5de (patch)
tree3a763858b1fca87ba99d6001a3dfbd7a6852500f /src
parentyuzu: Implement Vulkan frontend (diff)
downloadyuzu-c29584a0906e4d9a624b58467a74ff9d04c8d5de.tar.gz
yuzu-c29584a0906e4d9a624b58467a74ff9d04c8d5de.tar.xz
yuzu-c29584a0906e4d9a624b58467a74ff9d04c8d5de.zip
yuzu_cmd: Fix memcpy on Vulkan handlers
Diffstat (limited to 'src')
-rw-r--r--src/yuzu_cmd/emu_window/emu_window_sdl2_vk.cpp15
-rw-r--r--src/yuzu_cmd/emu_window/emu_window_sdl2_vk.h4
2 files changed, 10 insertions, 9 deletions
diff --git a/src/yuzu_cmd/emu_window/emu_window_sdl2_vk.cpp b/src/yuzu_cmd/emu_window/emu_window_sdl2_vk.cpp
index 89e736ef6..a203f0da9 100644
--- a/src/yuzu_cmd/emu_window/emu_window_sdl2_vk.cpp
+++ b/src/yuzu_cmd/emu_window/emu_window_sdl2_vk.cpp
@@ -82,19 +82,19 @@ EmuWindow_SDL2_VK::EmuWindow_SDL2_VK(bool fullscreen) : EmuWindow_SDL2(fullscree
82 const auto vkCreateInstance = 82 const auto vkCreateInstance =
83 reinterpret_cast<PFN_vkCreateInstance>(vkGetInstanceProcAddr(nullptr, "vkCreateInstance")); 83 reinterpret_cast<PFN_vkCreateInstance>(vkGetInstanceProcAddr(nullptr, "vkCreateInstance"));
84 if (vkCreateInstance == nullptr || 84 if (vkCreateInstance == nullptr ||
85 vkCreateInstance(&instance_ci, nullptr, &instance) != VK_SUCCESS) { 85 vkCreateInstance(&instance_ci, nullptr, &vk_instance) != VK_SUCCESS) {
86 LOG_CRITICAL(Frontend, "Failed to create Vulkan instance!"); 86 LOG_CRITICAL(Frontend, "Failed to create Vulkan instance!");
87 exit(EXIT_FAILURE); 87 exit(EXIT_FAILURE);
88 } 88 }
89 89
90 vkDestroyInstance = reinterpret_cast<PFN_vkDestroyInstance>( 90 vkDestroyInstance = reinterpret_cast<PFN_vkDestroyInstance>(
91 vkGetInstanceProcAddr(instance, "vkDestroyInstance")); 91 vkGetInstanceProcAddr(vk_instance, "vkDestroyInstance"));
92 if (vkDestroyInstance == nullptr) { 92 if (vkDestroyInstance == nullptr) {
93 LOG_CRITICAL(Frontend, "Failed to retrieve Vulkan function pointer!"); 93 LOG_CRITICAL(Frontend, "Failed to retrieve Vulkan function pointer!");
94 exit(EXIT_FAILURE); 94 exit(EXIT_FAILURE);
95 } 95 }
96 96
97 if (!SDL_Vulkan_CreateSurface(render_window, instance, &surface)) { 97 if (!SDL_Vulkan_CreateSurface(render_window, vk_instance, &vk_surface)) {
98 LOG_CRITICAL(Frontend, "Failed to create Vulkan surface! {}", SDL_GetError()); 98 LOG_CRITICAL(Frontend, "Failed to create Vulkan surface! {}", SDL_GetError());
99 exit(EXIT_FAILURE); 99 exit(EXIT_FAILURE);
100 } 100 }
@@ -107,7 +107,7 @@ EmuWindow_SDL2_VK::EmuWindow_SDL2_VK(bool fullscreen) : EmuWindow_SDL2(fullscree
107} 107}
108 108
109EmuWindow_SDL2_VK::~EmuWindow_SDL2_VK() { 109EmuWindow_SDL2_VK::~EmuWindow_SDL2_VK() {
110 vkDestroyInstance(instance, nullptr); 110 vkDestroyInstance(vk_instance, nullptr);
111} 111}
112 112
113void EmuWindow_SDL2_VK::SwapBuffers() {} 113void EmuWindow_SDL2_VK::SwapBuffers() {}
@@ -122,9 +122,10 @@ void EmuWindow_SDL2_VK::DoneCurrent() {
122 122
123void EmuWindow_SDL2_VK::RetrieveVulkanHandlers(void* get_instance_proc_addr, void* instance, 123void EmuWindow_SDL2_VK::RetrieveVulkanHandlers(void* get_instance_proc_addr, void* instance,
124 void* surface) const { 124 void* surface) const {
125 std::memcpy(get_instance_proc_addr, vkGetInstanceProcAddr, sizeof(vkGetInstanceProcAddr)); 125 const auto instance_proc_addr = vkGetInstanceProcAddr;
126 std::memcpy(instance, &this->instance, sizeof(this->instance)); 126 std::memcpy(get_instance_proc_addr, &instance_proc_addr, sizeof(instance_proc_addr));
127 std::memcpy(surface, &this->surface, sizeof(this->surface)); 127 std::memcpy(instance, &vk_instance, sizeof(vk_instance));
128 std::memcpy(surface, &vk_surface, sizeof(vk_surface));
128} 129}
129 130
130std::unique_ptr<Core::Frontend::GraphicsContext> EmuWindow_SDL2_VK::CreateSharedContext() const { 131std::unique_ptr<Core::Frontend::GraphicsContext> EmuWindow_SDL2_VK::CreateSharedContext() const {
diff --git a/src/yuzu_cmd/emu_window/emu_window_sdl2_vk.h b/src/yuzu_cmd/emu_window/emu_window_sdl2_vk.h
index f7234841b..2a7c06a24 100644
--- a/src/yuzu_cmd/emu_window/emu_window_sdl2_vk.h
+++ b/src/yuzu_cmd/emu_window/emu_window_sdl2_vk.h
@@ -31,8 +31,8 @@ public:
31private: 31private:
32 bool UseStandardLayers(PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr) const; 32 bool UseStandardLayers(PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr) const;
33 33
34 VkInstance instance{}; 34 VkInstance vk_instance{};
35 VkSurfaceKHR surface{}; 35 VkSurfaceKHR vk_surface{};
36 36
37 PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr{}; 37 PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr{};
38 PFN_vkDestroyInstance vkDestroyInstance{}; 38 PFN_vkDestroyInstance vkDestroyInstance{};