aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTony Barbour <tony@LunarG.com>2015-07-21 09:04:41 -0600
committerCourtney Goeltzenleuchter <courtney@LunarG.com>2015-07-22 08:49:51 -0600
commitb6dba5c819d540baf7296ed09222190e77f97c30 (patch)
treef3077c60baa9f660db5d0c0f1b759d15e8ede1b5
parent18f11d4de1db6beca5d36cf5b60e6f4597c3cd6c (diff)
downloadusermoji-b6dba5c819d540baf7296ed09222190e77f97c30.tar.xz
demos: Add more validation layers and fix errors/warnings
-rw-r--r--demos/cube.c41
-rw-r--r--demos/tri.c5
2 files changed, 25 insertions, 21 deletions
diff --git a/demos/cube.c b/demos/cube.c
index 73562eca..fd74171c 100644
--- a/demos/cube.c
+++ b/demos/cube.c
@@ -66,11 +66,6 @@
exit(1); \
} while (0)
-// NOTE: If the following values (copied from "loader_platform.h") change, they
-// need to change here as well:
-#define LAYER_NAMES_ENV "VK_LAYER_NAMES"
-#define LAYER_NAMES_REGISTRY_VALUE "VK_LAYER_NAMES"
-
#else // _WIN32
#define ERR_EXIT(err_msg, err_class) \
@@ -379,6 +374,9 @@ struct demo {
float spin_increment;
bool pause;
+ VkShaderModule vert_shader_module;
+ VkShaderModule frag_shader_module;
+
VkDescriptorPool desc_pool;
VkDescriptorSet desc_set;
@@ -617,8 +615,7 @@ static void demo_draw(struct demo *demo)
// return codes
assert(!err);
-// FIXME: UNCOMMENT THE FOLLOWING LINE ONCE WE HAVE A NEW-ENOUGH "vulkan.h" HEADER:
-// err = vkDestroySemaphore(demo->device, presentCompleteSemaphore);
+ err = vkDestroySemaphore(demo->device, presentCompleteSemaphore);
assert(!err);
err = vkQueueWaitIdle(demo->queue);
@@ -1398,12 +1395,12 @@ static void demo_prepare_render_pass(struct demo *demo)
static VkShader demo_prepare_shader(struct demo* demo,
VkShaderStage stage,
+ VkShaderModule* pShaderModule,
const void* code,
size_t size)
{
VkShaderModuleCreateInfo moduleCreateInfo;
VkShaderCreateInfo shaderCreateInfo;
- VkShaderModule shaderModule;
VkShader shader;
VkResult err;
@@ -1419,13 +1416,13 @@ static VkShader demo_prepare_shader(struct demo* demo,
moduleCreateInfo.codeSize = size;
moduleCreateInfo.pCode = code;
moduleCreateInfo.flags = 0;
- err = vkCreateShaderModule(demo->device, &moduleCreateInfo, &shaderModule);
+ err = vkCreateShaderModule(demo->device, &moduleCreateInfo, pShaderModule);
if (err) {
free((void *) moduleCreateInfo.pCode);
}
shaderCreateInfo.flags = 0;
- shaderCreateInfo.module = shaderModule;
+ shaderCreateInfo.module = *pShaderModule;
shaderCreateInfo.pName = "main";
err = vkCreateShader(demo->device, &shaderCreateInfo, &shader);
} else {
@@ -1441,13 +1438,13 @@ static VkShader demo_prepare_shader(struct demo* demo,
((uint32_t *) moduleCreateInfo.pCode)[2] = stage;
memcpy(((uint32_t *) moduleCreateInfo.pCode + 3), code, size + 1);
- err = vkCreateShaderModule(demo->device, &moduleCreateInfo, &shaderModule);
+ err = vkCreateShaderModule(demo->device, &moduleCreateInfo, pShaderModule);
if (err) {
free((void *) moduleCreateInfo.pCode);
}
shaderCreateInfo.flags = 0;
- shaderCreateInfo.module = shaderModule;
+ shaderCreateInfo.module = *pShaderModule;
shaderCreateInfo.pName = "main";
err = vkCreateShader(demo->device, &shaderCreateInfo, &shader);
}
@@ -1485,7 +1482,7 @@ static VkShader demo_prepare_vs(struct demo *demo)
vertShaderCode = demo_read_spv("cube-vert.spv", &size);
- return demo_prepare_shader(demo, VK_SHADER_STAGE_VERTEX,
+ return demo_prepare_shader(demo, VK_SHADER_STAGE_VERTEX, &demo->vert_shader_module,
vertShaderCode, size);
} else {
static const char *vertShaderText =
@@ -1511,7 +1508,7 @@ static VkShader demo_prepare_vs(struct demo *demo)
" gl_Position.z = (gl_Position.z + gl_Position.w) / 2.0;\n"
"}\n";
- return demo_prepare_shader(demo, VK_SHADER_STAGE_VERTEX,
+ return demo_prepare_shader(demo, VK_SHADER_STAGE_VERTEX, &demo->vert_shader_module,
(const void *) vertShaderText,
strlen(vertShaderText));
}
@@ -1525,7 +1522,7 @@ static VkShader demo_prepare_fs(struct demo *demo)
fragShaderCode = demo_read_spv("cube-frag.spv", &size);
- return demo_prepare_shader(demo, VK_SHADER_STAGE_FRAGMENT,
+ return demo_prepare_shader(demo, VK_SHADER_STAGE_FRAGMENT, &demo->frag_shader_module,
fragShaderCode, size);
} else {
static const char *fragShaderText =
@@ -1540,7 +1537,7 @@ static VkShader demo_prepare_fs(struct demo *demo)
" uFragColor = texture(tex, texcoord.xy);\n"
"}\n";
- return demo_prepare_shader(demo, VK_SHADER_STAGE_FRAGMENT,
+ return demo_prepare_shader(demo, VK_SHADER_STAGE_FRAGMENT, &demo->frag_shader_module,
(const void *) fragShaderText,
strlen(fragShaderText));
}
@@ -1637,6 +1634,8 @@ static void demo_prepare_pipeline(struct demo *demo)
for (uint32_t i = 0; i < pipeline.stageCount; i++) {
vkDestroyShader(demo->device, shaderStages[i].shader);
}
+ vkDestroyShaderModule(demo->device, demo->frag_shader_module);
+ vkDestroyShaderModule(demo->device, demo->vert_shader_module);
}
static void demo_prepare_dynamic_states(struct demo *demo)
@@ -2156,11 +2155,21 @@ static void demo_init_vk(struct demo *demo)
uint32_t enabled_layer_count = 0;
char *instance_validation_layers[] = {
+ "Threading",
"MemTracker",
+ "ObjectTracker",
+ "DrawState",
+ "ParamChecker",
+ "ShaderChecker",
};
char *device_validation_layers[] = {
+ "Threading",
"MemTracker",
+ "ObjectTracker",
+ "DrawState",
+ "ParamChecker",
+ "ShaderChecker",
};
/* Look for validation layers */
diff --git a/demos/tri.c b/demos/tri.c
index 21544200..20720b89 100644
--- a/demos/tri.c
+++ b/demos/tri.c
@@ -68,11 +68,6 @@
MessageBox(NULL, err_msg, err_class, MB_OK); \
exit(1); \
} while (0)
-
-// NOTE: If the following values (copied from "loader_platform.h") change, they
-// need to change here as well:
-#define LAYER_NAMES_ENV "VK_LAYER_NAMES"
-#define LAYER_NAMES_REGISTRY_VALUE "VK_LAYER_NAMES"
#else // _WIN32
#define ERR_EXIT(err_msg, err_class) \