Add renderer backend feature reporting

This commit is contained in:
2026-06-02 17:18:48 +02:00
parent 18617cdbd2
commit 995752da75
11 changed files with 103 additions and 7 deletions

View File

@@ -654,6 +654,16 @@ const char* RecordingRenderDevice::backend_name() const noexcept
return "recording";
}
RenderDeviceFeatures RecordingRenderDevice::features() const noexcept
{
return RenderDeviceFeatures {
.explicit_texture_transitions = true,
.texture_copy = true,
.render_target_blit = true,
.frame_capture = true,
};
}
pp::foundation::Result<std::unique_ptr<ITexture2D>> RecordingRenderDevice::create_texture(
TextureDesc desc) noexcept
{

View File

@@ -199,6 +199,7 @@ public:
RecordingRenderDevice() noexcept;
[[nodiscard]] const char* backend_name() const noexcept override;
[[nodiscard]] RenderDeviceFeatures features() const noexcept override;
[[nodiscard]] pp::foundation::Result<std::unique_ptr<ITexture2D>> create_texture(
TextureDesc desc) noexcept override;
[[nodiscard]] pp::foundation::Result<std::unique_ptr<IRenderTarget>> create_render_target(

View File

@@ -226,6 +226,16 @@ struct ShaderProgramDesc {
ShaderStageSource fragment;
};
struct RenderDeviceFeatures {
bool framebuffer_fetch = false;
bool explicit_texture_transitions = false;
bool texture_copy = false;
bool render_target_blit = false;
bool frame_capture = false;
bool float16_render_targets = false;
bool float32_render_targets = false;
};
class ITexture2D {
public:
virtual ~ITexture2D() = default;
@@ -321,6 +331,7 @@ class IRenderDevice {
public:
virtual ~IRenderDevice() = default;
[[nodiscard]] virtual const char* backend_name() const noexcept = 0;
[[nodiscard]] virtual RenderDeviceFeatures features() const noexcept = 0;
[[nodiscard]] virtual pp::foundation::Result<std::unique_ptr<ITexture2D>> create_texture(
TextureDesc desc) noexcept = 0;
[[nodiscard]] virtual pp::foundation::Result<std::unique_ptr<IRenderTarget>> create_render_target(