1
0
mirror of https://github.com/EduApps-CDG/OpenDX synced 2024-12-30 09:45:37 +01:00
OpenDX/src/dxgi/dxgi_monitor.h
Philip Rebohle 15078357dc [dxgi] Implement and use GetWindowClientSize fuction
This new function provides a cleaner way to retrieve a
window's client size and can be used outside the swap
chain functions.
2018-12-21 15:14:07 +01:00

101 lines
2.4 KiB
C++

#pragma once
#include <mutex>
#include <unordered_map>
#include "dxgi_include.h"
namespace dxvk {
class DxgiSwapChain;
/**
* \brief Per-monitor data
*/
struct DXGI_VK_MONITOR_DATA {
DxgiSwapChain* pSwapChain;
DXGI_FRAME_STATISTICS FrameStats;
DXGI_GAMMA_CONTROL GammaCurve;
};
/**
* \brief Queries bits per pixel for a format
*
* The format must be a valid swap chain format.
* \param [in] Format The DXGI format to query
* \returns Bits per pixel for this format
*/
uint32_t GetMonitorFormatBpp(
DXGI_FORMAT Format);
/**
* \brief Initializes monitor data
*
* Fails if data for the given monitor already exists.
* \param [in] hMonitor The monitor handle
* \param [in] pData Initial data
*/
HRESULT InitMonitorData(
HMONITOR hMonitor,
const DXGI_VK_MONITOR_DATA* pData);
/**
* \brief Retrieves and locks monitor data
*
* Fails if no data for the given monitor exists.
* \param [in] hMonitor The monitor handle
* \param [out] Pointer to monitor data
* \returns S_OK on success
*/
HRESULT AcquireMonitorData(
HMONITOR hMonitor,
DXGI_VK_MONITOR_DATA** ppData);
/**
* \brief Unlocks monitor data
*
* Must be called after each successful
* call to \ref AcquireMonitorData.
* \param [in] hMonitor The monitor handle
*/
void ReleaseMonitorData();
/**
* \brief Retrieves monitor display mode
*
* \param [in] hMonitor Monitor handle
* \param [in] ModeNum Mode number
* \param [out] Display mode properties
* \returns S_OK on success
*/
HRESULT GetMonitorDisplayMode(
HMONITOR hMonitor,
DWORD ModeNum,
DXGI_MODE_DESC* pMode);
/**
* \brief Sets monitor display mode
*
* \param [in] hMonitor Monitor handle
* \param [in] pMode Display mode properties
* \returns S_OK on success
*/
HRESULT SetMonitorDisplayMode(
HMONITOR hMonitor,
const DXGI_MODE_DESC* pMode);
/**
* \brief Queries window client size
*
* \param [in] hWnd Window to query
* \param [out] pWidth Client width
* \param [out] pHeight Client height
*/
void GetWindowClientSize(
HWND hWnd,
UINT* pWidth,
UINT* pHeight);
}