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 49DC14BB73 for ; Wed, 23 Jul 2025 12:10:36 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id E7C31687BE5; Wed, 23 Jul 2025 15:10:31 +0300 (EEST) Received: from mail-ej1-f44.google.com (mail-ej1-f44.google.com [209.85.218.44]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id 5E1BE687BE5 for ; Wed, 23 Jul 2025 15:10:24 +0300 (EEST) Received: by mail-ej1-f44.google.com with SMTP id a640c23a62f3a-ae3a604b43bso1104243166b.0 for ; Wed, 23 Jul 2025 05:10:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1753272623; x=1753877423; 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=Nuh0l6PP1qj6LZ73IVztoEpfnCovbD7p5D40b9oX1xw=; b=kt0q39dyk0bLWeA1okXlD13dOFv0GCvqQ0hqmCcGoOQXehTtByUAUOvy4dr1itbyWn I00kVtfqy/kURT72pp2VR0T3S+sEJ2PFa4xwaBH1Fu59X+gbSYStKjxD98GI6u7MGzsL uskO3bPKcIyRB2XT22INUiztmS6fKOjMjkOJ5xsn1rFYltwlvehsIk6ijusKSsmWnW9t j1zJTbJfY+S2mSMniZR0gOSauyaI3uX3v9eIRujpKPNUedPu3jOzFnqxuIVFcEdQOoAC 1mTj+ajvk9+fbyMCUCeJxSfOW/k9k9OZ2aoq1BQ6mXh0uF5KjO5cgJzAPfIyKfi0zl4S GL0Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1753272623; x=1753877423; 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=Nuh0l6PP1qj6LZ73IVztoEpfnCovbD7p5D40b9oX1xw=; b=DxTsYvJzT5v0DDVtjHDE1IeMCzYgp+35KAwsBQyvfaeOhNkJjmVK7TZJl4r2Hmeze6 jin49zfhKNtp6lNFvMSIn/cxSMvevt2xHENBBYHnB4ibdKJTscG4h3/mu2g484qHfQ0a N9DiFkZgI2arh+mVSdfMyVUJKJGq1EPJJ4v2vBY24hCfbiTqqYapBMU2XvClMojzK6DO y0bae6276itqceVkqlul376oeOdh7/i5fz9CokYyGuEj4o2hKtGuVJvmhjZV347be9gY 4bfUor/dzzU75uFF6820LoyR/15XR4tkBW+57cpQtihXPcF+lZ4OglkwsNS/VETMXb/U iZww== X-Gm-Message-State: AOJu0Yy73A0OkJBB1JBZIYESA5aeamDMFuS/4625s8owY0nPa6FDV00p QIZ4nXHoFnhBGecKkEETMAAR2Nr6geiVTB3D7FM3m2Hk/FBc+IJXfw5KKkA/OQ4xoWB16w== X-Gm-Gg: ASbGncuaBQcjXPPqEzt4zXVi/oQ2kaNCRmeCRadWkjJ/RAP3RP7xM6yrooZZXjiECgA G0A4m0RMGUqJoQGLWLp8FKczb/alqe/gPQ9SI4JD62Yqf6UIZ3RreWlNv1J6CoLwiw+LVBh6vDi +bxe61+SlC3513r7DdhFhwbznaychwIszPC5KZsb26G2S2skAUbFDD3HpHCGl4y0HH6NU8XunuE RUeSAOHpszsg1hToGSTtTBcQP9vHzLZmuY+uvpYSzw4Ac5gxTZL8LL/DqfRHymxtaNaq7nCBLvC XkeASokoKH2XXisk040j6115UWLyoPvUSGKArieIu66z5JLlzTfpI3urjyTr9mkZnp3amMmd6YW OLU6O74oZazM5Jeq0vWitdJf0O0F2EMKm0A8STWHELbPxuQ7hJh7CMTzjFo644ngH9E6GdQ== X-Google-Smtp-Source: AGHT+IEAnAQF6x4U6sTcRbbRWOWKcob9hahuwmfmKWStLOntfAgE2+evvUXsfgqWGRCSrArZypvuEg== X-Received: by 2002:a17:906:9fc4:b0:ae6:df9e:736c with SMTP id a640c23a62f3a-af2f6c0ab6cmr238754766b.21.1753272622816; Wed, 23 Jul 2025 05:10:22 -0700 (PDT) Received: from localhost.localdomain ([87.116.182.236]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-aec6cad3838sm1038694166b.141.2025.07.23.05.10.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 23 Jul 2025 05:10:22 -0700 (PDT) From: Dmitrii Ovchinnikov To: ffmpeg-devel@ffmpeg.org Date: Wed, 23 Jul 2025 14:10:06 +0200 Message-ID: <20250723121006.1047-1-ovchinnikov.dmitrii@gmail.com> X-Mailer: git-send-email 2.47.1.windows.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v3] avutil/hwcontext_d3d12va: added resource and heap flags to DeviceContext 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: --- libavutil/hwcontext_d3d12va.c | 17 ++++++++++++++++- libavutil/hwcontext_d3d12va.h | 11 +++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/libavutil/hwcontext_d3d12va.c b/libavutil/hwcontext_d3d12va.c index 6507cf69c1..dca8ddc0c3 100644 --- a/libavutil/hwcontext_d3d12va.c +++ b/libavutil/hwcontext_d3d12va.c @@ -254,7 +254,7 @@ static AVBufferRef *d3d12va_pool_alloc(void *opaque, size_t size) if (!frame) return NULL; - if (FAILED(ID3D12Device_CreateCommittedResource(device_hwctx->device, &props, D3D12_HEAP_FLAG_NONE, &desc, + if (FAILED(ID3D12Device_CreateCommittedResource(device_hwctx->device, &props, hwctx->heap_flags, &desc, D3D12_RESOURCE_STATE_COMMON, NULL, &IID_ID3D12Resource, (void **)&frame->texture))) { av_log(ctx, AV_LOG_ERROR, "Could not create the texture\n"); goto fail; @@ -281,6 +281,7 @@ fail: static int d3d12va_frames_init(AVHWFramesContext *ctx) { AVD3D12VAFramesContext *hwctx = ctx->hwctx; + AVD3D12VADeviceContext *device_hwctx = ctx->device_ctx->hwctx; int i; for (i = 0; i < FF_ARRAY_ELEMS(supported_formats); i++) { @@ -298,6 +299,9 @@ static int d3d12va_frames_init(AVHWFramesContext *ctx) return AVERROR(EINVAL); } + hwctx->flags |= device_hwctx->resource_flags; + hwctx->heap_flags |= device_hwctx->heap_flags; + ffhwframesctx(ctx)->pool_internal = av_buffer_pool_init2(sizeof(AVD3D12VAFrame), ctx, d3d12va_pool_alloc, NULL); @@ -673,6 +677,17 @@ static int d3d12va_device_create(AVHWDeviceContext *hwdev, const char *device, } } + if (av_dict_get(opts, "UAV", NULL, 0)) + ctx->resource_flags |= D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS; + + if (av_dict_get(opts, "RTV", NULL, 0)) + ctx->resource_flags |= D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET; + + ctx->heap_flags = D3D12_HEAP_FLAG_NONE; + + if (av_dict_get(opts, "SHARED", NULL, 0)) + ctx->heap_flags |= D3D12_HEAP_FLAG_SHARED; + return 0; } diff --git a/libavutil/hwcontext_d3d12va.h b/libavutil/hwcontext_d3d12va.h index 212a6a6146..0d3a4cc1ec 100644 --- a/libavutil/hwcontext_d3d12va.h +++ b/libavutil/hwcontext_d3d12va.h @@ -75,6 +75,16 @@ typedef struct AVD3D12VADeviceContext { void (*lock)(void *lock_ctx); void (*unlock)(void *lock_ctx); void *lock_ctx; + /** + * Resource flags and Heap flags to be applied to D3D12 resources allocated + * for frames using this device context. + * + * Can be set by the user before initialization via av_hwdevice_ctx_create(). + * + * These apply globally to all frames allocated from this device context. + */ + D3D12_RESOURCE_FLAGS resource_flags; + D3D12_HEAP_FLAGS heap_flags; } AVD3D12VADeviceContext; /** @@ -137,6 +147,7 @@ typedef struct AVD3D12VAFramesContext { * @see https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d12_resource_flags */ D3D12_RESOURCE_FLAGS flags; + D3D12_HEAP_FLAGS heap_flags; } AVD3D12VAFramesContext; #endif /* AVUTIL_HWCONTEXT_D3D12VA_H */ -- 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".