blob: 727a8c042cb34eb823852bbc5d2514dfaae6afa5 [file] [log] [blame]
// Copyright 2020 The Fuchsia 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 SRC_UI_SCENIC_LIB_FLATLAND_RENDERER_NULL_RENDERER_H_
#define SRC_UI_SCENIC_LIB_FLATLAND_RENDERER_NULL_RENDERER_H_
#include <mutex>
#include <unordered_map>
#include "src/ui/scenic/lib/flatland/renderer/buffer_collection.h"
#include "src/ui/scenic/lib/flatland/renderer/renderer.h"
namespace flatland {
// A renderer implementation used for validation. It does everything a standard
// renderer implementation does except for actually rendering.
class NullRenderer final : public Renderer {
public:
~NullRenderer() override = default;
// |BufferCollectionImporter|
bool ImportBufferCollection(
sysmem_util::GlobalBufferCollectionId collection_id,
fuchsia::sysmem::Allocator_Sync* sysmem_allocator,
fidl::InterfaceHandle<fuchsia::sysmem::BufferCollectionToken> token) override;
// |BufferCollectionImporter|
void ReleaseBufferCollection(sysmem_util::GlobalBufferCollectionId collection_id) override;
// |BufferCollectionImporter|
bool ImportImage(const ImageMetadata& meta_data) override;
// |BufferCollectionImporter|
void ReleaseImage(GlobalImageId image_id) override;
// |Renderer|.
bool RegisterRenderTargetCollection(
sysmem_util::GlobalBufferCollectionId collection_id,
fuchsia::sysmem::Allocator_Sync* sysmem_allocator,
fidl::InterfaceHandle<fuchsia::sysmem::BufferCollectionToken> token) override;
// |Renderer|.
void DeregisterRenderTargetCollection(
sysmem_util::GlobalBufferCollectionId collection_id) override;
// |Renderer|.
std::optional<BufferCollectionMetadata> Validate(
sysmem_util::GlobalBufferCollectionId collection_id) override;
// |Renderer|.
void Render(const ImageMetadata& render_target, const std::vector<Rectangle2D>& rectangles,
const std::vector<ImageMetadata>& images,
const std::vector<zx::event>& release_fences = {}) override;
private:
// This mutex is used to protect access to |collection_map_| and |collection_metadata_map_|.
std::mutex lock_;
std::unordered_map<sysmem_util::GlobalBufferCollectionId, BufferCollectionInfo> collection_map_;
std::unordered_map<sysmem_util::GlobalBufferCollectionId, BufferCollectionMetadata>
collection_metadata_map_;
};
} // namespace flatland
#endif // SRC_UI_SCENIC_LIB_FLATLAND_RENDERER_NULL_RENDERER_H_