* [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