gl_bindings_autogen_egl.cc 108 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482
  1. // Copyright 2016 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. //
  5. // This file is auto-generated from
  6. // ui/gl/generate_bindings.py
  7. // It's formatted by clang-format using chromium coding style:
  8. // clang-format -i -style=chromium filename
  9. // DO NOT EDIT!
  10. #include <string>
  11. #include "base/trace_event/trace_event.h"
  12. #include "ui/gl/gl_bindings.h"
  13. #include "ui/gl/gl_context.h"
  14. #include "ui/gl/gl_egl_api_implementation.h"
  15. #include "ui/gl/gl_enums.h"
  16. #include "ui/gl/gl_implementation.h"
  17. #include "ui/gl/gl_version_info.h"
  18. namespace gl {
  19. DriverEGL g_driver_egl; // Exists in .bss
  20. void DriverEGL::InitializeStaticBindings() {
  21. // Ensure struct has been zero-initialized.
  22. char* this_bytes = reinterpret_cast<char*>(this);
  23. DCHECK(this_bytes[0] == 0);
  24. DCHECK(memcmp(this_bytes, this_bytes + 1, sizeof(*this) - 1) == 0);
  25. fn.eglBindAPIFn =
  26. reinterpret_cast<eglBindAPIProc>(GetGLProcAddress("eglBindAPI"));
  27. fn.eglBindTexImageFn = reinterpret_cast<eglBindTexImageProc>(
  28. GetGLProcAddress("eglBindTexImage"));
  29. fn.eglChooseConfigFn = reinterpret_cast<eglChooseConfigProc>(
  30. GetGLProcAddress("eglChooseConfig"));
  31. fn.eglClientWaitSyncKHRFn = reinterpret_cast<eglClientWaitSyncKHRProc>(
  32. GetGLProcAddress("eglClientWaitSyncKHR"));
  33. fn.eglCopyBuffersFn =
  34. reinterpret_cast<eglCopyBuffersProc>(GetGLProcAddress("eglCopyBuffers"));
  35. fn.eglCreateContextFn = reinterpret_cast<eglCreateContextProc>(
  36. GetGLProcAddress("eglCreateContext"));
  37. fn.eglCreateImageKHRFn = reinterpret_cast<eglCreateImageKHRProc>(
  38. GetGLProcAddress("eglCreateImageKHR"));
  39. fn.eglCreatePbufferFromClientBufferFn =
  40. reinterpret_cast<eglCreatePbufferFromClientBufferProc>(
  41. GetGLProcAddress("eglCreatePbufferFromClientBuffer"));
  42. fn.eglCreatePbufferSurfaceFn = reinterpret_cast<eglCreatePbufferSurfaceProc>(
  43. GetGLProcAddress("eglCreatePbufferSurface"));
  44. fn.eglCreatePixmapSurfaceFn = reinterpret_cast<eglCreatePixmapSurfaceProc>(
  45. GetGLProcAddress("eglCreatePixmapSurface"));
  46. fn.eglCreateStreamKHRFn = reinterpret_cast<eglCreateStreamKHRProc>(
  47. GetGLProcAddress("eglCreateStreamKHR"));
  48. fn.eglCreateStreamProducerD3DTextureANGLEFn =
  49. reinterpret_cast<eglCreateStreamProducerD3DTextureANGLEProc>(
  50. GetGLProcAddress("eglCreateStreamProducerD3DTextureANGLE"));
  51. fn.eglCreateSyncKHRFn = reinterpret_cast<eglCreateSyncKHRProc>(
  52. GetGLProcAddress("eglCreateSyncKHR"));
  53. fn.eglCreateWindowSurfaceFn = reinterpret_cast<eglCreateWindowSurfaceProc>(
  54. GetGLProcAddress("eglCreateWindowSurface"));
  55. fn.eglDebugMessageControlKHRFn =
  56. reinterpret_cast<eglDebugMessageControlKHRProc>(
  57. GetGLProcAddress("eglDebugMessageControlKHR"));
  58. fn.eglDestroyContextFn = reinterpret_cast<eglDestroyContextProc>(
  59. GetGLProcAddress("eglDestroyContext"));
  60. fn.eglDestroyImageKHRFn = reinterpret_cast<eglDestroyImageKHRProc>(
  61. GetGLProcAddress("eglDestroyImageKHR"));
  62. fn.eglDestroyStreamKHRFn = reinterpret_cast<eglDestroyStreamKHRProc>(
  63. GetGLProcAddress("eglDestroyStreamKHR"));
  64. fn.eglDestroySurfaceFn = reinterpret_cast<eglDestroySurfaceProc>(
  65. GetGLProcAddress("eglDestroySurface"));
  66. fn.eglDestroySyncKHRFn = reinterpret_cast<eglDestroySyncKHRProc>(
  67. GetGLProcAddress("eglDestroySyncKHR"));
  68. fn.eglDupNativeFenceFDANDROIDFn =
  69. reinterpret_cast<eglDupNativeFenceFDANDROIDProc>(
  70. GetGLProcAddress("eglDupNativeFenceFDANDROID"));
  71. fn.eglExportDMABUFImageMESAFn =
  72. reinterpret_cast<eglExportDMABUFImageMESAProc>(
  73. GetGLProcAddress("eglExportDMABUFImageMESA"));
  74. fn.eglExportDMABUFImageQueryMESAFn =
  75. reinterpret_cast<eglExportDMABUFImageQueryMESAProc>(
  76. GetGLProcAddress("eglExportDMABUFImageQueryMESA"));
  77. fn.eglExportVkImageANGLEFn = reinterpret_cast<eglExportVkImageANGLEProc>(
  78. GetGLProcAddress("eglExportVkImageANGLE"));
  79. fn.eglGetCompositorTimingANDROIDFn =
  80. reinterpret_cast<eglGetCompositorTimingANDROIDProc>(
  81. GetGLProcAddress("eglGetCompositorTimingANDROID"));
  82. fn.eglGetCompositorTimingSupportedANDROIDFn =
  83. reinterpret_cast<eglGetCompositorTimingSupportedANDROIDProc>(
  84. GetGLProcAddress("eglGetCompositorTimingSupportedANDROID"));
  85. fn.eglGetConfigAttribFn = reinterpret_cast<eglGetConfigAttribProc>(
  86. GetGLProcAddress("eglGetConfigAttrib"));
  87. fn.eglGetConfigsFn =
  88. reinterpret_cast<eglGetConfigsProc>(GetGLProcAddress("eglGetConfigs"));
  89. fn.eglGetCurrentContextFn = reinterpret_cast<eglGetCurrentContextProc>(
  90. GetGLProcAddress("eglGetCurrentContext"));
  91. fn.eglGetCurrentDisplayFn = reinterpret_cast<eglGetCurrentDisplayProc>(
  92. GetGLProcAddress("eglGetCurrentDisplay"));
  93. fn.eglGetCurrentSurfaceFn = reinterpret_cast<eglGetCurrentSurfaceProc>(
  94. GetGLProcAddress("eglGetCurrentSurface"));
  95. fn.eglGetDisplayFn =
  96. reinterpret_cast<eglGetDisplayProc>(GetGLProcAddress("eglGetDisplay"));
  97. fn.eglGetErrorFn =
  98. reinterpret_cast<eglGetErrorProc>(GetGLProcAddress("eglGetError"));
  99. fn.eglGetFrameTimestampsANDROIDFn =
  100. reinterpret_cast<eglGetFrameTimestampsANDROIDProc>(
  101. GetGLProcAddress("eglGetFrameTimestampsANDROID"));
  102. fn.eglGetFrameTimestampSupportedANDROIDFn =
  103. reinterpret_cast<eglGetFrameTimestampSupportedANDROIDProc>(
  104. GetGLProcAddress("eglGetFrameTimestampSupportedANDROID"));
  105. fn.eglGetMscRateANGLEFn = reinterpret_cast<eglGetMscRateANGLEProc>(
  106. GetGLProcAddress("eglGetMscRateANGLE"));
  107. fn.eglGetNativeClientBufferANDROIDFn =
  108. reinterpret_cast<eglGetNativeClientBufferANDROIDProc>(
  109. GetGLProcAddress("eglGetNativeClientBufferANDROID"));
  110. fn.eglGetNextFrameIdANDROIDFn =
  111. reinterpret_cast<eglGetNextFrameIdANDROIDProc>(
  112. GetGLProcAddress("eglGetNextFrameIdANDROID"));
  113. fn.eglGetPlatformDisplayFn = reinterpret_cast<eglGetPlatformDisplayProc>(
  114. GetGLProcAddress("eglGetPlatformDisplay"));
  115. fn.eglGetProcAddressFn = reinterpret_cast<eglGetProcAddressProc>(
  116. GetGLProcAddress("eglGetProcAddress"));
  117. fn.eglGetSyncAttribKHRFn = reinterpret_cast<eglGetSyncAttribKHRProc>(
  118. GetGLProcAddress("eglGetSyncAttribKHR"));
  119. fn.eglGetSyncValuesCHROMIUMFn =
  120. reinterpret_cast<eglGetSyncValuesCHROMIUMProc>(
  121. GetGLProcAddress("eglGetSyncValuesCHROMIUM"));
  122. fn.eglHandleGPUSwitchANGLEFn = reinterpret_cast<eglHandleGPUSwitchANGLEProc>(
  123. GetGLProcAddress("eglHandleGPUSwitchANGLE"));
  124. fn.eglImageFlushExternalEXTFn =
  125. reinterpret_cast<eglImageFlushExternalEXTProc>(
  126. GetGLProcAddress("eglImageFlushExternalEXT"));
  127. fn.eglInitializeFn =
  128. reinterpret_cast<eglInitializeProc>(GetGLProcAddress("eglInitialize"));
  129. fn.eglLabelObjectKHRFn = reinterpret_cast<eglLabelObjectKHRProc>(
  130. GetGLProcAddress("eglLabelObjectKHR"));
  131. fn.eglMakeCurrentFn =
  132. reinterpret_cast<eglMakeCurrentProc>(GetGLProcAddress("eglMakeCurrent"));
  133. fn.eglPostSubBufferNVFn = reinterpret_cast<eglPostSubBufferNVProc>(
  134. GetGLProcAddress("eglPostSubBufferNV"));
  135. fn.eglQueryAPIFn =
  136. reinterpret_cast<eglQueryAPIProc>(GetGLProcAddress("eglQueryAPI"));
  137. fn.eglQueryContextFn = reinterpret_cast<eglQueryContextProc>(
  138. GetGLProcAddress("eglQueryContext"));
  139. fn.eglQueryDebugKHRFn = reinterpret_cast<eglQueryDebugKHRProc>(
  140. GetGLProcAddress("eglQueryDebugKHR"));
  141. fn.eglQueryDeviceAttribEXTFn = reinterpret_cast<eglQueryDeviceAttribEXTProc>(
  142. GetGLProcAddress("eglQueryDeviceAttribEXT"));
  143. fn.eglQueryDevicesEXTFn = reinterpret_cast<eglQueryDevicesEXTProc>(
  144. GetGLProcAddress("eglQueryDevicesEXT"));
  145. fn.eglQueryDeviceStringEXTFn = reinterpret_cast<eglQueryDeviceStringEXTProc>(
  146. GetGLProcAddress("eglQueryDeviceStringEXT"));
  147. fn.eglQueryDisplayAttribANGLEFn =
  148. reinterpret_cast<eglQueryDisplayAttribANGLEProc>(
  149. GetGLProcAddress("eglQueryDisplayAttribANGLE"));
  150. fn.eglQueryDisplayAttribEXTFn =
  151. reinterpret_cast<eglQueryDisplayAttribEXTProc>(
  152. GetGLProcAddress("eglQueryDisplayAttribEXT"));
  153. fn.eglQueryDmaBufFormatsEXTFn =
  154. reinterpret_cast<eglQueryDmaBufFormatsEXTProc>(
  155. GetGLProcAddress("eglQueryDmaBufFormatsEXT"));
  156. fn.eglQueryDmaBufModifiersEXTFn =
  157. reinterpret_cast<eglQueryDmaBufModifiersEXTProc>(
  158. GetGLProcAddress("eglQueryDmaBufModifiersEXT"));
  159. fn.eglQueryStreamKHRFn = reinterpret_cast<eglQueryStreamKHRProc>(
  160. GetGLProcAddress("eglQueryStreamKHR"));
  161. fn.eglQueryStreamu64KHRFn = reinterpret_cast<eglQueryStreamu64KHRProc>(
  162. GetGLProcAddress("eglQueryStreamu64KHR"));
  163. fn.eglQueryStringFn =
  164. reinterpret_cast<eglQueryStringProc>(GetGLProcAddress("eglQueryString"));
  165. fn.eglQueryStringiANGLEFn = reinterpret_cast<eglQueryStringiANGLEProc>(
  166. GetGLProcAddress("eglQueryStringiANGLE"));
  167. fn.eglQuerySurfaceFn = reinterpret_cast<eglQuerySurfaceProc>(
  168. GetGLProcAddress("eglQuerySurface"));
  169. fn.eglQuerySurfacePointerANGLEFn =
  170. reinterpret_cast<eglQuerySurfacePointerANGLEProc>(
  171. GetGLProcAddress("eglQuerySurfacePointerANGLE"));
  172. fn.eglReacquireHighPowerGPUANGLEFn =
  173. reinterpret_cast<eglReacquireHighPowerGPUANGLEProc>(
  174. GetGLProcAddress("eglReacquireHighPowerGPUANGLE"));
  175. fn.eglReleaseHighPowerGPUANGLEFn =
  176. reinterpret_cast<eglReleaseHighPowerGPUANGLEProc>(
  177. GetGLProcAddress("eglReleaseHighPowerGPUANGLE"));
  178. fn.eglReleaseTexImageFn = reinterpret_cast<eglReleaseTexImageProc>(
  179. GetGLProcAddress("eglReleaseTexImage"));
  180. fn.eglReleaseThreadFn = reinterpret_cast<eglReleaseThreadProc>(
  181. GetGLProcAddress("eglReleaseThread"));
  182. fn.eglSetBlobCacheFuncsANDROIDFn =
  183. reinterpret_cast<eglSetBlobCacheFuncsANDROIDProc>(
  184. GetGLProcAddress("eglSetBlobCacheFuncsANDROID"));
  185. fn.eglStreamAttribKHRFn = reinterpret_cast<eglStreamAttribKHRProc>(
  186. GetGLProcAddress("eglStreamAttribKHR"));
  187. fn.eglStreamConsumerAcquireKHRFn =
  188. reinterpret_cast<eglStreamConsumerAcquireKHRProc>(
  189. GetGLProcAddress("eglStreamConsumerAcquireKHR"));
  190. fn.eglStreamConsumerGLTextureExternalAttribsNVFn =
  191. reinterpret_cast<eglStreamConsumerGLTextureExternalAttribsNVProc>(
  192. GetGLProcAddress("eglStreamConsumerGLTextureExternalAttribsNV"));
  193. fn.eglStreamConsumerGLTextureExternalKHRFn =
  194. reinterpret_cast<eglStreamConsumerGLTextureExternalKHRProc>(
  195. GetGLProcAddress("eglStreamConsumerGLTextureExternalKHR"));
  196. fn.eglStreamConsumerReleaseKHRFn =
  197. reinterpret_cast<eglStreamConsumerReleaseKHRProc>(
  198. GetGLProcAddress("eglStreamConsumerReleaseKHR"));
  199. fn.eglStreamPostD3DTextureANGLEFn =
  200. reinterpret_cast<eglStreamPostD3DTextureANGLEProc>(
  201. GetGLProcAddress("eglStreamPostD3DTextureANGLE"));
  202. fn.eglSurfaceAttribFn = reinterpret_cast<eglSurfaceAttribProc>(
  203. GetGLProcAddress("eglSurfaceAttrib"));
  204. fn.eglSwapBuffersFn =
  205. reinterpret_cast<eglSwapBuffersProc>(GetGLProcAddress("eglSwapBuffers"));
  206. fn.eglSwapBuffersWithDamageKHRFn =
  207. reinterpret_cast<eglSwapBuffersWithDamageKHRProc>(
  208. GetGLProcAddress("eglSwapBuffersWithDamageKHR"));
  209. fn.eglSwapIntervalFn = reinterpret_cast<eglSwapIntervalProc>(
  210. GetGLProcAddress("eglSwapInterval"));
  211. fn.eglTerminateFn =
  212. reinterpret_cast<eglTerminateProc>(GetGLProcAddress("eglTerminate"));
  213. fn.eglWaitClientFn =
  214. reinterpret_cast<eglWaitClientProc>(GetGLProcAddress("eglWaitClient"));
  215. fn.eglWaitGLFn =
  216. reinterpret_cast<eglWaitGLProc>(GetGLProcAddress("eglWaitGL"));
  217. fn.eglWaitNativeFn =
  218. reinterpret_cast<eglWaitNativeProc>(GetGLProcAddress("eglWaitNative"));
  219. fn.eglWaitSyncKHRFn =
  220. reinterpret_cast<eglWaitSyncKHRProc>(GetGLProcAddress("eglWaitSyncKHR"));
  221. }
  222. void ClientExtensionsEGL::InitializeClientExtensionSettings() {
  223. std::string client_extensions(GetClientExtensions());
  224. [[maybe_unused]] gfx::ExtensionSet extensions(
  225. gfx::MakeExtensionSet(client_extensions));
  226. b_EGL_ANGLE_display_power_preference =
  227. gfx::HasExtension(extensions, "EGL_ANGLE_display_power_preference");
  228. b_EGL_ANGLE_feature_control =
  229. gfx::HasExtension(extensions, "EGL_ANGLE_feature_control");
  230. b_EGL_ANGLE_platform_angle =
  231. gfx::HasExtension(extensions, "EGL_ANGLE_platform_angle");
  232. b_EGL_ANGLE_platform_angle_d3d =
  233. gfx::HasExtension(extensions, "EGL_ANGLE_platform_angle_d3d");
  234. b_EGL_ANGLE_platform_angle_device_id =
  235. gfx::HasExtension(extensions, "EGL_ANGLE_platform_angle_device_id");
  236. b_EGL_ANGLE_platform_angle_device_type_egl_angle = gfx::HasExtension(
  237. extensions, "EGL_ANGLE_platform_angle_device_type_egl_angle");
  238. b_EGL_ANGLE_platform_angle_device_type_swiftshader = gfx::HasExtension(
  239. extensions, "EGL_ANGLE_platform_angle_device_type_swiftshader");
  240. b_EGL_ANGLE_platform_angle_metal =
  241. gfx::HasExtension(extensions, "EGL_ANGLE_platform_angle_metal");
  242. b_EGL_ANGLE_platform_angle_null =
  243. gfx::HasExtension(extensions, "EGL_ANGLE_platform_angle_null");
  244. b_EGL_ANGLE_platform_angle_opengl =
  245. gfx::HasExtension(extensions, "EGL_ANGLE_platform_angle_opengl");
  246. b_EGL_ANGLE_platform_angle_vulkan =
  247. gfx::HasExtension(extensions, "EGL_ANGLE_platform_angle_vulkan");
  248. b_EGL_EXT_device_base = gfx::HasExtension(extensions, "EGL_EXT_device_base");
  249. b_EGL_EXT_device_enumeration =
  250. gfx::HasExtension(extensions, "EGL_EXT_device_enumeration");
  251. b_EGL_EXT_device_query =
  252. gfx::HasExtension(extensions, "EGL_EXT_device_query");
  253. b_EGL_EXT_platform_device =
  254. gfx::HasExtension(extensions, "EGL_EXT_platform_device");
  255. b_EGL_KHR_debug = gfx::HasExtension(extensions, "EGL_KHR_debug");
  256. b_EGL_MESA_platform_surfaceless =
  257. gfx::HasExtension(extensions, "EGL_MESA_platform_surfaceless");
  258. }
  259. void DisplayExtensionsEGL::InitializeExtensionSettings(EGLDisplay display) {
  260. std::string platform_extensions(GetPlatformExtensions(display));
  261. [[maybe_unused]] gfx::ExtensionSet extensions(
  262. gfx::MakeExtensionSet(platform_extensions));
  263. b_EGL_ANDROID_blob_cache =
  264. gfx::HasExtension(extensions, "EGL_ANDROID_blob_cache");
  265. b_EGL_ANDROID_create_native_client_buffer =
  266. gfx::HasExtension(extensions, "EGL_ANDROID_create_native_client_buffer");
  267. b_EGL_ANDROID_front_buffer_auto_refresh =
  268. gfx::HasExtension(extensions, "EGL_ANDROID_front_buffer_auto_refresh");
  269. b_EGL_ANDROID_get_frame_timestamps =
  270. gfx::HasExtension(extensions, "EGL_ANDROID_get_frame_timestamps");
  271. b_EGL_ANDROID_get_native_client_buffer =
  272. gfx::HasExtension(extensions, "EGL_ANDROID_get_native_client_buffer");
  273. b_EGL_ANDROID_native_fence_sync =
  274. gfx::HasExtension(extensions, "EGL_ANDROID_native_fence_sync");
  275. b_EGL_ANGLE_context_virtualization =
  276. gfx::HasExtension(extensions, "EGL_ANGLE_context_virtualization");
  277. b_EGL_ANGLE_create_context_backwards_compatible = gfx::HasExtension(
  278. extensions, "EGL_ANGLE_create_context_backwards_compatible");
  279. b_EGL_ANGLE_create_context_client_arrays =
  280. gfx::HasExtension(extensions, "EGL_ANGLE_create_context_client_arrays");
  281. b_EGL_ANGLE_create_context_webgl_compatibility = gfx::HasExtension(
  282. extensions, "EGL_ANGLE_create_context_webgl_compatibility");
  283. b_EGL_ANGLE_d3d_share_handle_client_buffer =
  284. gfx::HasExtension(extensions, "EGL_ANGLE_d3d_share_handle_client_buffer");
  285. b_EGL_ANGLE_display_semaphore_share_group =
  286. gfx::HasExtension(extensions, "EGL_ANGLE_display_semaphore_share_group");
  287. b_EGL_ANGLE_display_texture_share_group =
  288. gfx::HasExtension(extensions, "EGL_ANGLE_display_texture_share_group");
  289. b_EGL_ANGLE_external_context_and_surface =
  290. gfx::HasExtension(extensions, "EGL_ANGLE_external_context_and_surface");
  291. b_EGL_ANGLE_keyed_mutex =
  292. gfx::HasExtension(extensions, "EGL_ANGLE_keyed_mutex");
  293. b_EGL_ANGLE_power_preference =
  294. gfx::HasExtension(extensions, "EGL_ANGLE_power_preference");
  295. b_EGL_ANGLE_program_cache_control =
  296. gfx::HasExtension(extensions, "EGL_ANGLE_program_cache_control");
  297. b_EGL_ANGLE_query_surface_pointer =
  298. gfx::HasExtension(extensions, "EGL_ANGLE_query_surface_pointer");
  299. b_EGL_ANGLE_robust_resource_initialization =
  300. gfx::HasExtension(extensions, "EGL_ANGLE_robust_resource_initialization");
  301. b_EGL_ANGLE_stream_producer_d3d_texture =
  302. gfx::HasExtension(extensions, "EGL_ANGLE_stream_producer_d3d_texture");
  303. b_EGL_ANGLE_surface_d3d_texture_2d_share_handle = gfx::HasExtension(
  304. extensions, "EGL_ANGLE_surface_d3d_texture_2d_share_handle");
  305. b_EGL_ANGLE_surface_orientation =
  306. gfx::HasExtension(extensions, "EGL_ANGLE_surface_orientation");
  307. b_EGL_ANGLE_sync_control_rate =
  308. gfx::HasExtension(extensions, "EGL_ANGLE_sync_control_rate");
  309. b_EGL_ANGLE_vulkan_image =
  310. gfx::HasExtension(extensions, "EGL_ANGLE_vulkan_image");
  311. b_EGL_ANGLE_window_fixed_size =
  312. gfx::HasExtension(extensions, "EGL_ANGLE_window_fixed_size");
  313. b_EGL_ARM_implicit_external_sync =
  314. gfx::HasExtension(extensions, "EGL_ARM_implicit_external_sync");
  315. b_EGL_CHROMIUM_create_context_bind_generates_resource = gfx::HasExtension(
  316. extensions, "EGL_CHROMIUM_create_context_bind_generates_resource");
  317. b_EGL_CHROMIUM_sync_control =
  318. gfx::HasExtension(extensions, "EGL_CHROMIUM_sync_control");
  319. b_EGL_EXT_create_context_robustness =
  320. gfx::HasExtension(extensions, "EGL_EXT_create_context_robustness");
  321. b_EGL_EXT_gl_colorspace_display_p3 =
  322. gfx::HasExtension(extensions, "EGL_EXT_gl_colorspace_display_p3");
  323. b_EGL_EXT_gl_colorspace_display_p3_passthrough = gfx::HasExtension(
  324. extensions, "EGL_EXT_gl_colorspace_display_p3_passthrough");
  325. b_EGL_EXT_image_dma_buf_import =
  326. gfx::HasExtension(extensions, "EGL_EXT_image_dma_buf_import");
  327. b_EGL_EXT_image_dma_buf_import_modifiers =
  328. gfx::HasExtension(extensions, "EGL_EXT_image_dma_buf_import_modifiers");
  329. b_EGL_EXT_image_flush_external =
  330. gfx::HasExtension(extensions, "EGL_EXT_image_flush_external");
  331. b_EGL_EXT_pixel_format_float =
  332. gfx::HasExtension(extensions, "EGL_EXT_pixel_format_float");
  333. b_EGL_IMG_context_priority =
  334. gfx::HasExtension(extensions, "EGL_IMG_context_priority");
  335. b_EGL_KHR_create_context =
  336. gfx::HasExtension(extensions, "EGL_KHR_create_context");
  337. b_EGL_KHR_fence_sync = gfx::HasExtension(extensions, "EGL_KHR_fence_sync");
  338. b_EGL_KHR_gl_colorspace =
  339. gfx::HasExtension(extensions, "EGL_KHR_gl_colorspace");
  340. b_EGL_KHR_gl_texture_2D_image =
  341. gfx::HasExtension(extensions, "EGL_KHR_gl_texture_2D_image");
  342. b_EGL_KHR_image = gfx::HasExtension(extensions, "EGL_KHR_image");
  343. b_EGL_KHR_image_base = gfx::HasExtension(extensions, "EGL_KHR_image_base");
  344. b_EGL_KHR_no_config_context =
  345. gfx::HasExtension(extensions, "EGL_KHR_no_config_context");
  346. b_EGL_KHR_stream = gfx::HasExtension(extensions, "EGL_KHR_stream");
  347. b_EGL_KHR_stream_consumer_gltexture =
  348. gfx::HasExtension(extensions, "EGL_KHR_stream_consumer_gltexture");
  349. b_EGL_KHR_surfaceless_context =
  350. gfx::HasExtension(extensions, "EGL_KHR_surfaceless_context");
  351. b_EGL_KHR_swap_buffers_with_damage =
  352. gfx::HasExtension(extensions, "EGL_KHR_swap_buffers_with_damage");
  353. b_EGL_KHR_wait_sync = gfx::HasExtension(extensions, "EGL_KHR_wait_sync");
  354. b_EGL_MESA_image_dma_buf_export =
  355. gfx::HasExtension(extensions, "EGL_MESA_image_dma_buf_export");
  356. b_EGL_NOK_texture_from_pixmap =
  357. gfx::HasExtension(extensions, "EGL_NOK_texture_from_pixmap");
  358. b_EGL_NV_post_sub_buffer =
  359. gfx::HasExtension(extensions, "EGL_NV_post_sub_buffer");
  360. b_EGL_NV_robustness_video_memory_purge =
  361. gfx::HasExtension(extensions, "EGL_NV_robustness_video_memory_purge");
  362. b_EGL_NV_stream_consumer_gltexture_yuv =
  363. gfx::HasExtension(extensions, "EGL_NV_stream_consumer_gltexture_yuv");
  364. b_GL_CHROMIUM_egl_android_native_fence_sync_hack = gfx::HasExtension(
  365. extensions, "GL_CHROMIUM_egl_android_native_fence_sync_hack");
  366. b_GL_CHROMIUM_egl_khr_fence_sync_hack =
  367. gfx::HasExtension(extensions, "GL_CHROMIUM_egl_khr_fence_sync_hack");
  368. }
  369. void DriverEGL::ClearBindings() {
  370. memset(this, 0, sizeof(*this));
  371. }
  372. EGLBoolean EGLApiBase::eglBindAPIFn(EGLenum api) {
  373. return driver_->fn.eglBindAPIFn(api);
  374. }
  375. EGLBoolean EGLApiBase::eglBindTexImageFn(EGLDisplay dpy,
  376. EGLSurface surface,
  377. EGLint buffer) {
  378. return driver_->fn.eglBindTexImageFn(dpy, surface, buffer);
  379. }
  380. EGLBoolean EGLApiBase::eglChooseConfigFn(EGLDisplay dpy,
  381. const EGLint* attrib_list,
  382. EGLConfig* configs,
  383. EGLint config_size,
  384. EGLint* num_config) {
  385. return driver_->fn.eglChooseConfigFn(dpy, attrib_list, configs, config_size,
  386. num_config);
  387. }
  388. EGLint EGLApiBase::eglClientWaitSyncKHRFn(EGLDisplay dpy,
  389. EGLSyncKHR sync,
  390. EGLint flags,
  391. EGLTimeKHR timeout) {
  392. return driver_->fn.eglClientWaitSyncKHRFn(dpy, sync, flags, timeout);
  393. }
  394. EGLBoolean EGLApiBase::eglCopyBuffersFn(EGLDisplay dpy,
  395. EGLSurface surface,
  396. EGLNativePixmapType target) {
  397. return driver_->fn.eglCopyBuffersFn(dpy, surface, target);
  398. }
  399. EGLContext EGLApiBase::eglCreateContextFn(EGLDisplay dpy,
  400. EGLConfig config,
  401. EGLContext share_context,
  402. const EGLint* attrib_list) {
  403. return driver_->fn.eglCreateContextFn(dpy, config, share_context,
  404. attrib_list);
  405. }
  406. EGLImageKHR EGLApiBase::eglCreateImageKHRFn(EGLDisplay dpy,
  407. EGLContext ctx,
  408. EGLenum target,
  409. EGLClientBuffer buffer,
  410. const EGLint* attrib_list) {
  411. return driver_->fn.eglCreateImageKHRFn(dpy, ctx, target, buffer, attrib_list);
  412. }
  413. EGLSurface EGLApiBase::eglCreatePbufferFromClientBufferFn(
  414. EGLDisplay dpy,
  415. EGLenum buftype,
  416. void* buffer,
  417. EGLConfig config,
  418. const EGLint* attrib_list) {
  419. return driver_->fn.eglCreatePbufferFromClientBufferFn(dpy, buftype, buffer,
  420. config, attrib_list);
  421. }
  422. EGLSurface EGLApiBase::eglCreatePbufferSurfaceFn(EGLDisplay dpy,
  423. EGLConfig config,
  424. const EGLint* attrib_list) {
  425. return driver_->fn.eglCreatePbufferSurfaceFn(dpy, config, attrib_list);
  426. }
  427. EGLSurface EGLApiBase::eglCreatePixmapSurfaceFn(EGLDisplay dpy,
  428. EGLConfig config,
  429. EGLNativePixmapType pixmap,
  430. const EGLint* attrib_list) {
  431. return driver_->fn.eglCreatePixmapSurfaceFn(dpy, config, pixmap, attrib_list);
  432. }
  433. EGLStreamKHR EGLApiBase::eglCreateStreamKHRFn(EGLDisplay dpy,
  434. const EGLint* attrib_list) {
  435. return driver_->fn.eglCreateStreamKHRFn(dpy, attrib_list);
  436. }
  437. EGLBoolean EGLApiBase::eglCreateStreamProducerD3DTextureANGLEFn(
  438. EGLDisplay dpy,
  439. EGLStreamKHR stream,
  440. EGLAttrib* attrib_list) {
  441. return driver_->fn.eglCreateStreamProducerD3DTextureANGLEFn(dpy, stream,
  442. attrib_list);
  443. }
  444. EGLSyncKHR EGLApiBase::eglCreateSyncKHRFn(EGLDisplay dpy,
  445. EGLenum type,
  446. const EGLint* attrib_list) {
  447. return driver_->fn.eglCreateSyncKHRFn(dpy, type, attrib_list);
  448. }
  449. EGLSurface EGLApiBase::eglCreateWindowSurfaceFn(EGLDisplay dpy,
  450. EGLConfig config,
  451. EGLNativeWindowType win,
  452. const EGLint* attrib_list) {
  453. return driver_->fn.eglCreateWindowSurfaceFn(dpy, config, win, attrib_list);
  454. }
  455. EGLint EGLApiBase::eglDebugMessageControlKHRFn(EGLDEBUGPROCKHR callback,
  456. const EGLAttrib* attrib_list) {
  457. return driver_->fn.eglDebugMessageControlKHRFn(callback, attrib_list);
  458. }
  459. EGLBoolean EGLApiBase::eglDestroyContextFn(EGLDisplay dpy, EGLContext ctx) {
  460. return driver_->fn.eglDestroyContextFn(dpy, ctx);
  461. }
  462. EGLBoolean EGLApiBase::eglDestroyImageKHRFn(EGLDisplay dpy, EGLImageKHR image) {
  463. return driver_->fn.eglDestroyImageKHRFn(dpy, image);
  464. }
  465. EGLBoolean EGLApiBase::eglDestroyStreamKHRFn(EGLDisplay dpy,
  466. EGLStreamKHR stream) {
  467. return driver_->fn.eglDestroyStreamKHRFn(dpy, stream);
  468. }
  469. EGLBoolean EGLApiBase::eglDestroySurfaceFn(EGLDisplay dpy, EGLSurface surface) {
  470. return driver_->fn.eglDestroySurfaceFn(dpy, surface);
  471. }
  472. EGLBoolean EGLApiBase::eglDestroySyncKHRFn(EGLDisplay dpy, EGLSyncKHR sync) {
  473. return driver_->fn.eglDestroySyncKHRFn(dpy, sync);
  474. }
  475. EGLint EGLApiBase::eglDupNativeFenceFDANDROIDFn(EGLDisplay dpy,
  476. EGLSyncKHR sync) {
  477. return driver_->fn.eglDupNativeFenceFDANDROIDFn(dpy, sync);
  478. }
  479. EGLBoolean EGLApiBase::eglExportDMABUFImageMESAFn(EGLDisplay dpy,
  480. EGLImageKHR image,
  481. int* fds,
  482. EGLint* strides,
  483. EGLint* offsets) {
  484. return driver_->fn.eglExportDMABUFImageMESAFn(dpy, image, fds, strides,
  485. offsets);
  486. }
  487. EGLBoolean EGLApiBase::eglExportDMABUFImageQueryMESAFn(
  488. EGLDisplay dpy,
  489. EGLImageKHR image,
  490. int* fourcc,
  491. int* num_planes,
  492. EGLuint64KHR* modifiers) {
  493. return driver_->fn.eglExportDMABUFImageQueryMESAFn(dpy, image, fourcc,
  494. num_planes, modifiers);
  495. }
  496. EGLBoolean EGLApiBase::eglExportVkImageANGLEFn(EGLDisplay dpy,
  497. EGLImageKHR image,
  498. void* vk_image,
  499. void* vk_image_create_info) {
  500. return driver_->fn.eglExportVkImageANGLEFn(dpy, image, vk_image,
  501. vk_image_create_info);
  502. }
  503. EGLBoolean EGLApiBase::eglGetCompositorTimingANDROIDFn(
  504. EGLDisplay dpy,
  505. EGLSurface surface,
  506. EGLint numTimestamps,
  507. EGLint* names,
  508. EGLnsecsANDROID* values) {
  509. return driver_->fn.eglGetCompositorTimingANDROIDFn(
  510. dpy, surface, numTimestamps, names, values);
  511. }
  512. EGLBoolean EGLApiBase::eglGetCompositorTimingSupportedANDROIDFn(
  513. EGLDisplay dpy,
  514. EGLSurface surface,
  515. EGLint timestamp) {
  516. return driver_->fn.eglGetCompositorTimingSupportedANDROIDFn(dpy, surface,
  517. timestamp);
  518. }
  519. EGLBoolean EGLApiBase::eglGetConfigAttribFn(EGLDisplay dpy,
  520. EGLConfig config,
  521. EGLint attribute,
  522. EGLint* value) {
  523. return driver_->fn.eglGetConfigAttribFn(dpy, config, attribute, value);
  524. }
  525. EGLBoolean EGLApiBase::eglGetConfigsFn(EGLDisplay dpy,
  526. EGLConfig* configs,
  527. EGLint config_size,
  528. EGLint* num_config) {
  529. return driver_->fn.eglGetConfigsFn(dpy, configs, config_size, num_config);
  530. }
  531. EGLContext EGLApiBase::eglGetCurrentContextFn(void) {
  532. return driver_->fn.eglGetCurrentContextFn();
  533. }
  534. EGLDisplay EGLApiBase::eglGetCurrentDisplayFn(void) {
  535. return driver_->fn.eglGetCurrentDisplayFn();
  536. }
  537. EGLSurface EGLApiBase::eglGetCurrentSurfaceFn(EGLint readdraw) {
  538. return driver_->fn.eglGetCurrentSurfaceFn(readdraw);
  539. }
  540. EGLDisplay EGLApiBase::eglGetDisplayFn(EGLNativeDisplayType display_id) {
  541. return driver_->fn.eglGetDisplayFn(display_id);
  542. }
  543. EGLint EGLApiBase::eglGetErrorFn(void) {
  544. return driver_->fn.eglGetErrorFn();
  545. }
  546. EGLBoolean EGLApiBase::eglGetFrameTimestampsANDROIDFn(EGLDisplay dpy,
  547. EGLSurface surface,
  548. EGLuint64KHR frameId,
  549. EGLint numTimestamps,
  550. EGLint* timestamps,
  551. EGLnsecsANDROID* values) {
  552. return driver_->fn.eglGetFrameTimestampsANDROIDFn(
  553. dpy, surface, frameId, numTimestamps, timestamps, values);
  554. }
  555. EGLBoolean EGLApiBase::eglGetFrameTimestampSupportedANDROIDFn(
  556. EGLDisplay dpy,
  557. EGLSurface surface,
  558. EGLint timestamp) {
  559. return driver_->fn.eglGetFrameTimestampSupportedANDROIDFn(dpy, surface,
  560. timestamp);
  561. }
  562. EGLBoolean EGLApiBase::eglGetMscRateANGLEFn(EGLDisplay dpy,
  563. EGLSurface surface,
  564. EGLint* numerator,
  565. EGLint* denominator) {
  566. return driver_->fn.eglGetMscRateANGLEFn(dpy, surface, numerator, denominator);
  567. }
  568. EGLClientBuffer EGLApiBase::eglGetNativeClientBufferANDROIDFn(
  569. const struct AHardwareBuffer* ahardwarebuffer) {
  570. return driver_->fn.eglGetNativeClientBufferANDROIDFn(ahardwarebuffer);
  571. }
  572. EGLBoolean EGLApiBase::eglGetNextFrameIdANDROIDFn(EGLDisplay dpy,
  573. EGLSurface surface,
  574. EGLuint64KHR* frameId) {
  575. return driver_->fn.eglGetNextFrameIdANDROIDFn(dpy, surface, frameId);
  576. }
  577. EGLDisplay EGLApiBase::eglGetPlatformDisplayFn(EGLenum platform,
  578. void* native_display,
  579. const EGLAttrib* attrib_list) {
  580. return driver_->fn.eglGetPlatformDisplayFn(platform, native_display,
  581. attrib_list);
  582. }
  583. __eglMustCastToProperFunctionPointerType EGLApiBase::eglGetProcAddressFn(
  584. const char* procname) {
  585. return driver_->fn.eglGetProcAddressFn(procname);
  586. }
  587. EGLBoolean EGLApiBase::eglGetSyncAttribKHRFn(EGLDisplay dpy,
  588. EGLSyncKHR sync,
  589. EGLint attribute,
  590. EGLint* value) {
  591. return driver_->fn.eglGetSyncAttribKHRFn(dpy, sync, attribute, value);
  592. }
  593. EGLBoolean EGLApiBase::eglGetSyncValuesCHROMIUMFn(EGLDisplay dpy,
  594. EGLSurface surface,
  595. EGLuint64CHROMIUM* ust,
  596. EGLuint64CHROMIUM* msc,
  597. EGLuint64CHROMIUM* sbc) {
  598. return driver_->fn.eglGetSyncValuesCHROMIUMFn(dpy, surface, ust, msc, sbc);
  599. }
  600. void EGLApiBase::eglHandleGPUSwitchANGLEFn(EGLDisplay dpy) {
  601. driver_->fn.eglHandleGPUSwitchANGLEFn(dpy);
  602. }
  603. EGLBoolean EGLApiBase::eglImageFlushExternalEXTFn(
  604. EGLDisplay dpy,
  605. EGLImageKHR image,
  606. const EGLAttrib* attrib_list) {
  607. return driver_->fn.eglImageFlushExternalEXTFn(dpy, image, attrib_list);
  608. }
  609. EGLBoolean EGLApiBase::eglInitializeFn(EGLDisplay dpy,
  610. EGLint* major,
  611. EGLint* minor) {
  612. return driver_->fn.eglInitializeFn(dpy, major, minor);
  613. }
  614. EGLint EGLApiBase::eglLabelObjectKHRFn(EGLDisplay display,
  615. EGLenum objectType,
  616. EGLObjectKHR object,
  617. EGLLabelKHR label) {
  618. return driver_->fn.eglLabelObjectKHRFn(display, objectType, object, label);
  619. }
  620. EGLBoolean EGLApiBase::eglMakeCurrentFn(EGLDisplay dpy,
  621. EGLSurface draw,
  622. EGLSurface read,
  623. EGLContext ctx) {
  624. return driver_->fn.eglMakeCurrentFn(dpy, draw, read, ctx);
  625. }
  626. EGLBoolean EGLApiBase::eglPostSubBufferNVFn(EGLDisplay dpy,
  627. EGLSurface surface,
  628. EGLint x,
  629. EGLint y,
  630. EGLint width,
  631. EGLint height) {
  632. return driver_->fn.eglPostSubBufferNVFn(dpy, surface, x, y, width, height);
  633. }
  634. EGLenum EGLApiBase::eglQueryAPIFn(void) {
  635. return driver_->fn.eglQueryAPIFn();
  636. }
  637. EGLBoolean EGLApiBase::eglQueryContextFn(EGLDisplay dpy,
  638. EGLContext ctx,
  639. EGLint attribute,
  640. EGLint* value) {
  641. return driver_->fn.eglQueryContextFn(dpy, ctx, attribute, value);
  642. }
  643. EGLBoolean EGLApiBase::eglQueryDebugKHRFn(EGLint attribute, EGLAttrib* value) {
  644. return driver_->fn.eglQueryDebugKHRFn(attribute, value);
  645. }
  646. EGLBoolean EGLApiBase::eglQueryDeviceAttribEXTFn(EGLDeviceEXT device,
  647. EGLint attribute,
  648. EGLAttrib* value) {
  649. return driver_->fn.eglQueryDeviceAttribEXTFn(device, attribute, value);
  650. }
  651. EGLBoolean EGLApiBase::eglQueryDevicesEXTFn(EGLint max_devices,
  652. EGLDeviceEXT* devices,
  653. EGLint* num_devices) {
  654. return driver_->fn.eglQueryDevicesEXTFn(max_devices, devices, num_devices);
  655. }
  656. const char* EGLApiBase::eglQueryDeviceStringEXTFn(EGLDeviceEXT device,
  657. EGLint name) {
  658. return driver_->fn.eglQueryDeviceStringEXTFn(device, name);
  659. }
  660. EGLBoolean EGLApiBase::eglQueryDisplayAttribANGLEFn(EGLDisplay dpy,
  661. EGLint attribute,
  662. EGLAttrib* value) {
  663. return driver_->fn.eglQueryDisplayAttribANGLEFn(dpy, attribute, value);
  664. }
  665. EGLBoolean EGLApiBase::eglQueryDisplayAttribEXTFn(EGLDisplay dpy,
  666. EGLint attribute,
  667. EGLAttrib* value) {
  668. return driver_->fn.eglQueryDisplayAttribEXTFn(dpy, attribute, value);
  669. }
  670. EGLBoolean EGLApiBase::eglQueryDmaBufFormatsEXTFn(EGLDisplay dpy,
  671. EGLint max_formats,
  672. EGLint* formats,
  673. EGLint* num_formats) {
  674. return driver_->fn.eglQueryDmaBufFormatsEXTFn(dpy, max_formats, formats,
  675. num_formats);
  676. }
  677. EGLBoolean EGLApiBase::eglQueryDmaBufModifiersEXTFn(EGLDisplay dpy,
  678. EGLint format,
  679. EGLint max_modifiers,
  680. EGLuint64KHR* modifiers,
  681. EGLBoolean* external_only,
  682. EGLint* num_modifiers) {
  683. return driver_->fn.eglQueryDmaBufModifiersEXTFn(
  684. dpy, format, max_modifiers, modifiers, external_only, num_modifiers);
  685. }
  686. EGLBoolean EGLApiBase::eglQueryStreamKHRFn(EGLDisplay dpy,
  687. EGLStreamKHR stream,
  688. EGLenum attribute,
  689. EGLint* value) {
  690. return driver_->fn.eglQueryStreamKHRFn(dpy, stream, attribute, value);
  691. }
  692. EGLBoolean EGLApiBase::eglQueryStreamu64KHRFn(EGLDisplay dpy,
  693. EGLStreamKHR stream,
  694. EGLenum attribute,
  695. EGLuint64KHR* value) {
  696. return driver_->fn.eglQueryStreamu64KHRFn(dpy, stream, attribute, value);
  697. }
  698. const char* EGLApiBase::eglQueryStringFn(EGLDisplay dpy, EGLint name) {
  699. return driver_->fn.eglQueryStringFn(dpy, name);
  700. }
  701. const char* EGLApiBase::eglQueryStringiANGLEFn(EGLDisplay dpy,
  702. EGLint name,
  703. EGLint index) {
  704. return driver_->fn.eglQueryStringiANGLEFn(dpy, name, index);
  705. }
  706. EGLBoolean EGLApiBase::eglQuerySurfaceFn(EGLDisplay dpy,
  707. EGLSurface surface,
  708. EGLint attribute,
  709. EGLint* value) {
  710. return driver_->fn.eglQuerySurfaceFn(dpy, surface, attribute, value);
  711. }
  712. EGLBoolean EGLApiBase::eglQuerySurfacePointerANGLEFn(EGLDisplay dpy,
  713. EGLSurface surface,
  714. EGLint attribute,
  715. void** value) {
  716. return driver_->fn.eglQuerySurfacePointerANGLEFn(dpy, surface, attribute,
  717. value);
  718. }
  719. void EGLApiBase::eglReacquireHighPowerGPUANGLEFn(EGLDisplay dpy,
  720. EGLContext ctx) {
  721. driver_->fn.eglReacquireHighPowerGPUANGLEFn(dpy, ctx);
  722. }
  723. void EGLApiBase::eglReleaseHighPowerGPUANGLEFn(EGLDisplay dpy, EGLContext ctx) {
  724. driver_->fn.eglReleaseHighPowerGPUANGLEFn(dpy, ctx);
  725. }
  726. EGLBoolean EGLApiBase::eglReleaseTexImageFn(EGLDisplay dpy,
  727. EGLSurface surface,
  728. EGLint buffer) {
  729. return driver_->fn.eglReleaseTexImageFn(dpy, surface, buffer);
  730. }
  731. EGLBoolean EGLApiBase::eglReleaseThreadFn(void) {
  732. return driver_->fn.eglReleaseThreadFn();
  733. }
  734. void EGLApiBase::eglSetBlobCacheFuncsANDROIDFn(EGLDisplay dpy,
  735. EGLSetBlobFuncANDROID set,
  736. EGLGetBlobFuncANDROID get) {
  737. driver_->fn.eglSetBlobCacheFuncsANDROIDFn(dpy, set, get);
  738. }
  739. EGLBoolean EGLApiBase::eglStreamAttribKHRFn(EGLDisplay dpy,
  740. EGLStreamKHR stream,
  741. EGLenum attribute,
  742. EGLint value) {
  743. return driver_->fn.eglStreamAttribKHRFn(dpy, stream, attribute, value);
  744. }
  745. EGLBoolean EGLApiBase::eglStreamConsumerAcquireKHRFn(EGLDisplay dpy,
  746. EGLStreamKHR stream) {
  747. return driver_->fn.eglStreamConsumerAcquireKHRFn(dpy, stream);
  748. }
  749. EGLBoolean EGLApiBase::eglStreamConsumerGLTextureExternalAttribsNVFn(
  750. EGLDisplay dpy,
  751. EGLStreamKHR stream,
  752. EGLAttrib* attrib_list) {
  753. return driver_->fn.eglStreamConsumerGLTextureExternalAttribsNVFn(dpy, stream,
  754. attrib_list);
  755. }
  756. EGLBoolean EGLApiBase::eglStreamConsumerGLTextureExternalKHRFn(
  757. EGLDisplay dpy,
  758. EGLStreamKHR stream) {
  759. return driver_->fn.eglStreamConsumerGLTextureExternalKHRFn(dpy, stream);
  760. }
  761. EGLBoolean EGLApiBase::eglStreamConsumerReleaseKHRFn(EGLDisplay dpy,
  762. EGLStreamKHR stream) {
  763. return driver_->fn.eglStreamConsumerReleaseKHRFn(dpy, stream);
  764. }
  765. EGLBoolean EGLApiBase::eglStreamPostD3DTextureANGLEFn(
  766. EGLDisplay dpy,
  767. EGLStreamKHR stream,
  768. void* texture,
  769. const EGLAttrib* attrib_list) {
  770. return driver_->fn.eglStreamPostD3DTextureANGLEFn(dpy, stream, texture,
  771. attrib_list);
  772. }
  773. EGLBoolean EGLApiBase::eglSurfaceAttribFn(EGLDisplay dpy,
  774. EGLSurface surface,
  775. EGLint attribute,
  776. EGLint value) {
  777. return driver_->fn.eglSurfaceAttribFn(dpy, surface, attribute, value);
  778. }
  779. EGLBoolean EGLApiBase::eglSwapBuffersFn(EGLDisplay dpy, EGLSurface surface) {
  780. return driver_->fn.eglSwapBuffersFn(dpy, surface);
  781. }
  782. EGLBoolean EGLApiBase::eglSwapBuffersWithDamageKHRFn(EGLDisplay dpy,
  783. EGLSurface surface,
  784. EGLint* rects,
  785. EGLint n_rects) {
  786. return driver_->fn.eglSwapBuffersWithDamageKHRFn(dpy, surface, rects,
  787. n_rects);
  788. }
  789. EGLBoolean EGLApiBase::eglSwapIntervalFn(EGLDisplay dpy, EGLint interval) {
  790. return driver_->fn.eglSwapIntervalFn(dpy, interval);
  791. }
  792. EGLBoolean EGLApiBase::eglTerminateFn(EGLDisplay dpy) {
  793. return driver_->fn.eglTerminateFn(dpy);
  794. }
  795. EGLBoolean EGLApiBase::eglWaitClientFn(void) {
  796. return driver_->fn.eglWaitClientFn();
  797. }
  798. EGLBoolean EGLApiBase::eglWaitGLFn(void) {
  799. return driver_->fn.eglWaitGLFn();
  800. }
  801. EGLBoolean EGLApiBase::eglWaitNativeFn(EGLint engine) {
  802. return driver_->fn.eglWaitNativeFn(engine);
  803. }
  804. EGLint EGLApiBase::eglWaitSyncKHRFn(EGLDisplay dpy,
  805. EGLSyncKHR sync,
  806. EGLint flags) {
  807. return driver_->fn.eglWaitSyncKHRFn(dpy, sync, flags);
  808. }
  809. EGLBoolean TraceEGLApi::eglBindAPIFn(EGLenum api) {
  810. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglBindAPI");
  811. return egl_api_->eglBindAPIFn(api);
  812. }
  813. EGLBoolean TraceEGLApi::eglBindTexImageFn(EGLDisplay dpy,
  814. EGLSurface surface,
  815. EGLint buffer) {
  816. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglBindTexImage");
  817. return egl_api_->eglBindTexImageFn(dpy, surface, buffer);
  818. }
  819. EGLBoolean TraceEGLApi::eglChooseConfigFn(EGLDisplay dpy,
  820. const EGLint* attrib_list,
  821. EGLConfig* configs,
  822. EGLint config_size,
  823. EGLint* num_config) {
  824. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglChooseConfig");
  825. return egl_api_->eglChooseConfigFn(dpy, attrib_list, configs, config_size,
  826. num_config);
  827. }
  828. EGLint TraceEGLApi::eglClientWaitSyncKHRFn(EGLDisplay dpy,
  829. EGLSyncKHR sync,
  830. EGLint flags,
  831. EGLTimeKHR timeout) {
  832. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglClientWaitSyncKHR");
  833. return egl_api_->eglClientWaitSyncKHRFn(dpy, sync, flags, timeout);
  834. }
  835. EGLBoolean TraceEGLApi::eglCopyBuffersFn(EGLDisplay dpy,
  836. EGLSurface surface,
  837. EGLNativePixmapType target) {
  838. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglCopyBuffers");
  839. return egl_api_->eglCopyBuffersFn(dpy, surface, target);
  840. }
  841. EGLContext TraceEGLApi::eglCreateContextFn(EGLDisplay dpy,
  842. EGLConfig config,
  843. EGLContext share_context,
  844. const EGLint* attrib_list) {
  845. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglCreateContext");
  846. return egl_api_->eglCreateContextFn(dpy, config, share_context, attrib_list);
  847. }
  848. EGLImageKHR TraceEGLApi::eglCreateImageKHRFn(EGLDisplay dpy,
  849. EGLContext ctx,
  850. EGLenum target,
  851. EGLClientBuffer buffer,
  852. const EGLint* attrib_list) {
  853. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglCreateImageKHR");
  854. return egl_api_->eglCreateImageKHRFn(dpy, ctx, target, buffer, attrib_list);
  855. }
  856. EGLSurface TraceEGLApi::eglCreatePbufferFromClientBufferFn(
  857. EGLDisplay dpy,
  858. EGLenum buftype,
  859. void* buffer,
  860. EGLConfig config,
  861. const EGLint* attrib_list) {
  862. TRACE_EVENT_BINARY_EFFICIENT0(
  863. "gpu", "TraceEGLAPI::eglCreatePbufferFromClientBuffer");
  864. return egl_api_->eglCreatePbufferFromClientBufferFn(dpy, buftype, buffer,
  865. config, attrib_list);
  866. }
  867. EGLSurface TraceEGLApi::eglCreatePbufferSurfaceFn(EGLDisplay dpy,
  868. EGLConfig config,
  869. const EGLint* attrib_list) {
  870. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglCreatePbufferSurface");
  871. return egl_api_->eglCreatePbufferSurfaceFn(dpy, config, attrib_list);
  872. }
  873. EGLSurface TraceEGLApi::eglCreatePixmapSurfaceFn(EGLDisplay dpy,
  874. EGLConfig config,
  875. EGLNativePixmapType pixmap,
  876. const EGLint* attrib_list) {
  877. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglCreatePixmapSurface");
  878. return egl_api_->eglCreatePixmapSurfaceFn(dpy, config, pixmap, attrib_list);
  879. }
  880. EGLStreamKHR TraceEGLApi::eglCreateStreamKHRFn(EGLDisplay dpy,
  881. const EGLint* attrib_list) {
  882. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglCreateStreamKHR");
  883. return egl_api_->eglCreateStreamKHRFn(dpy, attrib_list);
  884. }
  885. EGLBoolean TraceEGLApi::eglCreateStreamProducerD3DTextureANGLEFn(
  886. EGLDisplay dpy,
  887. EGLStreamKHR stream,
  888. EGLAttrib* attrib_list) {
  889. TRACE_EVENT_BINARY_EFFICIENT0(
  890. "gpu", "TraceEGLAPI::eglCreateStreamProducerD3DTextureANGLE");
  891. return egl_api_->eglCreateStreamProducerD3DTextureANGLEFn(dpy, stream,
  892. attrib_list);
  893. }
  894. EGLSyncKHR TraceEGLApi::eglCreateSyncKHRFn(EGLDisplay dpy,
  895. EGLenum type,
  896. const EGLint* attrib_list) {
  897. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglCreateSyncKHR");
  898. return egl_api_->eglCreateSyncKHRFn(dpy, type, attrib_list);
  899. }
  900. EGLSurface TraceEGLApi::eglCreateWindowSurfaceFn(EGLDisplay dpy,
  901. EGLConfig config,
  902. EGLNativeWindowType win,
  903. const EGLint* attrib_list) {
  904. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglCreateWindowSurface");
  905. return egl_api_->eglCreateWindowSurfaceFn(dpy, config, win, attrib_list);
  906. }
  907. EGLint TraceEGLApi::eglDebugMessageControlKHRFn(EGLDEBUGPROCKHR callback,
  908. const EGLAttrib* attrib_list) {
  909. TRACE_EVENT_BINARY_EFFICIENT0("gpu",
  910. "TraceEGLAPI::eglDebugMessageControlKHR");
  911. return egl_api_->eglDebugMessageControlKHRFn(callback, attrib_list);
  912. }
  913. EGLBoolean TraceEGLApi::eglDestroyContextFn(EGLDisplay dpy, EGLContext ctx) {
  914. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglDestroyContext");
  915. return egl_api_->eglDestroyContextFn(dpy, ctx);
  916. }
  917. EGLBoolean TraceEGLApi::eglDestroyImageKHRFn(EGLDisplay dpy,
  918. EGLImageKHR image) {
  919. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglDestroyImageKHR");
  920. return egl_api_->eglDestroyImageKHRFn(dpy, image);
  921. }
  922. EGLBoolean TraceEGLApi::eglDestroyStreamKHRFn(EGLDisplay dpy,
  923. EGLStreamKHR stream) {
  924. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglDestroyStreamKHR");
  925. return egl_api_->eglDestroyStreamKHRFn(dpy, stream);
  926. }
  927. EGLBoolean TraceEGLApi::eglDestroySurfaceFn(EGLDisplay dpy,
  928. EGLSurface surface) {
  929. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglDestroySurface");
  930. return egl_api_->eglDestroySurfaceFn(dpy, surface);
  931. }
  932. EGLBoolean TraceEGLApi::eglDestroySyncKHRFn(EGLDisplay dpy, EGLSyncKHR sync) {
  933. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglDestroySyncKHR");
  934. return egl_api_->eglDestroySyncKHRFn(dpy, sync);
  935. }
  936. EGLint TraceEGLApi::eglDupNativeFenceFDANDROIDFn(EGLDisplay dpy,
  937. EGLSyncKHR sync) {
  938. TRACE_EVENT_BINARY_EFFICIENT0("gpu",
  939. "TraceEGLAPI::eglDupNativeFenceFDANDROID");
  940. return egl_api_->eglDupNativeFenceFDANDROIDFn(dpy, sync);
  941. }
  942. EGLBoolean TraceEGLApi::eglExportDMABUFImageMESAFn(EGLDisplay dpy,
  943. EGLImageKHR image,
  944. int* fds,
  945. EGLint* strides,
  946. EGLint* offsets) {
  947. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglExportDMABUFImageMESA");
  948. return egl_api_->eglExportDMABUFImageMESAFn(dpy, image, fds, strides,
  949. offsets);
  950. }
  951. EGLBoolean TraceEGLApi::eglExportDMABUFImageQueryMESAFn(
  952. EGLDisplay dpy,
  953. EGLImageKHR image,
  954. int* fourcc,
  955. int* num_planes,
  956. EGLuint64KHR* modifiers) {
  957. TRACE_EVENT_BINARY_EFFICIENT0("gpu",
  958. "TraceEGLAPI::eglExportDMABUFImageQueryMESA");
  959. return egl_api_->eglExportDMABUFImageQueryMESAFn(dpy, image, fourcc,
  960. num_planes, modifiers);
  961. }
  962. EGLBoolean TraceEGLApi::eglExportVkImageANGLEFn(EGLDisplay dpy,
  963. EGLImageKHR image,
  964. void* vk_image,
  965. void* vk_image_create_info) {
  966. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglExportVkImageANGLE");
  967. return egl_api_->eglExportVkImageANGLEFn(dpy, image, vk_image,
  968. vk_image_create_info);
  969. }
  970. EGLBoolean TraceEGLApi::eglGetCompositorTimingANDROIDFn(
  971. EGLDisplay dpy,
  972. EGLSurface surface,
  973. EGLint numTimestamps,
  974. EGLint* names,
  975. EGLnsecsANDROID* values) {
  976. TRACE_EVENT_BINARY_EFFICIENT0("gpu",
  977. "TraceEGLAPI::eglGetCompositorTimingANDROID");
  978. return egl_api_->eglGetCompositorTimingANDROIDFn(dpy, surface, numTimestamps,
  979. names, values);
  980. }
  981. EGLBoolean TraceEGLApi::eglGetCompositorTimingSupportedANDROIDFn(
  982. EGLDisplay dpy,
  983. EGLSurface surface,
  984. EGLint timestamp) {
  985. TRACE_EVENT_BINARY_EFFICIENT0(
  986. "gpu", "TraceEGLAPI::eglGetCompositorTimingSupportedANDROID");
  987. return egl_api_->eglGetCompositorTimingSupportedANDROIDFn(dpy, surface,
  988. timestamp);
  989. }
  990. EGLBoolean TraceEGLApi::eglGetConfigAttribFn(EGLDisplay dpy,
  991. EGLConfig config,
  992. EGLint attribute,
  993. EGLint* value) {
  994. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglGetConfigAttrib");
  995. return egl_api_->eglGetConfigAttribFn(dpy, config, attribute, value);
  996. }
  997. EGLBoolean TraceEGLApi::eglGetConfigsFn(EGLDisplay dpy,
  998. EGLConfig* configs,
  999. EGLint config_size,
  1000. EGLint* num_config) {
  1001. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglGetConfigs");
  1002. return egl_api_->eglGetConfigsFn(dpy, configs, config_size, num_config);
  1003. }
  1004. EGLContext TraceEGLApi::eglGetCurrentContextFn(void) {
  1005. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglGetCurrentContext");
  1006. return egl_api_->eglGetCurrentContextFn();
  1007. }
  1008. EGLDisplay TraceEGLApi::eglGetCurrentDisplayFn(void) {
  1009. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglGetCurrentDisplay");
  1010. return egl_api_->eglGetCurrentDisplayFn();
  1011. }
  1012. EGLSurface TraceEGLApi::eglGetCurrentSurfaceFn(EGLint readdraw) {
  1013. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglGetCurrentSurface");
  1014. return egl_api_->eglGetCurrentSurfaceFn(readdraw);
  1015. }
  1016. EGLDisplay TraceEGLApi::eglGetDisplayFn(EGLNativeDisplayType display_id) {
  1017. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglGetDisplay");
  1018. return egl_api_->eglGetDisplayFn(display_id);
  1019. }
  1020. EGLint TraceEGLApi::eglGetErrorFn(void) {
  1021. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglGetError");
  1022. return egl_api_->eglGetErrorFn();
  1023. }
  1024. EGLBoolean TraceEGLApi::eglGetFrameTimestampsANDROIDFn(
  1025. EGLDisplay dpy,
  1026. EGLSurface surface,
  1027. EGLuint64KHR frameId,
  1028. EGLint numTimestamps,
  1029. EGLint* timestamps,
  1030. EGLnsecsANDROID* values) {
  1031. TRACE_EVENT_BINARY_EFFICIENT0("gpu",
  1032. "TraceEGLAPI::eglGetFrameTimestampsANDROID");
  1033. return egl_api_->eglGetFrameTimestampsANDROIDFn(
  1034. dpy, surface, frameId, numTimestamps, timestamps, values);
  1035. }
  1036. EGLBoolean TraceEGLApi::eglGetFrameTimestampSupportedANDROIDFn(
  1037. EGLDisplay dpy,
  1038. EGLSurface surface,
  1039. EGLint timestamp) {
  1040. TRACE_EVENT_BINARY_EFFICIENT0(
  1041. "gpu", "TraceEGLAPI::eglGetFrameTimestampSupportedANDROID");
  1042. return egl_api_->eglGetFrameTimestampSupportedANDROIDFn(dpy, surface,
  1043. timestamp);
  1044. }
  1045. EGLBoolean TraceEGLApi::eglGetMscRateANGLEFn(EGLDisplay dpy,
  1046. EGLSurface surface,
  1047. EGLint* numerator,
  1048. EGLint* denominator) {
  1049. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglGetMscRateANGLE");
  1050. return egl_api_->eglGetMscRateANGLEFn(dpy, surface, numerator, denominator);
  1051. }
  1052. EGLClientBuffer TraceEGLApi::eglGetNativeClientBufferANDROIDFn(
  1053. const struct AHardwareBuffer* ahardwarebuffer) {
  1054. TRACE_EVENT_BINARY_EFFICIENT0("gpu",
  1055. "TraceEGLAPI::eglGetNativeClientBufferANDROID");
  1056. return egl_api_->eglGetNativeClientBufferANDROIDFn(ahardwarebuffer);
  1057. }
  1058. EGLBoolean TraceEGLApi::eglGetNextFrameIdANDROIDFn(EGLDisplay dpy,
  1059. EGLSurface surface,
  1060. EGLuint64KHR* frameId) {
  1061. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglGetNextFrameIdANDROID");
  1062. return egl_api_->eglGetNextFrameIdANDROIDFn(dpy, surface, frameId);
  1063. }
  1064. EGLDisplay TraceEGLApi::eglGetPlatformDisplayFn(EGLenum platform,
  1065. void* native_display,
  1066. const EGLAttrib* attrib_list) {
  1067. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglGetPlatformDisplay");
  1068. return egl_api_->eglGetPlatformDisplayFn(platform, native_display,
  1069. attrib_list);
  1070. }
  1071. __eglMustCastToProperFunctionPointerType TraceEGLApi::eglGetProcAddressFn(
  1072. const char* procname) {
  1073. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglGetProcAddress");
  1074. return egl_api_->eglGetProcAddressFn(procname);
  1075. }
  1076. EGLBoolean TraceEGLApi::eglGetSyncAttribKHRFn(EGLDisplay dpy,
  1077. EGLSyncKHR sync,
  1078. EGLint attribute,
  1079. EGLint* value) {
  1080. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglGetSyncAttribKHR");
  1081. return egl_api_->eglGetSyncAttribKHRFn(dpy, sync, attribute, value);
  1082. }
  1083. EGLBoolean TraceEGLApi::eglGetSyncValuesCHROMIUMFn(EGLDisplay dpy,
  1084. EGLSurface surface,
  1085. EGLuint64CHROMIUM* ust,
  1086. EGLuint64CHROMIUM* msc,
  1087. EGLuint64CHROMIUM* sbc) {
  1088. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglGetSyncValuesCHROMIUM");
  1089. return egl_api_->eglGetSyncValuesCHROMIUMFn(dpy, surface, ust, msc, sbc);
  1090. }
  1091. void TraceEGLApi::eglHandleGPUSwitchANGLEFn(EGLDisplay dpy) {
  1092. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglHandleGPUSwitchANGLE");
  1093. egl_api_->eglHandleGPUSwitchANGLEFn(dpy);
  1094. }
  1095. EGLBoolean TraceEGLApi::eglImageFlushExternalEXTFn(
  1096. EGLDisplay dpy,
  1097. EGLImageKHR image,
  1098. const EGLAttrib* attrib_list) {
  1099. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglImageFlushExternalEXT");
  1100. return egl_api_->eglImageFlushExternalEXTFn(dpy, image, attrib_list);
  1101. }
  1102. EGLBoolean TraceEGLApi::eglInitializeFn(EGLDisplay dpy,
  1103. EGLint* major,
  1104. EGLint* minor) {
  1105. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglInitialize");
  1106. return egl_api_->eglInitializeFn(dpy, major, minor);
  1107. }
  1108. EGLint TraceEGLApi::eglLabelObjectKHRFn(EGLDisplay display,
  1109. EGLenum objectType,
  1110. EGLObjectKHR object,
  1111. EGLLabelKHR label) {
  1112. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglLabelObjectKHR");
  1113. return egl_api_->eglLabelObjectKHRFn(display, objectType, object, label);
  1114. }
  1115. EGLBoolean TraceEGLApi::eglMakeCurrentFn(EGLDisplay dpy,
  1116. EGLSurface draw,
  1117. EGLSurface read,
  1118. EGLContext ctx) {
  1119. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglMakeCurrent");
  1120. return egl_api_->eglMakeCurrentFn(dpy, draw, read, ctx);
  1121. }
  1122. EGLBoolean TraceEGLApi::eglPostSubBufferNVFn(EGLDisplay dpy,
  1123. EGLSurface surface,
  1124. EGLint x,
  1125. EGLint y,
  1126. EGLint width,
  1127. EGLint height) {
  1128. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglPostSubBufferNV");
  1129. return egl_api_->eglPostSubBufferNVFn(dpy, surface, x, y, width, height);
  1130. }
  1131. EGLenum TraceEGLApi::eglQueryAPIFn(void) {
  1132. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglQueryAPI");
  1133. return egl_api_->eglQueryAPIFn();
  1134. }
  1135. EGLBoolean TraceEGLApi::eglQueryContextFn(EGLDisplay dpy,
  1136. EGLContext ctx,
  1137. EGLint attribute,
  1138. EGLint* value) {
  1139. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglQueryContext");
  1140. return egl_api_->eglQueryContextFn(dpy, ctx, attribute, value);
  1141. }
  1142. EGLBoolean TraceEGLApi::eglQueryDebugKHRFn(EGLint attribute, EGLAttrib* value) {
  1143. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglQueryDebugKHR");
  1144. return egl_api_->eglQueryDebugKHRFn(attribute, value);
  1145. }
  1146. EGLBoolean TraceEGLApi::eglQueryDeviceAttribEXTFn(EGLDeviceEXT device,
  1147. EGLint attribute,
  1148. EGLAttrib* value) {
  1149. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglQueryDeviceAttribEXT");
  1150. return egl_api_->eglQueryDeviceAttribEXTFn(device, attribute, value);
  1151. }
  1152. EGLBoolean TraceEGLApi::eglQueryDevicesEXTFn(EGLint max_devices,
  1153. EGLDeviceEXT* devices,
  1154. EGLint* num_devices) {
  1155. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglQueryDevicesEXT");
  1156. return egl_api_->eglQueryDevicesEXTFn(max_devices, devices, num_devices);
  1157. }
  1158. const char* TraceEGLApi::eglQueryDeviceStringEXTFn(EGLDeviceEXT device,
  1159. EGLint name) {
  1160. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglQueryDeviceStringEXT");
  1161. return egl_api_->eglQueryDeviceStringEXTFn(device, name);
  1162. }
  1163. EGLBoolean TraceEGLApi::eglQueryDisplayAttribANGLEFn(EGLDisplay dpy,
  1164. EGLint attribute,
  1165. EGLAttrib* value) {
  1166. TRACE_EVENT_BINARY_EFFICIENT0("gpu",
  1167. "TraceEGLAPI::eglQueryDisplayAttribANGLE");
  1168. return egl_api_->eglQueryDisplayAttribANGLEFn(dpy, attribute, value);
  1169. }
  1170. EGLBoolean TraceEGLApi::eglQueryDisplayAttribEXTFn(EGLDisplay dpy,
  1171. EGLint attribute,
  1172. EGLAttrib* value) {
  1173. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglQueryDisplayAttribEXT");
  1174. return egl_api_->eglQueryDisplayAttribEXTFn(dpy, attribute, value);
  1175. }
  1176. EGLBoolean TraceEGLApi::eglQueryDmaBufFormatsEXTFn(EGLDisplay dpy,
  1177. EGLint max_formats,
  1178. EGLint* formats,
  1179. EGLint* num_formats) {
  1180. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglQueryDmaBufFormatsEXT");
  1181. return egl_api_->eglQueryDmaBufFormatsEXTFn(dpy, max_formats, formats,
  1182. num_formats);
  1183. }
  1184. EGLBoolean TraceEGLApi::eglQueryDmaBufModifiersEXTFn(EGLDisplay dpy,
  1185. EGLint format,
  1186. EGLint max_modifiers,
  1187. EGLuint64KHR* modifiers,
  1188. EGLBoolean* external_only,
  1189. EGLint* num_modifiers) {
  1190. TRACE_EVENT_BINARY_EFFICIENT0("gpu",
  1191. "TraceEGLAPI::eglQueryDmaBufModifiersEXT");
  1192. return egl_api_->eglQueryDmaBufModifiersEXTFn(
  1193. dpy, format, max_modifiers, modifiers, external_only, num_modifiers);
  1194. }
  1195. EGLBoolean TraceEGLApi::eglQueryStreamKHRFn(EGLDisplay dpy,
  1196. EGLStreamKHR stream,
  1197. EGLenum attribute,
  1198. EGLint* value) {
  1199. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglQueryStreamKHR");
  1200. return egl_api_->eglQueryStreamKHRFn(dpy, stream, attribute, value);
  1201. }
  1202. EGLBoolean TraceEGLApi::eglQueryStreamu64KHRFn(EGLDisplay dpy,
  1203. EGLStreamKHR stream,
  1204. EGLenum attribute,
  1205. EGLuint64KHR* value) {
  1206. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglQueryStreamu64KHR");
  1207. return egl_api_->eglQueryStreamu64KHRFn(dpy, stream, attribute, value);
  1208. }
  1209. const char* TraceEGLApi::eglQueryStringFn(EGLDisplay dpy, EGLint name) {
  1210. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglQueryString");
  1211. return egl_api_->eglQueryStringFn(dpy, name);
  1212. }
  1213. const char* TraceEGLApi::eglQueryStringiANGLEFn(EGLDisplay dpy,
  1214. EGLint name,
  1215. EGLint index) {
  1216. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglQueryStringiANGLE");
  1217. return egl_api_->eglQueryStringiANGLEFn(dpy, name, index);
  1218. }
  1219. EGLBoolean TraceEGLApi::eglQuerySurfaceFn(EGLDisplay dpy,
  1220. EGLSurface surface,
  1221. EGLint attribute,
  1222. EGLint* value) {
  1223. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglQuerySurface");
  1224. return egl_api_->eglQuerySurfaceFn(dpy, surface, attribute, value);
  1225. }
  1226. EGLBoolean TraceEGLApi::eglQuerySurfacePointerANGLEFn(EGLDisplay dpy,
  1227. EGLSurface surface,
  1228. EGLint attribute,
  1229. void** value) {
  1230. TRACE_EVENT_BINARY_EFFICIENT0("gpu",
  1231. "TraceEGLAPI::eglQuerySurfacePointerANGLE");
  1232. return egl_api_->eglQuerySurfacePointerANGLEFn(dpy, surface, attribute,
  1233. value);
  1234. }
  1235. void TraceEGLApi::eglReacquireHighPowerGPUANGLEFn(EGLDisplay dpy,
  1236. EGLContext ctx) {
  1237. TRACE_EVENT_BINARY_EFFICIENT0("gpu",
  1238. "TraceEGLAPI::eglReacquireHighPowerGPUANGLE");
  1239. egl_api_->eglReacquireHighPowerGPUANGLEFn(dpy, ctx);
  1240. }
  1241. void TraceEGLApi::eglReleaseHighPowerGPUANGLEFn(EGLDisplay dpy,
  1242. EGLContext ctx) {
  1243. TRACE_EVENT_BINARY_EFFICIENT0("gpu",
  1244. "TraceEGLAPI::eglReleaseHighPowerGPUANGLE");
  1245. egl_api_->eglReleaseHighPowerGPUANGLEFn(dpy, ctx);
  1246. }
  1247. EGLBoolean TraceEGLApi::eglReleaseTexImageFn(EGLDisplay dpy,
  1248. EGLSurface surface,
  1249. EGLint buffer) {
  1250. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglReleaseTexImage");
  1251. return egl_api_->eglReleaseTexImageFn(dpy, surface, buffer);
  1252. }
  1253. EGLBoolean TraceEGLApi::eglReleaseThreadFn(void) {
  1254. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglReleaseThread");
  1255. return egl_api_->eglReleaseThreadFn();
  1256. }
  1257. void TraceEGLApi::eglSetBlobCacheFuncsANDROIDFn(EGLDisplay dpy,
  1258. EGLSetBlobFuncANDROID set,
  1259. EGLGetBlobFuncANDROID get) {
  1260. TRACE_EVENT_BINARY_EFFICIENT0("gpu",
  1261. "TraceEGLAPI::eglSetBlobCacheFuncsANDROID");
  1262. egl_api_->eglSetBlobCacheFuncsANDROIDFn(dpy, set, get);
  1263. }
  1264. EGLBoolean TraceEGLApi::eglStreamAttribKHRFn(EGLDisplay dpy,
  1265. EGLStreamKHR stream,
  1266. EGLenum attribute,
  1267. EGLint value) {
  1268. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglStreamAttribKHR");
  1269. return egl_api_->eglStreamAttribKHRFn(dpy, stream, attribute, value);
  1270. }
  1271. EGLBoolean TraceEGLApi::eglStreamConsumerAcquireKHRFn(EGLDisplay dpy,
  1272. EGLStreamKHR stream) {
  1273. TRACE_EVENT_BINARY_EFFICIENT0("gpu",
  1274. "TraceEGLAPI::eglStreamConsumerAcquireKHR");
  1275. return egl_api_->eglStreamConsumerAcquireKHRFn(dpy, stream);
  1276. }
  1277. EGLBoolean TraceEGLApi::eglStreamConsumerGLTextureExternalAttribsNVFn(
  1278. EGLDisplay dpy,
  1279. EGLStreamKHR stream,
  1280. EGLAttrib* attrib_list) {
  1281. TRACE_EVENT_BINARY_EFFICIENT0(
  1282. "gpu", "TraceEGLAPI::eglStreamConsumerGLTextureExternalAttribsNV");
  1283. return egl_api_->eglStreamConsumerGLTextureExternalAttribsNVFn(dpy, stream,
  1284. attrib_list);
  1285. }
  1286. EGLBoolean TraceEGLApi::eglStreamConsumerGLTextureExternalKHRFn(
  1287. EGLDisplay dpy,
  1288. EGLStreamKHR stream) {
  1289. TRACE_EVENT_BINARY_EFFICIENT0(
  1290. "gpu", "TraceEGLAPI::eglStreamConsumerGLTextureExternalKHR");
  1291. return egl_api_->eglStreamConsumerGLTextureExternalKHRFn(dpy, stream);
  1292. }
  1293. EGLBoolean TraceEGLApi::eglStreamConsumerReleaseKHRFn(EGLDisplay dpy,
  1294. EGLStreamKHR stream) {
  1295. TRACE_EVENT_BINARY_EFFICIENT0("gpu",
  1296. "TraceEGLAPI::eglStreamConsumerReleaseKHR");
  1297. return egl_api_->eglStreamConsumerReleaseKHRFn(dpy, stream);
  1298. }
  1299. EGLBoolean TraceEGLApi::eglStreamPostD3DTextureANGLEFn(
  1300. EGLDisplay dpy,
  1301. EGLStreamKHR stream,
  1302. void* texture,
  1303. const EGLAttrib* attrib_list) {
  1304. TRACE_EVENT_BINARY_EFFICIENT0("gpu",
  1305. "TraceEGLAPI::eglStreamPostD3DTextureANGLE");
  1306. return egl_api_->eglStreamPostD3DTextureANGLEFn(dpy, stream, texture,
  1307. attrib_list);
  1308. }
  1309. EGLBoolean TraceEGLApi::eglSurfaceAttribFn(EGLDisplay dpy,
  1310. EGLSurface surface,
  1311. EGLint attribute,
  1312. EGLint value) {
  1313. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglSurfaceAttrib");
  1314. return egl_api_->eglSurfaceAttribFn(dpy, surface, attribute, value);
  1315. }
  1316. EGLBoolean TraceEGLApi::eglSwapBuffersFn(EGLDisplay dpy, EGLSurface surface) {
  1317. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglSwapBuffers");
  1318. return egl_api_->eglSwapBuffersFn(dpy, surface);
  1319. }
  1320. EGLBoolean TraceEGLApi::eglSwapBuffersWithDamageKHRFn(EGLDisplay dpy,
  1321. EGLSurface surface,
  1322. EGLint* rects,
  1323. EGLint n_rects) {
  1324. TRACE_EVENT_BINARY_EFFICIENT0("gpu",
  1325. "TraceEGLAPI::eglSwapBuffersWithDamageKHR");
  1326. return egl_api_->eglSwapBuffersWithDamageKHRFn(dpy, surface, rects, n_rects);
  1327. }
  1328. EGLBoolean TraceEGLApi::eglSwapIntervalFn(EGLDisplay dpy, EGLint interval) {
  1329. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglSwapInterval");
  1330. return egl_api_->eglSwapIntervalFn(dpy, interval);
  1331. }
  1332. EGLBoolean TraceEGLApi::eglTerminateFn(EGLDisplay dpy) {
  1333. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglTerminate");
  1334. return egl_api_->eglTerminateFn(dpy);
  1335. }
  1336. EGLBoolean TraceEGLApi::eglWaitClientFn(void) {
  1337. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglWaitClient");
  1338. return egl_api_->eglWaitClientFn();
  1339. }
  1340. EGLBoolean TraceEGLApi::eglWaitGLFn(void) {
  1341. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglWaitGL");
  1342. return egl_api_->eglWaitGLFn();
  1343. }
  1344. EGLBoolean TraceEGLApi::eglWaitNativeFn(EGLint engine) {
  1345. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglWaitNative");
  1346. return egl_api_->eglWaitNativeFn(engine);
  1347. }
  1348. EGLint TraceEGLApi::eglWaitSyncKHRFn(EGLDisplay dpy,
  1349. EGLSyncKHR sync,
  1350. EGLint flags) {
  1351. TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglWaitSyncKHR");
  1352. return egl_api_->eglWaitSyncKHRFn(dpy, sync, flags);
  1353. }
  1354. EGLBoolean LogEGLApi::eglBindAPIFn(EGLenum api) {
  1355. GL_SERVICE_LOG("eglBindAPI"
  1356. << "(" << api << ")");
  1357. EGLBoolean result = egl_api_->eglBindAPIFn(api);
  1358. GL_SERVICE_LOG("GL_RESULT: " << result);
  1359. return result;
  1360. }
  1361. EGLBoolean LogEGLApi::eglBindTexImageFn(EGLDisplay dpy,
  1362. EGLSurface surface,
  1363. EGLint buffer) {
  1364. GL_SERVICE_LOG("eglBindTexImage"
  1365. << "(" << dpy << ", " << surface << ", " << buffer << ")");
  1366. EGLBoolean result = egl_api_->eglBindTexImageFn(dpy, surface, buffer);
  1367. GL_SERVICE_LOG("GL_RESULT: " << result);
  1368. return result;
  1369. }
  1370. EGLBoolean LogEGLApi::eglChooseConfigFn(EGLDisplay dpy,
  1371. const EGLint* attrib_list,
  1372. EGLConfig* configs,
  1373. EGLint config_size,
  1374. EGLint* num_config) {
  1375. GL_SERVICE_LOG("eglChooseConfig"
  1376. << "(" << dpy << ", " << static_cast<const void*>(attrib_list)
  1377. << ", " << static_cast<const void*>(configs) << ", "
  1378. << config_size << ", " << static_cast<const void*>(num_config)
  1379. << ")");
  1380. EGLBoolean result = egl_api_->eglChooseConfigFn(dpy, attrib_list, configs,
  1381. config_size, num_config);
  1382. GL_SERVICE_LOG("GL_RESULT: " << result);
  1383. return result;
  1384. }
  1385. EGLint LogEGLApi::eglClientWaitSyncKHRFn(EGLDisplay dpy,
  1386. EGLSyncKHR sync,
  1387. EGLint flags,
  1388. EGLTimeKHR timeout) {
  1389. GL_SERVICE_LOG("eglClientWaitSyncKHR"
  1390. << "(" << dpy << ", " << sync << ", " << flags << ", "
  1391. << timeout << ")");
  1392. EGLint result = egl_api_->eglClientWaitSyncKHRFn(dpy, sync, flags, timeout);
  1393. GL_SERVICE_LOG("GL_RESULT: " << result);
  1394. return result;
  1395. }
  1396. EGLBoolean LogEGLApi::eglCopyBuffersFn(EGLDisplay dpy,
  1397. EGLSurface surface,
  1398. EGLNativePixmapType target) {
  1399. GL_SERVICE_LOG("eglCopyBuffers"
  1400. << "(" << dpy << ", " << surface << ", " << target << ")");
  1401. EGLBoolean result = egl_api_->eglCopyBuffersFn(dpy, surface, target);
  1402. GL_SERVICE_LOG("GL_RESULT: " << result);
  1403. return result;
  1404. }
  1405. EGLContext LogEGLApi::eglCreateContextFn(EGLDisplay dpy,
  1406. EGLConfig config,
  1407. EGLContext share_context,
  1408. const EGLint* attrib_list) {
  1409. GL_SERVICE_LOG("eglCreateContext"
  1410. << "(" << dpy << ", " << config << ", " << share_context
  1411. << ", " << static_cast<const void*>(attrib_list) << ")");
  1412. EGLContext result =
  1413. egl_api_->eglCreateContextFn(dpy, config, share_context, attrib_list);
  1414. GL_SERVICE_LOG("GL_RESULT: " << result);
  1415. return result;
  1416. }
  1417. EGLImageKHR LogEGLApi::eglCreateImageKHRFn(EGLDisplay dpy,
  1418. EGLContext ctx,
  1419. EGLenum target,
  1420. EGLClientBuffer buffer,
  1421. const EGLint* attrib_list) {
  1422. GL_SERVICE_LOG("eglCreateImageKHR"
  1423. << "(" << dpy << ", " << ctx << ", " << target << ", "
  1424. << buffer << ", " << static_cast<const void*>(attrib_list)
  1425. << ")");
  1426. EGLImageKHR result =
  1427. egl_api_->eglCreateImageKHRFn(dpy, ctx, target, buffer, attrib_list);
  1428. GL_SERVICE_LOG("GL_RESULT: " << result);
  1429. return result;
  1430. }
  1431. EGLSurface LogEGLApi::eglCreatePbufferFromClientBufferFn(
  1432. EGLDisplay dpy,
  1433. EGLenum buftype,
  1434. void* buffer,
  1435. EGLConfig config,
  1436. const EGLint* attrib_list) {
  1437. GL_SERVICE_LOG("eglCreatePbufferFromClientBuffer"
  1438. << "(" << dpy << ", " << buftype << ", "
  1439. << static_cast<const void*>(buffer) << ", " << config << ", "
  1440. << static_cast<const void*>(attrib_list) << ")");
  1441. EGLSurface result = egl_api_->eglCreatePbufferFromClientBufferFn(
  1442. dpy, buftype, buffer, config, attrib_list);
  1443. GL_SERVICE_LOG("GL_RESULT: " << result);
  1444. return result;
  1445. }
  1446. EGLSurface LogEGLApi::eglCreatePbufferSurfaceFn(EGLDisplay dpy,
  1447. EGLConfig config,
  1448. const EGLint* attrib_list) {
  1449. GL_SERVICE_LOG("eglCreatePbufferSurface"
  1450. << "(" << dpy << ", " << config << ", "
  1451. << static_cast<const void*>(attrib_list) << ")");
  1452. EGLSurface result =
  1453. egl_api_->eglCreatePbufferSurfaceFn(dpy, config, attrib_list);
  1454. GL_SERVICE_LOG("GL_RESULT: " << result);
  1455. return result;
  1456. }
  1457. EGLSurface LogEGLApi::eglCreatePixmapSurfaceFn(EGLDisplay dpy,
  1458. EGLConfig config,
  1459. EGLNativePixmapType pixmap,
  1460. const EGLint* attrib_list) {
  1461. GL_SERVICE_LOG("eglCreatePixmapSurface"
  1462. << "(" << dpy << ", " << config << ", " << pixmap << ", "
  1463. << static_cast<const void*>(attrib_list) << ")");
  1464. EGLSurface result =
  1465. egl_api_->eglCreatePixmapSurfaceFn(dpy, config, pixmap, attrib_list);
  1466. GL_SERVICE_LOG("GL_RESULT: " << result);
  1467. return result;
  1468. }
  1469. EGLStreamKHR LogEGLApi::eglCreateStreamKHRFn(EGLDisplay dpy,
  1470. const EGLint* attrib_list) {
  1471. GL_SERVICE_LOG("eglCreateStreamKHR"
  1472. << "(" << dpy << ", " << static_cast<const void*>(attrib_list)
  1473. << ")");
  1474. EGLStreamKHR result = egl_api_->eglCreateStreamKHRFn(dpy, attrib_list);
  1475. GL_SERVICE_LOG("GL_RESULT: " << result);
  1476. return result;
  1477. }
  1478. EGLBoolean LogEGLApi::eglCreateStreamProducerD3DTextureANGLEFn(
  1479. EGLDisplay dpy,
  1480. EGLStreamKHR stream,
  1481. EGLAttrib* attrib_list) {
  1482. GL_SERVICE_LOG("eglCreateStreamProducerD3DTextureANGLE"
  1483. << "(" << dpy << ", " << stream << ", "
  1484. << static_cast<const void*>(attrib_list) << ")");
  1485. EGLBoolean result = egl_api_->eglCreateStreamProducerD3DTextureANGLEFn(
  1486. dpy, stream, attrib_list);
  1487. GL_SERVICE_LOG("GL_RESULT: " << result);
  1488. return result;
  1489. }
  1490. EGLSyncKHR LogEGLApi::eglCreateSyncKHRFn(EGLDisplay dpy,
  1491. EGLenum type,
  1492. const EGLint* attrib_list) {
  1493. GL_SERVICE_LOG("eglCreateSyncKHR"
  1494. << "(" << dpy << ", " << type << ", "
  1495. << static_cast<const void*>(attrib_list) << ")");
  1496. EGLSyncKHR result = egl_api_->eglCreateSyncKHRFn(dpy, type, attrib_list);
  1497. GL_SERVICE_LOG("GL_RESULT: " << result);
  1498. return result;
  1499. }
  1500. EGLSurface LogEGLApi::eglCreateWindowSurfaceFn(EGLDisplay dpy,
  1501. EGLConfig config,
  1502. EGLNativeWindowType win,
  1503. const EGLint* attrib_list) {
  1504. GL_SERVICE_LOG("eglCreateWindowSurface"
  1505. << "(" << dpy << ", " << config << ", " << win << ", "
  1506. << static_cast<const void*>(attrib_list) << ")");
  1507. EGLSurface result =
  1508. egl_api_->eglCreateWindowSurfaceFn(dpy, config, win, attrib_list);
  1509. GL_SERVICE_LOG("GL_RESULT: " << result);
  1510. return result;
  1511. }
  1512. EGLint LogEGLApi::eglDebugMessageControlKHRFn(EGLDEBUGPROCKHR callback,
  1513. const EGLAttrib* attrib_list) {
  1514. GL_SERVICE_LOG("eglDebugMessageControlKHR"
  1515. << "(" << reinterpret_cast<void*>(callback) << ", "
  1516. << static_cast<const void*>(attrib_list) << ")");
  1517. EGLint result = egl_api_->eglDebugMessageControlKHRFn(callback, attrib_list);
  1518. GL_SERVICE_LOG("GL_RESULT: " << result);
  1519. return result;
  1520. }
  1521. EGLBoolean LogEGLApi::eglDestroyContextFn(EGLDisplay dpy, EGLContext ctx) {
  1522. GL_SERVICE_LOG("eglDestroyContext"
  1523. << "(" << dpy << ", " << ctx << ")");
  1524. EGLBoolean result = egl_api_->eglDestroyContextFn(dpy, ctx);
  1525. GL_SERVICE_LOG("GL_RESULT: " << result);
  1526. return result;
  1527. }
  1528. EGLBoolean LogEGLApi::eglDestroyImageKHRFn(EGLDisplay dpy, EGLImageKHR image) {
  1529. GL_SERVICE_LOG("eglDestroyImageKHR"
  1530. << "(" << dpy << ", " << image << ")");
  1531. EGLBoolean result = egl_api_->eglDestroyImageKHRFn(dpy, image);
  1532. GL_SERVICE_LOG("GL_RESULT: " << result);
  1533. return result;
  1534. }
  1535. EGLBoolean LogEGLApi::eglDestroyStreamKHRFn(EGLDisplay dpy,
  1536. EGLStreamKHR stream) {
  1537. GL_SERVICE_LOG("eglDestroyStreamKHR"
  1538. << "(" << dpy << ", " << stream << ")");
  1539. EGLBoolean result = egl_api_->eglDestroyStreamKHRFn(dpy, stream);
  1540. GL_SERVICE_LOG("GL_RESULT: " << result);
  1541. return result;
  1542. }
  1543. EGLBoolean LogEGLApi::eglDestroySurfaceFn(EGLDisplay dpy, EGLSurface surface) {
  1544. GL_SERVICE_LOG("eglDestroySurface"
  1545. << "(" << dpy << ", " << surface << ")");
  1546. EGLBoolean result = egl_api_->eglDestroySurfaceFn(dpy, surface);
  1547. GL_SERVICE_LOG("GL_RESULT: " << result);
  1548. return result;
  1549. }
  1550. EGLBoolean LogEGLApi::eglDestroySyncKHRFn(EGLDisplay dpy, EGLSyncKHR sync) {
  1551. GL_SERVICE_LOG("eglDestroySyncKHR"
  1552. << "(" << dpy << ", " << sync << ")");
  1553. EGLBoolean result = egl_api_->eglDestroySyncKHRFn(dpy, sync);
  1554. GL_SERVICE_LOG("GL_RESULT: " << result);
  1555. return result;
  1556. }
  1557. EGLint LogEGLApi::eglDupNativeFenceFDANDROIDFn(EGLDisplay dpy,
  1558. EGLSyncKHR sync) {
  1559. GL_SERVICE_LOG("eglDupNativeFenceFDANDROID"
  1560. << "(" << dpy << ", " << sync << ")");
  1561. EGLint result = egl_api_->eglDupNativeFenceFDANDROIDFn(dpy, sync);
  1562. GL_SERVICE_LOG("GL_RESULT: " << result);
  1563. return result;
  1564. }
  1565. EGLBoolean LogEGLApi::eglExportDMABUFImageMESAFn(EGLDisplay dpy,
  1566. EGLImageKHR image,
  1567. int* fds,
  1568. EGLint* strides,
  1569. EGLint* offsets) {
  1570. GL_SERVICE_LOG("eglExportDMABUFImageMESA"
  1571. << "(" << dpy << ", " << image << ", "
  1572. << static_cast<const void*>(fds) << ", "
  1573. << static_cast<const void*>(strides) << ", "
  1574. << static_cast<const void*>(offsets) << ")");
  1575. EGLBoolean result =
  1576. egl_api_->eglExportDMABUFImageMESAFn(dpy, image, fds, strides, offsets);
  1577. GL_SERVICE_LOG("GL_RESULT: " << result);
  1578. return result;
  1579. }
  1580. EGLBoolean LogEGLApi::eglExportDMABUFImageQueryMESAFn(EGLDisplay dpy,
  1581. EGLImageKHR image,
  1582. int* fourcc,
  1583. int* num_planes,
  1584. EGLuint64KHR* modifiers) {
  1585. GL_SERVICE_LOG("eglExportDMABUFImageQueryMESA"
  1586. << "(" << dpy << ", " << image << ", "
  1587. << static_cast<const void*>(fourcc) << ", "
  1588. << static_cast<const void*>(num_planes) << ", "
  1589. << static_cast<const void*>(modifiers) << ")");
  1590. EGLBoolean result = egl_api_->eglExportDMABUFImageQueryMESAFn(
  1591. dpy, image, fourcc, num_planes, modifiers);
  1592. GL_SERVICE_LOG("GL_RESULT: " << result);
  1593. return result;
  1594. }
  1595. EGLBoolean LogEGLApi::eglExportVkImageANGLEFn(EGLDisplay dpy,
  1596. EGLImageKHR image,
  1597. void* vk_image,
  1598. void* vk_image_create_info) {
  1599. GL_SERVICE_LOG("eglExportVkImageANGLE"
  1600. << "(" << dpy << ", " << image << ", "
  1601. << static_cast<const void*>(vk_image) << ", "
  1602. << static_cast<const void*>(vk_image_create_info) << ")");
  1603. EGLBoolean result = egl_api_->eglExportVkImageANGLEFn(dpy, image, vk_image,
  1604. vk_image_create_info);
  1605. GL_SERVICE_LOG("GL_RESULT: " << result);
  1606. return result;
  1607. }
  1608. EGLBoolean LogEGLApi::eglGetCompositorTimingANDROIDFn(EGLDisplay dpy,
  1609. EGLSurface surface,
  1610. EGLint numTimestamps,
  1611. EGLint* names,
  1612. EGLnsecsANDROID* values) {
  1613. GL_SERVICE_LOG("eglGetCompositorTimingANDROID"
  1614. << "(" << dpy << ", " << surface << ", " << numTimestamps
  1615. << ", " << static_cast<const void*>(names) << ", "
  1616. << static_cast<const void*>(values) << ")");
  1617. EGLBoolean result = egl_api_->eglGetCompositorTimingANDROIDFn(
  1618. dpy, surface, numTimestamps, names, values);
  1619. GL_SERVICE_LOG("GL_RESULT: " << result);
  1620. return result;
  1621. }
  1622. EGLBoolean LogEGLApi::eglGetCompositorTimingSupportedANDROIDFn(
  1623. EGLDisplay dpy,
  1624. EGLSurface surface,
  1625. EGLint timestamp) {
  1626. GL_SERVICE_LOG("eglGetCompositorTimingSupportedANDROID"
  1627. << "(" << dpy << ", " << surface << ", " << timestamp << ")");
  1628. EGLBoolean result = egl_api_->eglGetCompositorTimingSupportedANDROIDFn(
  1629. dpy, surface, timestamp);
  1630. GL_SERVICE_LOG("GL_RESULT: " << result);
  1631. return result;
  1632. }
  1633. EGLBoolean LogEGLApi::eglGetConfigAttribFn(EGLDisplay dpy,
  1634. EGLConfig config,
  1635. EGLint attribute,
  1636. EGLint* value) {
  1637. GL_SERVICE_LOG("eglGetConfigAttrib"
  1638. << "(" << dpy << ", " << config << ", " << attribute << ", "
  1639. << static_cast<const void*>(value) << ")");
  1640. EGLBoolean result =
  1641. egl_api_->eglGetConfigAttribFn(dpy, config, attribute, value);
  1642. GL_SERVICE_LOG("GL_RESULT: " << result);
  1643. return result;
  1644. }
  1645. EGLBoolean LogEGLApi::eglGetConfigsFn(EGLDisplay dpy,
  1646. EGLConfig* configs,
  1647. EGLint config_size,
  1648. EGLint* num_config) {
  1649. GL_SERVICE_LOG("eglGetConfigs"
  1650. << "(" << dpy << ", " << static_cast<const void*>(configs)
  1651. << ", " << config_size << ", "
  1652. << static_cast<const void*>(num_config) << ")");
  1653. EGLBoolean result =
  1654. egl_api_->eglGetConfigsFn(dpy, configs, config_size, num_config);
  1655. GL_SERVICE_LOG("GL_RESULT: " << result);
  1656. return result;
  1657. }
  1658. EGLContext LogEGLApi::eglGetCurrentContextFn(void) {
  1659. GL_SERVICE_LOG("eglGetCurrentContext"
  1660. << "("
  1661. << ")");
  1662. EGLContext result = egl_api_->eglGetCurrentContextFn();
  1663. GL_SERVICE_LOG("GL_RESULT: " << result);
  1664. return result;
  1665. }
  1666. EGLDisplay LogEGLApi::eglGetCurrentDisplayFn(void) {
  1667. GL_SERVICE_LOG("eglGetCurrentDisplay"
  1668. << "("
  1669. << ")");
  1670. EGLDisplay result = egl_api_->eglGetCurrentDisplayFn();
  1671. GL_SERVICE_LOG("GL_RESULT: " << result);
  1672. return result;
  1673. }
  1674. EGLSurface LogEGLApi::eglGetCurrentSurfaceFn(EGLint readdraw) {
  1675. GL_SERVICE_LOG("eglGetCurrentSurface"
  1676. << "(" << readdraw << ")");
  1677. EGLSurface result = egl_api_->eglGetCurrentSurfaceFn(readdraw);
  1678. GL_SERVICE_LOG("GL_RESULT: " << result);
  1679. return result;
  1680. }
  1681. EGLDisplay LogEGLApi::eglGetDisplayFn(EGLNativeDisplayType display_id) {
  1682. GL_SERVICE_LOG("eglGetDisplay"
  1683. << "(" << display_id << ")");
  1684. EGLDisplay result = egl_api_->eglGetDisplayFn(display_id);
  1685. GL_SERVICE_LOG("GL_RESULT: " << result);
  1686. return result;
  1687. }
  1688. EGLint LogEGLApi::eglGetErrorFn(void) {
  1689. GL_SERVICE_LOG("eglGetError"
  1690. << "("
  1691. << ")");
  1692. EGLint result = egl_api_->eglGetErrorFn();
  1693. GL_SERVICE_LOG("GL_RESULT: " << result);
  1694. return result;
  1695. }
  1696. EGLBoolean LogEGLApi::eglGetFrameTimestampsANDROIDFn(EGLDisplay dpy,
  1697. EGLSurface surface,
  1698. EGLuint64KHR frameId,
  1699. EGLint numTimestamps,
  1700. EGLint* timestamps,
  1701. EGLnsecsANDROID* values) {
  1702. GL_SERVICE_LOG("eglGetFrameTimestampsANDROID"
  1703. << "(" << dpy << ", " << surface << ", " << frameId << ", "
  1704. << numTimestamps << ", "
  1705. << static_cast<const void*>(timestamps) << ", "
  1706. << static_cast<const void*>(values) << ")");
  1707. EGLBoolean result = egl_api_->eglGetFrameTimestampsANDROIDFn(
  1708. dpy, surface, frameId, numTimestamps, timestamps, values);
  1709. GL_SERVICE_LOG("GL_RESULT: " << result);
  1710. return result;
  1711. }
  1712. EGLBoolean LogEGLApi::eglGetFrameTimestampSupportedANDROIDFn(EGLDisplay dpy,
  1713. EGLSurface surface,
  1714. EGLint timestamp) {
  1715. GL_SERVICE_LOG("eglGetFrameTimestampSupportedANDROID"
  1716. << "(" << dpy << ", " << surface << ", " << timestamp << ")");
  1717. EGLBoolean result =
  1718. egl_api_->eglGetFrameTimestampSupportedANDROIDFn(dpy, surface, timestamp);
  1719. GL_SERVICE_LOG("GL_RESULT: " << result);
  1720. return result;
  1721. }
  1722. EGLBoolean LogEGLApi::eglGetMscRateANGLEFn(EGLDisplay dpy,
  1723. EGLSurface surface,
  1724. EGLint* numerator,
  1725. EGLint* denominator) {
  1726. GL_SERVICE_LOG("eglGetMscRateANGLE"
  1727. << "(" << dpy << ", " << surface << ", "
  1728. << static_cast<const void*>(numerator) << ", "
  1729. << static_cast<const void*>(denominator) << ")");
  1730. EGLBoolean result =
  1731. egl_api_->eglGetMscRateANGLEFn(dpy, surface, numerator, denominator);
  1732. GL_SERVICE_LOG("GL_RESULT: " << result);
  1733. return result;
  1734. }
  1735. EGLClientBuffer LogEGLApi::eglGetNativeClientBufferANDROIDFn(
  1736. const struct AHardwareBuffer* ahardwarebuffer) {
  1737. GL_SERVICE_LOG("eglGetNativeClientBufferANDROID"
  1738. << "(" << static_cast<const void*>(ahardwarebuffer) << ")");
  1739. EGLClientBuffer result =
  1740. egl_api_->eglGetNativeClientBufferANDROIDFn(ahardwarebuffer);
  1741. GL_SERVICE_LOG("GL_RESULT: " << result);
  1742. return result;
  1743. }
  1744. EGLBoolean LogEGLApi::eglGetNextFrameIdANDROIDFn(EGLDisplay dpy,
  1745. EGLSurface surface,
  1746. EGLuint64KHR* frameId) {
  1747. GL_SERVICE_LOG("eglGetNextFrameIdANDROID"
  1748. << "(" << dpy << ", " << surface << ", "
  1749. << static_cast<const void*>(frameId) << ")");
  1750. EGLBoolean result =
  1751. egl_api_->eglGetNextFrameIdANDROIDFn(dpy, surface, frameId);
  1752. GL_SERVICE_LOG("GL_RESULT: " << result);
  1753. return result;
  1754. }
  1755. EGLDisplay LogEGLApi::eglGetPlatformDisplayFn(EGLenum platform,
  1756. void* native_display,
  1757. const EGLAttrib* attrib_list) {
  1758. GL_SERVICE_LOG("eglGetPlatformDisplay"
  1759. << "(" << platform << ", "
  1760. << static_cast<const void*>(native_display) << ", "
  1761. << static_cast<const void*>(attrib_list) << ")");
  1762. EGLDisplay result =
  1763. egl_api_->eglGetPlatformDisplayFn(platform, native_display, attrib_list);
  1764. GL_SERVICE_LOG("GL_RESULT: " << result);
  1765. return result;
  1766. }
  1767. __eglMustCastToProperFunctionPointerType LogEGLApi::eglGetProcAddressFn(
  1768. const char* procname) {
  1769. GL_SERVICE_LOG("eglGetProcAddress"
  1770. << "(" << procname << ")");
  1771. __eglMustCastToProperFunctionPointerType result =
  1772. egl_api_->eglGetProcAddressFn(procname);
  1773. GL_SERVICE_LOG("GL_RESULT: " << reinterpret_cast<void*>(result));
  1774. return result;
  1775. }
  1776. EGLBoolean LogEGLApi::eglGetSyncAttribKHRFn(EGLDisplay dpy,
  1777. EGLSyncKHR sync,
  1778. EGLint attribute,
  1779. EGLint* value) {
  1780. GL_SERVICE_LOG("eglGetSyncAttribKHR"
  1781. << "(" << dpy << ", " << sync << ", " << attribute << ", "
  1782. << static_cast<const void*>(value) << ")");
  1783. EGLBoolean result =
  1784. egl_api_->eglGetSyncAttribKHRFn(dpy, sync, attribute, value);
  1785. GL_SERVICE_LOG("GL_RESULT: " << result);
  1786. return result;
  1787. }
  1788. EGLBoolean LogEGLApi::eglGetSyncValuesCHROMIUMFn(EGLDisplay dpy,
  1789. EGLSurface surface,
  1790. EGLuint64CHROMIUM* ust,
  1791. EGLuint64CHROMIUM* msc,
  1792. EGLuint64CHROMIUM* sbc) {
  1793. GL_SERVICE_LOG("eglGetSyncValuesCHROMIUM"
  1794. << "(" << dpy << ", " << surface << ", "
  1795. << static_cast<const void*>(ust) << ", "
  1796. << static_cast<const void*>(msc) << ", "
  1797. << static_cast<const void*>(sbc) << ")");
  1798. EGLBoolean result =
  1799. egl_api_->eglGetSyncValuesCHROMIUMFn(dpy, surface, ust, msc, sbc);
  1800. GL_SERVICE_LOG("GL_RESULT: " << result);
  1801. return result;
  1802. }
  1803. void LogEGLApi::eglHandleGPUSwitchANGLEFn(EGLDisplay dpy) {
  1804. GL_SERVICE_LOG("eglHandleGPUSwitchANGLE"
  1805. << "(" << dpy << ")");
  1806. egl_api_->eglHandleGPUSwitchANGLEFn(dpy);
  1807. }
  1808. EGLBoolean LogEGLApi::eglImageFlushExternalEXTFn(EGLDisplay dpy,
  1809. EGLImageKHR image,
  1810. const EGLAttrib* attrib_list) {
  1811. GL_SERVICE_LOG("eglImageFlushExternalEXT"
  1812. << "(" << dpy << ", " << image << ", "
  1813. << static_cast<const void*>(attrib_list) << ")");
  1814. EGLBoolean result =
  1815. egl_api_->eglImageFlushExternalEXTFn(dpy, image, attrib_list);
  1816. GL_SERVICE_LOG("GL_RESULT: " << result);
  1817. return result;
  1818. }
  1819. EGLBoolean LogEGLApi::eglInitializeFn(EGLDisplay dpy,
  1820. EGLint* major,
  1821. EGLint* minor) {
  1822. GL_SERVICE_LOG("eglInitialize"
  1823. << "(" << dpy << ", " << static_cast<const void*>(major)
  1824. << ", " << static_cast<const void*>(minor) << ")");
  1825. EGLBoolean result = egl_api_->eglInitializeFn(dpy, major, minor);
  1826. GL_SERVICE_LOG("GL_RESULT: " << result);
  1827. return result;
  1828. }
  1829. EGLint LogEGLApi::eglLabelObjectKHRFn(EGLDisplay display,
  1830. EGLenum objectType,
  1831. EGLObjectKHR object,
  1832. EGLLabelKHR label) {
  1833. GL_SERVICE_LOG("eglLabelObjectKHR"
  1834. << "(" << display << ", " << objectType << ", " << object
  1835. << ", " << label << ")");
  1836. EGLint result =
  1837. egl_api_->eglLabelObjectKHRFn(display, objectType, object, label);
  1838. GL_SERVICE_LOG("GL_RESULT: " << result);
  1839. return result;
  1840. }
  1841. EGLBoolean LogEGLApi::eglMakeCurrentFn(EGLDisplay dpy,
  1842. EGLSurface draw,
  1843. EGLSurface read,
  1844. EGLContext ctx) {
  1845. GL_SERVICE_LOG("eglMakeCurrent"
  1846. << "(" << dpy << ", " << draw << ", " << read << ", " << ctx
  1847. << ")");
  1848. EGLBoolean result = egl_api_->eglMakeCurrentFn(dpy, draw, read, ctx);
  1849. GL_SERVICE_LOG("GL_RESULT: " << result);
  1850. return result;
  1851. }
  1852. EGLBoolean LogEGLApi::eglPostSubBufferNVFn(EGLDisplay dpy,
  1853. EGLSurface surface,
  1854. EGLint x,
  1855. EGLint y,
  1856. EGLint width,
  1857. EGLint height) {
  1858. GL_SERVICE_LOG("eglPostSubBufferNV"
  1859. << "(" << dpy << ", " << surface << ", " << x << ", " << y
  1860. << ", " << width << ", " << height << ")");
  1861. EGLBoolean result =
  1862. egl_api_->eglPostSubBufferNVFn(dpy, surface, x, y, width, height);
  1863. GL_SERVICE_LOG("GL_RESULT: " << result);
  1864. return result;
  1865. }
  1866. EGLenum LogEGLApi::eglQueryAPIFn(void) {
  1867. GL_SERVICE_LOG("eglQueryAPI"
  1868. << "("
  1869. << ")");
  1870. EGLenum result = egl_api_->eglQueryAPIFn();
  1871. GL_SERVICE_LOG("GL_RESULT: " << result);
  1872. return result;
  1873. }
  1874. EGLBoolean LogEGLApi::eglQueryContextFn(EGLDisplay dpy,
  1875. EGLContext ctx,
  1876. EGLint attribute,
  1877. EGLint* value) {
  1878. GL_SERVICE_LOG("eglQueryContext"
  1879. << "(" << dpy << ", " << ctx << ", " << attribute << ", "
  1880. << static_cast<const void*>(value) << ")");
  1881. EGLBoolean result = egl_api_->eglQueryContextFn(dpy, ctx, attribute, value);
  1882. GL_SERVICE_LOG("GL_RESULT: " << result);
  1883. return result;
  1884. }
  1885. EGLBoolean LogEGLApi::eglQueryDebugKHRFn(EGLint attribute, EGLAttrib* value) {
  1886. GL_SERVICE_LOG("eglQueryDebugKHR"
  1887. << "(" << attribute << ", " << static_cast<const void*>(value)
  1888. << ")");
  1889. EGLBoolean result = egl_api_->eglQueryDebugKHRFn(attribute, value);
  1890. GL_SERVICE_LOG("GL_RESULT: " << result);
  1891. return result;
  1892. }
  1893. EGLBoolean LogEGLApi::eglQueryDeviceAttribEXTFn(EGLDeviceEXT device,
  1894. EGLint attribute,
  1895. EGLAttrib* value) {
  1896. GL_SERVICE_LOG("eglQueryDeviceAttribEXT"
  1897. << "(" << device << ", " << attribute << ", "
  1898. << static_cast<const void*>(value) << ")");
  1899. EGLBoolean result =
  1900. egl_api_->eglQueryDeviceAttribEXTFn(device, attribute, value);
  1901. GL_SERVICE_LOG("GL_RESULT: " << result);
  1902. return result;
  1903. }
  1904. EGLBoolean LogEGLApi::eglQueryDevicesEXTFn(EGLint max_devices,
  1905. EGLDeviceEXT* devices,
  1906. EGLint* num_devices) {
  1907. GL_SERVICE_LOG("eglQueryDevicesEXT"
  1908. << "(" << max_devices << ", "
  1909. << static_cast<const void*>(devices) << ", "
  1910. << static_cast<const void*>(num_devices) << ")");
  1911. EGLBoolean result =
  1912. egl_api_->eglQueryDevicesEXTFn(max_devices, devices, num_devices);
  1913. GL_SERVICE_LOG("GL_RESULT: " << result);
  1914. return result;
  1915. }
  1916. const char* LogEGLApi::eglQueryDeviceStringEXTFn(EGLDeviceEXT device,
  1917. EGLint name) {
  1918. GL_SERVICE_LOG("eglQueryDeviceStringEXT"
  1919. << "(" << device << ", " << name << ")");
  1920. const char* result = egl_api_->eglQueryDeviceStringEXTFn(device, name);
  1921. GL_SERVICE_LOG("GL_RESULT: " << result);
  1922. return result;
  1923. }
  1924. EGLBoolean LogEGLApi::eglQueryDisplayAttribANGLEFn(EGLDisplay dpy,
  1925. EGLint attribute,
  1926. EGLAttrib* value) {
  1927. GL_SERVICE_LOG("eglQueryDisplayAttribANGLE"
  1928. << "(" << dpy << ", " << attribute << ", "
  1929. << static_cast<const void*>(value) << ")");
  1930. EGLBoolean result =
  1931. egl_api_->eglQueryDisplayAttribANGLEFn(dpy, attribute, value);
  1932. GL_SERVICE_LOG("GL_RESULT: " << result);
  1933. return result;
  1934. }
  1935. EGLBoolean LogEGLApi::eglQueryDisplayAttribEXTFn(EGLDisplay dpy,
  1936. EGLint attribute,
  1937. EGLAttrib* value) {
  1938. GL_SERVICE_LOG("eglQueryDisplayAttribEXT"
  1939. << "(" << dpy << ", " << attribute << ", "
  1940. << static_cast<const void*>(value) << ")");
  1941. EGLBoolean result =
  1942. egl_api_->eglQueryDisplayAttribEXTFn(dpy, attribute, value);
  1943. GL_SERVICE_LOG("GL_RESULT: " << result);
  1944. return result;
  1945. }
  1946. EGLBoolean LogEGLApi::eglQueryDmaBufFormatsEXTFn(EGLDisplay dpy,
  1947. EGLint max_formats,
  1948. EGLint* formats,
  1949. EGLint* num_formats) {
  1950. GL_SERVICE_LOG("eglQueryDmaBufFormatsEXT"
  1951. << "(" << dpy << ", " << max_formats << ", "
  1952. << static_cast<const void*>(formats) << ", "
  1953. << static_cast<const void*>(num_formats) << ")");
  1954. EGLBoolean result = egl_api_->eglQueryDmaBufFormatsEXTFn(
  1955. dpy, max_formats, formats, num_formats);
  1956. GL_SERVICE_LOG("GL_RESULT: " << result);
  1957. return result;
  1958. }
  1959. EGLBoolean LogEGLApi::eglQueryDmaBufModifiersEXTFn(EGLDisplay dpy,
  1960. EGLint format,
  1961. EGLint max_modifiers,
  1962. EGLuint64KHR* modifiers,
  1963. EGLBoolean* external_only,
  1964. EGLint* num_modifiers) {
  1965. GL_SERVICE_LOG("eglQueryDmaBufModifiersEXT"
  1966. << "(" << dpy << ", " << format << ", " << max_modifiers
  1967. << ", " << static_cast<const void*>(modifiers) << ", "
  1968. << static_cast<const void*>(external_only) << ", "
  1969. << static_cast<const void*>(num_modifiers) << ")");
  1970. EGLBoolean result = egl_api_->eglQueryDmaBufModifiersEXTFn(
  1971. dpy, format, max_modifiers, modifiers, external_only, num_modifiers);
  1972. GL_SERVICE_LOG("GL_RESULT: " << result);
  1973. return result;
  1974. }
  1975. EGLBoolean LogEGLApi::eglQueryStreamKHRFn(EGLDisplay dpy,
  1976. EGLStreamKHR stream,
  1977. EGLenum attribute,
  1978. EGLint* value) {
  1979. GL_SERVICE_LOG("eglQueryStreamKHR"
  1980. << "(" << dpy << ", " << stream << ", " << attribute << ", "
  1981. << static_cast<const void*>(value) << ")");
  1982. EGLBoolean result =
  1983. egl_api_->eglQueryStreamKHRFn(dpy, stream, attribute, value);
  1984. GL_SERVICE_LOG("GL_RESULT: " << result);
  1985. return result;
  1986. }
  1987. EGLBoolean LogEGLApi::eglQueryStreamu64KHRFn(EGLDisplay dpy,
  1988. EGLStreamKHR stream,
  1989. EGLenum attribute,
  1990. EGLuint64KHR* value) {
  1991. GL_SERVICE_LOG("eglQueryStreamu64KHR"
  1992. << "(" << dpy << ", " << stream << ", " << attribute << ", "
  1993. << static_cast<const void*>(value) << ")");
  1994. EGLBoolean result =
  1995. egl_api_->eglQueryStreamu64KHRFn(dpy, stream, attribute, value);
  1996. GL_SERVICE_LOG("GL_RESULT: " << result);
  1997. return result;
  1998. }
  1999. const char* LogEGLApi::eglQueryStringFn(EGLDisplay dpy, EGLint name) {
  2000. GL_SERVICE_LOG("eglQueryString"
  2001. << "(" << dpy << ", " << name << ")");
  2002. const char* result = egl_api_->eglQueryStringFn(dpy, name);
  2003. GL_SERVICE_LOG("GL_RESULT: " << result);
  2004. return result;
  2005. }
  2006. const char* LogEGLApi::eglQueryStringiANGLEFn(EGLDisplay dpy,
  2007. EGLint name,
  2008. EGLint index) {
  2009. GL_SERVICE_LOG("eglQueryStringiANGLE"
  2010. << "(" << dpy << ", " << name << ", " << index << ")");
  2011. const char* result = egl_api_->eglQueryStringiANGLEFn(dpy, name, index);
  2012. GL_SERVICE_LOG("GL_RESULT: " << result);
  2013. return result;
  2014. }
  2015. EGLBoolean LogEGLApi::eglQuerySurfaceFn(EGLDisplay dpy,
  2016. EGLSurface surface,
  2017. EGLint attribute,
  2018. EGLint* value) {
  2019. GL_SERVICE_LOG("eglQuerySurface"
  2020. << "(" << dpy << ", " << surface << ", " << attribute << ", "
  2021. << static_cast<const void*>(value) << ")");
  2022. EGLBoolean result =
  2023. egl_api_->eglQuerySurfaceFn(dpy, surface, attribute, value);
  2024. GL_SERVICE_LOG("GL_RESULT: " << result);
  2025. return result;
  2026. }
  2027. EGLBoolean LogEGLApi::eglQuerySurfacePointerANGLEFn(EGLDisplay dpy,
  2028. EGLSurface surface,
  2029. EGLint attribute,
  2030. void** value) {
  2031. GL_SERVICE_LOG("eglQuerySurfacePointerANGLE"
  2032. << "(" << dpy << ", " << surface << ", " << attribute << ", "
  2033. << value << ")");
  2034. EGLBoolean result =
  2035. egl_api_->eglQuerySurfacePointerANGLEFn(dpy, surface, attribute, value);
  2036. GL_SERVICE_LOG("GL_RESULT: " << result);
  2037. return result;
  2038. }
  2039. void LogEGLApi::eglReacquireHighPowerGPUANGLEFn(EGLDisplay dpy,
  2040. EGLContext ctx) {
  2041. GL_SERVICE_LOG("eglReacquireHighPowerGPUANGLE"
  2042. << "(" << dpy << ", " << ctx << ")");
  2043. egl_api_->eglReacquireHighPowerGPUANGLEFn(dpy, ctx);
  2044. }
  2045. void LogEGLApi::eglReleaseHighPowerGPUANGLEFn(EGLDisplay dpy, EGLContext ctx) {
  2046. GL_SERVICE_LOG("eglReleaseHighPowerGPUANGLE"
  2047. << "(" << dpy << ", " << ctx << ")");
  2048. egl_api_->eglReleaseHighPowerGPUANGLEFn(dpy, ctx);
  2049. }
  2050. EGLBoolean LogEGLApi::eglReleaseTexImageFn(EGLDisplay dpy,
  2051. EGLSurface surface,
  2052. EGLint buffer) {
  2053. GL_SERVICE_LOG("eglReleaseTexImage"
  2054. << "(" << dpy << ", " << surface << ", " << buffer << ")");
  2055. EGLBoolean result = egl_api_->eglReleaseTexImageFn(dpy, surface, buffer);
  2056. GL_SERVICE_LOG("GL_RESULT: " << result);
  2057. return result;
  2058. }
  2059. EGLBoolean LogEGLApi::eglReleaseThreadFn(void) {
  2060. GL_SERVICE_LOG("eglReleaseThread"
  2061. << "("
  2062. << ")");
  2063. EGLBoolean result = egl_api_->eglReleaseThreadFn();
  2064. GL_SERVICE_LOG("GL_RESULT: " << result);
  2065. return result;
  2066. }
  2067. void LogEGLApi::eglSetBlobCacheFuncsANDROIDFn(EGLDisplay dpy,
  2068. EGLSetBlobFuncANDROID set,
  2069. EGLGetBlobFuncANDROID get) {
  2070. GL_SERVICE_LOG("eglSetBlobCacheFuncsANDROID"
  2071. << "(" << dpy << ", " << reinterpret_cast<const void*>(set)
  2072. << ", " << reinterpret_cast<const void*>(get) << ")");
  2073. egl_api_->eglSetBlobCacheFuncsANDROIDFn(dpy, set, get);
  2074. }
  2075. EGLBoolean LogEGLApi::eglStreamAttribKHRFn(EGLDisplay dpy,
  2076. EGLStreamKHR stream,
  2077. EGLenum attribute,
  2078. EGLint value) {
  2079. GL_SERVICE_LOG("eglStreamAttribKHR"
  2080. << "(" << dpy << ", " << stream << ", " << attribute << ", "
  2081. << value << ")");
  2082. EGLBoolean result =
  2083. egl_api_->eglStreamAttribKHRFn(dpy, stream, attribute, value);
  2084. GL_SERVICE_LOG("GL_RESULT: " << result);
  2085. return result;
  2086. }
  2087. EGLBoolean LogEGLApi::eglStreamConsumerAcquireKHRFn(EGLDisplay dpy,
  2088. EGLStreamKHR stream) {
  2089. GL_SERVICE_LOG("eglStreamConsumerAcquireKHR"
  2090. << "(" << dpy << ", " << stream << ")");
  2091. EGLBoolean result = egl_api_->eglStreamConsumerAcquireKHRFn(dpy, stream);
  2092. GL_SERVICE_LOG("GL_RESULT: " << result);
  2093. return result;
  2094. }
  2095. EGLBoolean LogEGLApi::eglStreamConsumerGLTextureExternalAttribsNVFn(
  2096. EGLDisplay dpy,
  2097. EGLStreamKHR stream,
  2098. EGLAttrib* attrib_list) {
  2099. GL_SERVICE_LOG("eglStreamConsumerGLTextureExternalAttribsNV"
  2100. << "(" << dpy << ", " << stream << ", "
  2101. << static_cast<const void*>(attrib_list) << ")");
  2102. EGLBoolean result = egl_api_->eglStreamConsumerGLTextureExternalAttribsNVFn(
  2103. dpy, stream, attrib_list);
  2104. GL_SERVICE_LOG("GL_RESULT: " << result);
  2105. return result;
  2106. }
  2107. EGLBoolean LogEGLApi::eglStreamConsumerGLTextureExternalKHRFn(
  2108. EGLDisplay dpy,
  2109. EGLStreamKHR stream) {
  2110. GL_SERVICE_LOG("eglStreamConsumerGLTextureExternalKHR"
  2111. << "(" << dpy << ", " << stream << ")");
  2112. EGLBoolean result =
  2113. egl_api_->eglStreamConsumerGLTextureExternalKHRFn(dpy, stream);
  2114. GL_SERVICE_LOG("GL_RESULT: " << result);
  2115. return result;
  2116. }
  2117. EGLBoolean LogEGLApi::eglStreamConsumerReleaseKHRFn(EGLDisplay dpy,
  2118. EGLStreamKHR stream) {
  2119. GL_SERVICE_LOG("eglStreamConsumerReleaseKHR"
  2120. << "(" << dpy << ", " << stream << ")");
  2121. EGLBoolean result = egl_api_->eglStreamConsumerReleaseKHRFn(dpy, stream);
  2122. GL_SERVICE_LOG("GL_RESULT: " << result);
  2123. return result;
  2124. }
  2125. EGLBoolean LogEGLApi::eglStreamPostD3DTextureANGLEFn(
  2126. EGLDisplay dpy,
  2127. EGLStreamKHR stream,
  2128. void* texture,
  2129. const EGLAttrib* attrib_list) {
  2130. GL_SERVICE_LOG("eglStreamPostD3DTextureANGLE"
  2131. << "(" << dpy << ", " << stream << ", "
  2132. << static_cast<const void*>(texture) << ", "
  2133. << static_cast<const void*>(attrib_list) << ")");
  2134. EGLBoolean result = egl_api_->eglStreamPostD3DTextureANGLEFn(
  2135. dpy, stream, texture, attrib_list);
  2136. GL_SERVICE_LOG("GL_RESULT: " << result);
  2137. return result;
  2138. }
  2139. EGLBoolean LogEGLApi::eglSurfaceAttribFn(EGLDisplay dpy,
  2140. EGLSurface surface,
  2141. EGLint attribute,
  2142. EGLint value) {
  2143. GL_SERVICE_LOG("eglSurfaceAttrib"
  2144. << "(" << dpy << ", " << surface << ", " << attribute << ", "
  2145. << value << ")");
  2146. EGLBoolean result =
  2147. egl_api_->eglSurfaceAttribFn(dpy, surface, attribute, value);
  2148. GL_SERVICE_LOG("GL_RESULT: " << result);
  2149. return result;
  2150. }
  2151. EGLBoolean LogEGLApi::eglSwapBuffersFn(EGLDisplay dpy, EGLSurface surface) {
  2152. GL_SERVICE_LOG("eglSwapBuffers"
  2153. << "(" << dpy << ", " << surface << ")");
  2154. EGLBoolean result = egl_api_->eglSwapBuffersFn(dpy, surface);
  2155. GL_SERVICE_LOG("GL_RESULT: " << result);
  2156. return result;
  2157. }
  2158. EGLBoolean LogEGLApi::eglSwapBuffersWithDamageKHRFn(EGLDisplay dpy,
  2159. EGLSurface surface,
  2160. EGLint* rects,
  2161. EGLint n_rects) {
  2162. GL_SERVICE_LOG("eglSwapBuffersWithDamageKHR"
  2163. << "(" << dpy << ", " << surface << ", "
  2164. << static_cast<const void*>(rects) << ", " << n_rects << ")");
  2165. EGLBoolean result =
  2166. egl_api_->eglSwapBuffersWithDamageKHRFn(dpy, surface, rects, n_rects);
  2167. GL_SERVICE_LOG("GL_RESULT: " << result);
  2168. return result;
  2169. }
  2170. EGLBoolean LogEGLApi::eglSwapIntervalFn(EGLDisplay dpy, EGLint interval) {
  2171. GL_SERVICE_LOG("eglSwapInterval"
  2172. << "(" << dpy << ", " << interval << ")");
  2173. EGLBoolean result = egl_api_->eglSwapIntervalFn(dpy, interval);
  2174. GL_SERVICE_LOG("GL_RESULT: " << result);
  2175. return result;
  2176. }
  2177. EGLBoolean LogEGLApi::eglTerminateFn(EGLDisplay dpy) {
  2178. GL_SERVICE_LOG("eglTerminate"
  2179. << "(" << dpy << ")");
  2180. EGLBoolean result = egl_api_->eglTerminateFn(dpy);
  2181. GL_SERVICE_LOG("GL_RESULT: " << result);
  2182. return result;
  2183. }
  2184. EGLBoolean LogEGLApi::eglWaitClientFn(void) {
  2185. GL_SERVICE_LOG("eglWaitClient"
  2186. << "("
  2187. << ")");
  2188. EGLBoolean result = egl_api_->eglWaitClientFn();
  2189. GL_SERVICE_LOG("GL_RESULT: " << result);
  2190. return result;
  2191. }
  2192. EGLBoolean LogEGLApi::eglWaitGLFn(void) {
  2193. GL_SERVICE_LOG("eglWaitGL"
  2194. << "("
  2195. << ")");
  2196. EGLBoolean result = egl_api_->eglWaitGLFn();
  2197. GL_SERVICE_LOG("GL_RESULT: " << result);
  2198. return result;
  2199. }
  2200. EGLBoolean LogEGLApi::eglWaitNativeFn(EGLint engine) {
  2201. GL_SERVICE_LOG("eglWaitNative"
  2202. << "(" << engine << ")");
  2203. EGLBoolean result = egl_api_->eglWaitNativeFn(engine);
  2204. GL_SERVICE_LOG("GL_RESULT: " << result);
  2205. return result;
  2206. }
  2207. EGLint LogEGLApi::eglWaitSyncKHRFn(EGLDisplay dpy,
  2208. EGLSyncKHR sync,
  2209. EGLint flags) {
  2210. GL_SERVICE_LOG("eglWaitSyncKHR"
  2211. << "(" << dpy << ", " << sync << ", " << flags << ")");
  2212. EGLint result = egl_api_->eglWaitSyncKHRFn(dpy, sync, flags);
  2213. GL_SERVICE_LOG("GL_RESULT: " << result);
  2214. return result;
  2215. }
  2216. } // namespace gl