This is an automatic generated email to let you know that the following patch 
were queued:

Subject: edid-decode: add initial support for DisplayID 2.1 ARVR DBs
Author:  Hans Verkuil <hverkuil-ci...@xs4all.nl>
Date:    Wed Jul 3 09:43:47 2024 +0200

For some reason I missed that DisplayID 2.1 added two new Data Blocks.
Add initial support for these, but they still need to be parsed.

Signed-off-by: Hans Verkuil <hverkuil-ci...@xs4all.nl>

 edid-decode.h             |  2 ++
 parse-displayid-block.cpp | 28 ++++++++++++++++++++++++++++
 2 files changed, 30 insertions(+)

---

diff --git a/edid-decode.h b/edid-decode.h
index d2623910c9fe..126647cd8a5b 100644
--- a/edid-decode.h
+++ b/edid-decode.h
@@ -465,6 +465,8 @@ struct edid_state {
        void parse_displayid_dynamic_video_timings_range_limits(const unsigned 
char *x);
        void parse_displayid_ContainerID(const unsigned char *x);
        void parse_displayid_adaptive_sync(const unsigned char *x);
+       void parse_displayid_arvr_hmd(const unsigned char *x);
+       void parse_displayid_arvr_layer(const unsigned char *x);
        void parse_displayid_type_10_timing(const unsigned char *x, unsigned sz,
                                            bool is_cta = false);
        void preparse_displayid_block(unsigned char *x);
diff --git a/parse-displayid-block.cpp b/parse-displayid-block.cpp
index 59ff8b72cdf6..74b3287eb0af 100644
--- a/parse-displayid-block.cpp
+++ b/parse-displayid-block.cpp
@@ -1448,6 +1448,30 @@ void edid_state::parse_displayid_adaptive_sync(const 
unsigned char *x)
        }
 }
 
+// tag 0x2c
+
+void edid_state::parse_displayid_arvr_hmd(const unsigned char *x)
+{
+       check_displayid_datablock_revision(x[1]);
+
+       if (!check_displayid_datablock_length(x, 77, 77))
+               return;
+
+       // TODO: parse the DB
+}
+
+// tag 0x2d
+
+void edid_state::parse_displayid_arvr_layer(const unsigned char *x)
+{
+       check_displayid_datablock_revision(x[1]);
+
+       if (!check_displayid_datablock_length(x, 25, 25))
+               return;
+
+       // TODO: parse the DB
+}
+
 // tag 0x32
 
 void edid_state::parse_displayid_type_10_timing(const unsigned char *x,
@@ -1818,6 +1842,8 @@ unsigned edid_state::displayid_block(const unsigned 
version, const unsigned char
        case 0x28: data_block = "Tiled Display Topology Data Block (" + 
utohex(tag) + ")"; break;
        case 0x29: data_block = "ContainerID Data Block"; break;
        case 0x2b: data_block = "Adaptive Sync Data Block"; break;
+       case 0x2c: data_block = "ARVR_HMD Data Block"; break;
+       case 0x2d: data_block = "ARVR_Layer Data Block"; break;
        case 0x32: data_block = "Video Timing Modes Type 10 - Formula-based 
Timings Data Block"; break;
        // 0x2a .. 0x7d RESERVED for Additional VESA-defined Data Blocks
        case 0x7e: // DisplayID 2.0
@@ -1994,6 +2020,8 @@ unsigned edid_state::displayid_block(const unsigned 
version, const unsigned char
        case 0x28: parse_displayid_tiled_display_topology(x, true); break;
        case 0x29: parse_displayid_ContainerID(x); break;
        case 0x2b: parse_displayid_adaptive_sync(x); break;
+       case 0x2c: parse_displayid_arvr_hmd(x); break;
+       case 0x2d: parse_displayid_arvr_layer(x); break;
        case 0x32: {
                   unsigned sz = 6 + ((x[1] & 0x70) >> 4);
 

Reply via email to