From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mx.groups.io with SMTP id smtpd.web11.56261.1643755116026261003 for ; Tue, 01 Feb 2022 14:38:36 -0800 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=PcrnKnZx; spf=pass (domain: intel.com, ip: 192.55.52.93, mailfrom: guo.dong@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1643755116; x=1675291116; h=from:to:subject:date:message-id:references:in-reply-to: content-transfer-encoding:mime-version; bh=mxrgShOI02ssAjjQCB6Vzc5aYIoK1JT6GrIWOfA5jG0=; b=PcrnKnZxmEirhiK8S7s5PX8M0q0FnGOrk5NfeN9xKIiNSAZ/r3P6HZiG Wr9bBTT0Ckh+FCWJJpN2fYSxwU890TibbycE6h1LZmICR/ZCaOYMblLTK 2BLch8yRgJtO5A38DKYhWhIuDUkPjbAdscgduBwqJ+3QN1a9e45tdNSSd hc/WOjFKKSg3g5nFW/+0fYeP7yH+vzMavAAf8COCeQvJ7mc4tnAt18rTN bWcIjp72QV1gi4lDozJ3Q6wHtmuAbmHRQzxWgEUqPYXzmPTeC6hokr7W7 69BOXCzmgnUDOX1S6gnenVocAvSEuR4s7ZmU1Ackf/0faBsv/yxX7f6Bq Q==; X-IronPort-AV: E=McAfee;i="6200,9189,10245"; a="245405313" X-IronPort-AV: E=Sophos;i="5.88,335,1635231600"; d="scan'208";a="245405313" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Feb 2022 14:38:35 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.88,335,1635231600"; d="scan'208";a="771268757" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by fmsmga005.fm.intel.com with ESMTP; 01 Feb 2022 14:38:34 -0800 Received: from orsmsx603.amr.corp.intel.com (10.22.229.16) by ORSMSX602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20; Tue, 1 Feb 2022 14:38:34 -0800 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20 via Frontend Transport; Tue, 1 Feb 2022 14:38:34 -0800 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (104.47.55.108) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.20; Tue, 1 Feb 2022 14:38:34 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bIxYf8WcttRy9bEN7ap8x3bfeL1rman/qrMPOTYllWsWxUCReVQF8Dxj0YI/Attrx/t69ksKinD5I1CSacCz8INF06YVM0qUyvzKIclgonVblpwosywylegJZuDxbXMlhCgZLu8r52u6ob/jtz7Laem+nN3aFmkLjS8It5V+wMlvTnd3KbLyrzUk+eFDcywIcEKPU4eywKONh8m8j0vYtvVMcwNs+dXRNLDPX7l+X1S7wocWXALPlP+OlMAulBJebK48InFYY/m2cTDtkPNJCC/NOfIDiGpL9g1Lqe24WPQnrI2mGUv4xTmS8QnrEQX/dQzvrF0A/nP0mGZ1jCC/tA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=FZpwlhOS6YWlZMUMZYQzBLTnHEwk8p8wbDFqBqPgpWI=; b=AGcqVWlcgSN1uWvGLTHwKKkXVoKYfsIM+4W20Id5qjSBLl/IKCE+CNrKOq7F1pvez88TCTX3/eopl9S06z8clDxGJpfp8vW0vh5ij5UqkWk0R4sXRJJH/T4sCHVPyJeK5tyjkRjpyiVoo7hx6i8usAqoYzxvjP/OKrT5y82UROb+twvB3b85mEI4mPRS3m8BEBZLeDM6r8fGLGwBX9eQns9IFII7bHXHkg8SGCZ76MQHYnsP/XoRV9JcHAVobKxLRwO75Jyd12+w7tOXvOST4akNbdB9Rgx77apvRm0uxVnrMHBbVR3AFjRsvA/u3RK9Zu3uphOpaQxkgR/p6O29Qg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none Received: from BYAPR11MB3622.namprd11.prod.outlook.com (2603:10b6:a03:fe::30) by SA2PR11MB5177.namprd11.prod.outlook.com (2603:10b6:806:11c::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4951.11; Tue, 1 Feb 2022 22:38:33 +0000 Received: from BYAPR11MB3622.namprd11.prod.outlook.com ([fe80::c461:5de1:9cf:23cf]) by BYAPR11MB3622.namprd11.prod.outlook.com ([fe80::c461:5de1:9cf:23cf%7]) with mapi id 15.20.4930.022; Tue, 1 Feb 2022 22:38:33 +0000 From: "Guo Dong" To: "devel@edk2.groups.io" , "Rhodes, Sean" Subject: Re: [edk2-devel] [PATCH 43/43] UefiPayloadPkg: Provide option to use Boot Splash Thread-Topic: [edk2-devel] [PATCH 43/43] UefiPayloadPkg: Provide option to use Boot Splash Thread-Index: AQHYFuMdV0mUFAF4T0KzbbsEMLq89Kx/SeLg Date: Tue, 1 Feb 2022 22:38:32 +0000 Message-ID: References: <9dd14fc91c174eae87fd122c7ac70073a363527f.1643661717.git.sean@starlabs.systems> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.200.16 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 0b40a1e1-1f4b-41bf-cf44-08d9e5d393df x-ms-traffictypediagnostic: SA2PR11MB5177:EE_ x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:7691; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 0dXHQ0qB60HJ41rYgcRDAUie90er+rwswwDniNlhLUjESKztr1q/7/VtgKlWt4A+u5OUVPghod5TXXtgHiqSNc97o95Is+jB9R9+E0u5KkHazsHUbWW/o06qK0T11TUBMfnmNgqS9xyDElRvAFxZdyc1xJzj5NOYibRHrElHEBZ9MQSvVw28oiXeisHWyY43hEuIeP2Np8H2xACL+aLdngeSRRjCYE4OuAY2+aHy1h0VUh+q8S8hIfy2vT864araYdyR3ghL1jEgmJHBHb7994t7kUrohMTC9dtwcRFN2UOX9QVEJU+GAF8M3J0MlTHfzAWaIcKx2w2Dn8sPKkGpIJc06D6RspGMuV78XEzl9hZfmsHPY2OxhGgmW5a7RN181+ApiEpy0DmRkncxnKSn3cH7mDlRp0xkFpdjVMXMqRE281YUMH/X7YhxaKrikfokhvhktF0BSoHjfTeLm73e/MEDDKvtMJyucERfgr9UoGansBW+szGrRL+xTcJ94cDF9lRBajoQGJ/02BSCpSwa68wLdlOd5igAlvfXgjyHN8ipdI+gtWqTvIH2e25fg2UGRNReQA3ly3aU800hoInlmaam4sLQCveOY9GsDFy1zchwQI4DXs0nTD+NsZjrQ9MHp4s3BSFeW0JLfW9cXHd/y8diLnE+JqFoLyZkygZR+Qih5ebua5e3kb5WvdymkakmffQXJoYXgEKwlg05pBkOuZu+OLKWAvCMlKxmoUA11fa8XfxIFT/t7PGyrIrzNv8AnoXGMyxKldiHsKWLRuOCviPe/Ux4zUwEeDBUqSaAnAXjqgg7qjTc9JFvpdncsu3aMfiONyFTwjCV1ashUEjS8g== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BYAPR11MB3622.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(8936002)(71200400001)(316002)(110136005)(33656002)(8676002)(76116006)(508600001)(66946007)(966005)(5660300002)(66476007)(64756008)(26005)(52536014)(6506007)(83380400001)(66556008)(53546011)(7696005)(2906002)(66446008)(38100700002)(86362001)(122000001)(55016003)(82960400001)(38070700005)(186003)(9686003);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?5S1m/f+hpGcWg4Vr4rdf4N2i/E9E2oB8dGrwkNOzDVFSQarwuejOwbzK8foQ?= =?us-ascii?Q?yuJL77qdfrgx4DxW/9L6HTZpn6KuIM1UfFQT05zmGFPG7mHRNknUzWB+bmRC?= =?us-ascii?Q?IUYgg/3N+5/vShRTqaQFsM60bjx+Sy3x2JnlN80bLWlSrtMlEucbuiNcWMTy?= =?us-ascii?Q?efUcYJIDtF0wWL8jIUC8yn+DXLLIcYzVCkZOHMyEjdtInaXFTtgcuxz0Pm81?= =?us-ascii?Q?/M4kLMc+cxb9WQUSgfOfhN54uX1f5JZ/NK8b4WMAzxo7KHHnGXDmcpHRnkqd?= =?us-ascii?Q?d3sH9tQ9WVboJR9neA4GhxiTtvGNKDykOYzp9Y9CG/BKWvAqusexLsht7Qo+?= =?us-ascii?Q?548JIw0NtaSEw7qNkhjXZ+fbWMxuLANSueVWPoRU5YAw0BRRhXheZ+TYuevR?= =?us-ascii?Q?7rjY2dYRQL6t01XSM2hD01xgJxeiECGgVglw9hEuUtEagOrcm1YJw/G3N9Cm?= =?us-ascii?Q?/OY/BucyNQVbTJFZbyTucopGwwgQtWEu0Zs84cR60Yziawm5lKmRKpl97qFL?= =?us-ascii?Q?3veF2u8DSSVf7MEzegDJ7TRNbGKBgioOhOb8W3LaPPzK9DfUB202TJiQlYNu?= =?us-ascii?Q?BJQoxEob3xSN/Ujy84UgFXstmstkM6UFg4K+8qVW1Qf2u3SzCtLhXkArL4w4?= =?us-ascii?Q?cSzQu1x9lCFsas3KBsHVahoP7GeHH29/0gOtX46xOBWFuivaNFV2uPb65wT+?= =?us-ascii?Q?RYEyWg4ryKUnFKhVJknk9H6X0Ng2G4ra9ZipStM+EGB0joZfCKCI3OIvM5Zp?= =?us-ascii?Q?XOQNmQ+VUQ+lpwMUa4u98fasGNYEpkaU7KBB3JU9Xf0BuTfW9tw97FbFBJf/?= =?us-ascii?Q?mHc9VoY0z3wWz+R4fOKprIGfZ83cb25mURE08OyLso5GD2sYgua0bqc4mgEK?= =?us-ascii?Q?Hr9trweTAx0pevL83xRilL8hG3mC/R9J3IzZe1GbF0IYqjJykWcaYyrABBvR?= =?us-ascii?Q?r19YqdLJ6yYRgiVPF8PJcKLL5tTholGvr17ivfspqK6MDvJVCnGeBLkxyLhS?= =?us-ascii?Q?JRubfl810lkfgIRbTYzU1UQWbMCpsr9Hur8jR7zXZrtTeC7DhHZ3B5j+HRMo?= =?us-ascii?Q?lL2/Hm9MoZKixdHzODjx2PBjwru+wIbEeq9GEJKlWVP+Yz/GGcaJkNeaTLR+?= =?us-ascii?Q?DTudcJh4nWN2e9dlbuGlg3tq4zXCkFANDbdtbqHooMpQLJ4Wcmwtq7U/zpd5?= =?us-ascii?Q?0u7IzyQiIpgPoGyCXzdTbrOBe0knnmuijjINpQkr5wKSfKUJjIFuEpurh5If?= =?us-ascii?Q?HL07dSd6aZ9POHCFUx0Ksp0kRCsWHA7OLIz64W2ZzS3k+zXomjGQaJ7mNnc2?= =?us-ascii?Q?Yx58ORNCAsCJ9Z2iUBdhbPvcXCO+qP46fjCe6CJRpy/lSmeutPT9V7ZMkxQJ?= =?us-ascii?Q?SLUOEELXBB4YKhrJAULyPZsuzwdlfiy9gPU7d5I6rhDHh7y1qMKkFg8B8wqn?= =?us-ascii?Q?eICqkMW6X8o0YpKAw4z4YBkVIczPLg5BlCO+nPkjX9eUR/fKbv62ftCEquEs?= =?us-ascii?Q?8xUf+bTG46q1zUos7lDc9mlQSi3mVSthtErKbhZOzCmYhhZmD+gUbIGfWerk?= =?us-ascii?Q?/oI+mzhcD9fbabPdH1rb+Pf8Zi+6PBiXIjSRsSe3yQUWiBo9DpjxRaLdV0Yd?= =?us-ascii?Q?Cg=3D=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BYAPR11MB3622.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0b40a1e1-1f4b-41bf-cf44-08d9e5d393df X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Feb 2022 22:38:33.0476 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: IR4VVp+Vcwr4x4nb+5bF3x/CG3EREDgNghVl0yZ/9PHZr1pZ2Lt0KC2zYLSiB/Zu0237JlDUAHRyaUyZe/yzxA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA2PR11MB5177 Return-Path: guo.dong@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Please help add some comments in the commit message on this patch. And please don't build module LogoDxe when BOOTSPLASH_IMAGE is FALSE. Thanks, Guo -----Original Message----- From: devel@edk2.groups.io On Behalf Of Sean Rhodes Sent: Monday, January 31, 2022 1:43 PM To: devel@edk2.groups.io Cc: Rhodes, Sean Subject: [edk2-devel] [PATCH 43/43] UefiPayloadPkg: Provide option to use B= oot Splash Signed-off-by: Sean Rhodes --- .../Library/PlatformBootManagerLib/PlatformBootManager.c | 5 +++++ .../PlatformBootManagerLib/PlatformBootManagerLib.inf | 2 ++ UefiPayloadPkg/UefiPayloadPkg.dec | 3 +++ UefiPayloadPkg/UefiPayloadPkg.dsc | 5 +++++ UefiPayloadPkg/UefiPayloadPkg.fdf | 1 + 5 files changed, 16 insertions(+) diff --git a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootMana= ger.c b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c index a8ead775ea..a938144156 100644 --- a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c +++ b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c @@ -243,6 +243,11 @@ PlatformBootManagerAfterConsole ( Black.Blue =3D Black.Green =3D Black.Red =3D Black.Reserved =3D 0; White.Blue =3D White.Green =3D White.Red =3D White.Reserved =3D 0xFF; =20 + if (FixedPcdGetBool (PcdBootSplashImage) ) { + gST->ConOut->ClearScreen (gST->ConOut); + BootLogoEnableLogo (); + }; + EfiBootManagerConnectAll (); EfiBootManagerRefreshAllBootOption (); =20 diff --git a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootMana= gerLib.inf b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootMana= gerLib.inf index 9c4a9da943..306bd33b7a 100644 --- a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.= inf +++ b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.= inf @@ -39,6 +39,7 @@ UefiRuntimeServicesTableLib UefiLib UefiBootManagerLib + BootLogoLib PcdLib DxeServicesLib MemoryAllocationLib @@ -73,3 +74,4 @@ gEfiMdePkgTokenSpaceGuid.PcdUartDefaultParity gEfiMdePkgTokenSpaceGuid.PcdUartDefaultStopBits gEfiMdeModulePkgTokenSpaceGuid.PcdBootManagerMenuFile + gUefiPayloadPkgTokenSpaceGuid.PcdBootSplashImage diff --git a/UefiPayloadPkg/UefiPayloadPkg.dec b/UefiPayloadPkg/UefiPayload= Pkg.dec index 551f0a4915..4f5756d575 100644 --- a/UefiPayloadPkg/UefiPayloadPkg.dec +++ b/UefiPayloadPkg/UefiPayloadPkg.dec @@ -83,6 +83,9 @@ gUefiPayloadPkgTokenSpaceGuid.PcdSystemMemoryUefiRegionSi= ze|0x04000000|UINT32|0x =20 gUefiPayloadPkgTokenSpaceGuid.PcdPcdDriverFile|{ 0x57, 0x72, 0xcf, 0x80, 0= xab, 0x87, 0xf9, 0x47, 0xa3, 0xfe, 0xD5, 0x0B, 0x76, 0xd8, 0x95, 0x41 }|VOI= D*|0x00000018 =20 +# BootSplash Image +gUefiPayloadPkgTokenSpaceGuid.PcdBootSplashImage|TRUE|BOOLEAN|0x00000021 + ## FFS filename to find the default variable initial data file. # @Prompt FFS Name of variable initial data file gUefiPayloadPkgTokenSpaceGuid.PcdNvsDataFile |{ 0x1a, 0xf1, 0xb1, 0xae, 0= x42, 0xcc, 0xcf, 0x4e, 0xac, 0x60, 0xdb, 0xab, 0xf6, 0xca, 0x69, 0xe6 }|VOI= D*|0x00000025 diff --git a/UefiPayloadPkg/UefiPayloadPkg.dsc b/UefiPayloadPkg/UefiPayload= Pkg.dsc index 1ce96a51c1..9fd18d8ee0 100644 --- a/UefiPayloadPkg/UefiPayloadPkg.dsc +++ b/UefiPayloadPkg/UefiPayloadPkg.dsc @@ -33,6 +33,7 @@ DEFINE UNIVERSAL_PAYLOAD =3D FALSE DEFINE SECURITY_STUB_ENABLE =3D TRUE DEFINE SMM_SUPPORT =3D FALSE + DEFINE BOOTSPLASH_IMAGE =3D FALSE # # SBL: UEFI payload for Slim Bootloader # COREBOOT: UEFI payload for coreboot @@ -209,6 +210,7 @@ CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf SecurityManagementLib|MdeModulePkg/Library/DxeSecurityManagementLib/DxeS= ecurityManagementLib.inf UefiBootManagerLib|MdeModulePkg/Library/UefiBootManagerLib/UefiBootManag= erLib.inf + BootLogoLib|MdeModulePkg/Library/BootLogoLib/BootLogoLib.inf CustomizedDisplayLib|MdeModulePkg/Library/CustomizedDisplayLib/Customize= dDisplayLib.inf FrameBufferBltLib|MdeModulePkg/Library/FrameBufferBltLib/FrameBufferBltL= ib.inf =20 @@ -399,6 +401,8 @@ gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask | 0x1 !endif =20 + gUefiPayloadPkgTokenSpaceGuid.PcdBootSplashImage|$(BOOTSPLASH_IMAGE) + [PcdsPatchableInModule.X64] gPcAtChipsetPkgTokenSpaceGuid.PcdRtcIndexRegister|$(RTC_INDEX_REGISTER) gPcAtChipsetPkgTokenSpaceGuid.PcdRtcTargetRegister|$(RTC_TARGET_REGISTER= ) @@ -545,6 +549,7 @@ !endif UefiCpuPkg/CpuDxe/CpuDxe.inf MdeModulePkg/Universal/BdsDxe/BdsDxe.inf + MdeModulePkg/Logo/LogoDxe.inf MdeModulePkg/Application/UiApp/UiApp.inf { NULL|MdeModulePkg/Library/DeviceManagerUiLib/DeviceManagerUiLib.inf diff --git a/UefiPayloadPkg/UefiPayloadPkg.fdf b/UefiPayloadPkg/UefiPayload= Pkg.fdf index c7b04978ad..2c75f51f7a 100644 --- a/UefiPayloadPkg/UefiPayloadPkg.fdf +++ b/UefiPayloadPkg/UefiPayloadPkg.fdf @@ -158,6 +158,7 @@ INF MdeModulePkg/Universal/EbcDxe/EbcDxe.inf INF UefiPayloadPkg/BlSupportDxe/BlSupportDxe.inf =20 INF MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf +INF MdeModulePkg/Logo/LogoDxe.inf # # PCI Support # --=20 2.32.0 -=3D-=3D-=3D-=3D-=3D-=3D Groups.io Links: You receive all messages sent to this group. View/Reply Online (#86261): https://edk2.groups.io/g/devel/message/86261 Mute This Topic: https://groups.io/mt/88817761/1781375 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [guo.dong@intel.com] -=3D-=3D-=3D-=3D-=3D-=3D