@@ -52,18 +52,6 @@ static bool g_display_cursor = false;
5252
5353namespace render {
5454
55- const char * const kRequiredExtensions [] = {" VK_KHR_surface" , " VK_KHR_win32_surface" , " VK_EXT_debug_utils" };
56- const char * const kDeviceExtensions [] = {VK_KHR_SWAPCHAIN_EXTENSION_NAME};
57- const char * const kValidationLayers [] = {" VK_LAYER_KHRONOS_validation" };
58-
59- #ifdef NDEBUG
60- constexpr bool kEnableValidationLayers = false ;
61- constexpr size_t kRequiredExtensionCount = polymer_array_count(kRequiredExtensions ) - 1 ;
62- #else
63- constexpr bool kEnableValidationLayers = true ;
64- constexpr size_t kRequiredExtensionCount = polymer_array_count(kRequiredExtensions );
65- #endif
66-
6755bool CreateWindowSurface (PolymerWindow window, VkSurfaceKHR* surface) {
6856 HWND hwnd = (HWND)window;
6957
@@ -72,12 +60,13 @@ bool CreateWindowSurface(PolymerWindow window, VkSurfaceKHR* surface) {
7260 surface_info.hinstance = GetModuleHandle (nullptr );
7361 surface_info.hwnd = hwnd;
7462
75- return vkCreateWin32SurfaceKHR (instance, &surface_info, nullptr , surface) == VK_SUCCESS;
63+ return vkCreateWin32SurfaceKHR (vk_render. instance , &surface_info, nullptr , surface) == VK_SUCCESS;
7664}
7765
7866IntRect GetWindowRect (PolymerWindow window) {
7967 IntRect result;
8068 RECT rect;
69+ HWND hwnd = (HWND)window;
8170
8271 GetClientRect (hwnd, &rect);
8372
@@ -254,7 +243,7 @@ int run(const LaunchArgs& args) {
254243 printf (" Polymer\n " );
255244 fflush (stdout);
256245
257- GameState* game = memory_arena_construct_type (& perm_arena, GameState, &vk_render, &perm_arena, &trans_arena);
246+ GameState* game = perm_arena. Construct < GameState>( &vk_render, &perm_arena, &trans_arena);
258247 PacketInterpreter interpreter (game);
259248 Connection* connection = &game->connection ;
260249
@@ -301,7 +290,28 @@ int run(const LaunchArgs& args) {
301290 return 1 ;
302291 }
303292
304- vk_render.Initialize (hwnd);
293+ render::ExtensionRequest extension_request;
294+
295+ const char * kRequiredExtensions [] = {" VK_KHR_surface" , " VK_KHR_win32_surface" , " VK_EXT_debug_utils" };
296+ const char * kDeviceExtensions [] = {VK_KHR_SWAPCHAIN_EXTENSION_NAME};
297+ const char * kValidationLayers [] = {" VK_LAYER_KHRONOS_validation" };
298+
299+ #ifdef NDEBUG
300+ constexpr size_t kRequiredExtensionCount = polymer_array_count (kRequiredExtensions ) - 1 ;
301+ constexpr size_t kValidationLayerCount = 0 ;
302+ #else
303+ constexpr size_t kRequiredExtensionCount = polymer_array_count (kRequiredExtensions );
304+ constexpr size_t kValidationLayerCount = polymer_array_count (kValidationLayers );
305+ #endif
306+
307+ extension_request.device_extensions = kDeviceExtensions ;
308+ extension_request.device_extension_count = polymer_array_count (kDeviceExtensions );
309+ extension_request.extensions = kRequiredExtensions ;
310+ extension_request.extension_count = kRequiredExtensionCount ;
311+ extension_request.validation_layers = kValidationLayers ;
312+ extension_request.validation_layer_count = kValidationLayerCount ;
313+
314+ vk_render.Initialize (hwnd, extension_request);
305315
306316 {
307317
@@ -375,8 +385,9 @@ int run(const LaunchArgs& args) {
375385
376386 connection->SetBlocking (false );
377387
378- connection->SendHandshake (kProtocolVersion , args.server , args.server_port , ProtocolState::Login);
379- connection->SendLoginStart (args.username );
388+ connection->SendHandshake (kProtocolVersion , args.server .data , args.server .size , args.server_port ,
389+ ProtocolState::Login);
390+ connection->SendLoginStart (args.username .data , args.username .size );
380391
381392 memcpy (game->player_manager .client_name , args.username .data , args.username .size );
382393 game->player_manager .client_name [args.username .size ] = 0 ;
0 commit comments