Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
* [FFmpeg-devel] [PATCH] avutil/hwcontext_vulkan: fix run on macOS
@ 2023-10-30  8:17 Zhao Zhili
  2023-11-07 11:24 ` Zhao Zhili
  0 siblings, 1 reply; 6+ messages in thread
From: Zhao Zhili @ 2023-10-30  8:17 UTC (permalink / raw)
  To: ffmpeg-devel; +Cc: Zhao Zhili

From: Zhao Zhili <zhilizhao@tencent.com>

VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME is required on macOS,
and VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR flag should
be set.
---
 libavutil/hwcontext_vulkan.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/libavutil/hwcontext_vulkan.c b/libavutil/hwcontext_vulkan.c
index 8481427b42..9fbf61ee70 100644
--- a/libavutil/hwcontext_vulkan.c
+++ b/libavutil/hwcontext_vulkan.c
@@ -405,7 +405,6 @@ typedef struct VulkanOptExtension {
 } VulkanOptExtension;
 
 static const VulkanOptExtension optional_instance_exts[] = {
-    /* Pointless, here avoid zero-sized structs */
     { VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME,          FF_VK_EXT_NO_FLAG                },
 };
 
@@ -784,6 +783,14 @@ static int create_instance(AVHWDeviceContext *ctx, AVDictionary *opts)
         inst_props.pNext = &validation_features;
     }
 
+    for (int i = 0; i < inst_props.enabledExtensionCount; i++) {
+        if (!strcmp(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME,
+                    inst_props.ppEnabledExtensionNames[i])) {
+            inst_props.flags |= VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR;
+            break;
+        }
+    }
+
     /* Try to create the instance */
     ret = vk->CreateInstance(&inst_props, hwctx->alloc, &hwctx->inst);
 
-- 
2.42.0

_______________________________________________
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".

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [FFmpeg-devel] [PATCH] avutil/hwcontext_vulkan: fix run on macOS
  2023-10-30  8:17 [FFmpeg-devel] [PATCH] avutil/hwcontext_vulkan: fix run on macOS Zhao Zhili
@ 2023-11-07 11:24 ` Zhao Zhili
  2023-11-07 11:42   ` Lynne
  0 siblings, 1 reply; 6+ messages in thread
From: Zhao Zhili @ 2023-11-07 11:24 UTC (permalink / raw)
  To: ffmpeg-devel

Ping.

> 在 2023年10月30日,下午4:17,Zhao Zhili <quinkblack@foxmail.com> 写道:
> 
> From: Zhao Zhili <zhilizhao@tencent.com>
> 
> VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME is required on macOS,
> and VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR flag should
> be set.
> ---
> libavutil/hwcontext_vulkan.c | 9 ++++++++-
> 1 file changed, 8 insertions(+), 1 deletion(-)
> 
> diff --git a/libavutil/hwcontext_vulkan.c b/libavutil/hwcontext_vulkan.c
> index 8481427b42..9fbf61ee70 100644
> --- a/libavutil/hwcontext_vulkan.c
> +++ b/libavutil/hwcontext_vulkan.c
> @@ -405,7 +405,6 @@ typedef struct VulkanOptExtension {
> } VulkanOptExtension;
> 
> static const VulkanOptExtension optional_instance_exts[] = {
> -    /* Pointless, here avoid zero-sized structs */
>     { VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME,          FF_VK_EXT_NO_FLAG                },
> };
> 
> @@ -784,6 +783,14 @@ static int create_instance(AVHWDeviceContext *ctx, AVDictionary *opts)
>         inst_props.pNext = &validation_features;
>     }
> 
> +    for (int i = 0; i < inst_props.enabledExtensionCount; i++) {
> +        if (!strcmp(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME,
> +                    inst_props.ppEnabledExtensionNames[i])) {
> +            inst_props.flags |= VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR;
> +            break;
> +        }
> +    }
> +
>     /* Try to create the instance */
>     ret = vk->CreateInstance(&inst_props, hwctx->alloc, &hwctx->inst);
> 
> --
> 2.42.0
> 

_______________________________________________
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".

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [FFmpeg-devel] [PATCH] avutil/hwcontext_vulkan: fix run on macOS
  2023-11-07 11:24 ` Zhao Zhili
@ 2023-11-07 11:42   ` Lynne
  2023-11-07 12:46     ` epirat07
  2023-11-07 15:44     ` [FFmpeg-devel] [PATCH v2] " Zhao Zhili
  0 siblings, 2 replies; 6+ messages in thread
From: Lynne @ 2023-11-07 11:42 UTC (permalink / raw)
  To: FFmpeg development discussions and patches

Nov 7, 2023, 12:25 by quinkblack@foxmail.com:

> Ping.
>
>> 在 2023年10月30日,下午4:17,Zhao Zhili <quinkblack@foxmail.com> 写道:
>>
>> From: Zhao Zhili <zhilizhao@tencent.com>
>>
>> VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME is required on macOS,
>> and VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR flag should
>> be set.
>> ---
>> libavutil/hwcontext_vulkan.c | 9 ++++++++-
>> 1 file changed, 8 insertions(+), 1 deletion(-)
>>
>> diff --git a/libavutil/hwcontext_vulkan.c b/libavutil/hwcontext_vulkan.c
>> index 8481427b42..9fbf61ee70 100644
>> --- a/libavutil/hwcontext_vulkan.c
>> +++ b/libavutil/hwcontext_vulkan.c
>> @@ -405,7 +405,6 @@ typedef struct VulkanOptExtension {
>> } VulkanOptExtension;
>>
>> static const VulkanOptExtension optional_instance_exts[] = {
>> -    /* Pointless, here avoid zero-sized structs */
>>  { VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME,          FF_VK_EXT_NO_FLAG                },
>> };
>>
>> @@ -784,6 +783,14 @@ static int create_instance(AVHWDeviceContext *ctx, AVDictionary *opts)
>>  inst_props.pNext = &validation_features;
>>  }
>>
>> +    for (int i = 0; i < inst_props.enabledExtensionCount; i++) {
>> +        if (!strcmp(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME,
>> +                    inst_props.ppEnabledExtensionNames[i])) {
>> +            inst_props.flags |= VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR;
>> +            break;
>> +        }
>> +    }
>> +
>>  /* Try to create the instance */
>>  ret = vk->CreateInstance(&inst_props, hwctx->alloc, &hwctx->inst);
>>

Pong. It is a bit incorrect - from memory,
VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR requires that
only Vulkan 1.1 features are enabled, while we require 1.3.
But if it works, sure. Could you ifdef it out everywhere outside of OSX?
_______________________________________________
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".

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [FFmpeg-devel] [PATCH] avutil/hwcontext_vulkan: fix run on macOS
  2023-11-07 11:42   ` Lynne
@ 2023-11-07 12:46     ` epirat07
  2023-11-07 14:01       ` Zhao Zhili
  2023-11-07 15:44     ` [FFmpeg-devel] [PATCH v2] " Zhao Zhili
  1 sibling, 1 reply; 6+ messages in thread
From: epirat07 @ 2023-11-07 12:46 UTC (permalink / raw)
  To: FFmpeg development discussions and patches



On 7 Nov 2023, at 12:42, Lynne wrote:

> Nov 7, 2023, 12:25 by quinkblack@foxmail.com:
>
>> Ping.
>>
>>> 在 2023年10月30日,下午4:17,Zhao Zhili <quinkblack@foxmail.com> 写道:
>>>
>>> From: Zhao Zhili <zhilizhao@tencent.com>
>>>
>>> VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME is required on macOS,
>>> and VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR flag should
>>> be set.
>>> ---
>>> libavutil/hwcontext_vulkan.c | 9 ++++++++-
>>> 1 file changed, 8 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/libavutil/hwcontext_vulkan.c b/libavutil/hwcontext_vulkan.c
>>> index 8481427b42..9fbf61ee70 100644
>>> --- a/libavutil/hwcontext_vulkan.c
>>> +++ b/libavutil/hwcontext_vulkan.c
>>> @@ -405,7 +405,6 @@ typedef struct VulkanOptExtension {
>>> } VulkanOptExtension;
>>>
>>> static const VulkanOptExtension optional_instance_exts[] = {
>>> -    /* Pointless, here avoid zero-sized structs */
>>>  { VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME,          FF_VK_EXT_NO_FLAG                },
>>> };
>>>
>>> @@ -784,6 +783,14 @@ static int create_instance(AVHWDeviceContext *ctx, AVDictionary *opts)
>>>  inst_props.pNext = &validation_features;
>>>  }
>>>
>>> +    for (int i = 0; i < inst_props.enabledExtensionCount; i++) {
>>> +        if (!strcmp(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME,
>>> +                    inst_props.ppEnabledExtensionNames[i])) {
>>> +            inst_props.flags |= VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR;
>>> +            break;
>>> +        }
>>> +    }
>>> +
>>>  /* Try to create the instance */
>>>  ret = vk->CreateInstance(&inst_props, hwctx->alloc, &hwctx->inst);
>>>
>
> Pong. It is a bit incorrect - from memory,
> VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR requires that
> only Vulkan 1.1 features are enabled, while we require 1.3.
> But if it works, sure. Could you ifdef it out everywhere outside of OSX?

I wonder, how is this working given that MoltenVK does not provide Vulkan 1.3
but only 1.2?

> _______________________________________________
> 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".
_______________________________________________
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".

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [FFmpeg-devel] [PATCH] avutil/hwcontext_vulkan: fix run on macOS
  2023-11-07 12:46     ` epirat07
@ 2023-11-07 14:01       ` Zhao Zhili
  0 siblings, 0 replies; 6+ messages in thread
From: Zhao Zhili @ 2023-11-07 14:01 UTC (permalink / raw)
  To: FFmpeg development discussions and patches


> On Nov 7, 2023, at 20:46, epirat07@gmail.com wrote:
> 
> 
> 
> On 7 Nov 2023, at 12:42, Lynne wrote:
> 
>> Nov 7, 2023, 12:25 by quinkblack@foxmail.com:
>> 
>>> Ping.
>>> 
>>>> 在 2023年10月30日,下午4:17,Zhao Zhili <quinkblack@foxmail.com> 写道:
>>>> 
>>>> From: Zhao Zhili <zhilizhao@tencent.com>
>>>> 
>>>> VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME is required on macOS,
>>>> and VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR flag should
>>>> be set.
>>>> ---
>>>> libavutil/hwcontext_vulkan.c | 9 ++++++++-
>>>> 1 file changed, 8 insertions(+), 1 deletion(-)
>>>> 
>>>> diff --git a/libavutil/hwcontext_vulkan.c b/libavutil/hwcontext_vulkan.c
>>>> index 8481427b42..9fbf61ee70 100644
>>>> --- a/libavutil/hwcontext_vulkan.c
>>>> +++ b/libavutil/hwcontext_vulkan.c
>>>> @@ -405,7 +405,6 @@ typedef struct VulkanOptExtension {
>>>> } VulkanOptExtension;
>>>> 
>>>> static const VulkanOptExtension optional_instance_exts[] = {
>>>> -    /* Pointless, here avoid zero-sized structs */
>>>> { VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME,          FF_VK_EXT_NO_FLAG                },
>>>> };
>>>> 
>>>> @@ -784,6 +783,14 @@ static int create_instance(AVHWDeviceContext *ctx, AVDictionary *opts)
>>>> inst_props.pNext = &validation_features;
>>>> }
>>>> 
>>>> +    for (int i = 0; i < inst_props.enabledExtensionCount; i++) {
>>>> +        if (!strcmp(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME,
>>>> +                    inst_props.ppEnabledExtensionNames[i])) {
>>>> +            inst_props.flags |= VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR;
>>>> +            break;
>>>> +        }
>>>> +    }
>>>> +
>>>> /* Try to create the instance */
>>>> ret = vk->CreateInstance(&inst_props, hwctx->alloc, &hwctx->inst);
>>>> 
>> 
>> Pong. It is a bit incorrect - from memory,
>> VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR requires that
>> only Vulkan 1.1 features are enabled, while we require 1.3.
>> But if it works, sure. Could you ifdef it out everywhere outside of OSX?
> 
> I wonder, how is this working given that MoltenVK does not provide Vulkan 1.3
> but only 1.2?

I haven't checked the details. It looks like all hwcontext required features are available in
MoltenVK, although it doesn’t provide full 1.3 implementation.

libplacebo does the same 
https://github.com/haasn/libplacebo/pull/129/files

Progress of MoltenVK to support 1.3
https://github.com/KhronosGroup/MoltenVK/issues/1930

> 
>> _______________________________________________
>> ffmpeg-devel mailing list
>> ffmpeg-devel@ffmpeg.org <mailto:ffmpeg-devel@ffmpeg.org>
>> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>> 
>> To unsubscribe, visit link above, or email
>> ffmpeg-devel-request@ffmpeg.org <mailto:ffmpeg-devel-request@ffmpeg.org> with subject "unsubscribe".
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org <mailto:ffmpeg-devel@ffmpeg.org>
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org <mailto:ffmpeg-devel-request@ffmpeg.org> with subject "unsubscribe".

_______________________________________________
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".

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [FFmpeg-devel] [PATCH v2] avutil/hwcontext_vulkan: fix run on macOS
  2023-11-07 11:42   ` Lynne
  2023-11-07 12:46     ` epirat07
@ 2023-11-07 15:44     ` Zhao Zhili
  1 sibling, 0 replies; 6+ messages in thread
From: Zhao Zhili @ 2023-11-07 15:44 UTC (permalink / raw)
  To: ffmpeg-devel; +Cc: Zhao Zhili

From: Zhao Zhili <zhilizhao@tencent.com>

VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME is required on macOS,
and VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR flag should
be set.
---
 libavutil/hwcontext_vulkan.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/libavutil/hwcontext_vulkan.c b/libavutil/hwcontext_vulkan.c
index 8481427b42..521ad76690 100644
--- a/libavutil/hwcontext_vulkan.c
+++ b/libavutil/hwcontext_vulkan.c
@@ -405,7 +405,6 @@ typedef struct VulkanOptExtension {
 } VulkanOptExtension;
 
 static const VulkanOptExtension optional_instance_exts[] = {
-    /* Pointless, here avoid zero-sized structs */
     { VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME,          FF_VK_EXT_NO_FLAG                },
 };
 
@@ -784,6 +783,16 @@ static int create_instance(AVHWDeviceContext *ctx, AVDictionary *opts)
         inst_props.pNext = &validation_features;
     }
 
+#ifdef __APPLE__
+    for (int i = 0; i < inst_props.enabledExtensionCount; i++) {
+        if (!strcmp(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME,
+                    inst_props.ppEnabledExtensionNames[i])) {
+            inst_props.flags |= VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR;
+            break;
+        }
+    }
+#endif
+
     /* Try to create the instance */
     ret = vk->CreateInstance(&inst_props, hwctx->alloc, &hwctx->inst);
 
-- 
2.42.0

_______________________________________________
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".

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2023-11-07 15:45 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-10-30  8:17 [FFmpeg-devel] [PATCH] avutil/hwcontext_vulkan: fix run on macOS Zhao Zhili
2023-11-07 11:24 ` Zhao Zhili
2023-11-07 11:42   ` Lynne
2023-11-07 12:46     ` epirat07
2023-11-07 14:01       ` Zhao Zhili
2023-11-07 15:44     ` [FFmpeg-devel] [PATCH v2] " Zhao Zhili

Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
		ffmpegdev@gitmailbox.com
	public-inbox-index ffmpegdev

Example config snippet for mirrors.


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git