aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChia-I Wu <olv@lunarg.com>2015-10-26 17:32:47 +0800
committerCourtney Goeltzenleuchter <courtney@LunarG.com>2015-11-02 14:17:21 -0700
commit6555f3f867ff897affd8eeb892dc445b4e9ac5f7 (patch)
tree608c3b766b5ce25cb0583383ace9edfa6df1b31d
parentfbb7a1c331cc86f44f6505bc7d65ca8910a6b8c3 (diff)
downloadusermoji-6555f3f867ff897affd8eeb892dc445b4e9ac5f7.tar.xz
MR 542: Remaining items from the cleanup bug (WIP)
depthStencilAttachment is replaced by pDepthStencilAttachment. s/VK_CULL_MODE_FRONT\b/VK_CULL_MODE_FRONT_BIT/g s/VK_CULL_MODE_BACK\b/VK_CULL_MODE_BACK_BIT/g s/VK_SAMPLER_ADDRESS_MODE_WRAP\b/VK_SAMPLER_ADDRESS_MODE_REPEAT/g s/VK_SAMPLER_ADDRESS_MODE_MIRROR\b/VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT/g s/VK_SAMPLER_ADDRESS_MODE_CLAMP\b/VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE/g s/VK_SAMPLER_ADDRESS_MODE_MIRROR_ONCE\b/VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE/g s/VK_SAMPLER_ADDRESS_MODE_CLAMP_BORDER\b/VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER/g https://gitlab.khronos.org/vulkan/vulkan/merge_requests/542
-rw-r--r--demos/cube.c23
-rw-r--r--demos/tri.c23
-rw-r--r--include/vulkan.h194
-rwxr-xr-xlayers/draw_state.cpp32
-rw-r--r--layers/image.cpp3
-rw-r--r--layers/param_checker.cpp28
6 files changed, 139 insertions, 164 deletions
diff --git a/demos/cube.c b/demos/cube.c
index 68fde35d..be5d1b5f 100644
--- a/demos/cube.c
+++ b/demos/cube.c
@@ -1178,9 +1178,9 @@ static void demo_prepare_textures(struct demo *demo)
.magFilter = VK_FILTER_NEAREST,
.minFilter = VK_FILTER_NEAREST,
.mipmapMode = VK_SAMPLER_MIPMAP_MODE_BASE,
- .addressModeU = VK_SAMPLER_ADDRESS_MODE_CLAMP,
- .addressModeV = VK_SAMPLER_ADDRESS_MODE_CLAMP,
- .addressModeW = VK_SAMPLER_ADDRESS_MODE_CLAMP,
+ .addressModeU = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
+ .addressModeV = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
+ .addressModeW = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
.mipLodBias = 0.0f,
.maxAnisotropy = 1,
.compareOp = VK_COMPARE_OP_NEVER,
@@ -1332,8 +1332,6 @@ static void demo_prepare_render_pass(struct demo *demo)
{
const VkAttachmentDescription attachments[2] = {
[0] = {
- .sType = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION,
- .pNext = NULL,
.format = demo->format,
.samples = 1,
.loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR,
@@ -1344,8 +1342,6 @@ static void demo_prepare_render_pass(struct demo *demo)
.finalLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
},
[1] = {
- .sType = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION,
- .pNext = NULL,
.format = demo->depth.format,
.samples = 1,
.loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR,
@@ -1360,9 +1356,11 @@ static void demo_prepare_render_pass(struct demo *demo)
.attachment = 0,
.layout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
};
+ const VkAttachmentReference depth_reference = {
+ .attachment = 1,
+ .layout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL,
+ };
const VkSubpassDescription subpass = {
- .sType = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION,
- .pNext = NULL,
.pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS,
.flags = 0,
.inputAttachmentCount = 0,
@@ -1370,10 +1368,7 @@ static void demo_prepare_render_pass(struct demo *demo)
.colorAttachmentCount = 1,
.pColorAttachments = &color_reference,
.pResolveAttachments = NULL,
- .depthStencilAttachment = {
- .attachment = 1,
- .layout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL,
- },
+ .pDepthStencilAttachment = &depth_reference,
.preserveAttachmentCount = 0,
.pPreserveAttachments = NULL,
};
@@ -1587,7 +1582,7 @@ static void demo_prepare_pipeline(struct demo *demo)
memset(&rs, 0, sizeof(rs));
rs.sType = VK_STRUCTURE_TYPE_PIPELINE_RASTER_STATE_CREATE_INFO;
rs.fillMode = VK_FILL_MODE_SOLID;
- rs.cullMode = VK_CULL_MODE_BACK;
+ rs.cullMode = VK_CULL_MODE_BACK_BIT;
rs.frontFace = VK_FRONT_FACE_CCW;
rs.depthClampEnable = VK_FALSE;
rs.rasterizerDiscardEnable = VK_FALSE;
diff --git a/demos/tri.c b/demos/tri.c
index e2bc31ec..a5c30e31 100644
--- a/demos/tri.c
+++ b/demos/tri.c
@@ -937,9 +937,9 @@ static void demo_prepare_textures(struct demo *demo)
.magFilter = VK_FILTER_NEAREST,
.minFilter = VK_FILTER_NEAREST,
.mipmapMode = VK_SAMPLER_MIPMAP_MODE_BASE,
- .addressModeU = VK_SAMPLER_ADDRESS_MODE_WRAP,
- .addressModeV = VK_SAMPLER_ADDRESS_MODE_WRAP,
- .addressModeW = VK_SAMPLER_ADDRESS_MODE_WRAP,
+ .addressModeU = VK_SAMPLER_ADDRESS_MODE_REPEAT,
+ .addressModeV = VK_SAMPLER_ADDRESS_MODE_REPEAT,
+ .addressModeW = VK_SAMPLER_ADDRESS_MODE_REPEAT,
.mipLodBias = 0.0f,
.maxAnisotropy = 1,
.compareOp = VK_COMPARE_OP_NEVER,
@@ -1091,8 +1091,6 @@ static void demo_prepare_render_pass(struct demo *demo)
{
const VkAttachmentDescription attachments[2] = {
[0] = {
- .sType = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION,
- .pNext = NULL,
.format = demo->format,
.samples = 1,
.loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR,
@@ -1103,8 +1101,6 @@ static void demo_prepare_render_pass(struct demo *demo)
.finalLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
},
[1] = {
- .sType = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION,
- .pNext = NULL,
.format = demo->depth.format,
.samples = 1,
.loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR,
@@ -1119,9 +1115,11 @@ static void demo_prepare_render_pass(struct demo *demo)
.attachment = 0,
.layout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
};
+ const VkAttachmentReference depth_reference = {
+ .attachment = 1,
+ .layout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL,
+ };
const VkSubpassDescription subpass = {
- .sType = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION,
- .pNext = NULL,
.pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS,
.flags = 0,
.inputAttachmentCount = 0,
@@ -1129,10 +1127,7 @@ static void demo_prepare_render_pass(struct demo *demo)
.colorAttachmentCount = 1,
.pColorAttachments = &color_reference,
.pResolveAttachments = NULL,
- .depthStencilAttachment = {
- .attachment = 1,
- .layout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL,
- },
+ .pDepthStencilAttachment = &depth_reference,
.preserveAttachmentCount = 0,
.pPreserveAttachments = NULL,
};
@@ -1337,7 +1332,7 @@ static void demo_prepare_pipeline(struct demo *demo)
memset(&rs, 0, sizeof(rs));
rs.sType = VK_STRUCTURE_TYPE_PIPELINE_RASTER_STATE_CREATE_INFO;
rs.fillMode = VK_FILL_MODE_SOLID;
- rs.cullMode = VK_CULL_MODE_BACK;
+ rs.cullMode = VK_CULL_MODE_BACK_BIT;
rs.frontFace = VK_FRONT_FACE_CW;
rs.depthClampEnable = VK_FALSE;
rs.rasterizerDiscardEnable = VK_FALSE;
diff --git a/include/vulkan.h b/include/vulkan.h
index 38339984..d288e4a5 100644
--- a/include/vulkan.h
+++ b/include/vulkan.h
@@ -132,60 +132,57 @@ typedef enum {
typedef enum {
VK_STRUCTURE_TYPE_APPLICATION_INFO = 0,
- VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 1,
- VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO = 2,
- VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 3,
- VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 4,
- VK_STRUCTURE_TYPE_SHADER_CREATE_INFO = 5,
- VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 6,
- VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 7,
- VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 8,
- VK_STRUCTURE_TYPE_CMD_BUFFER_ALLOC_INFO = 9,
+ VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1,
+ VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2,
+ VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3,
+ VK_STRUCTURE_TYPE_SUBMIT_INFO = 4,
+ VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO = 5,
+ VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6,
+ VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7,
+ VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8,
+ VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9,
VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10,
- VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 11,
- VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 12,
- VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 13,
- VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 14,
- VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 15,
- VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 16,
- VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 17,
- VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 18,
- VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 19,
- VK_STRUCTURE_TYPE_PIPELINE_RASTER_STATE_CREATE_INFO = 20,
- VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 21,
- VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 22,
- VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 23,
- VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 24,
- VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 25,
- VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 26,
- VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 27,
- VK_STRUCTURE_TYPE_CMD_BUFFER_BEGIN_INFO = 28,
- VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 29,
- VK_STRUCTURE_TYPE_MEMORY_BARRIER = 30,
- VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 31,
- VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 32,
- VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33,
- VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 34,
- VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 35,
- VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 36,
- VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 37,
- VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 38,
- VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 39,
- VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION = 40,
- VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION = 41,
- VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY = 42,
+ VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11,
+ VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12,
+ VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13,
+ VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14,
+ VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15,
+ VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16,
+ VK_STRUCTURE_TYPE_SHADER_CREATE_INFO = 17,
+ VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 18,
+ VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 19,
+ VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 20,
+ VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 21,
+ VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 22,
+ VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 23,
+ VK_STRUCTURE_TYPE_PIPELINE_RASTER_STATE_CREATE_INFO = 24,
+ VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 25,
+ VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 26,
+ VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 27,
+ VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 28,
+ VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 29,
+ VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 30,
+ VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 31,
+ VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 32,
+ VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 33,
+ VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 34,
+ VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOC_INFO = 35,
+ VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 36,
+ VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 37,
+ VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 38,
+ VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 39,
+ VK_STRUCTURE_TYPE_CMD_POOL_CREATE_INFO = 40,
+ VK_STRUCTURE_TYPE_CMD_BUFFER_ALLOC_INFO = 41,
+ VK_STRUCTURE_TYPE_CMD_BUFFER_BEGIN_INFO = 42,
VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43,
- VK_STRUCTURE_TYPE_CMD_POOL_CREATE_INFO = 44,
- VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 45,
- VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 46,
- VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOC_INFO = 47,
- VK_STRUCTURE_TYPE_SUBMIT_INFO = 48,
- VK_STRUCTURE_TYPE_LAYER_INSTANCE_CREATE_INFO = 49,
- VK_STRUCTURE_TYPE_LAYER_DEVICE_CREATE_INFO = 50,
- VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 51,
+ VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44,
+ VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45,
+ VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46,
+ VK_STRUCTURE_TYPE_LAYER_INSTANCE_CREATE_INFO = 47,
+ VK_STRUCTURE_TYPE_LAYER_DEVICE_CREATE_INFO = 48,
VK_STRUCTURE_TYPE_BEGIN_RANGE = VK_STRUCTURE_TYPE_APPLICATION_INFO,
- VK_STRUCTURE_TYPE_END_RANGE = VK_STRUCTURE_TYPE_BIND_SPARSE_INFO,
- VK_STRUCTURE_TYPE_NUM = (VK_STRUCTURE_TYPE_BIND_SPARSE_INFO - VK_STRUCTURE_TYPE_APPLICATION_INFO + 1),
+ VK_STRUCTURE_TYPE_END_RANGE = VK_STRUCTURE_TYPE_LAYER_DEVICE_CREATE_INFO,
+ VK_STRUCTURE_TYPE_NUM = (VK_STRUCTURE_TYPE_LAYER_DEVICE_CREATE_INFO - VK_STRUCTURE_TYPE_APPLICATION_INFO + 1),
VK_STRUCTURE_TYPE_MAX_ENUM = 0x7FFFFFFF
} VkStructureType;
@@ -401,11 +398,11 @@ typedef enum {
} VkImageType;
typedef enum {
- VK_IMAGE_TILING_LINEAR = 0,
- VK_IMAGE_TILING_OPTIMAL = 1,
- VK_IMAGE_TILING_BEGIN_RANGE = VK_IMAGE_TILING_LINEAR,
- VK_IMAGE_TILING_END_RANGE = VK_IMAGE_TILING_OPTIMAL,
- VK_IMAGE_TILING_NUM = (VK_IMAGE_TILING_OPTIMAL - VK_IMAGE_TILING_LINEAR + 1),
+ VK_IMAGE_TILING_OPTIMAL = 0,
+ VK_IMAGE_TILING_LINEAR = 1,
+ VK_IMAGE_TILING_BEGIN_RANGE = VK_IMAGE_TILING_OPTIMAL,
+ VK_IMAGE_TILING_END_RANGE = VK_IMAGE_TILING_LINEAR,
+ VK_IMAGE_TILING_NUM = (VK_IMAGE_TILING_LINEAR - VK_IMAGE_TILING_OPTIMAL + 1),
VK_IMAGE_TILING_MAX_ENUM = 0x7FFFFFFF
} VkImageTiling;
@@ -471,15 +468,16 @@ typedef enum {
} VkImageViewType;
typedef enum {
- VK_CHANNEL_SWIZZLE_ZERO = 0,
- VK_CHANNEL_SWIZZLE_ONE = 1,
- VK_CHANNEL_SWIZZLE_R = 2,
- VK_CHANNEL_SWIZZLE_G = 3,
- VK_CHANNEL_SWIZZLE_B = 4,
- VK_CHANNEL_SWIZZLE_A = 5,
- VK_CHANNEL_SWIZZLE_BEGIN_RANGE = VK_CHANNEL_SWIZZLE_ZERO,
+ VK_CHANNEL_SWIZZLE_IDENTITY = 0,
+ VK_CHANNEL_SWIZZLE_ZERO = 1,
+ VK_CHANNEL_SWIZZLE_ONE = 2,
+ VK_CHANNEL_SWIZZLE_R = 3,
+ VK_CHANNEL_SWIZZLE_G = 4,
+ VK_CHANNEL_SWIZZLE_B = 5,
+ VK_CHANNEL_SWIZZLE_A = 6,
+ VK_CHANNEL_SWIZZLE_BEGIN_RANGE = VK_CHANNEL_SWIZZLE_IDENTITY,
VK_CHANNEL_SWIZZLE_END_RANGE = VK_CHANNEL_SWIZZLE_A,
- VK_CHANNEL_SWIZZLE_NUM = (VK_CHANNEL_SWIZZLE_A - VK_CHANNEL_SWIZZLE_ZERO + 1),
+ VK_CHANNEL_SWIZZLE_NUM = (VK_CHANNEL_SWIZZLE_A - VK_CHANNEL_SWIZZLE_IDENTITY + 1),
VK_CHANNEL_SWIZZLE_MAX_ENUM = 0x7FFFFFFF
} VkChannelSwizzle;
@@ -511,27 +509,16 @@ typedef enum {
} VkPrimitiveTopology;
typedef enum {
- VK_FILL_MODE_POINTS = 0,
+ VK_FILL_MODE_SOLID = 0,
VK_FILL_MODE_WIREFRAME = 1,
- VK_FILL_MODE_SOLID = 2,
- VK_FILL_MODE_BEGIN_RANGE = VK_FILL_MODE_POINTS,
- VK_FILL_MODE_END_RANGE = VK_FILL_MODE_SOLID,
- VK_FILL_MODE_NUM = (VK_FILL_MODE_SOLID - VK_FILL_MODE_POINTS + 1),
+ VK_FILL_MODE_POINTS = 2,
+ VK_FILL_MODE_BEGIN_RANGE = VK_FILL_MODE_SOLID,
+ VK_FILL_MODE_END_RANGE = VK_FILL_MODE_POINTS,
+ VK_FILL_MODE_NUM = (VK_FILL_MODE_POINTS - VK_FILL_MODE_SOLID + 1),
VK_FILL_MODE_MAX_ENUM = 0x7FFFFFFF
} VkFillMode;
typedef enum {
- VK_CULL_MODE_NONE = 0,
- VK_CULL_MODE_FRONT = 1,
- VK_CULL_MODE_BACK = 2,
- VK_CULL_MODE_FRONT_AND_BACK = 3,
- VK_CULL_MODE_BEGIN_RANGE = VK_CULL_MODE_NONE,
- VK_CULL_MODE_END_RANGE = VK_CULL_MODE_FRONT_AND_BACK,
- VK_CULL_MODE_NUM = (VK_CULL_MODE_FRONT_AND_BACK - VK_CULL_MODE_NONE + 1),
- VK_CULL_MODE_MAX_ENUM = 0x7FFFFFFF
-} VkCullMode;
-
-typedef enum {
VK_FRONT_FACE_CCW = 0,
VK_FRONT_FACE_CW = 1,
VK_FRONT_FACE_BEGIN_RANGE = VK_FRONT_FACE_CCW,
@@ -667,14 +654,14 @@ typedef enum {
} VkSamplerMipmapMode;
typedef enum {
- VK_SAMPLER_ADDRESS_MODE_WRAP = 0,
- VK_SAMPLER_ADDRESS_MODE_MIRROR = 1,
- VK_SAMPLER_ADDRESS_MODE_CLAMP = 2,
- VK_SAMPLER_ADDRESS_MODE_MIRROR_ONCE = 3,
- VK_SAMPLER_ADDRESS_MODE_CLAMP_BORDER = 4,
- VK_SAMPLER_ADDRESS_MODE_BEGIN_RANGE = VK_SAMPLER_ADDRESS_MODE_WRAP,
- VK_SAMPLER_ADDRESS_MODE_END_RANGE = VK_SAMPLER_ADDRESS_MODE_CLAMP_BORDER,
- VK_SAMPLER_ADDRESS_MODE_NUM = (VK_SAMPLER_ADDRESS_MODE_CLAMP_BORDER - VK_SAMPLER_ADDRESS_MODE_WRAP + 1),
+ VK_SAMPLER_ADDRESS_MODE_REPEAT = 0,
+ VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1,
+ VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2,
+ VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3,
+ VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4,
+ VK_SAMPLER_ADDRESS_MODE_BEGIN_RANGE = VK_SAMPLER_ADDRESS_MODE_REPEAT,
+ VK_SAMPLER_ADDRESS_MODE_END_RANGE = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE,
+ VK_SAMPLER_ADDRESS_MODE_NUM = (VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE - VK_SAMPLER_ADDRESS_MODE_REPEAT + 1),
VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 0x7FFFFFFF
} VkSamplerAddressMode;
@@ -729,11 +716,11 @@ typedef enum {
} VkAttachmentStoreOp;
typedef enum {
- VK_PIPELINE_BIND_POINT_COMPUTE = 0,
- VK_PIPELINE_BIND_POINT_GRAPHICS = 1,
- VK_PIPELINE_BIND_POINT_BEGIN_RANGE = VK_PIPELINE_BIND_POINT_COMPUTE,
- VK_PIPELINE_BIND_POINT_END_RANGE = VK_PIPELINE_BIND_POINT_GRAPHICS,
- VK_PIPELINE_BIND_POINT_NUM = (VK_PIPELINE_BIND_POINT_GRAPHICS - VK_PIPELINE_BIND_POINT_COMPUTE + 1),
+ VK_PIPELINE_BIND_POINT_GRAPHICS = 0,
+ VK_PIPELINE_BIND_POINT_COMPUTE = 1,
+ VK_PIPELINE_BIND_POINT_BEGIN_RANGE = VK_PIPELINE_BIND_POINT_GRAPHICS,
+ VK_PIPELINE_BIND_POINT_END_RANGE = VK_PIPELINE_BIND_POINT_COMPUTE,
+ VK_PIPELINE_BIND_POINT_NUM = (VK_PIPELINE_BIND_POINT_COMPUTE - VK_PIPELINE_BIND_POINT_GRAPHICS + 1),
VK_PIPELINE_BIND_POINT_MAX_ENUM = 0x7FFFFFFF
} VkPipelineBindPoint;
@@ -922,6 +909,7 @@ typedef enum {
VK_SHADER_STAGE_GEOMETRY_BIT = 0x00000008,
VK_SHADER_STAGE_FRAGMENT_BIT = 0x00000010,
VK_SHADER_STAGE_COMPUTE_BIT = 0x00000020,
+ VK_SHADER_STAGE_ALL_GRAPHICS = 0x1F,
VK_SHADER_STAGE_ALL = 0x7FFFFFFF,
} VkShaderStageFlagBits;
typedef VkFlags VkPipelineCacheCreateFlags;
@@ -938,6 +926,14 @@ typedef VkFlags VkPipelineInputAssemblyStateCreateFlags;
typedef VkFlags VkPipelineTesselationStateCreateFlags;
typedef VkFlags VkPipelineViewportStateCreateFlags;
typedef VkFlags VkPipelineRasterStateCreateFlags;
+
+typedef enum {
+ VK_CULL_MODE_NONE = 0,
+ VK_CULL_MODE_FRONT_BIT = 0x00000001,
+ VK_CULL_MODE_BACK_BIT = 0x00000002,
+ VK_CULL_MODE_FRONT_AND_BACK = 0x3,
+} VkCullModeFlagBits;
+typedef VkFlags VkCullModeFlags;
typedef VkFlags VkPipelineMultisampleStateCreateFlags;
typedef VkFlags VkPipelineDepthStencilStateCreateFlags;
typedef VkFlags VkPipelineColorBlendStateCreateFlags;
@@ -1044,6 +1040,7 @@ typedef enum {
VK_STENCIL_FACE_NONE = 0,
VK_STENCIL_FACE_FRONT_BIT = 0x00000001,
VK_STENCIL_FACE_BACK_BIT = 0x00000002,
+ VK_STENCIL_FRONT_AND_BACK = 0x3,
} VkStencilFaceFlagBits;
typedef VkFlags VkStencilFaceFlags;
@@ -1270,6 +1267,7 @@ typedef struct {
uint32_t maxColorAttachments;
uint32_t maxSampledImageColorSamples;
uint32_t maxSampledImageDepthSamples;
+ uint32_t maxSampledImageStencilSamples;
uint32_t maxSampledImageIntegerSamples;
uint32_t maxStorageImageSamples;
uint32_t maxSampleMaskWords;
@@ -1698,7 +1696,7 @@ typedef struct {
VkBool32 depthClampEnable;
VkBool32 rasterizerDiscardEnable;
VkFillMode fillMode;
- VkCullMode cullMode;
+ VkCullModeFlags cullMode;
VkFrontFace frontFace;
VkBool32 depthBiasEnable;
float depthBiasConstantFactor;
@@ -1929,8 +1927,6 @@ typedef struct {
} VkFramebufferCreateInfo;
typedef struct {
- VkStructureType sType;
- const void* pNext;
VkAttachmentDescriptionFlags flags;
VkFormat format;
uint32_t samples;
@@ -1948,8 +1944,6 @@ typedef struct {
} VkAttachmentReference;
typedef struct {
- VkStructureType sType;
- const void* pNext;
VkSubpassDescriptionFlags flags;
VkPipelineBindPoint pipelineBindPoint;
uint32_t inputAttachmentCount;
@@ -1957,14 +1951,12 @@ typedef struct {
uint32_t colorAttachmentCount;
const VkAttachmentReference* pColorAttachments;
const VkAttachmentReference* pResolveAttachments;
- VkAttachmentReference depthStencilAttachment;
+ const VkAttachmentReference* pDepthStencilAttachment;
uint32_t preserveAttachmentCount;
const VkAttachmentReference* pPreserveAttachments;
} VkSubpassDescription;
typedef struct {
- VkStructureType sType;
- const void* pNext;
uint32_t srcSubpass;
uint32_t destSubpass;
VkPipelineStageFlags srcStageMask;
diff --git a/layers/draw_state.cpp b/layers/draw_state.cpp
index 154d285d..cf733696 100755
--- a/layers/draw_state.cpp
+++ b/layers/draw_state.cpp
@@ -614,8 +614,8 @@ static VkBool32 validatePipelineState(layer_data* my_data, const GLOBAL_CB_NODE*
break;
}
}
- if (pSD->depthStencilAttachment.attachment != VK_ATTACHMENT_UNUSED) {
- const uint32_t samples = pRPCI->pAttachments[pSD->depthStencilAttachment.attachment].samples;
+ if (pSD->pDepthStencilAttachment && pSD->pDepthStencilAttachment->attachment != VK_ATTACHMENT_UNUSED) {
+ const uint32_t samples = pRPCI->pAttachments[pSD->pDepthStencilAttachment->attachment].samples;
if (subpassNumSamples == 0)
subpassNumSamples = samples;
else if (subpassNumSamples != samples)
@@ -3034,11 +3034,13 @@ VK_LAYER_EXPORT void VKAPI vkCmdClearAttachments(
}
} else if (attachment->aspectMask & (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT)) {
/* TODO: Is this a good test for depth/stencil? */
- if (pSD->depthStencilAttachment.attachment != attachment->colorAttachment) {
+ if (!pSD->pDepthStencilAttachment || pSD->pDepthStencilAttachment->attachment != attachment->colorAttachment) {
skipCall |= log_msg(dev_data->report_data, VK_DBG_REPORT_ERROR_BIT, VK_OBJECT_TYPE_COMMAND_BUFFER,
(uint64_t)cmdBuffer, 0, DRAWSTATE_MISSING_ATTACHMENT_REFERENCE, "DS",
"vkCmdClearAttachments() attachment index %d does not match depthStencilAttachment.attachment (%d) found in active subpass %d",
- attachment->colorAttachment, pSD->depthStencilAttachment.attachment, pCB->activeSubpass);
+ attachment->colorAttachment,
+ (pSD->pDepthStencilAttachment) ? pSD->pDepthStencilAttachment->attachment : VK_ATTACHMENT_UNUSED,
+ pCB->activeSubpass);
}
}
}
@@ -3351,8 +3353,9 @@ bool CheckPreserved(const layer_data* my_data, VkDevice device, const VkRenderPa
if (attachment == subpass.pColorAttachments[j].attachment)
return true;
}
- if (subpass.depthStencilAttachment.attachment != VK_ATTACHMENT_UNUSED) {
- if (attachment == subpass.depthStencilAttachment.attachment)
+ if (subpass.pDepthStencilAttachment &&
+ subpass.pDepthStencilAttachment->attachment != VK_ATTACHMENT_UNUSED) {
+ if (attachment == subpass.pDepthStencilAttachment->attachment)
return true;
}
bool result = false;
@@ -3406,8 +3409,8 @@ bool validateDependencies(const layer_data* my_data, VkDevice device, const VkRe
for (uint32_t j = 0; j < subpass.colorAttachmentCount; ++j) {
output_attachment_to_subpass[subpass.pColorAttachments[j].attachment].push_back(i);
}
- if (subpass.depthStencilAttachment.attachment != VK_ATTACHMENT_UNUSED) {
- output_attachment_to_subpass[subpass.depthStencilAttachment.attachment].push_back(i);
+ if (subpass.pDepthStencilAttachment && subpass.pDepthStencilAttachment->attachment != VK_ATTACHMENT_UNUSED) {
+ output_attachment_to_subpass[subpass.pDepthStencilAttachment->attachment].push_back(i);
}
}
// If there is a dependency needed make sure one exists
@@ -3424,8 +3427,8 @@ bool validateDependencies(const layer_data* my_data, VkDevice device, const VkRe
CheckDependencyExists(my_data, device, i, output_attachment_to_subpass[attachment], subpass_to_node, skip_call);
CheckDependencyExists(my_data, device, i, input_attachment_to_subpass[attachment], subpass_to_node, skip_call);
}
- if (subpass.depthStencilAttachment.attachment != VK_ATTACHMENT_UNUSED) {
- const uint32_t& attachment = subpass.depthStencilAttachment.attachment;
+ if (subpass.pDepthStencilAttachment && subpass.pDepthStencilAttachment->attachment != VK_ATTACHMENT_UNUSED) {
+ const uint32_t& attachment = subpass.pDepthStencilAttachment->attachment;
CheckDependencyExists(my_data, device, i, output_attachment_to_subpass[attachment], subpass_to_node, skip_call);
CheckDependencyExists(my_data, device, i, input_attachment_to_subpass[attachment], subpass_to_node, skip_call);
}
@@ -3462,7 +3465,7 @@ VK_LAYER_EXPORT VkResult VKAPI vkCreateRenderPass(VkDevice device, const VkRende
VkSubpassDescription *subpass = (VkSubpassDescription *) &localRPCI->pSubpasses[i];
const uint32_t attachmentCount = subpass->inputAttachmentCount +
subpass->colorAttachmentCount * (1 + (subpass->pResolveAttachments?1:0)) +
- subpass->preserveAttachmentCount;
+ ((subpass->pDepthStencilAttachment) ? 1 : 0) + subpass->preserveAttachmentCount;
VkAttachmentReference *attachments = new VkAttachmentReference[attachmentCount];
memcpy(attachments, subpass->pInputAttachments,
@@ -3482,6 +3485,13 @@ VK_LAYER_EXPORT VkResult VKAPI vkCreateRenderPass(VkDevice device, const VkRende
attachments += subpass->colorAttachmentCount;
}
+ if (subpass->pDepthStencilAttachment) {
+ memcpy(attachments, subpass->pDepthStencilAttachment,
+ sizeof(attachments[0]) * 1);
+ subpass->pDepthStencilAttachment = attachments;
+ attachments += 1;
+ }
+
memcpy(attachments, subpass->pPreserveAttachments,
sizeof(attachments[0]) * subpass->preserveAttachmentCount);
subpass->pPreserveAttachments = attachments;
diff --git a/layers/image.cpp b/layers/image.cpp
index af8bef49..b9d49b32 100644
--- a/layers/image.cpp
+++ b/layers/image.cpp
@@ -336,7 +336,8 @@ VK_LAYER_EXPORT VkResult VKAPI vkCreateRenderPass(VkDevice device, const VkRende
if (depthFormatPresent == VK_FALSE) {
// No depth attachment is present, validate that subpasses set depthStencilAttachment to VK_ATTACHMENT_UNUSED;
for (uint32_t i = 0; i < pCreateInfo->subpassCount; i++) {
- if (pCreateInfo->pSubpasses[i].depthStencilAttachment.attachment != VK_ATTACHMENT_UNUSED) {
+ if (pCreateInfo->pSubpasses[i].pDepthStencilAttachment &&
+ pCreateInfo->pSubpasses[i].pDepthStencilAttachment->attachment != VK_ATTACHMENT_UNUSED) {
std::stringstream ss;
ss << "vkCreateRenderPass has no depth/stencil attachment, yet subpass[" << i << "] has VkSubpassDescription::depthStencilAttachment value that is not VK_ATTACHMENT_UNUSED";
skipCall |= log_msg(my_data->report_data, VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, IMAGE_RENDERPASS_INVALID_DS_ATTACHMENT, "IMAGE", ss.str().c_str());
diff --git a/layers/param_checker.cpp b/layers/param_checker.cpp
index fa304f37..2181e44f 100644
--- a/layers/param_checker.cpp
+++ b/layers/param_checker.cpp
@@ -3855,8 +3855,7 @@ bool PreCreateGraphicsPipelines(
"vkCreateGraphicsPipelines parameter, VkFillMode pCreateInfos->pRasterState->fillMode, is an unrecognized enumerator");
return false;
}
- if(pCreateInfos->pRasterState->cullMode < VK_CULL_MODE_BEGIN_RANGE ||
- pCreateInfos->pRasterState->cullMode > VK_CULL_MODE_END_RANGE)
+ if(pCreateInfos->pRasterState->cullMode & ~VK_CULL_MODE_FRONT_AND_BACK)
{
log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK",
"vkCreateGraphicsPipelines parameter, VkCullMode pCreateInfos->pRasterState->cullMode, is an unrecognized enumerator");
@@ -4683,12 +4682,6 @@ bool PreCreateRenderPass(
}
if(pCreateInfo->pAttachments != nullptr)
{
- if(pCreateInfo->pAttachments->sType != VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION)
- {
- log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK",
- "vkCreateRenderPass parameter, VkStructureType pCreateInfo->pAttachments->sType, is an invalid enumerator");
- return false;
- }
if(pCreateInfo->pAttachments->format < VK_FORMAT_BEGIN_RANGE ||
pCreateInfo->pAttachments->format > VK_FORMAT_END_RANGE)
{
@@ -4741,12 +4734,6 @@ bool PreCreateRenderPass(
}
if(pCreateInfo->pSubpasses != nullptr)
{
- if(pCreateInfo->pSubpasses->sType != VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION)
- {
- log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK",
- "vkCreateRenderPass parameter, VkStructureType pCreateInfo->pSubpasses->sType, is an invalid enumerator");
- return false;
- }
if(pCreateInfo->pSubpasses->pipelineBindPoint < VK_PIPELINE_BIND_POINT_BEGIN_RANGE ||
pCreateInfo->pSubpasses->pipelineBindPoint > VK_PIPELINE_BIND_POINT_END_RANGE)
{
@@ -4784,11 +4771,12 @@ bool PreCreateRenderPass(
return false;
}
}
- if(pCreateInfo->pSubpasses->depthStencilAttachment.layout < VK_IMAGE_LAYOUT_BEGIN_RANGE ||
- pCreateInfo->pSubpasses->depthStencilAttachment.layout > VK_IMAGE_LAYOUT_END_RANGE)
+ if(pCreateInfo->pSubpasses->pDepthStencilAttachment &&
+ (pCreateInfo->pSubpasses->pDepthStencilAttachment->layout < VK_IMAGE_LAYOUT_BEGIN_RANGE ||
+ pCreateInfo->pSubpasses->pDepthStencilAttachment->layout > VK_IMAGE_LAYOUT_END_RANGE))
{
log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK",
- "vkCreateRenderPass parameter, VkImageLayout pCreateInfo->pSubpasses->depthStencilAttachment.layout, is an unrecognized enumerator");
+ "vkCreateRenderPass parameter, VkImageLayout pCreateInfo->pSubpasses->pDepthStencilAttachment->layout, is an unrecognized enumerator");
return false;
}
if(pCreateInfo->pSubpasses->pPreserveAttachments != nullptr)
@@ -4804,12 +4792,6 @@ bool PreCreateRenderPass(
}
if(pCreateInfo->pDependencies != nullptr)
{
- if(pCreateInfo->pDependencies->sType != VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY)
- {
- log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK",
- "vkCreateRenderPass parameter, VkStructureType pCreateInfo->pDependencies->sType, is an invalid enumerator");
- return false;
- }
}
}