10 std::weak_ptr<PipelineLibrary> library,
11 const PipelineDescriptor&
desc)
12 : Pipeline(
std::move(library),
desc),
13 reactor_(
std::move(reactor)),
15 : HandleGLES::DeadHandle()),
18 reactor_->SetDebugLabel(
handle_, GetDescriptor().GetLabel());
23PipelineGLES::~PipelineGLES() {
25 reactor_->CollectHandle(
handle_);
30bool PipelineGLES::IsValid()
const {
34const HandleGLES& PipelineGLES::GetProgramHandle()
const {
39 return buffer_bindings_.get();
44 if (buffer_bindings_) {
47 auto vtx_desc = std::make_unique<BufferBindingsGLES>();
48 if (!vtx_desc->RegisterVertexStageInput(
49 gl, GetDescriptor().GetVertexDescriptor()->GetStageInputs(),
50 GetDescriptor().GetVertexDescriptor()->GetStageLayouts())) {
53 if (!vtx_desc->ReadUniformsBindings(
gl, program)) {
56 buffer_bindings_ = std::move(vtx_desc);
60[[nodiscard]]
bool PipelineGLES::BindProgram()
const {
64 auto handle = reactor_->GetGLHandle(
handle_);
65 if (!handle.has_value()) {
68 reactor_->GetProcTable().UseProgram(handle.value());
72[[nodiscard]]
bool PipelineGLES::UnbindProgram()
const {
74 reactor_->GetProcTable().UseProgram(0u);
Sets up stage bindings for single draw call in the OpenGLES backend.
std::shared_ptr< ReactorGLES > Ref