mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-01-05 22:42:54 +00:00
Merge branch 'rhi-kill-xfer-ctx' into 'master'
Remove TransferContext from RHI See merge request KartKrew/Kart!1328
This commit is contained in:
commit
5c3355e47d
24 changed files with 59 additions and 122 deletions
|
|
@ -26,10 +26,10 @@ public:
|
|||
/// @param rhi
|
||||
virtual void prepass(rhi::Rhi& rhi) = 0;
|
||||
|
||||
/// @brief Upload contents for needed GPU resources.
|
||||
/// @brief Upload contents for needed GPU resources. Passes must implement but this will be removed soon.
|
||||
/// @param rhi
|
||||
/// @param ctx
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::TransferContext> ctx) = 0;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) = 0;
|
||||
|
||||
/// @brief Issue draw calls.
|
||||
/// @param rhi
|
||||
|
|
|
|||
|
|
@ -141,7 +141,7 @@ static Rect get_screen_viewport(uint32_t screen, uint32_t screens, uint32_t w, u
|
|||
return {0, 0, w, h};
|
||||
}
|
||||
|
||||
void BlitPostimgScreens::transfer(Rhi& rhi, Handle<TransferContext> ctx)
|
||||
void BlitPostimgScreens::transfer(Rhi& rhi, Handle<GraphicsContext> ctx)
|
||||
{
|
||||
// Upload needed buffers
|
||||
if (upload_quad_buffer_)
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@ public:
|
|||
virtual ~BlitPostimgScreens();
|
||||
|
||||
virtual void prepass(rhi::Rhi& rhi) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::TransferContext> ctx) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
virtual void graphics(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
virtual void postpass(rhi::Rhi& rhi) override;
|
||||
|
||||
|
|
|
|||
|
|
@ -124,7 +124,7 @@ void BlitRectPass::prepass(Rhi& rhi)
|
|||
}
|
||||
}
|
||||
|
||||
void BlitRectPass::transfer(Rhi& rhi, Handle<TransferContext> ctx)
|
||||
void BlitRectPass::transfer(Rhi& rhi, Handle<GraphicsContext> ctx)
|
||||
{
|
||||
if (quad_vbo_needs_upload_ && quad_vbo_)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ public:
|
|||
virtual ~BlitRectPass();
|
||||
|
||||
virtual void prepass(rhi::Rhi& rhi) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::TransferContext> ctx) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
virtual void graphics(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
virtual void postpass(rhi::Rhi& rhi) override;
|
||||
|
||||
|
|
|
|||
|
|
@ -127,7 +127,7 @@ void ImguiPass::prepass(Rhi& rhi)
|
|||
}
|
||||
}
|
||||
|
||||
void ImguiPass::transfer(Rhi& rhi, Handle<TransferContext> ctx)
|
||||
void ImguiPass::transfer(Rhi& rhi, Handle<GraphicsContext> ctx)
|
||||
{
|
||||
ImGuiIO& io = ImGui::GetIO();
|
||||
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ public:
|
|||
|
||||
virtual void prepass(rhi::Rhi& rhi) override;
|
||||
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::TransferContext> ctx) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
|
||||
virtual void graphics(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ public:
|
|||
virtual ~LambdaPass();
|
||||
|
||||
virtual void prepass(rhi::Rhi& rhi) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::TransferContext> ctx) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
virtual void graphics(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
virtual void postpass(rhi::Rhi& rhi) override;
|
||||
};
|
||||
|
|
@ -63,7 +63,7 @@ void LambdaPass::prepass(Rhi& rhi)
|
|||
}
|
||||
}
|
||||
|
||||
void LambdaPass::transfer(Rhi&, Handle<TransferContext>)
|
||||
void LambdaPass::transfer(Rhi&, Handle<GraphicsContext>)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
@ -137,7 +137,7 @@ void PassManager::prepass(Rhi& rhi)
|
|||
}
|
||||
}
|
||||
|
||||
void PassManager::transfer(Rhi& rhi, Handle<TransferContext> ctx)
|
||||
void PassManager::transfer(Rhi& rhi, Handle<GraphicsContext> ctx)
|
||||
{
|
||||
for (auto& pass : passes_)
|
||||
{
|
||||
|
|
@ -179,11 +179,8 @@ void PassManager::render(Rhi& rhi)
|
|||
|
||||
prepass(rhi);
|
||||
|
||||
Handle<TransferContext> tc = rhi.begin_transfer();
|
||||
transfer(rhi, tc);
|
||||
rhi.end_transfer(tc);
|
||||
|
||||
Handle<GraphicsContext> gc = rhi.begin_graphics();
|
||||
transfer(rhi, gc);
|
||||
graphics(rhi, gc);
|
||||
rhi.end_graphics(gc);
|
||||
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ public:
|
|||
PassManager& operator=(PassManager&&) = delete;
|
||||
|
||||
virtual void prepass(rhi::Rhi& rhi) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::TransferContext> ctx) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
virtual void graphics(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
virtual void postpass(rhi::Rhi& rhi) override;
|
||||
|
||||
|
|
|
|||
|
|
@ -175,7 +175,7 @@ void PostprocessWipePass::prepass(Rhi& rhi)
|
|||
});
|
||||
}
|
||||
|
||||
void PostprocessWipePass::transfer(Rhi& rhi, Handle<TransferContext> ctx)
|
||||
void PostprocessWipePass::transfer(Rhi& rhi, Handle<GraphicsContext> ctx)
|
||||
{
|
||||
if (wipe_tex_ == kNullHandle)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ public:
|
|||
virtual ~PostprocessWipePass();
|
||||
|
||||
virtual void prepass(rhi::Rhi& rhi) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::TransferContext> ctx) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
virtual void graphics(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
virtual void postpass(rhi::Rhi& rhi) override;
|
||||
|
||||
|
|
|
|||
|
|
@ -128,7 +128,7 @@ void FramebufferManager::prepass(Rhi& rhi)
|
|||
}
|
||||
}
|
||||
|
||||
void FramebufferManager::transfer(Rhi& rhi, Handle<TransferContext> ctx)
|
||||
void FramebufferManager::transfer(Rhi& rhi, Handle<GraphicsContext> ctx)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
@ -169,7 +169,7 @@ void MainPaletteManager::prepass(Rhi& rhi)
|
|||
}
|
||||
}
|
||||
|
||||
void MainPaletteManager::upload_palette(Rhi& rhi, Handle<TransferContext> ctx)
|
||||
void MainPaletteManager::upload_palette(Rhi& rhi, Handle<GraphicsContext> ctx)
|
||||
{
|
||||
std::array<byteColor_t, kPaletteSize> palette_32;
|
||||
for (std::size_t i = 0; i < kPaletteSize; i++)
|
||||
|
|
@ -179,7 +179,7 @@ void MainPaletteManager::upload_palette(Rhi& rhi, Handle<TransferContext> ctx)
|
|||
rhi.update_texture(ctx, palette_, {0, 0, kPaletteSize, 1}, PixelFormat::kRGBA8, tcb::as_bytes(tcb::span(palette_32)));
|
||||
}
|
||||
|
||||
void MainPaletteManager::upload_lighttables(Rhi& rhi, Handle<TransferContext> ctx)
|
||||
void MainPaletteManager::upload_lighttables(Rhi& rhi, Handle<GraphicsContext> ctx)
|
||||
{
|
||||
if (colormaps != nullptr)
|
||||
{
|
||||
|
|
@ -206,7 +206,7 @@ void MainPaletteManager::upload_lighttables(Rhi& rhi, Handle<TransferContext> ct
|
|||
}
|
||||
}
|
||||
|
||||
void MainPaletteManager::upload_default_colormap(Rhi& rhi, Handle<TransferContext> ctx)
|
||||
void MainPaletteManager::upload_default_colormap(Rhi& rhi, Handle<GraphicsContext> ctx)
|
||||
{
|
||||
std::array<uint8_t, kPaletteSize> data;
|
||||
for (std::size_t i = 0; i < kPaletteSize; i++)
|
||||
|
|
@ -216,7 +216,7 @@ void MainPaletteManager::upload_default_colormap(Rhi& rhi, Handle<TransferContex
|
|||
rhi.update_texture(ctx, default_colormap_, {0, 0, kPaletteSize, 1}, PixelFormat::kR8, tcb::as_bytes(tcb::span(data)));
|
||||
}
|
||||
|
||||
void MainPaletteManager::upload_colormaps(Rhi& rhi, Handle<TransferContext> ctx)
|
||||
void MainPaletteManager::upload_colormaps(Rhi& rhi, Handle<GraphicsContext> ctx)
|
||||
{
|
||||
for (auto to_upload : colormaps_to_upload_)
|
||||
{
|
||||
|
|
@ -279,7 +279,7 @@ rhi::Handle<rhi::Texture> MainPaletteManager::find_extra_lighttable(srb2::NotNul
|
|||
return lighttables_.at(lighttable);
|
||||
}
|
||||
|
||||
void MainPaletteManager::transfer(Rhi& rhi, Handle<TransferContext> ctx)
|
||||
void MainPaletteManager::transfer(Rhi& rhi, Handle<GraphicsContext> ctx)
|
||||
{
|
||||
upload_palette(rhi, ctx);
|
||||
upload_lighttables(rhi, ctx);
|
||||
|
|
@ -327,7 +327,7 @@ void CommonResourcesManager::prepass(Rhi& rhi)
|
|||
}
|
||||
}
|
||||
|
||||
void CommonResourcesManager::transfer(Rhi& rhi, Handle<TransferContext> ctx)
|
||||
void CommonResourcesManager::transfer(Rhi& rhi, Handle<GraphicsContext> ctx)
|
||||
{
|
||||
if (!init_)
|
||||
{
|
||||
|
|
@ -382,7 +382,7 @@ void FlatTextureManager::prepass(Rhi& rhi)
|
|||
{
|
||||
}
|
||||
|
||||
void FlatTextureManager::transfer(Rhi& rhi, Handle<TransferContext> ctx)
|
||||
void FlatTextureManager::transfer(Rhi& rhi, Handle<GraphicsContext> ctx)
|
||||
{
|
||||
std::vector<std::array<uint8_t, 2>> flat_data;
|
||||
for (auto flat_lump : to_upload_)
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ public:
|
|||
virtual ~FramebufferManager();
|
||||
|
||||
virtual void prepass(rhi::Rhi& rhi) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::TransferContext> ctx) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
virtual void graphics(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
virtual void postpass(rhi::Rhi& rhi) override;
|
||||
|
||||
|
|
@ -83,17 +83,17 @@ class MainPaletteManager final : public Pass
|
|||
std::vector<const uint8_t*> colormaps_to_upload_;
|
||||
std::vector<const uint8_t*> lighttables_to_upload_;
|
||||
|
||||
void upload_palette(rhi::Rhi& rhi, rhi::Handle<rhi::TransferContext> ctx);
|
||||
void upload_lighttables(rhi::Rhi& rhi, rhi::Handle<rhi::TransferContext> ctx);
|
||||
void upload_default_colormap(rhi::Rhi& rhi, rhi::Handle<rhi::TransferContext> ctx);
|
||||
void upload_colormaps(rhi::Rhi& rhi, rhi::Handle<rhi::TransferContext> ctx);
|
||||
void upload_palette(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx);
|
||||
void upload_lighttables(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx);
|
||||
void upload_default_colormap(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx);
|
||||
void upload_colormaps(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx);
|
||||
|
||||
public:
|
||||
MainPaletteManager();
|
||||
virtual ~MainPaletteManager();
|
||||
|
||||
virtual void prepass(rhi::Rhi& rhi) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::TransferContext> ctx) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
virtual void graphics(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
virtual void postpass(rhi::Rhi& rhi) override;
|
||||
|
||||
|
|
@ -120,7 +120,7 @@ public:
|
|||
virtual ~CommonResourcesManager();
|
||||
|
||||
virtual void prepass(rhi::Rhi& rhi) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::TransferContext> ctx) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
virtual void graphics(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
virtual void postpass(rhi::Rhi& rhi) override;
|
||||
|
||||
|
|
@ -153,7 +153,7 @@ public:
|
|||
virtual ~FlatTextureManager();
|
||||
|
||||
virtual void prepass(rhi::Rhi& rhi) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::TransferContext> ctx) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
virtual void graphics(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
virtual void postpass(rhi::Rhi& rhi) override;
|
||||
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ void ScreenshotPass::prepass(Rhi& rhi)
|
|||
doing_screenshot_ = takescreenshot || moviemode != MM_OFF;
|
||||
}
|
||||
|
||||
void ScreenshotPass::transfer(Rhi& rhi, Handle<TransferContext> ctx)
|
||||
void ScreenshotPass::transfer(Rhi& rhi, Handle<GraphicsContext> ctx)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ public:
|
|||
virtual ~ScreenshotPass();
|
||||
|
||||
virtual void prepass(rhi::Rhi& rhi) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::TransferContext> ctx) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
virtual void graphics(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
virtual void postpass(rhi::Rhi& rhi) override;
|
||||
|
||||
|
|
|
|||
|
|
@ -77,7 +77,7 @@ void SoftwarePass::prepass(Rhi& rhi)
|
|||
}
|
||||
}
|
||||
|
||||
void SoftwarePass::transfer(Rhi& rhi, Handle<TransferContext> ctx)
|
||||
void SoftwarePass::transfer(Rhi& rhi, Handle<GraphicsContext> ctx)
|
||||
{
|
||||
// Upload screen
|
||||
tcb::span<const std::byte> screen_span;
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ public:
|
|||
virtual ~SoftwarePass();
|
||||
|
||||
virtual void prepass(rhi::Rhi& rhi) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::TransferContext> ctx) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
virtual void graphics(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
virtual void postpass(rhi::Rhi& rhi) override;
|
||||
|
||||
|
|
|
|||
|
|
@ -498,7 +498,7 @@ void TwodeePass::prepass(Rhi& rhi)
|
|||
}
|
||||
}
|
||||
|
||||
void TwodeePass::transfer(Rhi& rhi, Handle<TransferContext> ctx)
|
||||
void TwodeePass::transfer(Rhi& rhi, Handle<GraphicsContext> ctx)
|
||||
{
|
||||
if (!ctx_ || !data_)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -97,7 +97,7 @@ struct TwodeePass final : public Pass
|
|||
|
||||
virtual void prepass(rhi::Rhi& rhi) override;
|
||||
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::TransferContext> ctx) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
|
||||
virtual void graphics(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
|
||||
|
|
|
|||
|
|
@ -348,7 +348,7 @@ void PatchAtlasCache::prepass(Rhi& rhi)
|
|||
}
|
||||
}
|
||||
|
||||
void PatchAtlasCache::transfer(Rhi& rhi, Handle<TransferContext> ctx)
|
||||
void PatchAtlasCache::transfer(Rhi& rhi, Handle<GraphicsContext> ctx)
|
||||
{
|
||||
SRB2_ASSERT(ready_for_lookup());
|
||||
|
||||
|
|
|
|||
|
|
@ -125,7 +125,7 @@ public:
|
|||
PatchAtlas* find_patch(srb2::NotNull<const patch_t*> patch);
|
||||
|
||||
virtual void prepass(rhi::Rhi& rhi) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::TransferContext> ctx) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
virtual void graphics(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
virtual void postpass(rhi::Rhi& rhi) override;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -568,8 +568,6 @@ GlCoreRhi::~GlCoreRhi() = default;
|
|||
|
||||
rhi::Handle<rhi::RenderPass> GlCoreRhi::create_render_pass(const rhi::RenderPassDesc& desc)
|
||||
{
|
||||
SRB2_ASSERT(graphics_context_active_ == false);
|
||||
|
||||
// GL has no formal render pass object
|
||||
GlCoreRenderPass pass;
|
||||
pass.desc = desc;
|
||||
|
|
@ -578,15 +576,11 @@ rhi::Handle<rhi::RenderPass> GlCoreRhi::create_render_pass(const rhi::RenderPass
|
|||
|
||||
void GlCoreRhi::destroy_render_pass(rhi::Handle<rhi::RenderPass> handle)
|
||||
{
|
||||
SRB2_ASSERT(graphics_context_active_ == false);
|
||||
|
||||
render_pass_slab_.remove(handle);
|
||||
}
|
||||
|
||||
rhi::Handle<rhi::Texture> GlCoreRhi::create_texture(const rhi::TextureDesc& desc)
|
||||
{
|
||||
SRB2_ASSERT(graphics_context_active_ == false);
|
||||
|
||||
GLenum internal_format = map_internal_texture_format(desc.format);
|
||||
SRB2_ASSERT(internal_format != GL_ZERO);
|
||||
GLenum format = GL_RGBA;
|
||||
|
|
@ -615,8 +609,6 @@ rhi::Handle<rhi::Texture> GlCoreRhi::create_texture(const rhi::TextureDesc& desc
|
|||
|
||||
void GlCoreRhi::destroy_texture(rhi::Handle<rhi::Texture> handle)
|
||||
{
|
||||
SRB2_ASSERT(graphics_context_active_ == false);
|
||||
|
||||
SRB2_ASSERT(texture_slab_.is_valid(handle) == true);
|
||||
GlCoreTexture casted = texture_slab_.remove(handle);
|
||||
GLuint name = casted.texture;
|
||||
|
|
@ -624,16 +616,14 @@ void GlCoreRhi::destroy_texture(rhi::Handle<rhi::Texture> handle)
|
|||
}
|
||||
|
||||
void GlCoreRhi::update_texture(
|
||||
Handle<TransferContext> ctx,
|
||||
Handle<GraphicsContext> ctx,
|
||||
Handle<Texture> texture,
|
||||
Rect region,
|
||||
srb2::rhi::PixelFormat data_format,
|
||||
tcb::span<const std::byte> data
|
||||
)
|
||||
{
|
||||
SRB2_ASSERT(graphics_context_active_ == false);
|
||||
SRB2_ASSERT(transfer_context_active_ == true);
|
||||
SRB2_ASSERT(ctx.generation() == transfer_context_generation_);
|
||||
SRB2_ASSERT(graphics_context_active_ == true);
|
||||
|
||||
if (data.empty())
|
||||
{
|
||||
|
|
@ -678,8 +668,6 @@ void GlCoreRhi::update_texture(
|
|||
|
||||
rhi::Handle<rhi::Buffer> GlCoreRhi::create_buffer(const rhi::BufferDesc& desc)
|
||||
{
|
||||
SRB2_ASSERT(graphics_context_active_ == false);
|
||||
|
||||
GLenum target = map_buffer_type(desc.type);
|
||||
SRB2_ASSERT(target != GL_ZERO);
|
||||
|
||||
|
|
@ -704,10 +692,7 @@ rhi::Handle<rhi::Buffer> GlCoreRhi::create_buffer(const rhi::BufferDesc& desc)
|
|||
|
||||
void GlCoreRhi::destroy_buffer(rhi::Handle<rhi::Buffer> handle)
|
||||
{
|
||||
SRB2_ASSERT(graphics_context_active_ == false);
|
||||
|
||||
SRB2_ASSERT(buffer_slab_.is_valid(handle) == true);
|
||||
SRB2_ASSERT(graphics_context_active_ == false);
|
||||
GlCoreBuffer casted = buffer_slab_.remove(handle);
|
||||
GLuint name = casted.buffer;
|
||||
|
||||
|
|
@ -715,15 +700,14 @@ void GlCoreRhi::destroy_buffer(rhi::Handle<rhi::Buffer> handle)
|
|||
}
|
||||
|
||||
void GlCoreRhi::update_buffer(
|
||||
rhi::Handle<TransferContext> ctx,
|
||||
rhi::Handle<GraphicsContext> ctx,
|
||||
rhi::Handle<rhi::Buffer> handle,
|
||||
uint32_t offset,
|
||||
tcb::span<const std::byte> data
|
||||
)
|
||||
{
|
||||
SRB2_ASSERT(graphics_context_active_ == false);
|
||||
SRB2_ASSERT(transfer_context_active_ == true);
|
||||
SRB2_ASSERT(ctx.generation() == transfer_context_generation_);
|
||||
SRB2_ASSERT(graphics_context_active_ == true);
|
||||
SRB2_ASSERT(ctx.generation() == graphics_context_generation_);
|
||||
|
||||
if (data.empty())
|
||||
{
|
||||
|
|
@ -753,11 +737,10 @@ void GlCoreRhi::update_buffer(
|
|||
}
|
||||
|
||||
rhi::Handle<rhi::UniformSet>
|
||||
GlCoreRhi::create_uniform_set(rhi::Handle<rhi::TransferContext> ctx, const rhi::CreateUniformSetInfo& info)
|
||||
GlCoreRhi::create_uniform_set(rhi::Handle<rhi::GraphicsContext> ctx, const rhi::CreateUniformSetInfo& info)
|
||||
{
|
||||
SRB2_ASSERT(graphics_context_active_ == false);
|
||||
SRB2_ASSERT(transfer_context_active_ == true);
|
||||
SRB2_ASSERT(ctx.generation() == transfer_context_generation_);
|
||||
SRB2_ASSERT(graphics_context_active_ == true);
|
||||
SRB2_ASSERT(ctx.generation() == graphics_context_generation_);
|
||||
|
||||
GlCoreUniformSet uniform_set;
|
||||
|
||||
|
|
@ -770,14 +753,13 @@ GlCoreRhi::create_uniform_set(rhi::Handle<rhi::TransferContext> ctx, const rhi::
|
|||
}
|
||||
|
||||
rhi::Handle<rhi::BindingSet> GlCoreRhi::create_binding_set(
|
||||
rhi::Handle<rhi::TransferContext> ctx,
|
||||
rhi::Handle<rhi::GraphicsContext> ctx,
|
||||
Handle<Pipeline> pipeline,
|
||||
const rhi::CreateBindingSetInfo& info
|
||||
)
|
||||
{
|
||||
SRB2_ASSERT(graphics_context_active_ == false);
|
||||
SRB2_ASSERT(transfer_context_active_ == true);
|
||||
SRB2_ASSERT(ctx.generation() == transfer_context_generation_);
|
||||
SRB2_ASSERT(graphics_context_active_ == true);
|
||||
SRB2_ASSERT(ctx.generation() == graphics_context_generation_);
|
||||
|
||||
SRB2_ASSERT(pipeline_slab_.is_valid(pipeline) == true);
|
||||
auto& pl = pipeline_slab_[pipeline];
|
||||
|
|
@ -842,8 +824,6 @@ rhi::Handle<rhi::BindingSet> GlCoreRhi::create_binding_set(
|
|||
|
||||
rhi::Handle<rhi::Renderbuffer> GlCoreRhi::create_renderbuffer(const rhi::RenderbufferDesc& desc)
|
||||
{
|
||||
SRB2_ASSERT(graphics_context_active_ == false);
|
||||
|
||||
GLuint name = 0;
|
||||
gl_->GenRenderbuffers(1, &name);
|
||||
|
||||
|
|
@ -876,8 +856,6 @@ rhi::Handle<rhi::Renderbuffer> GlCoreRhi::create_renderbuffer(const rhi::Renderb
|
|||
|
||||
void GlCoreRhi::destroy_renderbuffer(rhi::Handle<rhi::Renderbuffer> handle)
|
||||
{
|
||||
SRB2_ASSERT(graphics_context_active_ == false);
|
||||
|
||||
SRB2_ASSERT(renderbuffer_slab_.is_valid(handle) == true);
|
||||
GlCoreRenderbuffer casted = renderbuffer_slab_.remove(handle);
|
||||
GLuint name = casted.renderbuffer;
|
||||
|
|
@ -1192,8 +1170,6 @@ rhi::Handle<rhi::Pipeline> GlCoreRhi::create_pipeline(const PipelineDesc& desc)
|
|||
|
||||
void GlCoreRhi::destroy_pipeline(rhi::Handle<rhi::Pipeline> handle)
|
||||
{
|
||||
SRB2_ASSERT(graphics_context_active_ == false);
|
||||
|
||||
SRB2_ASSERT(pipeline_slab_.is_valid(handle) == true);
|
||||
GlCorePipeline casted = pipeline_slab_.remove(handle);
|
||||
GLuint vertex_shader = casted.vertex_shader;
|
||||
|
|
@ -1222,25 +1198,6 @@ void GlCoreRhi::end_graphics(rhi::Handle<rhi::GraphicsContext> handle)
|
|||
GL_ASSERT;
|
||||
}
|
||||
|
||||
rhi::Handle<rhi::TransferContext> GlCoreRhi::begin_transfer()
|
||||
{
|
||||
SRB2_ASSERT(graphics_context_active_ == false);
|
||||
SRB2_ASSERT(transfer_context_active_ == false);
|
||||
|
||||
transfer_context_generation_ += 1;
|
||||
transfer_context_active_ = true;
|
||||
|
||||
return rhi::Handle<rhi::TransferContext>(0, transfer_context_generation_);
|
||||
}
|
||||
|
||||
void GlCoreRhi::end_transfer(rhi::Handle<rhi::TransferContext> ctx)
|
||||
{
|
||||
SRB2_ASSERT(graphics_context_active_ == false);
|
||||
SRB2_ASSERT(transfer_context_active_ == true);
|
||||
|
||||
transfer_context_active_ = false;
|
||||
}
|
||||
|
||||
void GlCoreRhi::present()
|
||||
{
|
||||
SRB2_ASSERT(platform_ != nullptr);
|
||||
|
|
@ -1269,7 +1226,7 @@ void GlCoreRhi::begin_default_render_pass(Handle<GraphicsContext> ctx, bool clea
|
|||
gl_->ClearColor(0.0f, 0.0f, 0.0f, 1.0f);
|
||||
gl_->ClearDepth(1.0f);
|
||||
gl_->ClearStencil(0);
|
||||
gl_->Clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||
gl_->Clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
|
||||
GL_ASSERT;
|
||||
}
|
||||
|
||||
|
|
@ -1661,7 +1618,6 @@ void GlCoreRhi::bind_binding_set(Handle<GraphicsContext> ctx, Handle<BindingSet>
|
|||
|
||||
void GlCoreRhi::bind_index_buffer(Handle<GraphicsContext> ctx, Handle<Buffer> buffer)
|
||||
{
|
||||
SRB2_ASSERT(transfer_context_active_ == false);
|
||||
SRB2_ASSERT(graphics_context_active_ == true && graphics_context_generation_ == ctx.generation());
|
||||
SRB2_ASSERT(current_render_pass_.has_value() == true && current_pipeline_.has_value() == true);
|
||||
|
||||
|
|
|
|||
|
|
@ -123,10 +123,6 @@ struct GlCoreGraphicsContext : public rhi::GraphicsContext
|
|||
{
|
||||
};
|
||||
|
||||
struct GlCoreTransferContext : public rhi::TransferContext
|
||||
{
|
||||
};
|
||||
|
||||
struct GlCoreActiveUniform
|
||||
{
|
||||
uint32_t type;
|
||||
|
|
@ -159,10 +155,8 @@ class GlCoreRhi final : public Rhi
|
|||
std::optional<Handle<Pipeline>> current_pipeline_;
|
||||
PrimitiveType current_primitive_type_ = PrimitiveType::kPoints;
|
||||
bool graphics_context_active_ = false;
|
||||
bool transfer_context_active_ = false;
|
||||
uint32_t graphics_context_generation_ = 0;
|
||||
uint32_t index_buffer_offset_ = 0;
|
||||
uint32_t transfer_context_generation_ = 0;
|
||||
|
||||
uint8_t stencil_front_reference_ = 0;
|
||||
uint8_t stencil_front_compare_mask_ = 0xFF;
|
||||
|
|
@ -193,26 +187,23 @@ public:
|
|||
virtual Rect get_renderbuffer_size(Handle<Renderbuffer> renderbuffer) override;
|
||||
virtual uint32_t get_buffer_size(Handle<Buffer> buffer) override;
|
||||
|
||||
virtual Handle<TransferContext> begin_transfer() override;
|
||||
virtual void end_transfer(Handle<TransferContext> handle) override;
|
||||
|
||||
virtual void update_buffer(
|
||||
Handle<TransferContext> ctx,
|
||||
Handle<GraphicsContext> ctx,
|
||||
Handle<Buffer> buffer,
|
||||
uint32_t offset,
|
||||
tcb::span<const std::byte> data
|
||||
) override;
|
||||
virtual void update_texture(
|
||||
Handle<TransferContext> ctx,
|
||||
Handle<GraphicsContext> ctx,
|
||||
Handle<Texture> texture,
|
||||
Rect region,
|
||||
srb2::rhi::PixelFormat data_format,
|
||||
tcb::span<const std::byte> data
|
||||
) override;
|
||||
virtual Handle<UniformSet>
|
||||
create_uniform_set(Handle<TransferContext> ctx, const CreateUniformSetInfo& info) override;
|
||||
create_uniform_set(Handle<GraphicsContext> ctx, const CreateUniformSetInfo& info) override;
|
||||
virtual Handle<BindingSet>
|
||||
create_binding_set(Handle<TransferContext> ctx, Handle<Pipeline> pipeline, const CreateBindingSetInfo& info)
|
||||
create_binding_set(Handle<GraphicsContext> ctx, Handle<Pipeline> pipeline, const CreateBindingSetInfo& info)
|
||||
override;
|
||||
|
||||
virtual Handle<GraphicsContext> begin_graphics() override;
|
||||
|
|
|
|||
|
|
@ -569,9 +569,6 @@ struct BindingSet
|
|||
{
|
||||
};
|
||||
|
||||
struct TransferContext
|
||||
{
|
||||
};
|
||||
struct GraphicsContext
|
||||
{
|
||||
};
|
||||
|
|
@ -607,26 +604,22 @@ struct Rhi
|
|||
virtual Rect get_renderbuffer_size(Handle<Renderbuffer> renderbuffer) = 0;
|
||||
virtual uint32_t get_buffer_size(Handle<Buffer> buffer) = 0;
|
||||
|
||||
virtual Handle<TransferContext> begin_transfer() = 0;
|
||||
virtual void end_transfer(Handle<TransferContext> handle) = 0;
|
||||
|
||||
// Transfer Context functions
|
||||
virtual void update_buffer(
|
||||
Handle<TransferContext> ctx,
|
||||
Handle<GraphicsContext> ctx,
|
||||
Handle<Buffer> buffer,
|
||||
uint32_t offset,
|
||||
tcb::span<const std::byte> data
|
||||
) = 0;
|
||||
virtual void update_texture(
|
||||
Handle<TransferContext> ctx,
|
||||
Handle<GraphicsContext> ctx,
|
||||
Handle<Texture> texture,
|
||||
Rect region,
|
||||
srb2::rhi::PixelFormat data_format,
|
||||
tcb::span<const std::byte> data
|
||||
) = 0;
|
||||
virtual Handle<UniformSet> create_uniform_set(Handle<TransferContext> ctx, const CreateUniformSetInfo& info) = 0;
|
||||
virtual Handle<UniformSet> create_uniform_set(Handle<GraphicsContext> ctx, const CreateUniformSetInfo& info) = 0;
|
||||
virtual Handle<BindingSet>
|
||||
create_binding_set(Handle<TransferContext> ctx, Handle<Pipeline> pipeline, const CreateBindingSetInfo& info) = 0;
|
||||
create_binding_set(Handle<GraphicsContext> ctx, Handle<Pipeline> pipeline, const CreateBindingSetInfo& info) = 0;
|
||||
|
||||
virtual Handle<GraphicsContext> begin_graphics() = 0;
|
||||
virtual void end_graphics(Handle<GraphicsContext> ctx) = 0;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue