1fb726d48Sopenharmony_ci// Copyright (c) 2021 Huawei Device Co., Ltd. 2fb726d48Sopenharmony_ci// Licensed under the Apache License, Version 2.0 (the "License"); 3fb726d48Sopenharmony_ci// you may not use this file except in compliance with the License. 4fb726d48Sopenharmony_ci// You may obtain a copy of the License at 5fb726d48Sopenharmony_ci// 6fb726d48Sopenharmony_ci// http://www.apache.org/licenses/LICENSE-2.0 7fb726d48Sopenharmony_ci// 8fb726d48Sopenharmony_ci// Unless required by applicable law or agreed to in writing, software 9fb726d48Sopenharmony_ci// distributed under the License is distributed on an "AS IS" BASIS, 10fb726d48Sopenharmony_ci// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11fb726d48Sopenharmony_ci// See the License for the specific language governing permissions and 12fb726d48Sopenharmony_ci// limitations under the License. 13fb726d48Sopenharmony_ci 14fb726d48Sopenharmony_ciimport { TraficEnum } from './utils/QueryEnum'; 15fb726d48Sopenharmony_ciimport { JanksStruct } from '../../bean/JanksStruct'; 16fb726d48Sopenharmony_ciimport { processFrameList } from './utils/AllMemoryCache'; 17fb726d48Sopenharmony_ciimport { Args } from './CommonArgs'; 18fb726d48Sopenharmony_ci 19fb726d48Sopenharmony_ciexport const frameJankDataSql = (args: Args, configure: unknown): string => { 20fb726d48Sopenharmony_ci let timeLimit: string = ''; 21fb726d48Sopenharmony_ci let flag: string = ''; 22fb726d48Sopenharmony_ci let fsType: number = -1; 23fb726d48Sopenharmony_ci let fsFlag: string = ''; 24fb726d48Sopenharmony_ci //@ts-ignore 25fb726d48Sopenharmony_ci const endNS = args.endNS; 26fb726d48Sopenharmony_ci //@ts-ignore 27fb726d48Sopenharmony_ci const startNS = args.startNS; 28fb726d48Sopenharmony_ci //@ts-ignore 29fb726d48Sopenharmony_ci const recordStartNS = args.recordStartNS; 30fb726d48Sopenharmony_ci switch (configure) { 31fb726d48Sopenharmony_ci case 'ExepectMemory': 32fb726d48Sopenharmony_ci fsType = 1; 33fb726d48Sopenharmony_ci flag = 'fs.flag as jankTag,'; 34fb726d48Sopenharmony_ci break; 35fb726d48Sopenharmony_ci case 'ExpectedData': 36fb726d48Sopenharmony_ci fsType = 1; 37fb726d48Sopenharmony_ci flag = 'fs.flag as jankTag,'; 38fb726d48Sopenharmony_ci timeLimit = ` 39fb726d48Sopenharmony_ci AND (fs.ts - ${recordStartNS} + fs.dur) >= ${Math.floor(startNS)} 40fb726d48Sopenharmony_ci AND (fs.ts - ${recordStartNS}) <= ${Math.floor(endNS)}`; 41fb726d48Sopenharmony_ci break; 42fb726d48Sopenharmony_ci case 'ActualMemoryData': 43fb726d48Sopenharmony_ci fsType = 0; 44fb726d48Sopenharmony_ci flag = 45fb726d48Sopenharmony_ci '(case when (sf.flag == 1 or fs.flag == 1 ) then 1 when (sf.flag == 3 or fs.flag == 3 ) then 3 else 0 end) as jankTag,'; 46fb726d48Sopenharmony_ci fsFlag = 'AND fs.flag <> 2'; 47fb726d48Sopenharmony_ci break; 48fb726d48Sopenharmony_ci case 'ActualData': 49fb726d48Sopenharmony_ci fsType = 0; 50fb726d48Sopenharmony_ci flag = 51fb726d48Sopenharmony_ci '(case when (sf.flag == 1 or fs.flag == 1 ) then 1 when (sf.flag == 3 or fs.flag == 3 ) then 3 else 0 end) as jankTag,'; 52fb726d48Sopenharmony_ci fsFlag = 'AND fs.flag <> 2'; 53fb726d48Sopenharmony_ci timeLimit = `AND (fs.ts - ${recordStartNS} + fs.dur) >= ${Math.floor(startNS)} 54fb726d48Sopenharmony_ci AND (fs.ts - ${recordStartNS}) <= ${Math.floor(endNS)}`; 55fb726d48Sopenharmony_ci break; 56fb726d48Sopenharmony_ci default: 57fb726d48Sopenharmony_ci break; 58fb726d48Sopenharmony_ci } 59fb726d48Sopenharmony_ci let sql = setFrameJanksSql(args, timeLimit, flag, fsType, fsFlag); 60fb726d48Sopenharmony_ci return sql; 61fb726d48Sopenharmony_ci}; 62fb726d48Sopenharmony_cifunction setFrameJanksSql(args: Args, timeLimit: string, flag: string, fsType: number, fsFlag: string): string { 63fb726d48Sopenharmony_ci //@ts-ignore 64fb726d48Sopenharmony_ci const recordStartNS = args.recordStartNS; 65fb726d48Sopenharmony_ci return `SELECT sf.id, 66fb726d48Sopenharmony_ci 'frameTime' as frameType, 67fb726d48Sopenharmony_ci fs.ipid, 68fb726d48Sopenharmony_ci fs.vsync as name, 69fb726d48Sopenharmony_ci fs.dur as appDur, 70fb726d48Sopenharmony_ci (sf.ts + sf.dur - fs.ts) as dur, 71fb726d48Sopenharmony_ci (fs.ts - ${recordStartNS}) AS ts, 72fb726d48Sopenharmony_ci fs.type, 73fb726d48Sopenharmony_ci ${flag} 74fb726d48Sopenharmony_ci pro.pid, 75fb726d48Sopenharmony_ci pro.name as cmdline, 76fb726d48Sopenharmony_ci (sf.ts - ${recordStartNS}) AS rsTs, 77fb726d48Sopenharmony_ci sf.vsync AS rsVsync, 78fb726d48Sopenharmony_ci sf.dur AS rsDur, 79fb726d48Sopenharmony_ci sf.ipid AS rsIpid, 80fb726d48Sopenharmony_ci proc.pid AS rsPid, 81fb726d48Sopenharmony_ci proc.name AS rsName 82fb726d48Sopenharmony_ci FROM frame_slice AS fs 83fb726d48Sopenharmony_ci LEFT JOIN process AS pro ON pro.id = fs.ipid 84fb726d48Sopenharmony_ci LEFT JOIN frame_slice AS sf ON fs.dst = sf.id 85fb726d48Sopenharmony_ci LEFT JOIN process AS proc ON proc.id = sf.ipid 86fb726d48Sopenharmony_ci WHERE fs.dst IS NOT NULL 87fb726d48Sopenharmony_ci AND fs.type = ${fsType} 88fb726d48Sopenharmony_ci ${fsFlag} ${timeLimit} 89fb726d48Sopenharmony_ci UNION 90fb726d48Sopenharmony_ci SELECT -1 as id, 91fb726d48Sopenharmony_ci 'frameTime' as frameType, 92fb726d48Sopenharmony_ci fs.ipid, 93fb726d48Sopenharmony_ci fs.vsync as name, 94fb726d48Sopenharmony_ci fs.dur as appDur, 95fb726d48Sopenharmony_ci fs.dur, 96fb726d48Sopenharmony_ci (fs.ts - ${recordStartNS}) AS ts, 97fb726d48Sopenharmony_ci fs.type, 98fb726d48Sopenharmony_ci fs.flag as jankTag, 99fb726d48Sopenharmony_ci pro.pid, 100fb726d48Sopenharmony_ci pro.name as cmdline, 101fb726d48Sopenharmony_ci NULL AS rsTs, NULL AS rsVsync, NULL AS rsDur, NULL AS rsIpid, NULL AS rsPid, NULL AS rsName 102fb726d48Sopenharmony_ci FROM frame_slice AS fs LEFT JOIN process AS pro ON pro.id = fs.ipid 103fb726d48Sopenharmony_ci WHERE fs.dst IS NULL 104fb726d48Sopenharmony_ci AND pro.name NOT LIKE '%render_service%' 105fb726d48Sopenharmony_ci AND fs.type = 1 106fb726d48Sopenharmony_ci ${fsFlag} ${timeLimit} 107fb726d48Sopenharmony_ci ORDER by ts`; 108fb726d48Sopenharmony_ci} 109fb726d48Sopenharmony_ci 110fb726d48Sopenharmony_ciexport function frameExpectedReceiver(data: unknown, proc: Function): void { 111fb726d48Sopenharmony_ci // @ts-ignore 112fb726d48Sopenharmony_ci if (data.params.trafic === TraficEnum.Memory) { 113fb726d48Sopenharmony_ci if (!processFrameList.has('FrameTimeLine_expected')) { 114fb726d48Sopenharmony_ci // @ts-ignore 115fb726d48Sopenharmony_ci let sql = frameJankDataSql(data.params, 'ExepectMemory'); 116fb726d48Sopenharmony_ci processFrameList.set('FrameTimeLine_expected', proc(sql)); 117fb726d48Sopenharmony_ci } 118fb726d48Sopenharmony_ci frameJanksReceiver(data, processFrameList.get('FrameTimeLine_expected')!, 'expected', true); 119fb726d48Sopenharmony_ci } else { 120fb726d48Sopenharmony_ci // @ts-ignore 121fb726d48Sopenharmony_ci let sql = frameJankDataSql(data.params, 'ExpectedData'); 122fb726d48Sopenharmony_ci let res = proc(sql); 123fb726d48Sopenharmony_ci // @ts-ignore 124fb726d48Sopenharmony_ci frameJanksReceiver(data, res, 'expect', data.params.trafic !== TraficEnum.SharedArrayBuffer); 125fb726d48Sopenharmony_ci } 126fb726d48Sopenharmony_ci} 127fb726d48Sopenharmony_ci 128fb726d48Sopenharmony_ciexport function frameActualReceiver(data: unknown, proc: Function): void { 129fb726d48Sopenharmony_ci // @ts-ignore 130fb726d48Sopenharmony_ci if (data.params.trafic === TraficEnum.Memory) { 131fb726d48Sopenharmony_ci if (!processFrameList.has('FrameTimeLine_actual')) { 132fb726d48Sopenharmony_ci // @ts-ignore 133fb726d48Sopenharmony_ci let sql = frameJankDataSql(data.params, 'ActualMemoryData'); 134fb726d48Sopenharmony_ci processFrameList.set('FrameTimeLine_actual', proc(sql)); 135fb726d48Sopenharmony_ci } 136fb726d48Sopenharmony_ci frameJanksReceiver(data, processFrameList.get('FrameTimeLine_actual')!, 'actual', true); 137fb726d48Sopenharmony_ci } else { 138fb726d48Sopenharmony_ci // @ts-ignore 139fb726d48Sopenharmony_ci let sql = frameJankDataSql(data.params, 'ActualData'); 140fb726d48Sopenharmony_ci let res = proc(sql); 141fb726d48Sopenharmony_ci // @ts-ignore 142fb726d48Sopenharmony_ci frameJanksReceiver(data, res, 'actual', data.params.trafic !== TraficEnum.SharedArrayBuffer); 143fb726d48Sopenharmony_ci } 144fb726d48Sopenharmony_ci} 145fb726d48Sopenharmony_cilet isIntersect = (leftData: JanksStruct, rightData: JanksStruct): boolean => 146fb726d48Sopenharmony_ci Math.max(leftData.ts! + leftData.dur!, rightData.ts! + rightData.dur!) - Math.min(leftData.ts!, rightData.ts!) < 147fb726d48Sopenharmony_ci leftData.dur! + rightData.dur!; 148fb726d48Sopenharmony_cifunction frameJanksReceiver(data: unknown, res: unknown[], type: string, transfer: boolean): void { 149fb726d48Sopenharmony_ci let frameJanks = new FrameJanks(data, transfer, res.length); 150fb726d48Sopenharmony_ci let unitIndex: number = 1; 151fb726d48Sopenharmony_ci let depths: unknown[] = []; 152fb726d48Sopenharmony_ci for (let index = 0; index < res.length; index++) { 153fb726d48Sopenharmony_ci let item = res[index]; 154fb726d48Sopenharmony_ci // @ts-ignore 155fb726d48Sopenharmony_ci data.params.trafic === TraficEnum.ProtoBuffer && (item = item.frameData); 156fb726d48Sopenharmony_ci // @ts-ignore 157fb726d48Sopenharmony_ci if (!item.dur || item.dur < 0) { 158fb726d48Sopenharmony_ci continue; 159fb726d48Sopenharmony_ci } 160fb726d48Sopenharmony_ci if (depths.length === 0) { 161fb726d48Sopenharmony_ci // @ts-ignore 162fb726d48Sopenharmony_ci item.depth = 0; 163fb726d48Sopenharmony_ci depths[0] = item; 164fb726d48Sopenharmony_ci } else { 165fb726d48Sopenharmony_ci let depthIndex: number = 0; 166fb726d48Sopenharmony_ci let isContinue: boolean = true; 167fb726d48Sopenharmony_ci while (isContinue) { 168fb726d48Sopenharmony_ci // @ts-ignore 169fb726d48Sopenharmony_ci if (isIntersect(depths[depthIndex], item)) { 170fb726d48Sopenharmony_ci if (depths[depthIndex + unitIndex] === undefined || !depths[depthIndex + unitIndex]) { 171fb726d48Sopenharmony_ci // @ts-ignore 172fb726d48Sopenharmony_ci item.depth = depthIndex + unitIndex; 173fb726d48Sopenharmony_ci depths[depthIndex + unitIndex] = item; 174fb726d48Sopenharmony_ci isContinue = false; 175fb726d48Sopenharmony_ci } 176fb726d48Sopenharmony_ci } else { 177fb726d48Sopenharmony_ci // @ts-ignore 178fb726d48Sopenharmony_ci item.depth = depthIndex; 179fb726d48Sopenharmony_ci depths[depthIndex] = item; 180fb726d48Sopenharmony_ci isContinue = false; 181fb726d48Sopenharmony_ci } 182fb726d48Sopenharmony_ci depthIndex++; 183fb726d48Sopenharmony_ci } 184fb726d48Sopenharmony_ci } 185fb726d48Sopenharmony_ci setFrameJanks(frameJanks, item, index); 186fb726d48Sopenharmony_ci } 187fb726d48Sopenharmony_ci postFrameJanksMessage(data, transfer, frameJanks, res.length); 188fb726d48Sopenharmony_ci} 189fb726d48Sopenharmony_cifunction setFrameJanks(frameJanks: FrameJanks, itemData: unknown, index: number): void { 190fb726d48Sopenharmony_ci // @ts-ignore 191fb726d48Sopenharmony_ci frameJanks.id[index] = itemData.id; 192fb726d48Sopenharmony_ci // @ts-ignore 193fb726d48Sopenharmony_ci frameJanks.ipId[index] = itemData.ipid; 194fb726d48Sopenharmony_ci // @ts-ignore 195fb726d48Sopenharmony_ci frameJanks.name[index] = itemData.name; 196fb726d48Sopenharmony_ci // @ts-ignore 197fb726d48Sopenharmony_ci frameJanks.appDur[index] = itemData.appDur; 198fb726d48Sopenharmony_ci // @ts-ignore 199fb726d48Sopenharmony_ci frameJanks.dur[index] = itemData.dur; 200fb726d48Sopenharmony_ci // @ts-ignore 201fb726d48Sopenharmony_ci frameJanks.ts[index] = itemData.ts; 202fb726d48Sopenharmony_ci // @ts-ignore 203fb726d48Sopenharmony_ci frameJanks.jankTag[index] = itemData.jankTag ? itemData.jankTag : 0; 204fb726d48Sopenharmony_ci // @ts-ignore 205fb726d48Sopenharmony_ci frameJanks.pid[index] = itemData.pid; 206fb726d48Sopenharmony_ci // @ts-ignore 207fb726d48Sopenharmony_ci frameJanks.rsTs[index] = itemData.rsTs; 208fb726d48Sopenharmony_ci // @ts-ignore 209fb726d48Sopenharmony_ci frameJanks.rsVsync[index] = itemData.rsVsync; 210fb726d48Sopenharmony_ci // @ts-ignore 211fb726d48Sopenharmony_ci frameJanks.rsDur[index] = itemData.rsDur; 212fb726d48Sopenharmony_ci // @ts-ignore 213fb726d48Sopenharmony_ci frameJanks.rsIpId[index] = itemData.rsIpid; 214fb726d48Sopenharmony_ci // @ts-ignore 215fb726d48Sopenharmony_ci frameJanks.rsPid[index] = itemData.rsPid; 216fb726d48Sopenharmony_ci // @ts-ignore 217fb726d48Sopenharmony_ci frameJanks.rsName[index] = itemData.rsName; 218fb726d48Sopenharmony_ci // @ts-ignore 219fb726d48Sopenharmony_ci frameJanks.depth[index] = itemData.depth; 220fb726d48Sopenharmony_ci} 221fb726d48Sopenharmony_cifunction setResults(transfer: boolean, frameJanks: FrameJanks): unknown { 222fb726d48Sopenharmony_ci return transfer 223fb726d48Sopenharmony_ci ? { 224fb726d48Sopenharmony_ci id: frameJanks.id.buffer, 225fb726d48Sopenharmony_ci ipid: frameJanks.ipId.buffer, 226fb726d48Sopenharmony_ci name: frameJanks.name.buffer, 227fb726d48Sopenharmony_ci app_dur: frameJanks.appDur.buffer, 228fb726d48Sopenharmony_ci dur: frameJanks.dur.buffer, 229fb726d48Sopenharmony_ci ts: frameJanks.ts.buffer, 230fb726d48Sopenharmony_ci jank_tag: frameJanks.jankTag.buffer, 231fb726d48Sopenharmony_ci pid: frameJanks.pid.buffer, 232fb726d48Sopenharmony_ci rs_ts: frameJanks.rsTs.buffer, 233fb726d48Sopenharmony_ci rs_vsync: frameJanks.rsVsync.buffer, 234fb726d48Sopenharmony_ci rs_dur: frameJanks.rsDur.buffer, 235fb726d48Sopenharmony_ci rs_ipid: frameJanks.rsIpId.buffer, 236fb726d48Sopenharmony_ci rs_pid: frameJanks.rsPid.buffer, 237fb726d48Sopenharmony_ci rs_name: frameJanks.rsName.buffer, 238fb726d48Sopenharmony_ci depth: frameJanks.depth.buffer, 239fb726d48Sopenharmony_ci } 240fb726d48Sopenharmony_ci : {}; 241fb726d48Sopenharmony_ci} 242fb726d48Sopenharmony_cifunction postFrameJanksMessage(data: unknown, transfer: boolean, frameJanks: FrameJanks, len: number): void { 243fb726d48Sopenharmony_ci let results = setResults(transfer, frameJanks); 244fb726d48Sopenharmony_ci (self as unknown as Worker).postMessage( 245fb726d48Sopenharmony_ci { 246fb726d48Sopenharmony_ci // @ts-ignore 247fb726d48Sopenharmony_ci id: data.id, 248fb726d48Sopenharmony_ci // @ts-ignore 249fb726d48Sopenharmony_ci action: data.action, 250fb726d48Sopenharmony_ci results: results, 251fb726d48Sopenharmony_ci len: len, 252fb726d48Sopenharmony_ci transfer: transfer, 253fb726d48Sopenharmony_ci }, 254fb726d48Sopenharmony_ci transfer 255fb726d48Sopenharmony_ci ? [ 256fb726d48Sopenharmony_ci frameJanks.id.buffer, 257fb726d48Sopenharmony_ci frameJanks.ipId.buffer, 258fb726d48Sopenharmony_ci frameJanks.name.buffer, 259fb726d48Sopenharmony_ci frameJanks.appDur.buffer, 260fb726d48Sopenharmony_ci frameJanks.dur.buffer, 261fb726d48Sopenharmony_ci frameJanks.ts.buffer, 262fb726d48Sopenharmony_ci frameJanks.jankTag.buffer, 263fb726d48Sopenharmony_ci frameJanks.pid.buffer, 264fb726d48Sopenharmony_ci frameJanks.rsTs.buffer, 265fb726d48Sopenharmony_ci frameJanks.rsVsync.buffer, 266fb726d48Sopenharmony_ci frameJanks.rsDur.buffer, 267fb726d48Sopenharmony_ci frameJanks.rsIpId.buffer, 268fb726d48Sopenharmony_ci frameJanks.rsPid.buffer, 269fb726d48Sopenharmony_ci frameJanks.rsName.buffer, 270fb726d48Sopenharmony_ci frameJanks.depth.buffer, 271fb726d48Sopenharmony_ci ] 272fb726d48Sopenharmony_ci : [] 273fb726d48Sopenharmony_ci ); 274fb726d48Sopenharmony_ci} 275fb726d48Sopenharmony_ciclass FrameJanks { 276fb726d48Sopenharmony_ci id: Uint16Array; 277fb726d48Sopenharmony_ci ipId: Uint16Array; 278fb726d48Sopenharmony_ci name: Int32Array; 279fb726d48Sopenharmony_ci appDur: Float64Array; 280fb726d48Sopenharmony_ci dur: Float64Array; 281fb726d48Sopenharmony_ci ts: Float64Array; 282fb726d48Sopenharmony_ci jankTag: Uint16Array; 283fb726d48Sopenharmony_ci pid: Uint16Array; 284fb726d48Sopenharmony_ci rsTs: Float64Array; 285fb726d48Sopenharmony_ci rsVsync: Int32Array; 286fb726d48Sopenharmony_ci rsDur: Float64Array; 287fb726d48Sopenharmony_ci rsIpId: Uint16Array; 288fb726d48Sopenharmony_ci rsPid: Uint16Array; 289fb726d48Sopenharmony_ci rsName: Int32Array; 290fb726d48Sopenharmony_ci depth: Uint16Array; 291fb726d48Sopenharmony_ci constructor(data: unknown, transfer: boolean, len: number) { 292fb726d48Sopenharmony_ci // @ts-ignore 293fb726d48Sopenharmony_ci this.id = new Uint16Array(transfer ? len : data.params.sharedArrayBuffers.id); 294fb726d48Sopenharmony_ci // @ts-ignore 295fb726d48Sopenharmony_ci this.ipId = new Uint16Array(transfer ? len : data.params.sharedArrayBuffers.ipid); 296fb726d48Sopenharmony_ci // @ts-ignore 297fb726d48Sopenharmony_ci this.name = new Int32Array(transfer ? len : data.params.sharedArrayBuffers.name); 298fb726d48Sopenharmony_ci // @ts-ignore 299fb726d48Sopenharmony_ci this.appDur = new Float64Array(transfer ? len : data.params.sharedArrayBuffers.app_dur); 300fb726d48Sopenharmony_ci // @ts-ignore 301fb726d48Sopenharmony_ci this.dur = new Float64Array(transfer ? len : data.params.sharedArrayBuffers.dur); 302fb726d48Sopenharmony_ci // @ts-ignore 303fb726d48Sopenharmony_ci this.ts = new Float64Array(transfer ? len : data.params.sharedArrayBuffers.ts); 304fb726d48Sopenharmony_ci // @ts-ignore 305fb726d48Sopenharmony_ci this.jankTag = new Uint16Array(transfer ? len : data.params.sharedArrayBuffers.jank_tag); 306fb726d48Sopenharmony_ci // @ts-ignore 307fb726d48Sopenharmony_ci this.pid = new Uint16Array(transfer ? len : data.params.sharedArrayBuffers.pid); 308fb726d48Sopenharmony_ci // @ts-ignore 309fb726d48Sopenharmony_ci this.rsTs = new Float64Array(transfer ? len : data.params.sharedArrayBuffers.rs_ts); 310fb726d48Sopenharmony_ci // @ts-ignore 311fb726d48Sopenharmony_ci this.rsVsync = new Int32Array(transfer ? len : data.params.sharedArrayBuffers.rs_vsync); 312fb726d48Sopenharmony_ci // @ts-ignore 313fb726d48Sopenharmony_ci this.rsDur = new Float64Array(transfer ? len : data.params.sharedArrayBuffers.rs_dur); 314fb726d48Sopenharmony_ci // @ts-ignore 315fb726d48Sopenharmony_ci this.rsIpId = new Uint16Array(transfer ? len : data.params.sharedArrayBuffers.rs_ipid); 316fb726d48Sopenharmony_ci // @ts-ignore 317fb726d48Sopenharmony_ci this.rsPid = new Uint16Array(transfer ? len : data.params.sharedArrayBuffers.rs_pid); 318fb726d48Sopenharmony_ci // @ts-ignore 319fb726d48Sopenharmony_ci this.rsName = new Int32Array(transfer ? len : data.params.sharedArrayBuffers.rs_name); 320fb726d48Sopenharmony_ci // @ts-ignore 321fb726d48Sopenharmony_ci this.depth = new Uint16Array(transfer ? len : data.params.sharedArrayBuffers.depth); 322fb726d48Sopenharmony_ci } 323fb726d48Sopenharmony_ci} 324