noop: Pretend all features are available.

This commit is contained in:
Branimir Karadžić
2017-04-08 10:17:55 -07:00
parent 2334da13e6
commit 814d04fcc5
4 changed files with 51 additions and 47 deletions

View File

@@ -1659,12 +1659,12 @@ namespace bgfx
return m_uniformRef[_handle.idx].m_name.getPtr();
}
RenderFrame::Enum Context::renderFrame(int32_t _msecs)
{
BGFX_PROFILER_SCOPE(bgfx, render_frame, 0xff2040ff);
RendererContextI* rendererCreate(RendererType::Enum _type);
void rendererDestroy(RendererContextI* _renderCtx);
void Context::flip()
{
if (m_rendererInitialized
&& !m_flipAfterRender
&& !m_flipped)
{
m_renderCtx->flip(m_render->m_hmd);
@@ -1673,10 +1673,22 @@ namespace bgfx
if (m_renderCtx->isDeviceRemoved() )
{
// Something horribly went wrong, fallback to noop renderer.
m_renderCtx = m_renderNoop;
g_caps.rendererType = m_renderCtx->getRendererType();
rendererDestroy(m_renderCtx);
m_renderCtx = rendererCreate(RendererType::Noop);
g_caps.rendererType = RendererType::Noop;
}
}
}
RenderFrame::Enum Context::renderFrame(int32_t _msecs)
{
BGFX_PROFILER_SCOPE(bgfx, render_frame, 0xff2040ff);
if (!m_flipAfterRender)
{
flip();
}
if (apiSemWait(_msecs) )
{
@@ -1691,11 +1703,9 @@ namespace bgfx
renderSemPost();
if (m_rendererInitialized
&& m_flipAfterRender)
if (m_flipAfterRender)
{
m_renderCtx->flip(m_render->m_hmd);
m_flipped = true;
flip();
}
}
else
@@ -2027,9 +2037,9 @@ namespace bgfx
RendererType::Enum type;
_cmdbuf.read(type);
m_renderMain = rendererCreate(type);
m_renderCtx = rendererCreate(type);
m_rendererInitialized = NULL != m_renderMain;
m_rendererInitialized = NULL != m_renderCtx;
if (!m_rendererInitialized)
{
@@ -2039,12 +2049,6 @@ namespace bgfx
);
return;
}
m_renderCtx = m_renderMain;
m_renderNoop = RendererType::Noop != type
? rendererCreate(RendererType::Noop)
: NULL
;
}
break;
}
@@ -2068,14 +2072,9 @@ namespace bgfx
{
BX_CHECK(!m_rendererInitialized && !m_exit, "This shouldn't happen! Bad synchronization?");
rendererDestroy(m_renderCtx);
m_renderCtx = NULL;
rendererDestroy(m_renderMain);
m_renderMain = NULL;
rendererDestroy(m_renderNoop);
m_renderNoop = NULL;
m_exit = true;
}
// fall through

View File

@@ -4144,6 +4144,7 @@ namespace bgfx
const char* getName(UniformHandle _handle) const;
// render thread
void flip();
RenderFrame::Enum renderFrame(int32_t _msecs = -1);
void flushTextureUpdateBatch(CommandBuffer& _cmdbuf);
void rendererExecCommands(CommandBuffer& _cmdbuf);

View File

@@ -2334,13 +2334,13 @@ BX_PRAGMA_DIAGNOSTIC_POP();
}
m_lost = d3d11::isLost(hr);
BGFX_FATAL(!m_lost
, bgfx::Fatal::DeviceLost
, "Device is lost. FAILED 0x%08x %s (%s)"
, hr
, getLostReason(hr)
, DXGI_ERROR_DEVICE_REMOVED == hr ? getLostReason(m_device->GetDeviceRemovedReason() ) : "no info"
);
// BGFX_FATAL(!m_lost
// , bgfx::Fatal::DeviceLost
// , "Device is lost. FAILED 0x%08x %s (%s)"
// , hr
// , getLostReason(hr)
// , DXGI_ERROR_DEVICE_REMOVED == hr ? getLostReason(m_device->GetDeviceRemovedReason() ) : "no info"
// );
}
}

View File

@@ -11,28 +11,32 @@ namespace bgfx { namespace noop
{
RendererContextNOOP()
{
// Pretend all features that are not returning results to CPU
// are available.
// Pretend all features are available.
g_caps.supported = 0
| BGFX_CAPS_TEXTURE_COMPARE_LEQUAL
| BGFX_CAPS_TEXTURE_COMPARE_ALL
| BGFX_CAPS_TEXTURE_3D
| BGFX_CAPS_VERTEX_ATTRIB_HALF
| BGFX_CAPS_VERTEX_ATTRIB_UINT10
| BGFX_CAPS_INSTANCING
| BGFX_CAPS_FRAGMENT_DEPTH
| BGFX_CAPS_ALPHA_TO_COVERAGE
| BGFX_CAPS_BLEND_INDEPENDENT
| BGFX_CAPS_COMPUTE
| BGFX_CAPS_FRAGMENT_ORDERING
| BGFX_CAPS_SWAP_CHAIN
| BGFX_CAPS_INDEX32
| BGFX_CAPS_DRAW_INDIRECT
| BGFX_CAPS_HIDPI
| BGFX_CAPS_TEXTURE_BLIT
| BGFX_CAPS_ALPHA_TO_COVERAGE
| BGFX_CAPS_CONSERVATIVE_RASTER
| BGFX_CAPS_DRAW_INDIRECT
| BGFX_CAPS_FRAGMENT_DEPTH
| BGFX_CAPS_FRAGMENT_ORDERING
| BGFX_CAPS_GRAPHICS_DEBUGGER
| BGFX_CAPS_HIDPI
| BGFX_CAPS_HMD
| BGFX_CAPS_INDEX32
| BGFX_CAPS_INSTANCING
| BGFX_CAPS_OCCLUSION_QUERY
| BGFX_CAPS_RENDERER_MULTITHREADED
| BGFX_CAPS_SWAP_CHAIN
| BGFX_CAPS_TEXTURE_2D_ARRAY
| BGFX_CAPS_TEXTURE_3D
| BGFX_CAPS_TEXTURE_BLIT
| BGFX_CAPS_TEXTURE_COMPARE_ALL
| BGFX_CAPS_TEXTURE_COMPARE_LEQUAL
| BGFX_CAPS_TEXTURE_CUBE_ARRAY
| BGFX_CAPS_TEXTURE_READ_BACK
| BGFX_CAPS_VERTEX_ATTRIB_HALF
| BGFX_CAPS_VERTEX_ATTRIB_UINT10
;
}