Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2dd49ff7 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Stubbed implementation of VK_GOOGLE_display_timing extension."

parents 5f541b96 4c8bb2a9
Loading
Loading
Loading
Loading
+69 −0
Original line number Diff line number Diff line
@@ -81,6 +81,9 @@ define NULL_HANDLE 0
@extension("VK_ANDROID_native_buffer") define VK_ANDROID_NATIVE_BUFFER_SPEC_VERSION     6
@extension("VK_ANDROID_native_buffer") define VK_ANDROID_NATIVE_BUFFER_NAME             "VK_ANDROID_native_buffer"

@extension("VK_GOOGLE_display_timing") define VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION     1
@extension("VK_GOOGLE_display_timing") define VK_GOOGLE_DISPLAY_TIMING_NAME             "VK_GOOGLE_display_timing"

@extension("VK_EXT_debug_report") define VK_EXT_DEBUG_REPORT_SPEC_VERSION       4
@extension("VK_EXT_debug_report") define VK_EXT_DEBUG_REPORT_NAME               "VK_EXT_debug_report"

@@ -753,6 +756,9 @@ enum VkStructureType {
    VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID                     = 1000010000,
    VK_STRUCTURE_TYPE_SWAPCHAIN_IMAGE_CREATE_INFO_ANDROID       = 1000010001,

    //@extension("VK_GOOGLE_display_timing")
    VK_STRUCTURE_TYPE_PRESENT_TIMES_GOOGLE                      = 1000092000,

    //@extension("VK_EXT_debug_report")
    VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT     = 1000011000,

@@ -2916,6 +2922,34 @@ class VkSwapchainImageCreateInfoANDROID {
    VkStructureType                             sType
    const void*                                 pNext
    VkSwapchainImageUsageFlagBitsANDROID        flags

@extension("VK_GOOGLE_display_timing")
class VkRefreshCycleDurationGOOGLE {
    uint64_t                                    minRefreshDuration
    uint64_t                                    maxRefreshDuration
}

@extension("VK_GOOGLE_display_timing")
class VkPastPresentationTimingGOOGLE {
    uint32_t                                    presentID
    uint64_t                                    desiredPresentTime
    uint64_t                                    actualPresentTime
    uint64_t                                    earliestPresentTime
    uint64_t                                    presentMargin
}

@extension("VK_GOOGLE_display_timing")
class VkPresentTimeGOOGLE {
    uint32_t                                    presentID
    uint64_t                                    desiredPresentTime
}

@extension("VK_GOOGLE_display_timing")
class VkPresentTimesInfoGOOGLE {
    VkStructureType                             sType
    const void*                                 pNext
    uint32_t                                    swapchainCount
    const VkPresentTimeGOOGLE*                  pTimes
}

@extension("VK_EXT_debug_report")
@@ -5835,6 +5869,41 @@ cmd VkResult vkQueueSignalReleaseImageANDROID(
    return ?
}

@extension("VK_GOOGLE_display_timing")
cmd VkResult vkGetRefreshCycleDurationGOOGLE(
        VkDevice                                 device,
        VkSwapchainKHR                           swapchain,
        VkRefreshCycleDurationGOOGLE*            pDisplayTimingProperties) {
    deviceObject := GetDevice(device)
    swapchainObject := GetSwapchain(swapchain)

    displayTimingProperties := ?
    pDisplayTimingProperties[0] = displayTimingProperties

    return ?
}

@extension("VK_GOOGLE_display_timing")
cmd VkResult vkGetPastPresentationTimingGOOGLE(
        VkDevice                                 device,
        VkSwapchainKHR                           swapchain,
        u32*                                     pPresentationTimingCount,
        VkPastPresentationTimingGOOGLE*          pPresentationTimings) {
    deviceObject := GetDevice(device)

    count := as!u32(?)
    pPresentationTimingCount[0] = count
    presentationTimings := pPresentationTimings[0:count]

    for i in (0 .. count) {
        presentationTiming := ?
        presentationTimings[i] = presentationTiming
        State.Timings[presentationTiming] = new!PresentationTiming(device: device)
    }

    return ?
}

@extension("VK_EXT_debug_report")
@external type void* PFN_vkDebugReportCallbackEXT
@extension("VK_EXT_debug_report")
+47 −0
Original line number Diff line number Diff line
@@ -242,6 +242,7 @@ typedef enum VkStructureType {
    VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX = 1000086003,
    VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX = 1000086004,
    VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX = 1000086005,
    VK_STRUCTURE_TYPE_PRESENT_TIMES_GOOGLE = 1000092000,
    VK_STRUCTURE_TYPE_BEGIN_RANGE = VK_STRUCTURE_TYPE_APPLICATION_INFO,
    VK_STRUCTURE_TYPE_END_RANGE = VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO,
    VK_STRUCTURE_TYPE_RANGE_SIZE = (VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO - VK_STRUCTURE_TYPE_APPLICATION_INFO + 1),
@@ -4126,6 +4127,52 @@ typedef struct VkDedicatedAllocationMemoryAllocateInfoNV {
} VkDedicatedAllocationMemoryAllocateInfoNV;


#define VK_GOOGLE_display_timing 1
#define VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION 1
#define VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME "VK_GOOGLE_display_timing"

typedef struct VkRefreshCycleDurationGOOGLE {
    uint64_t    minRefreshDuration;
    uint64_t    maxRefreshDuration;
} VkRefreshCycleDurationGOOGLE;

typedef struct VkPastPresentationTimingGOOGLE {
    uint32_t    presentID;
    uint64_t    desiredPresentTime;
    uint64_t    actualPresentTime;
    uint64_t    earliestPresentTime;
    uint64_t    presentMargin;
} VkPastPresentationTimingGOOGLE;

typedef struct VkPresentTimeGOOGLE {
    uint32_t    presentID;
    uint64_t    desiredPresentTime;
} VkPresentTimeGOOGLE;

typedef struct VkPresentTimesInfoGOOGLE {
    VkStructureType               sType;
    const void*                   pNext;
    uint32_t                      swapchainCount;
    const VkPresentTimeGOOGLE*    pTimes;
} VkPresentTimesInfoGOOGLE;


typedef VkResult (VKAPI_PTR *PFN_vkGetRefreshCycleDurationGOOGLE)(VkDevice device, VkSwapchainKHR swapchain, VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties);
typedef VkResult (VKAPI_PTR *PFN_vkGetPastPresentationTimingGOOGLE)(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pPresentationTimingCount, VkPastPresentationTimingGOOGLE* pPresentationTimings);

#ifndef VK_NO_PROTOTYPES
VKAPI_ATTR VkResult VKAPI_CALL vkGetRefreshCycleDurationGOOGLE(
    VkDevice                                    device,
    VkSwapchainKHR                              swapchain,
    VkRefreshCycleDurationGOOGLE*               pDisplayTimingProperties);

VKAPI_ATTR VkResult VKAPI_CALL vkGetPastPresentationTimingGOOGLE(
    VkDevice                                    device,
    VkSwapchainKHR                              swapchain,
    uint32_t*                                   pPresentationTimingCount,
    VkPastPresentationTimingGOOGLE*             pPresentationTimings);
#endif


#define VK_AMD_draw_indirect_count 1
#define VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION 1
+10 −0
Original line number Diff line number Diff line
@@ -425,6 +425,8 @@ VKAPI_ATTR VkResult GetSwapchainImagesKHR(VkDevice device, VkSwapchainKHR swapch
VKAPI_ATTR VkResult AcquireNextImageKHR(VkDevice device, VkSwapchainKHR swapchain, uint64_t timeout, VkSemaphore semaphore, VkFence fence, uint32_t* pImageIndex);
VKAPI_ATTR VkResult QueuePresentKHR(VkQueue queue, const VkPresentInfoKHR* pPresentInfo);
VKAPI_ATTR VkResult CreateAndroidSurfaceKHR(VkInstance instance, const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
VKAPI_ATTR VkResult GetRefreshCycleDurationGOOGLE(VkDevice device, VkSwapchainKHR swapchain, VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties);
VKAPI_ATTR VkResult GetPastPresentationTimingGOOGLE(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pPresentationTimingCount, VkPastPresentationTimingGOOGLE* pPresentationTimings);

VKAPI_ATTR VkResult EnumeratePhysicalDevices(VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices) {
    return GetData(instance).dispatch.EnumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices);
@@ -1208,6 +1210,14 @@ VKAPI_ATTR VkResult CreateAndroidSurfaceKHR(VkInstance instance, const VkAndroid
    return GetData(instance).dispatch.CreateAndroidSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
}

VKAPI_ATTR VkResult GetRefreshCycleDurationGOOGLE(VkDevice device, VkSwapchainKHR swapchain, VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties) {
    return GetData(device).dispatch.GetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties);
}

VKAPI_ATTR VkResult GetPastPresentationTimingGOOGLE(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pPresentationTimingCount, VkPastPresentationTimingGOOGLE* pPresentationTimings) {
    return GetData(device).dispatch.GetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings);
}


}  // anonymous namespace

+2 −0
Original line number Diff line number Diff line
@@ -177,6 +177,8 @@ struct DeviceDispatchTable {
    PFN_vkGetSwapchainImagesKHR GetSwapchainImagesKHR;
    PFN_vkAcquireNextImageKHR AcquireNextImageKHR;
    PFN_vkQueuePresentKHR QueuePresentKHR;
    PFN_vkGetRefreshCycleDurationGOOGLE GetRefreshCycleDurationGOOGLE;
    PFN_vkGetPastPresentationTimingGOOGLE GetPastPresentationTimingGOOGLE;
    // clang-format on
};

+3 −0
Original line number Diff line number Diff line
@@ -700,6 +700,8 @@ VK_KHR_android_surface
VK_KHR_incremental_present
VK_KHR_surface
VK_KHR_swapchain
VK_KHR_incremental_present
VK_GOOGLE_display_timing
{{end}}


@@ -1147,6 +1149,7 @@ VK_KHR_swapchain
  {{else if eq $ext "VK_KHR_swapchain"}}true
  {{else if eq $ext "VK_KHR_android_surface"}}true
  {{else if eq $ext "VK_KHR_incremental_present"}}true
  {{else if eq $ext "VK_GOOGLE_display_timing"}}true
  {{end}}
{{end}}

Loading