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 AE9F64CA7C for ; Thu, 26 Jun 2025 14:11:55 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id D49DA68E166; Thu, 26 Jun 2025 17:11:51 +0300 (EEST) Received: from mail-ej1-f48.google.com (mail-ej1-f48.google.com [209.85.218.48]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id 9EE6D68DD5C for ; Thu, 26 Jun 2025 17:11:44 +0300 (EEST) Received: by mail-ej1-f48.google.com with SMTP id a640c23a62f3a-ade33027bcfso165565266b.1 for ; Thu, 26 Jun 2025 07:11:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750947103; x=1751551903; 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=9rfVQ7GE+v2dzvauLCFMs4lIiAYbCMGiWTmG+QT4/rM=; b=IBtpfdoQn/uAJjrTZm485jFnuDxfw8fLfhbn3uF4t8K+QOmTf8HZeitkmwmsEVov5N 9uLSPjupmcc7GEJsbRKGryPw1iZaq3fldCBy81GA1ejBHPygRamsgV/4Ym5Zinj9KjL4 5vdTNQS+VvAVWt2KSyoqniiYluOQZZlfMEYOJbsKUQfnVdJnSPQPJijYTuwYTRvwRkZp tldX1q1NgBgkXcgLjzqZNabDVprxxot89rGvnyb8W7+OLULbznv/tnmmU39EBCwyrgaC nbBelcQFjudeysJiSlt/kQppNbJOphf9xIaQDjEFxW7yuYpVu1BBpzZ7PMtfYq8YduR9 bi7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750947103; x=1751551903; 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=9rfVQ7GE+v2dzvauLCFMs4lIiAYbCMGiWTmG+QT4/rM=; b=mNjI73byLzblZ6h+8T9arKlenEli58MJgpGbMjRbsyOVKL9DQFnOmKjBqGe4Ir/sWb dzjEjydGLKsfFjKWGbl9xfeP4reSa9zLusGu/AguomRRcKd1daGlqCG8CrJ6cdFD4ip8 +FD+Zm8XO1m2JQLlIeyx8f8KM0dn2StP3ITApV6uxSpSnqw4rd0umOKZCIhVCPTojfOv QVNTDkswX64C7RRRU5+iNkev3Q1Xbu+NVdbgflMCya2ayC7pD9kSSC71lVZQ7BklS3xp /mPmZf78B8JJKP3sY2PE7GI/Tcg4Bmkx4gryjoiE4TK5Kh7N/Q7RCPIBSV/C/vzJO4xt BPaQ== X-Gm-Message-State: AOJu0YxVhZlqJUD+axY69KSQqalZMtgmupSIxOXmc7diZK+BwtdQGvB8 tOtGve9FkCW2OKADLWdNG8qXhVdHZgFadQSPslAMw+t1MaMbnKtKoe3iA2e7I2JGC/c= X-Gm-Gg: ASbGncveZMQhYcNXYEuF6+YH1VbmMW35fVlsbxwZCnCnMYlRc/u/koRK5kHiBlB0JuM mURH4Ms83YSXPqdOQ5fijlQfuRVW8eFJLT/oQI6sHPfkrSjKKyehiqjXW8va0QVurhEAEhB2Hz0 zog7nVJPRMGSa2kr/nIQbVff2TNTeIb7xNpwt6fmAWq6Tkun/8AlWLaIFToXFI2KOTvWTv4Lrn1 vQrbDx7BzhtpesyN73ZICG+MBqEvyrXPakpBZvR7XT5XZsRz/Om2yPreYYcO/Kgon1aAMS5rkCF ARkIg/4gK6QPZQ2nKRDgqFWZkPC27gMJ9nU8BPmtsA6ynBP3rLY4hnMksoPi/yedWxz61oRxCvP bdhAfP2JbJXnRV5i8Y7MVHyc= X-Google-Smtp-Source: AGHT+IEolz2/uKhNRZkdb4kW+jwF4FTFkLsh/+gdFP0cP2ZV0zR1TJe3Xz5fmDLIA6wIQVX+KN7XRQ== X-Received: by 2002:a17:907:9690:b0:ae0:de30:8569 with SMTP id a640c23a62f3a-ae0de30874emr176366866b.1.1750947103298; Thu, 26 Jun 2025 07:11:43 -0700 (PDT) Received: from localhost.localdomain ([87.116.182.236]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ae2235b134bsm4351566b.171.2025.06.26.07.11.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Jun 2025 07:11:42 -0700 (PDT) From: Dmitrii Ovchinnikov To: ffmpeg-devel@ffmpeg.org Date: Thu, 26 Jun 2025 16:11:29 +0200 Message-ID: <20250626141129.164-1-ovchinnikov.dmitrii@gmail.com> X-Mailer: git-send-email 2.47.1.windows.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2] avutil/hwcontext_d3d12va: added resource Flags support to command line 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 | 22 +++++++++++++++++++++- libavutil/hwcontext_d3d12va.h | 6 ++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/libavutil/hwcontext_d3d12va.c b/libavutil/hwcontext_d3d12va.c index 6507cf69c1..b2b58ac6f8 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->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,22 @@ static int d3d12va_device_create(AVHWDeviceContext *hwdev, const char *device, } } + ctx->flags = 0; + ctx->heap_flags = 0; + + // "shader_resouce" already enabled by default. + + if (av_dict_get(opts, "uav_res", NULL, 0)) + ctx->flags |= D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS; + + if (av_dict_get(opts, "render_target_res", NULL, 0)) + ctx->flags |= D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET; + + ctx->heap_flags = D3D12_HEAP_FLAG_NONE; + + if (av_dict_get(opts, "shared_res", 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..2075bd4a48 100644 --- a/libavutil/hwcontext_d3d12va.h +++ b/libavutil/hwcontext_d3d12va.h @@ -75,6 +75,11 @@ typedef struct AVD3D12VADeviceContext { void (*lock)(void *lock_ctx); void (*unlock)(void *lock_ctx); void *lock_ctx; + /** + * Need to pass value to frames context from command line + */ + D3D12_RESOURCE_FLAGS flags; + D3D12_HEAP_FLAGS heap_flags; } AVD3D12VADeviceContext; /** @@ -137,6 +142,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".