Name Description Size Coverage
cs_mipmap_3d_p.h 8237 -
cs_mipmap_p.h 33041 -
LICENSE.MiniEngine.txt 1077 -
mipmap.hlsl 3805 -
mipmap_3d.hlsl 604 -
qdxgihdrinfo.cpp 7911 -
qdxgihdrinfo_p.h 2309 -
qdxgivsyncservice.cpp 15951 -
qdxgivsyncservice_p.h 3652 -
qrhi.cpp 548895 -
qrhi.h 71976 -
qrhi_p.h 41194 -
qrhi_platform.h 4922 -
qrhid3d11.cpp Direct3D 11 backend. Provides a double-buffered flip model swapchain. Textures and "static" buffers are USAGE_DEFAULT, leaving it to UpdateSubResource to upload the data in any way it sees fit. "Dynamic" buffers are USAGE_DYNAMIC and updating is done by mapping with WRITE_DISCARD. (so here QRhiBuffer keeps a copy of the buffer contents and all of it is memcpy'd every time, leaving the rest (juggling with the memory area Map returns) to the driver). 250012 -
qrhid3d11_p.h 38679 -
qrhid3d12.cpp Direct 3D 12 backend. 347720 -
qrhid3d12_p.h 56312 -
qrhid3dhelpers.cpp 3438 -
qrhid3dhelpers_p.h 1073 -
qrhigles2.cpp OpenGL backend. Binding vertex attribute locations and decomposing uniform buffers into uniforms are handled transparently to the application via the reflection data (QShaderDescription). Real uniform buffers are never used, regardless of the GLSL version. Textures and buffers feature no special logic, it's all just glTexSubImage2D and glBufferSubData (with "dynamic" buffers set to GL_DYNAMIC_DRAW). The swapchain and the associated renderbuffer for depth-stencil will be dummies since we have no control over the underlying buffers here. While the baseline here is plain GLES 2.0, some modern GL(ES) features like multisample renderbuffers, blits, and compute are used when available. Also functional with core profile contexts. 352620 -
qrhigles2_p.h 50398 -
qrhimetal.mm Metal backend. Double buffers and throttles to vsync. "Dynamic" buffers are Shared (host visible) and duplicated (to help having 2 frames in flight), "static" and "immutable" are Managed on macOS and Shared on iOS/tvOS. Textures are Private (device local) and a host visible staging buffer is used to upload data to them. Does not rely on strong objects refs from command buffers but does rely on the automatic resource tracking of the command encoders. Assumes that an autorelease pool (ideally per frame) is available on the thread on which QRhi is used. 357609 -
qrhimetal_icb_p.h 5182 -
qrhimetal_p.h 24109 -
qrhinull.cpp ! \class QRhiNullInitParams \inmodule QtGuiPrivate \inheaderfile rhi/qrhi.h \since 6.6 \brief Null backend specific initialization parameters. \note This is a RHI API with limited compatibility guarantees, see \l QRhi for details. A Null QRhi needs no special parameters for initialization. \badcode QRhiNullInitParams params; rhi = QRhi::create(QRhi::Null, &params); \endcode The Null backend does not issue any graphics calls and creates no resources. All QRhi operations will succeed as normal so applications can still be run, albeit potentially at an unthrottled speed, depending on their frame rendering strategy. 32193 -
qrhinull_p.h 12867 -
qrhivulkan.cpp Vulkan 1.0 backend. Provides a double-buffered swapchain that throttles the rendering thread to vsync. Textures and "static" buffers are device local, and a separate, host visible staging buffer is used to upload data to them. "Dynamic" buffers are in host visible memory and are duplicated (since there can be 2 frames in flight). This is handled transparently to the application. Barriers are generated automatically for each render or compute pass, based on the resources that are used in that pass (in QRhiShaderResourceBindings, vertex inputs, etc.). This implies deferring the recording of the command buffer since the barriers have to be placed at the right place (before the pass), and that can only be done once we know all the things the pass does. This in turn has implications for integrating external commands (beginExternal() - direct Vulkan calls - endExternal()) because that is incompatible with this approach by nature. Therefore we support another mode of operation, where each render or compute pass uses one or more secondary command buffers (recorded right away), with each beginExternal() leading to closing the current secondary cb, creating a new secondary cb for the external content, and then starting yet another one in endExternal() for whatever comes afterwards in the pass. This way the primary command buffer only has vkCmdExecuteCommand(s) within a renderpass instance (Begin-EndRenderPass). (i.e. our only subpass is then VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS instead of VK_SUBPASS_CONTENTS_INLINE) The command buffer management mode is decided on a per frame basis, controlled by the ExternalContentsInPass flag of beginFrame(). 429837 -
qrhivulkan_p.h 46855 -
qshader.cpp ! \class QShader \ingroup painting-3D \ingroup shared \inmodule QtGui \since 6.6 \brief Contains multiple versions of a shader translated to multiple shading languages, together with reflection metadata. QShader is the entry point to shader code in the graphics API agnostic Qt world. Instead of using GLSL shader sources, as was the custom with Qt 5.x, new graphics systems with backends for multiple graphics APIs, such as, Vulkan, Metal, Direct3D, and OpenGL, take QShader as their input whenever a shader needs to be specified. \warning The QRhi family of classes in the Qt Gui module, including QShader and QShaderDescription, offer limited compatibility guarantees. There are no source or binary compatibility guarantees for these classes, meaning the API is only guaranteed to work with the Qt version the application was developed against. Source incompatible changes are however aimed to be kept at a minimum and will only be made in minor releases (6.7, 6.8, and so on). To use these classes in an application, link to \c{Qt::GuiPrivate} (if using CMake), and include the headers with the \c rhi prefix, for example \c{#include <rhi/qshader.h>}. A QShader instance is empty and thus invalid by default. To get a useful instance, the two typical methods are: \list \li Generate the contents offline, during build time or earlier, using the \c qsb command line tool. The result is a binary file that is shipped with the application, read via QIODevice::readAll(), and then deserialized via fromSerialized(). For more information, see QShaderBaker. \li Generate at run time via QShaderBaker. This is an expensive operation, but allows applications to use user-provided or dynamically generated shader source strings. \endlist When used together with the Qt Rendering Hardware Interface and its classes, like QRhiGraphicsPipeline, no further action is needed from the application's side as these classes are prepared to consume a QShader whenever a shader needs to be specified for a given stage of the graphics pipeline. Alternatively, applications can access \list \li the source or byte code for any of the shading language versions that are included in the QShader, \li the name of the entry point for the shader, \li the reflection metadata containing a description of the shader's inputs, outputs and resources like uniform blocks. This is essential when an application or framework needs to discover the inputs of a shader at runtime due to not having advance knowledge of the vertex attributes or the layout of the uniform buffers used by the shader. \endlist QShader makes no assumption about the shading language that was used as the source for generating the various versions and variants that are included in it. QShader uses implicit sharing similarly to many core Qt types, and so can be returned or passed by value. Detach happens implicitly when calling a setter. For reference, a typical, portable QRhi expects that a QShader suitable for all its backends contains at least the following. (this excludes support for core profile OpenGL contexts, add GLSL 150 or newer for that) \list \li SPIR-V 1.0 bytecode suitable for Vulkan 1.0 or newer \li GLSL/ES 100 source code suitable for OpenGL ES 2.0 or newer \li GLSL 120 source code suitable for OpenGL 2.1 or newer \li HLSL Shader Model 5.0 source code or the corresponding DXBC bytecode suitable for Direct3D 11/12 \li Metal Shading Language 1.2 source code or the corresponding bytecode suitable for Metal 1.2 or newer \endlist \sa QShaderBaker 39439 -
qshader.h 7690 -
qshader_p.h 3324 -
qshaderdescription.cpp 69452 -
qshaderdescription.h 11212 -
qshaderdescription_p.h 3017 -
qt_attribution.json 782 -
REUSE.toml 180 -
test.hlsl 385 -
vs_test_p.h 7338 -