Revert "graphics: libobs-d3d11: Use DXGI_SWAP_EFFECT_FLIP_DISCARD on Windows 10"

This reverts commit 4da73445c3.

This is being reverted because apparently it causes flickering displays
for some people.  Bad drivers or something?  Not sure.  Very annoying.
master
jp9000 2020-03-11 09:35:47 -07:00
parent 98c1ac2f80
commit b31c166814
2 changed files with 11 additions and 36 deletions

View File

@ -73,41 +73,18 @@ gs_obj::~gs_obj()
next->prev_next = prev_next;
}
static inline void make_swap_desc_common(DXGI_SWAP_CHAIN_DESC &desc,
const gs_init_data *data,
UINT num_backbuffers,
DXGI_SWAP_EFFECT effect)
static inline void make_swap_desc(DXGI_SWAP_CHAIN_DESC &desc,
const gs_init_data *data)
{
memset(&desc, 0, sizeof(desc));
desc.BufferCount = data->num_backbuffers;
desc.BufferDesc.Format = ConvertGSTextureFormat(data->format);
desc.BufferDesc.Width = data->cx;
desc.BufferDesc.Height = data->cy;
desc.BufferDesc.Format = ConvertGSTextureFormat(data->format);
desc.SampleDesc.Count = 1;
desc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
desc.BufferCount = num_backbuffers;
desc.OutputWindow = (HWND)data->window.hwnd;
desc.SampleDesc.Count = 1;
desc.Windowed = true;
desc.SwapEffect = effect;
}
static inline void make_swap_desc_win7(DXGI_SWAP_CHAIN_DESC &desc,
const gs_init_data *data)
{
UINT num_backbuffers = data->num_backbuffers;
if (num_backbuffers == 0)
num_backbuffers = 1;
make_swap_desc_common(desc, data, num_backbuffers,
DXGI_SWAP_EFFECT_DISCARD);
}
static inline void make_swap_desc_win10(DXGI_SWAP_CHAIN_DESC &desc,
const gs_init_data *data)
{
UINT num_backbuffers = data->num_backbuffers;
if (num_backbuffers == 0)
num_backbuffers = 2;
make_swap_desc_common(desc, data, num_backbuffers,
DXGI_SWAP_EFFECT_FLIP_DISCARD);
}
void gs_swap_chain::InitTarget(uint32_t cx, uint32_t cy)
@ -192,16 +169,11 @@ gs_swap_chain::gs_swap_chain(gs_device *device, const gs_init_data *data)
{
HRESULT hr;
make_swap_desc_win10(swapDesc, data);
make_swap_desc(swapDesc, data);
hr = device->factory->CreateSwapChain(device->device, &swapDesc,
swap.Assign());
if (FAILED(hr)) {
make_swap_desc_win7(swapDesc, data);
hr = device->factory->CreateSwapChain(device->device, &swapDesc,
swap.Assign());
if (FAILED(hr))
throw HRError("Failed to create swap chain", hr);
}
if (FAILED(hr))
throw HRError("Failed to create swap chain", hr);
/* Ignore Alt+Enter */
device->factory->MakeWindowAssociation(hwnd, DXGI_MWA_NO_ALT_ENTER);

View File

@ -1272,6 +1272,9 @@ gs_swapchain_t *gs_swapchain_create(const struct gs_init_data *data)
if (!gs_valid_p("gs_swapchain_create", data))
return NULL;
if (new_data.num_backbuffers == 0)
new_data.num_backbuffers = 1;
return graphics->exports.device_swapchain_create(graphics->device,
&new_data);
}