aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--edid-decode.12
-rw-r--r--edid-decode.h2
-rw-r--r--parse-displayid-block.cpp20
3 files changed, 18 insertions, 6 deletions
diff --git a/edid-decode.1 b/edid-decode.1
index a481b7c..58e81bf 100644
--- a/edid-decode.1
+++ b/edid-decode.1
@@ -113,6 +113,8 @@ DisplayID 1.3: VESA Display Identification Data (DisplayID) Standard, Version 1.
.TP
DisplayID 2.0: VESA DisplayID Standard, Version 2.0
.TP
+DisplayID 2.0: VESA DisplayID v2.0 Errata E7
+.TP
DI-EXT: VESA Display Information Extension Block Standard, Release A
.TP
LS-EXT: VESA Enhanced EDID Localized String Extension Standard, Release A
diff --git a/edid-decode.h b/edid-decode.h
index 2f3589e..faa65c2 100644
--- a/edid-decode.h
+++ b/edid-decode.h
@@ -298,7 +298,7 @@ struct edid_state {
std::string product_type(unsigned char x, bool heading);
void parse_displayid_interface_features(const unsigned char *x);
void parse_displayid_parameters(const unsigned char *x);
- void parse_displayid_parameters_v2(const unsigned char *x);
+ void parse_displayid_parameters_v2(const unsigned char *x, unsigned block_rev);
void parse_displayid_display_intf(const unsigned char *x);
void parse_displayid_color_characteristics(const unsigned char *x);
void parse_displayid_transfer_characteristics(const unsigned char *x);
diff --git a/parse-displayid-block.cpp b/parse-displayid-block.cpp
index 96c8191..312b9c3 100644
--- a/parse-displayid-block.cpp
+++ b/parse-displayid-block.cpp
@@ -1084,10 +1084,9 @@ static std::string ieee7542d(unsigned short fp)
// tag 0x21
-void edid_state::parse_displayid_parameters_v2(const unsigned char *x)
+void edid_state::parse_displayid_parameters_v2(const unsigned char *x,
+ unsigned block_rev)
{
- check_displayid_datablock_revision(x[1]);
-
if (!check_displayid_datablock_length(x, 29, 29))
return;
@@ -1145,7 +1144,9 @@ void edid_state::parse_displayid_parameters_v2(const unsigned char *x)
printf(" Native Minimum Luminance: %s\n",
ieee7542d(x[0x1c] | (x[0x1d] << 8)).c_str());
printf(" Native Color Depth: ");
- if (bpc444[x[0x1e] & 0x07])
+ if (!(x[0x1e] & 0x07))
+ printf("Not defined\n");
+ else if (bpc444[x[0x1e] & 0x07])
printf("%s bpc\n", bpc444[x[0x1e] & 0x07]);
else
printf("Reserved\n");
@@ -1156,6 +1157,9 @@ void edid_state::parse_displayid_parameters_v2(const unsigned char *x)
case 0x02: printf("Organic LED\n"); break;
default: printf("Reserved\n"); break;
}
+ if (block_rev)
+ printf(" Display Device Theme Preference: %s\n",
+ (x[0x1e] & 0x80) ? "Dark Theme Preferred" : "No Preference");
if (x[0x1f] != 0xff)
printf(" Native Gamma EOTF: %.2f\n",
(100 + x[0x1f]) / 100.0);
@@ -1733,7 +1737,13 @@ void edid_state::parse_displayid_block(const unsigned char *x)
parse_displayid_type_6_timing(&x[offset + 3 + i]);
break;
case 0x20: parse_displayid_product_id(x + offset); break;
- case 0x21: parse_displayid_parameters_v2(x + offset); break;
+ case 0x21:
+ if (block_rev >= 1)
+ check_displayid_datablock_revision(x[offset + 1], 0x80, 1);
+ else
+ check_displayid_datablock_revision(x[offset + 1], 0x80, 0);
+ parse_displayid_parameters_v2(x + offset, block_rev);
+ break;
case 0x22: {
unsigned sz = 20;

Privacy Policy