fractorium/Source/EmberCL/RendererClDevice.h

48 lines
1.1 KiB
C
Raw Permalink Normal View History

#pragma once
#include "EmberCLPch.h"
#include "OpenCLWrapper.h"
#include "IterOpenCLKernelCreator.h"
/// <summary>
/// RendererClDevice class.
/// </summary>
namespace EmberCLns
{
/// <summary>
/// Class to manage a device that does the iteration portion of
/// the rendering process. Having a separate class for this purpose
/// enables multi-GPU support.
/// </summary>
class EMBERCL_API RendererClDevice : public EmberReport
{
public:
RendererClDevice(size_t platform, size_t device, bool shared);
bool Init();
bool Ok() const noexcept;
bool Shared() const noexcept;
bool Nvidia() const noexcept;
size_t WarpSize() const noexcept;
size_t PlatformIndex() const noexcept;
size_t DeviceIndex() const noexcept;
//Public virtual functions overridden from base classes.
void ClearErrorReport() noexcept override;
string ErrorReportString() override;
vector<string> ErrorReport() override;
size_t m_Calls;
OpenCLWrapper m_Wrapper;
private:
bool m_Init;
bool m_Shared;
bool m_NVidia;
size_t m_WarpSize;
size_t m_PlatformIndex;
size_t m_DeviceIndex;
shared_ptr<OpenCLInfo> m_Info;
};
}