refactor(core/rendering): Screen desacoblat de SDL3GPUShader concret (COUP-02a)
Screen ja no inclou sdl3gpu/sdl3gpu_shader.hpp ni instancia la classe concreta. S'afegeix la fàbrica Rendering::makeDefaultShaderBackend() declarada a shader_backend.hpp i implementada a sdl3gpu_shader.cpp (únic fitxer que encara coneix la classe concreta). Per a que Screen no necessite static_cast, releaseWindow() passa a ser mètode virtual pur de la interfície ShaderBackend (abans només existia a SDL3GPUShader). SDL3GPUShader::releaseWindow marca override. Build + smoke 5s xvfb OK (exit 124). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
a63deac6a3
commit
029907d5a0
5 files changed
+21
-7
No files matched your search
@@ -3,6 +3,7 @@
|
||||
#include <SDL3/SDL.h>
|
||||
|
||||
#include <cstdint>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
|
||||
#include "utils/defaults.hpp"
|
||||
@@ -90,8 +91,17 @@ namespace Rendering {
|
||||
// Destrueix tots els recursos GPU (pipeline, textura, buffer, sampler, device).
|
||||
virtual void cleanup() = 0;
|
||||
|
||||
// Allibera la finestra del device sense destruir el device. Cal cridar-ho
|
||||
// ABANS de SDL_DestroyWindow per evitar que vkDestroyInstance intente
|
||||
// alliberar una Wayland surface ja desapareguda.
|
||||
virtual void releaseWindow() = 0;
|
||||
|
||||
[[nodiscard]] virtual auto isReady() const -> bool = 0;
|
||||
[[nodiscard]] virtual auto getDriverName() const -> std::string = 0;
|
||||
};
|
||||
|
||||
// Fàbrica: construeix el backend per defecte del projecte (SDL3 GPU).
|
||||
// Screen l'invoca sense conèixer la classe concreta.
|
||||
[[nodiscard]] auto makeDefaultShaderBackend() -> std::unique_ptr<ShaderBackend>;
|
||||
|
||||
} // namespace Rendering
|
||||
Reference in new issue
Block a user