From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id 394494CDA4 for ; Wed, 28 May 2025 14:32:24 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id A4D1968D736; Wed, 28 May 2025 17:32:19 +0300 (EEST) Received: from mail-wr1-f44.google.com (mail-wr1-f44.google.com [209.85.221.44]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id 9FC3B68C1C1 for ; Wed, 28 May 2025 17:32:12 +0300 (EEST) Received: by mail-wr1-f44.google.com with SMTP id ffacd0b85a97d-3a4c4e6a0ccso3434710f8f.3 for ; Wed, 28 May 2025 07:32:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1748442731; x=1749047531; 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=jTikYPz4IRBdPLNOy3Y8QTzkutV1fNw4zAIh97/Lv/g=; b=dPkxkw2j+beVsGRHHe4tZ71I6ZGDU493Ev7FKRRysKIwks8TXb5QqNeiDoh2ZatWNd vmt5/3Hpg62a2awDCo1BeiLzxHasHlG0kddlS1wG1tO5X73s72LOeBvXQcq5nGBzU2zt 7qTXSTYFHh2mtCGTEzYRMHTWk8b64PErIYu/5/84d+zkKq6jBzFzRPQdFQk2gyaitwLW jeeyLSvI5Skf3e8uyLsg2SqDrbNu9NGT0Fs9DlM8mjGkehvi8S6VthWji6Sov0URumb4 2Ine0NOtH7OMkZnUwVjGuE+Qh8CmIJvaBKbSPdJUi+GZP9UgIP3ojbqxUvyDlz7JcQWR 31VA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748442731; x=1749047531; 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=jTikYPz4IRBdPLNOy3Y8QTzkutV1fNw4zAIh97/Lv/g=; b=Rih5IKdgJCscNMjmXA0w5glPsJh51bA6a1UYy6VC/en5xZzPUyPNRoO24/fanun0eN 36ylHK1a3zywiYxhMqc/j82KYJEqLjQI1CLLIL2gGVCohCfpNvY4nJ0YfQ2PaHANcG9a k2fUTKk18gL2ItovvR/ZoZ6IAHHanawygdfs4Zmh1WeCauVvM01b0cxBuZ0Md2dy7kS5 l9psKwYBw9erLcV4UpflRSGOxel9d43aRv6gt1G/VMViZrE7/iL22AWFVcspcboMVSNR RD92z26kX3lTv6U/bftTWsJI+RoAyDbjAdj2nLzf73HzAVDmG/WLrm/lGRwBAVpjCWlR 0b8g== X-Gm-Message-State: AOJu0YxBuSinL3wvElHGTdyM2cDar/YAQhe33T8n63HEIgOyMUdi9uvP 89Rt2Q0dDJ5eUyoS4euS7S67nTEATGp6DVkVeYG97iJPoNkP7WAChMmdCgoPD9ehxb4= X-Gm-Gg: ASbGncuS9oG8iz+Jk5UcdwZNFzbOiVNoHH/SKgyxu1ZP4iezckGXj05OIGa2ISMsv65 IQKqfkvYYzKmNpO5dR4NT5n31nNB0tYci8OkKZtE9ySP/WxOm/ZU1PmyQnqoWwsp5X7BzJ3py5e /ze4ZChtU/mQ0x7WjFQtQpDbK3BvF5TdOqOwzapcY+WDGot/DHhuIio+1KKJJacx+NgSZA1lsru 6lTVzGyByOVSNSANu80+qB+/RoMcmkfvDI3LlADgsBodo6wKsHZISKE+XleDEu5Mu31fYnyTXfV SjAQWYc5uHr+FtZh5cqRwSugGfS73ilUquUVNZm33XBbr1ZN2fBG5HawCi9qgxoGWnA9uX4/II+ cJPmwxnEr0pMY X-Google-Smtp-Source: AGHT+IHb9NMelUDyG0NHGjFXEsYNnRL+xrEDLPsIW3fCDwQil+IwkM3kp5tQh2+ulzkoW5dRLQJGDw== X-Received: by 2002:a05:6000:2505:b0:3a0:b1ff:8542 with SMTP id ffacd0b85a97d-3a4cb449af3mr12840363f8f.8.1748442731322; Wed, 28 May 2025 07:32:11 -0700 (PDT) Received: from localhost.localdomain ([87.116.163.103]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a4eacd8eeasm1656467f8f.62.2025.05.28.07.32.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 28 May 2025 07:32:10 -0700 (PDT) From: Dmitrii Ovchinnikov To: ffmpeg-devel@ffmpeg.org Date: Wed, 28 May 2025 16:31:52 +0200 Message-ID: <20250528143153.1784-1-ovchinnikov.dmitrii@gmail.com> X-Mailer: git-send-email 2.47.1.windows.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/2] avutil/hwcontext_d3d11va: make D3D11 surface BindFlags & MiscFlags configurable 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: Dmitrii Ovchinnikov Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: Certain components require ID3D11/ID3D12 textures to be created with additional BindFlags or MiscFlags. FFmpeg currently provides no mechanism to configure these flags externally, leaving no way to satisfy such components without patching the library. This patch adds private device options that can be passed through shader_resource=1 adds D3D11_BIND_SHADER_RESOURCE uav_resource=1 adds D3D11_BIND_UNORDERED_ACCESS render_target_resource=1 adds D3D11_BIND_RENDER_TARGET shared_resource=1 adds D3D11_RESOURCE_MISC_SHARED --- libavutil/hwcontext_d3d11va.c | 17 +++++++++++++++++ libavutil/hwcontext_d3d11va.h | 5 +++++ 2 files changed, 22 insertions(+) diff --git a/libavutil/hwcontext_d3d11va.c b/libavutil/hwcontext_d3d11va.c index 1a047ce57b..fba9597392 100644 --- a/libavutil/hwcontext_d3d11va.c +++ b/libavutil/hwcontext_d3d11va.c @@ -288,6 +288,9 @@ static int d3d11va_frames_init(AVHWFramesContext *ctx) return AVERROR(EINVAL); } + hwctx->BindFlags |= device_hwctx->BindFlags; + hwctx->MiscFlags |= device_hwctx->MiscFlags; + texDesc = (D3D11_TEXTURE2D_DESC){ .Width = ctx->width, .Height = ctx->height, @@ -705,6 +708,20 @@ static int d3d11va_device_create(AVHWDeviceContext *ctx, const char *device, } } #endif + device_hwctx->BindFlags = 0; + device_hwctx->MiscFlags = 0; + + if (av_dict_get(opts, "shader_resouce", NULL, 0)) + device_hwctx->BindFlags |= D3D11_BIND_SHADER_RESOURCE; + + if (av_dict_get(opts, "uav_resource", NULL, 0)) + device_hwctx->BindFlags |= D3D11_BIND_UNORDERED_ACCESS; + + if (av_dict_get(opts, "render_target_resource", NULL, 0)) + device_hwctx->BindFlags |= D3D11_BIND_RENDER_TARGET; + + if (av_dict_get(opts, "shared_resource", NULL, 0)) + device_hwctx->MiscFlags |= D3D11_RESOURCE_MISC_SHARED; return 0; } diff --git a/libavutil/hwcontext_d3d11va.h b/libavutil/hwcontext_d3d11va.h index 77d2d72f1b..e4e1f1095d 100644 --- a/libavutil/hwcontext_d3d11va.h +++ b/libavutil/hwcontext_d3d11va.h @@ -94,6 +94,11 @@ typedef struct AVD3D11VADeviceContext { void (*lock)(void *lock_ctx); void (*unlock)(void *lock_ctx); void *lock_ctx; + /** + * Need to pass value to frames context from command line + */ + UINT BindFlags; + UINT MiscFlags; } AVD3D11VADeviceContext; /** -- 2.47.1.windows.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".