skip rendering the next frame under vulkan, as this fixes the crash on scene load when the scene graph storage buffers need to be resized (even though nothing makes sense)
This commit is contained in:
parent
81a3125fcd
commit
e5de1491f2
@ -103,7 +103,8 @@
|
||||
"batch queue submissions": true,
|
||||
"dedicated thread": false,
|
||||
"memory budget": false,
|
||||
"register render modes": true
|
||||
"register render modes": true,
|
||||
"skip render on rebuild": true
|
||||
},
|
||||
"invariant": {
|
||||
"default stage buffers": true,
|
||||
@ -114,7 +115,7 @@
|
||||
"pipelines": {
|
||||
"deferred": true,
|
||||
"gui": true,
|
||||
"vsync": false,
|
||||
"vsync": false, // vsync on vulkan side rather than engine-side
|
||||
"hdr": true,
|
||||
"vxgi": true,
|
||||
"culling": true,
|
||||
|
@ -78,7 +78,7 @@
|
||||
"stream": {
|
||||
"tag": "worldspawn",
|
||||
"player": "info_player_spawn",
|
||||
"enabled": true, // "auto",
|
||||
"enabled": "auto",
|
||||
"radius": 16,
|
||||
"every": 1
|
||||
}
|
||||
|
@ -1 +1 @@
|
||||
opengl
|
||||
vulkan
|
@ -35,6 +35,7 @@ namespace ext {
|
||||
extern UF_API bool rebuildOnTickBegin;
|
||||
extern UF_API bool batchQueueSubmissions;
|
||||
extern UF_API bool registerRenderMode;
|
||||
extern UF_API bool skipRenderOnRebuild;
|
||||
}
|
||||
|
||||
namespace validation {
|
||||
|
@ -120,6 +120,7 @@ namespace ext {
|
||||
extern UF_API bool enableMultiGPU;
|
||||
extern UF_API bool memoryBudgetBit;
|
||||
extern UF_API bool registerRenderMode;
|
||||
extern UF_API bool skipRenderOnRebuild;
|
||||
}
|
||||
|
||||
namespace validation {
|
||||
|
@ -501,6 +501,7 @@ void UF_API uf::initialize() {
|
||||
#endif
|
||||
|
||||
uf::renderer::settings::experimental::rebuildOnTickBegin = configRenderExperimentalJson["rebuild on tick begin"].as( uf::renderer::settings::experimental::rebuildOnTickBegin );
|
||||
uf::renderer::settings::experimental::skipRenderOnRebuild = configRenderExperimentalJson["skip render on rebuild"].as( uf::renderer::settings::experimental::skipRenderOnRebuild );
|
||||
|
||||
uf::renderer::settings::invariant::deferredMode = configRenderInvariantJson["deferred mode"].as( uf::renderer::settings::invariant::deferredMode );
|
||||
|
||||
|
@ -17,18 +17,17 @@
|
||||
#define UF_DEBUG_TIMER_MULTITRACE_START(...) UF_TIMER_MULTITRACE_START(__VA_ARGS__)
|
||||
#define UF_DEBUG_TIMER_MULTITRACE(...) UF_TIMER_MULTITRACE(__VA_ARGS__)
|
||||
#define UF_DEBUG_TIMER_MULTITRACE_END(...) UF_TIMER_MULTITRACE_END(__VA_ARGS__)
|
||||
#define UF_GRAPH_SPARSE_READ_MESH 1
|
||||
#else
|
||||
#define UF_DEBUG_TIMER_MULTITRACE_START(...)
|
||||
#define UF_DEBUG_TIMER_MULTITRACE(...)
|
||||
#define UF_DEBUG_TIMER_MULTITRACE_END(...)
|
||||
#if UF_USE_OPENGL
|
||||
#define UF_GRAPH_SPARSE_READ_MESH 1
|
||||
#else
|
||||
#define UF_GRAPH_SPARSE_READ_MESH 1
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if UF_USE_OPENGL
|
||||
#define UF_GRAPH_SPARSE_READ_MESH 1
|
||||
#else
|
||||
#define UF_GRAPH_SPARSE_READ_MESH 1
|
||||
#endif
|
||||
#define UF_GRAPH_EXTENDED 1
|
||||
|
||||
namespace {
|
||||
@ -1045,6 +1044,7 @@ void uf::graph::process( pod::Graph& graph ) {
|
||||
isSrgb[texName] = true;
|
||||
}
|
||||
|
||||
UF_DEBUG_TIMER_MULTITRACE("Processing images...");
|
||||
for ( auto& key : graph.images ) {
|
||||
auto& image = storage.images[key];
|
||||
auto& texture = storage.texture2Ds[key];
|
||||
@ -1071,6 +1071,8 @@ void uf::graph::process( pod::Graph& graph ) {
|
||||
texture.sampler.descriptor.filter.mag = filter;
|
||||
texture.srgb = isSrgb[key];
|
||||
|
||||
// to-do: figure out why I need to skip rendering the next frame to avoid a crash here if the storage buffers need to be resized on the GPU side
|
||||
// i suppose timing is consistent enough to where this is loaded asynchronously and rendering throws a device lost error
|
||||
texture.loadFromImage( image );
|
||||
#if UF_ENV_DREAMCAST
|
||||
image.clear();
|
||||
|
@ -51,6 +51,7 @@ bool ext::opengl::settings::experimental::dedicatedThread = true;
|
||||
bool ext::opengl::settings::experimental::rebuildOnTickBegin = false;
|
||||
bool ext::opengl::settings::experimental::batchQueueSubmissions = false;
|
||||
bool ext::opengl::settings::experimental::registerRenderMode = true;
|
||||
bool ext::opengl::settings::experimental::skipRenderOnRebuild = false;
|
||||
|
||||
// not so experimental
|
||||
bool ext::opengl::settings::invariant::waitOnRenderEnd = false;
|
||||
|
@ -67,6 +67,7 @@ bool ext::vulkan::settings::experimental::rebuildOnTickBegin = false;
|
||||
bool ext::vulkan::settings::experimental::enableMultiGPU = false;
|
||||
bool ext::vulkan::settings::experimental::memoryBudgetBit = true;
|
||||
bool ext::vulkan::settings::experimental::registerRenderMode = true;
|
||||
bool ext::vulkan::settings::experimental::skipRenderOnRebuild = false;
|
||||
|
||||
// not so experimental
|
||||
bool ext::vulkan::settings::invariant::waitOnRenderEnd = false;
|
||||
@ -539,6 +540,8 @@ void ext::vulkan::tick() {
|
||||
}
|
||||
ext::vulkan::gc::textures.clear();
|
||||
*/
|
||||
|
||||
if ( ext::vulkan::states::rebuild && ext::vulkan::settings::experimental::skipRenderOnRebuild ) ::skip = true;
|
||||
|
||||
ext::vulkan::states::rebuild = false;
|
||||
ext::vulkan::states::resized = false;
|
||||
|
Loading…
Reference in New Issue
Block a user