From patchwork Thu Jun 18 12:22:36 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bryan O'Donoghue X-Patchwork-Id: 26956 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id 26C31C332A for ; Thu, 18 Jun 2026 12:23:36 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 4ECA4656EB; Thu, 18 Jun 2026 14:23:35 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.b="vMcS6geV"; dkim-atps=neutral Received: from mail-wm1-x335.google.com (mail-wm1-x335.google.com [IPv6:2a00:1450:4864:20::335]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id E03FB656C0 for ; Thu, 18 Jun 2026 14:23:15 +0200 (CEST) Received: by mail-wm1-x335.google.com with SMTP id 5b1f17b1804b1-490ae94a89eso6314345e9.1 for ; Thu, 18 Jun 2026 05:23:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781785395; x=1782390195; darn=lists.libcamera.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=EZJ9JeeKuy/kalHWvSZKmR3Qkntwk99X5kKkipZh7EM=; b=vMcS6geVpUJlyoxamVHGb2BkV9olOcQVVnIATAT+3X17WXPDV5LpSokxwBpURpHE8e 04nysCj9YDilp0ohH8XZ/IPwvX1SN2/j280S1I2YjDnpTwChoW03RjM6Afegx0onwTT3 E9nWJABIiQNP1wZSHa/ULkC3rldTTZr912dHNG91WtZB8dWMWH9IWwAKcRghxgdCWcSc iGOXgyIEwSEkvAi9bO2vtvpsS5V0MOrJTMcdcZSI28sOFIYp39aUdk8xL06iUhvgP2bz mxmxPErSbMWpElWU8t7X1kgntGV68SexFKb7HMjoR1VKqWn1vG53s9ifrpk9bAZEjjt3 ZRuA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781785395; x=1782390195; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=EZJ9JeeKuy/kalHWvSZKmR3Qkntwk99X5kKkipZh7EM=; b=l0nb8c6ztake8dwhDiOY8JUT9aWvIMVacguEtSmzopl5ApsRHFLpv3FuBrJRML0dxu Gs3zhhfv4c8vdMXyHunl4KxGqZRYjMGMqp9i8liQEOF1hP/oTgV9c+b4d9EY9Qby44mI p82JRrJuf9rTUrIuqkRwG/Kf+BPl2rpcAy5Jt3BSe07jxGFsv2xFz3lXhJ8E4lKps1TE pASTRvrhLlSp5hvfHnL9m1x+qYPV04d7UTIIqaMZ/48qpa1buxuIMB7pYFZ4vXOCT0Bx fZZHwG6WYeJcbf0Ieadk2oCIYnTQaS1JJ/p4FmF7wAN7xNuEHY8kOkg3rFrN4q46DtC6 V5tw== X-Gm-Message-State: AOJu0YxCRgfWunkiMJQQGgKZy0HPPRYEXfRe+s/nRioEPBDVRShnR2ND eUAYvqIVV5FDYV2ritP9TEzP1WJqVDDc5ShwZo9qtQ0yTJSisG/aDb2u8MfKFVtYR9az6156/Nb ja7fHsJY= X-Gm-Gg: AfdE7cksyQInvTBLFi5caOoEFyQ8uLI4KUZ8hw46ato0ttsWlkUWvlgsOgJVg+oMSnt gwVJS3yCMQ8tfAQkqtJRhiWDRT5SRuaGQjYA+DYS0+T90QwgmDWTRqrkbXcpapM/p89MJVFFibY 3C4dz0E2SVC18TOJG6x17XkbBZdmdqF9kEQ6eZ+BFbzWfqgIHSweksx2nh/c77LOr1tq1lY4RPB ttLKekNL4dxjJqsQigL8w/V8TGVxCeJ9OyxtYXI/5lHQy/v8YEMqUgu/kWJ6eRqJVY4wstKYKJz thCgwFMtD29MI0nybJtu8Mf9v9j5uX7KZWbvdxHU8uQSdLsclnW2Ct1dbMzlwKAO+CRhEjmymuh Xxy8ewVjY1ryFLm5Jwo3SNbCrW92EiywoOmP/9yo85OazalbZOEAbsrW6xGdLYbSWQsPzavhkqY tpW2/DSS9tejoz/ulsP2PQaXbzOFCzE8paHy9S3B8= X-Received: by 2002:a05:600c:1550:b0:48f:e26a:1744 with SMTP id 5b1f17b1804b1-492381eba37mr56177075e9.9.1781785395282; Thu, 18 Jun 2026 05:23:15 -0700 (PDT) Received: from inspiron14p-linux ([109.76.144.236]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4922fa3a4easm275198015e9.3.2026.06.18.05.23.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Jun 2026 05:23:14 -0700 (PDT) From: Bryan O'Donoghue To: libcamera-devel@lists.libcamera.org Cc: bryan.odonoghue@linaro.org, pavel@ucw.cz Subject: [PATCH 23/30] libcamera: software_isp: egl: Add method lookups for GPU benchmark rountines Date: Thu, 18 Jun 2026 13:22:36 +0100 Message-ID: <20260618122245.946138-24-bryan.odonoghue@linaro.org> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260618122245.946138-1-bryan.odonoghue@linaro.org> References: <20260618122245.946138-1-bryan.odonoghue@linaro.org> MIME-Version: 1.0 X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" 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 --- 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;