blob: 0594d69c24931954ca903210a8ac9194f1680b53 [file] [log] [blame]
// Copyright 2020 The Chromium 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 GPU_COMMAND_BUFFER_SERVICE_EXTERNAL_VK_IMAGE_OVERLAY_REPRESENTATION_H_
#define GPU_COMMAND_BUFFER_SERVICE_EXTERNAL_VK_IMAGE_OVERLAY_REPRESENTATION_H_
#include "build/build_config.h"
#include "gpu/command_buffer/service/external_vk_image_backing.h"
#include "gpu/command_buffer/service/shared_image_representation.h"
namespace gpu {
class ExternalVkImageOverlayRepresentation
: public SharedImageRepresentationOverlay {
public:
ExternalVkImageOverlayRepresentation(gpu::SharedImageManager* manager,
ExternalVkImageBacking* backing,
gpu::MemoryTypeTracker* tracker);
~ExternalVkImageOverlayRepresentation() override;
ExternalVkImageOverlayRepresentation(
const ExternalVkImageOverlayRepresentation&) = delete;
ExternalVkImageOverlayRepresentation& operator=(
const ExternalVkImageOverlayRepresentation&) = delete;
protected:
// SharedImageRepresentationOverlay implementation
bool BeginReadAccess(std::vector<gfx::GpuFence>* acquire_fences) override;
void EndReadAccess(gfx::GpuFenceHandle release_fence) override;
gl::GLImage* GetGLImage() override;
#if defined(OS_ANDROID)
void NotifyOverlayPromotion(bool promotion, const gfx::Rect& bounds) override;
#endif
private:
void GetAcquireFences(std::vector<gfx::GpuFence>* fences);
ExternalVkImageBacking* const vk_image_backing_;
std::vector<ExternalSemaphore> read_begin_semaphores_;
};
} // namespace gpu
#endif // GPU_COMMAND_BUFFER_SERVICE_EXTERNAL_VK_IMAGE_OVERLAY_REPRESENTATION_H_