Lines Matching defs:chain
53 struct wsi_win32_swapchain *chain;
306 struct wsi_win32_swapchain *chain,
311 assert(chain->base.use_buffer_blit);
312 VkResult result = wsi_create_image(&chain->base, &chain->base.image_info,
318 chain->wnd = win32_surface->hwnd;
319 chain->chain_dc = GetDC(chain->wnd);
321 image->dc = CreateCompatibleDC(chain->chain_dc);
342 image->chain = chain;
348 wsi_win32_image_finish(struct wsi_win32_swapchain *chain,
355 wsi_destroy_image(&chain->base, &image->base);
362 struct wsi_win32_swapchain *chain =
365 for (uint32_t i = 0; i < chain->base.image_count; i++)
366 wsi_win32_image_finish(chain, allocator, &chain->images[i]);
368 DeleteDC(chain->chain_dc);
370 wsi_swapchain_finish(&chain->base);
371 vk_free(allocator, chain);
379 struct wsi_win32_swapchain *chain =
382 return &chain->images[image_index].base;
390 struct wsi_win32_swapchain *chain =
394 if (chain->status != VK_SUCCESS)
395 return chain->status;
406 struct wsi_win32_swapchain *chain = (struct wsi_win32_swapchain *) drv_chain;
407 assert(image_index < chain->base.image_count);
408 struct wsi_win32_image *image = &chain->images[image_index];
410 assert(chain->base.use_buffer_blit);
415 for (unsigned h = 0; h < chain->extent.height; h++) {
416 memcpy(dptr, ptr, chain->extent.width * 4);
420 if (!StretchBlt(chain->chain_dc, 0, 0, chain->extent.width, chain->extent.height, image->dc, 0, 0, chain->extent.width, chain->extent.height, SRCCOPY))
421 chain->status = VK_ERROR_MEMORY_MAP_FAILED;
423 return chain->status;
442 struct wsi_win32_swapchain *chain;
443 size_t size = sizeof(*chain) + num_images * sizeof(chain->images[0]);
445 chain = vk_zalloc(allocator, size,
448 if (chain == NULL)
451 VkResult result = wsi_swapchain_init(wsi_device, &chain->base, device,
454 vk_free(allocator, chain);
458 chain->base.destroy = wsi_win32_swapchain_destroy;
459 chain->base.get_wsi_image = wsi_win32_get_wsi_image;
460 chain->base.acquire_next_image = wsi_win32_acquire_next_image;
461 chain->base.queue_present = wsi_win32_queue_present;
462 chain->base.present_mode = wsi_swapchain_get_present_mode(wsi_device, create_info);
463 chain->base.image_count = num_images;
464 chain->extent = create_info->imageExtent;
466 chain->wsi = wsi;
467 chain->status = VK_SUCCESS;
469 chain->surface = surface;
472 chain->base.use_buffer_blit = true;
474 result = wsi_configure_cpu_image(&chain->base, create_info, NULL /*alloc_shm*/, &chain->base.image_info);
476 vk_free(allocator, chain);
480 for (uint32_t image = 0; image < chain->base.image_count; image++) {
481 result = wsi_win32_image_init(device, chain,
483 &chain->images[image]);
487 wsi_win32_image_finish(chain, allocator,
488 &chain->images[image]);
490 wsi_destroy_image_info(&chain->base, &chain->base.image_info);
491 vk_free(allocator, chain);
496 *swapchain_out = &chain->base;