wined3d: Replace presentation interval flags with enum.
Signed-off-by: Józef Kucia <jkucia@codeweavers.com> Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
0554d17611
commit
e318f8c825
@ -208,6 +208,27 @@ static D3DSWAPEFFECT d3dswapeffect_from_wined3dswapeffect(enum wined3d_swap_effe
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static DWORD d3dpresentationinterval_from_wined3dswapinterval(enum wined3d_swap_interval interval)
|
||||||
|
{
|
||||||
|
switch (interval)
|
||||||
|
{
|
||||||
|
case WINED3D_SWAP_INTERVAL_IMMEDIATE:
|
||||||
|
return D3DPRESENT_INTERVAL_IMMEDIATE;
|
||||||
|
case WINED3D_SWAP_INTERVAL_ONE:
|
||||||
|
return D3DPRESENT_INTERVAL_ONE;
|
||||||
|
case WINED3D_SWAP_INTERVAL_TWO:
|
||||||
|
return D3DPRESENT_INTERVAL_TWO;
|
||||||
|
case WINED3D_SWAP_INTERVAL_THREE:
|
||||||
|
return D3DPRESENT_INTERVAL_THREE;
|
||||||
|
case WINED3D_SWAP_INTERVAL_FOUR:
|
||||||
|
return D3DPRESENT_INTERVAL_FOUR;
|
||||||
|
default:
|
||||||
|
ERR("Invalid swap interval %#x.\n", interval);
|
||||||
|
case WINED3D_SWAP_INTERVAL_DEFAULT:
|
||||||
|
return D3DPRESENT_INTERVAL_DEFAULT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void present_parameters_from_wined3d_swapchain_desc(D3DPRESENT_PARAMETERS *present_parameters,
|
static void present_parameters_from_wined3d_swapchain_desc(D3DPRESENT_PARAMETERS *present_parameters,
|
||||||
const struct wined3d_swapchain_desc *swapchain_desc)
|
const struct wined3d_swapchain_desc *swapchain_desc)
|
||||||
{
|
{
|
||||||
@ -224,7 +245,8 @@ static void present_parameters_from_wined3d_swapchain_desc(D3DPRESENT_PARAMETERS
|
|||||||
= d3dformat_from_wined3dformat(swapchain_desc->auto_depth_stencil_format);
|
= d3dformat_from_wined3dformat(swapchain_desc->auto_depth_stencil_format);
|
||||||
present_parameters->Flags = swapchain_desc->flags & D3DPRESENTFLAGS_MASK;
|
present_parameters->Flags = swapchain_desc->flags & D3DPRESENTFLAGS_MASK;
|
||||||
present_parameters->FullScreen_RefreshRateInHz = swapchain_desc->refresh_rate;
|
present_parameters->FullScreen_RefreshRateInHz = swapchain_desc->refresh_rate;
|
||||||
present_parameters->FullScreen_PresentationInterval = swapchain_desc->swap_interval;
|
present_parameters->FullScreen_PresentationInterval
|
||||||
|
= d3dpresentationinterval_from_wined3dswapinterval(swapchain_desc->swap_interval);
|
||||||
}
|
}
|
||||||
|
|
||||||
static enum wined3d_swap_effect wined3dswapeffect_from_d3dswapeffect(D3DSWAPEFFECT effect)
|
static enum wined3d_swap_effect wined3dswapeffect_from_d3dswapeffect(D3DSWAPEFFECT effect)
|
||||||
@ -245,6 +267,27 @@ static enum wined3d_swap_effect wined3dswapeffect_from_d3dswapeffect(D3DSWAPEFFE
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static enum wined3d_swap_interval wined3dswapinterval_from_d3dpresentationinterval(DWORD interval)
|
||||||
|
{
|
||||||
|
switch (interval)
|
||||||
|
{
|
||||||
|
case D3DPRESENT_INTERVAL_IMMEDIATE:
|
||||||
|
return WINED3D_SWAP_INTERVAL_IMMEDIATE;
|
||||||
|
case D3DPRESENT_INTERVAL_ONE:
|
||||||
|
return WINED3D_SWAP_INTERVAL_ONE;
|
||||||
|
case D3DPRESENT_INTERVAL_TWO:
|
||||||
|
return WINED3D_SWAP_INTERVAL_TWO;
|
||||||
|
case D3DPRESENT_INTERVAL_THREE:
|
||||||
|
return WINED3D_SWAP_INTERVAL_THREE;
|
||||||
|
case D3DPRESENT_INTERVAL_FOUR:
|
||||||
|
return WINED3D_SWAP_INTERVAL_FOUR;
|
||||||
|
default:
|
||||||
|
FIXME("Unhandled presentation interval %#x.\n", interval);
|
||||||
|
case D3DPRESENT_INTERVAL_DEFAULT:
|
||||||
|
return WINED3D_SWAP_INTERVAL_DEFAULT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static BOOL wined3d_swapchain_desc_from_present_parameters(struct wined3d_swapchain_desc *swapchain_desc,
|
static BOOL wined3d_swapchain_desc_from_present_parameters(struct wined3d_swapchain_desc *swapchain_desc,
|
||||||
const D3DPRESENT_PARAMETERS *present_parameters)
|
const D3DPRESENT_PARAMETERS *present_parameters)
|
||||||
{
|
{
|
||||||
@ -278,7 +321,8 @@ static BOOL wined3d_swapchain_desc_from_present_parameters(struct wined3d_swapch
|
|||||||
swapchain_desc->flags
|
swapchain_desc->flags
|
||||||
= (present_parameters->Flags & D3DPRESENTFLAGS_MASK) | WINED3D_SWAPCHAIN_ALLOW_MODE_SWITCH;
|
= (present_parameters->Flags & D3DPRESENTFLAGS_MASK) | WINED3D_SWAPCHAIN_ALLOW_MODE_SWITCH;
|
||||||
swapchain_desc->refresh_rate = present_parameters->FullScreen_RefreshRateInHz;
|
swapchain_desc->refresh_rate = present_parameters->FullScreen_RefreshRateInHz;
|
||||||
swapchain_desc->swap_interval = present_parameters->FullScreen_PresentationInterval;
|
swapchain_desc->swap_interval
|
||||||
|
= wined3dswapinterval_from_d3dpresentationinterval(present_parameters->FullScreen_PresentationInterval);
|
||||||
swapchain_desc->auto_restore_display_mode = TRUE;
|
swapchain_desc->auto_restore_display_mode = TRUE;
|
||||||
|
|
||||||
if (present_parameters->Flags & ~D3DPRESENTFLAGS_MASK)
|
if (present_parameters->Flags & ~D3DPRESENTFLAGS_MASK)
|
||||||
|
@ -230,6 +230,27 @@ static D3DSWAPEFFECT d3dswapeffect_from_wined3dswapeffect(enum wined3d_swap_effe
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static DWORD d3dpresentationinterval_from_wined3dswapinterval(enum wined3d_swap_interval interval)
|
||||||
|
{
|
||||||
|
switch (interval)
|
||||||
|
{
|
||||||
|
case WINED3D_SWAP_INTERVAL_IMMEDIATE:
|
||||||
|
return D3DPRESENT_INTERVAL_IMMEDIATE;
|
||||||
|
case WINED3D_SWAP_INTERVAL_ONE:
|
||||||
|
return D3DPRESENT_INTERVAL_ONE;
|
||||||
|
case WINED3D_SWAP_INTERVAL_TWO:
|
||||||
|
return D3DPRESENT_INTERVAL_TWO;
|
||||||
|
case WINED3D_SWAP_INTERVAL_THREE:
|
||||||
|
return D3DPRESENT_INTERVAL_THREE;
|
||||||
|
case WINED3D_SWAP_INTERVAL_FOUR:
|
||||||
|
return D3DPRESENT_INTERVAL_FOUR;
|
||||||
|
default:
|
||||||
|
ERR("Invalid swap interval %#x.\n", interval);
|
||||||
|
case WINED3D_SWAP_INTERVAL_DEFAULT:
|
||||||
|
return D3DPRESENT_INTERVAL_DEFAULT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void present_parameters_from_wined3d_swapchain_desc(D3DPRESENT_PARAMETERS *present_parameters,
|
void present_parameters_from_wined3d_swapchain_desc(D3DPRESENT_PARAMETERS *present_parameters,
|
||||||
const struct wined3d_swapchain_desc *swapchain_desc)
|
const struct wined3d_swapchain_desc *swapchain_desc)
|
||||||
{
|
{
|
||||||
@ -247,7 +268,8 @@ void present_parameters_from_wined3d_swapchain_desc(D3DPRESENT_PARAMETERS *prese
|
|||||||
= d3dformat_from_wined3dformat(swapchain_desc->auto_depth_stencil_format);
|
= d3dformat_from_wined3dformat(swapchain_desc->auto_depth_stencil_format);
|
||||||
present_parameters->Flags = swapchain_desc->flags & D3DPRESENTFLAGS_MASK;
|
present_parameters->Flags = swapchain_desc->flags & D3DPRESENTFLAGS_MASK;
|
||||||
present_parameters->FullScreen_RefreshRateInHz = swapchain_desc->refresh_rate;
|
present_parameters->FullScreen_RefreshRateInHz = swapchain_desc->refresh_rate;
|
||||||
present_parameters->PresentationInterval = swapchain_desc->swap_interval;
|
present_parameters->PresentationInterval
|
||||||
|
= d3dpresentationinterval_from_wined3dswapinterval(swapchain_desc->swap_interval);
|
||||||
}
|
}
|
||||||
|
|
||||||
static enum wined3d_swap_effect wined3dswapeffect_from_d3dswapeffect(D3DSWAPEFFECT effect)
|
static enum wined3d_swap_effect wined3dswapeffect_from_d3dswapeffect(D3DSWAPEFFECT effect)
|
||||||
@ -270,6 +292,27 @@ static enum wined3d_swap_effect wined3dswapeffect_from_d3dswapeffect(D3DSWAPEFFE
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static enum wined3d_swap_interval wined3dswapinterval_from_d3dpresentationinterval(DWORD interval)
|
||||||
|
{
|
||||||
|
switch (interval)
|
||||||
|
{
|
||||||
|
case D3DPRESENT_INTERVAL_IMMEDIATE:
|
||||||
|
return WINED3D_SWAP_INTERVAL_IMMEDIATE;
|
||||||
|
case D3DPRESENT_INTERVAL_ONE:
|
||||||
|
return WINED3D_SWAP_INTERVAL_ONE;
|
||||||
|
case D3DPRESENT_INTERVAL_TWO:
|
||||||
|
return WINED3D_SWAP_INTERVAL_TWO;
|
||||||
|
case D3DPRESENT_INTERVAL_THREE:
|
||||||
|
return WINED3D_SWAP_INTERVAL_THREE;
|
||||||
|
case D3DPRESENT_INTERVAL_FOUR:
|
||||||
|
return WINED3D_SWAP_INTERVAL_FOUR;
|
||||||
|
default:
|
||||||
|
FIXME("Unhandled presentation interval %#x.\n", interval);
|
||||||
|
case D3DPRESENT_INTERVAL_DEFAULT:
|
||||||
|
return WINED3D_SWAP_INTERVAL_DEFAULT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static BOOL wined3d_swapchain_desc_from_present_parameters(struct wined3d_swapchain_desc *swapchain_desc,
|
static BOOL wined3d_swapchain_desc_from_present_parameters(struct wined3d_swapchain_desc *swapchain_desc,
|
||||||
const D3DPRESENT_PARAMETERS *present_parameters, BOOL extended)
|
const D3DPRESENT_PARAMETERS *present_parameters, BOOL extended)
|
||||||
{
|
{
|
||||||
@ -305,7 +348,8 @@ static BOOL wined3d_swapchain_desc_from_present_parameters(struct wined3d_swapch
|
|||||||
swapchain_desc->flags
|
swapchain_desc->flags
|
||||||
= (present_parameters->Flags & D3DPRESENTFLAGS_MASK) | WINED3D_SWAPCHAIN_ALLOW_MODE_SWITCH;
|
= (present_parameters->Flags & D3DPRESENTFLAGS_MASK) | WINED3D_SWAPCHAIN_ALLOW_MODE_SWITCH;
|
||||||
swapchain_desc->refresh_rate = present_parameters->FullScreen_RefreshRateInHz;
|
swapchain_desc->refresh_rate = present_parameters->FullScreen_RefreshRateInHz;
|
||||||
swapchain_desc->swap_interval = present_parameters->PresentationInterval;
|
swapchain_desc->swap_interval
|
||||||
|
= wined3dswapinterval_from_d3dpresentationinterval(present_parameters->PresentationInterval);
|
||||||
swapchain_desc->auto_restore_display_mode = TRUE;
|
swapchain_desc->auto_restore_display_mode = TRUE;
|
||||||
|
|
||||||
if (present_parameters->Flags & ~D3DPRESENTFLAGS_MASK)
|
if (present_parameters->Flags & ~D3DPRESENTFLAGS_MASK)
|
||||||
|
@ -333,7 +333,7 @@ static HRESULT STDMETHODCALLTYPE dxgi_factory_CreateSwapChainForHwnd(IWineDXGIFa
|
|||||||
wined3d_desc.auto_depth_stencil_format = 0;
|
wined3d_desc.auto_depth_stencil_format = 0;
|
||||||
wined3d_desc.flags = wined3d_swapchain_flags_from_dxgi(swapchain_desc->Flags);
|
wined3d_desc.flags = wined3d_swapchain_flags_from_dxgi(swapchain_desc->Flags);
|
||||||
wined3d_desc.refresh_rate = fullscreen_desc ? dxgi_rational_to_uint(&fullscreen_desc->RefreshRate) : 0;
|
wined3d_desc.refresh_rate = fullscreen_desc ? dxgi_rational_to_uint(&fullscreen_desc->RefreshRate) : 0;
|
||||||
wined3d_desc.swap_interval = WINED3DPRESENT_INTERVAL_DEFAULT;
|
wined3d_desc.swap_interval = WINED3D_SWAP_INTERVAL_DEFAULT;
|
||||||
wined3d_desc.auto_restore_display_mode = TRUE;
|
wined3d_desc.auto_restore_display_mode = TRUE;
|
||||||
|
|
||||||
hr = IWineDXGIDevice_create_swapchain(dxgi_device, &wined3d_desc, FALSE, &wined3d_swapchain);
|
hr = IWineDXGIDevice_create_swapchain(dxgi_device, &wined3d_desc, FALSE, &wined3d_swapchain);
|
||||||
|
@ -683,34 +683,13 @@ static void wined3d_swapchain_update_swap_interval_cs(void *object)
|
|||||||
context = context_acquire(swapchain->device, swapchain->front_buffer, 0);
|
context = context_acquire(swapchain->device, swapchain->front_buffer, 0);
|
||||||
gl_info = context->gl_info;
|
gl_info = context->gl_info;
|
||||||
|
|
||||||
switch (swapchain->desc.swap_interval)
|
swap_interval = swapchain->desc.swap_interval > 4 ? 1 : swapchain->desc.swap_interval;
|
||||||
{
|
|
||||||
case WINED3DPRESENT_INTERVAL_IMMEDIATE:
|
|
||||||
swap_interval = 0;
|
|
||||||
break;
|
|
||||||
case WINED3DPRESENT_INTERVAL_DEFAULT:
|
|
||||||
case WINED3DPRESENT_INTERVAL_ONE:
|
|
||||||
swap_interval = 1;
|
|
||||||
break;
|
|
||||||
case WINED3DPRESENT_INTERVAL_TWO:
|
|
||||||
swap_interval = 2;
|
|
||||||
break;
|
|
||||||
case WINED3DPRESENT_INTERVAL_THREE:
|
|
||||||
swap_interval = 3;
|
|
||||||
break;
|
|
||||||
case WINED3DPRESENT_INTERVAL_FOUR:
|
|
||||||
swap_interval = 4;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
FIXME("Unhandled present interval %#x.\n", swapchain->desc.swap_interval);
|
|
||||||
swap_interval = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (gl_info->supported[WGL_EXT_SWAP_CONTROL])
|
if (gl_info->supported[WGL_EXT_SWAP_CONTROL])
|
||||||
{
|
{
|
||||||
if (!GL_EXTCALL(wglSwapIntervalEXT(swap_interval)))
|
if (!GL_EXTCALL(wglSwapIntervalEXT(swap_interval)))
|
||||||
ERR("wglSwapIntervalEXT failed to set swap interval %d for context %p, last error %#x\n",
|
ERR("wglSwapIntervalEXT failed to set swap interval %d for context %p, last error %#x.\n",
|
||||||
swap_interval, context, GetLastError());
|
swap_interval, context, GetLastError());
|
||||||
}
|
}
|
||||||
|
|
||||||
context_release(context);
|
context_release(context);
|
||||||
|
@ -515,6 +515,16 @@ enum wined3d_swap_effect
|
|||||||
WINED3D_SWAP_EFFECT_OVERLAY,
|
WINED3D_SWAP_EFFECT_OVERLAY,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum wined3d_swap_interval
|
||||||
|
{
|
||||||
|
WINED3D_SWAP_INTERVAL_IMMEDIATE = 0,
|
||||||
|
WINED3D_SWAP_INTERVAL_ONE = 1,
|
||||||
|
WINED3D_SWAP_INTERVAL_TWO = 2,
|
||||||
|
WINED3D_SWAP_INTERVAL_THREE = 3,
|
||||||
|
WINED3D_SWAP_INTERVAL_FOUR = 4,
|
||||||
|
WINED3D_SWAP_INTERVAL_DEFAULT = ~0u,
|
||||||
|
};
|
||||||
|
|
||||||
enum wined3d_sampler_state
|
enum wined3d_sampler_state
|
||||||
{
|
{
|
||||||
WINED3D_SAMP_ADDRESS_U = 1,
|
WINED3D_SAMP_ADDRESS_U = 1,
|
||||||
@ -574,7 +584,7 @@ enum wined3d_texture_stage_state
|
|||||||
WINED3D_TSS_ALPHA_ARG0 = 15,
|
WINED3D_TSS_ALPHA_ARG0 = 15,
|
||||||
WINED3D_TSS_RESULT_ARG = 16,
|
WINED3D_TSS_RESULT_ARG = 16,
|
||||||
WINED3D_TSS_CONSTANT = 17,
|
WINED3D_TSS_CONSTANT = 17,
|
||||||
WINED3D_TSS_INVALID = ~0U,
|
WINED3D_TSS_INVALID = ~0u,
|
||||||
};
|
};
|
||||||
#define WINED3D_HIGHEST_TEXTURE_STATE WINED3D_TSS_CONSTANT
|
#define WINED3D_HIGHEST_TEXTURE_STATE WINED3D_TSS_CONSTANT
|
||||||
|
|
||||||
@ -923,13 +933,6 @@ enum wined3d_shader_byte_code_format
|
|||||||
|
|
||||||
#define WINED3DPRESENT_RATE_DEFAULT 0x00000000
|
#define WINED3DPRESENT_RATE_DEFAULT 0x00000000
|
||||||
|
|
||||||
#define WINED3DPRESENT_INTERVAL_DEFAULT 0x00000000
|
|
||||||
#define WINED3DPRESENT_INTERVAL_ONE 0x00000001
|
|
||||||
#define WINED3DPRESENT_INTERVAL_TWO 0x00000002
|
|
||||||
#define WINED3DPRESENT_INTERVAL_THREE 0x00000004
|
|
||||||
#define WINED3DPRESENT_INTERVAL_FOUR 0x00000008
|
|
||||||
#define WINED3DPRESENT_INTERVAL_IMMEDIATE 0x80000000
|
|
||||||
|
|
||||||
#define WINED3DCLIPPLANE0 (1u << 0)
|
#define WINED3DCLIPPLANE0 (1u << 0)
|
||||||
#define WINED3DCLIPPLANE1 (1u << 1)
|
#define WINED3DCLIPPLANE1 (1u << 1)
|
||||||
#define WINED3DCLIPPLANE2 (1u << 2)
|
#define WINED3DCLIPPLANE2 (1u << 2)
|
||||||
@ -1724,7 +1727,7 @@ struct wined3d_swapchain_desc
|
|||||||
enum wined3d_format_id auto_depth_stencil_format;
|
enum wined3d_format_id auto_depth_stencil_format;
|
||||||
DWORD flags;
|
DWORD flags;
|
||||||
UINT refresh_rate;
|
UINT refresh_rate;
|
||||||
UINT swap_interval;
|
enum wined3d_swap_interval swap_interval;
|
||||||
BOOL auto_restore_display_mode;
|
BOOL auto_restore_display_mode;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user