[PATCH 1/3] vulkan: Define new VK_MESA_query_timestamp extension [v2]

Jason Ekstrand jason at jlekstrand.net
Sat Jun 23 17:13:53 UTC 2018


I haven't thought through this comment all that hard but would it make 
sense to have three timestamps, CPU, GPU, CPU so that you have error bars 
on the GPU timestamp?  At the very least, two timestamps would be better 
than one so that, when we pull it into the kernel, it can provide something 
more accurate than userspace trying to grab a snapshot.

--Jason


On June 23, 2018 10:15:34 Keith Packard <keithp at keithp.com> wrote:

> This extension adds a single function to query the current GPU
> timestamp, just like glGetInteger64v(GL_TIMESTAMP, &timestamp). This
> function is needed to complete the implementation of
> GOOGLE_display_timing, which needs to be able to correlate GPU and CPU
> timestamps.
>
> v2:	Adopt Jason Ekstrand's coding conventions
>
> 	Declare variables at first use, eliminate extra whitespace between
> 	types and names. Wrap lines to 80 columns.
>
> 	Add extension to list in alphabetical order
>
> 	Suggested-by: Jason Ekstrand <jason.ekstrand at intel.com>
>
> Signed-off-by: Keith Packard <keithp at keithp.com>
> ---
> include/vulkan/vk_mesa_query_timestamp.h | 41 ++++++++++++++++++++++++
> src/vulkan/registry/vk.xml               | 15 +++++++++
> 2 files changed, 56 insertions(+)
> create mode 100644 include/vulkan/vk_mesa_query_timestamp.h
>
> diff --git a/include/vulkan/vk_mesa_query_timestamp.h 
> b/include/vulkan/vk_mesa_query_timestamp.h
> new file mode 100644
> index 00000000000..4e0b50cb9cc
> --- /dev/null
> +++ b/include/vulkan/vk_mesa_query_timestamp.h
> @@ -0,0 +1,41 @@
> +/*
> + * Copyright © 2018 Keith Packard
> + *
> + * Permission to use, copy, modify, distribute, and sell this software and its
> + * documentation for any purpose is hereby granted without fee, provided that
> + * the above copyright notice appear in all copies and that both that 
> copyright
> + * notice and this permission notice appear in supporting documentation, and
> + * that the name of the copyright holders not be used in advertising or
> + * publicity pertaining to distribution of the software without specific,
> + * written prior permission.  The copyright holders make no representations
> + * about the suitability of this software for any purpose.  It is provided "as
> + * is" without express or implied warranty.
> + *
> + * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
> + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
> + * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
> + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
> + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
> + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 
> PERFORMANCE
> + * OF THIS SOFTWARE.
> + */
> +
> +#ifndef __VK_MESA_QUERY_TIMESTAMP_H__
> +#define __VK_MESA_QUERY_TIMESTAMP_H__
> +
> +#ifdef __cplusplus
> +extern "C" {
> +#endif
> +
> +typedef VkResult (VKAPI_PTR *PFN_vkQueryCurrentTimestampMESA)(
> +    VkDevice device, uint64_t *timestamp);
> +
> +VKAPI_ATTR VkResult VKAPI_CALL vkQueryCurrentTimestampMESA(
> +    VkDevice device, uint64_t *timestamp);
> +
> +#ifdef __cplusplus
> +}
> +#endif
> +
> +#endif /* __VK_MESA_QUERY_TIMESTAMP_H__ */
> +
> diff --git a/src/vulkan/registry/vk.xml b/src/vulkan/registry/vk.xml
> index 7018bbe8421..3a5cecdc8e3 100644
> --- a/src/vulkan/registry/vk.xml
> +++ b/src/vulkan/registry/vk.xml
> @@ -6102,6 +6102,11 @@ server.
>             <param><type>uint32_t</type> <name>maxDrawCount</name></param>
>             <param><type>uint32_t</type> <name>stride</name></param>
>         </command>
> +        <command>
> +            <proto><type>VkResult</type> 
> <name>vkQueryCurrentTimestampMESA</name></proto>
> +            <param><type>VkDevice</type> <name>device</name></param>
> +            <param><type>uint64_t</type>* <name>pTimestamp</name></param>
> +        </command>
>     </commands>
>
>     <feature api="vulkan" name="VK_VERSION_1_0" number="1.0" comment="Vulkan 
>     core API interface definitions">
> @@ -8826,5 +8831,15 @@ server.
>                 <enum value=""VK_KHR_extension_211""          
>                 name="VK_KHR_EXTENSION_211_EXTENSION_NAME"/>
>             </require>
>         </extension>
> +        <extension name="VK_MESA_query_timestamp" number="212"
> +		   type="device" author="MESA"
> +		   contact="Keith Packard @keithp"
> +		   supported="vulkan">
> +            <require>
> +                <enum value="1"                                         
> name="VK_MESA_QUERY_TIMESTAMP_SPEC_VERSION"/>
> +                <enum value=""VK_MESA_query_timestamp""       
> name="VK_MESA_QUERY_TIMESTAMP_NAME"/>
> +                <command name="vkQueryCurrentTimestampMESA"/>
> +            </require>
> +        </extension>
>     </extensions>
> </registry>
> --
> 2.17.1
>
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel





More information about the dri-devel mailing list