blob: ecfb7e7f7cc2e764a99892d333a9d59920ea48f1 [file] [log] [blame]
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef FLUTTER_IMPELLER_TOOLKIT_INTEROP_FRAGMENT_PROGRAM_H_
#define FLUTTER_IMPELLER_TOOLKIT_INTEROP_FRAGMENT_PROGRAM_H_
#include "flutter/fml/mapping.h"
#include "impeller/runtime_stage/runtime_stage.h"
#include "impeller/toolkit/interop/impeller.h"
#include "impeller/toolkit/interop/object.h"
namespace impeller::interop {
class FragmentProgram final
: public Object<FragmentProgram,
IMPELLER_INTERNAL_HANDLE_NAME(ImpellerFragmentProgram)> {
public:
explicit FragmentProgram(const std::shared_ptr<fml::Mapping>& mapping);
~FragmentProgram();
FragmentProgram(const FragmentProgram&) = delete;
FragmentProgram& operator=(const FragmentProgram&) = delete;
bool IsValid() const;
std::shared_ptr<RuntimeStage> FindRuntimeStage(
RuntimeStageBackend backend) const;
private:
RuntimeStage::Map stages_;
bool is_valid_ = false;
std::set<RuntimeStageBackend> GetAvailableStages() const;
};
const char* RuntimeStageBackendToString(RuntimeStageBackend backend);
} // namespace impeller::interop
#endif // FLUTTER_IMPELLER_TOOLKIT_INTEROP_FRAGMENT_PROGRAM_H_