From patchwork Fri Dec 17 20:04:15 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aman Karmani X-Patchwork-Id: 32692 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:cd86:0:0:0:0:0 with SMTP id d128csp1913929iog; Fri, 17 Dec 2021 12:04:49 -0800 (PST) X-Google-Smtp-Source: ABdhPJyH3phzYF1Sp49GaCGQ9jat8SkpBW0/cua0IEv2lnuc1MH1Ly64H1yiHnfAxxKyl2p4LiCX X-Received: by 2002:a17:907:868e:: with SMTP id qa14mr3782530ejc.564.1639771489381; Fri, 17 Dec 2021 12:04:49 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1639771489; cv=none; d=google.com; s=arc-20160816; b=LARPl7WHGLPvR1hV/z7tkON371jOjBoT9RJY/kPoO2caPEjuaVcu8njSPjt5+Otkro kXIDzNXEqFl8Hu3I+vXEt9Iwi6SFQ7OhkN+pLBI8lC4/H18iWN7IUFwNSbx/byzUaZ6S yezv/E55pB0r9IRyXK8sAUFPzxyTuCG7G7lg0UxNsWQyE2+2z5IG8ZVt3KW5e+Zd/tiE ZaJRTM0pmHRn6A0RSIbwlRaRvSUJHxBpaBO9SorGB5OgusIyMIs4u9PQTltgjRVIsGJm 4l5nLtJH4ROTSwWW0WopfwxivvEeXF73Gl3NdCdVosR3MrlLgGV6N/c86qCRz03kosGV APOw== 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:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=Hs5WaVDOKFTsbMEcLTL26YTKw2kXTiXgmPURF4oHIoA=; b=H9HMllPYLH/YB1XCe+Z0WvQWYT++05/a5u7XLtxexXDnYRBqEse1TWolJiHsoJaCfx RBll7PvJmxwHqUajyulr3WcTd2iX3ESarF5SwZeHWlsazyu5rBxkPbIGrT3sPOZ2kXOQ bDsxmMT1Q/r3sGmRfSZjwJcWI2Q3QZVnZs0urtk2C+jUxAePoD5gLfe+ft+1blJobTBH c9yGvlxWJWRdNjifeHuRFlfF+p+eh/TqR2bnG2JiOCH9sGFl40xTNeIUF4IdhjnaZm1q 0F/ACY9gSyOpGmAEx9KHLGqjN2xyC7gv5dnnfBt1gC8x9CowrlqfCDZaznsUXcvbk6wL FD5g== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=HFIEngts; 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 ji16si7037022ejc.940.2021.12.17.12.04.49; Fri, 17 Dec 2021 12:04:49 -0800 (PST) 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=@gmail.com header.s=20210112 header.b=HFIEngts; 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 1801168AEE9; Fri, 17 Dec 2021 22:04:37 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pl1-f180.google.com (mail-pl1-f180.google.com [209.85.214.180]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B9D2E68A8B4 for ; Fri, 17 Dec 2021 22:04:28 +0200 (EET) Received: by mail-pl1-f180.google.com with SMTP id q17so2760099plr.11 for ; Fri, 17 Dec 2021 12:04:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=d4KLCz82ByVviXKQuNRrjr5MvomLF+uM7sONuTAa4aM=; b=HFIEngtsGrAaY12JoSGW0CUkYfJg5qVCmLiGpxToyRbvsn5ULk1MHMEHgGU1vurOVO cavxdeNSQStw1Xwze8ivHW82XDuW1OcEzA4ns4OhYslrBzLvS5m+0ZtJeXNq+bUMWgQd xRiRx4X5yJcX2jZasZTiX3RCBS6bdknPVVnNpo+m+2wOAAv3p736wXmgobcSFhOHPd1h 1cvbrCKyUL/D4gaNdyKxrCRULtzfkTtO0/QjO+IjhGPQ6dIR/t8KNJ2pNSarqtSEDSIj rETdxPu/Y1WCVAtBPz+oipBGu5VbA8nFowVaNsfnOPck3uEIi0ieBtQmmNu5xoZO6SSO y9WQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=d4KLCz82ByVviXKQuNRrjr5MvomLF+uM7sONuTAa4aM=; b=ZBYqVWz7UK4UprgXPWBeId0chr3B91a87nNN7LH2l7pY72liIdOhFT0fFEJSKSlsfa ppD3Njx5dxfiwHQklAM8H8hEc5NLsVU5xjWH0Ow3929QuDs0U+PLn7xsXuugrIYNPvD2 rKoTrK3rD5dEt88EybePWS6xG5Crgrc4j1BEkmftRuZr7sO2k+Td0clTqPqQiPjDucPJ EYQg0uTFz0SpJ8p3PBT639xLJZZFDNxPGAOjEMUvBz2n1zkdhVdit6f4stXc0m3jjRCi bCOGacSXqRN+a9Q1beO/l8/7S8auMJAZDWWxqP4XOyQcy9Tg8SRmCHLC18KmvDul4pKD w6BQ== X-Gm-Message-State: AOAM531RNBtcvpbBeon0MUYk/URLsST4dvB1EjYurfILTwlRcSsatTNb daYSP38BSSqnEVQV4o2K1HMiQg3r0+sSrw== X-Received: by 2002:a17:902:e282:b0:148:ef58:10d8 with SMTP id o2-20020a170902e28200b00148ef5810d8mr543318plc.116.1639771466504; Fri, 17 Dec 2021 12:04:26 -0800 (PST) Received: from tmm1-imac.lan ([2600:8802:5501:308f:68db:dc19:cd7b:1dc7]) by smtp.gmail.com with ESMTPSA id k2sm8767301pgh.11.2021.12.17.12.04.25 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 17 Dec 2021 12:04:25 -0800 (PST) From: Aman Karmani To: ffmpeg-devel@ffmpeg.org Date: Fri, 17 Dec 2021 12:04:15 -0800 Message-Id: <20211217200418.68942-2-ffmpeg@tmm1.net> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20211217200418.68942-1-ffmpeg@tmm1.net> References: <20211217200418.68942-1-ffmpeg@tmm1.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v4 2/5] build: detect Metal.framework and build .metal files 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: aman@tmm1.net Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: U/l7Hqb6g2Pn From: Aman Karmani Reviewed-by: Ridley Combs Signed-off-by: Aman Karmani --- .gitignore | 3 +++ configure | 12 +++++++++++- ffbuild/common.mak | 9 +++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 9ed24b542e..1a5bb29ad5 100644 --- a/.gitignore +++ b/.gitignore @@ -19,6 +19,9 @@ *.swp *.ver *.version +*.metal.air +*.metallib +*.metallib.c *.ptx *.ptx.c *.ptx.gz diff --git a/configure b/configure index 5fffcb8afe..32a39f5f5b 100755 --- a/configure +++ b/configure @@ -309,6 +309,7 @@ External library support: if openssl, gnutls or libtls is not used [no] --enable-mediacodec enable Android MediaCodec support [no] --enable-mediafoundation enable encoding via MediaFoundation [auto] + --disable-metal disable Apple Metal framework [autodetect] --enable-libmysofa enable libmysofa, needed for sofalizer filter [no] --enable-openal enable OpenAL 1.1 capture support [no] --enable-opencl enable OpenCL processing [no] @@ -382,6 +383,8 @@ Toolchain options: --dep-cc=DEPCC use dependency generator DEPCC [$cc_default] --nvcc=NVCC use Nvidia CUDA compiler NVCC or clang [$nvcc_default] --ld=LD use linker LD [$ld_default] + --metalcc=METALCC use metal compiler METALCC [$metalcc_default] + --metallib=METALLIB use metal linker METALLIB [$metallib_default] --pkg-config=PKGCONFIG use pkg-config tool PKGCONFIG [$pkg_config_default] --pkg-config-flags=FLAGS pass additional flags to pkgconf [] --ranlib=RANLIB use ranlib RANLIB [$ranlib_default] @@ -2564,6 +2567,8 @@ CMDLINE_SET=" ln_s logfile malloc_prefix + metalcc + metallib nm optflags nvcc @@ -3835,6 +3840,8 @@ host_cc_default="gcc" doxygen_default="doxygen" install="install" ln_s_default="ln -s -f" +metalcc_default="xcrun metal" +metallib_default="xcrun metallib" nm_default="nm -g" pkg_config_default=pkg-config ranlib_default="ranlib" @@ -4435,7 +4442,7 @@ if enabled cuda_nvcc; then fi set_default arch cc cxx doxygen pkg_config ranlib strip sysinclude \ - target_exec x86asmexe + target_exec x86asmexe metalcc metallib enabled cross_compile || host_cc_default=$cc set_default host_cc @@ -6326,6 +6333,7 @@ check_apple_framework CoreFoundation check_apple_framework CoreMedia check_apple_framework CoreVideo check_apple_framework CoreAudio +check_apple_framework Metal enabled avfoundation && { disable coregraphics applicationservices @@ -7620,6 +7628,8 @@ ARFLAGS=$arflags AR_O=$ar_o AR_CMD=$ar NM_CMD=$nm +METALCC=$metalcc +METALLIB=$metallib RANLIB=$ranlib STRIP=$strip STRIPTYPE=$striptype diff --git a/ffbuild/common.mak b/ffbuild/common.mak index 0eb831d434..e79b509425 100644 --- a/ffbuild/common.mak +++ b/ffbuild/common.mak @@ -112,6 +112,15 @@ COMPILE_LASX = $(call COMPILE,CC,LASXFLAGS) $(BIN2CEXE): ffbuild/bin2c_host.o $(HOSTLD) $(HOSTLDFLAGS) $(HOSTLD_O) $^ $(HOSTEXTRALIBS) +%.metal.air: %.metal + $(METALCC) $(patsubst $(SRC_PATH)/%,$(SRC_LINK)/%,$<) -o $@ + +%.metallib: %.metal.air + $(METALLIB) --split-module-without-linking $(patsubst $(SRC_PATH)/%,$(SRC_LINK)/%,$<) -o $@ + +%.metallib.c: %.metallib $(BIN2CEXE) + $(BIN2C) $(patsubst $(SRC_PATH)/%,$(SRC_LINK)/%,$<) $@ $(subst .,_,$(basename $(notdir $@))) + %.ptx: %.cu $(SRC_PATH)/compat/cuda/cuda_runtime.h $(COMPILE_NVCC)