backup - missing some
[demo] / src / vulkan / shader-vk.cc
1 #include "vkutil.h"
2 #include "shader-vk.h"
3
4 /* static variables */
5 ShaderVK::ShaderVK()
6 {
7 }
8
9 ShaderVK::~ShaderVK()
10 {
11         destroy();
12 }
13
14 bool ShaderVK::load(const char *fname, ShaderType type)
15 {
16         char *vk_fname = new char[strlen(fname) + strlen(".spirv") + 1];
17         strcpy(vk_fname, fname);
18
19         char *suffix = strrchr(vk_fname, '.');
20
21         if(suffix) {
22                 *suffix = 0;
23         }
24
25         strcat(vk_fname, ".spirv");
26
27         bool res = Shader::load(vk_fname, type);
28         delete [] vk_fname;
29
30         return res;
31 }
32
33 bool ShaderVK::create(char *buf, unsigned int bsz, const char *fname)
34 {
35         name = std::string(fname);
36
37         VkShaderModuleCreateInfo sminf;
38         memset(&sminf, 0, sizeof sminf);
39         sminf.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO;
40
41         sminf.codeSize = bsz;
42         sminf.pCode = (uint32_t *)buf;
43
44         if(vkCreateShaderModule(vk_device, &sminf, 0, &sdr) != VK_SUCCESS) {
45                 delete [] buf;
46
47                 fprintf(stderr, "Failed to create vertex shader module.\n");
48                 return false;
49         }
50
51         delete [] buf;
52         return true;
53 }
54
55 void ShaderVK::destroy()
56 {
57         vkDestroyShaderModule(vk_device, sdr, 0);
58 }
59
60 ShaderProgramVK::ShaderProgramVK()
61 {
62 }
63
64 ShaderProgramVK::~ShaderProgramVK()
65 {
66         destroy();
67 }
68
69 bool ShaderProgramVK::create()
70 {
71         return true;
72 }
73
74 bool ShaderProgramVK::link()
75 {
76         return true;
77 }
78
79 bool ShaderProgramVK::use() const
80 {
81         return true;
82 }
83
84 void ShaderProgramVK::destroy()
85 {
86         int len = sizeof shaders / sizeof *shaders;
87
88         for(int i=0; i<len; ++i) {
89                 delete shaders[i];
90         }
91
92 }
93
94 void ShaderProgramVK::attach_shader(Shader *shader)
95 {
96 }