Added flip after submit reset flag.

This commit is contained in:
Branimir Karadžić 2015-04-14 20:03:05 -07:00
parent 87a5652b46
commit 7bfe51d0d8
5 changed files with 29 additions and 7 deletions

View file

@ -118,12 +118,14 @@ BX_PRAGMA_DIAGNOSTIC_POP();
{ {
if (_argc > 1) if (_argc > 1)
{ {
if (setOrToggle(s_reset, "vsync", BGFX_RESET_VSYNC, 1, _argc, _argv) if (setOrToggle(s_reset, "vsync", BGFX_RESET_VSYNC, 1, _argc, _argv)
|| setOrToggle(s_reset, "maxaniso", BGFX_RESET_MAXANISOTROPY, 1, _argc, _argv) || setOrToggle(s_reset, "maxaniso", BGFX_RESET_MAXANISOTROPY, 1, _argc, _argv)
|| setOrToggle(s_reset, "hmd", BGFX_RESET_HMD, 1, _argc, _argv) || setOrToggle(s_reset, "hmd", BGFX_RESET_HMD, 1, _argc, _argv)
|| setOrToggle(s_reset, "hmddbg", BGFX_RESET_HMD_DEBUG, 1, _argc, _argv) || setOrToggle(s_reset, "hmddbg", BGFX_RESET_HMD_DEBUG, 1, _argc, _argv)
|| setOrToggle(s_reset, "hmdrecenter", BGFX_RESET_HMD_RECENTER, 1, _argc, _argv) || setOrToggle(s_reset, "hmdrecenter", BGFX_RESET_HMD_RECENTER, 1, _argc, _argv)
|| setOrToggle(s_reset, "msaa", BGFX_RESET_MSAA_X16, 1, _argc, _argv) ) || setOrToggle(s_reset, "msaa", BGFX_RESET_MSAA_X16, 1, _argc, _argv)
|| setOrToggle(s_reset, "flip", BGFX_RESET_FLIP_AFTER_SUBMIT, 1, _argc, _argv)
)
{ {
return 0; return 0;
} }
@ -176,6 +178,7 @@ BX_PRAGMA_DIAGNOSTIC_POP();
{ entry::Key::F4, entry::Modifier::LeftCtrl, 1, cmd, "graphics hmddbg" }, { entry::Key::F4, entry::Modifier::LeftCtrl, 1, cmd, "graphics hmddbg" },
{ entry::Key::F7, entry::Modifier::None, 1, cmd, "graphics vsync" }, { entry::Key::F7, entry::Modifier::None, 1, cmd, "graphics vsync" },
{ entry::Key::F8, entry::Modifier::None, 1, cmd, "graphics msaa" }, { entry::Key::F8, entry::Modifier::None, 1, cmd, "graphics msaa" },
{ entry::Key::F9, entry::Modifier::None, 1, cmd, "graphics flip" },
{ entry::Key::Print, entry::Modifier::None, 1, cmd, "graphics screenshot" }, { entry::Key::Print, entry::Modifier::None, 1, cmd, "graphics screenshot" },
INPUT_BINDING_END INPUT_BINDING_END

View file

@ -571,7 +571,12 @@ namespace bgfx
/// - `BGFX_RESET_FULLSCREEN` - Not supported yet. /// - `BGFX_RESET_FULLSCREEN` - Not supported yet.
/// - `BGFX_RESET_MSAA_X[2/4/8/16]` - Enable 2, 4, 8 or 16 x MSAA. /// - `BGFX_RESET_MSAA_X[2/4/8/16]` - Enable 2, 4, 8 or 16 x MSAA.
/// - `BGFX_RESET_VSYNC` - Enable V-Sync. /// - `BGFX_RESET_VSYNC` - Enable V-Sync.
/// - `BGFX_RESET_MAXANISOTROPY` - Turn on/off max anisotropy.
/// - `BGFX_RESET_CAPTURE` - Begin screen capture. /// - `BGFX_RESET_CAPTURE` - Begin screen capture.
/// - `BGFX_RESET_HMD` - HMD stereo rendering.
/// - `BGFX_RESET_HMD_DEBUG` - HMD stereo rendering debug mode.
/// - `BGFX_RESET_HMD_RECENTER` - HMD calibration.
/// - `BGFX_RESET_FLIP_AFTER_SUBMIT` - Flip back buffer after submit.
/// ///
/// @attention This call doesn't actually change window size, it just /// @attention This call doesn't actually change window size, it just
/// resizes back-buffer. Windowing code has to change window size. /// resizes back-buffer. Windowing code has to change window size.

View file

@ -303,6 +303,7 @@
#define BGFX_RESET_HMD UINT32_C(0x00000400) #define BGFX_RESET_HMD UINT32_C(0x00000400)
#define BGFX_RESET_HMD_DEBUG UINT32_C(0x00000800) #define BGFX_RESET_HMD_DEBUG UINT32_C(0x00000800)
#define BGFX_RESET_HMD_RECENTER UINT32_C(0x00001000) #define BGFX_RESET_HMD_RECENTER UINT32_C(0x00001000)
#define BGFX_RESET_FLIP_AFTER_SUBMIT UINT32_C(0x00002000)
/// ///
#define BGFX_CAPS_TEXTURE_COMPARE_LEQUAL UINT64_C(0x0000000000000001) #define BGFX_CAPS_TEXTURE_COMPARE_LEQUAL UINT64_C(0x0000000000000001)

View file

@ -1190,6 +1190,8 @@ namespace bgfx
m_render = m_submit; m_render = m_submit;
m_submit = temp; m_submit = temp;
memcpy(&m_submit->m_hmd, &m_render->m_hmd, sizeof(HMD) );
m_frames++; m_frames++;
m_submit->start(); m_submit->start();
@ -1205,7 +1207,8 @@ namespace bgfx
bool Context::renderFrame() bool Context::renderFrame()
{ {
if (m_rendererInitialized) if (m_rendererInitialized
&& !m_flipAfterSubmit)
{ {
m_renderCtx->flip(); m_renderCtx->flip();
} }
@ -1221,6 +1224,12 @@ namespace bgfx
renderSemPost(); renderSemPost();
if (m_rendererInitialized
&& m_flipAfterSubmit)
{
m_renderCtx->flip();
}
return m_exit; return m_exit;
} }

View file

@ -1893,6 +1893,7 @@ namespace bgfx
, m_renderCtx(NULL) , m_renderCtx(NULL)
, m_rendererInitialized(false) , m_rendererInitialized(false)
, m_exit(false) , m_exit(false)
, m_flipAfterSubmit(false)
{ {
} }
@ -1927,6 +1928,8 @@ namespace bgfx
m_resolution.m_height = bx::uint32_max(1, _height); m_resolution.m_height = bx::uint32_max(1, _height);
m_resolution.m_flags = _flags; m_resolution.m_flags = _flags;
m_flipAfterSubmit = !!(_flags & BGFX_RESET_FLIP_AFTER_SUBMIT);
memset(m_fb, 0xff, sizeof(m_fb) ); memset(m_fb, 0xff, sizeof(m_fb) );
for (uint16_t ii = 0, num = m_textureHandle.getNumHandles(); ii < num; ++ii) for (uint16_t ii = 0, num = m_textureHandle.getNumHandles(); ii < num; ++ii)
@ -3527,6 +3530,7 @@ namespace bgfx
bool m_rendererInitialized; bool m_rendererInitialized;
bool m_exit; bool m_exit;
bool m_flipAfterSubmit;
typedef UpdateBatchT<256> TextureUpdateBatch; typedef UpdateBatchT<256> TextureUpdateBatch;
BX_ALIGN_DECL_CACHE_LINE(TextureUpdateBatch m_textureUpdateBatch); BX_ALIGN_DECL_CACHE_LINE(TextureUpdateBatch m_textureUpdateBatch);