1fb726d48Sopenharmony_ci/* 2fb726d48Sopenharmony_ci * Copyright (C) 2022 Huawei Device Co., Ltd. 3fb726d48Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4fb726d48Sopenharmony_ci * you may not use this file except in compliance with the License. 5fb726d48Sopenharmony_ci * You may obtain a copy of the License at 6fb726d48Sopenharmony_ci * 7fb726d48Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8fb726d48Sopenharmony_ci * 9fb726d48Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10fb726d48Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11fb726d48Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12fb726d48Sopenharmony_ci * See the License for the specific language governing permissions and 13fb726d48Sopenharmony_ci * limitations under the License. 14fb726d48Sopenharmony_ci */ 15fb726d48Sopenharmony_ciimport { Args } from './CommonArgs'; 16fb726d48Sopenharmony_ciimport { TraficEnum } from './utils/QueryEnum'; 17fb726d48Sopenharmony_ci 18fb726d48Sopenharmony_ciexport const chartSMapsDataSqlMem = (args: Args): string => { 19fb726d48Sopenharmony_ci return `SELECT (A.timestamp - ${args.recordStartNS}) as startNs, 20fb726d48Sopenharmony_ci sum(${args.name}) * 1024 as value 21fb726d48Sopenharmony_ci FROM smaps A 22fb726d48Sopenharmony_ci WHERE A.timestamp < ${args.recordEndNS} 23fb726d48Sopenharmony_ci GROUP by A.timestamp`; 24fb726d48Sopenharmony_ci}; 25fb726d48Sopenharmony_ciexport const chartDmaDataSqlMem = (args: Args): string => { 26fb726d48Sopenharmony_ci return `SELECT (A.ts - ${args.recordStartNS}) as startNs, 27fb726d48Sopenharmony_ci sum(A.size) as value 28fb726d48Sopenharmony_ci FROM memory_dma A 29fb726d48Sopenharmony_ci WHERE A.flag = 0 30fb726d48Sopenharmony_ci AND ${args.ipid} = A.ipid 31fb726d48Sopenharmony_ci AND A.ts < ${args.recordEndNS} 32fb726d48Sopenharmony_ci GROUP by A.ts`; 33fb726d48Sopenharmony_ci}; 34fb726d48Sopenharmony_ciexport const chartGpuMemoryDataSqlMem = (args: Args): string => { 35fb726d48Sopenharmony_ci return ` SELECT (A.ts - ${args.recordStartNS}) as startNs, 36fb726d48Sopenharmony_ci sum(A.used_gpu_size) as value 37fb726d48Sopenharmony_ci FROM memory_process_gpu A 38fb726d48Sopenharmony_ci WHERE ${args.ipid} = A.ipid 39fb726d48Sopenharmony_ci AND A.ts < ${args.recordEndNS} 40fb726d48Sopenharmony_ci GROUP by A.ts`; 41fb726d48Sopenharmony_ci}; 42fb726d48Sopenharmony_ciexport const chartGpuResourceDataSqlMem = (args: Args): string => { 43fb726d48Sopenharmony_ci return `SELECT subquery1.startNs, 44fb726d48Sopenharmony_ci (IFNULL(subquery1.totalSize, 0) - IFNULL(subquery2.size, 0)) AS value 45fb726d48Sopenharmony_ci FROM 46fb726d48Sopenharmony_ci (SELECT (ts - ${args.recordStartNS}) AS startNs,SUM(total_size) AS totalSize 47fb726d48Sopenharmony_ci FROM memory_profile 48fb726d48Sopenharmony_ci WHERE ts between ${args.recordStartNS} and ${args.recordEndNS} 49fb726d48Sopenharmony_ci GROUP BY ts) AS subquery1 50fb726d48Sopenharmony_ci LEFT JOIN 51fb726d48Sopenharmony_ci (SELECT (ts - ${args.recordStartNS}) AS startNs, SUM(size) AS size 52fb726d48Sopenharmony_ci FROM memory_window_gpu 53fb726d48Sopenharmony_ci WHERE ts between ${args.recordStartNS} and ${args.recordEndNS} 54fb726d48Sopenharmony_ci AND category_name_id = ${args.scratchId} 55fb726d48Sopenharmony_ci GROUP BY ts) AS subquery2 56fb726d48Sopenharmony_ci ON subquery1.startNs = subquery2.startNs`; 57fb726d48Sopenharmony_ci}; 58fb726d48Sopenharmony_ciexport const chartGpuDataSqlMem = (args: Args): string => { 59fb726d48Sopenharmony_ci return `select (ts - ${args.recordStartNS}) startNs, 60fb726d48Sopenharmony_ci sum(value) * 1024 value 61fb726d48Sopenharmony_ci from process_measure 62fb726d48Sopenharmony_ci where filter_id = ( 63fb726d48Sopenharmony_ci select id 64fb726d48Sopenharmony_ci from process_measure_filter 65fb726d48Sopenharmony_ci where name = ${args.name} and ipid = ${args.ipid} 66fb726d48Sopenharmony_ci ) 67fb726d48Sopenharmony_ci and ts between ${args.recordStartNS} AND ${args.recordEndNS} 68fb726d48Sopenharmony_ci group by ts;`; 69fb726d48Sopenharmony_ci}; 70fb726d48Sopenharmony_ciexport const chartGpuTotalDataSqlMem = (args: Args): string => { 71fb726d48Sopenharmony_ci let moduleCondition = args.moduleId === null ? '' : `and module_name_id = ${args.moduleId}`; 72fb726d48Sopenharmony_ci return `select (ts - ${args.recordStartNS}) startNs, 73fb726d48Sopenharmony_ci sum(size) value 74fb726d48Sopenharmony_ci from memory_window_gpu 75fb726d48Sopenharmony_ci where window_name_id = 0 ${moduleCondition} 76fb726d48Sopenharmony_ci and ts < ${args.recordEndNS} 77fb726d48Sopenharmony_ci group by ts;`; 78fb726d48Sopenharmony_ci}; 79fb726d48Sopenharmony_ciexport const chartGpuWindowDataSqlMem = (args: Args): string => { 80fb726d48Sopenharmony_ci let moduleCondition = args.moduleId === null ? '' : `and module_name_id = ${args.moduleId}`; 81fb726d48Sopenharmony_ci return `select (ts - ${args.recordStartNS}) startNs, 82fb726d48Sopenharmony_ci sum(size) value 83fb726d48Sopenharmony_ci from memory_window_gpu 84fb726d48Sopenharmony_ci where window_name_id = ${args.windowId} ${moduleCondition} 85fb726d48Sopenharmony_ci and ts < ${args.recordEndNS} 86fb726d48Sopenharmony_ci group by ts`; 87fb726d48Sopenharmony_ci}; 88fb726d48Sopenharmony_ciexport const chartShmDataSqlMem = (args: Args): string => { 89fb726d48Sopenharmony_ci return `SELECT (A.ts - ${args.recordStartNS}) as startNs, 90fb726d48Sopenharmony_ci sum(A.size) as value 91fb726d48Sopenharmony_ci FROM memory_ashmem A 92fb726d48Sopenharmony_ci where A.ipid = ${args.ipid} 93fb726d48Sopenharmony_ci AND A.ts < ${args.recordEndNS} 94fb726d48Sopenharmony_ci AND flag = 0 95fb726d48Sopenharmony_ci GROUP by A.ts`; 96fb726d48Sopenharmony_ci}; 97fb726d48Sopenharmony_ciexport const chartPurgeableDataSqlMem = (args: Args): string => { 98fb726d48Sopenharmony_ci const pinSql = args.isPin ? ' AND a.ref_count > 0' : ''; 99fb726d48Sopenharmony_ci const names = args.isPin ? " ('mem.purg_pin')" : "('mem.purg_sum')"; 100fb726d48Sopenharmony_ci return `SELECT startNs, 101fb726d48Sopenharmony_ci sum( value ) AS value 102fb726d48Sopenharmony_ci FROM (SELECT m.ts - ${args.recordStartNS} AS startNs, 103fb726d48Sopenharmony_ci sum(m.value) AS value 104fb726d48Sopenharmony_ci FROM process_measure m 105fb726d48Sopenharmony_ci LEFT JOIN process_measure_filter f ON f.id = m.filter_id 106fb726d48Sopenharmony_ci WHERE m.ts < ${args.recordEndNS} 107fb726d48Sopenharmony_ci AND f.name = ${names} 108fb726d48Sopenharmony_ci AND f.ipid = ${args.ipid} 109fb726d48Sopenharmony_ci GROUP BY m.ts 110fb726d48Sopenharmony_ci UNION ALL 111fb726d48Sopenharmony_ci SELECT a.ts - ${args.recordStartNS} AS startNs, 112fb726d48Sopenharmony_ci sum( a.pss ) AS value 113fb726d48Sopenharmony_ci FROM memory_ashmem a 114fb726d48Sopenharmony_ci WHERE a.ts < ${args.recordEndNS} 115fb726d48Sopenharmony_ci AND a.flag = 0 116fb726d48Sopenharmony_ci AND a.ipid = ${args.ipid} 117fb726d48Sopenharmony_ci ${pinSql} 118fb726d48Sopenharmony_ci GROUP BY a.ts) 119fb726d48Sopenharmony_ci GROUP BY startNs`; 120fb726d48Sopenharmony_ci}; 121fb726d48Sopenharmony_ciexport const abilityPurgeablelDataSqlMem = (args: Args): string => { 122fb726d48Sopenharmony_ci const pinCondition = args.isPin ? ' AND a.ref_count > 0' : ''; 123fb726d48Sopenharmony_ci const names = args.isPin ? " ('sys.mem.pined.purg')" : "('sys.mem.active.purg','sys.mem.inactive.purg')"; 124fb726d48Sopenharmony_ci return `SELECT startNs, 125fb726d48Sopenharmony_ci sum( value ) AS value 126fb726d48Sopenharmony_ci FROM (SELECT m.ts - ${args.recordStartNS} AS startNs, 127fb726d48Sopenharmony_ci sum( m.value ) AS value 128fb726d48Sopenharmony_ci FROM sys_mem_measure m 129fb726d48Sopenharmony_ci LEFT JOIN sys_event_filter f ON f.id = m.filter_id 130fb726d48Sopenharmony_ci WHERE m.ts < ${args.recordEndNS} 131fb726d48Sopenharmony_ci AND f.name IN ${names} 132fb726d48Sopenharmony_ci GROUP BY m.ts 133fb726d48Sopenharmony_ci UNION ALL 134fb726d48Sopenharmony_ci SELECT a.ts - ${args.recordStartNS} AS startNs, 135fb726d48Sopenharmony_ci sum( a.size ) AS value 136fb726d48Sopenharmony_ci FROM memory_ashmem a 137fb726d48Sopenharmony_ci WHERE a.ts < ${args.recordEndNS} 138fb726d48Sopenharmony_ci AND a.flag = 0 139fb726d48Sopenharmony_ci ${pinCondition} 140fb726d48Sopenharmony_ci GROUP BY a.ts ) 141fb726d48Sopenharmony_ci GROUP BY startNs`; 142fb726d48Sopenharmony_ci}; 143fb726d48Sopenharmony_ciexport const abilityDmaDataSqlMem = (args: Args): string => { 144fb726d48Sopenharmony_ci return `SELECT (A.ts - ${args.recordStartNS}) as startNs, 145fb726d48Sopenharmony_ci sum(A.size) as value, 146fb726d48Sopenharmony_ci E.data as expTaskComm, 147fb726d48Sopenharmony_ci A.flag as flag 148fb726d48Sopenharmony_ci FROM memory_dma A 149fb726d48Sopenharmony_ci left join data_dict as E on E.id=A.exp_task_comm_id 150fb726d48Sopenharmony_ci WHERE A.flag = 0 151fb726d48Sopenharmony_ci AND A.ts < ${args.recordEndNS} 152fb726d48Sopenharmony_ci GROUP by A.ts;`; 153fb726d48Sopenharmony_ci}; 154fb726d48Sopenharmony_ciexport const abilityGpuMemoryDataSqlMem = (args: Args): string => { 155fb726d48Sopenharmony_ci return `SELECT 156fb726d48Sopenharmony_ci (A.ts - ${args.recordStartNS}) as startNs, 157fb726d48Sopenharmony_ci sum(A.used_gpu_size) as value 158fb726d48Sopenharmony_ci FROM memory_process_gpu A 159fb726d48Sopenharmony_ci WHERE A.ts < ${args.recordEndNS} 160fb726d48Sopenharmony_ci GROUP by A.ts;`; 161fb726d48Sopenharmony_ci}; 162fb726d48Sopenharmony_ci// @ts-ignore 163fb726d48Sopenharmony_cilet sMapsList: Array<unknown> = []; // @ts-ignore 164fb726d48Sopenharmony_cilet dmaList: Array<unknown> = []; // @ts-ignore 165fb726d48Sopenharmony_cilet gpuMemoryList: Array<unknown> = []; // @ts-ignore 166fb726d48Sopenharmony_cilet gpuList: Array<unknown> = []; // @ts-ignore 167fb726d48Sopenharmony_cilet gpuResourceList: Array<unknown> = []; // @ts-ignore 168fb726d48Sopenharmony_cilet gpuTotalList: Array<unknown> = []; // @ts-ignore 169fb726d48Sopenharmony_cilet gpuWindowList: Array<unknown> = []; // @ts-ignore 170fb726d48Sopenharmony_cilet shmList: Array<unknown> = []; // @ts-ignore 171fb726d48Sopenharmony_cilet purgeableList: Array<unknown> = []; // @ts-ignore 172fb726d48Sopenharmony_cilet sMapsMap = new Map<string, Array<unknown>>(); // @ts-ignore 173fb726d48Sopenharmony_cilet purgeableMap = new Map<string, Array<unknown>>(); // @ts-ignore 174fb726d48Sopenharmony_cilet gpuMap = new Map<string, Array<unknown>>(); // @ts-ignore 175fb726d48Sopenharmony_cilet abilityPurgeableMap: Map<string, Array<unknown>> = new Map(); // @ts-ignore 176fb726d48Sopenharmony_cilet abilityPurgeableList: Array<unknown> = []; // @ts-ignore 177fb726d48Sopenharmony_cilet abilityDmaList: Array<unknown> = []; // @ts-ignore 178fb726d48Sopenharmony_cilet abilityGpuMemoryList: Array<unknown> = []; 179fb726d48Sopenharmony_ci 180fb726d48Sopenharmony_ciexport function resetVmTracker(): void { 181fb726d48Sopenharmony_ci sMapsList = []; 182fb726d48Sopenharmony_ci dmaList = []; 183fb726d48Sopenharmony_ci gpuMemoryList = []; 184fb726d48Sopenharmony_ci gpuList = []; 185fb726d48Sopenharmony_ci gpuResourceList = []; 186fb726d48Sopenharmony_ci gpuTotalList = []; 187fb726d48Sopenharmony_ci gpuWindowList = []; 188fb726d48Sopenharmony_ci shmList = []; 189fb726d48Sopenharmony_ci purgeableList = []; 190fb726d48Sopenharmony_ci sMapsMap.clear(); 191fb726d48Sopenharmony_ci purgeableMap.clear(); 192fb726d48Sopenharmony_ci gpuMap.clear(); 193fb726d48Sopenharmony_ci} 194fb726d48Sopenharmony_ci 195fb726d48Sopenharmony_ciexport function resetAbility(): void { 196fb726d48Sopenharmony_ci abilityPurgeableList = []; 197fb726d48Sopenharmony_ci abilityDmaList = []; 198fb726d48Sopenharmony_ci abilityGpuMemoryList = []; 199fb726d48Sopenharmony_ci abilityPurgeableMap.clear(); 200fb726d48Sopenharmony_ci} 201fb726d48Sopenharmony_ci 202fb726d48Sopenharmony_ciexport function sMapsDataReceiver(data: unknown, proc: Function): void { 203fb726d48Sopenharmony_ci // @ts-ignore 204fb726d48Sopenharmony_ci if (!sMapsMap.has(data.params.name)) { 205fb726d48Sopenharmony_ci // @ts-ignore 206fb726d48Sopenharmony_ci sMapsList = proc(chartSMapsDataSqlMem(data.params)); // @ts-ignore 207fb726d48Sopenharmony_ci sMapsMap.set(data.params.name, sMapsList); 208fb726d48Sopenharmony_ci } // @ts-ignore 209fb726d48Sopenharmony_ci let list = sMapsMap.get(data.params.name) || []; 210fb726d48Sopenharmony_ci arrayBufferHandler(data, list, true); 211fb726d48Sopenharmony_ci} 212fb726d48Sopenharmony_ci 213fb726d48Sopenharmony_ciexport function dmaDataReceiver(data: unknown, proc: Function): void { 214fb726d48Sopenharmony_ci if (dmaList.length === 0) { 215fb726d48Sopenharmony_ci // @ts-ignore 216fb726d48Sopenharmony_ci dmaList = proc(chartDmaDataSqlMem(data.params)); 217fb726d48Sopenharmony_ci } 218fb726d48Sopenharmony_ci arrayBufferHandler(data, dmaList, true); 219fb726d48Sopenharmony_ci} 220fb726d48Sopenharmony_ci 221fb726d48Sopenharmony_ciexport function gpuMemoryDataReceiver(data: unknown, proc: Function): void { 222fb726d48Sopenharmony_ci if (gpuMemoryList.length === 0) { 223fb726d48Sopenharmony_ci // @ts-ignore 224fb726d48Sopenharmony_ci gpuMemoryList = proc(chartGpuMemoryDataSqlMem(data.params)); 225fb726d48Sopenharmony_ci } 226fb726d48Sopenharmony_ci arrayBufferHandler(data, gpuMemoryList, true); 227fb726d48Sopenharmony_ci} 228fb726d48Sopenharmony_ci 229fb726d48Sopenharmony_ciexport function gpuDataReceiver(data: unknown, proc: Function): void { 230fb726d48Sopenharmony_ci // @ts-ignore 231fb726d48Sopenharmony_ci if (!gpuMap.has(data.params.name)) { 232fb726d48Sopenharmony_ci // @ts-ignore 233fb726d48Sopenharmony_ci gpuList = proc(chartGpuDataSqlMem(data.params)); // @ts-ignore 234fb726d48Sopenharmony_ci gpuMap.set(data.params.name, gpuList); 235fb726d48Sopenharmony_ci } // @ts-ignore 236fb726d48Sopenharmony_ci let list = gpuMap.get(data.params.name) || []; 237fb726d48Sopenharmony_ci arrayBufferHandler(data, list, true); 238fb726d48Sopenharmony_ci} 239fb726d48Sopenharmony_ci 240fb726d48Sopenharmony_ciexport function gpuResourceDataReceiver(data: unknown, proc: Function): void { 241fb726d48Sopenharmony_ci if (gpuResourceList.length === 0) { 242fb726d48Sopenharmony_ci // @ts-ignore 243fb726d48Sopenharmony_ci gpuResourceList = proc(chartGpuResourceDataSqlMem(data.params)); 244fb726d48Sopenharmony_ci } 245fb726d48Sopenharmony_ci arrayBufferHandler(data, gpuResourceList, true); 246fb726d48Sopenharmony_ci} 247fb726d48Sopenharmony_ci 248fb726d48Sopenharmony_ciexport function gpuTotalDataReceiver(data: unknown, proc: Function): void { 249fb726d48Sopenharmony_ci // @ts-ignore 250fb726d48Sopenharmony_ci if (gpuTotalList.length === 0 || data.params.moduleId) { 251fb726d48Sopenharmony_ci // @ts-ignore 252fb726d48Sopenharmony_ci gpuTotalList = proc(chartGpuTotalDataSqlMem(data.params)); 253fb726d48Sopenharmony_ci } 254fb726d48Sopenharmony_ci arrayBufferHandler(data, gpuTotalList, true); 255fb726d48Sopenharmony_ci} 256fb726d48Sopenharmony_ci 257fb726d48Sopenharmony_ciexport function gpuWindowDataReceiver(data: unknown, proc: Function): void { 258fb726d48Sopenharmony_ci // @ts-ignore 259fb726d48Sopenharmony_ci if (gpuWindowList.length === 0 || data.params.moduleId) { 260fb726d48Sopenharmony_ci // @ts-ignore 261fb726d48Sopenharmony_ci gpuWindowList = proc(chartGpuWindowDataSqlMem(data.params)); 262fb726d48Sopenharmony_ci } 263fb726d48Sopenharmony_ci arrayBufferHandler(data, gpuWindowList, true); 264fb726d48Sopenharmony_ci} 265fb726d48Sopenharmony_ci 266fb726d48Sopenharmony_ciexport function shmDataReceiver(data: unknown, proc: Function): void { 267fb726d48Sopenharmony_ci if (shmList.length === 0) { 268fb726d48Sopenharmony_ci // @ts-ignore 269fb726d48Sopenharmony_ci shmList = proc(chartShmDataSqlMem(data.params)); 270fb726d48Sopenharmony_ci } 271fb726d48Sopenharmony_ci arrayBufferHandler(data, shmList, true); 272fb726d48Sopenharmony_ci} 273fb726d48Sopenharmony_ci 274fb726d48Sopenharmony_ciexport function purgeableDataReceiver(data: unknown, proc: Function): void { 275fb726d48Sopenharmony_ci let key: string = ''; 276fb726d48Sopenharmony_ci if ( 277fb726d48Sopenharmony_ci // @ts-ignore 278fb726d48Sopenharmony_ci data.params.isPin 279fb726d48Sopenharmony_ci ) { 280fb726d48Sopenharmony_ci key = 'pin'; 281fb726d48Sopenharmony_ci } else { 282fb726d48Sopenharmony_ci key = 'total'; 283fb726d48Sopenharmony_ci } 284fb726d48Sopenharmony_ci if ( 285fb726d48Sopenharmony_ci !purgeableMap.has( 286fb726d48Sopenharmony_ci // @ts-ignore 287fb726d48Sopenharmony_ci data.params.isPin 288fb726d48Sopenharmony_ci ) 289fb726d48Sopenharmony_ci ) { 290fb726d48Sopenharmony_ci purgeableList = proc( 291fb726d48Sopenharmony_ci chartPurgeableDataSqlMem( 292fb726d48Sopenharmony_ci // @ts-ignore 293fb726d48Sopenharmony_ci data.params 294fb726d48Sopenharmony_ci ) 295fb726d48Sopenharmony_ci ); 296fb726d48Sopenharmony_ci purgeableMap.set(key, purgeableList); 297fb726d48Sopenharmony_ci } 298fb726d48Sopenharmony_ci let list = purgeableMap.get(key) || []; 299fb726d48Sopenharmony_ci arrayBufferHandler(data, list, true); 300fb726d48Sopenharmony_ci} 301fb726d48Sopenharmony_ci 302fb726d48Sopenharmony_ciexport function abilityPurgeableDataReceiver(data: unknown, proc: Function): void { 303fb726d48Sopenharmony_ci let key = ''; 304fb726d48Sopenharmony_ci if ( 305fb726d48Sopenharmony_ci // @ts-ignore 306fb726d48Sopenharmony_ci data.params.isPin 307fb726d48Sopenharmony_ci ) { 308fb726d48Sopenharmony_ci key = 'pin'; 309fb726d48Sopenharmony_ci } else { 310fb726d48Sopenharmony_ci key = 'total'; 311fb726d48Sopenharmony_ci } 312fb726d48Sopenharmony_ci if (!abilityPurgeableMap.has(key)) { 313fb726d48Sopenharmony_ci abilityPurgeableList = proc( 314fb726d48Sopenharmony_ci abilityPurgeablelDataSqlMem( 315fb726d48Sopenharmony_ci // @ts-ignore 316fb726d48Sopenharmony_ci data.params 317fb726d48Sopenharmony_ci ) 318fb726d48Sopenharmony_ci ); 319fb726d48Sopenharmony_ci abilityPurgeableMap.set(key, abilityPurgeableList); 320fb726d48Sopenharmony_ci } 321fb726d48Sopenharmony_ci let abilityList = abilityPurgeableMap.get(key) || []; 322fb726d48Sopenharmony_ci arrayBufferHandler(data, abilityList, true); 323fb726d48Sopenharmony_ci} 324fb726d48Sopenharmony_ci 325fb726d48Sopenharmony_ciexport function abilityDmaDataReceiver(data: unknown, proc: Function): void { 326fb726d48Sopenharmony_ci if (abilityDmaList.length === 0) { 327fb726d48Sopenharmony_ci // @ts-ignore 328fb726d48Sopenharmony_ci abilityDmaList = proc(abilityDmaDataSqlMem(data.params)); 329fb726d48Sopenharmony_ci } 330fb726d48Sopenharmony_ci arrayBufferHandler(data, abilityDmaList, true); 331fb726d48Sopenharmony_ci} 332fb726d48Sopenharmony_ci 333fb726d48Sopenharmony_ciexport function abilityGpuMemoryDataReceiver(data: unknown, proc: Function): void { 334fb726d48Sopenharmony_ci if (abilityGpuMemoryList.length === 0) { 335fb726d48Sopenharmony_ci // @ts-ignore 336fb726d48Sopenharmony_ci abilityGpuMemoryList = proc(abilityGpuMemoryDataSqlMem(data.params)); 337fb726d48Sopenharmony_ci } 338fb726d48Sopenharmony_ci arrayBufferHandler(data, abilityGpuMemoryList, true); 339fb726d48Sopenharmony_ci} 340fb726d48Sopenharmony_ci 341fb726d48Sopenharmony_cifunction arrayBufferHandler(data: unknown, res: unknown[], transfer: boolean): void { 342fb726d48Sopenharmony_ci // @ts-ignore 343fb726d48Sopenharmony_ci let startNs = new Float64Array(transfer ? res.length : data.params.sharedArrayBuffers.startNs); // @ts-ignore 344fb726d48Sopenharmony_ci let value = new Int32Array(transfer ? res.length : data.params.sharedArrayBuffers.value); 345fb726d48Sopenharmony_ci res.forEach((it, i) => { 346fb726d48Sopenharmony_ci // @ts-ignore 347fb726d48Sopenharmony_ci data.params.trafic === TraficEnum.ProtoBuffer && (it = it.trackerData); // @ts-ignore 348fb726d48Sopenharmony_ci startNs[i] = it.startNs; // @ts-ignore 349fb726d48Sopenharmony_ci value[i] = it.value; 350fb726d48Sopenharmony_ci }); 351fb726d48Sopenharmony_ci (self as unknown as Worker).postMessage( 352fb726d48Sopenharmony_ci { 353fb726d48Sopenharmony_ci // @ts-ignore 354fb726d48Sopenharmony_ci id: data.id, // @ts-ignore 355fb726d48Sopenharmony_ci action: data.action, 356fb726d48Sopenharmony_ci results: transfer 357fb726d48Sopenharmony_ci ? { 358fb726d48Sopenharmony_ci startNs: startNs.buffer, 359fb726d48Sopenharmony_ci value: value.buffer, 360fb726d48Sopenharmony_ci } 361fb726d48Sopenharmony_ci : {}, 362fb726d48Sopenharmony_ci len: res.length, 363fb726d48Sopenharmony_ci transfer: transfer, 364fb726d48Sopenharmony_ci }, 365fb726d48Sopenharmony_ci transfer ? [startNs.buffer, value.buffer] : [] 366fb726d48Sopenharmony_ci ); 367fb726d48Sopenharmony_ci} 368