SemaphoreVk.h#

PVRVk Semaphore class.

Includes#

  • PVRVk/DeviceVk.h

Included By#

Namespaces#

Classes#

Source Code#

#pragma once
#include "PVRVk/DeviceVk.h"

namespace pvrvk {
namespace impl {
class Semaphore_ : public PVRVkDeviceObjectBase<VkSemaphore, ObjectType::e_SEMAPHORE>, public DeviceObjectDebugUtils<Semaphore_>
{
private:
    friend class Device_;

    class make_shared_enabler
    {
    protected:
        make_shared_enabler() {}
        friend class Semaphore_;
    };

    static Semaphore constructShared(const DeviceWeakPtr& device, const SemaphoreCreateInfo& createInfo)
    {
        return std::make_shared<Semaphore_>(make_shared_enabler{}, device, createInfo);
    }

protected:
    SemaphoreCreateInfo _createInfo;

public:
    DECLARE_NO_COPY_SEMANTICS(Semaphore_)
    Semaphore_(make_shared_enabler, const DeviceWeakPtr& device, const SemaphoreCreateInfo& createInfo);

    Semaphore_(const DeviceWeakPtr& device, const SemaphoreCreateInfo& createInfo)
        : PVRVkDeviceObjectBase(device), DeviceObjectDebugUtils(), _createInfo(createInfo)
    {}

    virtual ~Semaphore_();

    inline SemaphoreCreateFlags getFlags() const { return _createInfo.getFlags(); }

    SemaphoreCreateInfo getCreateInfo() const { return _createInfo; }
};
} // namespace impl
} // namespace pvrvk