From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=pass header.i=@akeo-ie.20150623.gappssmtp.com header.s=20150623 header.b=XJquH3KK; spf=none, err=permanent DNS error (domain: akeo.ie, ip: 209.85.128.66, mailfrom: pete@akeo.ie) Received: from mail-wm1-f66.google.com (mail-wm1-f66.google.com [209.85.128.66]) by groups.io with SMTP; Mon, 30 Sep 2019 02:32:08 -0700 Received: by mail-wm1-f66.google.com with SMTP id a6so12524273wma.5 for ; Mon, 30 Sep 2019 02:32:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=akeo-ie.20150623.gappssmtp.com; s=20150623; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=ycoG4HgULAQ4tEJuh/tVq6KKwlFCPH1C9xKXbOIQw/A=; b=XJquH3KKi9i57ouwgdneeOqiXC+ZiIfNV0SqfCpfYJrf5AqZioai2HPMpBj+28n+Kf +zRRLWq+xPlHGWMHqjzkEK5lh6StFAa7Rr6egzulwM0XfY8p1O61hNzHbCm9zEMT3SYd 2Jt/759p3xtHsK6NgdrT98MkXvLPLJxv01joYt8khiLayEHDteoGGo25nr0ysdMTmReq IqcOKqVes9ESCCVqgoClIIQWJPqNsuuYEiyQMIqlqKp+wgujhXNwnlel5GC7Wc7C1zmz 8rWPDs7PWGwE9L2VgfF31B6kQg0f5jx8QHXuwxb3W7/zFzFz7j7riEBxO/72lzOzHgJ2 In7w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=ycoG4HgULAQ4tEJuh/tVq6KKwlFCPH1C9xKXbOIQw/A=; b=YnkXnxC8vrWuxuc+XNyXdBSq09gXRVed/vuonR0lPViJu2kjQwlDmzEzybhq2tStiY U+dHP7S0vGTD02WlV+2e9Tk000cEulDpwolFFJ+K0EsoaI0diegzQrm9LT91w3m5mLlg wVEXLoeZ31erURPp4muuKJ6eYtqBC0xY7OhKT6fKVockJ2BmX+pWNaJD0BXqleswQjnx ZCZX9o0rO1g2dRbQIjTg9JK9lqVIufohISRrgAKWIUhb+zfM3X0AxHU/Z5gP8cxD4d2i xtosLZyMR+GjVI9L+ujDLIp6FPwVkj2k3tadGHF4Vg7XRTh6dggRC65cPUV4UenHULdl 6wiw== X-Gm-Message-State: APjAAAUCL5qcVqwJrlI+MoT1aZO3IdTsh9z9Y/dMaSDz0BVHVuWJyqnQ aCG9xLHBkwVGxIfUXpZArZqjWg== X-Google-Smtp-Source: APXvYqx4oaP6M/5Ta7vQNSHqhKaQtlpsQDsqKsB85ZUDvx8zSRAYCTDh2a28VYfCl/GCebPiP2U7Dg== X-Received: by 2002:a05:600c:2290:: with SMTP id 16mr15669645wmf.161.1569835926296; Mon, 30 Sep 2019 02:32:06 -0700 (PDT) Return-Path: Received: from [10.0.0.122] ([84.203.40.122]) by smtp.googlemail.com with ESMTPSA id y186sm39486138wmb.41.2019.09.30.02.32.04 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 30 Sep 2019 02:32:05 -0700 (PDT) Subject: Re: [edk2-platforms PATCH 1/1] Platforms/RPi3: DisplayDxe virtual resolution improvements To: Leif Lindholm Cc: devel@edk2.groups.io, ard.biesheuvel@linaro.org References: <20190927092016.5604-1-pete@akeo.ie> <20190928230525.GX25504@bivouac.eciton.net> From: "Pete Batard" Message-ID: <46241f29-f783-25a2-417b-e42880b5de1d@akeo.ie> Date: Mon, 30 Sep 2019 10:32:03 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.9.0 MIME-Version: 1.0 In-Reply-To: <20190928230525.GX25504@bivouac.eciton.net> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-GB Content-Transfer-Encoding: 7bit Hi Leif, On 2019.09.29 00:05, Leif Lindholm wrote: > On Fri, Sep 27, 2019 at 10:20:15AM +0100, Pete Batard wrote: >> From: Andrei Warkentin >> >> The Pi GPU decouples requested resolution from actual physical resolution >> and can perform scaling of virtual resolutions. This enables platform users >> to do something like ask for 1024x768 and get a framebuffer of that size, >> regardless of the actual output (which could be a very blurry SDTV). >> >> Specifically, this patch allows selecting which specific virtual >> resolutions to enable, thus replacing the old all-or-nothing behaviour >> with either all virtual resolutions supported, or just the native one. >> >> This patch also adds enables the common 7" Pi (800x480) screen to be used >> at 800x600 resolution, instead of forcing 640x480 as the only usable >> resolution. > > I am basically OK with this patch, but I note that the change in > variable name/content means existing users will end up with stale > variables. > > So I wonder if it would be worth explicitly adding a stanza deleting > the old variable if found? That would be a valid point *if* the Pi 3 was using actual NVRAM storage to write those variables. However, we have no such thing on the hardware, so we currently store those variables on the SD card, within the firmware file itself. Which means, the minute you "install" a new firmware (by replacing the existing RPI_EFI.fd on your SD card with a new one), you're losing all your existing variables anyway, including stale ones. Maybe with the Pi 4 and its 512 KB EEPROM, we'll be able to look into preserving the variables. Or we may also look into writing variables to a separate virtual NVRAM file on the SD card, instead of just reusing the .fd (which we are doing for convenience). But for our current model, what you highlight is a non issue, as the only "upgrade" path forces users to always start with a virtual NVRAM that has been reset and that is therefore free from any stale variable. Regards, /Pete > > / > Leif. > >> Signed-off-by: Pete Batard >> --- >> Platform/RaspberryPi/RPi3/Drivers/ConfigDxe/ConfigDxe.c | 9 +-- >> Platform/RaspberryPi/RPi3/Drivers/ConfigDxe/ConfigDxe.inf | 2 +- >> Platform/RaspberryPi/RPi3/Drivers/ConfigDxe/ConfigDxeHii.uni | 17 +++-- >> Platform/RaspberryPi/RPi3/Drivers/ConfigDxe/ConfigDxeHii.vfr | 71 ++++++++++++++++---- >> Platform/RaspberryPi/RPi3/Drivers/DisplayDxe/DisplayDxe.c | 53 +++++++++++++-- >> Platform/RaspberryPi/RPi3/Drivers/DisplayDxe/DisplayDxe.inf | 2 +- >> Platform/RaspberryPi/RPi3/RPi3.dec | 2 +- >> Platform/RaspberryPi/RPi3/RPi3.dsc | 2 +- >> 8 files changed, 125 insertions(+), 33 deletions(-) >> >> diff --git a/Platform/RaspberryPi/RPi3/Drivers/ConfigDxe/ConfigDxe.c b/Platform/RaspberryPi/RPi3/Drivers/ConfigDxe/ConfigDxe.c >> index fcb4ce6935b6..98e58a560ed4 100644 >> --- a/Platform/RaspberryPi/RPi3/Drivers/ConfigDxe/ConfigDxe.c >> +++ b/Platform/RaspberryPi/RPi3/Drivers/ConfigDxe/ConfigDxe.c >> @@ -92,6 +92,7 @@ SetupVariables ( >> ) >> { >> UINTN Size; >> + UINT8 Var8; >> UINT32 Var32; >> EFI_STATUS Status; >> >> @@ -180,12 +181,12 @@ SetupVariables ( >> PcdSet32 (PcdDebugShowUEFIExit, PcdGet32 (PcdDebugShowUEFIExit)); >> } >> >> - Size = sizeof (UINT32); >> - Status = gRT->GetVariable (L"DisplayEnableVModes", >> + Size = sizeof (UINT8); >> + Status = gRT->GetVariable (L"DisplayEnableScaledVModes", >> &gConfigDxeFormSetGuid, >> - NULL, &Size, &Var32); >> + NULL, &Size, &Var8); >> if (EFI_ERROR (Status)) { >> - PcdSet32 (PcdDisplayEnableVModes, PcdGet32 (PcdDisplayEnableVModes)); >> + PcdSet8 (PcdDisplayEnableScaledVModes, PcdGet8 (PcdDisplayEnableScaledVModes)); >> } >> >> Size = sizeof (UINT32); >> diff --git a/Platform/RaspberryPi/RPi3/Drivers/ConfigDxe/ConfigDxe.inf b/Platform/RaspberryPi/RPi3/Drivers/ConfigDxe/ConfigDxe.inf >> index 2fc4302526a1..24112d517467 100644 >> --- a/Platform/RaspberryPi/RPi3/Drivers/ConfigDxe/ConfigDxe.inf >> +++ b/Platform/RaspberryPi/RPi3/Drivers/ConfigDxe/ConfigDxe.inf >> @@ -64,7 +64,7 @@ [Pcd] >> gRaspberryPiTokenSpaceGuid.PcdMmcDisableMulti >> gRaspberryPiTokenSpaceGuid.PcdDebugEnableJTAG >> gRaspberryPiTokenSpaceGuid.PcdDebugShowUEFIExit >> - gRaspberryPiTokenSpaceGuid.PcdDisplayEnableVModes >> + gRaspberryPiTokenSpaceGuid.PcdDisplayEnableScaledVModes >> gRaspberryPiTokenSpaceGuid.PcdDisplayEnableSShot >> >> [FeaturePcd] >> diff --git a/Platform/RaspberryPi/RPi3/Drivers/ConfigDxe/ConfigDxeHii.uni b/Platform/RaspberryPi/RPi3/Drivers/ConfigDxe/ConfigDxeHii.uni >> index 65b45f3e6496..9b4076635f05 100644 >> --- a/Platform/RaspberryPi/RPi3/Drivers/ConfigDxe/ConfigDxeHii.uni >> +++ b/Platform/RaspberryPi/RPi3/Drivers/ConfigDxe/ConfigDxeHii.uni >> @@ -71,10 +71,19 @@ >> #string STR_DISPLAY_FORM_TITLE #language en-US "Display" >> #string STR_DISPLAY_FORM_SUBTITLE #language en-US "UEFI video driver settings" >> >> -#string STR_DISPLAY_VMODES_PROMPT #language en-US "Resolutions" >> -#string STR_DISPLAY_VMODES_HELP #language en-US "Support for non-native modes" >> -#string STR_DISPLAY_VMODES_ENABLE #language en-US "Also support 640x480, 800x600, 1024x768, 720p and 1080p" >> -#string STR_DISPLAY_VMODES_DISABLE #language en-US "Only native resolution" >> +#string STR_DISPLAY_VMODES_640_PROMPT #language en-US "Virtual 640x480" >> +#string STR_DISPLAY_VMODES_640_HELP #language en-US "Enable scaled 640x480 mode" >> +#string STR_DISPLAY_VMODES_800_PROMPT #language en-US "Virtual 800x600" >> +#string STR_DISPLAY_VMODES_800_HELP #language en-US "Enable scaled 800x600 mode" >> +#string STR_DISPLAY_VMODES_1024_PROMPT #language en-US "Virtual 1024x768" >> +#string STR_DISPLAY_VMODES_1024_HELP #language en-US "Enable scaled 1024x768 mode" >> +#string STR_DISPLAY_VMODES_720_PROMPT #language en-US "Virtual 720p" >> +#string STR_DISPLAY_VMODES_720_HELP #language en-US "Enable scaled 720p mode" >> +#string STR_DISPLAY_VMODES_1080_PROMPT #language en-US "Virtual 1080p" >> +#string STR_DISPLAY_VMODES_1080_HELP #language en-US "Enable scaled 1080p mode" >> + >> +#string STR_DISPLAY_VMODES_REAL_PROMPT #language en-US "Native resolution" >> +#string STR_DISPLAY_VMODES_REAL_HELP #language en-US "Native resolution" >> >> #string STR_DISPLAY_SSHOT_PROMPT #language en-US "Screenshot Support" >> #string STR_DISPLAY_SSHOT_HELP #language en-US "Save screen capture as a BMP on the first writable file system found" >> diff --git a/Platform/RaspberryPi/RPi3/Drivers/ConfigDxe/ConfigDxeHii.vfr b/Platform/RaspberryPi/RPi3/Drivers/ConfigDxe/ConfigDxeHii.vfr >> index 217a285b5a1f..60bfdbd4d17e 100644 >> --- a/Platform/RaspberryPi/RPi3/Drivers/ConfigDxe/ConfigDxeHii.vfr >> +++ b/Platform/RaspberryPi/RPi3/Drivers/ConfigDxe/ConfigDxeHii.vfr >> @@ -9,14 +9,23 @@ >> #include >> #include "ConfigDxeFormSetGuid.h" >> >> +#pragma pack(1) >> typedef struct { >> /* >> - * 0 - One mode for the boot resolution. >> - * 1 - Adds additional "typical" resolutions like >> - * 640x480, 800x600, 1024 x 768, 720p and 1080p. >> + * One bit for each scaled resolution supported, >> + * these are ordered exactly like mGopModeData >> + * in DisplayDxe. >> + * >> + * 800x600, 640x480, 1024x768, 720p, 1080p, native. >> */ >> - UINT32 Enable; >> -} DISPLAY_ENABLE_VMODES_VARSTORE_DATA; >> + UINT8 v640 : 1; >> + UINT8 v800 : 1; >> + UINT8 v1024 : 1; >> + UINT8 v720p : 1; >> + UINT8 v1080p : 1; >> + UINT8 Physical : 1; >> +} DISPLAY_ENABLE_SCALED_VMODES_VARSTORE_DATA; >> +#pragma pack() >> >> typedef struct { >> /* >> @@ -166,9 +175,9 @@ formset >> name = DebugShowUEFIExit, >> guid = CONFIGDXE_FORM_SET_GUID; >> >> - efivarstore DISPLAY_ENABLE_VMODES_VARSTORE_DATA, >> + efivarstore DISPLAY_ENABLE_SCALED_VMODES_VARSTORE_DATA, >> attribute = EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE, >> - name = DisplayEnableVModes, >> + name = DisplayEnableScaledVModes, >> guid = CONFIGDXE_FORM_SET_GUID; >> >> efivarstore DISPLAY_ENABLE_SSHOT_VARSTORE_DATA, >> @@ -282,13 +291,47 @@ formset >> title = STRING_TOKEN(STR_DISPLAY_FORM_TITLE); >> subtitle text = STRING_TOKEN(STR_DISPLAY_FORM_SUBTITLE); >> >> - oneof varid = DisplayEnableVModes.Enable, >> - prompt = STRING_TOKEN(STR_DISPLAY_VMODES_PROMPT), >> - help = STRING_TOKEN(STR_DISPLAY_VMODES_HELP), >> - flags = NUMERIC_SIZE_4 | INTERACTIVE | RESET_REQUIRED, >> - option text = STRING_TOKEN(STR_DISPLAY_VMODES_ENABLE), value = 1, flags = DEFAULT; >> - option text = STRING_TOKEN(STR_DISPLAY_VMODES_DISABLE), value = 0, flags = 0; >> - endoneof; >> + checkbox varid = DisplayEnableScaledVModes.v640, >> + prompt = STRING_TOKEN(STR_DISPLAY_VMODES_640_PROMPT), >> + help = STRING_TOKEN(STR_DISPLAY_VMODES_640_HELP), >> + flags = CHECKBOX_DEFAULT | CHECKBOX_DEFAULT_MFG | RESET_REQUIRED, >> + default = TRUE, >> + endcheckbox; >> + >> + checkbox varid = DisplayEnableScaledVModes.v800, >> + prompt = STRING_TOKEN(STR_DISPLAY_VMODES_800_PROMPT), >> + help = STRING_TOKEN(STR_DISPLAY_VMODES_800_HELP), >> + flags = CHECKBOX_DEFAULT | CHECKBOX_DEFAULT_MFG | RESET_REQUIRED, >> + default = TRUE, >> + endcheckbox; >> + >> + checkbox varid = DisplayEnableScaledVModes.v1024, >> + prompt = STRING_TOKEN(STR_DISPLAY_VMODES_1024_PROMPT), >> + help = STRING_TOKEN(STR_DISPLAY_VMODES_1024_HELP), >> + flags = CHECKBOX_DEFAULT | CHECKBOX_DEFAULT_MFG | RESET_REQUIRED, >> + default = TRUE, >> + endcheckbox; >> + >> + checkbox varid = DisplayEnableScaledVModes.v720p, >> + prompt = STRING_TOKEN(STR_DISPLAY_VMODES_720_PROMPT), >> + help = STRING_TOKEN(STR_DISPLAY_VMODES_720_HELP), >> + flags = CHECKBOX_DEFAULT | CHECKBOX_DEFAULT_MFG | RESET_REQUIRED, >> + default = TRUE, >> + endcheckbox; >> + >> + checkbox varid = DisplayEnableScaledVModes.v1080p, >> + prompt = STRING_TOKEN(STR_DISPLAY_VMODES_1080_PROMPT), >> + help = STRING_TOKEN(STR_DISPLAY_VMODES_1080_HELP), >> + flags = CHECKBOX_DEFAULT | CHECKBOX_DEFAULT_MFG | RESET_REQUIRED, >> + default = TRUE, >> + endcheckbox; >> + >> + checkbox varid = DisplayEnableScaledVModes.Physical, >> + prompt = STRING_TOKEN(STR_DISPLAY_VMODES_REAL_PROMPT), >> + help = STRING_TOKEN(STR_DISPLAY_VMODES_REAL_HELP), >> + flags = CHECKBOX_DEFAULT | CHECKBOX_DEFAULT_MFG | RESET_REQUIRED, >> + default = TRUE, >> + endcheckbox; >> >> oneof varid = DisplayEnableSShot.Enable, >> prompt = STRING_TOKEN(STR_DISPLAY_SSHOT_PROMPT), >> diff --git a/Platform/RaspberryPi/RPi3/Drivers/DisplayDxe/DisplayDxe.c b/Platform/RaspberryPi/RPi3/Drivers/DisplayDxe/DisplayDxe.c >> index 9475a5ad670c..b880ca827bd6 100644 >> --- a/Platform/RaspberryPi/RPi3/Drivers/DisplayDxe/DisplayDxe.c >> +++ b/Platform/RaspberryPi/RPi3/Drivers/DisplayDxe/DisplayDxe.c >> @@ -10,6 +10,14 @@ >> #include >> #include "DisplayDxe.h" >> >> +#define MODE_800_ENABLED BIT0 >> +#define MODE_640_ENABLED BIT1 >> +#define MODE_1024_ENABLED BIT2 >> +#define MODE_720P_ENABLED BIT3 >> +#define MODE_1080P_ENABLED BIT4 >> +#define MODE_NATIVE_ENABLED BIT5 >> +#define JUST_NATIVE_ENABLED MODE_NATIVE_ENABLED >> +#define ALL_MODES (BIT6 - 1) >> #define POS_TO_FB(posX, posY) ((UINT8*) \ >> ((UINTN)This->Mode->FrameBufferBase + \ >> (posY) * This->Mode->Info->PixelsPerScanLine * \ >> @@ -104,7 +112,7 @@ STATIC RASPBERRY_PI_FIRMWARE_PROTOCOL *mFwProtocol; >> STATIC EFI_CPU_ARCH_PROTOCOL *mCpu; >> >> STATIC UINTN mLastMode; >> -STATIC GOP_MODE_DATA mGopModeData[] = { >> +STATIC GOP_MODE_DATA mGopModeTemplate[] = { >> { 800, 600 }, /* Legacy */ >> { 640, 480 }, /* Legacy */ >> { 1024, 768 }, /* Legacy */ >> @@ -113,6 +121,9 @@ STATIC GOP_MODE_DATA mGopModeData[] = { >> { 0, 0 }, /* Physical */ >> }; >> >> +STATIC UINTN mLastMode; >> +STATIC GOP_MODE_DATA mGopModeData[ARRAY_SIZE (mGopModeTemplate)]; >> + >> STATIC DISPLAY_DEVICE_PATH mDisplayProtoDevicePath = >> { >> { >> @@ -446,6 +457,7 @@ DriverStart ( >> ) >> { >> UINTN Index; >> + UINTN TempIndex; >> EFI_STATUS Status; >> VOID *Dummy; >> >> @@ -473,11 +485,29 @@ DriverStart ( >> goto Done; >> } >> >> + PcdSet8 (PcdDisplayEnableScaledVModes, >> + PcdGet8 (PcdDisplayEnableScaledVModes) & ALL_MODES); >> >> - if (PcdGet32 (PcdDisplayEnableVModes)) { >> - mLastMode = ARRAY_SIZE (mGopModeData) - 1; >> - } else { >> - mLastMode = 0; >> + if (PcdGet8 (PcdDisplayEnableScaledVModes) == 0) { >> + PcdSet8 (PcdDisplayEnableScaledVModes, JUST_NATIVE_ENABLED); >> + } >> + >> + mLastMode = 0; >> + for (TempIndex = 0, Index = 0; >> + TempIndex < ARRAY_SIZE (mGopModeTemplate); TempIndex++) { >> + if ((PcdGet8 (PcdDisplayEnableScaledVModes) & (1 << TempIndex)) != 0) { >> + DEBUG ((DEBUG_ERROR, "Mode %u: %u x %u present\n", >> + TempIndex, mGopModeTemplate[TempIndex].Width, >> + mGopModeTemplate[TempIndex].Height)); >> + >> + CopyMem (&mGopModeData[Index], &mGopModeTemplate[TempIndex], >> + sizeof (GOP_MODE_DATA)); >> + mLastMode = Index; >> + Index++; >> + } >> + } >> + >> + if (PcdGet8 (PcdDisplayEnableScaledVModes) == JUST_NATIVE_ENABLED) { >> /* >> * mBootWidth x mBootHeight may not be sensible, >> * so clean it up, since we won't be adding >> @@ -486,11 +516,20 @@ DriverStart ( >> if (mBootWidth < 640 || mBootHeight < 480) { >> mBootWidth = 640; >> mBootHeight = 480; >> + } else if (mBootWidth == 800 && mBootHeight == 480) { >> + /* The Pi 7" screen is close to 800x600, just pretend it is. */ >> + mBootHeight = 600; >> } >> } >> >> - mGopModeData[mLastMode].Width = mBootWidth; >> - mGopModeData[mLastMode].Height = mBootHeight; >> + if ((PcdGet8(PcdDisplayEnableScaledVModes) & MODE_NATIVE_ENABLED) != 0) { >> + /* >> + * Adjust actual native res only if native res is enabled >> + * (so last mode is native res). >> + */ >> + mGopModeData[mLastMode].Width = mBootWidth; >> + mGopModeData[mLastMode].Height = mBootHeight; >> + } >> >> for (Index = 0; Index <= mLastMode; Index++) { >> UINTN FbSize; >> diff --git a/Platform/RaspberryPi/RPi3/Drivers/DisplayDxe/DisplayDxe.inf b/Platform/RaspberryPi/RPi3/Drivers/DisplayDxe/DisplayDxe.inf >> index 11271045bdd9..31da2090b402 100644 >> --- a/Platform/RaspberryPi/RPi3/Drivers/DisplayDxe/DisplayDxe.inf >> +++ b/Platform/RaspberryPi/RPi3/Drivers/DisplayDxe/DisplayDxe.inf >> @@ -57,7 +57,7 @@ [Protocols] >> gRaspberryPiFirmwareProtocolGuid >> >> [Pcd] >> - gRaspberryPiTokenSpaceGuid.PcdDisplayEnableVModes >> + gRaspberryPiTokenSpaceGuid.PcdDisplayEnableScaledVModes >> gRaspberryPiTokenSpaceGuid.PcdDisplayEnableSShot >> >> [Guids] >> diff --git a/Platform/RaspberryPi/RPi3/RPi3.dec b/Platform/RaspberryPi/RPi3/RPi3.dec >> index d2a813417648..0554ee20bac5 100644 >> --- a/Platform/RaspberryPi/RPi3/RPi3.dec >> +++ b/Platform/RaspberryPi/RPi3/RPi3.dec >> @@ -54,5 +54,5 @@ [PcdsFixedAtBuild, PcdsPatchableInModule, PcdsDynamic, PcdsDynamicEx] >> gRaspberryPiTokenSpaceGuid.PcdDebugEnableJTAG|0|UINT32|0x00000014 >> gRaspberryPiTokenSpaceGuid.PcdDebugShowUEFIExit|0|UINT32|0x00000015 >> gRaspberryPiTokenSpaceGuid.PcdCustomCpuClock|0|UINT32|0x00000016 >> - gRaspberryPiTokenSpaceGuid.PcdDisplayEnableVModes|0|UINT32|0x00000017 >> + gRaspberryPiTokenSpaceGuid.PcdDisplayEnableScaledVModes|0|UINT8|0x00000017 >> gRaspberryPiTokenSpaceGuid.PcdDisplayEnableSShot|0|UINT32|0x00000018 >> diff --git a/Platform/RaspberryPi/RPi3/RPi3.dsc b/Platform/RaspberryPi/RPi3/RPi3.dsc >> index 2b9e619ad55c..b37a02e97da7 100644 >> --- a/Platform/RaspberryPi/RPi3/RPi3.dsc >> +++ b/Platform/RaspberryPi/RPi3/RPi3.dsc >> @@ -416,7 +416,7 @@ [PcdsDynamicHii.common.DEFAULT] >> # >> # Display-related. >> # >> - gRaspberryPiTokenSpaceGuid.PcdDisplayEnableVModes|L"DisplayEnableVModes"|gConfigDxeFormSetGuid|0x0|0 >> + gRaspberryPiTokenSpaceGuid.PcdDisplayEnableScaledVModes|L"DisplayEnableScaledVModes"|gConfigDxeFormSetGuid|0x0|0xff >> gRaspberryPiTokenSpaceGuid.PcdDisplayEnableSShot|L"DisplayEnableSShot"|gConfigDxeFormSetGuid|0x0|1 >> >> # >> -- >> 2.21.0.windows.1 >>