You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Both DirectX and Vulkan backends have a bytecode caching system for shaders, allowing the shaders to be quickly loaded without requiring compilation. OpenGL has no such system at the moment. This primarily impacts engine load and start-up times.
The options are:
Use SPIR-V for bytecode caching, same as for Vulkan. Although this requires an OpenGL extension that might not be available on all platforms, especially macOS and mobiles.
Use the binary program caching available with OpenGL 4.1. This requires a different form of cache than the current system, as the cached bytecode is not machine independant and is only guaranteed to work on the specific machine it was compiled on.
This cache would need to be generated on-the-fly, from the core thread, as the shaders are compiled. Additionally, individual GPU programs cannot be cached, but rather an entire linked program (i.e. a pipeline state). Parent Shader would need to provide child Techniques/Passes/*PipelineStates with unique identifiers so they can locate their data in the cache. OpenGL would require its own implementation of GraphicsPipelineState and ComputePipelineState that internally deals with the cache.
The text was updated successfully, but these errors were encountered:
Both DirectX and Vulkan backends have a bytecode caching system for shaders, allowing the shaders to be quickly loaded without requiring compilation. OpenGL has no such system at the moment. This primarily impacts engine load and start-up times.
The options are:
Use SPIR-V for bytecode caching, same as for Vulkan. Although this requires an OpenGL extension that might not be available on all platforms, especially macOS and mobiles.
Use the binary program caching available with OpenGL 4.1. This requires a different form of cache than the current system, as the cached bytecode is not machine independant and is only guaranteed to work on the specific machine it was compiled on.
This cache would need to be generated on-the-fly, from the core thread, as the shaders are compiled. Additionally, individual GPU programs cannot be cached, but rather an entire linked program (i.e. a pipeline state). Parent
Shader
would need to provide childTechnique
s/Pass
es/*PipelineState
s with unique identifiers so they can locate their data in the cache. OpenGL would require its own implementation ofGraphicsPipelineState
andComputePipelineState
that internally deals with the cache.The text was updated successfully, but these errors were encountered: