From patchwork Fri Sep 4 08:43:11 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Show Liu X-Patchwork-Id: 9480 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 6B070BE174 for ; Fri, 4 Sep 2020 08:43:37 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 08EE2629B6; Fri, 4 Sep 2020 10:43:37 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.b="sZ3vN7Cu"; dkim-atps=neutral Received: from mail-pg1-x52c.google.com (mail-pg1-x52c.google.com [IPv6:2607:f8b0:4864:20::52c]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 3685C60371 for ; Fri, 4 Sep 2020 10:43:36 +0200 (CEST) Received: by mail-pg1-x52c.google.com with SMTP id 7so3966715pgm.11 for ; Fri, 04 Sep 2020 01:43:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=H9yFsaJuAY0eQOHpOlJlyImI4gnvejBFOYTrZoAinHM=; b=sZ3vN7CujhIeVZYQ7khj9QOrXWAQB70HpqeBEjvAzeBM7qZjfz94Jw1PjVZg2p4Ixv D2A/xP/2BH6Kamh9JFjAEpWUWGX+p6IPOo954m/mgmHui1ztJx+fNqgeQPkaJCRJ2twn s7TXsp4iGH/Yy8Q35h9ObThflr1fzXtH8BAOn78z6dcL3KcE0odarxSFOzJNpo8d2+rh 3EMso2KtQhEa9gSn35Jbnbl9bFUi+VTk+U/NtUdRuIJ+xbvsgcfmDmLVWHho4dIUuVL9 2Mgu1ZTPRHezPv5Ee3208Hg4JKU2Z/eT0SQcDH8zX6KVL+89kKrZdKpOlE6+M83vTJni E/Sg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=H9yFsaJuAY0eQOHpOlJlyImI4gnvejBFOYTrZoAinHM=; b=LX6LGDPsKmV26Xn0Ri7uaFy6p6kz6n6B9RSX/l/yDNX4nUiqnTiAMhkh25wPGK36Rq phfaqui97syADA+GHiDqY6Zf93DICHKLb7Im72BvBY8M2eMsJ6iv9/NdHuwZbGzhRpx5 YuM2QtgY94IVIvCdPB+C2UG987p3P2EFLtG25NuIxCWOTArhZah15bWtwrvweP4+qqbk eMooRcsTielz8WGU+qPhdPNcab7gouYlifIQgn5Yv8nnNZYQhxCKTn9Q2IPx5WDMk5hm Hjo49o03GCTPLiShJIS1VJQiZMjUdpT1l24Ps1uSVxeu9/pIX/AzxlheB8zDeRhZYE7/ 0LQQ== X-Gm-Message-State: AOAM532EUdsK8Fqg3lVtOst/d4wQWKxK4TZudOijzslU+pM9R+bntMRH d3d1AWgAmxXxxfeKt8PQgZ2EM5K+HyZMxA== X-Google-Smtp-Source: ABdhPJyWH1KqnDRBEUrHu4WFMrNyrUFdOWCaqJqPqpWdEaBcjAOPP1li1lXIAGg3L/dK7FvPdvHuWQ== X-Received: by 2002:a63:d504:: with SMTP id c4mr6270565pgg.138.1599209014399; Fri, 04 Sep 2020 01:43:34 -0700 (PDT) Received: from localhost.localdomain (211-20-20-223.HINET-IP.hinet.net. [211.20.20.223]) by smtp.gmail.com with ESMTPSA id a6sm5202148pgt.70.2020.09.04.01.43.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 04 Sep 2020 01:43:33 -0700 (PDT) From: Show Liu To: libcamera-devel@lists.libcamera.org Date: Fri, 4 Sep 2020 16:43:11 +0800 Message-Id: <20200904084316.7319-1-show.liu@linaro.org> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH v5 0/4] qcam: accelerate format conversion by OpenGL shader 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" This is patch set v5 for qcam accelerated format conversion by OpenGL shader. It's based on viewfinderGL(patch set v3), please skip the v4. In this version, I changed the original viewfinder hierarchy including created viewfinder base and move the original viewfinder as default Qt rendering and created new viewfinderGL to handle OpenGL stuff and also move the OpenGL shader code as Qt resource. All the changes are according to the previous review comments. Known issue: * It's running well at start time, but when the stop button is pressed and starts again, there is no more capture event being triggered. Todo: * Show the No camera icon when the capture stops being pressed. BR, Show Show Liu (4): qcam: add OpenGL shader code as Qt resource qcam: new viewfinder hierarchy qcam: add viewfinderGL class to accelerate the format convert qcam: add additional command line option to select the render type src/qcam/assets/shader/NV_2_planes_UV_f.glsl | 32 ++ src/qcam/assets/shader/NV_2_planes_VU_f.glsl | 32 ++ src/qcam/assets/shader/NV_3_planes_UV_f.glsl | 33 ++ src/qcam/assets/shader/NV_3_planes_VU_f.glsl | 33 ++ src/qcam/assets/shader/NV_vertex_shader.glsl | 16 + src/qcam/assets/shader/shaders.qrc | 10 + src/qcam/main.cpp | 3 + src/qcam/main_window.cpp | 29 +- src/qcam/main_window.h | 6 + src/qcam/meson.build | 7 +- src/qcam/viewfinder.h | 60 +-- src/qcam/viewfinder_gl.cpp | 441 ++++++++++++++++++ src/qcam/viewfinder_gl.h | 97 ++++ .../{viewfinder.cpp => viewfinder_qt.cpp} | 24 +- src/qcam/viewfinder_qt.h | 67 +++ 15 files changed, 824 insertions(+), 66 deletions(-) create mode 100644 src/qcam/assets/shader/NV_2_planes_UV_f.glsl create mode 100644 src/qcam/assets/shader/NV_2_planes_VU_f.glsl create mode 100644 src/qcam/assets/shader/NV_3_planes_UV_f.glsl create mode 100644 src/qcam/assets/shader/NV_3_planes_VU_f.glsl create mode 100644 src/qcam/assets/shader/NV_vertex_shader.glsl create mode 100644 src/qcam/assets/shader/shaders.qrc create mode 100644 src/qcam/viewfinder_gl.cpp create mode 100644 src/qcam/viewfinder_gl.h rename src/qcam/{viewfinder.cpp => viewfinder_qt.cpp} (86%) create mode 100644 src/qcam/viewfinder_qt.h