From patchwork Sat Jun 2 16:58:22 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Danil Iashchenko X-Patchwork-Id: 9229 Delivered-To: ffmpegpatchwork@gmail.com Received: by 2002:a02:11c:0:0:0:0:0 with SMTP id c28-v6csp2104691jad; Sat, 2 Jun 2018 10:05:49 -0700 (PDT) X-Google-Smtp-Source: ADUXVKLMeiDCtN4E6erxbgHazmwG9kcLReF08Wxl2Z50IzEs4UryRFo9u3ARmvkWT+t2ZqNAaKOt X-Received: by 2002:adf:c841:: with SMTP id e1-v6mr11543225wrh.236.1527959149116; Sat, 02 Jun 2018 10:05:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1527959149; cv=none; d=google.com; s=arc-20160816; b=zBF4sj7Sgps/oB0tzpEPj7b5lWLXvokqmNDyISRfdLChQ/+SrrTqoQCVfFcx38ZoGP JZE7vsXLRu2BcftQtWNBlhVL/dx2jYDV6Swlw2JPlKqIpofxMQ6t9lfJ6HAC96gj0MEm w2Ad6kkNVWj0TpQuG4UPwRTwDVO42D1exR8XGH0qeos3Si7C+9nHjDomf5BAxNDnBV7C 0N26uktREB/FmiolQo4lJZBlzeBCQKM755UMsuudTC8mtdoap7zRjcak8chgJjgbonPr iRStDJZAlE0D/SlOvbAzgX/v+a5LsdKVo/Gp+J9zY+xwWztpuY2KU/WoD205Bf/3hMs9 rTig== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:message-id:date:to:from:dkim-signature :delivered-to:arc-authentication-results; bh=Vej+nKWr7OsOJSNc+AIY5Z4dJ0vHEOrW2gPMGWZQ8bM=; b=B0avwWThWuisZSC2IM2M+2qISrihF5ztrGRTP2JQTknZVOcB3o9Dav3fD0RY91GOL2 6hfx+FwjsPFWDg0V4xQSFzmbhC3CQ103MwcZy50rzLWIiH3WcNm99fJbzhrJUv4CGqOT 9ggeG+qPaNYstVzRXaz6VChJEv/Qz6i/3mbURRDT2w77pYwbB8NGPXiaIMYGhiuV3mxm /tPYaiT1+NdmTZc39VidV0YbBDg6BulcCMZxsSVR7bN6WxKwHaL3gxMo6ZBO7g/VYs5h QHz73PdHNyPNTsQcpeKR7CpgGrt3CLKLbfCpUfnKMolnXqcmJzIcDNJfkvzJuTrDIFHb l5Hw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=T+8P5eJr; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id p3-v6si8210056wro.210.2018.06.02.10.05.48; Sat, 02 Jun 2018 10:05:49 -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=@gmail.com header.s=20161025 header.b=T+8P5eJr; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 2603168A2C1; Sat, 2 Jun 2018 20:05:01 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf0-f68.google.com (mail-lf0-f68.google.com [209.85.215.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C8AAA680758 for ; Sat, 2 Jun 2018 20:04:54 +0300 (EEST) Received: by mail-lf0-f68.google.com with SMTP id r2-v6so19188822lff.4 for ; Sat, 02 Jun 2018 10:05:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=AINGfIrWEHXHijYvG+zEKXLz7Gwp1WzuRSAJUx7be8Q=; b=T+8P5eJr4SyB+ozw4HeO/N8797bcJh2s9FYuVlusIbjCwaaJRRICXdchwYn6s/+OBr q4C+xN6x4qygWAAVvnvLAvgzyoQnKTmkGH8i5FiEhEBuNyuS3grbM8/T0I8aLkGeTKj+ 8NKhAnv5/qTMpKV2KwXRl7x3Wt4gdR0l+6Zjo6zhcGU0OdT29fIm1d3nPRZzE9N2f5vW OJoC0qZ6aCTDEUZlcaKocMj2TpfCEmJQ4q/WSM2rmudLY+5XkygMdNIGIaKceiXDspyb i4tCkPzvIeg9OyD6f7RiWLmE7oNdr0ebp2zia2zrLEx3RYFFaNimpMgZXbahA41k1L6C Z33w== 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; bh=AINGfIrWEHXHijYvG+zEKXLz7Gwp1WzuRSAJUx7be8Q=; b=aCILMH3+8P6UEoZHBBndIsGP5LCOqjrfxU2BskgFxgcydH4nQHQvPau9RIbINdhu6n NKQ1VA2uVI+ARDdcItQ+QelHiStu7jGLACJif5VmP/zwHvtuRhXr3tdgeM6RBuz0J6Et MGo9e/HFfuh0x67uMGJ8NiBJ0u0igTEb0Bcpt2BkKLmMTPn9GiDaJocFKUiqR3NywuGW mog6sT4r/oVZyD/RmRfau96jTMHbEcNb+0luOXwGxSQiI6AQiWfk+VThHaQyGPJf11wg Jq2EklRSEZnnnKSXFbsFG2NtgnKjzficpMd6gWMR+Nkn7IYgHbVoyIw+lkuS+cerx8So Fgcg== X-Gm-Message-State: ALKqPwe2wjYHKwnTIF4AWkrv0mpQOxXhRH1qUJSCnwtRly0f/S1etDoh OQaeOVPQRbxXWBchrjtAnSadfcI= X-Received: by 2002:a19:7402:: with SMTP id v2-v6mr8938616lfe.97.1527958749836; Sat, 02 Jun 2018 09:59:09 -0700 (PDT) Received: from dan-acer.lan (campus.ifmo.ru. [194.85.161.2]) by smtp.gmail.com with ESMTPSA id l25-v6sm1459378ljj.30.2018.06.02.09.59.08 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sat, 02 Jun 2018 09:59:09 -0700 (PDT) From: Danil Iashchenko To: ffmpeg-devel@ffmpeg.org Date: Sat, 2 Jun 2018 19:58:22 +0300 Message-Id: <1527958702-17377-1-git-send-email-danyaschenko@gmail.com> X-Mailer: git-send-email 2.7.4 Subject: [FFmpeg-devel] [PATCH] libavfilter/opencl.h: Add macro for setting opencl kernel arguments X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Danil Iashchenko MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" --- libavfilter/opencl.h | 13 +++++++++++ libavfilter/vf_convolution_opencl.c | 43 ++++++------------------------------- 2 files changed, 19 insertions(+), 37 deletions(-) diff --git a/libavfilter/opencl.h b/libavfilter/opencl.h index c0a4519..16cdfbe 100644 --- a/libavfilter/opencl.h +++ b/libavfilter/opencl.h @@ -46,6 +46,19 @@ typedef struct OpenCLFilterContext { int output_height; } OpenCLFilterContext; + +/** + * set argument to specific Kernel. + * This macro relies on usage of local label "fail" and variable avctx. + */ +#define CL_SET_KERNEL_ARG(kernel, arg_num, type, arg) \ + cle = clSetKernelArg(kernel, arg_num, sizeof(type), arg); \ + if (cle != CL_SUCCESS) { \ + av_log(avctx, AV_LOG_ERROR, "Failed to set kernel' " \ + "%d argument. Error code:%d.\n", arg_num, cle); \ + goto fail; \ + } \ + /** * Return that all inputs and outputs support only AV_PIX_FMT_OPENCL. */ diff --git a/libavfilter/vf_convolution_opencl.c b/libavfilter/vf_convolution_opencl.c index 2df51e0..4d0ecf8 100644 --- a/libavfilter/vf_convolution_opencl.c +++ b/libavfilter/vf_convolution_opencl.c @@ -204,43 +204,12 @@ static int convolution_opencl_filter_frame(AVFilterLink *inlink, AVFrame *input) if (!dst) break; - cle = clSetKernelArg(ctx->kernel, 0, sizeof(cl_mem), &dst); - if (cle != CL_SUCCESS) { - av_log(avctx, AV_LOG_ERROR, "Failed to set kernel " - "destination image argument: %d.\n", cle); - goto fail; - } - cle = clSetKernelArg(ctx->kernel, 1, sizeof(cl_mem), &src); - if (cle != CL_SUCCESS) { - av_log(avctx, AV_LOG_ERROR, "Failed to set kernel " - "source image argument: %d.\n", cle); - goto fail; - } - cle = clSetKernelArg(ctx->kernel, 2, sizeof(cl_int), &ctx->dims[p]); - if (cle != CL_SUCCESS) { - av_log(avctx, AV_LOG_ERROR, "Failed to set kernel " - "matrix size argument: %d.\n", cle); - goto fail; - } - cle = clSetKernelArg(ctx->kernel, 3, sizeof(cl_mem), &ctx->matrix[p]); - if (cle != CL_SUCCESS) { - av_log(avctx, AV_LOG_ERROR, "Failed to set kernel " - "matrix argument: %d.\n", cle); - goto fail; - } - cle = clSetKernelArg(ctx->kernel, 4, sizeof(cl_float), &ctx->rdivs[p]); - if (cle != CL_SUCCESS) { - av_log(avctx, AV_LOG_ERROR, "Failed to set kernel " - "rdiv argument: %d.\n", cle); - goto fail; - } - cle = clSetKernelArg(ctx->kernel, 5, sizeof(cl_float), &ctx->biases[p]); - if (cle != CL_SUCCESS) { - av_log(avctx, AV_LOG_ERROR, "Failed to set kernel " - "bias argument: %d.\n", cle); - goto fail; - } - + CL_SET_KERNEL_ARG(ctx->kernel, 0, cl_mem, &dst); + CL_SET_KERNEL_ARG(ctx->kernel, 1, cl_mem, &src); + CL_SET_KERNEL_ARG(ctx->kernel, 2, cl_int, &ctx->dims[p]); + CL_SET_KERNEL_ARG(ctx->kernel, 3, cl_mem, &ctx->matrix[p]); + CL_SET_KERNEL_ARG(ctx->kernel, 4, cl_float, &ctx->rdivs[p]); + CL_SET_KERNEL_ARG(ctx->kernel, 5, cl_float, &ctx->biases[p]); err = ff_opencl_filter_work_size_from_image(avctx, global_work, output, p, 0); if (err < 0)