msm_kgsl.py 30 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034
  1. # -*- coding: utf-8 -*-
  2. #
  3. # TARGET arch is: []
  4. # WORD_SIZE is: 8
  5. # POINTER_SIZE is: 8
  6. # LONGDOUBLE_SIZE is: 16
  7. #
  8. import ctypes
  9. class AsDictMixin:
  10. @classmethod
  11. def as_dict(cls, self):
  12. result = {}
  13. if not isinstance(self, AsDictMixin):
  14. # not a structure, assume it's already a python object
  15. return self
  16. if not hasattr(cls, "_fields_"):
  17. return result
  18. # sys.version_info >= (3, 5)
  19. # for (field, *_) in cls._fields_: # noqa
  20. for field_tuple in cls._fields_: # noqa
  21. field = field_tuple[0]
  22. if field.startswith('PADDING_'):
  23. continue
  24. value = getattr(self, field)
  25. type_ = type(value)
  26. if hasattr(value, "_length_") and hasattr(value, "_type_"):
  27. # array
  28. if not hasattr(type_, "as_dict"):
  29. value = [v for v in value]
  30. else:
  31. type_ = type_._type_
  32. value = [type_.as_dict(v) for v in value]
  33. elif hasattr(value, "contents") and hasattr(value, "_type_"):
  34. # pointer
  35. try:
  36. if not hasattr(type_, "as_dict"):
  37. value = value.contents
  38. else:
  39. type_ = type_._type_
  40. value = type_.as_dict(value.contents)
  41. except ValueError:
  42. # nullptr
  43. value = None
  44. elif isinstance(value, AsDictMixin):
  45. # other structure
  46. value = type_.as_dict(value)
  47. result[field] = value
  48. return result
  49. class Structure(ctypes.Structure, AsDictMixin):
  50. def __init__(self, *args, **kwds):
  51. # We don't want to use positional arguments fill PADDING_* fields
  52. args = dict(zip(self.__class__._field_names_(), args))
  53. args.update(kwds)
  54. super(Structure, self).__init__(**args)
  55. @classmethod
  56. def _field_names_(cls):
  57. if hasattr(cls, '_fields_'):
  58. return (f[0] for f in cls._fields_ if not f[0].startswith('PADDING'))
  59. else:
  60. return ()
  61. @classmethod
  62. def get_type(cls, field):
  63. for f in cls._fields_:
  64. if f[0] == field:
  65. return f[1]
  66. return None
  67. @classmethod
  68. def bind(cls, bound_fields):
  69. fields = {}
  70. for name, type_ in cls._fields_:
  71. if hasattr(type_, "restype"):
  72. if name in bound_fields:
  73. if bound_fields[name] is None:
  74. fields[name] = type_()
  75. else:
  76. # use a closure to capture the callback from the loop scope
  77. fields[name] = (
  78. type_((lambda callback: lambda *args: callback(*args))(
  79. bound_fields[name]))
  80. )
  81. del bound_fields[name]
  82. else:
  83. # default callback implementation (does nothing)
  84. try:
  85. default_ = type_(0).restype().value
  86. except TypeError:
  87. default_ = None
  88. fields[name] = type_((
  89. lambda default_: lambda *args: default_)(default_))
  90. else:
  91. # not a callback function, use default initialization
  92. if name in bound_fields:
  93. fields[name] = bound_fields[name]
  94. del bound_fields[name]
  95. else:
  96. fields[name] = type_()
  97. if len(bound_fields) != 0:
  98. raise ValueError(
  99. "Cannot bind the following unknown callback(s) {}.{}".format(
  100. cls.__name__, bound_fields.keys()
  101. ))
  102. return cls(**fields)
  103. class Union(ctypes.Union, AsDictMixin):
  104. pass
  105. c_int128 = ctypes.c_ubyte*16
  106. c_uint128 = c_int128
  107. void = None
  108. if ctypes.sizeof(ctypes.c_longdouble) == 16:
  109. c_long_double_t = ctypes.c_longdouble
  110. else:
  111. c_long_double_t = ctypes.c_ubyte*16
  112. # values for enumeration 'kgsl_user_mem_type'
  113. kgsl_user_mem_type__enumvalues = {
  114. 0: 'KGSL_USER_MEM_TYPE_PMEM',
  115. 1: 'KGSL_USER_MEM_TYPE_ASHMEM',
  116. 2: 'KGSL_USER_MEM_TYPE_ADDR',
  117. 3: 'KGSL_USER_MEM_TYPE_ION',
  118. 3: 'KGSL_USER_MEM_TYPE_DMABUF',
  119. 7: 'KGSL_USER_MEM_TYPE_MAX',
  120. }
  121. KGSL_USER_MEM_TYPE_PMEM = 0
  122. KGSL_USER_MEM_TYPE_ASHMEM = 1
  123. KGSL_USER_MEM_TYPE_ADDR = 2
  124. KGSL_USER_MEM_TYPE_ION = 3
  125. KGSL_USER_MEM_TYPE_DMABUF = 3
  126. KGSL_USER_MEM_TYPE_MAX = 7
  127. kgsl_user_mem_type = ctypes.c_uint32 # enum
  128. # values for enumeration 'kgsl_ctx_reset_stat'
  129. kgsl_ctx_reset_stat__enumvalues = {
  130. 0: 'KGSL_CTX_STAT_NO_ERROR',
  131. 1: 'KGSL_CTX_STAT_GUILTY_CONTEXT_RESET_EXT',
  132. 2: 'KGSL_CTX_STAT_INNOCENT_CONTEXT_RESET_EXT',
  133. 3: 'KGSL_CTX_STAT_UNKNOWN_CONTEXT_RESET_EXT',
  134. }
  135. KGSL_CTX_STAT_NO_ERROR = 0
  136. KGSL_CTX_STAT_GUILTY_CONTEXT_RESET_EXT = 1
  137. KGSL_CTX_STAT_INNOCENT_CONTEXT_RESET_EXT = 2
  138. KGSL_CTX_STAT_UNKNOWN_CONTEXT_RESET_EXT = 3
  139. kgsl_ctx_reset_stat = ctypes.c_uint32 # enum
  140. # values for enumeration 'kgsl_deviceid'
  141. kgsl_deviceid__enumvalues = {
  142. 0: 'KGSL_DEVICE_3D0',
  143. 1: 'KGSL_DEVICE_MAX',
  144. }
  145. KGSL_DEVICE_3D0 = 0
  146. KGSL_DEVICE_MAX = 1
  147. kgsl_deviceid = ctypes.c_uint32 # enum
  148. class struct_kgsl_devinfo(Structure):
  149. pass
  150. struct_kgsl_devinfo._pack_ = 1 # source:False
  151. struct_kgsl_devinfo._fields_ = [
  152. ('device_id', ctypes.c_uint32),
  153. ('chip_id', ctypes.c_uint32),
  154. ('mmu_enabled', ctypes.c_uint32),
  155. ('PADDING_0', ctypes.c_ubyte * 4),
  156. ('gmem_gpubaseaddr', ctypes.c_uint64),
  157. ('gpu_id', ctypes.c_uint32),
  158. ('PADDING_1', ctypes.c_ubyte * 4),
  159. ('gmem_sizebytes', ctypes.c_uint64),
  160. ]
  161. class struct_kgsl_devmemstore(Structure):
  162. pass
  163. struct_kgsl_devmemstore._pack_ = 1 # source:False
  164. struct_kgsl_devmemstore._fields_ = [
  165. ('soptimestamp', ctypes.c_uint32),
  166. ('sbz', ctypes.c_uint32),
  167. ('eoptimestamp', ctypes.c_uint32),
  168. ('sbz2', ctypes.c_uint32),
  169. ('preempted', ctypes.c_uint32),
  170. ('sbz3', ctypes.c_uint32),
  171. ('ref_wait_ts', ctypes.c_uint32),
  172. ('sbz4', ctypes.c_uint32),
  173. ('current_context', ctypes.c_uint32),
  174. ('sbz5', ctypes.c_uint32),
  175. ]
  176. # values for enumeration 'kgsl_timestamp_type'
  177. kgsl_timestamp_type__enumvalues = {
  178. 1: 'KGSL_TIMESTAMP_CONSUMED',
  179. 2: 'KGSL_TIMESTAMP_RETIRED',
  180. 3: 'KGSL_TIMESTAMP_QUEUED',
  181. }
  182. KGSL_TIMESTAMP_CONSUMED = 1
  183. KGSL_TIMESTAMP_RETIRED = 2
  184. KGSL_TIMESTAMP_QUEUED = 3
  185. kgsl_timestamp_type = ctypes.c_uint32 # enum
  186. class struct_kgsl_shadowprop(Structure):
  187. pass
  188. struct_kgsl_shadowprop._pack_ = 1 # source:False
  189. struct_kgsl_shadowprop._fields_ = [
  190. ('gpuaddr', ctypes.c_uint64),
  191. ('size', ctypes.c_uint64),
  192. ('flags', ctypes.c_uint32),
  193. ('PADDING_0', ctypes.c_ubyte * 4),
  194. ]
  195. class struct_kgsl_version(Structure):
  196. pass
  197. struct_kgsl_version._pack_ = 1 # source:False
  198. struct_kgsl_version._fields_ = [
  199. ('drv_major', ctypes.c_uint32),
  200. ('drv_minor', ctypes.c_uint32),
  201. ('dev_major', ctypes.c_uint32),
  202. ('dev_minor', ctypes.c_uint32),
  203. ]
  204. class struct_kgsl_sp_generic_mem(Structure):
  205. pass
  206. struct_kgsl_sp_generic_mem._pack_ = 1 # source:False
  207. struct_kgsl_sp_generic_mem._fields_ = [
  208. ('local', ctypes.c_uint64),
  209. ('pvt', ctypes.c_uint64),
  210. ]
  211. class struct_kgsl_ucode_version(Structure):
  212. pass
  213. struct_kgsl_ucode_version._pack_ = 1 # source:False
  214. struct_kgsl_ucode_version._fields_ = [
  215. ('pfp', ctypes.c_uint32),
  216. ('pm4', ctypes.c_uint32),
  217. ]
  218. class struct_kgsl_gpmu_version(Structure):
  219. pass
  220. struct_kgsl_gpmu_version._pack_ = 1 # source:False
  221. struct_kgsl_gpmu_version._fields_ = [
  222. ('major', ctypes.c_uint32),
  223. ('minor', ctypes.c_uint32),
  224. ('features', ctypes.c_uint32),
  225. ]
  226. class struct_kgsl_ibdesc(Structure):
  227. pass
  228. struct_kgsl_ibdesc._pack_ = 1 # source:False
  229. struct_kgsl_ibdesc._fields_ = [
  230. ('gpuaddr', ctypes.c_uint64),
  231. ('__pad', ctypes.c_uint64),
  232. ('sizedwords', ctypes.c_uint64),
  233. ('ctrl', ctypes.c_uint32),
  234. ('PADDING_0', ctypes.c_ubyte * 4),
  235. ]
  236. class struct_kgsl_cmdbatch_profiling_buffer(Structure):
  237. pass
  238. struct_kgsl_cmdbatch_profiling_buffer._pack_ = 1 # source:False
  239. struct_kgsl_cmdbatch_profiling_buffer._fields_ = [
  240. ('wall_clock_s', ctypes.c_uint64),
  241. ('wall_clock_ns', ctypes.c_uint64),
  242. ('gpu_ticks_queued', ctypes.c_uint64),
  243. ('gpu_ticks_submitted', ctypes.c_uint64),
  244. ('gpu_ticks_retired', ctypes.c_uint64),
  245. ]
  246. class struct_kgsl_device_getproperty(Structure):
  247. pass
  248. struct_kgsl_device_getproperty._pack_ = 1 # source:False
  249. struct_kgsl_device_getproperty._fields_ = [
  250. ('type', ctypes.c_uint32),
  251. ('PADDING_0', ctypes.c_ubyte * 4),
  252. ('value', ctypes.POINTER(None)),
  253. ('sizebytes', ctypes.c_uint64),
  254. ]
  255. class struct_kgsl_device_waittimestamp(Structure):
  256. pass
  257. struct_kgsl_device_waittimestamp._pack_ = 1 # source:False
  258. struct_kgsl_device_waittimestamp._fields_ = [
  259. ('timestamp', ctypes.c_uint32),
  260. ('timeout', ctypes.c_uint32),
  261. ]
  262. class struct_kgsl_device_waittimestamp_ctxtid(Structure):
  263. pass
  264. struct_kgsl_device_waittimestamp_ctxtid._pack_ = 1 # source:False
  265. struct_kgsl_device_waittimestamp_ctxtid._fields_ = [
  266. ('context_id', ctypes.c_uint32),
  267. ('timestamp', ctypes.c_uint32),
  268. ('timeout', ctypes.c_uint32),
  269. ]
  270. class struct_kgsl_ringbuffer_issueibcmds(Structure):
  271. pass
  272. struct_kgsl_ringbuffer_issueibcmds._pack_ = 1 # source:False
  273. struct_kgsl_ringbuffer_issueibcmds._fields_ = [
  274. ('drawctxt_id', ctypes.c_uint32),
  275. ('PADDING_0', ctypes.c_ubyte * 4),
  276. ('ibdesc_addr', ctypes.c_uint64),
  277. ('numibs', ctypes.c_uint32),
  278. ('timestamp', ctypes.c_uint32),
  279. ('flags', ctypes.c_uint32),
  280. ('PADDING_1', ctypes.c_ubyte * 4),
  281. ]
  282. class struct_kgsl_cmdstream_readtimestamp(Structure):
  283. pass
  284. struct_kgsl_cmdstream_readtimestamp._pack_ = 1 # source:False
  285. struct_kgsl_cmdstream_readtimestamp._fields_ = [
  286. ('type', ctypes.c_uint32),
  287. ('timestamp', ctypes.c_uint32),
  288. ]
  289. class struct_kgsl_cmdstream_freememontimestamp(Structure):
  290. pass
  291. struct_kgsl_cmdstream_freememontimestamp._pack_ = 1 # source:False
  292. struct_kgsl_cmdstream_freememontimestamp._fields_ = [
  293. ('gpuaddr', ctypes.c_uint64),
  294. ('type', ctypes.c_uint32),
  295. ('timestamp', ctypes.c_uint32),
  296. ]
  297. class struct_kgsl_drawctxt_create(Structure):
  298. pass
  299. struct_kgsl_drawctxt_create._pack_ = 1 # source:False
  300. struct_kgsl_drawctxt_create._fields_ = [
  301. ('flags', ctypes.c_uint32),
  302. ('drawctxt_id', ctypes.c_uint32),
  303. ]
  304. class struct_kgsl_drawctxt_destroy(Structure):
  305. pass
  306. struct_kgsl_drawctxt_destroy._pack_ = 1 # source:False
  307. struct_kgsl_drawctxt_destroy._fields_ = [
  308. ('drawctxt_id', ctypes.c_uint32),
  309. ]
  310. class struct_kgsl_map_user_mem(Structure):
  311. pass
  312. struct_kgsl_map_user_mem._pack_ = 1 # source:False
  313. struct_kgsl_map_user_mem._fields_ = [
  314. ('fd', ctypes.c_int32),
  315. ('PADDING_0', ctypes.c_ubyte * 4),
  316. ('gpuaddr', ctypes.c_uint64),
  317. ('len', ctypes.c_uint64),
  318. ('offset', ctypes.c_uint64),
  319. ('hostptr', ctypes.c_uint64),
  320. ('memtype', kgsl_user_mem_type),
  321. ('flags', ctypes.c_uint32),
  322. ]
  323. class struct_kgsl_cmdstream_readtimestamp_ctxtid(Structure):
  324. pass
  325. struct_kgsl_cmdstream_readtimestamp_ctxtid._pack_ = 1 # source:False
  326. struct_kgsl_cmdstream_readtimestamp_ctxtid._fields_ = [
  327. ('context_id', ctypes.c_uint32),
  328. ('type', ctypes.c_uint32),
  329. ('timestamp', ctypes.c_uint32),
  330. ]
  331. class struct_kgsl_cmdstream_freememontimestamp_ctxtid(Structure):
  332. pass
  333. struct_kgsl_cmdstream_freememontimestamp_ctxtid._pack_ = 1 # source:False
  334. struct_kgsl_cmdstream_freememontimestamp_ctxtid._fields_ = [
  335. ('context_id', ctypes.c_uint32),
  336. ('PADDING_0', ctypes.c_ubyte * 4),
  337. ('gpuaddr', ctypes.c_uint64),
  338. ('type', ctypes.c_uint32),
  339. ('timestamp', ctypes.c_uint32),
  340. ]
  341. class struct_kgsl_sharedmem_from_pmem(Structure):
  342. pass
  343. struct_kgsl_sharedmem_from_pmem._pack_ = 1 # source:False
  344. struct_kgsl_sharedmem_from_pmem._fields_ = [
  345. ('pmem_fd', ctypes.c_int32),
  346. ('PADDING_0', ctypes.c_ubyte * 4),
  347. ('gpuaddr', ctypes.c_uint64),
  348. ('len', ctypes.c_uint32),
  349. ('offset', ctypes.c_uint32),
  350. ]
  351. class struct_kgsl_sharedmem_free(Structure):
  352. pass
  353. struct_kgsl_sharedmem_free._pack_ = 1 # source:False
  354. struct_kgsl_sharedmem_free._fields_ = [
  355. ('gpuaddr', ctypes.c_uint64),
  356. ]
  357. class struct_kgsl_cff_user_event(Structure):
  358. pass
  359. struct_kgsl_cff_user_event._pack_ = 1 # source:False
  360. struct_kgsl_cff_user_event._fields_ = [
  361. ('cff_opcode', ctypes.c_ubyte),
  362. ('PADDING_0', ctypes.c_ubyte * 3),
  363. ('op1', ctypes.c_uint32),
  364. ('op2', ctypes.c_uint32),
  365. ('op3', ctypes.c_uint32),
  366. ('op4', ctypes.c_uint32),
  367. ('op5', ctypes.c_uint32),
  368. ('__pad', ctypes.c_uint32 * 2),
  369. ]
  370. class struct_kgsl_gmem_desc(Structure):
  371. pass
  372. struct_kgsl_gmem_desc._pack_ = 1 # source:False
  373. struct_kgsl_gmem_desc._fields_ = [
  374. ('x', ctypes.c_uint32),
  375. ('y', ctypes.c_uint32),
  376. ('width', ctypes.c_uint32),
  377. ('height', ctypes.c_uint32),
  378. ('pitch', ctypes.c_uint32),
  379. ]
  380. class struct_kgsl_buffer_desc(Structure):
  381. pass
  382. struct_kgsl_buffer_desc._pack_ = 1 # source:False
  383. struct_kgsl_buffer_desc._fields_ = [
  384. ('hostptr', ctypes.POINTER(None)),
  385. ('gpuaddr', ctypes.c_uint64),
  386. ('size', ctypes.c_int32),
  387. ('format', ctypes.c_uint32),
  388. ('pitch', ctypes.c_uint32),
  389. ('enabled', ctypes.c_uint32),
  390. ]
  391. class struct_kgsl_bind_gmem_shadow(Structure):
  392. pass
  393. struct_kgsl_bind_gmem_shadow._pack_ = 1 # source:False
  394. struct_kgsl_bind_gmem_shadow._fields_ = [
  395. ('drawctxt_id', ctypes.c_uint32),
  396. ('gmem_desc', struct_kgsl_gmem_desc),
  397. ('shadow_x', ctypes.c_uint32),
  398. ('shadow_y', ctypes.c_uint32),
  399. ('shadow_buffer', struct_kgsl_buffer_desc),
  400. ('buffer_id', ctypes.c_uint32),
  401. ('PADDING_0', ctypes.c_ubyte * 4),
  402. ]
  403. class struct_kgsl_sharedmem_from_vmalloc(Structure):
  404. pass
  405. struct_kgsl_sharedmem_from_vmalloc._pack_ = 1 # source:False
  406. struct_kgsl_sharedmem_from_vmalloc._fields_ = [
  407. ('gpuaddr', ctypes.c_uint64),
  408. ('hostptr', ctypes.c_uint32),
  409. ('flags', ctypes.c_uint32),
  410. ]
  411. class struct_kgsl_drawctxt_set_bin_base_offset(Structure):
  412. pass
  413. struct_kgsl_drawctxt_set_bin_base_offset._pack_ = 1 # source:False
  414. struct_kgsl_drawctxt_set_bin_base_offset._fields_ = [
  415. ('drawctxt_id', ctypes.c_uint32),
  416. ('offset', ctypes.c_uint32),
  417. ]
  418. # values for enumeration 'kgsl_cmdwindow_type'
  419. kgsl_cmdwindow_type__enumvalues = {
  420. 0: 'KGSL_CMDWINDOW_MIN',
  421. 0: 'KGSL_CMDWINDOW_2D',
  422. 1: 'KGSL_CMDWINDOW_3D',
  423. 2: 'KGSL_CMDWINDOW_MMU',
  424. 255: 'KGSL_CMDWINDOW_ARBITER',
  425. 255: 'KGSL_CMDWINDOW_MAX',
  426. }
  427. KGSL_CMDWINDOW_MIN = 0
  428. KGSL_CMDWINDOW_2D = 0
  429. KGSL_CMDWINDOW_3D = 1
  430. KGSL_CMDWINDOW_MMU = 2
  431. KGSL_CMDWINDOW_ARBITER = 255
  432. KGSL_CMDWINDOW_MAX = 255
  433. kgsl_cmdwindow_type = ctypes.c_uint32 # enum
  434. class struct_kgsl_cmdwindow_write(Structure):
  435. pass
  436. struct_kgsl_cmdwindow_write._pack_ = 1 # source:False
  437. struct_kgsl_cmdwindow_write._fields_ = [
  438. ('target', kgsl_cmdwindow_type),
  439. ('addr', ctypes.c_uint32),
  440. ('data', ctypes.c_uint32),
  441. ]
  442. class struct_kgsl_gpumem_alloc(Structure):
  443. pass
  444. struct_kgsl_gpumem_alloc._pack_ = 1 # source:False
  445. struct_kgsl_gpumem_alloc._fields_ = [
  446. ('gpuaddr', ctypes.c_uint64),
  447. ('size', ctypes.c_uint64),
  448. ('flags', ctypes.c_uint32),
  449. ('PADDING_0', ctypes.c_ubyte * 4),
  450. ]
  451. class struct_kgsl_cff_syncmem(Structure):
  452. pass
  453. struct_kgsl_cff_syncmem._pack_ = 1 # source:False
  454. struct_kgsl_cff_syncmem._fields_ = [
  455. ('gpuaddr', ctypes.c_uint64),
  456. ('len', ctypes.c_uint64),
  457. ('__pad', ctypes.c_uint32 * 2),
  458. ]
  459. class struct_kgsl_timestamp_event(Structure):
  460. pass
  461. struct_kgsl_timestamp_event._pack_ = 1 # source:False
  462. struct_kgsl_timestamp_event._fields_ = [
  463. ('type', ctypes.c_int32),
  464. ('timestamp', ctypes.c_uint32),
  465. ('context_id', ctypes.c_uint32),
  466. ('PADDING_0', ctypes.c_ubyte * 4),
  467. ('priv', ctypes.POINTER(None)),
  468. ('len', ctypes.c_uint64),
  469. ]
  470. class struct_kgsl_timestamp_event_genlock(Structure):
  471. pass
  472. struct_kgsl_timestamp_event_genlock._pack_ = 1 # source:False
  473. struct_kgsl_timestamp_event_genlock._fields_ = [
  474. ('handle', ctypes.c_int32),
  475. ]
  476. class struct_kgsl_timestamp_event_fence(Structure):
  477. pass
  478. struct_kgsl_timestamp_event_fence._pack_ = 1 # source:False
  479. struct_kgsl_timestamp_event_fence._fields_ = [
  480. ('fence_fd', ctypes.c_int32),
  481. ]
  482. class struct_kgsl_gpumem_alloc_id(Structure):
  483. pass
  484. struct_kgsl_gpumem_alloc_id._pack_ = 1 # source:False
  485. struct_kgsl_gpumem_alloc_id._fields_ = [
  486. ('id', ctypes.c_uint32),
  487. ('flags', ctypes.c_uint32),
  488. ('size', ctypes.c_uint64),
  489. ('mmapsize', ctypes.c_uint64),
  490. ('gpuaddr', ctypes.c_uint64),
  491. ('__pad', ctypes.c_uint64 * 2),
  492. ]
  493. class struct_kgsl_gpumem_free_id(Structure):
  494. pass
  495. struct_kgsl_gpumem_free_id._pack_ = 1 # source:False
  496. struct_kgsl_gpumem_free_id._fields_ = [
  497. ('id', ctypes.c_uint32),
  498. ('__pad', ctypes.c_uint32),
  499. ]
  500. class struct_kgsl_gpumem_get_info(Structure):
  501. pass
  502. struct_kgsl_gpumem_get_info._pack_ = 1 # source:False
  503. struct_kgsl_gpumem_get_info._fields_ = [
  504. ('gpuaddr', ctypes.c_uint64),
  505. ('id', ctypes.c_uint32),
  506. ('flags', ctypes.c_uint32),
  507. ('size', ctypes.c_uint64),
  508. ('mmapsize', ctypes.c_uint64),
  509. ('useraddr', ctypes.c_uint64),
  510. ('__pad', ctypes.c_uint64 * 4),
  511. ]
  512. class struct_kgsl_gpumem_sync_cache(Structure):
  513. pass
  514. struct_kgsl_gpumem_sync_cache._pack_ = 1 # source:False
  515. struct_kgsl_gpumem_sync_cache._fields_ = [
  516. ('gpuaddr', ctypes.c_uint64),
  517. ('id', ctypes.c_uint32),
  518. ('op', ctypes.c_uint32),
  519. ('offset', ctypes.c_uint64),
  520. ('length', ctypes.c_uint64),
  521. ]
  522. class struct_kgsl_perfcounter_get(Structure):
  523. pass
  524. struct_kgsl_perfcounter_get._pack_ = 1 # source:False
  525. struct_kgsl_perfcounter_get._fields_ = [
  526. ('groupid', ctypes.c_uint32),
  527. ('countable', ctypes.c_uint32),
  528. ('offset', ctypes.c_uint32),
  529. ('offset_hi', ctypes.c_uint32),
  530. ('__pad', ctypes.c_uint32),
  531. ]
  532. class struct_kgsl_perfcounter_put(Structure):
  533. pass
  534. struct_kgsl_perfcounter_put._pack_ = 1 # source:False
  535. struct_kgsl_perfcounter_put._fields_ = [
  536. ('groupid', ctypes.c_uint32),
  537. ('countable', ctypes.c_uint32),
  538. ('__pad', ctypes.c_uint32 * 2),
  539. ]
  540. class struct_kgsl_perfcounter_query(Structure):
  541. pass
  542. struct_kgsl_perfcounter_query._pack_ = 1 # source:False
  543. struct_kgsl_perfcounter_query._fields_ = [
  544. ('groupid', ctypes.c_uint32),
  545. ('PADDING_0', ctypes.c_ubyte * 4),
  546. ('countables', ctypes.POINTER(ctypes.c_uint32)),
  547. ('count', ctypes.c_uint32),
  548. ('max_counters', ctypes.c_uint32),
  549. ('__pad', ctypes.c_uint32 * 2),
  550. ]
  551. class struct_kgsl_perfcounter_read_group(Structure):
  552. pass
  553. struct_kgsl_perfcounter_read_group._pack_ = 1 # source:False
  554. struct_kgsl_perfcounter_read_group._fields_ = [
  555. ('groupid', ctypes.c_uint32),
  556. ('countable', ctypes.c_uint32),
  557. ('value', ctypes.c_uint64),
  558. ]
  559. class struct_kgsl_perfcounter_read(Structure):
  560. pass
  561. struct_kgsl_perfcounter_read._pack_ = 1 # source:False
  562. struct_kgsl_perfcounter_read._fields_ = [
  563. ('reads', ctypes.POINTER(struct_kgsl_perfcounter_read_group)),
  564. ('count', ctypes.c_uint32),
  565. ('__pad', ctypes.c_uint32 * 2),
  566. ('PADDING_0', ctypes.c_ubyte * 4),
  567. ]
  568. class struct_kgsl_gpumem_sync_cache_bulk(Structure):
  569. pass
  570. struct_kgsl_gpumem_sync_cache_bulk._pack_ = 1 # source:False
  571. struct_kgsl_gpumem_sync_cache_bulk._fields_ = [
  572. ('id_list', ctypes.POINTER(ctypes.c_uint32)),
  573. ('count', ctypes.c_uint32),
  574. ('op', ctypes.c_uint32),
  575. ('__pad', ctypes.c_uint32 * 2),
  576. ]
  577. class struct_kgsl_cmd_syncpoint_timestamp(Structure):
  578. pass
  579. struct_kgsl_cmd_syncpoint_timestamp._pack_ = 1 # source:False
  580. struct_kgsl_cmd_syncpoint_timestamp._fields_ = [
  581. ('context_id', ctypes.c_uint32),
  582. ('timestamp', ctypes.c_uint32),
  583. ]
  584. class struct_kgsl_cmd_syncpoint_fence(Structure):
  585. pass
  586. struct_kgsl_cmd_syncpoint_fence._pack_ = 1 # source:False
  587. struct_kgsl_cmd_syncpoint_fence._fields_ = [
  588. ('fd', ctypes.c_int32),
  589. ]
  590. class struct_kgsl_cmd_syncpoint(Structure):
  591. pass
  592. struct_kgsl_cmd_syncpoint._pack_ = 1 # source:False
  593. struct_kgsl_cmd_syncpoint._fields_ = [
  594. ('type', ctypes.c_int32),
  595. ('PADDING_0', ctypes.c_ubyte * 4),
  596. ('priv', ctypes.POINTER(None)),
  597. ('size', ctypes.c_uint64),
  598. ]
  599. class struct_kgsl_submit_commands(Structure):
  600. pass
  601. struct_kgsl_submit_commands._pack_ = 1 # source:False
  602. struct_kgsl_submit_commands._fields_ = [
  603. ('context_id', ctypes.c_uint32),
  604. ('flags', ctypes.c_uint32),
  605. ('cmdlist', ctypes.POINTER(struct_kgsl_ibdesc)),
  606. ('numcmds', ctypes.c_uint32),
  607. ('PADDING_0', ctypes.c_ubyte * 4),
  608. ('synclist', ctypes.POINTER(struct_kgsl_cmd_syncpoint)),
  609. ('numsyncs', ctypes.c_uint32),
  610. ('timestamp', ctypes.c_uint32),
  611. ('__pad', ctypes.c_uint32 * 4),
  612. ]
  613. class struct_kgsl_device_constraint(Structure):
  614. pass
  615. struct_kgsl_device_constraint._pack_ = 1 # source:False
  616. struct_kgsl_device_constraint._fields_ = [
  617. ('type', ctypes.c_uint32),
  618. ('context_id', ctypes.c_uint32),
  619. ('data', ctypes.POINTER(None)),
  620. ('size', ctypes.c_uint64),
  621. ]
  622. class struct_kgsl_device_constraint_pwrlevel(Structure):
  623. pass
  624. struct_kgsl_device_constraint_pwrlevel._pack_ = 1 # source:False
  625. struct_kgsl_device_constraint_pwrlevel._fields_ = [
  626. ('level', ctypes.c_uint32),
  627. ]
  628. class struct_kgsl_syncsource_create(Structure):
  629. pass
  630. struct_kgsl_syncsource_create._pack_ = 1 # source:False
  631. struct_kgsl_syncsource_create._fields_ = [
  632. ('id', ctypes.c_uint32),
  633. ('__pad', ctypes.c_uint32 * 3),
  634. ]
  635. class struct_kgsl_syncsource_destroy(Structure):
  636. pass
  637. struct_kgsl_syncsource_destroy._pack_ = 1 # source:False
  638. struct_kgsl_syncsource_destroy._fields_ = [
  639. ('id', ctypes.c_uint32),
  640. ('__pad', ctypes.c_uint32 * 3),
  641. ]
  642. class struct_kgsl_syncsource_create_fence(Structure):
  643. pass
  644. struct_kgsl_syncsource_create_fence._pack_ = 1 # source:False
  645. struct_kgsl_syncsource_create_fence._fields_ = [
  646. ('id', ctypes.c_uint32),
  647. ('fence_fd', ctypes.c_int32),
  648. ('__pad', ctypes.c_uint32 * 4),
  649. ]
  650. class struct_kgsl_syncsource_signal_fence(Structure):
  651. pass
  652. struct_kgsl_syncsource_signal_fence._pack_ = 1 # source:False
  653. struct_kgsl_syncsource_signal_fence._fields_ = [
  654. ('id', ctypes.c_uint32),
  655. ('fence_fd', ctypes.c_int32),
  656. ('__pad', ctypes.c_uint32 * 4),
  657. ]
  658. class struct_kgsl_cff_sync_gpuobj(Structure):
  659. pass
  660. struct_kgsl_cff_sync_gpuobj._pack_ = 1 # source:False
  661. struct_kgsl_cff_sync_gpuobj._fields_ = [
  662. ('offset', ctypes.c_uint64),
  663. ('length', ctypes.c_uint64),
  664. ('id', ctypes.c_uint32),
  665. ('PADDING_0', ctypes.c_ubyte * 4),
  666. ]
  667. class struct_kgsl_gpuobj_alloc(Structure):
  668. pass
  669. struct_kgsl_gpuobj_alloc._pack_ = 1 # source:False
  670. struct_kgsl_gpuobj_alloc._fields_ = [
  671. ('size', ctypes.c_uint64),
  672. ('flags', ctypes.c_uint64),
  673. ('va_len', ctypes.c_uint64),
  674. ('mmapsize', ctypes.c_uint64),
  675. ('id', ctypes.c_uint32),
  676. ('metadata_len', ctypes.c_uint32),
  677. ('metadata', ctypes.c_uint64),
  678. ]
  679. class struct_kgsl_gpuobj_free(Structure):
  680. pass
  681. struct_kgsl_gpuobj_free._pack_ = 1 # source:False
  682. struct_kgsl_gpuobj_free._fields_ = [
  683. ('flags', ctypes.c_uint64),
  684. ('priv', ctypes.c_uint64),
  685. ('id', ctypes.c_uint32),
  686. ('type', ctypes.c_uint32),
  687. ('len', ctypes.c_uint32),
  688. ('PADDING_0', ctypes.c_ubyte * 4),
  689. ]
  690. class struct_kgsl_gpu_event_timestamp(Structure):
  691. pass
  692. struct_kgsl_gpu_event_timestamp._pack_ = 1 # source:False
  693. struct_kgsl_gpu_event_timestamp._fields_ = [
  694. ('context_id', ctypes.c_uint32),
  695. ('timestamp', ctypes.c_uint32),
  696. ]
  697. class struct_kgsl_gpu_event_fence(Structure):
  698. pass
  699. struct_kgsl_gpu_event_fence._pack_ = 1 # source:False
  700. struct_kgsl_gpu_event_fence._fields_ = [
  701. ('fd', ctypes.c_int32),
  702. ]
  703. class struct_kgsl_gpuobj_info(Structure):
  704. pass
  705. struct_kgsl_gpuobj_info._pack_ = 1 # source:False
  706. struct_kgsl_gpuobj_info._fields_ = [
  707. ('gpuaddr', ctypes.c_uint64),
  708. ('flags', ctypes.c_uint64),
  709. ('size', ctypes.c_uint64),
  710. ('va_len', ctypes.c_uint64),
  711. ('va_addr', ctypes.c_uint64),
  712. ('id', ctypes.c_uint32),
  713. ('PADDING_0', ctypes.c_ubyte * 4),
  714. ]
  715. class struct_kgsl_gpuobj_import(Structure):
  716. pass
  717. struct_kgsl_gpuobj_import._pack_ = 1 # source:False
  718. struct_kgsl_gpuobj_import._fields_ = [
  719. ('priv', ctypes.c_uint64),
  720. ('priv_len', ctypes.c_uint64),
  721. ('flags', ctypes.c_uint64),
  722. ('type', ctypes.c_uint32),
  723. ('id', ctypes.c_uint32),
  724. ]
  725. class struct_kgsl_gpuobj_import_dma_buf(Structure):
  726. pass
  727. struct_kgsl_gpuobj_import_dma_buf._pack_ = 1 # source:False
  728. struct_kgsl_gpuobj_import_dma_buf._fields_ = [
  729. ('fd', ctypes.c_int32),
  730. ]
  731. class struct_kgsl_gpuobj_import_useraddr(Structure):
  732. pass
  733. struct_kgsl_gpuobj_import_useraddr._pack_ = 1 # source:False
  734. struct_kgsl_gpuobj_import_useraddr._fields_ = [
  735. ('virtaddr', ctypes.c_uint64),
  736. ]
  737. class struct_kgsl_gpuobj_sync_obj(Structure):
  738. pass
  739. struct_kgsl_gpuobj_sync_obj._pack_ = 1 # source:False
  740. struct_kgsl_gpuobj_sync_obj._fields_ = [
  741. ('offset', ctypes.c_uint64),
  742. ('length', ctypes.c_uint64),
  743. ('id', ctypes.c_uint32),
  744. ('op', ctypes.c_uint32),
  745. ]
  746. class struct_kgsl_gpuobj_sync(Structure):
  747. pass
  748. struct_kgsl_gpuobj_sync._pack_ = 1 # source:False
  749. struct_kgsl_gpuobj_sync._fields_ = [
  750. ('objs', ctypes.c_uint64),
  751. ('obj_len', ctypes.c_uint32),
  752. ('count', ctypes.c_uint32),
  753. ]
  754. class struct_kgsl_command_object(Structure):
  755. pass
  756. struct_kgsl_command_object._pack_ = 1 # source:False
  757. struct_kgsl_command_object._fields_ = [
  758. ('offset', ctypes.c_uint64),
  759. ('gpuaddr', ctypes.c_uint64),
  760. ('size', ctypes.c_uint64),
  761. ('flags', ctypes.c_uint32),
  762. ('id', ctypes.c_uint32),
  763. ]
  764. class struct_kgsl_command_syncpoint(Structure):
  765. pass
  766. struct_kgsl_command_syncpoint._pack_ = 1 # source:False
  767. struct_kgsl_command_syncpoint._fields_ = [
  768. ('priv', ctypes.c_uint64),
  769. ('size', ctypes.c_uint64),
  770. ('type', ctypes.c_uint32),
  771. ('PADDING_0', ctypes.c_ubyte * 4),
  772. ]
  773. class struct_kgsl_gpu_command(Structure):
  774. pass
  775. struct_kgsl_gpu_command._pack_ = 1 # source:False
  776. struct_kgsl_gpu_command._fields_ = [
  777. ('flags', ctypes.c_uint64),
  778. ('cmdlist', ctypes.c_uint64),
  779. ('cmdsize', ctypes.c_uint32),
  780. ('numcmds', ctypes.c_uint32),
  781. ('objlist', ctypes.c_uint64),
  782. ('objsize', ctypes.c_uint32),
  783. ('numobjs', ctypes.c_uint32),
  784. ('synclist', ctypes.c_uint64),
  785. ('syncsize', ctypes.c_uint32),
  786. ('numsyncs', ctypes.c_uint32),
  787. ('context_id', ctypes.c_uint32),
  788. ('timestamp', ctypes.c_uint32),
  789. ]
  790. class struct_kgsl_preemption_counters_query(Structure):
  791. pass
  792. struct_kgsl_preemption_counters_query._pack_ = 1 # source:False
  793. struct_kgsl_preemption_counters_query._fields_ = [
  794. ('counters', ctypes.c_uint64),
  795. ('size_user', ctypes.c_uint32),
  796. ('size_priority_level', ctypes.c_uint32),
  797. ('max_priority_level', ctypes.c_uint32),
  798. ('PADDING_0', ctypes.c_ubyte * 4),
  799. ]
  800. class struct_kgsl_gpuobj_set_info(Structure):
  801. pass
  802. struct_kgsl_gpuobj_set_info._pack_ = 1 # source:False
  803. struct_kgsl_gpuobj_set_info._fields_ = [
  804. ('flags', ctypes.c_uint64),
  805. ('metadata', ctypes.c_uint64),
  806. ('id', ctypes.c_uint32),
  807. ('metadata_len', ctypes.c_uint32),
  808. ('type', ctypes.c_uint32),
  809. ('PADDING_0', ctypes.c_ubyte * 4),
  810. ]
  811. __all__ = \
  812. ['KGSL_CMDWINDOW_2D', 'KGSL_CMDWINDOW_3D',
  813. 'KGSL_CMDWINDOW_ARBITER', 'KGSL_CMDWINDOW_MAX',
  814. 'KGSL_CMDWINDOW_MIN', 'KGSL_CMDWINDOW_MMU',
  815. 'KGSL_CTX_STAT_GUILTY_CONTEXT_RESET_EXT',
  816. 'KGSL_CTX_STAT_INNOCENT_CONTEXT_RESET_EXT',
  817. 'KGSL_CTX_STAT_NO_ERROR',
  818. 'KGSL_CTX_STAT_UNKNOWN_CONTEXT_RESET_EXT', 'KGSL_DEVICE_3D0',
  819. 'KGSL_DEVICE_MAX', 'KGSL_TIMESTAMP_CONSUMED',
  820. 'KGSL_TIMESTAMP_QUEUED', 'KGSL_TIMESTAMP_RETIRED',
  821. 'KGSL_USER_MEM_TYPE_ADDR', 'KGSL_USER_MEM_TYPE_ASHMEM',
  822. 'KGSL_USER_MEM_TYPE_DMABUF', 'KGSL_USER_MEM_TYPE_ION',
  823. 'KGSL_USER_MEM_TYPE_MAX', 'KGSL_USER_MEM_TYPE_PMEM',
  824. 'kgsl_cmdwindow_type', 'kgsl_ctx_reset_stat', 'kgsl_deviceid',
  825. 'kgsl_timestamp_type', 'kgsl_user_mem_type',
  826. 'struct_kgsl_bind_gmem_shadow', 'struct_kgsl_buffer_desc',
  827. 'struct_kgsl_cff_sync_gpuobj', 'struct_kgsl_cff_syncmem',
  828. 'struct_kgsl_cff_user_event', 'struct_kgsl_cmd_syncpoint',
  829. 'struct_kgsl_cmd_syncpoint_fence',
  830. 'struct_kgsl_cmd_syncpoint_timestamp',
  831. 'struct_kgsl_cmdbatch_profiling_buffer',
  832. 'struct_kgsl_cmdstream_freememontimestamp',
  833. 'struct_kgsl_cmdstream_freememontimestamp_ctxtid',
  834. 'struct_kgsl_cmdstream_readtimestamp',
  835. 'struct_kgsl_cmdstream_readtimestamp_ctxtid',
  836. 'struct_kgsl_cmdwindow_write', 'struct_kgsl_command_object',
  837. 'struct_kgsl_command_syncpoint', 'struct_kgsl_device_constraint',
  838. 'struct_kgsl_device_constraint_pwrlevel',
  839. 'struct_kgsl_device_getproperty',
  840. 'struct_kgsl_device_waittimestamp',
  841. 'struct_kgsl_device_waittimestamp_ctxtid', 'struct_kgsl_devinfo',
  842. 'struct_kgsl_devmemstore', 'struct_kgsl_drawctxt_create',
  843. 'struct_kgsl_drawctxt_destroy',
  844. 'struct_kgsl_drawctxt_set_bin_base_offset',
  845. 'struct_kgsl_gmem_desc', 'struct_kgsl_gpmu_version',
  846. 'struct_kgsl_gpu_command', 'struct_kgsl_gpu_event_fence',
  847. 'struct_kgsl_gpu_event_timestamp', 'struct_kgsl_gpumem_alloc',
  848. 'struct_kgsl_gpumem_alloc_id', 'struct_kgsl_gpumem_free_id',
  849. 'struct_kgsl_gpumem_get_info', 'struct_kgsl_gpumem_sync_cache',
  850. 'struct_kgsl_gpumem_sync_cache_bulk', 'struct_kgsl_gpuobj_alloc',
  851. 'struct_kgsl_gpuobj_free', 'struct_kgsl_gpuobj_import',
  852. 'struct_kgsl_gpuobj_import_dma_buf',
  853. 'struct_kgsl_gpuobj_import_useraddr', 'struct_kgsl_gpuobj_info',
  854. 'struct_kgsl_gpuobj_set_info', 'struct_kgsl_gpuobj_sync',
  855. 'struct_kgsl_gpuobj_sync_obj', 'struct_kgsl_ibdesc',
  856. 'struct_kgsl_map_user_mem', 'struct_kgsl_perfcounter_get',
  857. 'struct_kgsl_perfcounter_put', 'struct_kgsl_perfcounter_query',
  858. 'struct_kgsl_perfcounter_read',
  859. 'struct_kgsl_perfcounter_read_group',
  860. 'struct_kgsl_preemption_counters_query',
  861. 'struct_kgsl_ringbuffer_issueibcmds', 'struct_kgsl_shadowprop',
  862. 'struct_kgsl_sharedmem_free', 'struct_kgsl_sharedmem_from_pmem',
  863. 'struct_kgsl_sharedmem_from_vmalloc',
  864. 'struct_kgsl_sp_generic_mem', 'struct_kgsl_submit_commands',
  865. 'struct_kgsl_syncsource_create',
  866. 'struct_kgsl_syncsource_create_fence',
  867. 'struct_kgsl_syncsource_destroy',
  868. 'struct_kgsl_syncsource_signal_fence',
  869. 'struct_kgsl_timestamp_event',
  870. 'struct_kgsl_timestamp_event_fence',
  871. 'struct_kgsl_timestamp_event_genlock',
  872. 'struct_kgsl_ucode_version', 'struct_kgsl_version']