“Vivante GCNANO GPU overview”的版本间的差异

来自百问网嵌入式Linux wiki
第1行: 第1行:
== Article purpose ==
+
{{ReviewsComments|GeraldB W844: need to refine the place of this article between [[GPU internal peripheral]], [[OpenGLES overview]], ...}}
This article explains how to configure the ''DSI'' <ref name="DSI">[[DSI internal peripheral]]</ref> ''' when the peripheral is assigned to the Linux<sup>&reg;</sup> OS'''.  
 
  
The configuration is performed using the '''device tree mechanism''' <ref> [[Device tree]]</ref>.
+
{{ReviewsComments|PCO (W803) : Check with NSA if there is a need to have a short summary, transforming for instance the content of introduction to a summary}}
 +
{{ReviewsComments|PCO (W803) : Check with NSA how to rephrase the sentence "The STMicroelectronics STM32MP1 platform have an '''OpenGLES''' hw IP based on the '''Vivante Gcnano GPU'''" }}
  
The [[Device tree]] provides a hardware description of the DSI <ref name="DSI"/> used by the STM32 ''DSI Linux driver''.
+
{{ReviewsComments|PCO (W803) : Please do not use IP, see [[Contributors:Guidelines_for_article_edition#Preferred terms, concepts and acronyms]]}}
 +
{{ReviewsComments|PCO (W803) : we have to decide together the best way to write gcnano, on the web site is is "GC Nano"... anyway, we can also avoid as max as possible to use this word : )}}
 +
{{ReviewsComments|PCO (W803) : Please avoid "br", simply add a blank line}}
 +
{{ReviewsComments|PCO (W803) : Open question: We may rename Vivante to VeriSilicon/Vivante... we can check with legals...}}
  
== DT bindings documentation ==
+
==Introduction==
The DSI is represented by the STM32 DSI device tree bindings <ref>{{CodeSource | Linux kernel | Documentation/devicetree/bindings/display/st,stm32-ltdc.txt | st,stm32-ltdc.txt Linux kernel bindings (including dsi)}}</ref>.
+
{{ReviewsComments| GeraldB W844: need to make a link with [[GPU internal peripheral]]. If this article is a software overview then it should follow the software framework overview and maybe renamed ?}}
 +
The STMicroelectronics STM32MP1 platform have an '''OpenGLES''' hw IP based on the '''Vivante Gcnano GPU'''.<br>
 +
You can find more information here on the '''Vivante GCNANO web pages''' <ref> http://www.vivantecorp.com/index.php/en/media-article/news/281-20140602-vivante-intros-worlds-first-complete-line-of-gpus-for-wearables-and-iot.html </ref> <ref> http://www.vivantecorp.com/index.php/en/technology/3d.html </ref>
  
== DT configuration ==
+
==Features==
This hardware description is a combination of the '''STM32 microprocessor''' device tree files (''.dtsi'' extension) and '''board''' device tree files (''.dts'' extension). See the [[Device tree]] for an explanation of the device tree file split.
+
===Supported open standards===
 +
The '''Vivante Gcnano GPU''' is compatible with the following '''Khronos's open standards 3D graphics''' <ref> http://www.khronos.org/ </ref>:
 +
* OpenGLES 2.0
 +
* OpenGLES 1.1
 +
* OpenVG 1.1
 +
* EGL 1.4
  
'''STM32CubeMX''' can be used to generate the board device tree. Refer to [[#How_to_configure_the_DT_using_STM32CubeMX|How to configure the DT using STM32CubeMX]] for more details.
+
===Vivante Gcnano GPU configuration===
 +
{{ReviewsComments|PCO (W803) : I think we should avoid these figures, we may point to the chipset databrief instead, to be checked how to do that with NSA }}
 +
* '''Core Clock''' 264MHz
 +
* '''Shader Clock''' 264MHz
 +
* '''Pixel Rate''' 264 MPixel/sec
 +
* '''Triangle Rate''' 26.4 M tri/sec
 +
* '''Vertex rate''' 66 M vtx/sec
 +
* '''1 shader core (Vec 4)'''
 +
* '''2.112 GFLOPS shader'''
  
===DT configuration (STM32 level) ===
+
==GPU softwares==
The DSI device tree node is declared in stm32mp157c.dtsi <ref name="stm32mp157c_dtsi">{{CodeSource | Linux kernel | arch/arm/boot/dts/stm32mp157c.dtsi | Linux kernel STM32MP157C device tree (stm32mp157c.dtsi)}}</ref>. The declaration (shown below) defines the hardware registers base address, the clocks and the reset.
+
{{ReviewsComments|PCO (W803) : 800px is maybe not the recommended value, moreover the legend is not the standard ones :)}}
<pre>
+
[[File:GPU_software_structure.png|center|800px|link=]]
dsi: dsi@5a000000 {
 
compatible = "st,stm32-dsi";
 
reg = <0x5a000000 0x800>;
 
clocks = <&rcc DSI_K>, <&clk_hse>, <&rcc DSI_PX>;
 
clock-names = "pclk", "ref", "px_clk";
 
resets = <&rcc DSI_R>;
 
reset-names = "apb";
 
status = "disabled";
 
};
 
</pre>
 
  
{{Warning|This device tree part is related to STM32 microprocessors. It must be kept as is, without being modified by the end-user.}}
+
===Vivante Gcnano GPU userland libraries===
 +
'''{{Orange|Source code is NOT available for customers}}''', excepted if customers signed a NDA with Vivante (please contact Vivante if you need these library source codes). The Gcnano libraries (userland) are:
 +
{{ReviewsComments|PCO (W803) : maybe an ls of the file should be better... or maybe we can explain more the goal of each below libraries... }}
 +
* OpenGLES 1.1 library
 +
* OpenGLES 2.0 library
 +
* EGL 1.4 library
 +
* gbm library
 +
* GAL library
 +
* GLSLC and VSC libraries
 +
* VDK library
  
=== DT configuration (board level) ===
+
===Vivante Gcnano kernel driver===
The DSI device tree related to a particular board may have the following nodes, depending on the board hardware:
+
'''{{Green|Source code is available for all customers}}''' in all OpenSTLinux baselines. <br>
* '''dsi''' node: containing the in/out port descriptions and a '''panel''' sub-node.
+
<br>
* '''ltdc''' node: containing the in/out port description related to the dsi node.
+
To access source code:
* '''panel_backlight''' node: related to the panel node.
+
  devtool modify gcnano-driver-stm32mp
   
 
A full example of the [[STM32MP157x-EV1 - hardware description | STM32MP157 Evaluation board]] device tree is available in stm32mp157c-ev1.dts <ref name="stm32mp157c_ev1_dts">{{CodeSource | Linux kernel | arch/arm/boot/dts/stm32mp157c-ev1.dts | Linux kernel STM32MP157 Evaluation board device tree (stm32mp157c-ev1.dts)}}</ref>.
 
  
<pre>
+
Source code is then downloaded here:
&dsi {
+
*'''<your_view>/build*/workspace/sources/gcnano-driver-stm32mp'''
#address-cells = <1>;
+
<br>
#size-cells = <0>;
+
Refer to [[OpenEmbedded - devtool]] to know more about devtool.
status = "okay";
 
  
ports {
+
===Additional information===
#address-cells = <1>;
+
* STMicroelectronics provides '''debug Vivante Gcnano libraries''' according to any baseline version, '''allowing customers to debug/analyze their applications''' with the '''Vivante Tool Kit (VTK)'''. Please have a look to the article [[How to debug the Gcnano GPU with VTK]] for more details.
#size-cells = <0>;
 
  
port@0 {
+
==Useful links==
reg = <0>;
+
{{ReviewsComments|PCO (W803) : This link is not at all useful : ( I think we can remove this chapter}}
dsi_in: endpoint {
+
* Vivante website: http://www.vivantecorp.com/
remote-endpoint = <&ltdc_ep0_out>;
 
};
 
};
 
  
port@1 {
+
==EGL==
reg = <1>;
+
===Supported EGL backend===
dsi_out: endpoint {
+
From VIVANTE_GAL3D_Unified_Src_drv_6.1.x, Vivante delivery, Vivante Gcnano libraries support both '''DRM/GBM''' and '''Wayland''' backends.<br>
remote-endpoint = <&panel_in>;
+
Refer to [[EGL backends]] article for details.
};
 
};
 
};
 
  
panel@0 {
+
===EGL texture 0-copy===
compatible = "raydium,rm68200";
+
Gcnano supports the EGL texture 0-copy extension.
reg = <0>;
 
reset-gpios = <&gpiof 15 GPIO_ACTIVE_LOW>;
 
backlight = <&panel_backlight>;
 
status = "okay";
 
  
port {
+
EGL texture 0-copy extension allows an EGL application to share a texture buffer with the GPU by avoiding to copy the texture from application to the GPU.
panel_in: endpoint {
 
remote-endpoint = <&dsi_out>;
 
};
 
};
 
};
 
};
 
  
&ltdc {
+
Refer to [[EGL texture 0-copy]] article for more details.
status = "okay";
 
  
port {
+
==Graphic Benchmarks==
#address-cells = <1>;
+
Please refer to the [[How to test and benchmark OpenGLES]] article.
#size-cells = <0>;
 
  
ltdc_ep0_out: endpoint@0 {
+
==Debugging==
reg = <0>;
+
Please have a look to following articles:
remote-endpoint = <&dsi_in>;
+
* [[How to activate the Gcnano GPU debug mode]]
};
+
* [[How to debug the Gcnano GPU with VTK]]
};
 
};
 
 
 
...
 
panel_backlight: panel-backlight {
 
compatible = "gpio-backlight";
 
gpios = <&gpiod 13 GPIO_ACTIVE_LOW>;
 
default-on;
 
status = "okay";
 
};
 
};
 
 
 
</pre>
 
 
 
==How to configure the DT using STM32CubeMX==
 
The [[STM32CubeMX]] tool can be used to configure the STM32MPU device and get the corresponding [[Device_tree#STM32|platform configuration device tree]] files.<br />
 
The STM32CubeMX may not support all the properties described in the above [[#DT bindings documentation|DT bindings documentation]] paragraph. If so, the tool inserts '''user sections''' in the generated device tree. These sections can then be edited to add some properties and they are preserved from one generation to another. Refer to [[STM32CubeMX]] user manual for further information.
 
  
 
==References==
 
==References==
Please refer to the following links for additional information:
 
 
 
<references />
 
<references />
  
 
<noinclude>
 
<noinclude>
{{ArticleBasedOnModel | Peripheral or framework device tree configuration model}}
+
[[Category:GPU]]
{{PublicationRequestId | 9161| 2018-10-11 | BrunoB}}
 
[[Category:Device tree configuration]]
 
[[Category:DRM KMS]]
 
 
</noinclude>
 
</noinclude>

2020年11月10日 (二) 09:37的版本

<securetransclude src="ProtectedTemplate:ReviewsComments" params="GeraldB W844: need to refine the place of this article between GPU internal peripheral, OpenGLES overview, ..."></securetransclude>{{#set:Has reviews comments=true}}

<securetransclude src="ProtectedTemplate:ReviewsComments" params="PCO (W803) : Check with NSA if there is a need to have a short summary, transforming for instance the content of introduction to a summary"></securetransclude>{{#set:Has reviews comments=true}} <securetransclude src="ProtectedTemplate:ReviewsComments" params="PCO (W803) : Check with NSA how to rephrase the sentence "The STMicroelectronics STM32MP1 platform have an OpenGLES hw IP based on the Vivante Gcnano GPU""></securetransclude>{{#set:Has reviews comments=true}}

<securetransclude src="ProtectedTemplate:ReviewsComments" params="PCO (W803) : Please do not use IP, see Contributors:Guidelines_for_article_edition#Preferred terms, concepts and acronyms"></securetransclude>{{#set:Has reviews comments=true}} <securetransclude src="ProtectedTemplate:ReviewsComments" params="PCO (W803) : we have to decide together the best way to write gcnano, on the web site is is "GC Nano"... anyway, we can also avoid as max as possible to use this word : )"></securetransclude>{{#set:Has reviews comments=true}} <securetransclude src="ProtectedTemplate:ReviewsComments" params="PCO (W803) : Please avoid "br", simply add a blank line"></securetransclude>{{#set:Has reviews comments=true}} <securetransclude src="ProtectedTemplate:ReviewsComments" params="PCO (W803) : Open question: We may rename Vivante to VeriSilicon/Vivante... we can check with legals..."></securetransclude>{{#set:Has reviews comments=true}}

Introduction

<securetransclude src="ProtectedTemplate:ReviewsComments" params="GeraldB W844: need to make a link with GPU internal peripheral. If this article is a software overview then it should follow the software framework overview and maybe renamed ?"></securetransclude>{{#set:Has reviews comments=true}} The STMicroelectronics STM32MP1 platform have an OpenGLES hw IP based on the Vivante Gcnano GPU.
You can find more information here on the Vivante GCNANO web pages [1][2]

Features

Supported open standards

The Vivante Gcnano GPU is compatible with the following Khronos's open standards 3D graphics [3]:

  • OpenGLES 2.0
  • OpenGLES 1.1
  • OpenVG 1.1
  • EGL 1.4

Vivante Gcnano GPU configuration

<securetransclude src="ProtectedTemplate:ReviewsComments" params="PCO (W803) : I think we should avoid these figures, we may point to the chipset databrief instead, to be checked how to do that with NSA"></securetransclude>{{#set:Has reviews comments=true}}

  • Core Clock 264MHz
  • Shader Clock 264MHz
  • Pixel Rate 264 MPixel/sec
  • Triangle Rate 26.4 M tri/sec
  • Vertex rate 66 M vtx/sec
  • 1 shader core (Vec 4)
  • 2.112 GFLOPS shader

GPU softwares

<securetransclude src="ProtectedTemplate:ReviewsComments" params="PCO (W803) : 800px is maybe not the recommended value, moreover the legend is not the standard ones :)"></securetransclude>{{#set:Has reviews comments=true}}

GPU software structure.png

Vivante Gcnano GPU userland libraries

模板:Orange, excepted if customers signed a NDA with Vivante (please contact Vivante if you need these library source codes). The Gcnano libraries (userland) are: <securetransclude src="ProtectedTemplate:ReviewsComments" params="PCO (W803) : maybe an ls of the file should be better... or maybe we can explain more the goal of each below libraries..."></securetransclude>{{#set:Has reviews comments=true}}

  • OpenGLES 1.1 library
  • OpenGLES 2.0 library
  • EGL 1.4 library
  • gbm library
  • GAL library
  • GLSLC and VSC libraries
  • VDK library

Vivante Gcnano kernel driver

Source code is available for all customers in all OpenSTLinux baselines.

To access source code:

devtool modify gcnano-driver-stm32mp

Source code is then downloaded here:

  • <your_view>/build*/workspace/sources/gcnano-driver-stm32mp


Refer to OpenEmbedded - devtool to know more about devtool.

Additional information

  • STMicroelectronics provides debug Vivante Gcnano libraries according to any baseline version, allowing customers to debug/analyze their applications with the Vivante Tool Kit (VTK). Please have a look to the article 如何使用VTK调试Gcnano GPU for more details.

Useful links

<securetransclude src="ProtectedTemplate:ReviewsComments" params="PCO (W803) : This link is not at all useful : ( I think we can remove this chapter"></securetransclude>{{#set:Has reviews comments=true}}

EGL

Supported EGL backend

From VIVANTE_GAL3D_Unified_Src_drv_6.1.x, Vivante delivery, Vivante Gcnano libraries support both DRM/GBM and Wayland backends.
Refer to EGL backends article for details.

EGL texture 0-copy

Gcnano supports the EGL texture 0-copy extension.

EGL texture 0-copy extension allows an EGL application to share a texture buffer with the GPU by avoiding to copy the texture from application to the GPU.

Refer to EGL texture 0-copy article for more details.

Graphic Benchmarks

Please refer to the How to test and benchmark OpenGLES article.

Debugging

Please have a look to following articles: