MCPcopy Create free account
hub / github.com/3Shain/dxmt / NvAPI_Disp_HdrColorControl

Function NvAPI_Disp_HdrColorControl

src/nvapi/nvapi.cpp:369–450  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

367}
368
369NVAPI_INTERFACE
370NvAPI_Disp_HdrColorControl(NvU32 displayId, NV_HDR_COLOR_DATA *pHdrColorData) {
371 switch (pHdrColorData->version) {
372 case NV_HDR_COLOR_DATA_VER1:
373 case NV_HDR_COLOR_DATA_VER2:
374 break;
375 default:
376 return NVAPI_INCOMPATIBLE_STRUCT_VERSION;
377 }
378
379 WMTHDRMetadata metadata;
380 WMTColorSpace colorspace = WMTColorSpaceSRGB;
381
382 if (pHdrColorData->cmd == NV_HDR_CMD_GET) {
383 if (WMTQueryDisplaySetting(displayId, &colorspace, &metadata)) {
384 pHdrColorData->hdrMode = colorspace == WMTColorSpaceHDR_scRGB ? NV_HDR_MODE_UHDA
385 : colorspace == WMTColorSpaceHDR_PQ ? NV_HDR_MODE_UHDA_PASSTHROUGH
386 : NV_HDR_MODE_OFF;
387 pHdrColorData->mastering_display_data.displayPrimary_x0 = metadata.red_primary[0];
388 pHdrColorData->mastering_display_data.displayPrimary_y0 = metadata.red_primary[1];
389 pHdrColorData->mastering_display_data.displayPrimary_x1 = metadata.green_primary[0];
390 pHdrColorData->mastering_display_data.displayPrimary_y1 = metadata.green_primary[1];
391 pHdrColorData->mastering_display_data.displayPrimary_x2 = metadata.blue_primary[0];
392 pHdrColorData->mastering_display_data.displayPrimary_y2 = metadata.blue_primary[1];
393 pHdrColorData->mastering_display_data.displayWhitePoint_x = metadata.white_point[0];
394 pHdrColorData->mastering_display_data.displayWhitePoint_y = metadata.white_point[1];
395 pHdrColorData->mastering_display_data.max_display_mastering_luminance = metadata.max_mastering_luminance;
396 pHdrColorData->mastering_display_data.min_display_mastering_luminance = metadata.min_mastering_luminance;
397 pHdrColorData->mastering_display_data.max_content_light_level = metadata.max_content_light_level;
398 pHdrColorData->mastering_display_data.max_frame_average_light_level = metadata.max_frame_average_light_level;
399 } else {
400 WMTDisplayDescription desc;
401 WMTGetDisplayDescription(displayId, &desc);
402 pHdrColorData->hdrMode = NV_HDR_MODE_OFF;
403 pHdrColorData->mastering_display_data.displayPrimary_x0 = desc.red_primaries[0] * 50000;
404 pHdrColorData->mastering_display_data.displayPrimary_y0 = desc.red_primaries[1] * 50000;
405 pHdrColorData->mastering_display_data.displayPrimary_x1 = desc.green_primaries[0] * 50000;
406 pHdrColorData->mastering_display_data.displayPrimary_y1 = desc.green_primaries[1] * 50000;
407 pHdrColorData->mastering_display_data.displayPrimary_x2 = desc.blue_primaries[0] * 50000;
408 pHdrColorData->mastering_display_data.displayPrimary_y2 = desc.blue_primaries[1] * 50000;
409 pHdrColorData->mastering_display_data.displayWhitePoint_x = desc.white_points[0] * 50000;
410 pHdrColorData->mastering_display_data.displayWhitePoint_y = desc.white_points[1] * 50000;
411 pHdrColorData->mastering_display_data.max_display_mastering_luminance =
412 desc.maximum_potential_edr_color_component_value * 100;
413 pHdrColorData->mastering_display_data.min_display_mastering_luminance = 1;
414 pHdrColorData->mastering_display_data.max_content_light_level =
415 desc.maximum_potential_edr_color_component_value * 100;
416 pHdrColorData->mastering_display_data.max_frame_average_light_level =
417 desc.maximum_potential_edr_color_component_value * 100;
418 }
419 } else {
420 if (pHdrColorData->hdrMode != NV_HDR_MODE_OFF) {
421 metadata.red_primary[0] = pHdrColorData->mastering_display_data.displayPrimary_x0;
422 metadata.red_primary[1] = pHdrColorData->mastering_display_data.displayPrimary_y0;
423 metadata.green_primary[0] = pHdrColorData->mastering_display_data.displayPrimary_x1;
424 metadata.green_primary[1] = pHdrColorData->mastering_display_data.displayPrimary_y1;
425 metadata.blue_primary[0] = pHdrColorData->mastering_display_data.displayPrimary_x2;
426 metadata.blue_primary[1] = pHdrColorData->mastering_display_data.displayPrimary_y2;

Callers

nothing calls this directly

Calls 3

WMTQueryDisplaySettingFunction · 0.85
WMTGetDisplayDescriptionFunction · 0.85
WMTUpdateDisplaySettingFunction · 0.85

Tested by

no test coverage detected