<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 通過GC Nano技術(shù)提升用戶界面體驗(yàn)

          通過GC Nano技術(shù)提升用戶界面體驗(yàn)

          作者: 時(shí)間:2018-08-23 來源:網(wǎng)絡(luò) 收藏

          GPU是提升HMI用戶體驗(yàn)的基礎(chǔ)技術(shù),可以實(shí)現(xiàn)屏幕/UI合成,包括多個(gè)源(ISP/照相機(jī)、視頻等)的多層混合、圖像過濾、字體渲染/加速、3D效果(變換、透視等)等很多其他功能。Vivante擁有一條基于GPU技術(shù)的綜合產(chǎn)品線,包括GC Vega系列和GC Nano系列。

          本文引用地址:http://www.ex-cimer.com/article/201808/387558.htm

          GC Vega系列適用于需要最新、最好GPU硬件和功能的SoC,這些功能包括:OpenGL ES 3.1,完整安卓擴(kuò)展包(AEP)支持,包括硬件鑲嵌/幾何著色器(TS/GS)、DirectX 12、CTM(closetothemetal) GPU編程、混合射線跟蹤、零驅(qū)動(dòng)開銷、傳感器融合以及針對(duì)使用OpenVX、OpenCV或OpenCL視覺處理的GPU計(jì)算,都納入到最積極的PPA(性能、功耗和面積)和全功能設(shè)計(jì)方案中。目標(biāo)市場覆蓋高端可穿戴設(shè)備和近距離/中距離移動(dòng)設(shè)備、4K電視以及用于服務(wù)器虛擬化的GPU。

          GC Nano系列則屬于另一范疇,適用于為具備GPU渲染的HMI/UI的可穿戴設(shè)備和IoT設(shè)備(智能家庭/家電、信息設(shè)備……)等消費(fèi)類產(chǎn)品帶來革命性推動(dòng)的器件。該內(nèi)核專為在CPU、內(nèi)存(片上和DDR)、電池及帶寬非常有限的資源受限型環(huán)境下工作而設(shè)計(jì)。GC Nano還進(jìn)行了優(yōu)化,與需要在30/60fps及以上速率下提供UI合成加速的較小尺寸的MCU平臺(tái)配合工作。GC Nano系列的優(yōu)勢(shì)包括:

          ·優(yōu)化的硅片面積和功率。硅片占位極小,可使受限SoC的單位面積性能達(dá)到最佳;這就意味著,廠商可在不超出硅片/功率預(yù)算且保證靈敏、平滑的UI性能的前提下,在其設(shè)計(jì)中添加增強(qiáng)圖像功能。GC Nano可在超低功耗和熱量(最小動(dòng)態(tài)功率和接近零的泄漏功率)下最大限度地延長電池壽命。

          ·智能合成。Vivante的即時(shí)模式渲染(IMR)架構(gòu)通過智能化的方式,僅合成和更新發(fā)生改變的屏幕區(qū)域,減少了合成帶寬、延遲、開銷及功率。合成可以通過兩種方式進(jìn)行:利用GC Nano合成所有屏幕層(圖形、背景、圖像、視頻、文本等);或通過緊耦合的設(shè)計(jì),其中GC Nano與顯示控制器/處理器(第三方或Vivante DC核)同時(shí)工作實(shí)現(xiàn)UI合成。想要進(jìn)一步減少帶寬,還可以通過Vivante的DEC壓縮IP核對(duì)數(shù)據(jù)進(jìn)行壓縮/解壓縮。

          ·可穿戴和IoT 設(shè)備即用。超輕量級(jí)向量圖形(GC Nano Lite ) 和OpenGLES 2.0(GC Nano、GC Nano Ultra)驅(qū)動(dòng)、SDK及工具可很容易地將可穿戴設(shè)備及物聯(lián)網(wǎng)設(shè)備屏幕過渡到消費(fèi)級(jí)圖形界面。GC Nano包還包括教程、示例代碼及其他文檔,以幫助開發(fā)人員優(yōu)化或移植其代碼。

          ·為MCU/MPU平臺(tái)設(shè)計(jì)??尚遁d并極大降低系統(tǒng)資源的有效設(shè)計(jì),包括完整UI/合成及顯示控制器集成、最小CPU開銷、無DDR且僅含閃存的配置、帶寬調(diào)制、CTM GPU驅(qū)動(dòng)以及針對(duì)可穿戴/IoT設(shè)備的、可減少硅片尺寸的GPU特性。軟件代碼量極小,減少了對(duì)內(nèi)存大小的限制,縮短了GPU初始化/啟動(dòng)時(shí)間,同時(shí)對(duì)于需要一鍵顯示信息的屏幕,可以瞬間啟動(dòng)UI合成。

          ·生態(tài)系統(tǒng)和軟件支持。開發(fā)人員可以利用輕量級(jí)NanoUI或OpenGL ES API進(jìn)一步擴(kuò)展或定制解決方案。業(yè)界對(duì)于現(xiàn)有Vivante產(chǎn)品提供的大量支持,包括覆蓋字體、插圖工具及Qt開發(fā)環(huán)境的重要合作伙伴的、針對(duì)Android、AndroidWear及嵌入式UI解決方案的GC Nano/GC Nano Ultra產(chǎn)品線。

          ·計(jì)算即用。未來幾年內(nèi),可穿戴/物聯(lián)網(wǎng)(處理)節(jié)點(diǎn)數(shù)量將以數(shù)百億個(gè)的速度增加,由于節(jié)點(diǎn)始終保持開啟、互聯(lián)和處理狀態(tài),數(shù)據(jù)網(wǎng)絡(luò)的帶寬可能成為問題。GC Nano通過在節(jié)點(diǎn)上進(jìn)行超低功率處理(GFLOP/GINT ops),且僅根據(jù)需求發(fā)送有用的壓縮數(shù)據(jù),可以有效緩解帶寬壓力。案例包括傳感器融合計(jì)算和圖像/視頻帶寬降低。

          Vivante的軟件驅(qū)動(dòng)棧、SDK以及工具包將支持NanoUI API,其可為無操作系統(tǒng)/無DDR 的GC Nano Lite提供CTM GPU加速,同時(shí)還可為更先進(jìn)的解決方案(包括專有或高級(jí)操作系統(tǒng),例如嵌入式Linux、Tizen、Android、AndroidWear 及其他在最小內(nèi)存空間中需要OpenGL ES 2.0+的RTOS)提供OpenGLES 2.0 API(3.x可選)。這些各種各樣的操作系統(tǒng)/無操作系統(tǒng)平臺(tái)將構(gòu)成下一代可穿戴設(shè)備和物聯(lián)網(wǎng)的基礎(chǔ),為每個(gè)人帶來獨(dú)特的最佳個(gè)性化體驗(yàn)。GC Nano驅(qū)動(dòng)包括主動(dòng)節(jié)能、智能合成與渲染以及帶寬調(diào)制,使OEM廠商和開發(fā)人員能夠使用超輕UI/合成或3D圖形驅(qū)動(dòng)為可穿戴設(shè)備和物聯(lián)網(wǎng)構(gòu)建豐富的視覺體驗(yàn)。

          GC Nano的很多創(chuàng)新創(chuàng)建了一個(gè)完整“視覺”可穿戴設(shè)備MCU/SoC平臺(tái)(圖1),能夠?qū)崿F(xiàn)PPA和軟件效率最優(yōu)化,從而改善設(shè)備的整體性能和BOM成本,同時(shí)提供最緊湊的UI圖形軟硬件開銷,不會(huì)降低或限制屏幕上的用戶體驗(yàn)。隨著可穿戴設(shè)備和物聯(lián)網(wǎng)逐步融入人們的生活,這些新的GPU將會(huì)越來越多地應(yīng)用到身邊的新奇產(chǎn)品中。

          3D UI渲染的趨勢(shì)和重要性

          下一代產(chǎn)品將采用智能手機(jī)、平板電腦及智能電視中精心策劃的UI設(shè)計(jì)元素,并將它們整合到物聯(lián)網(wǎng)設(shè)備及可穿戴設(shè)備中,使產(chǎn)品保持一致界面。相似的UI外觀(look -and-feel)可以減少使用學(xué)習(xí)曲線,加快設(shè)備采用速度。另外,由于不同設(shè)備的處理能力/性能水平不同,會(huì)依據(jù)較小尺寸屏幕采用最低水平配置(基準(zhǔn)性能),但是隨著設(shè)備性能上升到操作系統(tǒng)供應(yīng)商劃分的更高層級(jí),還可添加附加特性/更高性能。

          更新后的UI包括以下新特性:

          ·動(dòng)畫圖標(biāo)—為用戶輕松呈現(xiàn)選中的菜單項(xiàng)或輸入光標(biāo)指向的位置,使用戶無需花費(fèi)時(shí)間尋找屏幕上的光標(biāo)位置。在選中圖標(biāo)前,圖標(biāo)可以旋轉(zhuǎn)、擺動(dòng)、彈出、閃現(xiàn)等。

          ·實(shí)時(shí)動(dòng)畫—動(dòng)態(tài)內(nèi)容可以將簡單的背景(壁紙)轉(zhuǎn)化成動(dòng)態(tài)的移動(dòng)場景,為用戶設(shè)備增加個(gè)性修飾。背景圖像和設(shè)計(jì)也可搭配裝飾、照明、主題及氣氛等實(shí)現(xiàn)個(gè)性化設(shè)置。一些大型白色家電制造商正在測(cè)試這些概念設(shè)計(jì),希望不遠(yuǎn)的將來能夠展現(xiàn)一二。

          ·3D效果—文本、圖標(biāo)和圖像可超越簡單的陰影效果,其中,GPU功能可利用強(qiáng)大的著色器指令渲染,為UI各個(gè)部分增添3D特征(例如:轉(zhuǎn)盤、視差、深度模糊、部件/圖標(biāo)渲染成3D/2D形狀、圖標(biāo)運(yùn)動(dòng)的程序/模板動(dòng)畫、粒子系統(tǒng)的物理仿真、透視圖等)。這些效果可以利用GCNano的超低功率OpenGL ES 2.0/3.x流水線實(shí)現(xiàn)。

          GC Nano的架構(gòu)在HMI UI合成方面表現(xiàn)出色,可以呈現(xiàn)3D UI效果并降低帶寬和延遲,詳見下文。

          GC Nano帶寬計(jì)算

          本節(jié)將會(huì)逐步敘述多種場景示例,并對(duì)GC Nano GPU渲染的30和60fpsUI HMI計(jì)算系統(tǒng)帶寬。

          合成方法

          將評(píng)估的屏幕顯示合成有兩種選擇:第一,GPU完成所有層(或表面,包括視頻)的整個(gè)屏幕合成,顯示控制器僅將已合成的HMI U I輸出到屏幕上(圖3);第二,顯示控制器對(duì)GPU和視頻解碼器(VPU)合成的層進(jìn)行最后的混合和合并,再顯示出來(圖4)。頂層示意圖未顯示DDR內(nèi)存事務(wù),但將在后續(xù)UI步驟的描述中給出。

          UI帶寬計(jì)算

          計(jì)算假設(shè)。GC Nano UI處理采用ARGB8(每像素32位)格式。當(dāng)GC Nano進(jìn)行全合成時(shí),GPU會(huì)自動(dòng)將16位YUV視頻格式轉(zhuǎn)換成32位ARGB格式。

          視頻幀為YUV422(每像素16位)格式,并且與屏幕尺寸分辨率相同(GC Nano將輸入視頻作為視頻紋理對(duì)待)。最終合成的幀為ARGB8格式(每像素32位)。讀取視頻的請(qǐng)求突發(fā)長度為32字節(jié)。GC Nano UI請(qǐng)求突發(fā)長度為64位字節(jié)。寫出UI渲染和最終幀的寫長度為64字節(jié)。

          這些情況假設(shè)UI渲染為32位。如果顯示格式為16位(適用于較小屏幕),則以下所列的帶寬計(jì)算將會(huì)大大降低。帶寬計(jì)算將以WVGA(800x480)和720p(1280x720)為例。本例中,需要刷新/更新的每幀UI像素的大小包括以下比例:15%(標(biāo)準(zhǔn)UI);25%; 50%(最差UI)。

          ·GC Nano全UI合成。圖5 描述了來/去DDR內(nèi)存的數(shù)據(jù)流利用GC Nano進(jìn)行整個(gè)UI合成的過程。采用這種方法的好處包括:利用GPU在圖像或視頻上進(jìn)行一些前后處理、過濾、為圖像/視頻添加標(biāo)準(zhǔn)3D效果(視頻轉(zhuǎn)盤、彎曲/去彎曲等)以及增強(qiáng)實(shí)境(GC Nano在視頻流頂部覆蓋渲染的3D內(nèi)容)。由于可以對(duì)GC Nano編程使其執(zhí)行圖像/UI相關(guān)任務(wù),這種方法靈活度最高。

          本顯示控制器UI合成。本節(jié)描述了來/去DDR內(nèi)存的數(shù)據(jù)流利用顯示控制器對(duì)來自GC Nano和視頻處理器的各層進(jìn)行最終合并/合成的過程(圖6)。這種方法在一定程度上降低了帶寬消耗,這是因?yàn)镚PU不進(jìn)行最終幀合成,也就無需讀取視頻表面。GPU僅負(fù)責(zé)合成的UI部分,而不涉及來自SoC/MCU中其他IP模塊的任何附加層。這種方法的一個(gè)好處就是,可降低系統(tǒng)總帶寬,但會(huì)犧牲UI的靈活性。如果視頻(或圖像) 流僅需要與U I剩余部分合并,那么這個(gè)方法正好合適。如果輸入視頻(或圖像)流需要以任意方式處理。

          顯示控制器包含一個(gè)能夠直接從系統(tǒng)內(nèi)存中讀取數(shù)據(jù)的DMA引擎,其支持多種數(shù)據(jù)格式,包括ARGB、RGB、YUV444/422/420及其重排格式。

          GC Nano合成UI的架構(gòu)優(yōu)勢(shì)

          GPU渲染包括兩個(gè)主要架構(gòu),即瓦片紋理渲染(TBR)和直接渲染(IMR)。TBR在全幀所有相關(guān)信息都可用時(shí),將屏幕圖像分解成方塊并進(jìn)行渲染。在IMR下,圖形命令直接向GPU發(fā)布并立即執(zhí)行。Vivante架構(gòu)中的技術(shù)可以剔除幀中隱藏或不可見的部分,因而不會(huì)在渲染最終將被去除的場景部分上浪費(fèi)執(zhí)行、帶寬和功率等。Vivante的IMR在為最新AAA級(jí)游戲(利用全硬件加速呈現(xiàn)精細(xì)的幾何圖形和PC水平的圖形質(zhì)量)渲染逼真的3D圖像時(shí)也具有顯著優(yōu)勢(shì),例如其高端GC Vega內(nèi)核(DirectX 11.x、OpenGL ES 3.1及安卓擴(kuò)展包AEP)可支持高級(jí)GS/TS著色器等。注:GC/TS等一些高級(jí)特性不適用于GC Nano系列。

          UI瓦片紋理渲染(TBR)架構(gòu)

          下面說明在TBR架構(gòu)下渲染UI的過程。

          ·場景分解成塊。TBR架構(gòu)將圖像分解成獨(dú)立的瓦片(小方塊)進(jìn)行渲染。每個(gè)方塊都有自己的數(shù)據(jù)庫/命令列表(方塊列表),并且在GPU開始渲染和進(jìn)入下一幀之前,整個(gè)幀的所有命令都需處于可用狀態(tài)。數(shù)據(jù)庫/方塊列表緩沖區(qū)的大小在渲染(可能導(dǎo)致溢出)前也是未知的,并且依賴于幀—簡單幀數(shù)據(jù)庫較小,而復(fù)雜幀數(shù)據(jù)庫較大。任何方塊在處理過程中發(fā)生變化都意味著整個(gè)幀數(shù)據(jù)庫需要再次更新,而且在某些情況下,需要刷新全幀并重啟。

          但是在渲染幀之前,所有UI表面在處理前都需通過瓦片前處理。在UI 合成之前,TBR架構(gòu)需要每個(gè)UI表面都通過瓦片前處理。在本樣本圖中,12個(gè)表面中的每一個(gè)都被分割成三角形來進(jìn)行渲染—本例為兩個(gè)三角形,但三角形的數(shù)量也可以更多。由于每個(gè)幀都需要經(jīng)過預(yù)處理,這就極大地增加了合成的時(shí)延。

          將預(yù)處理步驟和分塊步驟相結(jié)合,可實(shí)現(xiàn)以下效果。圖8展現(xiàn)了當(dāng)前幀的情況,所有的UI表面都被分割為三角形,整個(gè)幀被分塊,并準(zhǔn)備好進(jìn)行渲染。如果幀不發(fā)生任何變化(靜態(tài)UI),則可按原樣渲染。

          如果UI為動(dòng)態(tài),則幀各部分需要進(jìn)行重處理。如果幀各部分為動(dòng)態(tài),則只有被標(biāo)注為“dirty”的方塊將根據(jù)變化進(jìn)行重處理。對(duì)于細(xì)小的變化,只要UI表面保持原樣,且只有一小塊區(qū)域在任何給定時(shí)間進(jìn)行更新,則可以接受。較新的UI為前景和背景表面增加了動(dòng)態(tài)特征—幀內(nèi)容、圖像、文本等很多部分不斷發(fā)生變化。例如,天氣圖標(biāo)(如雨和云)可能是動(dòng)態(tài)的,菜單項(xiàng)會(huì)自動(dòng)滾動(dòng),內(nèi)容會(huì)不斷更新,視頻在播放,背景墻紙也是動(dòng)態(tài)的。在各種情況下,所有的UI表面將需要經(jīng)過預(yù)處理,為渲染做準(zhǔn)備,而這就增加了時(shí)延。

          每個(gè)黃色板塊代表一個(gè)“dirty”方塊,需要進(jìn)行更新。每次表面發(fā)生變化時(shí),都需要經(jīng)過預(yù)處理,相應(yīng)的方塊也需要經(jīng)過預(yù)處理。如果在幀完成數(shù)據(jù)庫和命令列表時(shí)發(fā)生任何變化,則在TBR GPU移動(dòng)至下一個(gè)幀前,整個(gè)數(shù)據(jù)庫都需要進(jìn)行更新。

          TBR UI渲染總結(jié)

          從上述步驟可看出,由于預(yù)處理的UI三角形需要首先儲(chǔ)存在內(nèi)存中,然后在使用時(shí)會(huì)被讀取,基于TBR的GPU具有額外開銷,這就增加了UI渲染的時(shí)延。TBR GPU也需要大量的片上L2緩存來存儲(chǔ)整個(gè)幀(方塊)數(shù)據(jù)庫,但隨著UI復(fù)雜性增強(qiáng),片上L2緩存大小(裸片面積)只能同時(shí)增加,或TBR內(nèi)核只能不斷溢出至DDR內(nèi)存,這會(huì)導(dǎo)致時(shí)延、帶寬和功率增加。TBR具備確認(rèn)和追蹤U I的哪些部分(方塊)和哪些表面發(fā)生了變化的機(jī)制,可盡可能簡化預(yù)處理過程,但對(duì)于擁有很多移動(dòng)區(qū)域的較新UI來說,這仍構(gòu)成了限制。此外,隨著屏幕尺寸/分辨率和內(nèi)容復(fù)雜性的增加,在所有屏幕上,由此導(dǎo)致的時(shí)延在使用統(tǒng)一UI的谷歌、微軟和其他操作系統(tǒng)平臺(tái)上甚至顯得更為明顯。

          UI的直接渲染(IMR)架構(gòu)

          最先進(jìn)的GPU使用的是IMR技術(shù),它是基于目標(biāo)的渲染技術(shù),在PC(臺(tái)式機(jī)/筆記本)顯卡中直到Vivante的GC系列產(chǎn)品線上都能看到。IMR技術(shù)使GPU可以渲染逼真的圖像,并繪制屏幕上最新的復(fù)雜、動(dòng)態(tài)、交互式內(nèi)容。在該架構(gòu)中,圖形API調(diào)用命令被直接發(fā)送至GPU,收到命令和數(shù)據(jù)后即刻進(jìn)行對(duì)象渲染。這一流程顯著提升了3D渲染性能。

          對(duì)UI來說,無需進(jìn)行預(yù)通過處理,這消除了上一節(jié)中看到的TBR相關(guān)延遲。此外,UI中加入了許多智能事務(wù)消除機(jī)制,使得幀中的隱藏(看不到的)部分甚至不必通過GPU流水線發(fā)送;或是如果隱藏部分已經(jīng)處于發(fā)送狀態(tài)(例如,UI表面發(fā)生變化),它們也可以立即丟棄掉,這樣流水線即可繼續(xù)執(zhí)行有意義的工作。

          出于靈活性考慮,合成處理過程在著色器中進(jìn)行,Vivante GPU可以自動(dòng)增加矩形圖元,以便將整個(gè)屏幕納入考慮范圍,進(jìn)而實(shí)現(xiàn)100%的效率(使用兩個(gè)三角形僅發(fā)揮50%的效率)。對(duì)于簡單UI和3D幀而言,內(nèi)存帶寬等效于TBR架構(gòu),但對(duì)于更高級(jí)的UI和3D場景來說,TBR設(shè)計(jì)需接入遠(yuǎn)超過IMR的外存,因?yàn)門BR的片上緩存中無法容納大量的復(fù)雜場景數(shù)據(jù)。

          基于對(duì)象的IMR UI渲染。IMR GPU是基于對(duì)象的,即每個(gè)UI表面都被視為一個(gè)待渲染的個(gè)體對(duì)象。GPU收到與一個(gè)對(duì)象的命令列表后,它會(huì)立即執(zhí)行命令,并繪制出表面。與此同時(shí),GC Nano中也會(huì)添加一個(gè)新的圖元,使矩形圖元能夠被渲染,進(jìn)而實(shí)現(xiàn)100%的效率(使用兩個(gè)三角形繪制矩形僅有50%的效率)。

          附加UI內(nèi)容被視為新對(duì)象。新的UI表面(彈出式視窗、通知、新內(nèi)容、新窗口等)也僅被視為對(duì)象進(jìn)行處理。

          IMR GPU 是下一代動(dòng)態(tài)UI 的理想之選。GPU收到某一對(duì)象的命令列表后,就會(huì)立即對(duì)其進(jìn)行靜態(tài)或動(dòng)態(tài)渲染。同時(shí),GPU也會(huì)對(duì)各個(gè)對(duì)象進(jìn)行測(cè)試,利用各種剔除和深度/Z方法確定哪些是看得見的部分,并丟棄隱藏的部分。對(duì)象中看不見的部分會(huì)被立刻丟棄。那些最初看得見(位于GPU流水線中)但后來被隱藏(彈出通知覆蓋了一個(gè)表面)的部分會(huì)被立刻摒棄,這樣GPU就可以對(duì)另一個(gè)可視對(duì)象進(jìn)行渲染。與TBR不同的是,IMR在處理前不必等待整個(gè)幀命令列表。

          IMR UI渲染總結(jié)。對(duì)于動(dòng)態(tài)3D UI、復(fù)雜3D圖形和映射應(yīng)用等,IMR在延遲、帶寬和功率方面更具優(yōu)勢(shì)。內(nèi)存消耗與內(nèi)存I/O是IMR的另一明顯優(yōu)勢(shì)—對(duì)新型動(dòng)態(tài)實(shí)時(shí)3D UI來說,IMR實(shí)屬不二之選;對(duì)于標(biāo)準(zhǔn)UI來說,IMR和TBR勢(shì)均力敵,但I(xiàn)MR 可為SoC / MCU 賦予靈活性且更適用于未來。注:在過去,TBR更適用于簡單UI和簡單的3D游戲(矩形/多邊形數(shù)量少、復(fù)雜度低),因?yàn)門BR可以將完整的幀方塊數(shù)據(jù)庫保留在芯片(L2緩存)上。但隨著領(lǐng)先的智能手機(jī)、平板電腦和電視的發(fā)展,UI技術(shù)也在不斷進(jìn)步,這使得IMR技術(shù)越來越受歡迎。



          關(guān)鍵詞: 用戶界面 GCNano技術(shù)

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();