/* default pipeline resources */
default_vs_ub = gfx_create_uniform_buffer();
- if(!default_vs_ub->create(sizeof default_vs_uniforms)) {
+ int data_size = sizeof default_vs_uniforms;
+ if(!default_vs_ub->create(data_size)) {
fprintf(stderr, "Failed to create the default VS uniform buffer.\n");
return false;
}
fprintf(stderr, "Failed to create the ds layout for the default vs uniform buffer.\n");
return false;
}
+ default_vs_res.size = data_size;
default_resources.push_back(default_vs_res);
default_fs_ub = gfx_create_uniform_buffer();
return true;
}
+bool RendererVK::create_desc_pool()
+{
+ int num_desc = default_resources.size() + sky_resources.size();
+ VkDescriptorPoolCreateInfo dpinf;
+ memset(&dpinf, 0, sizeof dpinf);
+
+ dpinf.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO;
+ dpinf.maxSets = num_desc + 1;
+ dpinf.poolSizeCount = num_desc;
+
+ for(size_t i=0; i<default_resources.size(); i++) {
+ }
+ return true;
+}
+
static void set_resources_layouts(VkuPipelineGenerator *pipe_gen, std::vector<ResourceVK> *res)
{
for(size_t i=0; i<res->size(); i++) {
VkDescriptorPool res_pool;
VkuPipelineGenerator default_pipe_gen;
+ /* might need different vectors for ds, pc */
std::vector<ResourceVK> default_resources;
VkuPipelineGenerator sky_pipe_gen;
std::vector<ResourceVK> sky_resources;
bool create_default_pipeline();
+ bool create_desc_pool();
public:
RendererVK();
~RendererVK();
enum ResourceType {
RES_DESC_SET,
RES_PUSH_CONST,
+ RES_SAMPLER
};
class ResourceVK {
+private:
+ bool allocate_ds();
+
public:
ResourceType type;
VkDescriptorSetLayout layout;
VkPushConstantRange range;
+ int size;
ResourceVK();
~ResourceVK();
bool create_ds_layout(unsigned int num, VkDescriptorType type,
VkShaderStageFlags stage, VkSampler *sampler);
+ bool allocate();
+
+// bool create_push_constant();
};
#endif //RESOURCES_H_