| Message ID | 20260618122245.946138-24-bryan.odonoghue@linaro.org |
|---|---|
| State | RFC |
| Headers | show |
| Series |
|
| Related | show |
s/rountines/routines/ Bryan O'Donoghue <bryan.odonoghue@linaro.org> writes: > Add lookups for: > > - glBeingQuery s/Being/Begin/ > - glEndQuery > - glGetAueryObjectuiv > - glGetAueryObjectui64v s/Auery/Query/ Otherwise OK, I think. > Used in the right way these methods will allows us to interrogate exactly > how long each GPUISP pass takes. > > Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org> > --- > include/libcamera/internal/egl.h | 5 +++++ > src/libcamera/egl.cpp | 30 ++++++++++++++++++++++++++++++ > 2 files changed, 35 insertions(+) > > diff --git a/include/libcamera/internal/egl.h b/include/libcamera/internal/egl.h > index d3749d2e7..0e57678e8 100644 > --- a/include/libcamera/internal/egl.h > +++ b/include/libcamera/internal/egl.h > @@ -146,5 +146,10 @@ private: > PFNEGLCREATEIMAGEKHRPROC eglCreateImageKHR; > PFNEGLDESTROYIMAGEKHRPROC eglDestroyImageKHR; > PFNGLGETSTRINGPROC glGetString; > + PFNGLBEGINQUERYPROC glBeginQuery; > + PFNGLENDQUERYPROC glEndQuery; > + PFNGLGETQUERYOBJECTUIVPROC glGetQueryObjectuiv; > + PFNGLGETQUERYOBJECTUIVPROC glGetQueryObjectui64v; > + PFNGLGENQUERIESPROC glGenQueries; > }; > } //namespace libcamera > diff --git a/src/libcamera/egl.cpp b/src/libcamera/egl.cpp > index 8d135e092..2fc10b800 100644 > --- a/src/libcamera/egl.cpp > +++ b/src/libcamera/egl.cpp > @@ -390,6 +390,36 @@ int eGL::initEGLContext() > goto fail; > } > > + glBeginQuery = (PFNGLBEGINQUERYPROC)eglGetProcAddress("glBeginQuery"); > + if (!glBeginQuery) { > + LOG(eGL, Error) << "glBegin not found"; > + goto fail; > + } > + > + glEndQuery = (PFNGLENDQUERYPROC)eglGetProcAddress("glEndQuery"); > + if (!glEndQuery) { > + LOG(eGL, Error) << "glEndQuery not found"; > + goto fail; > + } > + > + glGetQueryObjectuiv = (PFNGLGETQUERYOBJECTUIVPROC)eglGetProcAddress("glGetQueryObjectuiv"); > + if (!glGetQueryObjectuiv) { > + LOG(eGL, Error) << "glGetQueryObjectuiv not found"; > + goto fail; > + } > + > + glGetQueryObjectui64v = (PFNGLGETQUERYOBJECTUIVPROC)eglGetProcAddress("glGetQueryObjectui64v"); > + if (!glGetQueryObjectuiv) { > + LOG(eGL, Error) << "glGetQueryObjectui64v not found"; > + goto fail; > + } > + > + glGenQueries = (PFNGLGENQUERIESPROC)eglGetProcAddress("glGenQueries"); > + if (!glGetQueryObjectuiv) { > + LOG(eGL, Error) << "glGenQueries not found"; > + goto fail; > + } > + > if (eglChooseConfig(display_, configAttribs, &config, 1, &numConfigs) != EGL_TRUE) { > LOG(eGL, Error) << "eglChooseConfig fail"; > goto fail;
diff --git a/include/libcamera/internal/egl.h b/include/libcamera/internal/egl.h index d3749d2e7..0e57678e8 100644 --- a/include/libcamera/internal/egl.h +++ b/include/libcamera/internal/egl.h @@ -146,5 +146,10 @@ private: PFNEGLCREATEIMAGEKHRPROC eglCreateImageKHR; PFNEGLDESTROYIMAGEKHRPROC eglDestroyImageKHR; PFNGLGETSTRINGPROC glGetString; + PFNGLBEGINQUERYPROC glBeginQuery; + PFNGLENDQUERYPROC glEndQuery; + PFNGLGETQUERYOBJECTUIVPROC glGetQueryObjectuiv; + PFNGLGETQUERYOBJECTUIVPROC glGetQueryObjectui64v; + PFNGLGENQUERIESPROC glGenQueries; }; } //namespace libcamera diff --git a/src/libcamera/egl.cpp b/src/libcamera/egl.cpp index 8d135e092..2fc10b800 100644 --- a/src/libcamera/egl.cpp +++ b/src/libcamera/egl.cpp @@ -390,6 +390,36 @@ int eGL::initEGLContext() goto fail; } + glBeginQuery = (PFNGLBEGINQUERYPROC)eglGetProcAddress("glBeginQuery"); + if (!glBeginQuery) { + LOG(eGL, Error) << "glBegin not found"; + goto fail; + } + + glEndQuery = (PFNGLENDQUERYPROC)eglGetProcAddress("glEndQuery"); + if (!glEndQuery) { + LOG(eGL, Error) << "glEndQuery not found"; + goto fail; + } + + glGetQueryObjectuiv = (PFNGLGETQUERYOBJECTUIVPROC)eglGetProcAddress("glGetQueryObjectuiv"); + if (!glGetQueryObjectuiv) { + LOG(eGL, Error) << "glGetQueryObjectuiv not found"; + goto fail; + } + + glGetQueryObjectui64v = (PFNGLGETQUERYOBJECTUIVPROC)eglGetProcAddress("glGetQueryObjectui64v"); + if (!glGetQueryObjectuiv) { + LOG(eGL, Error) << "glGetQueryObjectui64v not found"; + goto fail; + } + + glGenQueries = (PFNGLGENQUERIESPROC)eglGetProcAddress("glGenQueries"); + if (!glGetQueryObjectuiv) { + LOG(eGL, Error) << "glGenQueries not found"; + goto fail; + } + if (eglChooseConfig(display_, configAttribs, &config, 1, &numConfigs) != EGL_TRUE) { LOG(eGL, Error) << "eglChooseConfig fail"; goto fail;
Add lookups for: - glBeingQuery - glEndQuery - glGetAueryObjectuiv - glGetAueryObjectui64v Used in the right way these methods will allows us to interrogate exactly how long each GPUISP pass takes. Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org> --- include/libcamera/internal/egl.h | 5 +++++ src/libcamera/egl.cpp | 30 ++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+)