From: Anton Khirnov <anton@khirnov.net>
To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Subject: Re: [FFmpeg-devel] [PATCH 55/97] Vulkan patchset part 2 - hwcontext rewrite and filtering
Date: Thu, 18 May 2023 10:29:51 +0200
Message-ID: <168439859157.3843.5730303366938975471@lain.khirnov.net> (raw)
In-Reply-To: <NV_0mH4--3-9@lynne.ee>
Quoting Lynne (2023-05-16 16:46:45)
> May 16, 2023, 15:41 by anton@khirnov.net:
>
> > Quoting Lynne (2023-05-11 20:13:29)
> >
> >> >> diff --git a/libavutil/vulkan.h b/libavutil/vulkan.h
> >> >> index 4bd1c9fc00..4c38dbc2e6 100644
> >> >> --- a/libavutil/vulkan.h
> >> >> +++ b/libavutil/vulkan.h
> >> >> @@ -216,6 +216,9 @@ typedef struct FFVulkanContext {
> >> >> VkPhysicalDeviceProperties2 props;
> >> >> VkPhysicalDeviceDriverProperties driver_props;
> >> >> VkPhysicalDeviceMemoryProperties mprops;
> >> >> + VkQueueFamilyQueryResultStatusPropertiesKHR *query_props;
> >> >> + VkQueueFamilyVideoPropertiesKHR *video_props;
> >> >> + VkQueueFamilyProperties2 *qf_props;
> >> >>
> >> >
> >> > How does the user of these know how many elements are in each array?
> >> >
> >>
> >> They don't have to, we read the total number of queues available
> >> for the device, so all indices are always available.
> >>
> >
> > "all indices"?
> >
> > The allocated size of these arrays is purely local to
> > ff_vk_load_props(), so there is no safe way for any outside caller to
> > know it.
> >
>
> The init function queries the driver for the total number of queue family indices,
> allocates an array of that amount for each structure, and reads the properties
> into the array.
> API users then index into the array based on the queue family index.
> API users cannot index outside of the array ever, as the queue family index
> they receive is always AVVulkanDeviceContext.queue_family_index (or the
> transfer, compute, encode, or decode queue family index member of that structure).
> The queue family index members of that structure are checked upon initialization
> to not be larger than what the driver returns.
>
> Hence, there's no need for them to know how large the array is, as
> it is allocated for all possible indices.
That's way too much indirection and way too much code that has to make
the exact same unstated assumption on what the actual size is. In my
experience, it is almost always a good idea to be explicit: store the
exact array size right next to the array itself.
If nothing else, it will be very helpful for the person debugging the
inevitable invalid accesses.
--
Anton Khirnov
_______________________________________________
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".
next prev parent reply other threads:[~2023-05-18 8:30 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-04-24 15:56 Lynne
2023-04-28 13:28 ` Niklas Haas
[not found] ` <NTnyn9K--3-9@lynne.ee-NTnytIf----9>
2023-05-10 19:10 ` Lynne
2023-05-11 15:36 ` Anton Khirnov
2023-05-11 16:32 ` Lynne
2023-05-11 16:59 ` Anton Khirnov
2023-05-11 16:03 ` Anton Khirnov
2023-05-11 18:55 ` Lynne
2023-05-16 13:31 ` Anton Khirnov
2023-05-16 14:47 ` Lynne
[not found] ` <NV_0sN0--3-9@lynne.ee-NV_0vMs----9>
2023-05-22 8:26 ` Lynne
[not found] ` <NVyq4UQ--F-9@lynne.ee-NW1ZGRp----9>
2023-05-25 0:31 ` Lynne
[not found] ` <NWFJK4e--3-9@lynne.ee-NWFJONn----9>
2023-05-26 17:52 ` Lynne
2023-05-26 19:19 ` Anton Khirnov
2023-05-26 20:50 ` Lynne
2023-05-11 16:05 ` Anton Khirnov
2023-05-11 16:40 ` Lynne
2023-05-11 17:00 ` Anton Khirnov
2023-05-11 16:06 ` Anton Khirnov
2023-05-11 16:45 ` Lynne
2023-05-11 16:14 ` Anton Khirnov
2023-05-11 16:47 ` Lynne
2023-05-11 17:13 ` Anton Khirnov
2023-05-11 16:15 ` Anton Khirnov
2023-05-11 16:50 ` Lynne
2023-05-11 16:21 ` Anton Khirnov
2023-05-11 18:58 ` Lynne
2023-05-16 13:33 ` Anton Khirnov
2023-05-16 14:41 ` Lynne
2023-05-11 16:29 ` Anton Khirnov
2023-05-11 18:13 ` Lynne
2023-05-16 13:40 ` Anton Khirnov
2023-05-16 14:46 ` Lynne
2023-05-18 8:29 ` Anton Khirnov [this message]
2023-05-18 12:28 ` Lynne
2023-05-11 16:34 ` Anton Khirnov
2023-05-11 17:12 ` Lynne
2023-05-11 17:19 ` Anton Khirnov
2023-05-11 16:34 ` Anton Khirnov
2023-05-11 17:16 ` Lynne
2023-05-11 16:40 ` Anton Khirnov
2023-05-11 17:20 ` Lynne
2023-05-11 17:27 ` Anton Khirnov
2023-05-11 19:11 ` Lynne
2023-05-18 8:34 ` [FFmpeg-devel] libavcodec: add Vulkan common video code Anton Khirnov
2023-05-18 11:07 ` Lynne
2023-05-18 8:54 ` [FFmpeg-devel] libavcodec: add Vulkan common video decoding code Anton Khirnov
2023-05-18 12:27 ` Lynne
2023-05-19 12:11 ` [FFmpeg-devel] [PATCH 55/97] Vulkan patchset part 2 - hwcontext rewrite and filtering Leo Izen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=168439859157.3843.5730303366938975471@lain.khirnov.net \
--to=anton@khirnov.net \
--cc=ffmpeg-devel@ffmpeg.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
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