• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    高性能GPU模擬器驅(qū)動(dòng)設(shè)計(jì)研究①

    2020-06-09 05:09:02趙士彭張立志趙皓宇蘇孟豪
    高技術(shù)通訊 2020年5期
    關(guān)鍵詞:模擬器命令頂點(diǎn)

    趙士彭 張立志 趙皓宇 蘇孟豪* 劉 蘇*

    (*計(jì)算機(jī)體系結(jié)構(gòu)國(guó)家重點(diǎn)實(shí)驗(yàn)室(中國(guó)科學(xué)院計(jì)算技術(shù)研究所) 北京 100190)(**中國(guó)科學(xué)院計(jì)算技術(shù)研究所 北京 100190)(***中國(guó)科學(xué)院大學(xué) 北京 100049)(****中國(guó)科學(xué)技術(shù)大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 合肥 230026)(*****龍芯中科技術(shù)有限公司 北京 100190)

    0 引 言

    目前,圖形處理單元(graphics processing unit,GPU)已經(jīng)廣泛存在于個(gè)人電腦、移動(dòng)設(shè)備之中。GPU作為圖形加速器,在游戲、通用計(jì)算、圖像處理等領(lǐng)域都起到了十分顯著的作用。在現(xiàn)代個(gè)人計(jì)算機(jī)系統(tǒng)中,GPU已經(jīng)變得越來(lái)越不可或缺[1],且變得越來(lái)越復(fù)雜[2-4]。中央處理器(central processing unit,CPU)[5]不再獨(dú)立處理圖形工作,將需要處理的圖形工作轉(zhuǎn)交給GPU執(zhí)行,從而大幅提高系統(tǒng)的整體性能。GPU一般以插卡的方式,通過(guò)主板上的圖形加速接口(accelerated graphics port,AGP)或高速串行計(jì)算機(jī)擴(kuò)展總線標(biāo)準(zhǔn)(peripheral component interconnect express,PCIe)插槽與CPU進(jìn)行通信。GPU目前已經(jīng)逐漸面向通用,通用GPU(GPGPU)[6]已經(jīng)在通用計(jì)算、機(jī)器學(xué)習(xí)、人工智能等相關(guān)領(lǐng)域發(fā)揮不可替代的作用。當(dāng)前的GPU支持DirectX、OpenGL、OpenGL ES等應(yīng)用程序接口(application programming interface,API)。DirectX[7]用于Windows操作系統(tǒng),OpenGL[8]用于Linux操作系統(tǒng),OpenGL ES[9]用于安卓和IOS操作系統(tǒng)。這些API都需要GPU的驅(qū)動(dòng)進(jìn)行處理,轉(zhuǎn)換為GPU硬件可識(shí)別的狀態(tài)和命令等。隨著GPU越來(lái)越通用,當(dāng)前的GPU已經(jīng)擁有了統(tǒng)一的可編程著色器(shader),這使GPU已經(jīng)成為一種可編程處理器。統(tǒng)一的可編程shader使GPU的可編程性和靈活性大大提高,與此同時(shí),驅(qū)動(dòng)也自然承擔(dān)起GPU編譯器的任務(wù)[10,11]。GPU其他功能部件的可配置性也越來(lái)越高,這些都需要驅(qū)動(dòng)負(fù)責(zé)處理。作為CPU與GPU之間交互的橋梁,驅(qū)動(dòng)還負(fù)責(zé)GPU的任務(wù)管理調(diào)度等相關(guān)工作,這在GPU研發(fā)工作中必不可少。目前GPU的驅(qū)動(dòng)多為閉源驅(qū)動(dòng),各硬件廠商根據(jù)自身GPU硬件進(jìn)行設(shè)計(jì)。鑒于驅(qū)動(dòng)的代碼量巨大,難度很高,本文提出了一種基于Mesa開(kāi)源驅(qū)動(dòng)框架的驅(qū)動(dòng)設(shè)計(jì)方法,本方法可以借用Mesa開(kāi)源驅(qū)動(dòng),實(shí)現(xiàn)模擬器的驅(qū)動(dòng)設(shè)計(jì),大幅度減小開(kāi)發(fā)難度并減少代碼量。

    1 研究背景

    1.1 3D圖形流水線

    3D圖形流水線是根據(jù)OpenGL、DirectX等API給出的圖形渲染流程,它們指導(dǎo)了渲染的每一個(gè)步驟。流水線涉及GPU中的渲染算法,描述了從圖形API到點(diǎn),再到圖元,最后變?yōu)?D圖像輸出到幀緩沖區(qū)的整體過(guò)程。首先,從圖形API中獲得頂點(diǎn)數(shù)據(jù)流,之后,將這些數(shù)據(jù)轉(zhuǎn)換為相應(yīng)的圖元,并通過(guò)光柵化階段變?yōu)?D像素塊用做最終顯示。文獻(xiàn)[12-14]對(duì)GPU的結(jié)構(gòu)和流水線做了更為詳細(xì)的介紹。

    圖形流水線的渲染包括以下階段。

    頂點(diǎn)獲取頂點(diǎn)獲取階段是從圖形API中獲取包括頂點(diǎn)的位置、屬性以及紋理等相關(guān)信息,并將相關(guān)信息傳遞給后面的流水線。

    頂點(diǎn)著色器頂點(diǎn)著色器階段是將頂點(diǎn)的位置、屬性等信息通過(guò)矩陣運(yùn)算等方式轉(zhuǎn)換為對(duì)應(yīng)的屏幕坐標(biāo)和需要的屬性,并交給圖元組裝階段。

    圖元組裝圖元組裝將頂點(diǎn)著色器輸出的位置信息與圖元連接信息對(duì)應(yīng),將頂點(diǎn)組裝成對(duì)應(yīng)的圖元,例如點(diǎn)、線或三角形等。并將圖元交給光柵化階段。

    光柵化光柵化階段是將圖元變?yōu)楠?dú)立的像素點(diǎn),即將3D的圖元變?yōu)?D的像素塊,同時(shí)計(jì)算每個(gè)像素塊的插值系數(shù),并將這些信息發(fā)送給片段著色器。

    片段著色器片段著色器為每個(gè)像素針對(duì)插值系數(shù)進(jìn)行插值運(yùn)算,使每個(gè)像素塊都擁有自己的屬性等信息。

    輸出混合輸出混合階段是將每個(gè)像素塊進(jìn)行透明度、模板和深度等相干測(cè)試,剔除掉不需要顯示的像素塊。之后經(jīng)過(guò)混合后輸出到幀緩沖區(qū)進(jìn)行顯示。

    1.2 Mesa開(kāi)源驅(qū)動(dòng)架構(gòu)

    Mesa[15]是一款開(kāi)源的用戶級(jí)驅(qū)動(dòng),經(jīng)過(guò)多年的發(fā)展,已經(jīng)支持OpenGL、OpenGL ES、OpenCL[16]、Vulkan等多種API。在硬件驅(qū)動(dòng)方面,Intel、Nvidia、AMD等廠商的多款GPU已經(jīng)適配。如今,Mesa已經(jīng)成為L(zhǎng)inux操作系統(tǒng)中使用較為廣泛的用戶級(jí)顯卡驅(qū)動(dòng)之一。

    Mesa的主要任務(wù)是將API的數(shù)據(jù)及狀態(tài)處理為硬件驅(qū)動(dòng)需要的命令、狀態(tài)、指令等。當(dāng)前的Mesa為了方便驅(qū)動(dòng)開(kāi)發(fā)者對(duì)不同的設(shè)備進(jìn)行驅(qū)動(dòng)開(kāi)發(fā),在原驅(qū)動(dòng)架構(gòu)中抽象出了Gallium[17]架構(gòu)。Gallium架構(gòu)是在原Mesa驅(qū)動(dòng)中抽象出與硬件相關(guān)的部分?;贕allium架構(gòu),驅(qū)動(dòng)開(kāi)發(fā)者可無(wú)需重復(fù)開(kāi)發(fā)與硬件無(wú)關(guān)的代碼,大量減少了開(kāi)發(fā)驅(qū)動(dòng)的代碼量及開(kāi)發(fā)難度。

    目前,Mesa驅(qū)動(dòng)的架構(gòu)主要分為3大部分,即API層,硬件層和系統(tǒng)層。圖1是Mesa開(kāi)源驅(qū)動(dòng)架構(gòu)的結(jié)構(gòu)圖。API層是Mesa驅(qū)動(dòng)中負(fù)責(zé)處理API接口的位置,包含Mesa和state tracker兩部分,這兩部分的實(shí)現(xiàn)均與硬件無(wú)關(guān)。經(jīng)過(guò)API層后,API的數(shù)據(jù)和狀態(tài)會(huì)被轉(zhuǎn)換為硬件層中與硬件無(wú)關(guān)的接口。硬件層的主體是Gallium架構(gòu)。經(jīng)過(guò)了硬件層的處理,需要渲染的數(shù)據(jù)和狀態(tài)已經(jīng)轉(zhuǎn)換為硬件可識(shí)別的命令、狀態(tài)和指令等。這些數(shù)據(jù)會(huì)經(jīng)由系統(tǒng)層與內(nèi)核級(jí)驅(qū)動(dòng)(direct rendering manager,DRM)交互,將有關(guān)數(shù)據(jù)傳入CPU與GPU的共享內(nèi)存上。這樣,GPU就可以通過(guò)命令處理器(command processor,CP)獲取需要的數(shù)據(jù)。

    圖1 Mesa開(kāi)源驅(qū)動(dòng)架構(gòu)

    2 高性能GPU模擬器

    本文使用的高性能GPU模擬器主要由命令處理器(command processor,CP)、全局任務(wù)調(diào)度器(global task scheduler,GTS)、圖形處理集群(graphics processing cluster,GPC)、二級(jí)靜態(tài)緩存(L2 Scache)、內(nèi)存控制器(memory controller,MC)5部分組成。其中圖形處理集群又由計(jì)算處理引擎(compute engine,CE)、幾何處理引擎(geometry engine,GE)、圖元處理引擎(primitive engine,PE)、局部任務(wù)調(diào)度器(local task scheduler,LTS)、流處理器集群(stream processor cluster,SPC)、輸出合并單元(output merge unit,OMU)6部分組成。整體結(jié)構(gòu)如圖2所示。

    圖2 高性能GPU模擬器的頂層結(jié)構(gòu)

    本文使用的高性能GPU模擬器是一個(gè)由C++語(yǔ)言編寫(xiě)的GPU模擬器。其設(shè)計(jì)目的是對(duì)gsgpu結(jié)構(gòu)設(shè)計(jì)做功能驗(yàn)證與一定程度的性能分析,該結(jié)構(gòu)后續(xù)還將使用現(xiàn)場(chǎng)可編程門(mén)陣列(field progrmmable gate arry,F(xiàn)PGA)進(jìn)行更深一步功能驗(yàn)證,最終流片,所以在整個(gè)GPU設(shè)計(jì)計(jì)劃中,模擬器只是一個(gè)階段性產(chǎn)物,而不像ATTILA模擬器作為最終實(shí)驗(yàn)平臺(tái),所以簡(jiǎn)單高效地實(shí)現(xiàn)GPU模擬器是當(dāng)前計(jì)劃中很重要的標(biāo)準(zhǔn)。GPU模擬器整體軟件架構(gòu)由Module與Queue 2個(gè)數(shù)據(jù)結(jié)構(gòu)搭建。Module構(gòu)建每一個(gè)功能模塊,類似于Verilog語(yǔ)言中module模塊。Queue構(gòu)建各個(gè)module間通訊模塊,同時(shí)實(shí)現(xiàn)各module的解耦合,Queue本質(zhì)是一個(gè)每周期一寫(xiě)一讀的循環(huán)隊(duì)列。

    3 高性能GPU模擬器驅(qū)動(dòng)

    3.1 模擬器驅(qū)動(dòng)架構(gòu)

    高性能GPU模擬器的驅(qū)動(dòng)需要為模擬器提供數(shù)據(jù)、命令、狀態(tài)以及shader需要的指令等信息。這些信息是驅(qū)動(dòng)從API中獲得并通過(guò)處理后得到的。驅(qū)動(dòng)的設(shè)計(jì)共分為3個(gè)階段。首先,API經(jīng)過(guò)Mesa的API層轉(zhuǎn)化為Gallium架構(gòu)下與硬件無(wú)關(guān)的狀態(tài),同時(shí)將OpenGL著色器語(yǔ)言(OpenGL shading language,GLSL)轉(zhuǎn)化為T(mén)GSI(Tungsten graphics shader infrastructure)[18]中間語(yǔ)言;然后,硬件層將硬件無(wú)關(guān)狀態(tài)轉(zhuǎn)化為與硬件相關(guān)的狀態(tài),同時(shí)產(chǎn)生硬件執(zhí)行所需的命令等信息,并將TGSI中間語(yǔ)言轉(zhuǎn)化為GPU模擬器的匯編;最后,將每一幀的信息處理為硬件需要的可讀的接口信息,同時(shí)將信息傳入模擬器的顯存中等待執(zhí)行渲染。

    驅(qū)動(dòng)設(shè)計(jì)中,Mesa的硬件層是設(shè)計(jì)的重點(diǎn)部分,硬件層的設(shè)計(jì)也同時(shí)指導(dǎo)了模擬器接口的設(shè)計(jì),對(duì)模擬器的設(shè)計(jì)起到了指導(dǎo)作用。Mesa的API層是與硬件無(wú)關(guān)的部分,是可重用的部分,所以在設(shè)計(jì)中采用了API層的結(jié)構(gòu)。Mesa驅(qū)動(dòng)的系統(tǒng)層中與DRM交互的部分,在GPU模擬器中也無(wú)需實(shí)現(xiàn),所以沒(méi)有采用。

    3.2 硬件驅(qū)動(dòng)設(shè)計(jì)

    硬件驅(qū)動(dòng)的設(shè)計(jì)主要是在Mesa驅(qū)動(dòng)的Gallium架構(gòu)下實(shí)現(xiàn)的。在Mesa的API層中,API的數(shù)據(jù)及狀態(tài)已經(jīng)轉(zhuǎn)換成了Gallium架構(gòu)中與硬件無(wú)關(guān)的接口。在硬件驅(qū)動(dòng)的設(shè)計(jì)中,需要考慮繪制進(jìn)入接口、狀態(tài)對(duì)象接口、緩存及中斷接口和刷新接口等。

    首先,驅(qū)動(dòng)為GPU模擬器中的命令處理器準(zhǔn)備命令隊(duì)列,命令隊(duì)列是用于控制GPU模擬器執(zhí)行整體渲染的一組命令。驅(qū)動(dòng)為GPU模擬器準(zhǔn)備的命令隊(duì)列設(shè)計(jì)為draw、sync、dump和halt 4個(gè)主要命令。

    Draw命令是一條渲染命令,也是整個(gè)渲染的核心命令。當(dāng)執(zhí)行draw命令時(shí),GPU模擬器會(huì)調(diào)用已經(jīng)準(zhǔn)備在顯存中的draw_info、pipe_state和shader_state等一些必要的狀態(tài)。命令處理器準(zhǔn)備好各狀態(tài)后,會(huì)將頂點(diǎn)、流水線狀態(tài)等信息通過(guò)全局任務(wù)調(diào)度器逐個(gè)發(fā)給幾何計(jì)算引擎。幾何計(jì)算引擎執(zhí)行頂點(diǎn)子塊處理任務(wù)后,LTS 做SPC資源管理,查找合適的SPC,并把線程組任務(wù)發(fā)過(guò)去。然后,SPC執(zhí)行頂點(diǎn)著色器(vertex shader,VS) 程序,GE 跟蹤VS 的位置輸出,按原始頂點(diǎn)順序?qū)?yīng)的微塊順序,讀出頂點(diǎn)位置數(shù)據(jù),并進(jìn)行廣播。之后,PE對(duì)圖元進(jìn)行光柵化,LTS 根據(jù)資源情況,查找合適的SPC,把線程組任務(wù)發(fā)送過(guò)去,SPC執(zhí)行片段著色器(fragment shader,F(xiàn)S) 程序。最后,PE將排完序的片段結(jié)果送到OMU,OMU進(jìn)行后處理。

    Sync命令是一條同步命令,用于同步GPU模擬器中的各個(gè)模塊。在整條流水線中,各模塊之間會(huì)依次傳遞一個(gè)last狀態(tài)。當(dāng)模塊收到last狀態(tài),則說(shuō)明本次draw_call渲染已經(jīng)結(jié)束,模塊會(huì)向命令處理器返回已經(jīng)處理結(jié)束的信號(hào)。當(dāng)執(zhí)行sync命令時(shí),命令處理器會(huì)進(jìn)入等待狀態(tài),不會(huì)繼續(xù)執(zhí)行命令隊(duì)列中的其他命令。只有當(dāng)收到所有模塊處理結(jié)束的信號(hào)后,才繼續(xù)執(zhí)行命令隊(duì)列中的其他命令。

    Dump命令是一條顯示命令,用于將已經(jīng)渲染完成的draw_call顯示出來(lái)。當(dāng)命令處理器執(zhí)行dump命令時(shí),命令處理器會(huì)調(diào)用顯存控制器,將顯存中幀緩沖區(qū)渲染好的像素顯示到屏幕上。

    Halt命令是停機(jī)命令,用于停止GPU模擬器的所有工作。當(dāng)命令處理器執(zhí)行halt命令時(shí),整個(gè)GPU模擬器將停止所有模塊的執(zhí)行,GPU模擬器進(jìn)入停機(jī)狀態(tài)。

    其次,為了使幾何計(jì)算引擎和頂點(diǎn)著色器準(zhǔn)確獲取頂點(diǎn)和屬性信息,驅(qū)動(dòng)需要配置與頂點(diǎn)和屬性相關(guān)的狀態(tài)。Draw_info是驅(qū)動(dòng)配置的一次draw_call的相關(guān)信息,包括:起始頂點(diǎn)start,用于索引提前準(zhǔn)備在顯存頂點(diǎn)區(qū)域的第一個(gè)頂點(diǎn)位置;本次draw_call的頂點(diǎn)數(shù)量count,用于索引顯存中頂點(diǎn)區(qū)域用于本次渲染的頂點(diǎn)。每個(gè)圖元的頂點(diǎn)數(shù),用于圖元處理引擎進(jìn)行圖元組裝;index_buffer用于頂點(diǎn)使用索引緩沖的情況下進(jìn)行頂點(diǎn)在顯存中位置的描述。

    為了增強(qiáng)GPU模擬器固定管線的可配置性,驅(qū)動(dòng)需要配置相應(yīng)狀態(tài)給對(duì)應(yīng)的固定管線模塊。這些配置信息就是API層傳下來(lái)與硬件無(wú)關(guān)的狀態(tài)。這些狀態(tài)的接口是Gallium架構(gòu)中的pipe層。在高性能圖形GPU中,有2個(gè)主要的固定管線,一個(gè)是圖元處理引擎,用于圖元的組裝以及光柵化;另一個(gè)是輸出合并單元,用于像素的測(cè)試和混合。本設(shè)計(jì)將pipe層的狀態(tài)處理為供圖元處理引擎使用的光柵化及裁剪等狀態(tài),以及供輸出合并單元使用的深度測(cè)試狀態(tài)、模板測(cè)試狀態(tài)和混合狀態(tài)。這些狀態(tài)被轉(zhuǎn)換成32位的二進(jìn)制,傳入GPU模擬器的顯存中。

    Rasterizer_state是用于PE使用的狀態(tài),包含了光柵化所需要的點(diǎn)大小、線寬、多重采樣等所有配置信息。viewport_state和clip_state也是用于PE使用的狀態(tài),告知PE視口的大小以及裁剪的大小,以便光柵化使用。Alpha_state、depth_state和stencil_state是OMU使用的狀態(tài),分別用于OMU的透明度測(cè)試、深度測(cè)試和模板測(cè)試。驅(qū)動(dòng)將對(duì)應(yīng)的測(cè)試算法告知OMU,由OMU調(diào)用深度和模板的緩沖完成所有測(cè)試,3種測(cè)試分別有7種不同的測(cè)試算法可以配置。Blend_state也是OMU使用的狀態(tài),驅(qū)動(dòng)將混合算法告知OMU后,OMU調(diào)用渲染目標(biāo)(render target)進(jìn)行混合后,將結(jié)果寫(xiě)入幀緩沖區(qū)(framebuffer)等待最后的顯示,其中,混合共有19種不同算法。

    為了進(jìn)一步提高GPU模擬器的可編程性,GPU模擬器采用了統(tǒng)一的可編程shader。這就需要驅(qū)動(dòng)為可編程的shader準(zhǔn)備相應(yīng)的狀態(tài)以及所需寄存器個(gè)數(shù)等信息。本設(shè)計(jì)中,shader_state對(duì)標(biāo)量通用寄存器和向量通用寄存器的數(shù)量等信息進(jìn)行了描述。這些信息由驅(qū)動(dòng)根據(jù)shader執(zhí)行的匯編程序及其狀態(tài)產(chǎn)生。

    3.3 編譯器設(shè)計(jì)

    隨著GPU的可編程性越來(lái)越高,驅(qū)動(dòng)中對(duì)于GPU編譯器的設(shè)計(jì)也越來(lái)越重要。在Mesa驅(qū)動(dòng)架構(gòu)中,Mesa提供了GPU編譯器的前端代碼。通過(guò)Mesa驅(qū)動(dòng)中的編譯器前端,可以將GLSL等編程語(yǔ)言翻譯為一種叫TGSI的中間語(yǔ)言。TGSI語(yǔ)言是Mesa為所有的GPU提供的唯一中間語(yǔ)言。本設(shè)計(jì)主要針對(duì)TGSI的中間語(yǔ)言進(jìn)行進(jìn)一步的編譯器后端設(shè)計(jì)。表1中是一個(gè)彩色正方形程序,通過(guò)Mesa的API層編譯成的TGSI中間語(yǔ)言。表中,VERT代表當(dāng)前是頂點(diǎn)著色器對(duì)應(yīng)的程序,PROPERTY NEXT_SHADER FRAG代表對(duì)應(yīng)的下一個(gè)shader程序是片段著色器程序。DCL聲明了有2個(gè)輸入,IN0是頂點(diǎn)位置信息,IN1是頂點(diǎn)屬性信息。同時(shí)還聲明了2個(gè)輸出OUT0、OUT1,一個(gè)常量緩存CONST0和一個(gè)臨時(shí)緩存TEMP0。之后進(jìn)行4×4的矩陣乘法,MUL表示乘法運(yùn)算,MAD表示乘加運(yùn)算,之后將結(jié)果輸出到OUT0。IN1直接輸出給OUT1?;贛esa框架,模擬器驅(qū)動(dòng)將TGSI中間語(yǔ)言根據(jù)語(yǔ)法語(yǔ)義進(jìn)一步編譯為GPU模擬器的匯編代碼。

    表1 正方形在Mesa中翻譯為T(mén)GSI中間語(yǔ)言

    表2是將TGSI中間語(yǔ)言的4×4矩陣乘法部分轉(zhuǎn)換為GPU模擬器匯編后的代碼部分。這部分是將原TGSI的MUL和MAD構(gòu)成的矩陣乘法變?yōu)镚PU模擬器的匯編語(yǔ)言,可編程的shader將執(zhí)行這段匯編程序完成矩陣的乘法運(yùn)算。其中MUL是進(jìn)行乘法運(yùn)算,MAD是進(jìn)行乘加運(yùn)算。S代表標(biāo)量通用寄存器,是從常量緩存CONST0取出的數(shù)據(jù),是驅(qū)動(dòng)準(zhǔn)備好的4×4矩陣。V代表向量通用寄存器,是頂點(diǎn)的位置信息,由輸出傳入。

    表2 4X4的矩陣乘法翻譯后的GPU匯編

    3.4 模擬器的驅(qū)動(dòng)接口設(shè)計(jì)

    當(dāng)所有數(shù)據(jù)、狀態(tài)、命令和shader指令準(zhǔn)備好之后,都將傳入到顯存之中,以便GPU模擬器根據(jù)命令隊(duì)列進(jìn)行執(zhí)行。根據(jù)前述的驅(qū)動(dòng)設(shè)計(jì),本文提出了高性能GPU模擬器的接口設(shè)計(jì),用于指導(dǎo)模擬器的結(jié)構(gòu)設(shè)計(jì)。該接口可將每一幀中驅(qū)動(dòng)寫(xiě)入GPU模擬器的所有信息變?yōu)榭勺x信息,更加方便了后續(xù)的調(diào)試。同時(shí)該接口還可對(duì)驅(qū)動(dòng)傳入GPU模擬器的信息進(jìn)行修改,也可提高調(diào)試模擬器的靈活性,更加方便地找出問(wèn)題所在。

    該接口將所有信息分為命令、繪制和數(shù)據(jù)3大部分。命令部分反映GPU的命令處理器中命令隊(duì)列,是GPU流水線的執(zhí)行狀態(tài)。繪制部分包括draw_info、pipe_state和shader_state 3部分。draw_info反映的是模擬器中GE的執(zhí)行狀態(tài),pipe_state反映的是PE和OMU的執(zhí)行狀態(tài),shader_state反映的是模擬器中SPC的執(zhí)行狀態(tài)。數(shù)據(jù)部分則包括了頂點(diǎn)數(shù)據(jù)、紋理數(shù)據(jù)和shader指令等。Shader的指令在顯存中是二進(jìn)制的形式存在,本接口還將指令進(jìn)行了反匯編,更加增強(qiáng)了調(diào)試者的可讀性。

    通過(guò)這些可讀的信息,在調(diào)試模擬器的過(guò)程中可以更加方便地知道流水線中各級(jí)的執(zhí)行狀態(tài)。這些信息以draw_call為單位,每次可顯示一幀的數(shù)據(jù)。同時(shí),通過(guò)修改這些接口信息,也可以直接改變模擬器的執(zhí)行狀態(tài),更加方便調(diào)試人員調(diào)試模擬器。

    4 實(shí) 驗(yàn)

    本實(shí)驗(yàn)使用的操作系統(tǒng)為Fedora 28.X86_64,采用的CPU為Intel Core i7 3770,主頻3.4 GHz。GPU實(shí)驗(yàn)平臺(tái)采用一種高性能GPU模擬器,Mesa版本為18.0.5,可支持圖形API的OpenGL ES 3.0版本。

    實(shí)驗(yàn)所用基準(zhǔn)測(cè)試集為GL_mark。在Linux操作系統(tǒng)上,GPU的圖形基準(zhǔn)測(cè)試集并不多。GL_mark是由Linaro發(fā)行的一款圖形基準(zhǔn)測(cè)試集,使用OpenGL-ES進(jìn)行開(kāi)發(fā),提供了一系列豐富的圖形測(cè)試,涉及圖形單元性能的各個(gè)方面,涵蓋光照、陰影、超多圖元、簡(jiǎn)單2D等多種類型的測(cè)試,是目前Linux操作系統(tǒng)上較為全面的測(cè)試集之一。

    圖3是實(shí)驗(yàn)的測(cè)試步驟,Mesa開(kāi)源驅(qū)動(dòng)將GL_mark基準(zhǔn)測(cè)試集所使用的OpenGL-ES的API轉(zhuǎn)化為相應(yīng)的中間狀態(tài),同時(shí)將GLSL的shader編程語(yǔ)言轉(zhuǎn)換為T(mén)GSI中間語(yǔ)言。GPU驅(qū)動(dòng)將中間狀態(tài)及中間語(yǔ)言轉(zhuǎn)化為GPU模擬器的接口信息和底層匯編語(yǔ)言傳遞給GPU模擬器驅(qū)動(dòng)。經(jīng)過(guò)GPU模擬器的一系列處理,最終以幀的形式顯示出來(lái)。

    圖3 GPU驅(qū)動(dòng)驗(yàn)證的實(shí)驗(yàn)過(guò)程

    本文在GL_mark中選擇的基準(zhǔn)測(cè)試描述如表3所示,從GL_mark基準(zhǔn)測(cè)試集中選擇了4個(gè)陰影測(cè)試,分別用于測(cè)試2D顯示、反射及陰影測(cè)試、折射測(cè)試以及復(fù)雜shader測(cè)試。Draw_call數(shù)量包括清除深度緩存和模板緩存、多重采樣等操作。圖4所示是2D顯示測(cè)試的效果圖。2D顯示時(shí),頂點(diǎn)數(shù)為4個(gè),即正方形的4個(gè)頂點(diǎn)。圖中圖案是使用紋理貼圖實(shí)現(xiàn)的。通過(guò)該測(cè)試表明GPU模擬器可以利用3D圖形驅(qū)動(dòng)配合3D圖形模擬器完成2D的顯示。圖5所示是反射及陰影繪制的測(cè)試,通過(guò)該測(cè)試表明GPU模擬器驅(qū)動(dòng)可準(zhǔn)確完成反射及陰影的繪制。圖6所示是折射繪制的測(cè)試,通過(guò)該測(cè)試表明GPU模擬器驅(qū)動(dòng)可準(zhǔn)確完成折射的繪制。圖7所示是復(fù)雜shader的測(cè)試,通過(guò)該測(cè)試表明,利用GPU模擬器驅(qū)動(dòng)中的編譯器可以正確繪制復(fù)雜的shader。測(cè)試中,2D圖形繪制頂點(diǎn)及圖元數(shù)目較少,每幀雖需3次drawcall,但包含了clear等操作,實(shí)際繪制1次drawcall即可完成,具有很好的圖形繪制加速效果。其余測(cè)試用例頂點(diǎn)及圖元數(shù)目較多,每幀drawcall數(shù)量也相對(duì)較多,說(shuō)明本驅(qū)動(dòng)配合GPU模擬器可準(zhǔn)確無(wú)誤地完成復(fù)雜圖形繪制。

    表3 選取的基準(zhǔn)測(cè)試集

    圖4 Effect 2D GPU模擬器效果圖

    圖5 Shadow GPU模擬器效果圖

    圖6 Refract GPU模擬器效果圖

    圖7 Jellyfish GPU模擬器效果圖

    5 結(jié) 論

    GPU驅(qū)動(dòng)是GPU與CPU之間交互的橋梁,在GPU開(kāi)發(fā)中起到了不可忽視的作用。本文在Mesa開(kāi)源驅(qū)動(dòng)的框架下進(jìn)行GPU的驅(qū)動(dòng)開(kāi)發(fā)工作,可以大幅減少GPU驅(qū)動(dòng)的開(kāi)發(fā)時(shí)間和開(kāi)發(fā)難度。同時(shí),為了提高GPU模擬器的可編程性,在Mesa驅(qū)動(dòng)中集成了編譯器的設(shè)計(jì),可將Mesa中的通用中間語(yǔ)言TGSI編譯為GPU模擬器的匯編語(yǔ)言。本驅(qū)動(dòng)還適配OpenGL等多款A(yù)PI以及GLSL等shader編程語(yǔ)言。并且,根據(jù)Mesa開(kāi)源驅(qū)動(dòng)驅(qū)動(dòng),設(shè)計(jì)出一套完整的可讀GPU模擬器接口,方便調(diào)試人員進(jìn)行驅(qū)動(dòng)及GPU結(jié)構(gòu)的調(diào)試工作。通過(guò)設(shè)計(jì)GPU的驅(qū)動(dòng)和模擬器的接口,對(duì)高性能GPU模擬器的結(jié)構(gòu)設(shè)計(jì)起到了指導(dǎo)作用。在GPU模擬器中設(shè)計(jì)的各個(gè)模塊均參考該套接口,在本接口的基礎(chǔ)上進(jìn)行結(jié)構(gòu)設(shè)計(jì)。本設(shè)計(jì)已經(jīng)和GPU模擬器進(jìn)行了OpenGL等API的驗(yàn)證,在GL_mark的驗(yàn)證測(cè)試中,可以正常完整地繪制出GL_mark測(cè)試集的每一幀圖像。本接口設(shè)計(jì)后續(xù)可繼續(xù)用于高性能GPU的結(jié)構(gòu)設(shè)計(jì)中,驅(qū)動(dòng)設(shè)計(jì)后續(xù)還可繼續(xù)用于GPU的用戶態(tài)驅(qū)動(dòng)中,通過(guò)實(shí)現(xiàn)內(nèi)核態(tài)驅(qū)動(dòng)DRM,并編寫(xiě)libDRM接口與本設(shè)計(jì)進(jìn)行對(duì)接,便可實(shí)現(xiàn)高性能GPU的一整套完整驅(qū)動(dòng)。

    猜你喜歡
    模擬器命令頂點(diǎn)
    只聽(tīng)主人的命令
    過(guò)非等腰銳角三角形頂點(diǎn)和垂心的圓的性質(zhì)及應(yīng)用(下)
    了不起的安檢模擬器
    盲盒模擬器
    劃船模擬器
    關(guān)于頂點(diǎn)染色的一個(gè)猜想
    移防命令下達(dá)后
    這是人民的命令
    動(dòng)態(tài)飛行模擬器及其發(fā)展概述
    藍(lán)色命令
    国产永久视频网站| 在线观看免费日韩欧美大片| 永久免费av网站大全| av网站免费在线观看视频| 纵有疾风起免费观看全集完整版| 亚洲欧美一区二区三区黑人 | 国产xxxxx性猛交| 免费黄网站久久成人精品| 久久久久久人妻| 女人被躁到高潮嗷嗷叫费观| 少妇人妻精品综合一区二区| 免费黄色在线免费观看| 热re99久久精品国产66热6| 国产精品一二三区在线看| 啦啦啦啦在线视频资源| 亚洲av综合色区一区| 久久久久久久大尺度免费视频| 久久久久久久国产电影| 国产亚洲精品第一综合不卡 | 亚洲av成人精品一二三区| 精品国产一区二区久久| 一级毛片 在线播放| 少妇的丰满在线观看| 亚洲精品乱久久久久久| 大片电影免费在线观看免费| 国产亚洲最大av| 国产视频首页在线观看| 人人妻人人添人人爽欧美一区卜| 久久97久久精品| 一区二区三区乱码不卡18| 热99国产精品久久久久久7| 曰老女人黄片| 亚洲五月色婷婷综合| 欧美成人精品欧美一级黄| 男人舔女人的私密视频| 伊人久久国产一区二区| tube8黄色片| 午夜视频国产福利| 99国产精品免费福利视频| 久久久久久久久久久免费av| 国产高清不卡午夜福利| 永久网站在线| 视频在线观看一区二区三区| 欧美日韩视频精品一区| 日本wwww免费看| 国产一区亚洲一区在线观看| 有码 亚洲区| 黄色怎么调成土黄色| 啦啦啦中文免费视频观看日本| 毛片一级片免费看久久久久| 最后的刺客免费高清国语| 国产在视频线精品| 久久久久国产精品人妻一区二区| 热re99久久精品国产66热6| 久久久久久人妻| 欧美97在线视频| 欧美日本中文国产一区发布| 色5月婷婷丁香| 国产成人精品福利久久| 九九在线视频观看精品| 天堂中文最新版在线下载| 1024视频免费在线观看| 国产熟女午夜一区二区三区| 女人精品久久久久毛片| 国产精品免费大片| 免费大片18禁| 嫩草影院入口| 99久国产av精品国产电影| 性色av一级| 纯流量卡能插随身wifi吗| av在线app专区| 国产淫语在线视频| 97超碰精品成人国产| 欧美激情极品国产一区二区三区 | 综合色丁香网| 人妻人人澡人人爽人人| 51国产日韩欧美| 欧美成人精品欧美一级黄| 男女午夜视频在线观看 | 爱豆传媒免费全集在线观看| 一级毛片电影观看| 久久青草综合色| 国产亚洲精品久久久com| 亚洲五月色婷婷综合| 内地一区二区视频在线| 巨乳人妻的诱惑在线观看| 国产成人一区二区在线| 免费av不卡在线播放| 天天操日日干夜夜撸| 两性夫妻黄色片 | 又黄又粗又硬又大视频| 欧美精品亚洲一区二区| 久久久久久人人人人人| 久久久久久久亚洲中文字幕| 久久毛片免费看一区二区三区| 久久久久精品人妻al黑| 肉色欧美久久久久久久蜜桃| 免费高清在线观看视频在线观看| 亚洲av成人精品一二三区| 2018国产大陆天天弄谢| 免费观看性生交大片5| 久久国内精品自在自线图片| 麻豆精品久久久久久蜜桃| 乱人伦中国视频| 日韩在线高清观看一区二区三区| 国产成人精品在线电影| 久久免费观看电影| 精品国产一区二区久久| 国产亚洲午夜精品一区二区久久| 亚洲欧美日韩卡通动漫| 国产片特级美女逼逼视频| 999精品在线视频| 欧美精品高潮呻吟av久久| 中国美白少妇内射xxxbb| 精品国产一区二区三区久久久樱花| 国产精品 国内视频| 日本与韩国留学比较| 18禁裸乳无遮挡动漫免费视频| 9色porny在线观看| 99久久精品国产国产毛片| 久久久精品区二区三区| 在线观看一区二区三区激情| 伦精品一区二区三区| 免费观看在线日韩| 一区二区三区精品91| 99久久中文字幕三级久久日本| 久久人人爽av亚洲精品天堂| 亚洲av免费高清在线观看| 飞空精品影院首页| 日韩电影二区| 亚洲中文av在线| 男女边摸边吃奶| 亚洲国产精品专区欧美| 久久午夜综合久久蜜桃| 高清欧美精品videossex| 丝袜在线中文字幕| 成年动漫av网址| 90打野战视频偷拍视频| 午夜日本视频在线| 精品一区二区免费观看| 成人影院久久| av电影中文网址| 丝袜在线中文字幕| 久久精品aⅴ一区二区三区四区 | 欧美精品高潮呻吟av久久| 亚洲精品美女久久av网站| 边亲边吃奶的免费视频| 免费播放大片免费观看视频在线观看| 久久久精品94久久精品| 美国免费a级毛片| 欧美成人精品欧美一级黄| 精品人妻在线不人妻| 亚洲av电影在线进入| 日本av免费视频播放| 午夜久久久在线观看| 大片免费播放器 马上看| 欧美亚洲日本最大视频资源| 午夜免费观看性视频| 国产高清不卡午夜福利| 街头女战士在线观看网站| 大码成人一级视频| 卡戴珊不雅视频在线播放| 亚洲精品成人av观看孕妇| 十八禁高潮呻吟视频| 在线精品无人区一区二区三| 精品人妻偷拍中文字幕| 精品一区二区免费观看| av国产精品久久久久影院| 日韩欧美精品免费久久| 人妻系列 视频| 巨乳人妻的诱惑在线观看| videosex国产| 日本与韩国留学比较| 国产成人精品婷婷| 精品卡一卡二卡四卡免费| 久久99热6这里只有精品| 久久国产精品男人的天堂亚洲 | 天美传媒精品一区二区| 欧美精品亚洲一区二区| 大香蕉97超碰在线| 一级黄片播放器| 亚洲国产毛片av蜜桃av| 国产白丝娇喘喷水9色精品| 久久99蜜桃精品久久| 男女边吃奶边做爰视频| 婷婷色综合www| 中文字幕亚洲精品专区| 久久久欧美国产精品| 寂寞人妻少妇视频99o| 日韩中字成人| 777米奇影视久久| 国产成人a∨麻豆精品| 我要看黄色一级片免费的| 内地一区二区视频在线| 欧美+日韩+精品| 日韩av在线免费看完整版不卡| 国产欧美另类精品又又久久亚洲欧美| 王馨瑶露胸无遮挡在线观看| 国产精品久久久久久久久免| 少妇的逼水好多| 日本黄大片高清| 日日撸夜夜添| 好男人视频免费观看在线| 三上悠亚av全集在线观看| 熟女av电影| 日韩av在线免费看完整版不卡| 国产成人精品婷婷| 亚洲精品国产av成人精品| 熟妇人妻不卡中文字幕| 亚洲精品美女久久久久99蜜臀 | 1024视频免费在线观看| 大码成人一级视频| 欧美日韩国产mv在线观看视频| 精品99又大又爽又粗少妇毛片| 亚洲在久久综合| 一区二区三区精品91| 国国产精品蜜臀av免费| 我要看黄色一级片免费的| 乱码一卡2卡4卡精品| 国产白丝娇喘喷水9色精品| 日本av免费视频播放| 成人影院久久| 久久人人爽人人片av| 考比视频在线观看| 午夜福利网站1000一区二区三区| 99热网站在线观看| av卡一久久| 午夜精品国产一区二区电影| 欧美激情国产日韩精品一区| 丝袜人妻中文字幕| 国产视频首页在线观看| 最近的中文字幕免费完整| 精品一品国产午夜福利视频| 中文字幕另类日韩欧美亚洲嫩草| www.色视频.com| 在线观看免费高清a一片| 国产精品蜜桃在线观看| 不卡视频在线观看欧美| 最黄视频免费看| 最近中文字幕高清免费大全6| 另类精品久久| 在线天堂中文资源库| 午夜av观看不卡| 观看美女的网站| 亚洲av综合色区一区| 欧美人与善性xxx| 欧美精品一区二区免费开放| 天堂8中文在线网| 丝袜在线中文字幕| 九草在线视频观看| av福利片在线| 免费观看性生交大片5| 免费黄网站久久成人精品| 日韩熟女老妇一区二区性免费视频| 日本午夜av视频| 国产成人免费无遮挡视频| 国产亚洲精品第一综合不卡 | 欧美少妇被猛烈插入视频| 水蜜桃什么品种好| 精品人妻在线不人妻| 亚洲精品视频女| 亚洲欧洲精品一区二区精品久久久 | 王馨瑶露胸无遮挡在线观看| 高清毛片免费看| 国产精品一区二区在线观看99| 国产在线免费精品| 91aial.com中文字幕在线观看| 免费大片18禁| 亚洲国产欧美日韩在线播放| 日韩,欧美,国产一区二区三区| 免费在线观看黄色视频的| 中文字幕av电影在线播放| 自线自在国产av| 熟女电影av网| 国产精品三级大全| 亚洲精品成人av观看孕妇| 久久亚洲国产成人精品v| 亚洲色图 男人天堂 中文字幕 | 女人被躁到高潮嗷嗷叫费观| 欧美激情极品国产一区二区三区 | 纯流量卡能插随身wifi吗| 五月开心婷婷网| 色婷婷av一区二区三区视频| 亚洲欧美清纯卡通| 精品国产一区二区三区四区第35| 中文天堂在线官网| 伦理电影免费视频| a级毛色黄片| 精品少妇黑人巨大在线播放| 少妇被粗大猛烈的视频| 国产免费一区二区三区四区乱码| 国产亚洲av片在线观看秒播厂| 亚洲第一区二区三区不卡| 中文精品一卡2卡3卡4更新| 亚洲国产精品成人久久小说| 成年女人在线观看亚洲视频| freevideosex欧美| 天美传媒精品一区二区| 久久久久久久国产电影| 欧美日韩综合久久久久久| 久久久国产一区二区| 在线免费观看不下载黄p国产| 国产毛片在线视频| 欧美bdsm另类| 午夜福利视频精品| av在线老鸭窝| 最近最新中文字幕大全免费视频 | 性色avwww在线观看| 国产成人精品一,二区| 成人毛片a级毛片在线播放| 亚洲精品国产色婷婷电影| 亚洲av综合色区一区| 久久女婷五月综合色啪小说| 久久久久视频综合| 最近2019中文字幕mv第一页| 伦精品一区二区三区| 视频区图区小说| 国产精品久久久久成人av| 日韩一区二区视频免费看| 一区二区三区精品91| 日日摸夜夜添夜夜爱| 一级爰片在线观看| 久久久亚洲精品成人影院| 人人澡人人妻人| 亚洲av在线观看美女高潮| 亚洲av日韩在线播放| 激情五月婷婷亚洲| 香蕉精品网在线| 久久人妻熟女aⅴ| 91久久精品国产一区二区三区| 晚上一个人看的免费电影| 99精国产麻豆久久婷婷| 免费久久久久久久精品成人欧美视频 | 熟女人妻精品中文字幕| 免费在线观看完整版高清| 国产麻豆69| 久久久久精品性色| 尾随美女入室| 精品一区二区免费观看| 国产精品一区www在线观看| 十八禁网站网址无遮挡| 女人精品久久久久毛片| 曰老女人黄片| 欧美激情国产日韩精品一区| 日本wwww免费看| 亚洲欧美中文字幕日韩二区| 一本一本久久a久久精品综合妖精 国产伦在线观看视频一区 | 久久鲁丝午夜福利片| av片东京热男人的天堂| 黄色视频在线播放观看不卡| 亚洲久久久国产精品| 亚洲伊人久久精品综合| 曰老女人黄片| 欧美人与善性xxx| 十分钟在线观看高清视频www| 欧美日韩av久久| 黄色一级大片看看| 黑人高潮一二区| 三级国产精品片| 欧美最新免费一区二区三区| 男女边吃奶边做爰视频| 欧美成人精品欧美一级黄| 香蕉丝袜av| 国产日韩一区二区三区精品不卡| 国产在线一区二区三区精| 中文天堂在线官网| 日日摸夜夜添夜夜爱| 久久国产精品男人的天堂亚洲 | 麻豆乱淫一区二区| 久久精品人人爽人人爽视色| 有码 亚洲区| 18禁动态无遮挡网站| 欧美xxⅹ黑人| 欧美日韩视频高清一区二区三区二| 亚洲国产精品国产精品| 伊人亚洲综合成人网| 亚洲精品av麻豆狂野| 国产色婷婷99| 在线观看免费日韩欧美大片| 人妻人人澡人人爽人人| 蜜桃在线观看..| av片东京热男人的天堂| 一边摸一边做爽爽视频免费| 免费看光身美女| 大码成人一级视频| 亚洲精品456在线播放app| 日本免费在线观看一区| 9色porny在线观看| tube8黄色片| 欧美精品人与动牲交sv欧美| 亚洲,一卡二卡三卡| 久久精品熟女亚洲av麻豆精品| 国产欧美日韩综合在线一区二区| 亚洲国产精品成人久久小说| 亚洲国产日韩一区二区| 自拍欧美九色日韩亚洲蝌蚪91| 美女视频免费永久观看网站| 永久网站在线| 亚洲,一卡二卡三卡| 精品视频人人做人人爽| 免费在线观看黄色视频的| 9热在线视频观看99| www.av在线官网国产| 国产精品欧美亚洲77777| 丝瓜视频免费看黄片| 亚洲激情五月婷婷啪啪| 国产1区2区3区精品| 欧美变态另类bdsm刘玥| 久久久久久伊人网av| 国产精品一二三区在线看| 99视频精品全部免费 在线| 久久人人爽av亚洲精品天堂| 又黄又爽又刺激的免费视频.| 亚洲天堂av无毛| 水蜜桃什么品种好| 国产男女超爽视频在线观看| 久久影院123| 久久久久久久亚洲中文字幕| 免费观看a级毛片全部| 久久久久网色| 亚洲成色77777| 亚洲国产精品一区三区| 91成人精品电影| 哪个播放器可以免费观看大片| 成年人午夜在线观看视频| 国产成人精品福利久久| 精品一区在线观看国产| 免费黄频网站在线观看国产| 欧美日韩精品成人综合77777| 国产黄色视频一区二区在线观看| 亚洲成人av在线免费| 国产精品女同一区二区软件| 国产又爽黄色视频| 一区二区av电影网| 国产精品一二三区在线看| 亚洲国产精品一区二区三区在线| 久久97久久精品| 少妇的逼水好多| 一本—道久久a久久精品蜜桃钙片| 婷婷成人精品国产| 精品人妻偷拍中文字幕| 午夜老司机福利剧场| 伦精品一区二区三区| 国产国拍精品亚洲av在线观看| 少妇人妻精品综合一区二区| 宅男免费午夜| 久久久国产一区二区| 建设人人有责人人尽责人人享有的| 人人妻人人爽人人添夜夜欢视频| 高清av免费在线| av在线app专区| 最黄视频免费看| 国产精品国产三级国产专区5o| av电影中文网址| 久久久精品免费免费高清| 十分钟在线观看高清视频www| 国产精品久久久久久久久免| 日韩人妻精品一区2区三区| 日韩免费高清中文字幕av| 伦理电影大哥的女人| 欧美性感艳星| 久久这里有精品视频免费| 一本—道久久a久久精品蜜桃钙片| 午夜精品国产一区二区电影| 国产黄频视频在线观看| 熟女人妻精品中文字幕| 天堂中文最新版在线下载| 嫩草影院入口| 久久精品国产亚洲av涩爱| av天堂久久9| 精品人妻在线不人妻| 亚洲综合色网址| 亚洲国产毛片av蜜桃av| 久久这里只有精品19| 女的被弄到高潮叫床怎么办| 超色免费av| 九色亚洲精品在线播放| 大话2 男鬼变身卡| 性色avwww在线观看| 精品酒店卫生间| 天美传媒精品一区二区| 亚洲欧美成人精品一区二区| 男女边吃奶边做爰视频| 国产色婷婷99| 成人国语在线视频| 老熟女久久久| 看非洲黑人一级黄片| 激情视频va一区二区三区| 日韩av不卡免费在线播放| 久久久久网色| 国产免费福利视频在线观看| 精品久久久精品久久久| videosex国产| 国产av国产精品国产| 亚洲久久久国产精品| 亚洲欧洲精品一区二区精品久久久 | 国产成人一区二区在线| 久久久精品94久久精品| 免费少妇av软件| 久久久久久伊人网av| 内地一区二区视频在线| 99香蕉大伊视频| 香蕉精品网在线| 日本av免费视频播放| 欧美成人午夜精品| 久久久亚洲精品成人影院| 丝袜脚勾引网站| 亚洲一码二码三码区别大吗| 日韩免费高清中文字幕av| 夫妻性生交免费视频一级片| 中文字幕av电影在线播放| 看免费成人av毛片| 91在线精品国自产拍蜜月| 99国产精品免费福利视频| 精品第一国产精品| 久久久欧美国产精品| 一级毛片电影观看| 久久久精品免费免费高清| 一边亲一边摸免费视频| 久久精品熟女亚洲av麻豆精品| 午夜激情久久久久久久| 国产色婷婷99| 亚洲av福利一区| 美女中出高潮动态图| 精品午夜福利在线看| 精品国产一区二区三区四区第35| 亚洲国产欧美在线一区| 天天影视国产精品| 大码成人一级视频| 国产免费又黄又爽又色| 国产欧美另类精品又又久久亚洲欧美| 午夜福利视频在线观看免费| 亚洲av男天堂| 国产高清三级在线| 色吧在线观看| 欧美精品高潮呻吟av久久| 亚洲精品乱久久久久久| 午夜影院在线不卡| 日韩中文字幕视频在线看片| 亚洲第一av免费看| 亚洲内射少妇av| 精品一品国产午夜福利视频| 午夜久久久在线观看| 国产淫语在线视频| 啦啦啦在线观看免费高清www| 男女无遮挡免费网站观看| 一级片'在线观看视频| 免费人成在线观看视频色| 国产精品三级大全| 国产av一区二区精品久久| 男女国产视频网站| 亚洲精品一二三| 黑人欧美特级aaaaaa片| 亚洲在久久综合| 国产免费视频播放在线视频| www.av在线官网国产| 亚洲精品av麻豆狂野| 国产白丝娇喘喷水9色精品| 嫩草影院入口| 香蕉丝袜av| 亚洲四区av| 亚洲av欧美aⅴ国产| 亚洲精品成人av观看孕妇| 超色免费av| 黄色 视频免费看| 日韩精品有码人妻一区| 伊人久久国产一区二区| 国产欧美另类精品又又久久亚洲欧美| 天天影视国产精品| 国产激情久久老熟女| 亚洲人成网站在线观看播放| 国产精品一区二区在线不卡| 亚洲精品美女久久久久99蜜臀 | 中国美白少妇内射xxxbb| 久久热在线av| 捣出白浆h1v1| 91精品国产国语对白视频| 亚洲成人av在线免费| 99久久精品国产国产毛片| 永久免费av网站大全| 少妇 在线观看| 日本av免费视频播放| 亚洲精品国产av蜜桃| 精品久久久久久电影网| tube8黄色片| 欧美国产精品一级二级三级| 另类亚洲欧美激情| 久久青草综合色| 最近中文字幕2019免费版| www日本在线高清视频| 亚洲av欧美aⅴ国产| 国产乱来视频区| 99香蕉大伊视频| 十八禁高潮呻吟视频| 777米奇影视久久| 国产午夜精品一二区理论片| 免费大片18禁| 久久久久久久久久久免费av| 美国免费a级毛片| 交换朋友夫妻互换小说| a级毛色黄片| 中文字幕人妻熟女乱码| 伊人久久国产一区二区| 亚洲国产欧美在线一区| 18+在线观看网站| 国产av国产精品国产| 99视频精品全部免费 在线| 亚洲国产精品成人久久小说| 国产精品偷伦视频观看了| 在线亚洲精品国产二区图片欧美| 亚洲国产av新网站| 亚洲三级黄色毛片| 久久ye,这里只有精品| 国产在线免费精品| 日韩免费高清中文字幕av|