vulkan/overlay: use a single macro to lookup objects
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
This commit is contained in:
parent
b3a96e69ac
commit
b031dd9010
|
@ -211,12 +211,8 @@ static inline void ensure_vk_object_map(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
#define HKEY(obj) ((uint64_t)(obj))
|
#define HKEY(obj) ((uint64_t)(obj))
|
||||||
#define FIND_SWAPCHAIN_DATA(obj) ((struct swapchain_data *)find_object_data(HKEY(obj)))
|
#define FIND(type, obj) ((type *)find_object_data(HKEY(obj)))
|
||||||
#define FIND_CMD_BUFFER_DATA(obj) ((struct command_buffer_data *)find_object_data(HKEY(obj)))
|
|
||||||
#define FIND_DEVICE_DATA(obj) ((struct device_data *)find_object_data(HKEY(obj)))
|
|
||||||
#define FIND_QUEUE_DATA(obj) ((struct queue_data *)find_object_data(HKEY(obj)))
|
|
||||||
#define FIND_PHYSICAL_DEVICE_DATA(obj) ((struct instance_data *)find_object_data(HKEY(obj)))
|
|
||||||
#define FIND_INSTANCE_DATA(obj) ((struct instance_data *)find_object_data(HKEY(obj)))
|
|
||||||
static void *find_object_data(uint64_t obj)
|
static void *find_object_data(uint64_t obj)
|
||||||
{
|
{
|
||||||
simple_mtx_lock(&vk_object_to_data_mutex);
|
simple_mtx_lock(&vk_object_to_data_mutex);
|
||||||
|
@ -1543,7 +1539,7 @@ static VkResult overlay_CreateSwapchainKHR(
|
||||||
const VkAllocationCallbacks* pAllocator,
|
const VkAllocationCallbacks* pAllocator,
|
||||||
VkSwapchainKHR* pSwapchain)
|
VkSwapchainKHR* pSwapchain)
|
||||||
{
|
{
|
||||||
struct device_data *device_data = FIND_DEVICE_DATA(device);
|
struct device_data *device_data = FIND(struct device_data, device);
|
||||||
VkResult result = device_data->vtable.CreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain);
|
VkResult result = device_data->vtable.CreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain);
|
||||||
if (result != VK_SUCCESS) return result;
|
if (result != VK_SUCCESS) return result;
|
||||||
|
|
||||||
|
@ -1557,7 +1553,8 @@ static void overlay_DestroySwapchainKHR(
|
||||||
VkSwapchainKHR swapchain,
|
VkSwapchainKHR swapchain,
|
||||||
const VkAllocationCallbacks* pAllocator)
|
const VkAllocationCallbacks* pAllocator)
|
||||||
{
|
{
|
||||||
struct swapchain_data *swapchain_data = FIND_SWAPCHAIN_DATA(swapchain);
|
struct swapchain_data *swapchain_data =
|
||||||
|
FIND(struct swapchain_data, swapchain);
|
||||||
|
|
||||||
shutdown_swapchain_data(swapchain_data);
|
shutdown_swapchain_data(swapchain_data);
|
||||||
swapchain_data->device->vtable.DestroySwapchainKHR(device, swapchain, pAllocator);
|
swapchain_data->device->vtable.DestroySwapchainKHR(device, swapchain, pAllocator);
|
||||||
|
@ -1568,7 +1565,7 @@ static VkResult overlay_QueuePresentKHR(
|
||||||
VkQueue queue,
|
VkQueue queue,
|
||||||
const VkPresentInfoKHR* pPresentInfo)
|
const VkPresentInfoKHR* pPresentInfo)
|
||||||
{
|
{
|
||||||
struct queue_data *queue_data = FIND_QUEUE_DATA(queue);
|
struct queue_data *queue_data = FIND(struct queue_data, queue);
|
||||||
struct device_data *device_data = queue_data->device;
|
struct device_data *device_data = queue_data->device;
|
||||||
struct instance_data *instance_data = device_data->instance;
|
struct instance_data *instance_data = device_data->instance;
|
||||||
uint32_t query_results[OVERLAY_QUERY_COUNT];
|
uint32_t query_results[OVERLAY_QUERY_COUNT];
|
||||||
|
@ -1629,7 +1626,8 @@ static VkResult overlay_QueuePresentKHR(
|
||||||
if (instance_data->params.no_display) {
|
if (instance_data->params.no_display) {
|
||||||
for (uint32_t i = 0; i < pPresentInfo->swapchainCount; i++) {
|
for (uint32_t i = 0; i < pPresentInfo->swapchainCount; i++) {
|
||||||
VkSwapchainKHR swapchain = pPresentInfo->pSwapchains[i];
|
VkSwapchainKHR swapchain = pPresentInfo->pSwapchains[i];
|
||||||
struct swapchain_data *swapchain_data = FIND_SWAPCHAIN_DATA(swapchain);
|
struct swapchain_data *swapchain_data =
|
||||||
|
FIND(struct swapchain_data, swapchain);
|
||||||
|
|
||||||
before_present(swapchain_data,
|
before_present(swapchain_data,
|
||||||
pPresentInfo->pWaitSemaphores,
|
pPresentInfo->pWaitSemaphores,
|
||||||
|
@ -1648,7 +1646,8 @@ static VkResult overlay_QueuePresentKHR(
|
||||||
} else {
|
} else {
|
||||||
for (uint32_t i = 0; i < pPresentInfo->swapchainCount; i++) {
|
for (uint32_t i = 0; i < pPresentInfo->swapchainCount; i++) {
|
||||||
VkSwapchainKHR swapchain = pPresentInfo->pSwapchains[i];
|
VkSwapchainKHR swapchain = pPresentInfo->pSwapchains[i];
|
||||||
struct swapchain_data *swapchain_data = FIND_SWAPCHAIN_DATA(swapchain);
|
struct swapchain_data *swapchain_data =
|
||||||
|
FIND(struct swapchain_data, swapchain);
|
||||||
VkPresentInfoKHR present_info = *pPresentInfo;
|
VkPresentInfoKHR present_info = *pPresentInfo;
|
||||||
present_info.swapchainCount = 1;
|
present_info.swapchainCount = 1;
|
||||||
present_info.pSwapchains = &swapchain;
|
present_info.pSwapchains = &swapchain;
|
||||||
|
@ -1689,7 +1688,8 @@ static VkResult overlay_AcquireNextImageKHR(
|
||||||
VkFence fence,
|
VkFence fence,
|
||||||
uint32_t* pImageIndex)
|
uint32_t* pImageIndex)
|
||||||
{
|
{
|
||||||
struct swapchain_data *swapchain_data = FIND_SWAPCHAIN_DATA(swapchain);
|
struct swapchain_data *swapchain_data =
|
||||||
|
FIND(struct swapchain_data, swapchain);
|
||||||
struct device_data *device_data = swapchain_data->device;
|
struct device_data *device_data = swapchain_data->device;
|
||||||
|
|
||||||
uint64_t ts0 = os_time_get();
|
uint64_t ts0 = os_time_get();
|
||||||
|
@ -1708,7 +1708,8 @@ static VkResult overlay_AcquireNextImage2KHR(
|
||||||
const VkAcquireNextImageInfoKHR* pAcquireInfo,
|
const VkAcquireNextImageInfoKHR* pAcquireInfo,
|
||||||
uint32_t* pImageIndex)
|
uint32_t* pImageIndex)
|
||||||
{
|
{
|
||||||
struct swapchain_data *swapchain_data = FIND_SWAPCHAIN_DATA(pAcquireInfo->swapchain);
|
struct swapchain_data *swapchain_data =
|
||||||
|
FIND(struct swapchain_data, pAcquireInfo->swapchain);
|
||||||
struct device_data *device_data = swapchain_data->device;
|
struct device_data *device_data = swapchain_data->device;
|
||||||
|
|
||||||
uint64_t ts0 = os_time_get();
|
uint64_t ts0 = os_time_get();
|
||||||
|
@ -1728,7 +1729,8 @@ static void overlay_CmdDraw(
|
||||||
uint32_t firstVertex,
|
uint32_t firstVertex,
|
||||||
uint32_t firstInstance)
|
uint32_t firstInstance)
|
||||||
{
|
{
|
||||||
struct command_buffer_data *cmd_buffer_data = FIND_CMD_BUFFER_DATA(commandBuffer);
|
struct command_buffer_data *cmd_buffer_data =
|
||||||
|
FIND(struct command_buffer_data, commandBuffer);
|
||||||
cmd_buffer_data->stats.stats[OVERLAY_PARAM_ENABLED_draw]++;
|
cmd_buffer_data->stats.stats[OVERLAY_PARAM_ENABLED_draw]++;
|
||||||
struct device_data *device_data = cmd_buffer_data->device;
|
struct device_data *device_data = cmd_buffer_data->device;
|
||||||
device_data->vtable.CmdDraw(commandBuffer, vertexCount, instanceCount,
|
device_data->vtable.CmdDraw(commandBuffer, vertexCount, instanceCount,
|
||||||
|
@ -1743,7 +1745,8 @@ static void overlay_CmdDrawIndexed(
|
||||||
int32_t vertexOffset,
|
int32_t vertexOffset,
|
||||||
uint32_t firstInstance)
|
uint32_t firstInstance)
|
||||||
{
|
{
|
||||||
struct command_buffer_data *cmd_buffer_data = FIND_CMD_BUFFER_DATA(commandBuffer);
|
struct command_buffer_data *cmd_buffer_data =
|
||||||
|
FIND(struct command_buffer_data, commandBuffer);
|
||||||
cmd_buffer_data->stats.stats[OVERLAY_PARAM_ENABLED_draw_indexed]++;
|
cmd_buffer_data->stats.stats[OVERLAY_PARAM_ENABLED_draw_indexed]++;
|
||||||
struct device_data *device_data = cmd_buffer_data->device;
|
struct device_data *device_data = cmd_buffer_data->device;
|
||||||
device_data->vtable.CmdDrawIndexed(commandBuffer, indexCount, instanceCount,
|
device_data->vtable.CmdDrawIndexed(commandBuffer, indexCount, instanceCount,
|
||||||
|
@ -1757,7 +1760,8 @@ static void overlay_CmdDrawIndirect(
|
||||||
uint32_t drawCount,
|
uint32_t drawCount,
|
||||||
uint32_t stride)
|
uint32_t stride)
|
||||||
{
|
{
|
||||||
struct command_buffer_data *cmd_buffer_data = FIND_CMD_BUFFER_DATA(commandBuffer);
|
struct command_buffer_data *cmd_buffer_data =
|
||||||
|
FIND(struct command_buffer_data, commandBuffer);
|
||||||
cmd_buffer_data->stats.stats[OVERLAY_PARAM_ENABLED_draw_indirect]++;
|
cmd_buffer_data->stats.stats[OVERLAY_PARAM_ENABLED_draw_indirect]++;
|
||||||
struct device_data *device_data = cmd_buffer_data->device;
|
struct device_data *device_data = cmd_buffer_data->device;
|
||||||
device_data->vtable.CmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride);
|
device_data->vtable.CmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride);
|
||||||
|
@ -1770,7 +1774,8 @@ static void overlay_CmdDrawIndexedIndirect(
|
||||||
uint32_t drawCount,
|
uint32_t drawCount,
|
||||||
uint32_t stride)
|
uint32_t stride)
|
||||||
{
|
{
|
||||||
struct command_buffer_data *cmd_buffer_data = FIND_CMD_BUFFER_DATA(commandBuffer);
|
struct command_buffer_data *cmd_buffer_data =
|
||||||
|
FIND(struct command_buffer_data, commandBuffer);
|
||||||
cmd_buffer_data->stats.stats[OVERLAY_PARAM_ENABLED_draw_indexed_indirect]++;
|
cmd_buffer_data->stats.stats[OVERLAY_PARAM_ENABLED_draw_indexed_indirect]++;
|
||||||
struct device_data *device_data = cmd_buffer_data->device;
|
struct device_data *device_data = cmd_buffer_data->device;
|
||||||
device_data->vtable.CmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride);
|
device_data->vtable.CmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride);
|
||||||
|
@ -1785,7 +1790,8 @@ static void overlay_CmdDrawIndirectCountKHR(
|
||||||
uint32_t maxDrawCount,
|
uint32_t maxDrawCount,
|
||||||
uint32_t stride)
|
uint32_t stride)
|
||||||
{
|
{
|
||||||
struct command_buffer_data *cmd_buffer_data = FIND_CMD_BUFFER_DATA(commandBuffer);
|
struct command_buffer_data *cmd_buffer_data =
|
||||||
|
FIND(struct command_buffer_data, commandBuffer);
|
||||||
cmd_buffer_data->stats.stats[OVERLAY_PARAM_ENABLED_draw_indirect_count]++;
|
cmd_buffer_data->stats.stats[OVERLAY_PARAM_ENABLED_draw_indirect_count]++;
|
||||||
struct device_data *device_data = cmd_buffer_data->device;
|
struct device_data *device_data = cmd_buffer_data->device;
|
||||||
device_data->vtable.CmdDrawIndirectCountKHR(commandBuffer, buffer, offset,
|
device_data->vtable.CmdDrawIndirectCountKHR(commandBuffer, buffer, offset,
|
||||||
|
@ -1802,7 +1808,8 @@ static void overlay_CmdDrawIndexedIndirectCountKHR(
|
||||||
uint32_t maxDrawCount,
|
uint32_t maxDrawCount,
|
||||||
uint32_t stride)
|
uint32_t stride)
|
||||||
{
|
{
|
||||||
struct command_buffer_data *cmd_buffer_data = FIND_CMD_BUFFER_DATA(commandBuffer);
|
struct command_buffer_data *cmd_buffer_data =
|
||||||
|
FIND(struct command_buffer_data, commandBuffer);
|
||||||
cmd_buffer_data->stats.stats[OVERLAY_PARAM_ENABLED_draw_indexed_indirect_count]++;
|
cmd_buffer_data->stats.stats[OVERLAY_PARAM_ENABLED_draw_indexed_indirect_count]++;
|
||||||
struct device_data *device_data = cmd_buffer_data->device;
|
struct device_data *device_data = cmd_buffer_data->device;
|
||||||
device_data->vtable.CmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset,
|
device_data->vtable.CmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset,
|
||||||
|
@ -1816,7 +1823,8 @@ static void overlay_CmdDispatch(
|
||||||
uint32_t groupCountY,
|
uint32_t groupCountY,
|
||||||
uint32_t groupCountZ)
|
uint32_t groupCountZ)
|
||||||
{
|
{
|
||||||
struct command_buffer_data *cmd_buffer_data = FIND_CMD_BUFFER_DATA(commandBuffer);
|
struct command_buffer_data *cmd_buffer_data =
|
||||||
|
FIND(struct command_buffer_data, commandBuffer);
|
||||||
cmd_buffer_data->stats.stats[OVERLAY_PARAM_ENABLED_dispatch]++;
|
cmd_buffer_data->stats.stats[OVERLAY_PARAM_ENABLED_dispatch]++;
|
||||||
struct device_data *device_data = cmd_buffer_data->device;
|
struct device_data *device_data = cmd_buffer_data->device;
|
||||||
device_data->vtable.CmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ);
|
device_data->vtable.CmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ);
|
||||||
|
@ -1827,7 +1835,8 @@ static void overlay_CmdDispatchIndirect(
|
||||||
VkBuffer buffer,
|
VkBuffer buffer,
|
||||||
VkDeviceSize offset)
|
VkDeviceSize offset)
|
||||||
{
|
{
|
||||||
struct command_buffer_data *cmd_buffer_data = FIND_CMD_BUFFER_DATA(commandBuffer);
|
struct command_buffer_data *cmd_buffer_data =
|
||||||
|
FIND(struct command_buffer_data, commandBuffer);
|
||||||
cmd_buffer_data->stats.stats[OVERLAY_PARAM_ENABLED_dispatch_indirect]++;
|
cmd_buffer_data->stats.stats[OVERLAY_PARAM_ENABLED_dispatch_indirect]++;
|
||||||
struct device_data *device_data = cmd_buffer_data->device;
|
struct device_data *device_data = cmd_buffer_data->device;
|
||||||
device_data->vtable.CmdDispatchIndirect(commandBuffer, buffer, offset);
|
device_data->vtable.CmdDispatchIndirect(commandBuffer, buffer, offset);
|
||||||
|
@ -1838,7 +1847,8 @@ static void overlay_CmdBindPipeline(
|
||||||
VkPipelineBindPoint pipelineBindPoint,
|
VkPipelineBindPoint pipelineBindPoint,
|
||||||
VkPipeline pipeline)
|
VkPipeline pipeline)
|
||||||
{
|
{
|
||||||
struct command_buffer_data *cmd_buffer_data = FIND_CMD_BUFFER_DATA(commandBuffer);
|
struct command_buffer_data *cmd_buffer_data =
|
||||||
|
FIND(struct command_buffer_data, commandBuffer);
|
||||||
switch (pipelineBindPoint) {
|
switch (pipelineBindPoint) {
|
||||||
case VK_PIPELINE_BIND_POINT_GRAPHICS: cmd_buffer_data->stats.stats[OVERLAY_PARAM_ENABLED_pipeline_graphics]++; break;
|
case VK_PIPELINE_BIND_POINT_GRAPHICS: cmd_buffer_data->stats.stats[OVERLAY_PARAM_ENABLED_pipeline_graphics]++; break;
|
||||||
case VK_PIPELINE_BIND_POINT_COMPUTE: cmd_buffer_data->stats.stats[OVERLAY_PARAM_ENABLED_pipeline_compute]++; break;
|
case VK_PIPELINE_BIND_POINT_COMPUTE: cmd_buffer_data->stats.stats[OVERLAY_PARAM_ENABLED_pipeline_compute]++; break;
|
||||||
|
@ -1853,7 +1863,8 @@ static VkResult overlay_BeginCommandBuffer(
|
||||||
VkCommandBuffer commandBuffer,
|
VkCommandBuffer commandBuffer,
|
||||||
const VkCommandBufferBeginInfo* pBeginInfo)
|
const VkCommandBufferBeginInfo* pBeginInfo)
|
||||||
{
|
{
|
||||||
struct command_buffer_data *cmd_buffer_data = FIND_CMD_BUFFER_DATA(commandBuffer);
|
struct command_buffer_data *cmd_buffer_data =
|
||||||
|
FIND(struct command_buffer_data, commandBuffer);
|
||||||
struct device_data *device_data = cmd_buffer_data->device;
|
struct device_data *device_data = cmd_buffer_data->device;
|
||||||
|
|
||||||
memset(&cmd_buffer_data->stats, 0, sizeof(cmd_buffer_data->stats));
|
memset(&cmd_buffer_data->stats, 0, sizeof(cmd_buffer_data->stats));
|
||||||
|
@ -1927,7 +1938,8 @@ static VkResult overlay_BeginCommandBuffer(
|
||||||
static VkResult overlay_EndCommandBuffer(
|
static VkResult overlay_EndCommandBuffer(
|
||||||
VkCommandBuffer commandBuffer)
|
VkCommandBuffer commandBuffer)
|
||||||
{
|
{
|
||||||
struct command_buffer_data *cmd_buffer_data = FIND_CMD_BUFFER_DATA(commandBuffer);
|
struct command_buffer_data *cmd_buffer_data =
|
||||||
|
FIND(struct command_buffer_data, commandBuffer);
|
||||||
struct device_data *device_data = cmd_buffer_data->device;
|
struct device_data *device_data = cmd_buffer_data->device;
|
||||||
|
|
||||||
if (cmd_buffer_data->timestamp_query_pool) {
|
if (cmd_buffer_data->timestamp_query_pool) {
|
||||||
|
@ -1949,7 +1961,8 @@ static VkResult overlay_ResetCommandBuffer(
|
||||||
VkCommandBuffer commandBuffer,
|
VkCommandBuffer commandBuffer,
|
||||||
VkCommandBufferResetFlags flags)
|
VkCommandBufferResetFlags flags)
|
||||||
{
|
{
|
||||||
struct command_buffer_data *cmd_buffer_data = FIND_CMD_BUFFER_DATA(commandBuffer);
|
struct command_buffer_data *cmd_buffer_data =
|
||||||
|
FIND(struct command_buffer_data, commandBuffer);
|
||||||
struct device_data *device_data = cmd_buffer_data->device;
|
struct device_data *device_data = cmd_buffer_data->device;
|
||||||
|
|
||||||
memset(&cmd_buffer_data->stats, 0, sizeof(cmd_buffer_data->stats));
|
memset(&cmd_buffer_data->stats, 0, sizeof(cmd_buffer_data->stats));
|
||||||
|
@ -1962,12 +1975,14 @@ static void overlay_CmdExecuteCommands(
|
||||||
uint32_t commandBufferCount,
|
uint32_t commandBufferCount,
|
||||||
const VkCommandBuffer* pCommandBuffers)
|
const VkCommandBuffer* pCommandBuffers)
|
||||||
{
|
{
|
||||||
struct command_buffer_data *cmd_buffer_data = FIND_CMD_BUFFER_DATA(commandBuffer);
|
struct command_buffer_data *cmd_buffer_data =
|
||||||
|
FIND(struct command_buffer_data, commandBuffer);
|
||||||
struct device_data *device_data = cmd_buffer_data->device;
|
struct device_data *device_data = cmd_buffer_data->device;
|
||||||
|
|
||||||
/* Add the stats of the executed command buffers to the primary one. */
|
/* Add the stats of the executed command buffers to the primary one. */
|
||||||
for (uint32_t c = 0; c < commandBufferCount; c++) {
|
for (uint32_t c = 0; c < commandBufferCount; c++) {
|
||||||
struct command_buffer_data *sec_cmd_buffer_data = FIND_CMD_BUFFER_DATA(pCommandBuffers[c]);
|
struct command_buffer_data *sec_cmd_buffer_data =
|
||||||
|
FIND(struct command_buffer_data, pCommandBuffers[c]);
|
||||||
|
|
||||||
for (uint32_t s = 0; s < OVERLAY_PARAM_ENABLED_MAX; s++)
|
for (uint32_t s = 0; s < OVERLAY_PARAM_ENABLED_MAX; s++)
|
||||||
cmd_buffer_data->stats.stats[s] += sec_cmd_buffer_data->stats.stats[s];
|
cmd_buffer_data->stats.stats[s] += sec_cmd_buffer_data->stats.stats[s];
|
||||||
|
@ -1981,7 +1996,7 @@ static VkResult overlay_AllocateCommandBuffers(
|
||||||
const VkCommandBufferAllocateInfo* pAllocateInfo,
|
const VkCommandBufferAllocateInfo* pAllocateInfo,
|
||||||
VkCommandBuffer* pCommandBuffers)
|
VkCommandBuffer* pCommandBuffers)
|
||||||
{
|
{
|
||||||
struct device_data *device_data = FIND_DEVICE_DATA(device);
|
struct device_data *device_data = FIND(struct device_data, device);
|
||||||
VkResult result =
|
VkResult result =
|
||||||
device_data->vtable.AllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers);
|
device_data->vtable.AllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers);
|
||||||
if (result != VK_SUCCESS)
|
if (result != VK_SUCCESS)
|
||||||
|
@ -2035,10 +2050,11 @@ static void overlay_FreeCommandBuffers(
|
||||||
uint32_t commandBufferCount,
|
uint32_t commandBufferCount,
|
||||||
const VkCommandBuffer* pCommandBuffers)
|
const VkCommandBuffer* pCommandBuffers)
|
||||||
{
|
{
|
||||||
struct device_data *device_data = FIND_DEVICE_DATA(device);
|
struct device_data *device_data = FIND(struct device_data, device);
|
||||||
for (uint32_t i = 0; i < commandBufferCount; i++) {
|
for (uint32_t i = 0; i < commandBufferCount; i++) {
|
||||||
struct command_buffer_data *cmd_buffer_data =
|
struct command_buffer_data *cmd_buffer_data =
|
||||||
FIND_CMD_BUFFER_DATA(pCommandBuffers[i]);
|
FIND(struct command_buffer_data, pCommandBuffers[i]);
|
||||||
|
|
||||||
/* It is legal to free a NULL command buffer*/
|
/* It is legal to free a NULL command buffer*/
|
||||||
if (!cmd_buffer_data)
|
if (!cmd_buffer_data)
|
||||||
continue;
|
continue;
|
||||||
|
@ -2072,7 +2088,7 @@ static VkResult overlay_QueueSubmit(
|
||||||
const VkSubmitInfo* pSubmits,
|
const VkSubmitInfo* pSubmits,
|
||||||
VkFence fence)
|
VkFence fence)
|
||||||
{
|
{
|
||||||
struct queue_data *queue_data = FIND_QUEUE_DATA(queue);
|
struct queue_data *queue_data = FIND(struct queue_data, queue);
|
||||||
struct device_data *device_data = queue_data->device;
|
struct device_data *device_data = queue_data->device;
|
||||||
|
|
||||||
device_data->frame_stats.stats[OVERLAY_PARAM_ENABLED_submit]++;
|
device_data->frame_stats.stats[OVERLAY_PARAM_ENABLED_submit]++;
|
||||||
|
@ -2080,7 +2096,7 @@ static VkResult overlay_QueueSubmit(
|
||||||
for (uint32_t s = 0; s < submitCount; s++) {
|
for (uint32_t s = 0; s < submitCount; s++) {
|
||||||
for (uint32_t c = 0; c < pSubmits[s].commandBufferCount; c++) {
|
for (uint32_t c = 0; c < pSubmits[s].commandBufferCount; c++) {
|
||||||
struct command_buffer_data *cmd_buffer_data =
|
struct command_buffer_data *cmd_buffer_data =
|
||||||
FIND_CMD_BUFFER_DATA(pSubmits[s].pCommandBuffers[c]);
|
FIND(struct command_buffer_data, pSubmits[s].pCommandBuffers[c]);
|
||||||
|
|
||||||
/* Merge the submitted command buffer stats into the device. */
|
/* Merge the submitted command buffer stats into the device. */
|
||||||
for (uint32_t st = 0; st < OVERLAY_PARAM_ENABLED_MAX; st++)
|
for (uint32_t st = 0; st < OVERLAY_PARAM_ENABLED_MAX; st++)
|
||||||
|
@ -2112,7 +2128,8 @@ static VkResult overlay_CreateDevice(
|
||||||
const VkAllocationCallbacks* pAllocator,
|
const VkAllocationCallbacks* pAllocator,
|
||||||
VkDevice* pDevice)
|
VkDevice* pDevice)
|
||||||
{
|
{
|
||||||
struct instance_data *instance_data = FIND_PHYSICAL_DEVICE_DATA(physicalDevice);
|
struct instance_data *instance_data =
|
||||||
|
FIND(struct instance_data, physicalDevice);
|
||||||
VkLayerDeviceCreateInfo *chain_info =
|
VkLayerDeviceCreateInfo *chain_info =
|
||||||
get_device_chain_info(pCreateInfo, VK_LAYER_LINK_INFO);
|
get_device_chain_info(pCreateInfo, VK_LAYER_LINK_INFO);
|
||||||
|
|
||||||
|
@ -2162,7 +2179,7 @@ static void overlay_DestroyDevice(
|
||||||
VkDevice device,
|
VkDevice device,
|
||||||
const VkAllocationCallbacks* pAllocator)
|
const VkAllocationCallbacks* pAllocator)
|
||||||
{
|
{
|
||||||
struct device_data *device_data = FIND_DEVICE_DATA(device);
|
struct device_data *device_data = FIND(struct device_data, device);
|
||||||
device_unmap_queues(device_data);
|
device_unmap_queues(device_data);
|
||||||
device_data->vtable.DestroyDevice(device, pAllocator);
|
device_data->vtable.DestroyDevice(device, pAllocator);
|
||||||
destroy_device_data(device_data);
|
destroy_device_data(device_data);
|
||||||
|
@ -2214,7 +2231,7 @@ static void overlay_DestroyInstance(
|
||||||
VkInstance instance,
|
VkInstance instance,
|
||||||
const VkAllocationCallbacks* pAllocator)
|
const VkAllocationCallbacks* pAllocator)
|
||||||
{
|
{
|
||||||
struct instance_data *instance_data = FIND_INSTANCE_DATA(instance);
|
struct instance_data *instance_data = FIND(struct instance_data, instance);
|
||||||
instance_data_map_physical_devices(instance_data, false);
|
instance_data_map_physical_devices(instance_data, false);
|
||||||
instance_data->vtable.DestroyInstance(instance, pAllocator);
|
instance_data->vtable.DestroyInstance(instance, pAllocator);
|
||||||
destroy_instance_data(instance_data);
|
destroy_instance_data(instance_data);
|
||||||
|
@ -2278,7 +2295,7 @@ VK_LAYER_EXPORT VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetDeviceProcAddr(VkD
|
||||||
|
|
||||||
if (dev == NULL) return NULL;
|
if (dev == NULL) return NULL;
|
||||||
|
|
||||||
struct device_data *device_data = FIND_DEVICE_DATA(dev);
|
struct device_data *device_data = FIND(struct device_data, dev);
|
||||||
if (device_data->vtable.GetDeviceProcAddr == NULL) return NULL;
|
if (device_data->vtable.GetDeviceProcAddr == NULL) return NULL;
|
||||||
return device_data->vtable.GetDeviceProcAddr(dev, funcName);
|
return device_data->vtable.GetDeviceProcAddr(dev, funcName);
|
||||||
}
|
}
|
||||||
|
@ -2291,7 +2308,7 @@ VK_LAYER_EXPORT VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetInstanceProcAddr(V
|
||||||
|
|
||||||
if (instance == NULL) return NULL;
|
if (instance == NULL) return NULL;
|
||||||
|
|
||||||
struct instance_data *instance_data = FIND_INSTANCE_DATA(instance);
|
struct instance_data *instance_data = FIND(struct instance_data, instance);
|
||||||
if (instance_data->vtable.GetInstanceProcAddr == NULL) return NULL;
|
if (instance_data->vtable.GetInstanceProcAddr == NULL) return NULL;
|
||||||
return instance_data->vtable.GetInstanceProcAddr(instance, funcName);
|
return instance_data->vtable.GetInstanceProcAddr(instance, funcName);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue