- PE_state.video.v_baseAddr = args->Video.v_baseAddr; // remains physical address
- PE_state.video.v_rowBytes = args->Video.v_rowBytes;
- PE_state.video.v_width = args->Video.v_width;
- PE_state.video.v_height = args->Video.v_height;
- PE_state.video.v_depth = args->Video.v_depth;
- PE_state.video.v_display = args->Video.v_display;
- strlcpy(PE_state.video.v_pixelFormat, "PPPPPPPP",
- sizeof(PE_state.video.v_pixelFormat));
+ if (args->Video.v_baseAddr) {
+ PE_state.video.v_baseAddr = args->Video.v_baseAddr; // remains physical address
+ PE_state.video.v_rowBytes = args->Video.v_rowBytes;
+ PE_state.video.v_width = args->Video.v_width;
+ PE_state.video.v_height = args->Video.v_height;
+ PE_state.video.v_depth = args->Video.v_depth;
+ PE_state.video.v_display = args->Video.v_display;
+ strlcpy(PE_state.video.v_pixelFormat, "PPPPPPPP",
+ sizeof(PE_state.video.v_pixelFormat));
+ } else {
+ PE_state.video.v_baseAddr = args->VideoV1.v_baseAddr; // remains physical address
+ PE_state.video.v_rowBytes = args->VideoV1.v_rowBytes;
+ PE_state.video.v_width = args->VideoV1.v_width;
+ PE_state.video.v_height = args->VideoV1.v_height;
+ PE_state.video.v_depth = args->VideoV1.v_depth;
+ PE_state.video.v_display = args->VideoV1.v_display;
+ strlcpy(PE_state.video.v_pixelFormat, "PPPPPPPP",
+ sizeof(PE_state.video.v_pixelFormat));
+ }
+
+#ifdef kBootArgsFlagHiDPI
+ if (args->flags & kBootArgsFlagHiDPI)
+ PE_state.video.v_scale = kPEScaleFactor2x;
+ else
+ PE_state.video.v_scale = kPEScaleFactor1x;
+#else
+ PE_state.video.v_scale = kPEScaleFactor1x;
+#endif