diff --git a/src/dxvk/dxvk_format.cpp b/src/dxvk/dxvk_format.cpp index bb38b212..9308f443 100644 --- a/src/dxvk/dxvk_format.cpp +++ b/src/dxvk/dxvk_format.cpp @@ -43,10 +43,12 @@ namespace dxvk { { 1, VK_IMAGE_ASPECT_COLOR_BIT }, // VK_FORMAT_R8_UINT - { 1, VK_IMAGE_ASPECT_COLOR_BIT }, + { 1, VK_IMAGE_ASPECT_COLOR_BIT, + DxvkFormatFlag::SampledInteger }, // VK_FORMAT_R8_SINT - { 1, VK_IMAGE_ASPECT_COLOR_BIT }, + { 1, VK_IMAGE_ASPECT_COLOR_BIT, + DxvkFormatFlag::SampledInteger }, // VK_FORMAT_R8_SRGB { 1, VK_IMAGE_ASPECT_COLOR_BIT }, @@ -64,10 +66,12 @@ namespace dxvk { { 2, VK_IMAGE_ASPECT_COLOR_BIT }, // VK_FORMAT_R8G8_UINT - { 2, VK_IMAGE_ASPECT_COLOR_BIT }, + { 2, VK_IMAGE_ASPECT_COLOR_BIT, + DxvkFormatFlag::SampledInteger }, // VK_FORMAT_R8G8_SINT - { 2, VK_IMAGE_ASPECT_COLOR_BIT }, + { 2, VK_IMAGE_ASPECT_COLOR_BIT, + DxvkFormatFlag::SampledInteger }, // VK_FORMAT_R8G8_SRGB { 2, VK_IMAGE_ASPECT_COLOR_BIT }, @@ -85,10 +89,12 @@ namespace dxvk { { 3, VK_IMAGE_ASPECT_COLOR_BIT }, // VK_FORMAT_R8G8B8_UINT - { 3, VK_IMAGE_ASPECT_COLOR_BIT }, + { 3, VK_IMAGE_ASPECT_COLOR_BIT, + DxvkFormatFlag::SampledInteger }, // VK_FORMAT_R8G8B8_SINT - { 3, VK_IMAGE_ASPECT_COLOR_BIT }, + { 3, VK_IMAGE_ASPECT_COLOR_BIT, + DxvkFormatFlag::SampledInteger }, // VK_FORMAT_R8G8B8_SRGB { 3, VK_IMAGE_ASPECT_COLOR_BIT }, @@ -106,10 +112,12 @@ namespace dxvk { { 3, VK_IMAGE_ASPECT_COLOR_BIT }, // VK_FORMAT_B8G8R8_UINT - { 3, VK_IMAGE_ASPECT_COLOR_BIT }, + { 3, VK_IMAGE_ASPECT_COLOR_BIT, + DxvkFormatFlag::SampledInteger }, // VK_FORMAT_B8G8R8_SINT - { 3, VK_IMAGE_ASPECT_COLOR_BIT }, + { 3, VK_IMAGE_ASPECT_COLOR_BIT, + DxvkFormatFlag::SampledInteger }, // VK_FORMAT_B8G8R8_SRGB { 3, VK_IMAGE_ASPECT_COLOR_BIT }, @@ -127,10 +135,12 @@ namespace dxvk { { 4, VK_IMAGE_ASPECT_COLOR_BIT }, // VK_FORMAT_R8G8B8A8_UINT - { 4, VK_IMAGE_ASPECT_COLOR_BIT }, + { 4, VK_IMAGE_ASPECT_COLOR_BIT, + DxvkFormatFlag::SampledInteger }, // VK_FORMAT_R8G8B8A8_SINT - { 4, VK_IMAGE_ASPECT_COLOR_BIT }, + { 4, VK_IMAGE_ASPECT_COLOR_BIT, + DxvkFormatFlag::SampledInteger }, // VK_FORMAT_R8G8B8A8_SRGB { 4, VK_IMAGE_ASPECT_COLOR_BIT }, @@ -148,10 +158,12 @@ namespace dxvk { { 4, VK_IMAGE_ASPECT_COLOR_BIT }, // VK_FORMAT_B8G8R8A8_UINT - { 4, VK_IMAGE_ASPECT_COLOR_BIT }, + { 4, VK_IMAGE_ASPECT_COLOR_BIT, + DxvkFormatFlag::SampledInteger }, // VK_FORMAT_B8G8R8A8_SINT - { 4, VK_IMAGE_ASPECT_COLOR_BIT }, + { 4, VK_IMAGE_ASPECT_COLOR_BIT, + DxvkFormatFlag::SampledInteger }, // VK_FORMAT_B8G8R8A8_SRGB { 4, VK_IMAGE_ASPECT_COLOR_BIT }, @@ -169,10 +181,12 @@ namespace dxvk { { 4, VK_IMAGE_ASPECT_COLOR_BIT }, // VK_FORMAT_A8B8G8R8_UINT_PACK32 - { 4, VK_IMAGE_ASPECT_COLOR_BIT }, + { 4, VK_IMAGE_ASPECT_COLOR_BIT, + DxvkFormatFlag::SampledInteger }, // VK_FORMAT_A8B8G8R8_SINT_PACK32 - { 4, VK_IMAGE_ASPECT_COLOR_BIT }, + { 4, VK_IMAGE_ASPECT_COLOR_BIT, + DxvkFormatFlag::SampledInteger }, // VK_FORMAT_A8B8G8R8_SRGB_PACK32 { 4, VK_IMAGE_ASPECT_COLOR_BIT }, @@ -190,10 +204,12 @@ namespace dxvk { { 4, VK_IMAGE_ASPECT_COLOR_BIT }, // VK_FORMAT_A2R10G10B10_UINT_PACK32 - { 4, VK_IMAGE_ASPECT_COLOR_BIT }, + { 4, VK_IMAGE_ASPECT_COLOR_BIT, + DxvkFormatFlag::SampledInteger }, // VK_FORMAT_A2R10G10B10_SINT_PACK32 - { 4, VK_IMAGE_ASPECT_COLOR_BIT }, + { 4, VK_IMAGE_ASPECT_COLOR_BIT, + DxvkFormatFlag::SampledInteger }, // VK_FORMAT_A2B10G10R10_UNORM_PACK32 { 4, VK_IMAGE_ASPECT_COLOR_BIT }, @@ -208,10 +224,12 @@ namespace dxvk { { 4, VK_IMAGE_ASPECT_COLOR_BIT }, // VK_FORMAT_A2B10G10R10_UINT_PACK32 - { 4, VK_IMAGE_ASPECT_COLOR_BIT }, + { 4, VK_IMAGE_ASPECT_COLOR_BIT, + DxvkFormatFlag::SampledInteger }, // VK_FORMAT_A2B10G10R10_SINT_PACK32 - { 4, VK_IMAGE_ASPECT_COLOR_BIT }, + { 4, VK_IMAGE_ASPECT_COLOR_BIT, + DxvkFormatFlag::SampledInteger }, // VK_FORMAT_R16_UNORM { 2, VK_IMAGE_ASPECT_COLOR_BIT }, @@ -226,10 +244,12 @@ namespace dxvk { { 2, VK_IMAGE_ASPECT_COLOR_BIT }, // VK_FORMAT_R16_UINT - { 2, VK_IMAGE_ASPECT_COLOR_BIT }, + { 2, VK_IMAGE_ASPECT_COLOR_BIT, + DxvkFormatFlag::SampledInteger }, // VK_FORMAT_R16_SINT - { 2, VK_IMAGE_ASPECT_COLOR_BIT }, + { 2, VK_IMAGE_ASPECT_COLOR_BIT, + DxvkFormatFlag::SampledInteger }, // VK_FORMAT_R16_SFLOAT { 2, VK_IMAGE_ASPECT_COLOR_BIT }, @@ -247,10 +267,12 @@ namespace dxvk { { 4, VK_IMAGE_ASPECT_COLOR_BIT }, // VK_FORMAT_R16G16_UINT - { 4, VK_IMAGE_ASPECT_COLOR_BIT }, + { 4, VK_IMAGE_ASPECT_COLOR_BIT, + DxvkFormatFlag::SampledInteger }, // VK_FORMAT_R16G16_SINT - { 4, VK_IMAGE_ASPECT_COLOR_BIT }, + { 4, VK_IMAGE_ASPECT_COLOR_BIT, + DxvkFormatFlag::SampledInteger }, // VK_FORMAT_R16G16_SFLOAT { 4, VK_IMAGE_ASPECT_COLOR_BIT }, @@ -268,10 +290,12 @@ namespace dxvk { { 6, VK_IMAGE_ASPECT_COLOR_BIT }, // VK_FORMAT_R16G16B16_UINT - { 6, VK_IMAGE_ASPECT_COLOR_BIT }, + { 6, VK_IMAGE_ASPECT_COLOR_BIT, + DxvkFormatFlag::SampledInteger }, // VK_FORMAT_R16G16B16_SINT - { 6, VK_IMAGE_ASPECT_COLOR_BIT }, + { 6, VK_IMAGE_ASPECT_COLOR_BIT, + DxvkFormatFlag::SampledInteger }, // VK_FORMAT_R16G16B16_SFLOAT { 6, VK_IMAGE_ASPECT_COLOR_BIT }, @@ -289,82 +313,100 @@ namespace dxvk { { 8, VK_IMAGE_ASPECT_COLOR_BIT }, // VK_FORMAT_R16G16B16A16_UINT - { 8, VK_IMAGE_ASPECT_COLOR_BIT }, + { 8, VK_IMAGE_ASPECT_COLOR_BIT, + DxvkFormatFlag::SampledInteger }, // VK_FORMAT_R16G16B16A16_SINT - { 8, VK_IMAGE_ASPECT_COLOR_BIT }, + { 8, VK_IMAGE_ASPECT_COLOR_BIT, + DxvkFormatFlag::SampledInteger }, // VK_FORMAT_R16G16B16A16_SFLOAT { 8, VK_IMAGE_ASPECT_COLOR_BIT }, // VK_FORMAT_R32_UINT - { 4, VK_IMAGE_ASPECT_COLOR_BIT }, + { 4, VK_IMAGE_ASPECT_COLOR_BIT, + DxvkFormatFlag::SampledInteger }, // VK_FORMAT_R32_SINT - { 4, VK_IMAGE_ASPECT_COLOR_BIT }, + { 4, VK_IMAGE_ASPECT_COLOR_BIT, + DxvkFormatFlag::SampledInteger }, // VK_FORMAT_R32_SFLOAT { 4, VK_IMAGE_ASPECT_COLOR_BIT }, // VK_FORMAT_R32G32_UINT - { 8, VK_IMAGE_ASPECT_COLOR_BIT }, + { 8, VK_IMAGE_ASPECT_COLOR_BIT, + DxvkFormatFlag::SampledInteger }, // VK_FORMAT_R32G32_SINT - { 8, VK_IMAGE_ASPECT_COLOR_BIT }, + { 8, VK_IMAGE_ASPECT_COLOR_BIT, + DxvkFormatFlag::SampledInteger }, // VK_FORMAT_R32G32_SFLOAT { 8, VK_IMAGE_ASPECT_COLOR_BIT }, // VK_FORMAT_R32G32B32_UINT - { 12, VK_IMAGE_ASPECT_COLOR_BIT }, + { 12, VK_IMAGE_ASPECT_COLOR_BIT, + DxvkFormatFlag::SampledInteger }, // VK_FORMAT_R32G32B32_SINT - { 12, VK_IMAGE_ASPECT_COLOR_BIT }, + { 12, VK_IMAGE_ASPECT_COLOR_BIT, + DxvkFormatFlag::SampledInteger }, // VK_FORMAT_R32G32B32_SFLOAT { 12, VK_IMAGE_ASPECT_COLOR_BIT }, // VK_FORMAT_R32G32B32A32_UINT - { 16, VK_IMAGE_ASPECT_COLOR_BIT }, + { 16, VK_IMAGE_ASPECT_COLOR_BIT, + DxvkFormatFlag::SampledInteger }, // VK_FORMAT_R32G32B32A32_SINT - { 16, VK_IMAGE_ASPECT_COLOR_BIT }, + { 16, VK_IMAGE_ASPECT_COLOR_BIT, + DxvkFormatFlag::SampledInteger }, // VK_FORMAT_R32G32B32A32_SFLOAT { 16, VK_IMAGE_ASPECT_COLOR_BIT }, // VK_FORMAT_R64_UINT - { 8, VK_IMAGE_ASPECT_COLOR_BIT }, + { 8, VK_IMAGE_ASPECT_COLOR_BIT, + DxvkFormatFlag::SampledInteger }, // VK_FORMAT_R64_SINT - { 8, VK_IMAGE_ASPECT_COLOR_BIT }, + { 8, VK_IMAGE_ASPECT_COLOR_BIT, + DxvkFormatFlag::SampledInteger }, // VK_FORMAT_R64_SFLOAT { 8, VK_IMAGE_ASPECT_COLOR_BIT }, // VK_FORMAT_R64G64_UINT - { 16, VK_IMAGE_ASPECT_COLOR_BIT }, + { 16, VK_IMAGE_ASPECT_COLOR_BIT, + DxvkFormatFlag::SampledInteger }, // VK_FORMAT_R64G64_SINT - { 16, VK_IMAGE_ASPECT_COLOR_BIT }, + { 16, VK_IMAGE_ASPECT_COLOR_BIT, + DxvkFormatFlag::SampledInteger }, // VK_FORMAT_R64G64_SFLOAT { 16, VK_IMAGE_ASPECT_COLOR_BIT }, // VK_FORMAT_R64G64B64_UINT - { 24, VK_IMAGE_ASPECT_COLOR_BIT }, + { 24, VK_IMAGE_ASPECT_COLOR_BIT, + DxvkFormatFlag::SampledInteger }, // VK_FORMAT_R64G64B64_SINT - { 24, VK_IMAGE_ASPECT_COLOR_BIT }, + { 24, VK_IMAGE_ASPECT_COLOR_BIT, + DxvkFormatFlag::SampledInteger }, // VK_FORMAT_R64G64B64_SFLOAT { 24, VK_IMAGE_ASPECT_COLOR_BIT }, // VK_FORMAT_R64G64B64A64_UINT - { 32, VK_IMAGE_ASPECT_COLOR_BIT }, + { 32, VK_IMAGE_ASPECT_COLOR_BIT, + DxvkFormatFlag::SampledInteger }, // VK_FORMAT_R64G64B64A64_SINT - { 32, VK_IMAGE_ASPECT_COLOR_BIT }, + { 32, VK_IMAGE_ASPECT_COLOR_BIT, + DxvkFormatFlag::SampledInteger }, // VK_FORMAT_R64G64B64A64_SFLOAT { 32, VK_IMAGE_ASPECT_COLOR_BIT }, diff --git a/src/dxvk/dxvk_format.h b/src/dxvk/dxvk_format.h index f0baaa4b..bb60ecbc 100644 --- a/src/dxvk/dxvk_format.h +++ b/src/dxvk/dxvk_format.h @@ -5,7 +5,8 @@ namespace dxvk { enum class DxvkFormatFlag { - BlockCompressed, + BlockCompressed = 0, ///< Image format is block compressed + SampledInteger = 1, ///< Sampled type is an integer type }; using DxvkFormatFlags = Flags;