[PATCH 0/3] MR9766: include: Add ID3D12VideoProcessor in d3d12video.idl.
From: Biswapriyo Nath <nathbappai@gmail.com> Requied for https://github.com/FFmpeg/FFmpeg/commit/c4d22f2d2c27ca6a078c126fbd371ded47b6... --- include/d3d12video.idl | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/include/d3d12video.idl b/include/d3d12video.idl index b5e0fd64bbe..9c97b6df7d0 100644 --- a/include/d3d12video.idl +++ b/include/d3d12video.idl @@ -360,6 +360,26 @@ typedef struct D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS ConversionArguments; } D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS; +[ + uuid(304fdb32-bede-410a-8545-943ac6a46138), + object, + local, + pointer_default(unique) +] +interface ID3D12VideoProcessor : ID3D12Pageable +{ + UINT GetNodeMask(); + + UINT GetNumInputStreamDescs(); + + HRESULT GetInputStreamDescs( + [in] UINT num_input_stream_descs, + [out] D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *input_stream_descs + ); + + D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC GetOutputStreamDesc(); +} + [ uuid(3b60536e-ad29-4e64-a269-f853837e5e53), object, -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/9766
From: Biswapriyo Nath <nathbappai@gmail.com> Required for https://github.com/FFmpeg/FFmpeg/commit/c4d22f2d2c27ca6a078c126fbd371ded47b6... --- include/d3d12video.idl | 159 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 159 insertions(+) diff --git a/include/d3d12video.idl b/include/d3d12video.idl index 9c97b6df7d0..f910527b8ff 100644 --- a/include/d3d12video.idl +++ b/include/d3d12video.idl @@ -161,6 +161,12 @@ typedef enum D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS } D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS; cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS );") +typedef struct D3D12_VIDEO_PROCESS_ALPHA_BLENDING +{ + BOOL Enable; + FLOAT Alpha; +} D3D12_VIDEO_PROCESS_ALPHA_BLENDING; + typedef struct D3D12_VIDEO_PROCESS_LUMA_KEY { BOOL Enable; @@ -380,6 +386,78 @@ interface ID3D12VideoProcessor : ID3D12Pageable D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC GetOutputStreamDesc(); } +typedef enum D3D12_VIDEO_PROCESS_ORIENTATION +{ + D3D12_VIDEO_PROCESS_ORIENTATION_DEFAULT = 0, + D3D12_VIDEO_PROCESS_ORIENTATION_FLIP_HORIZONTAL = 1, + D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_90 = 2, + D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_90_FLIP_HORIZONTAL = 3, + D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_180 = 4, + D3D12_VIDEO_PROCESS_ORIENTATION_FLIP_VERTICAL = 5, + D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_270 = 6, + D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_270_FLIP_HORIZONTAL = 7, +} D3D12_VIDEO_PROCESS_ORIENTATION; + +typedef enum D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS +{ + D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_NONE = 0x0, + D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_FRAME_DISCONTINUITY = 0x1, + D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_FRAME_REPEAT = 0x2, +} D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS; +cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS)") + +typedef struct D3D12_VIDEO_PROCESS_REFERENCE_SET +{ + UINT NumPastFrames; + ID3D12Resource **ppPastFrames; + UINT *pPastSubresources; + UINT NumFutureFrames; + ID3D12Resource **ppFutureFrames; + UINT *pFutureSubresources; +} D3D12_VIDEO_PROCESS_REFERENCE_SET; + +typedef struct D3D12_VIDEO_PROCESS_TRANSFORM +{ + D3D12_RECT SourceRectangle; + D3D12_RECT DestinationRectangle; + D3D12_VIDEO_PROCESS_ORIENTATION Orientation; +} D3D12_VIDEO_PROCESS_TRANSFORM; + +typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE +{ + UINT OutputIndex; + UINT InputFrameOrField; +} D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE; + +typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM +{ + ID3D12Resource *pTexture2D; + UINT Subresource; + D3D12_VIDEO_PROCESS_REFERENCE_SET ReferenceSet; +} D3D12_VIDEO_PROCESS_INPUT_STREAM; + +typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS +{ + D3D12_VIDEO_PROCESS_INPUT_STREAM InputStream[D3D12_VIDEO_PROCESS_STEREO_VIEWS]; + D3D12_VIDEO_PROCESS_TRANSFORM Transform; + D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS Flags; + D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE RateInfo; + INT FilterLevels[D3D12_VIDEO_PROCESS_MAX_FILTERS]; + D3D12_VIDEO_PROCESS_ALPHA_BLENDING AlphaBlending; +} D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS; + +typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM +{ + ID3D12Resource *pTexture2D; + UINT Subresource; +} D3D12_VIDEO_PROCESS_OUTPUT_STREAM; + +typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS +{ + D3D12_VIDEO_PROCESS_OUTPUT_STREAM OutputStream[D3D12_VIDEO_PROCESS_STEREO_VIEWS]; + D3D12_RECT TargetRectangle; +} D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS; + [ uuid(3b60536e-ad29-4e64-a269-f853837e5e53), object, @@ -460,6 +538,87 @@ interface ID3D12VideoDecodeCommandList : ID3D12CommandList ); } +[ + uuid(aeb2543a-167f-4682-acc8-d159ed4a6209), + object, + local, + pointer_default(unique) +] +interface ID3D12VideoProcessCommandList : ID3D12CommandList +{ + HRESULT Close(); + + HRESULT Reset( + [in] ID3D12CommandAllocator *allocator + ); + + void ClearState(); + + void ResourceBarrier( + [in] UINT num_barriers, + [in] const D3D12_RESOURCE_BARRIER *barriers + ); + + void DiscardResource( + [in] ID3D12Resource *resource, + [in, optional] const D3D12_DISCARD_REGION *region + ); + + void BeginQuery( + [in] ID3D12QueryHeap *query_heap, + [in] D3D12_QUERY_TYPE type, + [in] UINT index + ); + + void EndQuery( + [in] ID3D12QueryHeap *query_heap, + [in] D3D12_QUERY_TYPE type, + [in] UINT index + ); + + void ResolveQueryData( + [in] ID3D12QueryHeap *query_heap, + [in] D3D12_QUERY_TYPE type, + [in] UINT start_index, + [in] UINT num_queries, + [in] ID3D12Resource *destination_buffer, + [in] UINT64 aligned_destination_buffer_offset + ); + + void SetPredication( + [in, optional] ID3D12Resource *buffer, + [in] UINT64 aligned_buffer_offset, + [in] D3D12_PREDICATION_OP operation + ); + + void SetMarker( + [in] UINT metadata, + [in] const void *data, + [in] UINT size + ); + + void BeginEvent( + [in] UINT metadata, + [in] const void *data, + [in] UINT size + ); + + void EndEvent(); + + void ProcessFrames( + [in] ID3D12VideoProcessor *video_processor, + [in] const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *output_arguments, + [in] UINT num_input_streams, + [in] const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *input_arguments + ); + + void WriteBufferImmediate( + [in] UINT count, + [in] const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *params, + [in, optional] const D3D12_WRITEBUFFERIMMEDIATE_MODE *modes + ); +} + typedef struct D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM { UINT64 Offset; -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/9766
From: Biswapriyo Nath <nathbappai@gmail.com> Required for https://github.com/FFmpeg/FFmpeg/commit/c4d22f2d2c27ca6a078c126fbd371ded47b6... --- include/d3d12video.idl | 89 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) diff --git a/include/d3d12video.idl b/include/d3d12video.idl index f910527b8ff..51929cd316e 100644 --- a/include/d3d12video.idl +++ b/include/d3d12video.idl @@ -37,6 +37,19 @@ typedef enum D3D12_VIDEO_FRAME_STEREO_FORMAT D3D12_VIDEO_FRAME_STEREO_FORMAT_SEPARATE = 4, } D3D12_VIDEO_FRAME_STEREO_FORMAT; +typedef struct D3D12_VIDEO_FORMAT +{ + DXGI_FORMAT Format; + DXGI_COLOR_SPACE_TYPE ColorSpace; +} D3D12_VIDEO_FORMAT; + +typedef struct D3D12_VIDEO_SAMPLE +{ + UINT Width; + UINT Height; + D3D12_VIDEO_FORMAT Format; +} D3D12_VIDEO_SAMPLE; + typedef enum D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE { D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE_NONE = 0, @@ -319,6 +332,20 @@ typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT D3D12_VIDEO_DECODE_TIER DecodeTier; } D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT; +typedef enum D3D12_VIDEO_SCALE_SUPPORT_FLAGS +{ + D3D12_VIDEO_SCALE_SUPPORT_FLAG_NONE = 0x0, + D3D12_VIDEO_SCALE_SUPPORT_FLAG_POW2_ONLY = 0x1, + D3D12_VIDEO_SCALE_SUPPORT_FLAG_EVEN_DIMENSIONS_ONLY = 0x2, +} D3D12_VIDEO_SCALE_SUPPORT_FLAGS; +cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_SCALE_SUPPORT_FLAGS)") + +typedef struct D3D12_VIDEO_SCALE_SUPPORT +{ + D3D12_VIDEO_SIZE_RANGE OutputSizeRange; + D3D12_VIDEO_SCALE_SUPPORT_FLAGS Flags; +} D3D12_VIDEO_SCALE_SUPPORT; + typedef struct D3D12_VIDEO_DECODE_FRAME_ARGUMENT { D3D12_VIDEO_DECODE_ARGUMENT_TYPE Type; @@ -386,6 +413,34 @@ interface ID3D12VideoProcessor : ID3D12Pageable D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC GetOutputStreamDesc(); } +typedef enum D3D12_VIDEO_PROCESS_FEATURE_FLAGS +{ + D3D12_VIDEO_PROCESS_FEATURE_FLAG_NONE = 0x0, + D3D12_VIDEO_PROCESS_FEATURE_FLAG_ALPHA_FILL = 0x1, + D3D12_VIDEO_PROCESS_FEATURE_FLAG_LUMA_KEY = 0x2, + D3D12_VIDEO_PROCESS_FEATURE_FLAG_STEREO = 0x4, + D3D12_VIDEO_PROCESS_FEATURE_FLAG_ROTATION = 0x8, + D3D12_VIDEO_PROCESS_FEATURE_FLAG_FLIP = 0x10, + D3D12_VIDEO_PROCESS_FEATURE_FLAG_ALPHA_BLENDING = 0x20, + D3D12_VIDEO_PROCESS_FEATURE_FLAG_PIXEL_ASPECT_RATIO = 0x40, +} D3D12_VIDEO_PROCESS_FEATURE_FLAGS; +cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_FEATURE_FLAGS)") + +typedef enum D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS +{ + D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_NONE = 0x0, + D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_DENOISE = 0x01, + D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_DERINGING = 0x02, + D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_EDGE_ENHANCEMENT = 0x04, + D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_COLOR_CORRECTION = 0x08, + D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_FLESH_TONE_MAPPING = 0x10, + D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_IMAGE_STABILIZATION = 0x20, + D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_SUPER_RESOLUTION = 0x40, + D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_ANAMORPHIC_SCALING = 0x80, + D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_CUSTOM = 0x80000000, +} D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS; +cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS)") + typedef enum D3D12_VIDEO_PROCESS_ORIENTATION { D3D12_VIDEO_PROCESS_ORIENTATION_DEFAULT = 0, @@ -406,6 +461,40 @@ typedef enum D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS } D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS; cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS)") +typedef struct D3D12_VIDEO_PROCESS_FILTER_RANGE +{ + INT Minimum; + INT Maximum; + INT Default; + FLOAT Multiplier; +} D3D12_VIDEO_PROCESS_FILTER_RANGE; + +typedef enum D3D12_VIDEO_PROCESS_SUPPORT_FLAGS +{ + D3D12_VIDEO_PROCESS_SUPPORT_FLAG_NONE = 0x0, + D3D12_VIDEO_PROCESS_SUPPORT_FLAG_SUPPORTED = 0x1, +} D3D12_VIDEO_PROCESS_SUPPORT_FLAGS; +cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_SUPPORT_FLAGS)") + +typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_SUPPORT +{ + UINT NodeIndex; + D3D12_VIDEO_SAMPLE InputSample; + D3D12_VIDEO_FIELD_TYPE InputFieldType; + D3D12_VIDEO_FRAME_STEREO_FORMAT InputStereoFormat; + DXGI_RATIONAL InputFrameRate; + D3D12_VIDEO_FORMAT OutputFormat; + D3D12_VIDEO_FRAME_STEREO_FORMAT OutputStereoFormat; + DXGI_RATIONAL OutputFrameRate; + D3D12_VIDEO_PROCESS_SUPPORT_FLAGS SupportFlags; + D3D12_VIDEO_SCALE_SUPPORT ScaleSupport; + D3D12_VIDEO_PROCESS_FEATURE_FLAGS FeatureSupport; + D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceSupport; + D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS AutoProcessingSupport; + D3D12_VIDEO_PROCESS_FILTER_FLAGS FilterSupport; + D3D12_VIDEO_PROCESS_FILTER_RANGE FilterRangeSupport[D3D12_VIDEO_PROCESS_MAX_FILTERS]; +} D3D12_FEATURE_DATA_VIDEO_PROCESS_SUPPORT; + typedef struct D3D12_VIDEO_PROCESS_REFERENCE_SET { UINT NumPastFrames; -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/9766
participants (2)
-
Biswapriyo Nath -
Biswapriyo Nath (@Biswa96)