# Verify

Source: [https://docs.qualcomm.com/doc/80-70014-20/topic/bring-up.html](https://docs.qualcomm.com/doc/80-70014-20/topic/bring-up.html)

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by Microsoft Visio, SVG Export Video-Verify-workflow.svg Page-1 -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="9.00521in" height="1.76563in" viewbox="0 0 648.375 127.125" xml:space="preserve" color-interpolation-filters="sRGB" class="st7"><v:documentproperties v:langid="1033" v:viewmarkup="false">	<v:userdefs>		<v:ud v:nameu="msvNoAutoConnect" v:val="VT0(1):26"></v:ud>	</v:userdefs></v:documentproperties>
<style>.svg-1 .st1 { fill: #f7f8fa; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-1 .st2 { fill: #ffffff; stroke: #3253dc; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2.25 }
.svg-1 .st3 { fill: #000000; font-family: Arial; font-size: 1.00001em }
.svg-1 .st4 { font-size: 1em }
.svg-1 .st5 { marker-end: url("#mrkr5-23"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2.25 }
.svg-1 .st6 { fill: #000000; fill-opacity: 1; stroke: #000000; stroke-opacity: 1; stroke-width: 0.47169811320755 }
.svg-1 .st7 { fill: none; fill-rule: evenodd; font-size: 12px; overflow: visible; stroke-linecap: square; stroke-miterlimit: 3 }</style>
<defs id="Markers">	<g id="lend5">		<path d="M 2 1 L 0 0 L 1.98117 -0.993387 C 1.67173 -0.364515 1.67301 0.372641 1.98465 1.00043 " style="stroke:none"></path>	</g>	<marker id="mrkr5-23" class="st6" v:arrowtype="5" v:arrowsize="2" v:setback="3.71" refx="-3.71" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend5" transform="scale(-2.12,-2.12) "></use>	</marker></defs><g v:mid="0" v:index="1" v:groupcontext="foregroundPage">	<title>Page-1</title>	<v:pageproperties v:drawingscale="1" v:pagescale="1" v:drawingunits="19" v:shadowoffsetx="9" v:shadowoffsety="-9"></v:pageproperties>	<v:layer v:name="Connector" v:index="0"></v:layer>	<g id="shape13-1" v:mid="13" v:groupcontext="shape" transform="translate(18,-18)">		<title></title>		<rect x="0" y="36" width="612" height="91.125" class="st1"></rect>	</g>	<g id="shape6-3" v:mid="6" v:groupcontext="shape" transform="translate(495,-39.7895)">		<title></title>		<desc>Run the use case</desc>		<v:userdefs>			<v:ud v:nameu="CTypeTopLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeTopRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CornerLockHoriz" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockVert" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockDiag" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="54" cy="101.645" width="108" height="50.9605"></v:textrect>		<path d="M10.8 127.13 L97.2 127.13 A10.7998 10.7998 -180 0 0 108 116.33 L108 86.96 A10.7998 10.7998 -180 0 0 97.2 76.16					 L10.8 76.16 A10.7998 10.7998 -180 0 0 0 86.96 L0 116.33 A10.7998 10.7998 -180 0 0 10.8 127.13 Z" class="st2"></path>		<text x="7.3" y="105.25" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Run the use case</text>		</g>	<g id="shape7-6" v:mid="7" v:groupcontext="shape" transform="translate(342.375,-39.7895)">		<title></title>		<desc>Verify if decode/encode is offloaded to VPU</desc>		<v:userdefs>			<v:ud v:nameu="CTypeTopLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeTopRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CornerLockHoriz" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockVert" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockDiag" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="54" cy="101.645" width="108" height="50.9605"></v:textrect>		<path d="M10.8 127.13 L97.2 127.13 A10.7998 10.7998 -180 0 0 108 116.33 L108 86.96 A10.7998 10.7998 -180 0 0 97.2 76.16					 L10.8 76.16 A10.7998 10.7998 -180 0 0 0 86.96 L0 116.33 A10.7998 10.7998 -180 0 0 10.8 127.13 Z" class="st2"></path>		<text x="10.98" y="90.84" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Verify if decode/<tspan x="28.32" dy="1.2em" class="st4">encode is </tspan><tspan x="8.64" dy="1.2em" class="st4">offloaded to VPU</tspan></text>		</g>	<g id="shape8-11" v:mid="8" v:groupcontext="shape" transform="translate(189.375,-39.7895)">		<title></title>		<desc>Verify if VPU driver is loaded</desc>		<v:userdefs>			<v:ud v:nameu="CTypeTopLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeTopRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CornerLockHoriz" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockVert" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockDiag" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="54" cy="101.645" width="108" height="50.9605"></v:textrect>		<path d="M10.8 127.13 L97.2 127.13 A10.7998 10.7998 -180 0 0 108 116.33 L108 86.96 A10.7998 10.7998 -180 0 0 97.2 76.16					 L10.8 76.16 A10.7998 10.7998 -180 0 0 0 86.96 L0 116.33 A10.7998 10.7998 -180 0 0 10.8 127.13 Z" class="st2"></path>		<text x="19.99" y="98.04" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Verify if VPU <tspan x="13.31" dy="1.2em" class="st4">driver is loaded</tspan></text>		</g>	<g id="shape9-15" v:mid="9" v:groupcontext="shape" transform="translate(36.375,-39.7895)">		<title></title>		<desc>Boot up the driver</desc>		<v:userdefs>			<v:ud v:nameu="CTypeTopLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeTopRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CornerLockHoriz" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockVert" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockDiag" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="54" cy="101.645" width="108" height="50.9605"></v:textrect>		<path d="M10.8 127.13 L97.2 127.13 A10.7998 10.7998 -180 0 0 108 116.33 L108 86.96 A10.7998 10.7998 -180 0 0 97.2 76.16					 L10.8 76.16 A10.7998 10.7998 -180 0 0 0 86.96 L0 116.33 A10.7998 10.7998 -180 0 0 10.8 127.13 Z" class="st2"></path>		<text x="6.64" y="105.25" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Boot up the driver</text>		</g>	<g id="shape10-18" v:mid="10" v:groupcontext="shape" v:layermember="0" transform="translate(144.375,-56.2697)">		<title></title>		<path d="M0 118.13 L36.65 118.13" class="st5"></path>	</g>	<g id="shape11-24" v:mid="11" v:groupcontext="shape" v:layermember="0" transform="translate(297.375,-56.2697)">		<title></title>		<path d="M0 118.13 L36.65 118.13" class="st5"></path>	</g>	<g id="shape12-29" v:mid="12" v:groupcontext="shape" v:layermember="0" transform="translate(450.375,-56.2697)">		<title></title>		<path d="M0 118.13 L36.28 118.13" class="st5"></path>	</g></g>
</svg>

The commands and samples provided here enable you to verify the following:
- VPU driver is successfully loaded
- Decoding/encoding is offloaded to the VPU

## Verify if the VPU driver is successfully loaded

The VPU driver is loaded as part of the kernel image. You can confirm whether the VPU
                driver is loaded successfully by executing the following methods:

**Method1:** 
- Execute the following `lsmode` command on the device
                        shell:

        lsmod | grep -i "iris"Copy to clipboard
- The following is the sample output that helps you verify if the VPU driver
                        is successfully loaded. Ensure that the output shows an entry for
                            `iris_vpu` under the Module
                        column:

        Module    Size    Used by
        
        iris_vpu   585728    0Copy to clipboard

**Method2:** 
- Execute the `udevadm info -n /dev/video*` command on the
                        device shell and verify if the output shows
                            `msm_vidc_decoder` and `msm_vidc_encoder`
                        against the `ID_V4L_PRODUCT`
                        tag.

        udevadm info -n /dev/video*Copy to clipboard
- The following sample output helps you verify whether the VPU is successfully
                            loaded:

        P: /devices/platform/soc@0/aa00000.video-codec/video4linux/video32
        N: video32
        L: 0
        S: v4l/by-path/platform-aa00000.video-codec-video-index0
        E: DEVPATH=/devices/platform/soc@0/aa00000.video-codec/video4linux/video32
        E: DEVNAME=/dev/video32
        E: MAJOR=81
        E: MINOR=21
        E: SUBSYSTEM=video4linux
        E: USEC_INITIALIZED=6369466
        E: ID_V4L_VERSION=2
        E: ID_V4L_PRODUCT=msm_vidc_decoder
        E: ID_V4L_CAPABILITIES=:
        E: ID_PATH=platform-aa00000.video-codec
        E: ID_PATH_TAG=platform-aa00000_video-codec
        E: ID_FOR_SEAT=video4linux-platform-aa00000_video-codec
        E: DEVLINKS=/dev/v4l/by-path/platform-aa00000.video-codec-video-index0
        E: TAGS=:uaccess:seat:
        E: CURRENT_TAGS=:uaccess:seat:
         
        P: /devices/platform/soc@0/aa00000.video-codec/video4linux/video33
        N: video33
        L: 0
        S: v4l/by-path/platform-aa00000.video-codec-video-index1
        E: DEVPATH=/devices/platform/soc@0/aa00000.video-codec/video4linux/video33
        E: DEVNAME=/dev/video33
        E: MAJOR=81
        E: MINOR=22
        E: SUBSYSTEM=video4linux
        E: USEC_INITIALIZED=6363137
        E: ID_V4L_VERSION=2
        E: ID_V4L_PRODUCT=msm_vidc_encoder
        E: ID_V4L_CAPABILITIES=:
        E: ID_PATH=platform-aa00000.video-codec
        E: ID_PATH_TAG=platform-aa00000_video-codec
        E: ID_FOR_SEAT=video4linux-platform-aa00000_video-codec
        E: DEVLINKS=/dev/v4l/by-path/platform-aa00000.video-codec-video-index1
        E: TAGS=:uaccess:seat:
        E: CURRENT_TAGS=:uaccess:seat:Copy to clipboard

Note: To know the device
                            nodes, check for the `DEVNAME` tag. In the earlier
                            example, the `/dev/video32` is for the VPU decoder node
                            and `/dev/video33` is for the VPU encoder
                        node.

## Verify if the decoding/encoding is offloaded to the VPU

You can confirm if the video decoding or encoding is successfully offloaded to the
                VPU by doing the following:
- Execute the following command as a
                        loop:

        cat /proc/interrupts | grep "msm-vidc"Copy to clipboard
- The following is the sample output that helps you verify whether the video
                        decoding/encoding is offloaded to the VPU. Verify if the interrupt count
                        from `msm-vidc` is increasing across any CPU when the use
                        case is
                        running:

        253: 4     0      0        0        0        0        0        0     GICv3 206 Level  msm-vidcCopy to clipboard

Last Published: Jul 12, 2024

[Previous Topic
Software](https://docs.qualcomm.com/bundle/publicresource/80-70014-20/topics/software.md) [Next Topic
Configure](https://docs.qualcomm.com/bundle/publicresource/80-70014-20/topics/configure.md)