From f6ceb163227d00d7f97df1fc2dfbdd419c56277e Mon Sep 17 00:00:00 2001 From: Eleni Maria Stea Date: Mon, 30 Apr 2018 00:14:53 +0300 Subject: [PATCH] backup - missing some --- src/morph_renderer.cc | 29 ++++++++------ src/renderer.cc | 54 +++++++++++++------------ src/renderer.h | 12 +++--- src/vulkan/renderer-vk.cc | 75 +++++++++++++++++++++++++++++----- src/vulkan/renderer-vk.h | 15 +++++++ src/vulkan/resources.cc | 40 ++++++++++++++++++ src/vulkan/resources.h | 26 ++++++++++++ src/vulkan/shader-vk.cc | 1 - src/vulkan/uniforms-vk.cc | 11 +++-- src/vulkan/uniforms-vk.h | 4 +- src/vulkan/vkutil-pipeline.cc | 19 ++++----- src/vulkan/vkutil-pipeline.h | 12 ++---- src/vulkan/vkutil.cc | 89 ++--------------------------------------- src/vulkan/vkutil.h | 36 ++--------------- 14 files changed, 224 insertions(+), 199 deletions(-) create mode 100644 src/vulkan/resources.cc create mode 100644 src/vulkan/resources.h diff --git a/src/morph_renderer.cc b/src/morph_renderer.cc index 7540ba1..a8adf56 100644 --- a/src/morph_renderer.cc +++ b/src/morph_renderer.cc @@ -23,7 +23,10 @@ MorphRenderer::MorphRenderer() fog_density = 0; - mbuf = vbuf = fbuf = svbuf = 0; + mbuf = 0; + default_vs_ub = 0; + default_fs_ub = 0; + sky_vs_ub = 0; } MorphRenderer::~MorphRenderer() @@ -43,25 +46,25 @@ bool MorphRenderer::create() return false; } - if(!vbuf) { - vbuf = gfx_create_uniform_buffer(); - if(!vbuf->create(sizeof vu)) { + if(!default_vs_ub) { + default_vs_ub = gfx_create_uniform_buffer(); + if(!default_vs_ub->create(sizeof default_vs_uniforms)) { fprintf(stderr, "Failed to create uniform buffer.\n"); return false; } } - if(!fbuf) { - fbuf = gfx_create_uniform_buffer(); - if(!fbuf->create(sizeof fu)) { + if(!default_fs_ub) { + default_fs_ub = gfx_create_uniform_buffer(); + if(!default_fs_ub->create(sizeof default_fs_uniforms)) { fprintf(stderr, "Failed to create uniform buffer.\n"); return false; } } - if(!svbuf) { - svbuf = gfx_create_uniform_buffer(); - if(!svbuf->create(sizeof svu)) { + if(!sky_vs_ub) { + sky_vs_ub = gfx_create_uniform_buffer(); + if(!sky_vs_ub->create(sizeof sky_vs_uniforms)) { fprintf(stderr, "Failed to create uniform buffer.\n"); return false; } @@ -89,9 +92,9 @@ void MorphRenderer::draw() mbuf->update(&mu); mbuf->bind(MORPHING_MATRIX_UNIFORMS); - vu.mmod = scene->objects[i]->transform.upper3x3(); - vbuf->update(&vu); - vbuf->bind(MATRIX_UNIFORMS); + default_vs_uniforms.mmod = scene->objects[i]->transform.upper3x3(); + default_vs_ub->update(&default_vs_uniforms); + default_vs_ub->bind(MATRIX_UNIFORMS); draw_object(scene->objects[i]); } diff --git a/src/renderer.cc b/src/renderer.cc index 5d57a36..cefdcc4 100644 --- a/src/renderer.cc +++ b/src/renderer.cc @@ -32,14 +32,16 @@ Renderer::Renderer() fog_density = 0; - vbuf = fbuf = svbuf = 0; + default_vs_ub = 0; + default_fs_ub = 0; + sky_vs_ub = 0; } Renderer::~Renderer() { - delete vbuf; - delete fbuf; - delete svbuf; + delete default_vs_ub; + delete default_fs_ub; + delete sky_vs_ub; } bool Renderer::create() @@ -50,20 +52,20 @@ bool Renderer::create() // tf(stderr, "Failed to load debug shaders.\n"); // } - vbuf = gfx_create_uniform_buffer(); - if(!vbuf->create(sizeof vu)) { + default_vs_ub = gfx_create_uniform_buffer(); + if(!default_vs_ub->create(sizeof default_vs_uniforms)) { fprintf(stderr, "Failed to create uniform buffer.\n"); return false; } - fbuf = gfx_create_uniform_buffer(); - if(!fbuf->create(sizeof fu)) { + default_fs_ub = gfx_create_uniform_buffer(); + if(!default_fs_ub->create(sizeof default_fs_uniforms)) { fprintf(stderr, "Failed to create uniform buffer.\n"); return false; } - svbuf = gfx_create_uniform_buffer(); - if(!svbuf->create(sizeof svu)) { + sky_vs_ub = gfx_create_uniform_buffer(); + if(!sky_vs_ub->create(sizeof sky_vs_uniforms)) { fprintf(stderr, "Failed to create uniform buffer.\n"); return false; } @@ -104,13 +106,13 @@ void Renderer::draw_object(Object *object) /* setting uniforms for material */ - fu.diffuse = Vec4(m->diffuse.x, m->diffuse.y, m->diffuse.z, 1.0); - fu.specular = Vec4(m->specular.x, m->specular.y, m->specular.z, 1.0); - fu.shininess = m->shininess; - fu.fog_density = fog_density; + default_fs_uniforms.diffuse = Vec4(m->diffuse.x, m->diffuse.y, m->diffuse.z, 1.0); + default_fs_uniforms.specular = Vec4(m->specular.x, m->specular.y, m->specular.z, 1.0); + default_fs_uniforms.shininess = m->shininess; + default_fs_uniforms.fog_density = fog_density; - fbuf->update(&fu); - fbuf->bind(SHADING_UNIFORMS); + default_fs_ub->update(&default_fs_uniforms); + default_fs_ub->bind(SHADING_UNIFORMS); /* texture */ @@ -119,12 +121,12 @@ void Renderer::draw_object(Object *object) /* setting uniforms for matrices */ - vu.mview = object->transform * camera->get_view_matrix(); - vu.mmviewproj = object->transform * camera->get_view_matrix() * mprojection; - vu.mmod = object->transform.upper3x3(); + default_vs_uniforms.mview = object->transform * camera->get_view_matrix(); + default_vs_uniforms.mmviewproj = object->transform * camera->get_view_matrix() * mprojection; + default_vs_uniforms.mmod = object->transform.upper3x3(); - vbuf->update(&vu); - vbuf->bind(MATRIX_UNIFORMS); + default_vs_ub->update(&default_vs_uniforms); + default_vs_ub->bind(MATRIX_UNIFORMS); object->mesh->draw(); @@ -132,8 +134,8 @@ void Renderer::draw_object(Object *object) #ifdef DRAW_NORMALS if(nprog) { vu.mmviewproj = mmviewproj; - vbuf->update(&vu); - vbuf->bind(MATRIX_UNIFORMS); + default_vs_ub->update(&vu); + default_vs_ub->bind(MATRIX_UNIFORMS); nprog->use(); object->mesh->draw_normals(1.0); @@ -170,9 +172,9 @@ void Renderer::draw_skybox() skytex->bind(); skyprog->use(); - svu.mviewproj = camera->get_view_matrix().upper3x3() * mprojection; - svbuf->update(&svu); - svbuf->bind(SKY_MATRIX_UNIFORMS); + sky_vs_uniforms.mviewproj = camera->get_view_matrix().upper3x3() * mprojection; + sky_vs_ub->update(&sky_vs_uniforms); + sky_vs_ub->bind(SKY_MATRIX_UNIFORMS); skymesh->draw(); diff --git a/src/renderer.h b/src/renderer.h index 2c72721..bfd7622 100644 --- a/src/renderer.h +++ b/src/renderer.h @@ -37,14 +37,14 @@ struct SkyMatrixUniforms { class Renderer { protected: - BaseMatrixUniforms vu; - UniformBuffer *vbuf; + BaseMatrixUniforms default_vs_uniforms; + UniformBuffer *default_vs_ub; - BaseShadingUniforms fu; - UniformBuffer *fbuf; + BaseShadingUniforms default_fs_uniforms; + UniformBuffer *default_fs_ub; - SkyMatrixUniforms svu; - UniformBuffer *svbuf; + SkyMatrixUniforms sky_vs_uniforms; + UniformBuffer *sky_vs_ub; ShaderProgram *sprog; diff --git a/src/vulkan/renderer-vk.cc b/src/vulkan/renderer-vk.cc index 187444e..cbaa950 100644 --- a/src/vulkan/renderer-vk.cc +++ b/src/vulkan/renderer-vk.cc @@ -1,7 +1,13 @@ #include +#include +#include "gfxapi.h" #include "renderer-vk.h" #include "uniforms.h" +#include "vkutil.h" +#include "vkutil-pipeline.h" + +static VkuPipelineGenerator pipe_gen; RendererVK::RendererVK() { @@ -13,14 +19,65 @@ RendererVK::RendererVK() dskytex = 0; fog_density = 0; - vbuf = fbuf = svbuf = 0; + + default_vs_ub = 0; + default_fs_ub = 0; + sky_vs_ub = 0; } RendererVK::~RendererVK() { - delete vbuf; - delete fbuf; - delete svbuf; + delete default_vs_ub; + delete default_fs_ub; + delete sky_vs_ub; +} + +bool RendererVK::create_resources() +{ + /* default pipeline: create binding points */ + default_vs_ub = gfx_create_uniform_buffer(); + if(!default_vs_ub->create(sizeof default_vs_uniforms)) { + fprintf(stderr, "Failed to create the default VS uniform buffer.\n"); + return false; + } + ResourceVK default_vs_res; + if(!default_vs_res.create_ds_layout(MATRIX_UNIFORMS, + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, + VK_SHADER_STAGE_VERTEX_BIT, 0)) { + fprintf(stderr, "Failed to create the ds layout for the default vs uniform buffer.\n"); + return false; + } + default_resources.push_back(default_vs_res); + + default_fs_ub = gfx_create_uniform_buffer(); + if(!default_fs_ub->create(sizeof default_fs_uniforms)) { + fprintf(stderr, "Failed to create the default FS uniform buffer.\n"); + return false; + } + ResourceVK default_fs_res; + if(!default_fs_res.create_ds_layout(SHADING_UNIFORMS, + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, + VK_SHADER_STAGE_FRAGMENT_BIT, 0)) { + fprintf(stderr, "Failed to create the ds layout for the default VS uniform buffer.\n"); + return false; + } + default_resources.push_back(default_fs_res); + + sky_vs_ub = gfx_create_uniform_buffer(); + if(!sky_vs_ub->create(sizeof sky_vs_uniforms)) { + fprintf(stderr, "Failed to create the VS uniform buffer for the sky.\n"); + return false; + } + ResourceVK sky_vs_res; + if(!sky_vs_res.create_ds_layout(SKY_MATRIX_UNIFORMS, + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, + VK_SHADER_STAGE_FRAGMENT_BIT, 0)) { + fprintf(stderr, "Failed to create the ds layout for the sky VS uniform buffer.\n"); + return false; + } + sky_resources.push_back(sky_vs_res); + + return true; } bool RendererVK::create() @@ -30,16 +87,16 @@ bool RendererVK::create() return false; } -/* if(!create_sky_pipeline()) { - fprintf(stderr, "Failed to create sky pipeline.\n"); - return false; - }*/ + /* if(!create_sky_pipeline()) { + fprintf(stderr, "Failed to create sky pipeline.\n"); + return false; + }*/ return true; } bool RendererVK::create_default_pipeline() { - /* vertex */ + return true; } diff --git a/src/vulkan/renderer-vk.h b/src/vulkan/renderer-vk.h index 4dc72f6..ce52b4e 100644 --- a/src/vulkan/renderer-vk.h +++ b/src/vulkan/renderer-vk.h @@ -1,17 +1,32 @@ #ifndef RENDERER_VK_H_ #define RENDERER_VK_H_ +#include #include + #include "renderer.h" +#include "vulkan/resources.h" class RendererVK : public Renderer { private: + VkDescriptorPool uniform_pool; + + VkPipeline pipe_default; + std::vector default_resources; + + VkPipeline pipe_morph; + std::vector morph_resources; + + VkPipeline pipe_sky; + std::vector sky_resources; + bool create_default_pipeline(); public: RendererVK(); ~RendererVK(); bool create() override; + bool create_resources(); }; diff --git a/src/vulkan/resources.cc b/src/vulkan/resources.cc new file mode 100644 index 0000000..22932a6 --- /dev/null +++ b/src/vulkan/resources.cc @@ -0,0 +1,40 @@ +#include +#include + +#include "resources.h" +#include "vkutil.h" + +ResourceVK::ResourceVK() {} +ResourceVK::~ResourceVK() {} + +bool ResourceVK::create_ds_layout(unsigned int num, VkDescriptorType type, + VkShaderStageFlags stage, VkSampler *sampler) +{ + res_type = RES_DESC_SET; + + /* layout binding */ + VkDescriptorSetLayoutBinding bind; + + memset(&bind, 0, sizeof bind); + bind.binding = num; + bind.descriptorType = type; + bind.stageFlags = stage; + + bind.pImmutableSamplers = sampler; + + /* layout : for the moment: + * one layout per ds, (=> 1 binding point) + * */ + + VkDescriptorSetLayoutCreateInfo dslinf; + memset(&dslinf, 0, sizeof dslinf); + dslinf.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO; + dslinf.bindingCount = 1; + dslinf.pBindings = &bind; + + if(vkCreateDescriptorSetLayout(vk_device, &dslinf, 0, &layout) != VK_SUCCESS) { + fprintf(stderr, "Failed to create descriptor set layout.\n"); + return false; + } + return true; +} diff --git a/src/vulkan/resources.h b/src/vulkan/resources.h new file mode 100644 index 0000000..bbe1478 --- /dev/null +++ b/src/vulkan/resources.h @@ -0,0 +1,26 @@ +#ifndef RESOURCES_H_ +#define RESOURCES_H_ + +#include + +enum ResourceType { + RES_DESC_SET, + RES_PUSH_CONST, +}; + +class ResourceVK { +private: + ResourceType res_type; + + VkDescriptorSetLayout layout; + VkPushConstantRange range; + +public: + ResourceVK(); + ~ResourceVK(); + + bool create_ds_layout(unsigned int num, VkDescriptorType type, + VkShaderStageFlags stage, VkSampler *sampler); +}; + +#endif //RESOURCES_H_ diff --git a/src/vulkan/shader-vk.cc b/src/vulkan/shader-vk.cc index 13bed2e..51c4722 100644 --- a/src/vulkan/shader-vk.cc +++ b/src/vulkan/shader-vk.cc @@ -68,7 +68,6 @@ ShaderProgramVK::~ShaderProgramVK() bool ShaderProgramVK::create() { - return true; } diff --git a/src/vulkan/uniforms-vk.cc b/src/vulkan/uniforms-vk.cc index 6a02110..7e67a3a 100644 --- a/src/vulkan/uniforms-vk.cc +++ b/src/vulkan/uniforms-vk.cc @@ -10,16 +10,21 @@ UniformBufferVK::UniformBufferVK() UniformBufferVK::~UniformBufferVK() { + destroy(); } bool UniformBufferVK::create(int size) { if(!(ubo = vku_create_buffer(size, VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT))) { - fprintf(stderr, "Failed to create uniform buffer object.\n"); + fprintf(stderr, "Failed to create vulkan uniform buffer object.\n"); return false; } - return UniformBuffer::create(size); + if(!UniformBuffer::create(size)) { + fprintf(stderr, "Failed to create uniform buffer object.\n"); + return false; + } + return true; } void UniformBufferVK::destroy() @@ -30,7 +35,7 @@ void UniformBufferVK::destroy() void UniformBufferVK::bind(int binding) const { if(vkBindBufferMemory(vk_device, ubo->buf, ubo->mem_pool, 0) != - VK_SUCCESS) { + VK_SUCCESS) { fprintf(stderr, "Failed to bind ubo.\n"); } } diff --git a/src/vulkan/uniforms-vk.h b/src/vulkan/uniforms-vk.h index 50e1e84..a7f18bc 100644 --- a/src/vulkan/uniforms-vk.h +++ b/src/vulkan/uniforms-vk.h @@ -8,7 +8,9 @@ class UniformBufferVK : public UniformBuffer { private: vku_buffer *ubo; - VkDescriptorSet dset; + + VkWriteDescriptorSet descr_write; + VkDescriptorBufferInfo ubo_inf; public: UniformBufferVK(); diff --git a/src/vulkan/vkutil-pipeline.cc b/src/vulkan/vkutil-pipeline.cc index 1d2620d..4be1d22 100644 --- a/src/vulkan/vkutil-pipeline.cc +++ b/src/vulkan/vkutil-pipeline.cc @@ -79,12 +79,12 @@ VkPipeline VkuPipelineGenerator::generate(VkuDynState dyn_flags) const VkPipelineLayoutCreateInfo linf; memset(&linf, 0, sizeof linf); linf.sType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO; - linf.setLayoutCount = dset_layouts.size(); - linf.pSetLayouts = dset_layouts.data(); + linf.setLayoutCount = res_layouts.size(); + linf.pSetLayouts = res_layouts.data(); //TODO find max num dsets vkGetPhysicalDeviceProperties //maxBoundDescriptorSets of VkPhysicalDeviceLimits - linf.pushConstantRangeCount = push_const_ranges.size(); - linf.pPushConstantRanges = push_const_ranges.data(); + //linf.pushConstantRangeCount = push_const_ranges.size(); + //linf.pPushConstantRanges = push_const_ranges.data(); //maxPushConstantsSize from VkPhysicalDeviceLimits VkPipelineLayout layout; @@ -120,7 +120,7 @@ VkPipeline VkuPipelineGenerator::generate(VkuDynState dyn_flags) const VkPipeline gpipeline; if(vkCreateGraphicsPipelines(vk_device, pcache, 1, &gpinf, 0, &gpipeline) != - VK_SUCCESS) { + VK_SUCCESS) { fprintf(stderr, "Failed to create graphics pipeline.\n"); return 0; } @@ -129,14 +129,14 @@ VkPipeline VkuPipelineGenerator::generate(VkuDynState dyn_flags) const } void VkuPipelineGenerator::set_shader_modules(VkShaderModule vs, - VkShaderModule fs) + VkShaderModule fs) { sdri[0].module = vs; sdri[1].module = fs; } void VkuPipelineGenerator::set_attribute(uint32_t binding, uint32_t stride, - uint32_t location, VkFormat format) + uint32_t location, VkFormat format) { VkVertexInputBindingDescription bdsc; bdsc.binding = binding; @@ -151,8 +151,3 @@ void VkuPipelineGenerator::set_attribute(uint32_t binding, uint32_t stride, adsc.binding = binding; adsc.format = format; } - -void VkuPipelineGenerator::set_descriptor_set_layout(const vku_descriptor &desc) -{ - dset_layouts.push_back(desc.layout); -} diff --git a/src/vulkan/vkutil-pipeline.h b/src/vulkan/vkutil-pipeline.h index 9f8a266..9cd99fa 100644 --- a/src/vulkan/vkutil-pipeline.h +++ b/src/vulkan/vkutil-pipeline.h @@ -3,10 +3,6 @@ #include -#define VERTEX_ATTRIB_BIT (1 << VKU_BIND_VERTEX) -#define NORMAL_ATTRIB_BIT (1 << VKU_BIND_NORMAL) -#define TEX_COORD_ATTRIB_BIT (1 << VKU_BIND_TEX_COORD) - enum VkuVertexBindings { VKU_BIND_VERTEX, VKU_BIND_NORMAL, @@ -33,9 +29,9 @@ private: std::vector bind_descriptions; std::vector attr_descriptions; - /* uniforms */ - std::vector dset_layouts; - std::vector push_const_ranges; + /* resources */ + std::vector res_layouts; +// std::vector push_const_ranges; public: VkuPipelineGenerator(); @@ -46,9 +42,7 @@ public: void set_shader_modules(VkShaderModule vs, VkShaderModule fs); void set_attribute(uint32_t binding, uint32_t stride, uint32_t location, VkFormat format); - void set_descriptor_set_layout(const vku_descriptor &desc); - void set_push_constant(); //TODO }; #endif // VKUTIL_PIPELINE_H_ diff --git a/src/vulkan/vkutil.cc b/src/vulkan/vkutil.cc index 4622819..04a9fe5 100644 --- a/src/vulkan/vkutil.cc +++ b/src/vulkan/vkutil.cc @@ -427,15 +427,12 @@ struct vku_buffer *vku_create_buffer(int sz, unsigned int usage) void vku_destroy_buffer(struct vku_buffer *buf) { - if(buf) { - vkDestroyBuffer(vk_device, buf->buf, 0); - } } bool vku_update_buffer(vku_buffer *buf, int size, void *data) { uint8_t *pdata; - if(vkMapMemory(vk_device, buf->mem_pool, 0, size, 0, (void**)&pdata) != VK_SUCCESS) { + if(vkMapMemory(vk_device, buf->mem_pool, 0, size, 0, (void **)&pdata) != VK_SUCCESS) { fprintf(stderr, "Failed to map memory.\n"); return false; } @@ -620,8 +617,8 @@ static const char *get_mem_size_str(long sz) } vku_descriptor *vku_create_descriptor(VkDescriptorType type, - VkFlags stage, int binding_point, - int size, int num_desc) + VkFlags stage, int binding_point, + int size, int num_desc) { vku_descriptor *desc = new vku_descriptor; @@ -727,83 +724,3 @@ bool vku_update_descriptor_sets(VkDescriptorSet *sets, int num_sets) // std::vector return true; } - -VkPipelineCache vku_create_pipeline_cache() -{ - VkPipelineCacheCreateInfo cinf; - memset(&cinf, 0, sizeof cinf); - cinf.sType = VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO; - - VkPipelineCache cache; - if(vkCreatePipelineCache(vk_device, &cinf, 0, &cache) != VK_SUCCESS) { - fprintf(stderr, "Failed to create pipeline cache.\n"); - return 0; - } - return cache; -} - -void vku_destroy_pipeline_cache(VkPipelineCache cache) -{ - vkDestroyPipelineCache(vk_device, cache, 0); -} - -void vku_pl_init_shader_stage_state_info(VkPipelineShaderStageCreateInfo *ssinf, - VkShaderStageFlagBits stage, VkShaderModule sm) -{ - memset(ssinf, 0, sizeof *ssinf); - ssinf->sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO; - ssinf->stage = stage; - ssinf->module = sm; - ssinf->pName = "main"; -} - -void vku_pl_init_input_asm_state_info(VkPipelineInputAssemblyStateCreateInfo *iasinf) -{ - memset(iasinf, 0, sizeof *iasinf); - iasinf->sType = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO; - iasinf->topology = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST; -} - -void vku_pl_init_viewport_state_info(VkPipelineViewportStateCreateInfo *vsinf, - VkViewport *viewports, int num_viewports, VkRect2D *scissors, - int num_scissors) -{ - memset(vsinf, 0, sizeof *vsinf); - vsinf->sType = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO; - vsinf->viewportCount = num_viewports; - vsinf->scissorCount = num_scissors; - vsinf->pViewports = viewports; - vsinf->pScissors = scissors; -} - -void vku_pl_init_rasterization_state_info(VkPipelineRasterizationStateCreateInfo *rsinf) -{ - memset(rsinf, 0, sizeof *rsinf); - rsinf->sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO; - rsinf->polygonMode = VK_POLYGON_MODE_FILL; - rsinf->cullMode = VK_CULL_MODE_FRONT_BIT; - rsinf->frontFace = VK_FRONT_FACE_COUNTER_CLOCKWISE; -} - -void vku_pl_init_multisample_state_info(VkPipelineMultisampleStateCreateInfo *msinf) -{ - memset(msinf, 0, sizeof *msinf); - msinf->sType = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO; - msinf->rasterizationSamples = VK_SAMPLE_COUNT_1_BIT; -} - -void vku_pl_init_depth_stencil_state_info(VkPipelineDepthStencilStateCreateInfo *dsinf, - bool enable) -{ - memset(dsinf, 0, sizeof *dsinf); - dsinf->sType = VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO; - dsinf->depthTestEnable = enable ? VK_TRUE : VK_FALSE; -} - -void vku_pl_init_color_blend_state_info(VkPipelineColorBlendStateCreateInfo *cbsinf, - bool enable) -{ - memset(cbsinf, 0, sizeof *cbsinf); - cbsinf->sType = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO; - //TODO -} diff --git a/src/vulkan/vkutil.h b/src/vulkan/vkutil.h index 775fd27..bfe38f5 100644 --- a/src/vulkan/vkutil.h +++ b/src/vulkan/vkutil.h @@ -12,7 +12,6 @@ extern VkSwapchainKHR vk_swapchain; extern VkSurfaceKHR vk_surface; extern VkInstance vk_instance; extern int vk_qfamily; -extern VkDescriptorPool vk_dpool; extern VkRenderPass vk_renderpass; struct vku_buffer { @@ -29,37 +28,6 @@ struct vku_descriptor { int size; }; -struct vku_pipeline { -}; - -struct vku_pipeline_info { - /* shader stages */ - VkShaderModule vs; - VkShaderModule fs; - - /* states info */ - - VkPipelineShaderStageCreateInfo inf_shader_stage; - - VkPipelineVertexInputStateCreateInfo inf_vertex_input; - - VkPipelineInputAssemblyStateCreateInfo inf_input_asm; - - VkPipelineTessellationStateCreateInfo inf_tessel; - - VkPipelineViewportStateCreateInfo inf_viewport; - VkPipelineRasterizationStateCreateInfo inf_raster; - VkPipelineMultisampleStateCreateInfo inf_multisample; - VkPipelineDepthStencilStateCreateInfo inf_depth_stencil; - VkPipelineColorBlendStateCreateInfo inf_colorblend; - - VkPipelineDynamicStateCreateInfo inf_dynamic_state; - - VkPipelineLayout layout; - VkRenderPass renderpass; - uint32_t subpass; -}; - /* extensions */ bool vku_have_extension(const char *name); bool vku_have_device_extension(const char *name); @@ -102,6 +70,8 @@ void vku_destroy_descriptor(vku_descriptor *descriptor); bool vku_create_descriptor_pool(vku_descriptor **descriptors, int num_desc, VkDescriptorSet set); -void vku_destroy_descriptor_pool(); + +/* +void vku_destroy_descriptor_pool();*/ #endif // VKUTIL_H_ -- 1.7.10.4