diff --git a/src/dxvk/dxvk_include.h b/src/dxvk/dxvk_include.h index 8786f01d..722c37a0 100644 --- a/src/dxvk/dxvk_include.h +++ b/src/dxvk/dxvk_include.h @@ -18,3 +18,4 @@ #include "../vulkan/vulkan_loader.h" #include "../vulkan/vulkan_names.h" +#include "../vulkan/vulkan_util.h" diff --git a/src/dxvk/dxvk_util.h b/src/dxvk/dxvk_util.h index c98481e0..b736fb25 100644 --- a/src/dxvk/dxvk_util.h +++ b/src/dxvk/dxvk_util.h @@ -213,64 +213,3 @@ namespace dxvk::util { uint32_t identity); } - - -inline bool operator == ( - const VkImageSubresourceRange& a, - const VkImageSubresourceRange& b) { - return a.aspectMask == b.aspectMask - && a.baseMipLevel == b.baseMipLevel - && a.levelCount == b.levelCount - && a.baseArrayLayer == b.baseArrayLayer - && a.layerCount == b.layerCount; -} - - -inline bool operator != ( - const VkImageSubresourceRange& a, - const VkImageSubresourceRange& b) { - return !operator == (a, b); -} - - -inline bool operator == ( - const VkImageSubresourceLayers& a, - const VkImageSubresourceLayers& b) { - return a.aspectMask == b.aspectMask - && a.mipLevel == b.mipLevel - && a.baseArrayLayer == b.baseArrayLayer - && a.layerCount == b.layerCount; -} - - -inline bool operator != ( - const VkImageSubresourceLayers& a, - const VkImageSubresourceLayers& b) { - return !operator == (a, b); -} - - -inline bool operator == (VkExtent3D a, VkExtent3D b) { - return a.width == b.width - && a.height == b.height - && a.depth == b.depth; -} - - -inline bool operator != (VkExtent3D a, VkExtent3D b) { - return a.width != b.width - || a.height != b.height - || a.depth != b.depth; -} - - -inline bool operator == (VkExtent2D a, VkExtent2D b) { - return a.width == b.width - && a.height == b.height; -} - - -inline bool operator != (VkExtent2D a, VkExtent2D b) { - return a.width != b.width - || a.height != b.height; -} diff --git a/src/vulkan/vulkan_util.h b/src/vulkan/vulkan_util.h new file mode 100644 index 00000000..4363967d --- /dev/null +++ b/src/vulkan/vulkan_util.h @@ -0,0 +1,112 @@ +#pragma once + +#include "vulkan_loader_fn.h" + +namespace dxvk::vk { + + inline VkImageSubresourceRange makeSubresourceRange( + const VkImageSubresourceLayers& layers) { + VkImageSubresourceRange range; + range.aspectMask = layers.aspectMask; + range.baseMipLevel = layers.mipLevel; + range.levelCount = 1; + range.baseArrayLayer = layers.baseArrayLayer; + range.layerCount = layers.layerCount; + return range; + } + + inline VkImageSubresourceRange makeSubresourceRange( + const VkImageSubresource& subres) { + VkImageSubresourceRange range; + range.aspectMask = subres.aspectMask; + range.baseMipLevel = subres.mipLevel; + range.levelCount = 1; + range.baseArrayLayer = subres.arrayLayer; + range.layerCount = 1; + return range; + } + + inline VkImageSubresourceLayers pickSubresourceLayers( + const VkImageSubresourceRange& range, + uint32_t level) { + VkImageSubresourceLayers layers; + layers.aspectMask = range.aspectMask; + layers.mipLevel = range.baseMipLevel + level; + layers.baseArrayLayer = range.baseArrayLayer; + layers.layerCount = range.layerCount; + return layers; + } + + inline VkImageSubresource pickSubresource( + const VkImageSubresourceRange& range, + uint32_t level, + uint32_t layer) { + VkImageSubresource subres; + subres.aspectMask = range.aspectMask; + subres.mipLevel = range.baseMipLevel + level; + subres.arrayLayer = range.baseArrayLayer + layer; + return subres; + } + +} + + +inline bool operator == ( + const VkImageSubresourceRange& a, + const VkImageSubresourceRange& b) { + return a.aspectMask == b.aspectMask + && a.baseMipLevel == b.baseMipLevel + && a.levelCount == b.levelCount + && a.baseArrayLayer == b.baseArrayLayer + && a.layerCount == b.layerCount; +} + + +inline bool operator != ( + const VkImageSubresourceRange& a, + const VkImageSubresourceRange& b) { + return !operator == (a, b); +} + + +inline bool operator == ( + const VkImageSubresourceLayers& a, + const VkImageSubresourceLayers& b) { + return a.aspectMask == b.aspectMask + && a.mipLevel == b.mipLevel + && a.baseArrayLayer == b.baseArrayLayer + && a.layerCount == b.layerCount; +} + + +inline bool operator != ( + const VkImageSubresourceLayers& a, + const VkImageSubresourceLayers& b) { + return !operator == (a, b); +} + + +inline bool operator == (VkExtent3D a, VkExtent3D b) { + return a.width == b.width + && a.height == b.height + && a.depth == b.depth; +} + + +inline bool operator != (VkExtent3D a, VkExtent3D b) { + return a.width != b.width + || a.height != b.height + || a.depth != b.depth; +} + + +inline bool operator == (VkExtent2D a, VkExtent2D b) { + return a.width == b.width + && a.height == b.height; +} + + +inline bool operator != (VkExtent2D a, VkExtent2D b) { + return a.width != b.width + || a.height != b.height; +}