mirror of
https://github.com/ZDoom/gzdoom-gles.git
synced 2025-02-17 17:11:19 +00:00
- Added vid_refreshrate cvar to override Windows' automatic refresh rate
selection. SVN r754 (trunk)
This commit is contained in:
parent
5124a28a15
commit
f2c9227243
6 changed files with 83 additions and 4 deletions
|
@ -1,4 +1,6 @@
|
||||||
February 18, 2008
|
February 18, 2008
|
||||||
|
- Added vid_refreshrate cvar to override Windows' automatic refresh rate
|
||||||
|
selection.
|
||||||
- Singleplayers maps using allowrespawn now filter respawn inventory like
|
- Singleplayers maps using allowrespawn now filter respawn inventory like
|
||||||
coop games, since that's essentially what they are.
|
coop games, since that's essentially what they are.
|
||||||
- Fixed m_alloc.cpp compilation on Linux.
|
- Fixed m_alloc.cpp compilation on Linux.
|
||||||
|
|
|
@ -150,6 +150,7 @@ CVAR (Int, vid_defbits, 8, CVAR_ARCHIVE|CVAR_GLOBALCONFIG)
|
||||||
CVAR (Bool, vid_fps, false, 0)
|
CVAR (Bool, vid_fps, false, 0)
|
||||||
CVAR (Bool, ticker, false, 0)
|
CVAR (Bool, ticker, false, 0)
|
||||||
CVAR (Int, vid_showpalette, 0, 0)
|
CVAR (Int, vid_showpalette, 0, 0)
|
||||||
|
|
||||||
CUSTOM_CVAR (Bool, vid_vsync, false, CVAR_ARCHIVE|CVAR_GLOBALCONFIG)
|
CUSTOM_CVAR (Bool, vid_vsync, false, CVAR_ARCHIVE|CVAR_GLOBALCONFIG)
|
||||||
{
|
{
|
||||||
if (screen != NULL)
|
if (screen != NULL)
|
||||||
|
@ -158,6 +159,14 @@ CUSTOM_CVAR (Bool, vid_vsync, false, CVAR_ARCHIVE|CVAR_GLOBALCONFIG)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CUSTOM_CVAR (Int, vid_refreshrate, 0, CVAR_ARCHIVE|CVAR_GLOBALCONFIG)
|
||||||
|
{
|
||||||
|
if (screen != NULL)
|
||||||
|
{
|
||||||
|
screen->NewRefreshRate();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
CUSTOM_CVAR (Float, dimamount, 0.2f, CVAR_ARCHIVE)
|
CUSTOM_CVAR (Float, dimamount, 0.2f, CVAR_ARCHIVE)
|
||||||
{
|
{
|
||||||
if (self < 0.f)
|
if (self < 0.f)
|
||||||
|
@ -1075,6 +1084,19 @@ void DFrameBuffer::SetVSync (bool vsync)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//==========================================================================
|
||||||
|
//
|
||||||
|
// DFrameBuffer :: NewRefreshRate
|
||||||
|
//
|
||||||
|
// Sets the fullscreen display to the new refresh rate in vid_refreshrate,
|
||||||
|
// if possible.
|
||||||
|
//
|
||||||
|
//==========================================================================
|
||||||
|
|
||||||
|
void DFrameBuffer::NewRefreshRate ()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
//
|
//
|
||||||
// DFrameBuffer :: SetBlendingRect
|
// DFrameBuffer :: SetBlendingRect
|
||||||
|
|
|
@ -344,6 +344,9 @@ public:
|
||||||
// Changes the vsync setting, if supported by the device.
|
// Changes the vsync setting, if supported by the device.
|
||||||
virtual void SetVSync (bool vsync);
|
virtual void SetVSync (bool vsync);
|
||||||
|
|
||||||
|
// Tells the device to recreate itself with the new setting from vid_refreshrate.
|
||||||
|
virtual void NewRefreshRate ();
|
||||||
|
|
||||||
// Set the rect defining the area effected by blending.
|
// Set the rect defining the area effected by blending.
|
||||||
virtual void SetBlendingRect (int x1, int y1, int x2, int y2);
|
virtual void SetBlendingRect (int x1, int y1, int x2, int y2);
|
||||||
|
|
||||||
|
|
|
@ -197,6 +197,7 @@ EXTERN_CVAR (Bool, fullscreen)
|
||||||
EXTERN_CVAR (Float, Gamma)
|
EXTERN_CVAR (Float, Gamma)
|
||||||
EXTERN_CVAR (Bool, vid_vsync)
|
EXTERN_CVAR (Bool, vid_vsync)
|
||||||
EXTERN_CVAR (Float, transsouls)
|
EXTERN_CVAR (Float, transsouls)
|
||||||
|
EXTERN_CVAR (Int, vid_refreshrate)
|
||||||
|
|
||||||
extern IDirect3D9 *D3D;
|
extern IDirect3D9 *D3D;
|
||||||
|
|
||||||
|
@ -304,7 +305,19 @@ D3DFB::D3DFB (int width, int height, bool fullscreen)
|
||||||
if (FAILED(D3D->CreateDevice (D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, Window,
|
if (FAILED(D3D->CreateDevice (D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, Window,
|
||||||
D3DCREATE_SOFTWARE_VERTEXPROCESSING | D3DCREATE_FPU_PRESERVE, &d3dpp, &D3DDevice)))
|
D3DCREATE_SOFTWARE_VERTEXPROCESSING | D3DCREATE_FPU_PRESERVE, &d3dpp, &D3DDevice)))
|
||||||
{
|
{
|
||||||
D3DDevice = NULL;
|
if (d3dpp.FullScreen_RefreshRateInHz != 0)
|
||||||
|
{
|
||||||
|
d3dpp.FullScreen_RefreshRateInHz = 0;
|
||||||
|
if (FAILED(hr = D3D->CreateDevice (D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, Window,
|
||||||
|
D3DCREATE_HARDWARE_VERTEXPROCESSING | D3DCREATE_FPU_PRESERVE, &d3dpp, &D3DDevice)))
|
||||||
|
{
|
||||||
|
if (FAILED(D3D->CreateDevice (D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, Window,
|
||||||
|
D3DCREATE_SOFTWARE_VERTEXPROCESSING | D3DCREATE_FPU_PRESERVE, &d3dpp, &D3DDevice)))
|
||||||
|
{
|
||||||
|
D3DDevice = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (D3DDevice != NULL)
|
if (D3DDevice != NULL)
|
||||||
|
@ -386,6 +399,10 @@ void D3DFB::FillPresentParameters (D3DPRESENT_PARAMETERS *pp, bool fullscreen, b
|
||||||
pp->BackBufferFormat = fullscreen ? D3DFMT_A8R8G8B8 : D3DFMT_UNKNOWN;
|
pp->BackBufferFormat = fullscreen ? D3DFMT_A8R8G8B8 : D3DFMT_UNKNOWN;
|
||||||
pp->hDeviceWindow = Window;
|
pp->hDeviceWindow = Window;
|
||||||
pp->PresentationInterval = vsync ? D3DPRESENT_INTERVAL_ONE : D3DPRESENT_INTERVAL_IMMEDIATE;
|
pp->PresentationInterval = vsync ? D3DPRESENT_INTERVAL_ONE : D3DPRESENT_INTERVAL_IMMEDIATE;
|
||||||
|
if (fullscreen)
|
||||||
|
{
|
||||||
|
pp->FullScreen_RefreshRateInHz = vid_refreshrate;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool D3DFB::CreateResources ()
|
bool D3DFB::CreateResources ()
|
||||||
|
@ -531,7 +548,18 @@ bool D3DFB::Reset ()
|
||||||
FillPresentParameters (&d3dpp, !Windowed, VSync);
|
FillPresentParameters (&d3dpp, !Windowed, VSync);
|
||||||
if (!SUCCEEDED(D3DDevice->Reset (&d3dpp)))
|
if (!SUCCEEDED(D3DDevice->Reset (&d3dpp)))
|
||||||
{
|
{
|
||||||
return false;
|
if (d3dpp.FullScreen_RefreshRateInHz != 0)
|
||||||
|
{
|
||||||
|
d3dpp.FullScreen_RefreshRateInHz = 0;
|
||||||
|
if (!SUCCEEDED(D3DDevice->Reset (&d3dpp)))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
LOG("Device was reset\n");
|
LOG("Device was reset\n");
|
||||||
if (!CreateFBTexture() || !CreateVertexes())
|
if (!CreateFBTexture() || !CreateVertexes())
|
||||||
|
@ -1090,6 +1118,14 @@ void D3DFB::SetVSync (bool vsync)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void D3DFB::NewRefreshRate ()
|
||||||
|
{
|
||||||
|
if (!Windowed)
|
||||||
|
{
|
||||||
|
Reset();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void D3DFB::Blank ()
|
void D3DFB::Blank ()
|
||||||
{
|
{
|
||||||
// Only used by movie player, which isn't working with D3D9 yet.
|
// Only used by movie player, which isn't working with D3D9 yet.
|
||||||
|
|
|
@ -80,6 +80,7 @@ extern bool VidResizing;
|
||||||
|
|
||||||
EXTERN_CVAR (Bool, fullscreen)
|
EXTERN_CVAR (Bool, fullscreen)
|
||||||
EXTERN_CVAR (Float, Gamma)
|
EXTERN_CVAR (Float, Gamma)
|
||||||
|
EXTERN_CVAR (Int, vid_refreshrate)
|
||||||
|
|
||||||
extern IDirectDraw2 *DDraw;
|
extern IDirectDraw2 *DDraw;
|
||||||
|
|
||||||
|
@ -224,6 +225,7 @@ bool DDrawFB::CreateResources ()
|
||||||
DDSURFACEDESC ddsd = { sizeof(ddsd), };
|
DDSURFACEDESC ddsd = { sizeof(ddsd), };
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
int bits;
|
int bits;
|
||||||
|
int refresh;
|
||||||
|
|
||||||
BufferCount = 1;
|
BufferCount = 1;
|
||||||
|
|
||||||
|
@ -241,13 +243,18 @@ bool DDrawFB::CreateResources ()
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
hr = DDraw->SetDisplayMode (Width, TrueHeight, bits = vid_displaybits, 0, 0);
|
hr = DDraw->SetDisplayMode (Width, TrueHeight, bits = vid_displaybits, vid_refreshrate, 0);
|
||||||
if (FAILED(hr))
|
if (FAILED(hr))
|
||||||
{
|
{
|
||||||
|
hr = DDraw->SetDisplayMode (Width, TrueHeight, bits = vid_displaybits, 0, 0);
|
||||||
bits = 32;
|
bits = 32;
|
||||||
while (FAILED(hr) && bits >= 8)
|
while (FAILED(hr) && bits >= 8)
|
||||||
{
|
{
|
||||||
hr = DDraw->SetDisplayMode (Width, Height, bits, 0, 0);
|
hr = DDraw->SetDisplayMode (Width, Height, bits, vid_refreshrate, 0);
|
||||||
|
if (FAILED(hr))
|
||||||
|
{
|
||||||
|
hr = DDraw->SetDisplayMode (Width, Height, bits, 0, 0);
|
||||||
|
}
|
||||||
bits -= 8;
|
bits -= 8;
|
||||||
}
|
}
|
||||||
if (FAILED(hr))
|
if (FAILED(hr))
|
||||||
|
@ -1270,6 +1277,13 @@ void DDrawFB::SetVSync (bool vsync)
|
||||||
FlipFlags = vsync ? DDFLIP_WAIT : DDFLIP_WAIT|DDFLIP_NOVSYNC;
|
FlipFlags = vsync ? DDFLIP_WAIT : DDFLIP_WAIT|DDFLIP_NOVSYNC;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DDrawFB::NewRefreshRate()
|
||||||
|
{
|
||||||
|
if (!Windowed)
|
||||||
|
{
|
||||||
|
NeedResRecreate = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void DDrawFB::Blank ()
|
void DDrawFB::Blank ()
|
||||||
{
|
{
|
||||||
|
|
|
@ -159,6 +159,7 @@ public:
|
||||||
int QueryNewPalette ();
|
int QueryNewPalette ();
|
||||||
void PaletteChanged ();
|
void PaletteChanged ();
|
||||||
void SetVSync (bool vsync);
|
void SetVSync (bool vsync);
|
||||||
|
void NewRefreshRate();
|
||||||
HRESULT GetHR ();
|
HRESULT GetHR ();
|
||||||
|
|
||||||
void Blank ();
|
void Blank ();
|
||||||
|
@ -240,6 +241,7 @@ public:
|
||||||
void Blank ();
|
void Blank ();
|
||||||
bool PaintToWindow ();
|
bool PaintToWindow ();
|
||||||
void SetVSync (bool vsync);
|
void SetVSync (bool vsync);
|
||||||
|
void NewRefreshRate();
|
||||||
void GetScreenshotBuffer(const BYTE *&buffer, int &pitch, ESSType &color_type);
|
void GetScreenshotBuffer(const BYTE *&buffer, int &pitch, ESSType &color_type);
|
||||||
void ReleaseScreenshotBuffer();
|
void ReleaseScreenshotBuffer();
|
||||||
void SetBlendingRect (int x1, int y1, int x2, int y2);
|
void SetBlendingRect (int x1, int y1, int x2, int y2);
|
||||||
|
|
Loading…
Reference in a new issue