44 TRACE(
"Destroying swapchain %p.\n", swapchain);
54 WARN(
"Something's still holding the front buffer (%p).\n", swapchain->
front_buffer);
60 i = swapchain->
desc.backbuffer_count;
66 WARN(
"Something's still holding back buffer %u (%p).\n",
i, swapchain->
back_buffers[
i]);
81 if (!swapchain->
desc.windowed && swapchain->
desc.auto_restore_display_mode)
84 swapchain->
device->adapter->ordinal, &swapchain->original_mode)))
85 ERR(
"Failed to restore display mode, hr %#x.\n",
hr);
108 TRACE(
"%p increasing refcount to %u.\n", swapchain, refcount);
117 TRACE(
"%p decreasing refcount to %u.\n", swapchain, refcount);
135 TRACE(
"swapchain %p.\n", swapchain);
147 TRACE(
"Setting swapchain %p window from %p to %p.\n",
153 const RECT *src_rect,
const RECT *dst_rect,
HWND dst_window_override,
156 static DWORD notified_flags = 0;
159 TRACE(
"swapchain %p, src_rect %s, dst_rect %s, dst_window_override %p, flags %#x.\n",
161 dst_window_override,
flags);
163 if (
flags & ~notified_flags)
165 FIXME(
"Ignoring flags %#x.\n",
flags & ~notified_flags);
166 notified_flags |=
flags;
171 WARN(
"Swapchain doesn't have a backbuffer, returning WINED3DERR_INVALIDCALL\n");
178 swapchain->
desc.backbuffer_height);
189 dst_rect, dst_window_override, swap_interval,
flags);
197 RECT src_rect, dst_rect;
199 TRACE(
"swapchain %p, dst_texture %p, sub_resource_idx %u.\n", swapchain, dst_texture, sub_resource_idx);
204 if (swapchain->
desc.windowed)
207 FIXME(
"Using destination rect %s in windowed mode, this is likely wrong.\n",
216 UINT back_buffer_idx)
218 TRACE(
"swapchain %p, back_buffer_idx %u.\n",
228 WARN(
"Invalid back buffer index.\n");
234 TRACE(
"Returning back buffer %p.\n",
swapchain->back_buffers[back_buffer_idx]);
236 return swapchain->back_buffers[back_buffer_idx];
242 TRACE(
"swapchain %p, raster_status %p.\n",
swapchain, raster_status);
245 swapchain->device->adapter->ordinal, raster_status);
258 TRACE(
"Returning w %u, h %u, refresh rate %u, format %s.\n",
266 TRACE(
"swapchain %p.\n", swapchain);
274 TRACE(
"swapchain %p, desc %p.\n", swapchain,
desc);
284 TRACE(
"swapchain %p, flags %#x, ramp %p.\n", swapchain,
flags,
ramp);
298 TRACE(
"swapchain %p, palette %p.\n", swapchain,
palette);
307 TRACE(
"swapchain %p, ramp %p.\n", swapchain,
ramp);
326 TRACE(
"swapchain %p, context %p, src_rect %s, dst_rect %s.\n",
337 if (
texture->resource.multisample_type)
349 struct wined3d_texture_sub_resource *sub_resource;
363 tex0 = texture_prev->texture_rgb;
367 for (
i = 1;
i < swapchain->
desc.backbuffer_count; ++
i)
370 sub_resource = &
texture->sub_resources[0];
372 if (!(sub_resource->locations & supported_locations))
375 texture_prev->texture_rgb =
texture->texture_rgb;
384 texture_prev->texture_rgb = tex0;
407 WARN(
"Invalid context, skipping present.\n");
413 if ((logo_texture =
swapchain->device->logo_texture))
435 swapchain->device->cursor_texture->resource.width,
436 swapchain->device->cursor_texture->resource.height
440 TRACE(
"Rendering the software cursor.\n");
446 swapchain->device->cursor_texture, 0, &src_rect,
452 if (!(render_to_fbo =
swapchain->render_to_fbo)
453 && (src_rect->
left || src_rect->
top
456 || dst_rect->
left || dst_rect->
top
459 render_to_fbo =
TRUE;
483#if !defined(STAGING_CSMT)
488 gl_info->gl_ops.gl.p_glFinish();
495 TRACE(
"SwapBuffers called, Starting new frame\n");
505 TRACE_(fps)(
"%p @ approx %.2ffps\n",
564 TRACE(
"swapchain %p.\n", swapchain);
570 if (
front->container->resource.map_count)
571 ERR(
"Trying to blit a mapped surface.\n");
573 TRACE(
"Copying surface %p to screen.\n",
front);
581 if (swapchain->
desc.windowed)
607 back = swapchain->
back_buffers[0]->sub_resources[0].u.surface;
612 data =
front->container->resource.heap_memory;
616 front->container->resource.heap_memory = back->
container->resource.heap_memory;
625 static LONG prev_time, frames;
631 if (
time - prev_time > 1500)
633 TRACE_(fps)(
"@ approx %.2ffps\n", 1000.0 * frames / (
time - prev_time));
656 if (!swapchain->
desc.backbuffer_count)
658 TRACE(
"Single buffered rendering.\n");
663 TRACE(
"Rendering to FBO.\n");
677 gl_info = &swapchain->
device->adapter->gl_info;
682 while (!(
format->multisample_types & 1u << (
t - 1)))
684 TRACE(
"Using sample count %u.\n",
t);
718 FIXME(
"Unhandled present interval %#x.\n",
swapchain->desc.swap_interval);
724 if (!
GL_EXTCALL(wglSwapIntervalEXT(swap_interval)))
725 ERR(
"wglSwapIntervalEXT failed to set swap interval %d for context %p, last error %#x\n",
747 gl_info = &swapchain->
device->adapter->gl_info;
761 WARN(
"Failed to create context.\n");
767 && (!swapchain->
desc.enable_auto_depth_stencil
768 || swapchain->
desc.auto_depth_stencil_format != swapchain->
ds_format->id))
769 FIXME(
"Add OpenGL context recreation support.\n");
782 DWORD texture_flags = 0;
788 if (
desc->backbuffer_count > 1)
790 FIXME(
"The application requested more than one back buffer, this is not properly supported.\n"
791 "Please configure the application to use double buffering (1 back buffer) if possible.\n");
797 FIXME(
"Unimplemented swap effect %#x.\n",
desc->swap_effect);
814 adapter->ordinal, &swapchain->original_mode,
NULL)))
816 ERR(
"Failed to get current display mode, hr %#x.\n",
hr);
824 if (!
desc->backbuffer_width)
826 desc->backbuffer_width = client_rect.
right;
827 TRACE(
"Updating width to %u.\n",
desc->backbuffer_width);
830 if (!
desc->backbuffer_height)
833 TRACE(
"Updating height to %u.\n",
desc->backbuffer_height);
838 desc->backbuffer_format = swapchain->original_mode.format_id;
844 &swapchain->
desc.multisample_type, &swapchain->
desc.multisample_quality);
847 TRACE(
"Creating front buffer.\n");
850 texture_desc.
format = swapchain->
desc.backbuffer_format;
853 texture_desc.
usage = 0;
855 texture_desc.
width = swapchain->
desc.backbuffer_width;
856 texture_desc.
height = swapchain->
desc.backbuffer_height;
857 texture_desc.
depth = 1;
858 texture_desc.
size = 0;
866 WARN(
"Failed to create front buffer, hr %#x.\n",
hr);
887 swapchain->
d3d_mode.format_id =
desc->backbuffer_format;
894 WARN(
"Failed to set display mode, hr %#x.\n",
hr);
897 displaymode_set =
TRUE;
901 swapchain->
d3d_mode = swapchain->original_mode;
909 ERR(
"Failed to create the context array.\n");
924 if (swapchain->
desc.backbuffer_count > 0)
929 ERR(
"Failed to allocate backbuffer array memory.\n");
934 texture_desc.
usage = swapchain->
desc.backbuffer_usage;
935 for (
i = 0;
i < swapchain->
desc.backbuffer_count; ++
i)
937 TRACE(
"Creating back buffer %u.\n",
i);
941 WARN(
"Failed to create back buffer %u, hr %#x.\n",
i,
hr);
942 swapchain->
desc.backbuffer_count =
i;
952 TRACE(
"Creating depth/stencil buffer.\n");
953 if (!
device->auto_depth_stencil_view)
962 device->device_parent, &texture_desc, texture_flags, &
ds)))
964 WARN(
"Failed to create the auto depth/stencil surface, hr %#x.\n",
hr);
968 desc.format_id =
ds->resource.format->id;
970 desc.u.texture.level_idx = 0;
971 desc.u.texture.level_count = 1;
972 desc.u.texture.layer_idx = 0;
973 desc.u.texture.layer_count = 1;
975 &
device->auto_depth_stencil_view);
979 ERR(
"Failed to create rendertarget view, hr %#x.\n",
hr);
994 ERR(
"Failed to restore display mode.\n");
1029 TRACE(
"device %p, desc %p, parent %p, parent_ops %p, swapchain %p.\n",
1032 if (!(
object = heap_alloc_zero(
sizeof(*
object))))
1038 WARN(
"Failed to initialize swapchain, hr %#x.\n",
hr);
1043 TRACE(
"Created swapchain %p.\n",
object);
1058 ERR(
"Failed to create a new context for the swapchain\n");
1065 ERR(
"Out of memory when trying to allocate a new context array\n");
1075 TRACE(
"Returning context %p\n",
ctx);
1111 TRACE(
"Creating the backup window for swapchain %p.\n",
swapchain);
1116 ERR(
"Failed to create a window.\n");
1122 ERR(
"Failed to get a DC.\n");
1173 swapchain->
desc.backbuffer_width, swapchain->
desc.backbuffer_height,
1181 ERR(
"Failed to set display mode.\n");
1188 ERR(
"Failed to set display mode.\n");
1207 TRACE(
"swapchain %p, buffer_count %u, width %u, height %u, format %s, "
1208 "multisample_type %#x, multisample_quality %#x.\n",
1210 multisample_type, multisample_quality);
1214 if (buffer_count && buffer_count != swapchain->
desc.backbuffer_count)
1215 FIXME(
"Cannot change the back buffer count yet.\n");
1227 if (!swapchain->
desc.windowed)
1243 if (
width != swapchain->
desc.backbuffer_width
1244 ||
height != swapchain->
desc.backbuffer_height)
1246 swapchain->
desc.backbuffer_width =
width;
1253 if (!swapchain->
desc.windowed)
1255 format_id = swapchain->original_mode.format_id;
1264 if (multisample_type != swapchain->
desc.multisample_type
1265 || multisample_quality != swapchain->
desc.multisample_quality)
1267 swapchain->
desc.multisample_type = multisample_type;
1268 swapchain->
desc.multisample_quality = multisample_quality;
1278 swapchain->
desc.backbuffer_height, swapchain->
desc.backbuffer_format,
1279 swapchain->
desc.multisample_type, swapchain->
desc.multisample_quality,
NULL, 0)))
1282 for (
i = 0;
i < swapchain->
desc.backbuffer_count; ++
i)
1285 swapchain->
desc.backbuffer_height, swapchain->
desc.backbuffer_format,
1286 swapchain->
desc.multisample_type, swapchain->
desc.multisample_quality,
NULL, 0)))
1308 WARN(
"Failed to find closest matching mode, hr %#x.\n",
hr);
1315 WARN(
"Failed to set display mode, hr %#x.\n",
hr);
1327 RECT original_window_rect, window_rect;
1330 TRACE(
"swapchain %p, mode %p.\n", swapchain,
mode);
1332 if (swapchain->
desc.windowed)
1339 window_rect.right - window_rect.left, window_rect.bottom - window_rect.top);
1341 OffsetRect(&window_rect, original_window_rect.left, original_window_rect.top);
1345 actual_mode = *
mode;
1353 &actual_mode,
NULL)))
1355 ERR(
"Failed to get display mode, hr %#x.\n",
hr);
1363 window_rect.right - window_rect.left,
1364 window_rect.bottom - window_rect.top,
TRUE);
1376 TRACE(
"swapchain %p, desc %p, mode %p.\n", swapchain, swapchain_desc,
mode);
1382 actual_mode = *
mode;
1396 actual_mode = swapchain->original_mode;
1406 WARN(
"WINED3D_SWAPCHAIN_ALLOW_MODE_SWITCH is not set, ignoring mode.\n");
1409 &actual_mode,
NULL)))
1411 ERR(
"Failed to get display mode, hr %#x.\n",
hr);
1421 if (swapchain->
desc.windowed)
1424 HWND focus_window =
device->create_parms.focus_window;
1429 ERR(
"Failed to acquire focus window, hr %#x.\n",
hr);
1438 BOOL filter_messages =
device->filter_messages;
1444 device->filter_messages = filter_messages;
1448 else if (!swapchain->
desc.windowed)
static void * heap_alloc(size_t len)
static BOOL heap_free(void *mem)
#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)
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, DWORD swap_interval, DWORD flags)
void wined3d_cs_destroy_object(struct wined3d_cs *cs, void(*callback)(void *object), void *object)
void wined3d_cs_init_object(struct wined3d_cs *cs, void(*callback)(void *object), void *object)
static HRESULT swapchain_init(struct d3d8_swapchain *swapchain, struct d3d8_device *device, struct wined3d_swapchain_desc *desc)
static const struct pixel_format_desc formats[]
struct wined3d_context * context_acquire(const struct wined3d_device *device, struct wined3d_texture *texture, unsigned int sub_resource_idx)
void context_destroy(struct wined3d_device *device, struct wined3d_context *context)
struct wined3d_context * context_create(struct wined3d_swapchain *swapchain, struct wined3d_texture *target, const struct wined3d_format *ds_format)
void context_release(struct wined3d_context *context)
void CDECL wined3d_device_setup_fullscreen_window(struct wined3d_device *device, HWND window, UINT w, UINT h)
HRESULT CDECL wined3d_device_acquire_focus_window(struct wined3d_device *device, HWND window)
void device_invalidate_state(const struct wined3d_device *device, DWORD state)
void CDECL wined3d_device_restore_fullscreen_window(struct wined3d_device *device, HWND window, const RECT *window_rect)
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)
void wined3d_resource_update_draw_binding(struct wined3d_resource *resource)
BOOL wined3d_texture_load_location(struct wined3d_texture *texture, unsigned int sub_resource_idx, struct wined3d_context *context, DWORD location)
void wined3d_texture_invalidate_location(struct wined3d_texture *texture, unsigned int sub_resource_idx, DWORD location)
void wined3d_texture_set_swapchain(struct wined3d_texture *texture, struct wined3d_swapchain *swapchain)
HRESULT CDECL wined3d_texture_update_desc(struct wined3d_texture *texture, UINT width, UINT height, enum wined3d_format_id format_id, enum wined3d_multisample_type multisample_type, UINT multisample_quality, void *mem, UINT pitch)
ULONG CDECL wined3d_texture_decref(struct wined3d_texture *texture)
HRESULT CDECL wined3d_texture_blt(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, DWORD flags, const struct wined3d_blt_fx *fx, enum wined3d_texture_filter_type filter)
void wined3d_texture_validate_location(struct wined3d_texture *texture, unsigned int sub_resource_idx, DWORD location)
void wined3d_release_dc(HWND window, HDC dc)
const struct wined3d_format * wined3d_get_format(const struct wined3d_gl_info *gl_info, enum wined3d_format_id format_id, unsigned int resource_usage)
const char * debug_d3dformat(enum wined3d_format_id format_id)
BOOL wined3d_clip_blit(const RECT *clip_rect, RECT *clipped, RECT *other)
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)
DWORD WINAPI GetTickCount(VOID)
static VOID BitBlt(_In_ ULONG Left, _In_ ULONG Top, _In_ ULONG Width, _In_ ULONG Height, _In_reads_bytes_(Delta *Height) PUCHAR Buffer, _In_ ULONG BitsPerPixel, _In_ ULONG Delta)
GLuint GLuint GLsizei GLenum type
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
GLint GLint GLsizei GLsizei height
GLint GLint GLsizei width
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
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)
#define memcpy(s1, s2, n)
static const WCHAR desc[]
static const BYTE ramp[17]
static IHTMLWindow2 * window
#define WS_OVERLAPPEDWINDOW
static struct address_cache * front
static void * heap_calloc(SIZE_T count, SIZE_T size)
const struct wined3d_gl_info * gl_info
struct wined3d_swapchain * swapchain
enum wined3d_format_id format_id
enum wined3d_scanline_ordering scanline_ordering
struct wined3d_rendertarget_view * depth_stencil
struct wined3d_gl_limits limits
enum wined3d_resource_type resource_type
enum wined3d_multisample_type multisample_type
unsigned int multisample_quality
enum wined3d_format_id format
unsigned int cs_multithreaded
int offscreen_rendering_mode
unsigned int sample_count
struct wined3d_texture * container
enum wined3d_format_id backbuffer_format
struct wined3d_texture ** back_buffers
struct wined3d_swapchain_desc desc
struct wined3d_context ** context
struct wined3d_display_mode original_mode d3d_mode
const struct wined3d_format * ds_format
const struct wined3d_swapchain_ops * swapchain_ops
struct wined3d_palette * palette
unsigned int num_contexts
RECT original_window_rect
struct wined3d_texture * front_buffer
struct wined3d_gamma_ramp orig_gamma
const struct wined3d_parent_ops * parent_ops
struct wined3d_device * device
struct wined3d_swapchain * swapchain
struct wined3d_resource resource
struct wined3d_texture::wined3d_texture_sub_resource sub_resources[1]
DWORD WINAPI GetLastError(void)
DWORD WINAPI GetCurrentThreadId(void)
HRESULT CDECL wined3d_set_adapter_display_mode(struct wined3d *wined3d, UINT adapter_idx, const struct wined3d_display_mode *mode)
HRESULT CDECL wined3d_find_closest_matching_adapter_mode(const struct wined3d *wined3d, unsigned int adapter_idx, struct wined3d_display_mode *mode)
HRESULT CDECL wined3d_get_adapter_raster_status(const struct wined3d *wined3d, UINT adapter_idx, struct wined3d_raster_status *raster_status)
const struct wined3d_parent_ops wined3d_null_parent_ops
HRESULT CDECL wined3d_get_adapter_display_mode(const struct wined3d *wined3d, UINT adapter_idx, struct wined3d_display_mode *mode, enum wined3d_display_rotation *rotation)
static void swapchain_cleanup(struct wined3d_swapchain *swapchain)
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)
HRESULT CDECL wined3d_swapchain_set_gamma_ramp(const struct wined3d_swapchain *swapchain, DWORD flags, const struct wined3d_gamma_ramp *ramp)
void swapchain_update_swap_interval(struct wined3d_swapchain *swapchain)
static void wined3d_swapchain_destroy_object(void *object)
HRESULT CDECL wined3d_swapchain_get_raster_status(const struct wined3d_swapchain *swapchain, struct wined3d_raster_status *raster_status)
void *CDECL wined3d_swapchain_get_parent(const struct wined3d_swapchain *swapchain)
void CDECL wined3d_swapchain_set_window(struct wined3d_swapchain *swapchain, HWND window)
void swapchain_update_draw_bindings(struct wined3d_swapchain *swapchain)
HRESULT CDECL wined3d_swapchain_present(struct wined3d_swapchain *swapchain, const RECT *src_rect, const RECT *dst_rect, HWND dst_window_override, DWORD swap_interval, DWORD flags)
static struct wined3d_context * swapchain_create_context(struct wined3d_swapchain *swapchain)
static void swapchain_blit(const struct wined3d_swapchain *swapchain, struct wined3d_context *context, const RECT *src_rect, const RECT *dst_rect)
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)
static void swapchain_gl_frontbuffer_updated(struct wined3d_swapchain *swapchain)
HRESULT CDECL wined3d_swapchain_resize_target(struct wined3d_swapchain *swapchain, const struct wined3d_display_mode *mode)
static void wined3d_swapchain_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)
struct wined3d_context * swapchain_get_context(struct wined3d_swapchain *swapchain)
HRESULT CDECL wined3d_swapchain_set_fullscreen(struct wined3d_swapchain *swapchain, const struct wined3d_swapchain_desc *swapchain_desc, const struct wined3d_display_mode *mode)
void CDECL wined3d_swapchain_set_palette(struct wined3d_swapchain *swapchain, struct wined3d_palette *palette)
void swapchain_destroy_contexts(struct wined3d_swapchain *swapchain)
static HRESULT wined3d_swapchain_set_display_mode(struct wined3d_swapchain *swapchain, struct wined3d_display_mode *mode)
static void swapchain_gl_present(struct wined3d_swapchain *swapchain, const RECT *src_rect, const RECT *dst_rect, DWORD flags)
static const struct wined3d_swapchain_ops swapchain_gl_ops
ULONG CDECL wined3d_swapchain_incref(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)
struct wined3d_device *CDECL wined3d_swapchain_get_device(const struct wined3d_swapchain *swapchain)
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_gdi_frontbuffer_updated(struct wined3d_swapchain *swapchain)
static void swapchain_gdi_present(struct wined3d_swapchain *swapchain, const RECT *src_rect, const RECT *dst_rect, DWORD flags)
HRESULT CDECL wined3d_swapchain_create(struct wined3d_device *device, struct wined3d_swapchain_desc *desc, void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_swapchain **swapchain)
static void wined3d_swapchain_update_swap_interval_cs(void *object)
static void wined3d_swapchain_apply_sample_count_override(const struct wined3d_swapchain *swapchain, enum wined3d_format_id format_id, enum wined3d_multisample_type *type, DWORD *quality)
static void swapchain_update_render_to_fbo(struct wined3d_swapchain *swapchain)
static void wined3d_swapchain_cs_init(void *object)
static const struct wined3d_swapchain_ops swapchain_gdi_ops
HDC swapchain_get_backup_dc(struct wined3d_swapchain *swapchain)
void wined3d_swapchain_activate(struct wined3d_swapchain *swapchain, BOOL activate)
#define WINED3D_RESTORE_MODE_ON_ACTIVATE
#define WINED3DPRESENT_INTERVAL_THREE
#define WINED3D_SWAPCHAIN_ALLOW_MODE_SWITCH
#define WINED3D_BLT_ALPHA_TEST
#define WINED3DPRESENT_INTERVAL_ONE
@ WINED3D_SWAP_EFFECT_FLIP_DISCARD
@ WINED3D_SWAP_EFFECT_COPY
@ WINED3D_SWAP_EFFECT_SEQUENTIAL
@ WINED3D_SWAP_EFFECT_DISCARD
#define WINED3D_SWAPCHAIN_RESTORE_WINDOW_RECT
#define WINED3D_RESOURCE_ACCESS_GPU
#define WINED3D_BLT_SRC_CKEY
@ WINED3D_RTYPE_TEXTURE_2D
#define WINED3DERR_NOTAVAILABLE
wined3d_texture_filter_type
#define WINED3D_SWAPCHAIN_GDI_COMPATIBLE
#define WINED3DCREATE_NOWINDOWCHANGES
#define WINED3DPRESENT_INTERVAL_TWO
@ WINED3DFMT_S1_UINT_D15_UNORM
@ WINED3DFMT_R24_UNORM_X8_TYPELESS
@ WINED3DFMT_D24_UNORM_S8_UINT
@ WINED3D_SCANLINE_ORDERING_UNKNOWN
#define WINED3DUSAGE_RENDERTARGET
#define WINED3D_SWAPCHAIN_DISCARD_DEPTHSTENCIL
#define WINED3DPRESENT_INTERVAL_FOUR
#define WINED3DPRESENT_INTERVAL_IMMEDIATE
#define WINED3DERR_INVALIDCALL
#define WINED3D_TEXTURE_CREATE_GET_DC
#define WINED3DPRESENT_INTERVAL_DEFAULT
#define WINED3D_FOCUS_MESSAGES
#define WINED3DUSAGE_DEPTHSTENCIL
#define WINED3D_SWAPCHAIN_USE_CLOSEST_MATCHING_MODE
#define WINED3D_OPENGL_WINDOW_CLASS_NAME
static struct wined3d_surface * wined3d_rendertarget_view_get_surface(const struct wined3d_rendertarget_view *view)
static BOOL is_complex_fixup(struct color_fixup_desc fixup)
#define WINED3D_LOCATION_RB_RESOLVED
#define WINED3D_LOCATION_TEXTURE_RGB
#define WINED3D_LOCATION_DRAWABLE
#define WINED3D_TEXTURE_DISCARD
#define WINED3D_LOCATION_DISCARDED
#define WINED3D_LOCATION_RB_MULTISAMPLE
@ WINED3D_CS_QUEUE_DEFAULT
#define STATE_FRAMEBUFFER
@ WINED3D_BLIT_OP_COLOR_BLIT
BOOL WINAPI GetDeviceGammaRamp(_In_ HDC hdc, _Out_writes_bytes_(3 *256 *2) LPVOID lpRamp)
BOOL WINAPI SetDeviceGammaRamp(_In_ HDC hdc, _In_reads_bytes_(3 *256 *2) LPVOID lpRamp)
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
#define CreateWindowA(a, b, c, d, e, f, g, h, i, j, k)
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 GetWindowLongW(_In_ HWND, _In_ int)
BOOL WINAPI ClipCursor(_In_opt_ LPCRECT)
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)
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
BOOL WINAPI IntersectRect(_Out_ LPRECT, _In_ LPCRECT, _In_ LPCRECT)
HDC WINAPI GetDC(_In_opt_ HWND)
BOOL WINAPI SetRectEmpty(_Out_ LPRECT)
BOOL WINAPI OffsetRect(_Inout_ LPRECT, _In_ int, _In_ int)
BOOL WINAPI IsWindowVisible(_In_ HWND)
BOOL WINAPI DestroyWindow(_In_ HWND)
BOOL WINAPI MoveWindow(_In_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ BOOL)
BOOL WINAPI SetRect(_Out_ LPRECT, _In_ int, _In_ int, _In_ int, _In_ int)