Commit 2d1da818 authored by Henri Verbeet's avatar Henri Verbeet Committed by Alexandre Julliard

dxgi: Add the IDXGIOutput interface.

parent 9cdbffcc
......@@ -18,6 +18,10 @@
import "dxgitype.idl";
cpp_quote("#if 0")
typedef HANDLE HMONITOR;
cpp_quote("#endif")
typedef struct DXGI_SURFACE_DESC {
UINT Width;
UINT Height;
......@@ -30,6 +34,22 @@ typedef struct DXGI_MAPPED_RECT {
BYTE *pBits;
} DXGI_MAPPED_RECT;
typedef struct DXGI_OUTPUT_DESC {
WCHAR DeviceName[32];
RECT DesktopCoordinates;
BOOL AttachedToDesktop;
DXGI_MODE_ROTATION Rotation;
HMONITOR Monitor;
} DXGI_OUTPUT_DESC;
typedef struct DXGI_FRAME_STATISTICS {
UINT PresentCount;
UINT PresentRefreshCount;
UINT SyncRefreshCount;
LARGE_INTEGER SyncQPCTime;
LARGE_INTEGER SyncGPUTime;
} DXGI_FRAME_STATISTICS;
[
object,
local,
......@@ -87,3 +107,52 @@ interface IDXGISurface : IDXGIDeviceSubObject
HRESULT Unmap(
);
}
[
object,
local,
uuid(ae02eedb-c735-4690-8d52-5a8dc20213aa)
]
interface IDXGIOutput : IDXGIObject
{
HRESULT GetDesc(
[out] DXGI_OUTPUT_DESC *desc
);
HRESULT GetDisplayModeList(
[in] DXGI_FORMAT format,
[in] UINT flags,
[in, out] UINT *mode_count,
[out] DXGI_MODE_DESC *desc
);
HRESULT FindClosestMatchingMode(
[in] const DXGI_MODE_DESC *mode,
[out] DXGI_MODE_DESC *closest_match,
[in] IUnknown *device
);
HRESULT WaitForVBlank(
);
HRESULT TakeOwnership(
[in] IUnknown *device,
[in] BOOL exclusive
);
void ReleaseOwnership(
);
HRESULT GetGammaControlCapabilities(
[out] DXGI_GAMMA_CONTROL_CAPABILITIES *gamma_caps
);
HRESULT SetGammaControl(
[in] const DXGI_GAMMA_CONTROL *gamma_control
);
HRESULT GetGammaControl(
[out] DXGI_GAMMA_CONTROL *gamma_control
);
HRESULT SetDisplaySurface(
[in] IDXGISurface *surface
);
HRESULT GetDisplaySurfaceData(
[in] IDXGISurface *surface
);
HRESULT GetFrameStatistics(
[out] DXGI_FRAME_STATISTICS *stats
);
}
......@@ -115,3 +115,58 @@ typedef enum DXGI_FORMAT {
DXGI_FORMAT_B8G8R8X8_UNORM = 88,
DXGI_FORMAT_FORCE_UINT = 0xffffffff
} DXGI_FORMAT;
typedef enum DXGI_MODE_ROTATION {
DXGI_MODE_ROTATION_UNSPECIFIED = 0,
DXGI_MODE_ROTATION_IDENTITY = 1,
DXGI_MODE_ROTATION_ROTATE90 = 2,
DXGI_MODE_ROTATION_ROTATE180 = 3,
DXGI_MODE_ROTATION_ROTATE270 = 4,
} DXGI_MODE_ROTATION;
typedef enum DXGI_MODE_SCANLINE_ORDER {
DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED = 0,
DXGI_MODE_SCANLINE_ORDER_PROGRESSIVE = 1,
DXGI_MODE_SCANLINE_ORDER_UPPER_FIELD_FIRST = 2,
DXGI_MODE_SCANLINE_ORDER_LOWER_FIELD_FIRST = 3,
} DXGI_MODE_SCANLINE_ORDER;
typedef enum DXGI_MODE_SCALING {
DXGI_MODE_SCALING_UNSPECIFIED = 0,
DXGI_MODE_SCALING_CENTERED = 1,
DXGI_MODE_SCALING_STRETCHED = 2,
} DXGI_MODE_SCALING;
typedef struct DXGI_RATIONAL {
UINT Numerator;
UINT Denominator;
} DXGI_RATIONAL;
typedef struct DXGI_MODE_DESC {
UINT Width;
UINT Height;
DXGI_RATIONAL RefreshRate;
DXGI_FORMAT Format;
DXGI_MODE_SCANLINE_ORDER ScanlineOrdering;
DXGI_MODE_SCALING Scaling;
} DXGI_MODE_DESC;
typedef struct DXGI_GAMMA_CONTROL_CAPABILITIES {
BOOL ScaleAndOffsetSupported;
float MaxConvertedValue;
float MinConvertedValue;
UINT NumGammaControlPoints;
float ControlPointPositions[1025];
} DXGI_GAMMA_CONTROL_CAPABILITIES;
typedef struct DXGI_RGB {
float Red;
float Green;
float Blue;
} DXGI_RGB;
typedef struct DXGI_GAMMA_CONTROL {
DXGI_RGB Scale;
DXGI_RGB Offset;
DXGI_RGB GammaCurve[1025];
} DXGI_GAMMA_CONTROL;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment