35 TRACE(
"Destroying swapchain %p.\n", swapchain);
46 WARN(
"Something's still holding the front buffer (%p).\n", swapchain->
front_buffer);
52 i = swapchain->
state.desc.backbuffer_count;
58 WARN(
"Something's still holding back buffer %u (%p).\n",
i, swapchain->
back_buffers[
i]);
70 if (!swapchain->
state.desc.windowed)
72 if (swapchain->
state.desc.auto_restore_display_mode)
75 ERR(
"Failed to restore display mode, hr %#lx.\n",
hr);
80 swapchain->
state.device_window, &swapchain->
state.original_window_rect);
103 TRACE(
"swapchain_vk %p.\n", swapchain_vk);
139 TRACE(
"%p increasing refcount to %u.\n", swapchain, refcount);
148 TRACE(
"%p decreasing refcount to %u.\n", swapchain, refcount);
157 if (
device->swapchain_count &&
device->swapchains[0] == swapchain)
162 swapchain->
device->adapter->adapter_ops->adapter_destroy_swapchain(swapchain);
172 TRACE(
"swapchain %p.\n", swapchain);
184 TRACE(
"Setting swapchain %p window from %p to %p.\n",
193 const RECT *src_rect,
const RECT *dst_rect,
HWND dst_window_override,
198 TRACE(
"swapchain %p, src_rect %s, dst_rect %s, dst_window_override %p, swap_interval %u, flags %#x.\n",
200 dst_window_override, swap_interval,
flags);
209 WARN(
"Swapchain doesn't have a backbuffer, returning WINED3DERR_INVALIDCALL.\n");
217 swapchain->
state.desc.backbuffer_height);
228 dst_rect, dst_window_override, swap_interval,
flags);
238 RECT src_rect, dst_rect;
240 TRACE(
"swapchain %p, dst_texture %p, sub_resource_idx %u.\n", swapchain, dst_texture, sub_resource_idx);
245 if (swapchain->
state.desc.windowed)
248 FIXME(
"Using destination rect %s in windowed mode, this is likely wrong.\n",
257 UINT back_buffer_idx)
259 TRACE(
"swapchain %p, back_buffer_idx %u.\n",
267 if (!
swapchain->back_buffers || back_buffer_idx >=
swapchain->state.desc.backbuffer_count)
269 WARN(
"Invalid back buffer index.\n");
275 TRACE(
"Returning back buffer %p.\n",
swapchain->back_buffers[back_buffer_idx]);
277 return swapchain->back_buffers[back_buffer_idx];
289 TRACE(
"swapchain %p.\n", swapchain);
291 return swapchain->
state.desc.output;
299 TRACE(
"swapchain %p, raster_status %p.\n", swapchain, raster_status);
304 ERR(
"Failed to get output from swapchain %p.\n", swapchain);
313 return &swapchain->
state;
322 TRACE(
"swapchain %p, mode %p, rotation %p.\n", swapchain,
mode, rotation);
326 ERR(
"Failed to get output from swapchain %p.\n", swapchain);
332 TRACE(
"Returning w %u, h %u, refresh rate %u, format %s.\n",
340 TRACE(
"swapchain %p.\n", swapchain);
348 TRACE(
"swapchain %p, desc %p.\n", swapchain,
desc);
358 TRACE(
"swapchain %p, flags %#x, ramp %p.\n", swapchain,
flags,
ramp);
365 ERR(
"Failed to get output from swapchain %p.\n", swapchain);
374 TRACE(
"swapchain %p, palette %p.\n", swapchain,
palette);
386 TRACE(
"swapchain %p, ramp %p.\n", swapchain,
ramp);
390 ERR(
"Failed to get output from swapchain %p.\n", swapchain);
406 unsigned int row_pitch, slice_pitch;
411 static unsigned int once;
413 TRACE(
"swapchain %p, context %p, src_rect %s, dst_rect %s.\n",
417 FIXME(
"Using GDI present.\n");
433 create_desc.
Pitch = row_pitch;
441 WARN(
"Failed to create DC, status %#lx.\n",
status);
445 src_dc = create_desc.
hDc;
448 TRACE(
"Created source DC %p, bitmap %p for backbuffer %p.\n", src_dc,
bitmap, back_buffer);
451 ERR(
"Failed to get destination DC.\n");
456 ERR(
"Failed to blit.\n");
459 destroy_desc.
hDc = src_dc;
462 ERR(
"Failed to destroy src dc, status %#lx.\n",
status);
474 TRACE(
"swapchain %p, context %p, src_rect %s, dst_rect %s.\n",
485 if (
texture->resource.multisample_type)
499 swap_interval = swap_interval <= 4 ? swap_interval : 1;
508 if (!
GL_EXTCALL(wglSwapIntervalEXT(swap_interval)))
510 ERR(
"Failed to set swap interval %u for context %p, last error %#lx.\n",
518 struct wined3d_texture_sub_resource *sub_resource;
526 if (swapchain->
state.desc.backbuffer_count < 2)
532 tex0 = texture_prev->texture_rgb;
534 locations0 = texture_prev->
t.sub_resources[0].locations;
536 for (
i = 1;
i < swapchain->
state.desc.backbuffer_count; ++
i)
539 sub_resource = &
texture->t.sub_resources[0];
541 if (!(sub_resource->locations & supported_locations))
544 texture_prev->texture_rgb =
texture->texture_rgb;
553 texture_prev->texture_rgb = tex0;
594 if (!context_gl->
valid)
597 WARN(
"Invalid context, skipping present.\n");
601 TRACE(
"Presenting DC %p.\n", context_gl->
dc);
620 if (
swapchain->device->context_count > 1)
622 WARN_(d3d_perf)(
"Multiple contexts, calling glFinish() to enforce ordering.\n");
623 gl_info->
gl_ops.gl.p_glFinish();
627 gl_info->
gl_ops.wgl.p_wglSwapBuffers(context_gl->
dc);
635 TRACE(
"SwapBuffers called, Starting new frame\n");
666 VkPhysicalDevice vk_physical_device;
668 bool supported =
false;
683 if (!(vk_modes =
calloc(
count,
sizeof(*vk_modes))))
695 if (vk_modes[
i] == vk_present_mode)
718 WARN(
"Unhandled format %#x.\n", vk_format);
724 VkSurfaceKHR vk_surface)
731 VkPhysicalDevice vk_physical_device;
739 vk_info = &adapter_vk->
vk_info;
747 if (vr < 0 || !format_count)
753 if (!(vk_formats =
calloc(format_count,
sizeof(*vk_formats))))
757 vk_surface, &format_count, vk_formats))) < 0)
764 for (
i = 0;
i < format_count; ++
i)
769 if (
i == format_count)
774 for (
i = 0;
i < format_count; ++
i)
781 if (
i == format_count)
787 TRACE(
"Using Vulkan swapchain format %#x.\n", vk_format);
793 VkSwapchainKHR vk_swapchain)
811 ERR(
"Failed to allocate images array.\n");
816 vk_swapchain, &image_count, swapchain_vk->
vk_images))) < 0)
825 ERR(
"Failed to allocate semaphores array.\n");
832 semaphore_info.
flags = 0;
833 for (
i = 0;
i < image_count; ++
i)
854 for (
i = 0;
i < image_count; ++
i)
877 VkSwapchainKHR vk_swapchain;
879 VkSurfaceKHR vk_surface;
890 surface_desc.
flags = 0;
892 surface_desc.
hwnd = swapchain_vk->
s.win_handle;
909 ERR(
"Failed to select swapchain format.\n");
914 swapchain_vk->
vk_surface, &surface_caps))) < 0)
920 image_count =
desc->backbuffer_count;
926 if (image_count !=
desc->backbuffer_count)
927 WARN(
"Image count %u is not supported (%u-%u).\n",
desc->backbuffer_count,
945 WARN(
"Swapchain dimensions %lux%lu are not supported (%u-%u x %u-%u).\n",
954 WARN(
"Transfer not supported for swapchain images.\n");
963 if (!swapchain_vk->
s.swap_interval)
968 FIXME(
"Unsupported swap interval %u.\n", swapchain_vk->
s.swap_interval);
973 vk_swapchain_desc.
flags = 0;
974 vk_swapchain_desc.surface = vk_surface;
1015 TRACE(
"swapchain_vk %p.\n", swapchain_vk);
1023 unsigned int swap_interval)
1025 if (swap_interval > 1)
1027 if (swap_interval <= 4)
1028 FIXME(
"Unsupported swap interval %u.\n", swap_interval);
1032 if (swapchain_vk->
s.swap_interval == swap_interval)
1035 swapchain_vk->
s.swap_interval = swap_interval;
1046 VkCommandBuffer vk_command_buffer;
1049 unsigned int present_idx;
1059 TRACE(
"swapchain_vk %p, context_vk %p, src_rect %s, dst_rect %s, swap_interval %u.\n",
1075 dst_rect_tmp = *dst_rect;
1080 dst_rect = &dst_rect_tmp;
1100 back_buffer_vk->
image.vk_image, &vk_range);
1106 swapchain_vk->
vk_images[image_idx], &vk_range);
1135 swapchain_vk->
vk_images[image_idx], &vk_range);
1145 vk_layout, back_buffer_vk->
layout,
1146 back_buffer_vk->
image.vk_image, &vk_range);
1151 1, &swapchain_vk->
vk_semaphores[present_idx].available, &wait_stage,
1169 struct wined3d_texture_sub_resource *sub_resource;
1180 if (swapchain->
state.desc.backbuffer_count < 2)
1186 image0 = texture_prev->
image;
1187 vk_layout0 = texture_prev->
layout;
1190 locations0 = texture_prev->
t.sub_resources[0].locations;
1192 for (
i = 1;
i < swapchain->
state.desc.backbuffer_count; ++
i)
1195 sub_resource = &
texture->t.sub_resources[0];
1197 if (!(sub_resource->locations & supported_locations))
1211 texture_prev->
image = image0;
1212 texture_prev->
layout = vk_layout0;
1246 ERR(
"Failed to recreate swapchain, hr %#lx.\n",
hr);
1248 swapchain_vk, context_vk, src_rect, dst_rect, swap_interval)))
1263 TRACE(
"Starting new frame.\n");
1276 struct wined3d_dc_info *
front;
1282 TRACE(
"swapchain %p.\n", swapchain);
1289 ERR(
"Trying to blit a mapped surface.\n");
1291 TRACE(
"Copying surface %p to screen.\n",
front);
1299 if (swapchain->
state.desc.windowed)
1319 struct wined3d_dc_info *
front, *back;
1332 front->dc = back->dc;
1333 front->bitmap = back->bitmap;
1367 while (!(
format->multisample_types & 1u << (
t - 1)))
1369 TRACE(
"Using sample count %u.\n",
t);
1399 ERR(
"Failed to get current display mode, hr %#lx.\n",
hr);
1403 if (
state->desc.windowed)
1410 if (!
state->desc.backbuffer_width)
1412 state->desc.backbuffer_width = client_rect.
right ? client_rect.
right : 8;
1413 TRACE(
"Updating width to %u.\n",
state->desc.backbuffer_width);
1415 if (!
state->desc.backbuffer_height)
1418 TRACE(
"Updating height to %u.\n",
state->desc.backbuffer_height);
1423 state->desc.backbuffer_format =
state->original_mode.format_id;
1431 state->d3d_mode.width =
desc->backbuffer_width;
1432 state->d3d_mode.height =
desc->backbuffer_height;
1434 desc->backbuffer_format);
1435 state->d3d_mode.refresh_rate =
desc->refresh_rate;
1469 texture_desc.
usage = 0;
1480 texture_desc.
depth = 1;
1481 texture_desc.
size = 0;
1496 WARN(
"Failed to create texture, hr %#lx.\n",
hr);
1519 if (
desc->backbuffer_count > 1)
1521 FIXME(
"The application requested more than one back buffer, this is not properly supported.\n"
1522 "Please configure the application to use double buffering (1 back buffer) if possible.\n");
1528 FIXME(
"Unimplemented swap effect %#x.\n",
desc->swap_effect);
1535 ERR(
"Failed to initialise swapchain state, hr %#lx.\n",
hr);
1549 if (!swapchain->
state.desc.windowed)
1553 ERR(
"Failed to get output description, hr %#lx.\n",
hr);
1559 desc->backbuffer_height);
1562 &swapchain->
state.desc.multisample_type, &swapchain->
state.desc.multisample_quality);
1564 TRACE(
"Creating front buffer.\n");
1568 WARN(
"Failed to create front buffer, hr %#lx.\n",
hr);
1585 &swapchain->
state.d3d_mode)))
1587 WARN(
"Failed to set display mode, hr %#lx.\n",
hr);
1590 displaymode_set =
TRUE;
1593 if (swapchain->
state.desc.backbuffer_count > 0)
1598 ERR(
"Failed to allocate backbuffer array memory.\n");
1603 for (
i = 0;
i < swapchain->
state.desc.backbuffer_count; ++
i)
1605 TRACE(
"Creating back buffer %u.\n",
i);
1608 WARN(
"Failed to create back buffer %u, hr %#lx.\n",
i,
hr);
1609 swapchain->
state.desc.backbuffer_count =
i;
1616 if (
desc->enable_auto_depth_stencil)
1618 TRACE(
"Creating depth/stencil buffer.\n");
1619 if (!
device->auto_depth_stencil_view)
1626 WARN(
"Failed to create the auto depth/stencil surface, hr %#lx.\n",
hr);
1630 desc.format_id =
ds->resource.format->id;
1632 desc.u.texture.level_idx = 0;
1633 desc.u.texture.level_count = 1;
1634 desc.u.texture.layer_idx = 0;
1635 desc.u.texture.layer_count = 1;
1637 &
device->auto_depth_stencil_view);
1641 ERR(
"Failed to create rendertarget view, hr %#lx.\n",
hr);
1654 if (displaymode_set)
1657 ERR(
"Failed to restore display mode.\n");
1662 for (
i = 0;
i <
swapchain->state.desc.backbuffer_count; ++
i)
1689 TRACE(
"swapchain_no3d %p, device %p, desc %p, state_parent %p, parent %p, parent_ops %p.\n",
1700 TRACE(
"swapchain_gl %p, device %p, desc %p, state_parent %p, parent %p, parent_ops %p.\n",
1713 TRACE(
"swapchain_vk %p, device %p, desc %p, parent %p, parent_ops %p.\n",
1722 WARN(
"Creating a desktop window swapchain.\n");
1727 WARN(
"Failed to create a Vulkan swapchain, hr %#lx.\n",
hr);
1750 device->adapter->adapter_ops->adapter_destroy_swapchain(
object);
1771 if (!(context_gl =
calloc(1,
sizeof(*context_gl))))
1773 ERR(
"Failed to allocate context memory.\n");
1779 WARN(
"Failed to initialise context.\n");
1786 ERR(
"Failed to add the newly created context to the context list.\n");
1791 TRACE(
"Created context %p.\n", context_gl);
1804 for (
i = 0;
i <
device->context_count; ++
i)
1820 for (
i = 0;
i < swapchain->
state.desc.backbuffer_count; ++
i)
1831 unsigned int screensaver_active;
1847 if ((
device->restore_screensaver = !!screensaver_active))
1862 ERR(
"Failed to get output from swapchain %p.\n", swapchain);
1871 ERR(
"Failed to get output description, hr %#lx.\n",
hr);
1879 ERR(
"Failed to get output from swapchain %p.\n", swapchain);
1884 &swapchain->
state.d3d_mode)))
1885 ERR(
"Failed to set display mode, hr %#lx.\n",
hr);
1888 if (swapchain ==
device->swapchains[0])
1893 if (
device->restore_screensaver)
1900 ERR(
"Failed to restore display modes, hr %#lx.\n",
hr);
1912 if (swapchain ==
device->swapchains[0])
1919 if (!focus_messages)
1928 bool recreate =
false;
1930 TRACE(
"swapchain %p, buffer_count %u, width %u, height %u, format %s, "
1931 "multisample_type %#x, multisample_quality %#x.\n",
1938 FIXME(
"Cannot change the back buffer count yet.\n");
1972 if (!
desc->windowed)
1997 TRACE(
"Recreating swapchain textures.\n");
2003 ERR(
"Something's still holding the front buffer (%p).\n",
swapchain->front_buffer);
2012 for (
i = 0;
i <
desc->backbuffer_count; ++
i)
2018 ERR(
"Something's still holding back buffer %u (%p).\n",
i,
swapchain->back_buffers[
i]);
2037 WARN(
"Failed to find closest matching mode, hr %#lx.\n",
hr);
2041 if (output !=
state->desc.output)
2045 WARN(
"Failed to restore display modes, hr %#lx.\n",
hr);
2051 WARN(
"Failed to get current display mode, hr %#lx.\n",
hr);
2058 WARN(
"Failed to set display mode, hr %#lx.\n",
hr);
2070 RECT original_window_rect, window_rect;
2081 if (
state->desc.windowed)
2089 x = original_window_rect.left;
2090 y = original_window_rect.top;
2091 width = window_rect.right - window_rect.left;
2092 height = window_rect.bottom - window_rect.top;
2098 actual_mode = *
mode;
2102 ERR(
"Failed to set display mode, hr %#lx.\n",
hr);
2110 ERR(
"Failed to get output description, hr %#lx.\n",
hr);
2157#define WINED3D_WINDOW_TOPMOST_TIMER_ID 0x4242
2195 TRACE(
"Window %p belongs to thread %#lx.\n",
s->window, window_tid);
2199 if (window_tid ==
tid)
2204 if (
s->register_topmost_timer)
2206 if (
s->set_topmost_timer)
2221 ERR(
"Failed to create thread.\n");
2230 TRACE(
"Setting up window %p for fullscreen mode.\n",
window);
2249 ERR(
"Changing the window style for window %p, but another style (%08lx, %08lx) is already stored.\n",
2264 s->set_style =
true;
2266 s->set_topmost_timer =
true;
2268 TRACE(
"Old style was %08lx, %08lx, setting to %08lx, %08lx.\n",
2288 s->window_pos_after =
NULL;
2296 s->flags &= ~SWP_NOZORDER;
2311 TRACE(
"Restoring window style of window %p to %08lx, %08lx.\n",
2315 s->exstyle =
state->exstyle;
2322 s->set_topmost_timer =
false;
2326 s->x = window_rect->
left;
2327 s->y = window_rect->
top;
2328 s->width = window_rect->
right - window_rect->
left;
2329 s->height = window_rect->
bottom - window_rect->
top;
2333 s->x =
s->y =
s->width =
s->height = 0;
2353 TRACE(
"state %p, swapchain_desc %p, mode %p.\n",
state, swapchain_desc,
mode);
2359 actual_mode = *
mode;
2382 WARN(
"Failed to restore display modes for all outputs, hr %#lx.\n",
hr);
2391 WARN(
"WINED3D_SWAPCHAIN_ALLOW_MODE_SWITCH is not set, ignoring mode.\n");
2396 ERR(
"Failed to get display mode, hr %#lx.\n",
hr);
2408 ERR(
"Failed to get output description, hr %#lx.\n",
hr);
2412 if (
state->desc.windowed)
2431 state->d3d_mode = actual_mode;
2433 else if (!
state->desc.windowed)
2438 window_rect = &
state->original_window_rect;
2445 if (windowed !=
state->desc.windowed)
2446 state->parent->ops->windowed_state_changed(
state->parent,
state->desc.windowed);
2455 return state->desc.windowed;
HRESULT WINAPI DECLSPEC_HOTPATCH SetThreadDescription(_In_ HANDLE hThread, _In_ PCWSTR lpThreadDescription)
#define InterlockedIncrement
#define InterlockedDecrement
static const char * wine_dbgstr_point(const POINT *ppt)
static const char * wine_dbgstr_rect(const RECT *prc)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
HRESULT wined3d_context_gl_init(struct wined3d_context_gl *context_gl, struct wined3d_swapchain_gl *swapchain_gl)
void wined3d_context_gl_submit_command_fence(struct wined3d_context_gl *context_gl)
void wined3d_context_gl_destroy(struct wined3d_context_gl *context_gl)
void wined3d_context_vk_end_current_render_pass(struct wined3d_context_vk *context_vk)
VkCommandBuffer wined3d_context_vk_get_command_buffer(struct wined3d_context_vk *context_vk)
void wined3d_context_vk_image_barrier(struct wined3d_context_vk *context_vk, VkCommandBuffer vk_command_buffer, VkPipelineStageFlags src_stage_mask, VkPipelineStageFlags dst_stage_mask, VkAccessFlags src_access_mask, VkAccessFlags dst_access_mask, VkImageLayout old_layout, VkImageLayout new_layout, VkImage image, const VkImageSubresourceRange *range)
void wined3d_context_vk_submit_command_buffer(struct wined3d_context_vk *context_vk, unsigned int wait_semaphore_count, const VkSemaphore *wait_semaphores, const VkPipelineStageFlags *wait_stages, unsigned int signal_semaphore_count, const VkSemaphore *signal_semaphores)
void wined3d_context_vk_wait_command_buffer(struct wined3d_context_vk *context_vk, uint64_t id)
void wined3d_cs_emit_present(struct wined3d_cs *cs, struct wined3d_swapchain *swapchain, const RECT *src_rect, const RECT *dst_rect, HWND dst_window_override, unsigned int swap_interval, uint32_t flags)
void wined3d_cs_destroy_object(struct wined3d_cs *cs, void(*callback)(void *object), void *object)
HRESULT wined3d_device_set_implicit_swapchain(struct wined3d_device *device, struct wined3d_swapchain *swapchain)
BOOL device_context_add(struct wined3d_device *device, struct wined3d_context *context)
void device_invalidate_state(const struct wined3d_device *device, unsigned int state_id)
void wined3d_device_uninit_3d(struct wined3d_device *device)
void CDECL wined3d_device_release_focus_window(struct wined3d_device *device)
void CDECL wined3d_palette_apply_to_dc(const struct wined3d_palette *palette, HDC dc)
VkAccessFlags vk_access_mask_from_bind_flags(uint32_t bind_flags)
void wined3d_resource_update_draw_binding(struct wined3d_resource *resource)
void wined3d_texture_invalidate_location(struct wined3d_texture *texture, unsigned int sub_resource_idx, uint32_t location)
HRESULT CDECL wined3d_texture_create(struct wined3d_device *device, const struct wined3d_resource_desc *desc, UINT layer_count, UINT level_count, uint32_t flags, const struct wined3d_sub_resource_data *data, void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_texture **texture)
void wined3d_texture_set_swapchain(struct wined3d_texture *texture, struct wined3d_swapchain *swapchain)
ULONG CDECL wined3d_texture_decref(struct wined3d_texture *texture)
void wined3d_texture_validate_location(struct wined3d_texture *texture, unsigned int sub_resource_idx, uint32_t location)
HRESULT CDECL wined3d_device_context_blt(struct wined3d_device_context *context, struct wined3d_texture *dst_texture, unsigned int dst_sub_resource_idx, const RECT *dst_rect, struct wined3d_texture *src_texture, unsigned int src_sub_resource_idx, const RECT *src_rect, unsigned int flags, const struct wined3d_blt_fx *fx, enum wined3d_texture_filter_type filter)
BOOL wined3d_texture_load_location(struct wined3d_texture *texture, unsigned int sub_resource_idx, struct wined3d_context *context, uint32_t location)
void CDECL wined3d_texture_get_pitch(const struct wined3d_texture *texture, unsigned int level, unsigned int *row_pitch, unsigned int *slice_pitch)
const char * debug_d3dformat(enum wined3d_format_id format_id)
const char * wined3d_debug_vkresult(VkResult vr)
const struct wined3d_format * wined3d_get_format(const struct wined3d_adapter *adapter, enum wined3d_format_id format_id, unsigned int bind_flags)
enum wined3d_format_id pixelformat_for_depth(DWORD depth)
HRESULT CDECL wined3d_rendertarget_view_create(const struct wined3d_view_desc *desc, struct wined3d_resource *resource, void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_rendertarget_view **view)
#define WINE_DECLARE_DEBUG_CHANNEL(x)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateThread(IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId)
static VOID BitBlt(_In_ ULONG Left, _In_ ULONG Top, _In_ ULONG Width, _In_ ULONG Height, _In_reads_bytes_(Height *Stride) PUCHAR Buffer, _In_ ULONG BitsPerPixel, _In_ ULONG Stride)
static VkFormat get_swapchain_fallback_format(VkFormat vk_format)
GLint GLint GLsizei GLsizei GLsizei depth
GLint GLint GLint GLint GLint x
GLuint GLuint GLsizei count
GLint GLint GLsizei GLsizei height
GLuint GLuint GLsizei GLenum type
GLint GLint GLint GLint GLint GLint y
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLint GLint GLsizei width
GLsizeiptr const GLvoid GLenum usage
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
#define location(file, line)
D3D11_SHADER_VARIABLE_DESC desc
static const BYTE ramp[17]
static IHTMLWindow2 * window
unsigned __int3264 UINT_PTR
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
BOOL WINAPI IsWindow(_In_opt_ HWND)
#define GetWindowLongPtrW
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
BOOL WINAPI SetWindowPos(_In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
LONG WINAPI SetWindowLongW(_In_ HWND, _In_ int, _In_ LONG)
LONG WINAPI GetWindowLongW(_In_ HWND, _In_ int)
#define SPI_SETSCREENSAVEACTIVE
BOOL WINAPI AdjustWindowRectEx(_Inout_ LPRECT, _In_ DWORD, _In_ BOOL, _In_ DWORD)
HDC WINAPI GetDCEx(_In_opt_ HWND, _In_opt_ HRGN, _In_ DWORD)
int WINAPI MapWindowPoints(_In_opt_ HWND hWndFrom, _In_opt_ HWND hWndTo, _Inout_updates_(cPoints) LPPOINT lpPoints, _In_ UINT cPoints)
BOOL WINAPI ClientToScreen(_In_ HWND, _Inout_ LPPOINT)
UINT_PTR WINAPI SetTimer(_In_opt_ HWND, _In_ UINT_PTR, _In_ UINT, _In_opt_ TIMERPROC)
HWND WINAPI GetDesktopWindow(void)
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
BOOL WINAPI IntersectRect(_Out_ LPRECT, _In_ LPCRECT, _In_ LPCRECT)
BOOL WINAPI SystemParametersInfoW(_In_ UINT uiAction, _In_ UINT uiParam, _Inout_opt_ PVOID pvParam, _In_ UINT fWinIni)
BOOL WINAPI SetRectEmpty(_Out_ LPRECT)
BOOL WINAPI KillTimer(_In_opt_ HWND, _In_ UINT_PTR)
BOOL WINAPI IsWindowVisible(_In_ HWND)
BOOL WINAPI MoveWindow(_In_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ BOOL)
#define SPI_GETSCREENSAVEACTIVE
BOOL WINAPI SetRect(_Out_ LPRECT, _In_ int, _In_ int, _In_ int, _In_ int)
static struct address_cache * front
VkImageSubresourceLayers srcSubresource
VkImageSubresourceLayers dstSubresource
VkImageAspectFlags aspectMask
VkImageAspectFlags aspectMask
const VkSemaphore * pWaitSemaphores
uint32_t waitSemaphoreCount
const uint32_t * pImageIndices
const VkSwapchainKHR * pSwapchains
VkSemaphoreCreateFlags flags
VkSurfaceTransformFlagBitsKHR currentTransform
VkCompositeAlphaFlagsKHR supportedCompositeAlpha
VkExtent2D maxImageExtent
VkExtent2D minImageExtent
VkImageUsageFlags supportedUsageFlags
uint32_t imageArrayLayers
VkPresentModeKHR presentMode
VkImageUsageFlags imageUsage
VkSharingMode imageSharingMode
VkSwapchainCreateFlagsKHR flags
VkColorSpaceKHR imageColorSpace
uint32_t queueFamilyIndexCount
VkSurfaceTransformFlagBitsKHR preTransform
const uint32_t * pQueueFamilyIndices
VkCompositeAlphaFlagBitsKHR compositeAlpha
VkWin32SurfaceCreateFlagsKHR flags
PALETTEENTRY * pColorTable
struct wined3d_pixel_format * pixel_formats
struct wined3d_vk_info vk_info
VkPhysicalDevice physical_device
const struct wined3d_gl_info * gl_info
struct wined3d_command_buffer_vk current_command_buffer
const struct wined3d_vk_info * vk_info
struct wined3d_swapchain * swapchain
uint32_t vk_queue_family_index
enum wined3d_format_id format_id
enum wined3d_scanline_ordering scanline_ordering
BOOL supported[WINED3D_GL_EXT_COUNT]
struct opengl_funcs gl_ops
enum wined3d_resource_type resource_type
enum wined3d_multisample_type multisample_type
unsigned int multisample_quality
enum wined3d_format_id format
unsigned int sample_count
unsigned int multisample_quality
unsigned int backbuffer_height
enum wined3d_multisample_type multisample_type
enum wined3d_format_id auto_depth_stencil_format
struct wined3d_output * output
unsigned int backbuffer_width
enum wined3d_format_id backbuffer_format
unsigned int refresh_rate
unsigned int backbuffer_bind_flags
struct wined3d_swapchain s
VkSwapchainKHR vk_swapchain
struct wined3d_swapchain s
struct wined3d_swapchain_vk::@366 * vk_semaphores
struct wined3d_texture ** back_buffers
unsigned int swap_interval
const struct wined3d_swapchain_ops * swapchain_ops
struct wined3d_palette * palette
unsigned int max_frame_latency
struct wined3d_texture * front_buffer
struct wined3d_swapchain_state state
struct wined3d_gamma_ramp orig_gamma
const struct wined3d_parent_ops * parent_ops
struct wined3d_device * device
struct wined3d_image_vk image
VkDescriptorImageInfo default_image_info
enum VkImageLayout layout
struct wined3d_swapchain * swapchain
struct wined3d_resource resource
bool register_topmost_timer
VkFlags VkPipelineStageFlags
VkResult VKAPI_CALL vkCreateSwapchainKHR(VkDevice device, const VkSwapchainCreateInfoKHR *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkSwapchainKHR *pSwapchain)
@ VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL
@ VK_IMAGE_LAYOUT_PRESENT_SRC_KHR
@ VK_IMAGE_LAYOUT_UNDEFINED
@ VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
void VKAPI_CALL vkDestroySemaphore(VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks *pAllocator)
@ VK_SHARING_MODE_EXCLUSIVE
VkResult VKAPI_CALL vkQueueWaitIdle(VkQueue queue)
VkResult VKAPI_CALL vkGetPhysicalDeviceSurfacePresentModesKHR(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t *pPresentModeCount, VkPresentModeKHR *pPresentModes)
VkFlags VkImageUsageFlags
VkResult VKAPI_CALL vkAcquireNextImageKHR(VkDevice device, VkSwapchainKHR swapchain, uint64_t timeout, VkSemaphore semaphore, VkFence fence, uint32_t *pImageIndex)
void VKAPI_CALL vkCmdBlitImage(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageBlit *pRegions, VkFilter filter)
void VKAPI_CALL vkDestroySwapchainKHR(VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks *pAllocator)
VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilitiesKHR(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR *pSurfaceCapabilities)
VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface, VkBool32 *pSupported)
@ VK_IMAGE_ASPECT_COLOR_BIT
@ VK_IMAGE_USAGE_TRANSFER_DST_BIT
@ VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
@ VK_IMAGE_USAGE_TRANSFER_SRC_BIT
@ VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR
VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceFormatsKHR(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t *pSurfaceFormatCount, VkSurfaceFormatKHR *pSurfaceFormats)
VkResult VKAPI_CALL vkCreateSemaphore(VkDevice device, const VkSemaphoreCreateInfo *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkSemaphore *pSemaphore)
VkResult VKAPI_CALL vkCreateWin32SurfaceKHR(VkInstance instance, const VkWin32SurfaceCreateInfoKHR *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface)
VkResult VKAPI_CALL vkQueuePresentKHR(VkQueue queue, const VkPresentInfoKHR *pPresentInfo)
@ VK_ERROR_OUT_OF_DATE_KHR
@ VK_ACCESS_TRANSFER_WRITE_BIT
@ VK_ACCESS_TRANSFER_READ_BIT
@ VK_PRESENT_MODE_IMMEDIATE_KHR
@ VK_PRESENT_MODE_FIFO_KHR
VkResult VKAPI_CALL vkGetSwapchainImagesKHR(VkDevice device, VkSwapchainKHR swapchain, uint32_t *pSwapchainImageCount, VkImage *pSwapchainImages)
@ VK_FORMAT_R8G8B8A8_SRGB
@ VK_FORMAT_B8G8R8A8_UNORM
@ VK_FORMAT_A2B10G10R10_UNORM_PACK32
@ VK_FORMAT_B8G8R8A8_SRGB
@ VK_FORMAT_R8G8B8A8_UNORM
@ VK_FORMAT_R16G16B16A16_SFLOAT
@ VK_COLOR_SPACE_SRGB_NONLINEAR_KHR
@ VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT
@ VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT
@ VK_PIPELINE_STAGE_ALL_COMMANDS_BIT
@ VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT
@ VK_PIPELINE_STAGE_TRANSFER_BIT
void VKAPI_CALL vkDestroySurfaceKHR(VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks *pAllocator)
@ VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR
@ VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO
@ VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR
@ VK_STRUCTURE_TYPE_PRESENT_INFO_KHR
#define WGL_SWAP_COPY_ARB
DWORD WINAPI GetLastError(void)
DWORD WINAPI GetCurrentThreadId(void)
DWORD WINAPI GetWindowThreadProcessId(HWND hWnd, PDWORD lpdwProcessId)
NTSTATUS WINAPI D3DKMTDestroyDCFromMemory(const D3DKMT_DESTROYDCFROMMEMORY *desc)
NTSTATUS WINAPI D3DKMTCreateDCFromMemory(D3DKMT_CREATEDCFROMMEMORY *desc)
HRESULT wined3d_output_get_gamma_ramp(struct wined3d_output *output, struct wined3d_gamma_ramp *ramp)
HRESULT CDECL wined3d_output_set_display_mode(struct wined3d_output *output, const struct wined3d_display_mode *mode)
HRESULT CDECL wined3d_restore_display_modes(struct wined3d *wined3d)
HRESULT CDECL wined3d_output_get_desc(const struct wined3d_output *output, struct wined3d_output_desc *desc)
HRESULT CDECL wined3d_output_set_gamma_ramp(struct wined3d_output *output, const struct wined3d_gamma_ramp *ramp)
const struct wined3d_parent_ops wined3d_null_parent_ops
HRESULT CDECL wined3d_output_find_closest_matching_mode(struct wined3d_output *output, struct wined3d_display_mode *mode)
HRESULT CDECL wined3d_output_get_display_mode(const struct wined3d_output *output, struct wined3d_display_mode *mode, enum wined3d_display_rotation *rotation)
HRESULT CDECL wined3d_output_get_raster_status(const struct wined3d_output *output, struct wined3d_raster_status *raster_status)
HRESULT CDECL wined3d_swapchain_state_resize_target(struct wined3d_swapchain_state *state, const struct wined3d_display_mode *mode)
static VkFormat wined3d_swapchain_vk_select_vk_format(struct wined3d_swapchain_vk *swapchain_vk, VkSurfaceKHR vk_surface)
static HRESULT wined3d_swapchain_vk_create_vulkan_swapchain(struct wined3d_swapchain_vk *swapchain_vk)
struct wined3d_texture *CDECL wined3d_swapchain_get_back_buffer(const struct wined3d_swapchain *swapchain, UINT back_buffer_idx)
void CDECL wined3d_swapchain_get_desc(const struct wined3d_swapchain *swapchain, struct wined3d_swapchain_desc *desc)
void CDECL wined3d_swapchain_state_destroy(struct wined3d_swapchain_state *state)
HRESULT CDECL wined3d_swapchain_get_raster_status(const struct wined3d_swapchain *swapchain, struct wined3d_raster_status *raster_status)
static void wined3d_swapchain_apply_sample_count_override(const struct wined3d_swapchain *swapchain, enum wined3d_format_id format_id, enum wined3d_multisample_type *type, unsigned int *quality)
void *CDECL wined3d_swapchain_get_parent(const struct wined3d_swapchain *swapchain)
static void wined3d_swapchain_vk_destroy_vulkan_swapchain(struct wined3d_swapchain_vk *swapchain_vk)
static void swapchain_vk_present(struct wined3d_swapchain *swapchain, const RECT *src_rect, const RECT *dst_rect, unsigned int swap_interval, uint32_t flags)
void CDECL wined3d_swapchain_set_window(struct wined3d_swapchain *swapchain, HWND window)
void swapchain_update_draw_bindings(struct wined3d_swapchain *swapchain)
BOOL CDECL wined3d_swapchain_state_is_windowed(const struct wined3d_swapchain_state *state)
#define WINED3D_WINDOW_TOPMOST_TIMER_ID
static const struct wined3d_swapchain_ops swapchain_vk_ops
void wined3d_swapchain_gl_cleanup(struct wined3d_swapchain_gl *swapchain_gl)
static VkResult wined3d_swapchain_vk_blit(struct wined3d_swapchain_vk *swapchain_vk, struct wined3d_context_vk *context_vk, const RECT *src_rect, const RECT *dst_rect, unsigned int swap_interval)
static void set_window_state(struct wined3d_window_state *s)
static HRESULT wined3d_swapchain_init(struct wined3d_swapchain *swapchain, struct wined3d_device *device, const struct wined3d_swapchain_desc *desc, struct wined3d_swapchain_state_parent *state_parent, void *parent, const struct wined3d_parent_ops *parent_ops, const struct wined3d_swapchain_ops *swapchain_ops)
static void CALLBACK topmost_timer_proc(HWND hwnd, UINT msg, UINT_PTR id, DWORD time)
static void swapchain_gdi_present(struct wined3d_swapchain *swapchain, const RECT *src_rect, const RECT *dst_rect, unsigned int swap_interval, uint32_t flags)
static struct wined3d_context_gl * wined3d_swapchain_gl_create_context(struct wined3d_swapchain_gl *swapchain_gl)
static void swapchain_blit(const struct wined3d_swapchain *swapchain, struct wined3d_context *context, const RECT *src_rect, const RECT *dst_rect)
static void wined3d_swapchain_vk_rotate(struct wined3d_swapchain *swapchain, struct wined3d_context_vk *context_vk)
static void wined3d_swapchain_vk_set_swap_interval(struct wined3d_swapchain_vk *swapchain_vk, unsigned int swap_interval)
static void swapchain_blit_gdi(struct wined3d_swapchain *swapchain, struct wined3d_context *context, const RECT *src_rect, const RECT *dst_rect)
struct wined3d_output * wined3d_swapchain_get_output(const struct wined3d_swapchain *swapchain)
static HRESULT wined3d_swapchain_vk_recreate(struct wined3d_swapchain_vk *swapchain_vk)
HRESULT CDECL wined3d_swapchain_resize_buffers(struct wined3d_swapchain *swapchain, unsigned int buffer_count, unsigned int width, unsigned int height, enum wined3d_format_id format_id, enum wined3d_multisample_type multisample_type, unsigned int multisample_quality)
ULONG CDECL wined3d_swapchain_decref(struct wined3d_swapchain *swapchain)
HRESULT wined3d_swapchain_state_setup_fullscreen(struct wined3d_swapchain_state *state, HWND window, int x, int y, int width, int height)
static HRESULT wined3d_swapchain_state_set_display_mode(struct wined3d_swapchain_state *state, struct wined3d_output *output, struct wined3d_display_mode *mode)
static HRESULT swapchain_create_texture(struct wined3d_swapchain *swapchain, bool front, bool depth, struct wined3d_texture **texture)
HRESULT CDECL wined3d_swapchain_create(struct wined3d_device *device, const struct wined3d_swapchain_desc *desc, struct wined3d_swapchain_state_parent *state_parent, void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_swapchain **swapchain)
HRESULT wined3d_swapchain_vk_init(struct wined3d_swapchain_vk *swapchain_vk, struct wined3d_device *device, const struct wined3d_swapchain_desc *desc, struct wined3d_swapchain_state_parent *state_parent, void *parent, const struct wined3d_parent_ops *parent_ops)
static enum wined3d_format_id adapter_format_from_backbuffer_format(const struct wined3d_adapter *adapter, enum wined3d_format_id format_id)
static void wined3d_swapchain_gl_rotate(struct wined3d_swapchain *swapchain, struct wined3d_context *context)
HRESULT CDECL wined3d_swapchain_get_gamma_ramp(const struct wined3d_swapchain *swapchain, struct wined3d_gamma_ramp *ramp)
void wined3d_swapchain_vk_cleanup(struct wined3d_swapchain_vk *swapchain_vk)
HRESULT CDECL wined3d_swapchain_state_set_fullscreen(struct wined3d_swapchain_state *state, const struct wined3d_swapchain_desc *swapchain_desc, const struct wined3d_display_mode *mode)
HRESULT wined3d_swapchain_gl_init(struct wined3d_swapchain_gl *swapchain_gl, struct wined3d_device *device, const struct wined3d_swapchain_desc *desc, struct wined3d_swapchain_state_parent *state_parent, void *parent, const struct wined3d_parent_ops *parent_ops)
static LONG fullscreen_style(LONG style)
static DWORD WINAPI set_window_state_thread(void *ctx)
static bool wined3d_swapchain_vk_present_mode_supported(struct wined3d_swapchain_vk *swapchain_vk, VkPresentModeKHR vk_present_mode)
HRESULT wined3d_swapchain_no3d_init(struct wined3d_swapchain *swapchain_no3d, struct wined3d_device *device, const struct wined3d_swapchain_desc *desc, struct wined3d_swapchain_state_parent *state_parent, void *parent, const struct wined3d_parent_ops *parent_ops)
void CDECL wined3d_swapchain_set_palette(struct wined3d_swapchain *swapchain, struct wined3d_palette *palette)
static const struct wined3d_swapchain_ops swapchain_gl_ops
ULONG CDECL wined3d_swapchain_incref(struct wined3d_swapchain *swapchain)
static void swapchain_frontbuffer_updated(struct wined3d_swapchain *swapchain)
HRESULT CDECL wined3d_swapchain_get_front_buffer_data(const struct wined3d_swapchain *swapchain, struct wined3d_texture *dst_texture, unsigned int sub_resource_idx)
static void wined3d_swapchain_vk_destroy_object(void *object)
struct wined3d_device *CDECL wined3d_swapchain_get_device(const struct wined3d_swapchain *swapchain)
static const struct wined3d_swapchain_ops swapchain_no3d_ops
HRESULT CDECL wined3d_swapchain_state_create(const struct wined3d_swapchain_desc *desc, HWND window, struct wined3d *wined3d, struct wined3d_swapchain_state_parent *state_parent, struct wined3d_swapchain_state **state)
static void swapchain_gl_set_swap_interval(struct wined3d_swapchain *swapchain, struct wined3d_context_gl *context_gl, unsigned int swap_interval)
HRESULT CDECL wined3d_swapchain_get_display_mode(const struct wined3d_swapchain *swapchain, struct wined3d_display_mode *mode, enum wined3d_display_rotation *rotation)
static void swapchain_gl_present(struct wined3d_swapchain *swapchain, const RECT *src_rect, const RECT *dst_rect, unsigned int swap_interval, uint32_t flags)
void swapchain_set_max_frame_latency(struct wined3d_swapchain *swapchain, const struct wined3d_device *device)
HRESULT CDECL wined3d_swapchain_present(struct wined3d_swapchain *swapchain, const RECT *src_rect, const RECT *dst_rect, HWND dst_window_override, unsigned int swap_interval, uint32_t flags)
static void swapchain_gdi_frontbuffer_updated(struct wined3d_swapchain *swapchain)
static bool swapchain_present_is_partial_copy(struct wined3d_swapchain *swapchain, const RECT *dst_rect)
static LONG fullscreen_exstyle(LONG exstyle)
static HRESULT wined3d_swapchain_state_init(struct wined3d_swapchain_state *state, const struct wined3d_swapchain_desc *desc, HWND window, struct wined3d *wined3d, struct wined3d_swapchain_state_parent *parent)
HRESULT CDECL wined3d_swapchain_set_gamma_ramp(const struct wined3d_swapchain *swapchain, uint32_t flags, const struct wined3d_gamma_ramp *ramp)
void wined3d_swapchain_cleanup(struct wined3d_swapchain *swapchain)
void CDECL wined3d_swapchain_state_get_size(const struct wined3d_swapchain_state *state, unsigned int *width, unsigned int *height)
struct wined3d_swapchain_state *CDECL wined3d_swapchain_get_state(struct wined3d_swapchain *swapchain)
struct wined3d_context_gl * wined3d_swapchain_gl_get_context(struct wined3d_swapchain_gl *swapchain_gl)
void wined3d_swapchain_state_restore_from_fullscreen(struct wined3d_swapchain_state *state, HWND window, const RECT *window_rect)
static bool wined3d_swapchain_vk_create_vulkan_swapchain_images(struct wined3d_swapchain_vk *swapchain_vk, VkSwapchainKHR vk_swapchain)
struct wined3d_texture *CDECL wined3d_swapchain_get_front_buffer(const struct wined3d_swapchain *swapchain)
void wined3d_swapchain_activate(struct wined3d_swapchain *swapchain, BOOL activate)
#define WINED3D_RESTORE_MODE_ON_ACTIVATE
@ WINED3D_SWAP_INTERVAL_DEFAULT
#define WINED3D_SWAPCHAIN_ALLOW_MODE_SWITCH
#define WINED3D_SWAPCHAIN_IMPLICIT
#define WINED3DUSAGE_OWNDC
@ WINED3D_SWAP_EFFECT_FLIP_DISCARD
@ WINED3D_SWAP_EFFECT_COPY
@ WINED3D_SWAP_EFFECT_SEQUENTIAL
@ WINED3D_SWAP_EFFECT_DISCARD
@ WINED3D_SWAP_EFFECT_COPY_VSYNC
#define WINED3D_SWAPCHAIN_RESTORE_WINDOW_RECT
#define WINED3D_RESOURCE_ACCESS_GPU
#define WINED3D_RESOURCE_ACCESS_CPU
@ WINED3D_RTYPE_TEXTURE_2D
#define WINED3D_SWAPCHAIN_REGISTER_TOPMOST_TIMER
#define WINED3DERR_NOTAVAILABLE
wined3d_texture_filter_type
#define WINED3D_SWAPCHAIN_GDI_COMPATIBLE
#define WINED3DCREATE_NOWINDOWCHANGES
#define WINED3D_SWAPCHAIN_LOCKABLE_BACKBUFFER
#define WINED3D_SWAPCHAIN_RESTORE_WINDOW_STATE
#define WINED3D_BIND_DEPTH_STENCIL
#define WINED3D_RESOURCE_ACCESS_MAP_R
#define WINED3D_SWAPCHAIN_REGISTER_STATE
@ WINED3D_SCANLINE_ORDERING_UNKNOWN
#define WINED3D_BIND_RENDER_TARGET
#define WINED3DERR_INVALIDCALL
#define WINED3D_TEXTURE_CREATE_GET_DC
#define WINED3D_FOCUS_MESSAGES
#define WINED3D_RESOURCE_ACCESS_MAP_W
#define WINED3D_SWAPCHAIN_USE_CLOSEST_MATCHING_MODE
#define WINED3D_SWAPCHAIN_NO_WINDOW_CHANGES
void WINAPI wined3d_mutex_unlock(void)
BOOL wined3d_filter_messages(HWND window, BOOL filter)
void wined3d_swapchain_state_cleanup(struct wined3d_swapchain_state *state)
void WINAPI wined3d_mutex_lock(void)
void wined3d_swapchain_state_register(struct wined3d_swapchain_state *state)
static unsigned int wined3d_texture_get_level_height(const struct wined3d_texture *texture, unsigned int level)
#define WINED3D_LOCATION_SYSMEM
static void wined3d_cs_finish(struct wined3d_cs *cs, enum wined3d_cs_queue_id queue_id)
static unsigned int wined3d_texture_get_level_width(const struct wined3d_texture *texture, unsigned int level)
static BOOL is_complex_fixup(struct color_fixup_desc fixup)
#define WINED3D_LOCATION_RB_RESOLVED
static void context_release(struct wined3d_context *context)
#define WINED3D_LOCATION_TEXTURE_RGB
#define WINED3D_LOCATION_DRAWABLE
static void wined3d_from_cs(const struct wined3d_cs *cs)
#define WINED3D_LOCATION_RB_MULTISAMPLE
static struct wined3d_context * context_acquire(struct wined3d_device *device, struct wined3d_texture *texture, unsigned int sub_resource_idx)
@ WINED3D_CS_QUEUE_DEFAULT
#define STATE_FRAMEBUFFER
@ WINED3D_BLIT_OP_COLOR_BLIT
static void wined3d_context_vk_reference_texture(const struct wined3d_context_vk *context_vk, struct wined3d_texture_vk *texture_vk)
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)
BOOL WINAPI StretchBlt(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int, _In_opt_ HDC, _In_ int, _In_ int, _In_ int, _In_ int, _In_ DWORD)
BOOL WINAPI DeleteDC(_In_ HDC)
size_t const buffer_count