Welcome to mirror list, hosted at ThFree Co, Russian Federation.

nvapi_disp.cpp « src - github.com/jp7677/dxvk-nvapi.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 020f9f79728123a25ba8e8c2ed579744d8aa5c2e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include "nvapi_private.h"
#include "nvapi_globals.h"
#include "util/util_statuscode.h"
#include "util/util_string.h"

extern "C" {
    using namespace dxvk;

    NvAPI_Status __cdecl NvAPI_Disp_GetHdrCapabilities(NvU32 displayId, NV_HDR_CAPABILITIES* pHdrCapabilities) {
        constexpr auto n = __func__;

        if (nvapiAdapterRegistry == nullptr)
            return ApiNotInitialized(n);

        if (pHdrCapabilities == nullptr)
            return InvalidArgument(n);

        // Report that HDR is not available
        switch (pHdrCapabilities->version) {
            case NV_HDR_CAPABILITIES_VER1: {
                auto pHdrCapabilitiesV1 = reinterpret_cast<NV_HDR_CAPABILITIES_V1*>(pHdrCapabilities);
                pHdrCapabilitiesV1->isST2084EotfSupported = false;
                pHdrCapabilitiesV1->isTraditionalHdrGammaSupported = false;
                pHdrCapabilitiesV1->isEdrSupported = false;
                pHdrCapabilitiesV1->driverExpandDefaultHdrParameters = false;
                pHdrCapabilitiesV1->isTraditionalSdrGammaSupported = false;
                // pHdrCapabilities->display_data
                break;
            }
            case NV_HDR_CAPABILITIES_VER2:
                pHdrCapabilities->isST2084EotfSupported = false;
                pHdrCapabilities->isTraditionalHdrGammaSupported = false;
                pHdrCapabilities->isEdrSupported = false;
                pHdrCapabilities->driverExpandDefaultHdrParameters = false;
                pHdrCapabilities->isTraditionalSdrGammaSupported = false;
                // pHdrCapabilities->display_data
                pHdrCapabilities->isDolbyVisionSupported = false;
                // pHdrCapabilities->dv_static_metadata
                break;
            default:
                return IncompatibleStructVersion(n);
        }

        return Ok(str::format(n, " (", displayId, ")"));
    }

    NvAPI_Status __cdecl NvAPI_DISP_GetDisplayIdByDisplayName(const char* displayName, NvU32* displayId) {
        constexpr auto n = __func__;

        if (nvapiAdapterRegistry == nullptr)
            return ApiNotInitialized(n);

        if (displayName == nullptr || displayId == nullptr)
            return InvalidArgument(n);

        auto id = nvapiAdapterRegistry->GetOutputId(std::string(displayName));
        if (id == -1)
            return InvalidArgument(str::format(n, " (", displayName, ")"));

        *displayId = id;

        return Ok(str::format(n, " (", displayName, ")"));
    }

    NvAPI_Status __cdecl NvAPI_DISP_GetGDIPrimaryDisplayId(NvU32* displayId) {
        constexpr auto n = __func__;

        if (nvapiAdapterRegistry == nullptr)
            return ApiNotInitialized(n);

        if (displayId == nullptr)
            return InvalidArgument(n);

        auto id = nvapiAdapterRegistry->GetPrimaryOutputId();
        if (id == -1)
            return NvidiaDeviceNotFound(n);

        *displayId = id;

        return Ok(n);
    }
}