RZ-G/DRM

From Renesas.info

DRM Block Diagram.png

Verify Hardware Layers

  • You can use the modetest application that is included by default in the BSP to verify the hardware layer support of the RZ DRM display drivers.
  • In the results returned by modetest, you will see that the overlay image supports the alpha attribute.
  • After execution, you can see that the overly image has a translucent effect and is superimposed with the primary layer.
  • Simple follow the steps below.

Close Weston before testing

$ systemctl stop weston@root

Use modetest to get display information

modetest -M rcar-du

There will be an unique 'id' for each component. These numbers are used when you want to reference different portions. The id numbers might be different between SoC device and not match the example commands below, so please find them first with the modetest command.

According to the results returned by modetest, the following information can be obtained.

  • Encoders:
  • Connectors:
  • CRTCs:
  • Planes:
  • Frame buffers:

For example, according to the return result of modetest on a RZ/G2L EVK, RZ/G2L has 2 physical planes.

Example modetest output on a RZ/G2L EVK                
root@smarc-rzg2l:~# modetest -M rcar-du
Encoders:
id      crtc    type    possible crtcs  possible clones
38      37      none    0x00000001      0x00000001
44      0       Virtual 0x00000001      0x00000002

Connectors:
id      encoder status          name            size (mm)       modes   encoders
39      38      connected       HDMI-A-1        0x0             26      38
  modes:
        index name refresh (Hz) hdisp hss hse htot vdisp vss vse vtot)
  #0 1280x800 59.91 1280 1328 1360 1440 800 803 807 823 71000 flags: phsync, pvsync; type: preferred, driver
  #1 1920x1080 60.00 1920 2008 2052 2200 1080 1084 1089 1125 148500 flags: phsync, pvsync; type: driver
  #2 1920x1080 60.00 1920 2008 2052 2200 1080 1084 1089 1125 148500 flags: phsync, pvsync; type: driver
  #3 1920x1080 59.94 1920 2008 2052 2200 1080 1084 1089 1125 148352 flags: phsync, pvsync; type: driver
  #4 1280x1024 60.02 1280 1328 1440 1688 1024 1025 1028 1066 108000 flags: phsync, pvsync; type: driver
  #5 1280x960 60.00 1280 1376 1488 1800 960 961 964 1000 108000 flags: phsync, pvsync; type: driver
  #6 1280x800 60.00 1280 1316 1324 1324 800 816 824 832 66090 flags: phsync, pvsync; type: driver
  #7 1152x864 75.00 1152 1216 1344 1600 864 865 868 900 108000 flags: phsync, pvsync; type: driver
  #8 1280x720 60.00 1280 1390 1430 1650 720 725 730 750 74250 flags: phsync, pvsync; type: driver
  #9 1280x720 59.94 1280 1390 1430 1650 720 725 730 750 74176 flags: phsync, pvsync; type: driver
  #10 1024x768 75.03 1024 1040 1136 1312 768 769 772 800 78750 flags: phsync, pvsync; type: driver
  #11 1024x768 70.07 1024 1048 1184 1328 768 771 777 806 75000 flags: nhsync, nvsync; type: driver
  #12 1024x768 60.00 1024 1048 1184 1344 768 771 777 806 65000 flags: nhsync, nvsync; type: driver
  #13 800x600 75.00 800 816 896 1056 600 601 604 625 49500 flags: phsync, pvsync; type: driver
  #14 800x600 72.19 800 856 976 1040 600 637 643 666 50000 flags: phsync, pvsync; type: driver
  #15 800x600 60.32 800 840 968 1056 600 601 605 628 40000 flags: phsync, pvsync; type: driver
  #16 800x600 56.25 800 824 896 1024 600 601 603 625 36000 flags: phsync, pvsync; type: driver
  #17 720x480 60.00 720 736 798 858 480 489 495 525 27027 flags: nhsync, nvsync; type: driver
  #18 720x480 60.00 720 736 798 858 480 489 495 525 27027 flags: nhsync, nvsync; type: driver
  #19 720x480 59.94 720 736 798 858 480 489 495 525 27000 flags: nhsync, nvsync; type: driver
  #20 720x480 59.94 720 736 798 858 480 489 495 525 27000 flags: nhsync, nvsync; type: driver
  #21 720x480 59.94 720 736 798 858 480 489 495 525 27000 flags: nhsync, nvsync; type: driver
  #22 640x480 75.00 640 656 720 840 480 481 484 500 31500 flags: nhsync, nvsync; type: driver
  #23 640x480 72.81 640 664 704 832 480 489 492 520 31500 flags: nhsync, nvsync; type: driver
  #24 640x480 60.00 640 656 752 800 480 490 492 525 25200 flags: nhsync, nvsync; type: driver
  #25 640x480 59.94 640 656 752 800 480 490 492 525 25175 flags: nhsync, nvsync; type: driver
  props:
        1 EDID:
                flags: immutable blob
                blobs:

                value:
                        00ffffffffffff0020641d7b01000000
                        201b0103800000780ae0ce9e59579723
                        124c542fce00010181808140714f0101
                        010101010101bc1b00a0502017303020
                        340000000000001e000000ff004c544d
                        31320a20202020202020000000fd0032
                        551f4f0b000a202020202020000000fc
                        00504a343032442d320a20202020018d
                        02031af1479005040302071623090707
                        65030c00100083010000023a80187138
                        2d40582c450007442100001e011d8018
                        711c1620582c250007442100009ed119
                        002c5020203024080804510e1100001e
                        8c0ad08a20e02d10103e960007442100
                        00180000000000000000000000000000
                        00000000000000000000000000000012
        2 DPMS:
                flags: enum
                enums: On=0 Standby=1 Suspend=2 Off=3
                value: 0
        5 link-status:
                flags: enum
                enums: Good=0 Bad=1
                value: 0
        6 non-desktop:
                flags: immutable range
                values: 0 1
                value: 0
        4 TILE:
                flags: immutable blob
                blobs:

                value:
        20 CRTC_ID:
                flags: object
                value: 37

CRTCs:
id      fb      pos     size
37      47      (0,0)   (1280x800)
  #0 1280x800 59.91 1280 1328 1360 1440 800 803 807 823 71000 flags: phsync, pvsync; type: preferred, driver
  props:
        22 ACTIVE:
                flags: range
                values: 0 1
                value: 1
        23 MODE_ID:
                flags: blob
                blobs:

                value:
                        58150100000530055005a00500002003
                        23032703370300003c00000005000000
                        48000000313238307838303000000000
                        00000000000000000000000000000000
                        00000000
        19 OUT_FENCE_PTR:
                flags: range
                values: 0 18446744073709551615
                value: 0
        24 VRR_ENABLED:
                flags: range
                values: 0 1
                value: 0

Planes:
id      crtc    fb      CRTC x,y        x,y     gamma size      possible crtcs
32      37      47      0,0             0,0     0               0x00000001
  formats: RGB8 AR12 XR12 AR15 XR15 RG16 BG24 RG24 BA24 BX24 AR24 XR24 UYVY YUYV YVYU NV12 NV21 NV16 NV61 YU12 YV12 YU16 YV16 YU24 YV24
  props:
        8 type:
                flags: immutable enum
                enums: Overlay=0 Primary=1 Cursor=2
                value: 1
        17 FB_ID:
                flags: object
                value: 47
        18 IN_FENCE_FD:
                flags: signed range
                values: -1 2147483647
                value: -1
        20 CRTC_ID:
                flags: object
                value: 37
        13 CRTC_X:
                flags: signed range
                values: -2147483648 2147483647
                value: 0
        14 CRTC_Y:
                flags: signed range
                values: -2147483648 2147483647
                value: 0
        15 CRTC_W:
                flags: range
                values: 0 2147483647
                value: 1280
        16 CRTC_H:
                flags: range
                values: 0 2147483647
                value: 800
        9 SRC_X:
                flags: range
                values: 0 4294967295
                value: 0
        10 SRC_Y:
                flags: range
                values: 0 4294967295
                value: 0
        11 SRC_W:
                flags: range
                values: 0 4294967295
                value: 83886080
        12 SRC_H:
                flags: range
                values: 0 4294967295
                value: 52428800
        33 zpos:
                flags: immutable range
                values: 0 0
                value: 0
34      0       0       0,0             0,0     0               0x00000001
  formats: RGB8 AR12 XR12 AR15 XR15 RG16 BG24 RG24 BA24 BX24 AR24 XR24 UYVY YUYV YVYU NV12 NV21 NV16 NV61 YU12 YV12 YU16 YV16 YU24 YV24
  props:
        8 type:
                flags: immutable enum
                enums: Overlay=0 Primary=1 Cursor=2
                value: 0
        17 FB_ID:
                flags: object
                value: 0
        18 IN_FENCE_FD:
                flags: signed range
                values: -1 2147483647
                value: -1
        20 CRTC_ID:
                flags: object
                value: 0
        13 CRTC_X:
                flags: signed range
                values: -2147483648 2147483647
                value: 0
        14 CRTC_Y:
                flags: signed range
                values: -2147483648 2147483647
                value: 0
        15 CRTC_W:
                flags: range
                values: 0 2147483647
                value: 0
        16 CRTC_H:
                flags: range
                values: 0 2147483647
                value: 0
        9 SRC_X:
                flags: range
                values: 0 4294967295
                value: 0
        10 SRC_Y:
                flags: range
                values: 0 4294967295
                value: 0
        11 SRC_W:
                flags: range
                values: 0 4294967295
                value: 0
        12 SRC_H:
                flags: range
                values: 0 4294967295
                value: 0
        35 alpha:
                flags: range
                values: 0 65535
                value: 65535
        36 zpos:
                flags: range
                values: 1 1
                value: 1

Frame buffers:
id      size    pitch


Below is an example of an RZ/G2L connected to a 1280x800 MHDI LCD. There are 2 IDSs for "Planes" ('32' and '34') because there are 2 hardware layers in the RZ/G2L LCD display controller.

Display the test pattern on the Primary Plane

Use the id of the 'Connector' and the resolution of your LCD panel.

Example:

modetest -M rcar-du -s 39:1280x800@AR24 -d 

(present ENTER on the keyboard to exit modetest)


Primary Plane+Overlay

  • Primary plane(39) displays SMPTE color bar spectrum in full screen.
  • Overlay plane(34) displays a layer with a size of (400x300) at the position of coordinates (200,200)
modetest -M rcar-du -s 39:1280x800@AR24 -d -P '34@37:400x300 +200+200@AR24'

(present ENTER on the keyboard to exit modetest)


Set the alpha property of the overlay layer

  • Start the Primary Plane+Overlay test again, but in the backgound (& at the end)
$ modetest -M rcar-du -s 39:1280x800@AR24 -d -P '34@37:400x300 +200+200@AR24'  &
  • Now change the Alpha of the hardware layer (0 to 65535)
  • You can see that the overly image has a translucent effect and is superimposed with the primary layer
$ modetest -M rcar-du -w 34:alpha:32768
$ modetest -M rcar-du -w 34:alpha:16384
$ modetest -M rcar-du -w 34:alpha:50000
  • End the modetest still running in the background (bring to forground)
$ fg

(present ENTER on the keyboard to exit modetest)