From patchwork Fri Jun 7 09:12:45 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Martin_Storsj=C3=B6?= X-Patchwork-Id: 49638 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:c209:0:b0:460:55fa:d5ed with SMTP id d9csp891243vqo; Fri, 7 Jun 2024 02:12:56 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXvABHb7/XYrh/CIa4K70laX4mY9T1kMc5ByrrAJHfWuiDesu0YFdwU0BCOkJDet32pWNQuu/Rc8HIMQ3SO04Za6Kt0yd14DAnSlg== X-Google-Smtp-Source: AGHT+IFtV4FkyqAm+UowVowWPuHR2KJH68DCXn0TxZ7Dr7ytCVLdcne4OZLO3TVVw3oDIQ74pnW5 X-Received: by 2002:a17:906:a001:b0:a65:ec91:c965 with SMTP id a640c23a62f3a-a6cba4a1fa8mr178493366b.10.1717751575976; Fri, 07 Jun 2024 02:12:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1717751575; cv=none; d=google.com; s=arc-20160816; b=BJNK+2fU18A7r0qaA6o0EB113j7LKrXPf3DtGjf05G3Th9AoBd8RpkEshADWhHlkVH 1pxrgjdyWmtDndr0nBfNRqhykXt8kblUqS3qinF3epW1l6T5lC8K1zJFNosCTkCaqhcR ZzAqDfX+O5Ah5VL4YJWiW5X9PCj+PYuX0FgPVcyrUVFYtKoWGTlyRz8uZgAkz1oGxxni vJp7Nmd2VeBIOOEFdq8kJL8ndiTEJu0QLxo8I0RH41Rx4ra57cBWxSd7v8glcGLDuqVU eO4jgQjWNkViue3PHtArrdim5rkACSIm8L/U1Dsd0JxZKkoVXdpvHnySBXmO8YqiZKWp bepQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:message-id:date:to:from :dkim-signature:delivered-to; bh=9j6t/Z+1b5mXIjAU1inawniZZltbOahX32DGno/Sl4s=; fh=1uPTKUvRnOgiEaYgKGzgSxEgTIS1PbR5TNt1/RunOQM=; b=OJoeMCRoDHwGOZaOw7ifgeihYUAYNqQkhYVpXJDTmdmM3k4XX+osfCU4vEzrXwasjh lYedWm+VDiLIcGJflAPvMpewEMYGvErRWmvZ2wTdoInl02tZJeKFigD8kzc8cQJrteal z1ns2PGugAPJuMmngXg7TtSrEyBHsRTASYU+4B94LKG6wvrIoWuEi7B7qj0MaIPnWoh7 qzNI/kY4Grl4qUixXkJ3AYy8dMnFukPv2zrmOTAeDpACGTp2l7HBP9z+e4VmHV7cqQ6T HOHYZZRM83A+z7usR9Ag8X965xNuipsrgbWg3oDyF63lh9Q6L0BHcwqt81DgviUNXoJc +5KA==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@martin-st.20230601.gappssmtp.com header.s=20230601 header.b=YbphakYY; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id a640c23a62f3a-a6e977b5df1si20621566b.186.2024.06.07.02.12.55; Fri, 07 Jun 2024 02:12:55 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@martin-st.20230601.gappssmtp.com header.s=20230601 header.b=YbphakYY; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9679F68D1A6; Fri, 7 Jun 2024 12:12:53 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf1-f45.google.com (mail-lf1-f45.google.com [209.85.167.45]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4244A68D1A6 for ; Fri, 7 Jun 2024 12:12:47 +0300 (EEST) Received: by mail-lf1-f45.google.com with SMTP id 2adb3069b0e04-52bc0a9cea4so193993e87.0 for ; Fri, 07 Jun 2024 02:12:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=martin-st.20230601.gappssmtp.com; s=20230601; t=1717751566; x=1718356366; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=O3uAPMqbcaaiOGeXbIzrkmmKoEOjx0vPj4qf2ZHPKaA=; b=YbphakYYDR5kDx2JsWIifEVz2YaYDo3rvWPa/oA6/StIGgH2HgVW66oDfnnDXAhTTT TqbNlitddav6t2/Wa87bpRx+zDavAP/FQbY44RpbnX5yEpNnO6zXsRebqnsGIxnJRqkQ IPlXLKUsVDmgfqWFv3B2D2neNPPk7e0uVtqAOyUQcUhOsfKu9ITG/hlgPM3he2ZXk8HL gx8xAitXAKVrpehG4yFb4BAjhJdHKofxYfKL9GCVybRZNv5nHB2BzA4nUmKySdZOurO+ ZaEzHiFZiMmZqFtbSa1UHlqyeHyhQr2/96Q2V8zNWPdNNTpKN3mzLcxpAgQCE/yOBhIn Q4MA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717751566; x=1718356366; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=O3uAPMqbcaaiOGeXbIzrkmmKoEOjx0vPj4qf2ZHPKaA=; b=LEGqyo5/oSRccZx4ThjKBFboLWeErl5xiK5j6891AsI3Hn3AcqOsXVRD5XdRUVp+9v MQhVgErYMxule+4eO3oR7YToG/SQ+JbwangV5BQoEU1xBTRYTYYcYvKeZaSYjox6fvJ8 QVH+jtxAEZwNOpX9pSnjtVdDVUd07MoPIZb297q07e7g0Y5iE5bHBJRt7OmCJL23NTJ2 M3K612bz/QRtO3l1aPGw/1wfYgj+gVR/unBo0oGD25vJ/ebLLe3WNE4T6AH5bSlL1i5S vC8AxsWXOWOv5nImFVUZ41lIIZ2IwoCADKFi+ItHEWSoA1sR3+nUlMBjY2f0OPCrmK1g u6xw== X-Gm-Message-State: AOJu0Yx0Ea1gRbfHMIxBBc4W87ULDKtpBhtX8fOKGFwuNDBvcwvrwRDl XLdeMkM5BX7qzYpmWlghVqxwk7Mzt7Arx2sQeL9jCfkAFtuUnOKwN/SMcVsGImflxha93jIiaJe fnA== X-Received: by 2002:a05:6512:3d8b:b0:52a:d778:bf62 with SMTP id 2adb3069b0e04-52bb9df3a65mr712926e87.19.1717751566456; Fri, 07 Jun 2024 02:12:46 -0700 (PDT) Received: from localhost (host-114-191.parnet.fi. [77.234.114.191]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-52bb434dce1sm458813e87.303.2024.06.07.02.12.46 (version=TLS1 cipher=AES128-SHA bits=128/128); Fri, 07 Jun 2024 02:12:46 -0700 (PDT) From: =?utf-8?q?Martin_Storsj=C3=B6?= To: ffmpeg-devel@ffmpeg.org Date: Fri, 7 Jun 2024 12:12:45 +0300 Message-Id: <20240607091245.91962-1-martin@martin.st> X-Mailer: git-send-email 2.39.3 (Apple Git-146) MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] aarch64: Use cntvct_el0 as timer register on Android X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Zhao Zhili Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: NlAuOjDyNFME The default timer register pmccntr_el0 usually requires enabling access with e.g. a kernel module. --- cntvct_el0 has significantly better resolution than av_gettime_relative (while the unscaled nanosecond output of clock_gettime is much higher resolution). In one tested case, the cntvct_el0 timer has a frequency of 25 MHz (readable via the register cntfrq_el0). --- libavutil/aarch64/timer.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/libavutil/aarch64/timer.h b/libavutil/aarch64/timer.h index fadc9568f8..966f17081a 100644 --- a/libavutil/aarch64/timer.h +++ b/libavutil/aarch64/timer.h @@ -33,7 +33,16 @@ static inline uint64_t read_time(void) uint64_t cycle_counter; __asm__ volatile( "isb \t\n" +#if defined(__ANDROID__) + // cntvct_el0 has lower resolution than pmccntr_el0, but is usually + // accessible from user space by default. + "mrs %0, cntvct_el0 " +#else + // pmccntr_el0 has higher resolution, but is usually not accessible + // from user space by default (but access can be enabled with a custom + // kernel module). "mrs %0, pmccntr_el0 " +#endif : "=r"(cycle_counter) :: "memory" ); return cycle_counter;