#pragma once

#include "managedObject.hpp"

#include <psp2/gxm.h>

namespace render::kernel
{

class Surface : public ManagedObject
{
private:
    SceGxmColorSurface surface;
    SceGxmSyncObject *object;
    void *data;
    SceUID uid;

public:
    Surface(uint32_t width, uint32_t height, uint32_t stride, SceGxmColorFormat format);
    virtual ~Surface();

    SceGxmColorSurface *GetSurface();
    SceGxmSyncObject *GetObject();
    void *GetData();
};

} // namespace render::kernel