1
0
mirror of https://github.com/dege-diosg/dgVoodoo2 synced 2024-07-08 20:51:02 +02:00

108 lines
2.4 KiB
C++
Raw Permalink Normal View History

// *****************************************************************************
// File: ICPLDDI.hpp
//
// Description: dgVoodoo CPL DDI interface for getting API/adapter/output
// information
//
// Contact person: DG
//
// *****************************************************************************
#ifndef ICPLDDI_HPP
#define ICPLDDI_HPP
// --- Includes ----------------------------------------------------------------
#include "dgVoodooConfig.hpp"
#include "APIDebugObj.hpp"
#include <Windows.h>
namespace dgVoodoo {
// --- ICPLDDI -----------------------------------------------------------------
class ICPLDDI
{
public:
enum APIType
{
AT_Unknown = 0,
AT_D3D11,
AT_D3D12
};
enum FeatureLevel
{
FL_Unknown = 0,
FL_D3D10_0,
FL_D3D10_1,
FL_D3D11_0,
FL_D3D11_1,
FL_D3D12_0,
FL_D3D12_1,
};
struct OutputDesc
{
WCHAR name[32];
WCHAR desc[128];
HMONITOR hMonitor;
};
struct ModeDesc
{
UInt32 xRes;
UInt32 yRes;
UInt32 refreshRateNumerator;
UInt32 refreshRateDenominator;
UInt32 refreshRateSimple;
ModeDesc ():
xRes (0),
yRes (0),
refreshRateNumerator (0),
refreshRateDenominator (0),
refreshRateSimple (0)
{
}
};
protected:
const APIDebugObj* pDebug;
public:
void inline SetDebugObject (const APIDebugObj* _pDebug) { pDebug = _pDebug; }
virtual const char* GetAPIName () = 0;
virtual ConfigGeneral::RendererAPI GetAPI () = 0;
virtual APIType GetAPIType () = 0;
virtual bool Activate () = 0;
virtual void Deactivate () = 0;
virtual UInt32 GetNumberOfAdapters () = 0;
virtual bool GetAdapterName (UInt32 adapterIdx, WCHAR* pName) = 0;
virtual bool IsAdapterSoftware (UInt32 adapterIdx) = 0;
virtual UInt32 GetNumberOfOutputs (UInt32 adapterIdx) = 0;
virtual bool GetOutputDesc (UInt32 adapterIdx, UInt32 outputIdx, OutputDesc* pDesc) = 0;
virtual UInt32 GetNumberOfMSAALevels (UInt32 adapterIdx) = 0;
virtual UInt32 GetMSAALevel (UInt32 adapterIdx, UInt32 idx) = 0;
virtual UInt32 GetNumberOfResolutions (UInt32 adapterIdx, UInt32 outputIndex,
ConfigGeneral::ScanlineOrder scanlineOrder) = 0;
virtual bool GetResolution (UInt32 adapterIdx, UInt32 outputIdx, ConfigGeneral::ScanlineOrder scanlineOrder,
UInt32 resIdx, ModeDesc* pDesc) = 0;
virtual UInt32 GetRefreshRateSimple (UInt32 refRateNumerator, UInt32 refRateDenominator) = 0;
};
} // namespace dgVoodoo
#endif // ICPLDDI_HPP