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: b06fb09680a948d08167a64bb126a50f7277af70 (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
#include "nvapi_private.h"
#include "nvapi_static.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 = "NvAPI_Disp_GetHdrCapabilities";

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

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

        if (pHdrCapabilities->version != NV_HDR_CAPABILITIES_VER1 && pHdrCapabilities->version != NV_HDR_CAPABILITIES_VER2)
            return IncompatibleStructVersion(n);

        // Report that HDR is not available
        pHdrCapabilities->isST2084EotfSupported = false;
        pHdrCapabilities->isTraditionalHdrGammaSupported = false;
        pHdrCapabilities->isEdrSupported = false;
        pHdrCapabilities->driverExpandDefaultHdrParameters = false;
        pHdrCapabilities->isTraditionalSdrGammaSupported = false;
        // pHdrCapabilities->display_data

        if (pHdrCapabilities->version == NV_HDR_CAPABILITIES_VER2)
            pHdrCapabilities->isDolbyVisionSupported = false;
            // pHdrCapabilities->dv_static_metadata

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

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

        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 = "NvAPI_DISP_GetGDIPrimaryDisplayId";

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

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

        *displayId = id;

        return Ok(n);
    }
}