rhi: remove TransferContexts

This commit is contained in:
Eidolon 2023-07-08 16:33:05 -05:00
parent e78add3a2a
commit 3ec7163a34
24 changed files with 58 additions and 102 deletions

View file

@ -26,10 +26,10 @@ public:
/// @param rhi /// @param rhi
virtual void prepass(rhi::Rhi& rhi) = 0; 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 rhi
/// @param ctx /// @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. /// @brief Issue draw calls.
/// @param rhi /// @param rhi

View file

@ -141,7 +141,7 @@ static Rect get_screen_viewport(uint32_t screen, uint32_t screens, uint32_t w, u
return {0, 0, w, h}; return {0, 0, w, h};
} }
void BlitPostimgScreens::transfer(Rhi& rhi, Handle<TransferContext> ctx) void BlitPostimgScreens::transfer(Rhi& rhi, Handle<GraphicsContext> ctx)
{ {
// Upload needed buffers // Upload needed buffers
if (upload_quad_buffer_) if (upload_quad_buffer_)

View file

@ -72,7 +72,7 @@ public:
virtual ~BlitPostimgScreens(); virtual ~BlitPostimgScreens();
virtual void prepass(rhi::Rhi& rhi) override; 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 graphics(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
virtual void postpass(rhi::Rhi& rhi) override; virtual void postpass(rhi::Rhi& rhi) override;

View file

@ -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_) if (quad_vbo_needs_upload_ && quad_vbo_)
{ {

View file

@ -51,7 +51,7 @@ public:
virtual ~BlitRectPass(); virtual ~BlitRectPass();
virtual void prepass(rhi::Rhi& rhi) override; 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 graphics(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
virtual void postpass(rhi::Rhi& rhi) override; virtual void postpass(rhi::Rhi& rhi) override;

View file

@ -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(); ImGuiIO& io = ImGui::GetIO();

View file

@ -50,7 +50,7 @@ public:
virtual void prepass(rhi::Rhi& rhi) override; 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 graphics(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;

View file

@ -32,7 +32,7 @@ public:
virtual ~LambdaPass(); virtual ~LambdaPass();
virtual void prepass(rhi::Rhi& rhi) override; 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 graphics(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
virtual void postpass(rhi::Rhi& rhi) 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_) for (auto& pass : passes_)
{ {
@ -179,11 +179,8 @@ void PassManager::render(Rhi& rhi)
prepass(rhi); prepass(rhi);
Handle<TransferContext> tc = rhi.begin_transfer();
transfer(rhi, tc);
rhi.end_transfer(tc);
Handle<GraphicsContext> gc = rhi.begin_graphics(); Handle<GraphicsContext> gc = rhi.begin_graphics();
transfer(rhi, gc);
graphics(rhi, gc); graphics(rhi, gc);
rhi.end_graphics(gc); rhi.end_graphics(gc);

View file

@ -43,7 +43,7 @@ public:
PassManager& operator=(PassManager&&) = delete; PassManager& operator=(PassManager&&) = delete;
virtual void prepass(rhi::Rhi& rhi) override; 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 graphics(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
virtual void postpass(rhi::Rhi& rhi) override; virtual void postpass(rhi::Rhi& rhi) override;

View file

@ -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) if (wipe_tex_ == kNullHandle)
{ {

View file

@ -49,7 +49,7 @@ public:
virtual ~PostprocessWipePass(); virtual ~PostprocessWipePass();
virtual void prepass(rhi::Rhi& rhi) override; 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 graphics(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
virtual void postpass(rhi::Rhi& rhi) override; virtual void postpass(rhi::Rhi& rhi) override;

View file

@ -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; std::array<byteColor_t, kPaletteSize> palette_32;
for (std::size_t i = 0; i < kPaletteSize; i++) 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))); 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) 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; std::array<uint8_t, kPaletteSize> data;
for (std::size_t i = 0; i < kPaletteSize; i++) 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))); 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_) 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); 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_palette(rhi, ctx);
upload_lighttables(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_) 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; std::vector<std::array<uint8_t, 2>> flat_data;
for (auto flat_lump : to_upload_) for (auto flat_lump : to_upload_)

View file

@ -37,7 +37,7 @@ public:
virtual ~FramebufferManager(); virtual ~FramebufferManager();
virtual void prepass(rhi::Rhi& rhi) override; 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 graphics(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
virtual void postpass(rhi::Rhi& rhi) 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*> colormaps_to_upload_;
std::vector<const uint8_t*> lighttables_to_upload_; std::vector<const uint8_t*> lighttables_to_upload_;
void upload_palette(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::TransferContext> ctx); void upload_lighttables(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx);
void upload_default_colormap(rhi::Rhi& rhi, rhi::Handle<rhi::TransferContext> ctx); void upload_default_colormap(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx);
void upload_colormaps(rhi::Rhi& rhi, rhi::Handle<rhi::TransferContext> ctx); void upload_colormaps(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx);
public: public:
MainPaletteManager(); MainPaletteManager();
virtual ~MainPaletteManager(); virtual ~MainPaletteManager();
virtual void prepass(rhi::Rhi& rhi) override; 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 graphics(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
virtual void postpass(rhi::Rhi& rhi) override; virtual void postpass(rhi::Rhi& rhi) override;
@ -120,7 +120,7 @@ public:
virtual ~CommonResourcesManager(); virtual ~CommonResourcesManager();
virtual void prepass(rhi::Rhi& rhi) override; 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 graphics(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
virtual void postpass(rhi::Rhi& rhi) override; virtual void postpass(rhi::Rhi& rhi) override;
@ -153,7 +153,7 @@ public:
virtual ~FlatTextureManager(); virtual ~FlatTextureManager();
virtual void prepass(rhi::Rhi& rhi) override; 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 graphics(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
virtual void postpass(rhi::Rhi& rhi) override; virtual void postpass(rhi::Rhi& rhi) override;

View file

@ -40,7 +40,7 @@ void ScreenshotPass::prepass(Rhi& rhi)
doing_screenshot_ = takescreenshot || moviemode != MM_OFF; doing_screenshot_ = takescreenshot || moviemode != MM_OFF;
} }
void ScreenshotPass::transfer(Rhi& rhi, Handle<TransferContext> ctx) void ScreenshotPass::transfer(Rhi& rhi, Handle<GraphicsContext> ctx)
{ {
} }

View file

@ -32,7 +32,7 @@ public:
virtual ~ScreenshotPass(); virtual ~ScreenshotPass();
virtual void prepass(rhi::Rhi& rhi) override; 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 graphics(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
virtual void postpass(rhi::Rhi& rhi) override; virtual void postpass(rhi::Rhi& rhi) override;

View file

@ -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 // Upload screen
tcb::span<const std::byte> screen_span; tcb::span<const std::byte> screen_span;

View file

@ -34,7 +34,7 @@ public:
virtual ~SoftwarePass(); virtual ~SoftwarePass();
virtual void prepass(rhi::Rhi& rhi) override; 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 graphics(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
virtual void postpass(rhi::Rhi& rhi) override; virtual void postpass(rhi::Rhi& rhi) override;

View file

@ -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_) if (!ctx_ || !data_)
{ {

View file

@ -97,7 +97,7 @@ struct TwodeePass final : public Pass
virtual void prepass(rhi::Rhi& rhi) override; 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 graphics(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;

View file

@ -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()); SRB2_ASSERT(ready_for_lookup());

View file

@ -125,7 +125,7 @@ public:
PatchAtlas* find_patch(srb2::NotNull<const patch_t*> patch); PatchAtlas* find_patch(srb2::NotNull<const patch_t*> patch);
virtual void prepass(rhi::Rhi& rhi) override; 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 graphics(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
virtual void postpass(rhi::Rhi& rhi) override; virtual void postpass(rhi::Rhi& rhi) override;
}; };

View file

@ -624,16 +624,14 @@ void GlCoreRhi::destroy_texture(rhi::Handle<rhi::Texture> handle)
} }
void GlCoreRhi::update_texture( void GlCoreRhi::update_texture(
Handle<TransferContext> ctx, Handle<GraphicsContext> ctx,
Handle<Texture> texture, Handle<Texture> texture,
Rect region, Rect region,
srb2::rhi::PixelFormat data_format, srb2::rhi::PixelFormat data_format,
tcb::span<const std::byte> data tcb::span<const std::byte> data
) )
{ {
SRB2_ASSERT(graphics_context_active_ == false); SRB2_ASSERT(graphics_context_active_ == true);
SRB2_ASSERT(transfer_context_active_ == true);
SRB2_ASSERT(ctx.generation() == transfer_context_generation_);
if (data.empty()) if (data.empty())
{ {
@ -715,15 +713,14 @@ void GlCoreRhi::destroy_buffer(rhi::Handle<rhi::Buffer> handle)
} }
void GlCoreRhi::update_buffer( void GlCoreRhi::update_buffer(
rhi::Handle<TransferContext> ctx, rhi::Handle<GraphicsContext> ctx,
rhi::Handle<rhi::Buffer> handle, rhi::Handle<rhi::Buffer> handle,
uint32_t offset, uint32_t offset,
tcb::span<const std::byte> data tcb::span<const std::byte> data
) )
{ {
SRB2_ASSERT(graphics_context_active_ == false); SRB2_ASSERT(graphics_context_active_ == true);
SRB2_ASSERT(transfer_context_active_ == true); SRB2_ASSERT(ctx.generation() == graphics_context_generation_);
SRB2_ASSERT(ctx.generation() == transfer_context_generation_);
if (data.empty()) if (data.empty())
{ {
@ -753,11 +750,10 @@ void GlCoreRhi::update_buffer(
} }
rhi::Handle<rhi::UniformSet> 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(graphics_context_active_ == true);
SRB2_ASSERT(transfer_context_active_ == true); SRB2_ASSERT(ctx.generation() == graphics_context_generation_);
SRB2_ASSERT(ctx.generation() == transfer_context_generation_);
GlCoreUniformSet uniform_set; GlCoreUniformSet uniform_set;
@ -770,14 +766,13 @@ GlCoreRhi::create_uniform_set(rhi::Handle<rhi::TransferContext> ctx, const rhi::
} }
rhi::Handle<rhi::BindingSet> GlCoreRhi::create_binding_set( rhi::Handle<rhi::BindingSet> GlCoreRhi::create_binding_set(
rhi::Handle<rhi::TransferContext> ctx, rhi::Handle<rhi::GraphicsContext> ctx,
Handle<Pipeline> pipeline, Handle<Pipeline> pipeline,
const rhi::CreateBindingSetInfo& info const rhi::CreateBindingSetInfo& info
) )
{ {
SRB2_ASSERT(graphics_context_active_ == false); SRB2_ASSERT(graphics_context_active_ == true);
SRB2_ASSERT(transfer_context_active_ == true); SRB2_ASSERT(ctx.generation() == graphics_context_generation_);
SRB2_ASSERT(ctx.generation() == transfer_context_generation_);
SRB2_ASSERT(pipeline_slab_.is_valid(pipeline) == true); SRB2_ASSERT(pipeline_slab_.is_valid(pipeline) == true);
auto& pl = pipeline_slab_[pipeline]; auto& pl = pipeline_slab_[pipeline];
@ -1222,25 +1217,6 @@ void GlCoreRhi::end_graphics(rhi::Handle<rhi::GraphicsContext> handle)
GL_ASSERT; 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() void GlCoreRhi::present()
{ {
SRB2_ASSERT(platform_ != nullptr); SRB2_ASSERT(platform_ != nullptr);
@ -1661,7 +1637,6 @@ void GlCoreRhi::bind_binding_set(Handle<GraphicsContext> ctx, Handle<BindingSet>
void GlCoreRhi::bind_index_buffer(Handle<GraphicsContext> ctx, Handle<Buffer> buffer) 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(graphics_context_active_ == true && graphics_context_generation_ == ctx.generation());
SRB2_ASSERT(current_render_pass_.has_value() == true && current_pipeline_.has_value() == true); SRB2_ASSERT(current_render_pass_.has_value() == true && current_pipeline_.has_value() == true);

View file

@ -123,10 +123,6 @@ struct GlCoreGraphicsContext : public rhi::GraphicsContext
{ {
}; };
struct GlCoreTransferContext : public rhi::TransferContext
{
};
struct GlCoreActiveUniform struct GlCoreActiveUniform
{ {
uint32_t type; uint32_t type;
@ -159,10 +155,8 @@ class GlCoreRhi final : public Rhi
std::optional<Handle<Pipeline>> current_pipeline_; std::optional<Handle<Pipeline>> current_pipeline_;
PrimitiveType current_primitive_type_ = PrimitiveType::kPoints; PrimitiveType current_primitive_type_ = PrimitiveType::kPoints;
bool graphics_context_active_ = false; bool graphics_context_active_ = false;
bool transfer_context_active_ = false;
uint32_t graphics_context_generation_ = 0; uint32_t graphics_context_generation_ = 0;
uint32_t index_buffer_offset_ = 0; uint32_t index_buffer_offset_ = 0;
uint32_t transfer_context_generation_ = 0;
uint8_t stencil_front_reference_ = 0; uint8_t stencil_front_reference_ = 0;
uint8_t stencil_front_compare_mask_ = 0xFF; uint8_t stencil_front_compare_mask_ = 0xFF;
@ -193,26 +187,23 @@ public:
virtual Rect get_renderbuffer_size(Handle<Renderbuffer> renderbuffer) override; virtual Rect get_renderbuffer_size(Handle<Renderbuffer> renderbuffer) override;
virtual uint32_t get_buffer_size(Handle<Buffer> buffer) 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( virtual void update_buffer(
Handle<TransferContext> ctx, Handle<GraphicsContext> ctx,
Handle<Buffer> buffer, Handle<Buffer> buffer,
uint32_t offset, uint32_t offset,
tcb::span<const std::byte> data tcb::span<const std::byte> data
) override; ) override;
virtual void update_texture( virtual void update_texture(
Handle<TransferContext> ctx, Handle<GraphicsContext> ctx,
Handle<Texture> texture, Handle<Texture> texture,
Rect region, Rect region,
srb2::rhi::PixelFormat data_format, srb2::rhi::PixelFormat data_format,
tcb::span<const std::byte> data tcb::span<const std::byte> data
) override; ) override;
virtual Handle<UniformSet> 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> 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; override;
virtual Handle<GraphicsContext> begin_graphics() override; virtual Handle<GraphicsContext> begin_graphics() override;

View file

@ -569,9 +569,6 @@ struct BindingSet
{ {
}; };
struct TransferContext
{
};
struct GraphicsContext struct GraphicsContext
{ {
}; };
@ -607,26 +604,22 @@ struct Rhi
virtual Rect get_renderbuffer_size(Handle<Renderbuffer> renderbuffer) = 0; virtual Rect get_renderbuffer_size(Handle<Renderbuffer> renderbuffer) = 0;
virtual uint32_t get_buffer_size(Handle<Buffer> buffer) = 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( virtual void update_buffer(
Handle<TransferContext> ctx, Handle<GraphicsContext> ctx,
Handle<Buffer> buffer, Handle<Buffer> buffer,
uint32_t offset, uint32_t offset,
tcb::span<const std::byte> data tcb::span<const std::byte> data
) = 0; ) = 0;
virtual void update_texture( virtual void update_texture(
Handle<TransferContext> ctx, Handle<GraphicsContext> ctx,
Handle<Texture> texture, Handle<Texture> texture,
Rect region, Rect region,
srb2::rhi::PixelFormat data_format, srb2::rhi::PixelFormat data_format,
tcb::span<const std::byte> data tcb::span<const std::byte> data
) = 0; ) = 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> 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 Handle<GraphicsContext> begin_graphics() = 0;
virtual void end_graphics(Handle<GraphicsContext> ctx) = 0; virtual void end_graphics(Handle<GraphicsContext> ctx) = 0;