From: Jean-Philippe Bruyère Date: Mon, 2 Apr 2018 20:19:18 +0000 (+0200) Subject: link vkh as static lib with opaque pointers X-Git-Tag: v0.1-alpha~160 X-Git-Url: https://git.osiis.dedyn.io/?a=commitdiff_plain;h=6e61e2b88498689f87efe79a3e604c3f0449c6b5;p=jp%2Fvkvg.git link vkh as static lib with opaque pointers --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 187e420..6503454 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,6 +11,8 @@ IF(NOT CMAKE_BUILD_TYPE) ENDIF() MESSAGE(STATUS "${CMAKE_BUILD_TYPE} build.") +add_subdirectory (vkh) + FIND_PACKAGE(Vulkan REQUIRED) FIND_PACKAGE(GLFW3 REQUIRED) FIND_PACKAGE(Freetype REQUIRED) @@ -88,7 +90,7 @@ ENDFOREACH() SET_SOURCE_FILES_PROPERTIES(${SHADERS_H} PROPERTIES GENERATED 1) #add_definitions( -DDEBUG_VK_PERF=true ) -FILE(GLOB VKVG_SRC src/*.c vkh/*.c) +FILE(GLOB VKVG_SRC src/*.c) ADD_LIBRARY(${PROJECT_NAME} SHARED ${VKVG_SRC} ${SHADERS}) @@ -96,15 +98,15 @@ add_dependencies(${PROJECT_NAME} BuildShaderHeader) #add_dependencies(BuildShaderHeader CompileShaders) SET_TARGET_PROPERTIES(vkvg PROPERTIES - VERSION ${PROJECT_VERSION} - SOVERSION 1 - PUBLIC_HEADER include/vkvg.h + VERSION ${PROJECT_VERSION} + SOVERSION 1 + PUBLIC_HEADER include/vkvg.h ) TARGET_INCLUDE_DIRECTORIES(vkvg PRIVATE - ${CMAKE_CURRENT_SOURCE_DIR}/include - ${CMAKE_CURRENT_SOURCE_DIR}/vkh - ${CMAKE_CURRENT_SOURCE_DIR}/src + ${CMAKE_CURRENT_SOURCE_DIR}/include + ${CMAKE_CURRENT_SOURCE_DIR}/src + ${CMAKE_CURRENT_SOURCE_DIR}/vkh/include ${FREETYPE_INCLUDE_DIRS} ${HARFBUZZ_INCLUDE_DIRS} ${FONTCONFIG_INCLUDE_DIR} diff --git a/src/vkvg_context.c b/src/vkvg_context.c index 49eda59..a5a47e5 100644 --- a/src/vkvg_context.c +++ b/src/vkvg_context.c @@ -455,7 +455,7 @@ void vkvg_set_source_surface(VkvgContext ctx, VkvgSurface surf, float x, float y vkh_image_create_sampler(ctx->source,VK_FILTER_NEAREST, VK_FILTER_NEAREST, VK_SAMPLER_MIPMAP_MODE_NEAREST,VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER); - if (ctx->source->layout != VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL){ + if (vkh_image_get_layout (ctx->source) != VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL){ vkh_cmd_begin (ctx->cmd,VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT); vkh_image_set_layout (ctx->cmd, ctx->source, VK_IMAGE_ASPECT_COLOR_BIT, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, @@ -518,8 +518,8 @@ void vkvg_save (VkvgContext ctx){ .dstSubresource = {VK_IMAGE_ASPECT_STENCIL_BIT, 0, 0, 1}, .extent = {ctx->pSurf->width,ctx->pSurf->height,1}}; vkCmdCopyImage(ctx->cmd, - ctx->pSurf->stencilMS->image,VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, - sav->stencilMS->image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, + vkh_image_get_vkimage (ctx->pSurf->stencilMS),VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, + vkh_image_get_vkimage (sav->stencilMS), VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1, &cregion); vkh_image_set_layout (ctx->cmd, ctx->pSurf->stencilMS, VK_IMAGE_ASPECT_STENCIL_BIT, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, @@ -579,8 +579,8 @@ void vkvg_restore (VkvgContext ctx){ .dstSubresource = {VK_IMAGE_ASPECT_STENCIL_BIT, 0, 0, 1}, .extent = {ctx->pSurf->width,ctx->pSurf->height,1}}; vkCmdCopyImage(ctx->cmd, - sav->stencilMS->image, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, - ctx->pSurf->stencilMS->image,VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, + vkh_image_get_vkimage (sav->stencilMS), VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, + vkh_image_get_vkimage (ctx->pSurf->stencilMS),VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1, &cregion); vkh_image_set_layout (ctx->cmd, ctx->pSurf->stencilMS, VK_IMAGE_ASPECT_STENCIL_BIT, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT); diff --git a/src/vkvg_context_internal.c b/src/vkvg_context_internal.c index 8813c50..779efb8 100644 --- a/src/vkvg_context_internal.c +++ b/src/vkvg_context_internal.c @@ -112,8 +112,8 @@ void _explicit_ms_resolve (VkvgContext ctx){ }; vkCmdResolveImage(ctx->cmd, - ctx->pSurf->imgMS->image, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, - ctx->pSurf->img->image ,VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, + vkh_image_get_vkimage (ctx->pSurf->imgMS), VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, + vkh_image_get_vkimage (ctx->pSurf->img) ,VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1,&re); vkh_image_set_layout (ctx->cmd, ctx->pSurf->imgMS, VK_IMAGE_ASPECT_COLOR_BIT, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL , VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT); @@ -199,10 +199,7 @@ uint32_t _get_last_point_of_closed_path(VkvgContext ctx, uint32_t ptrPath){ } void _update_source_descriptor_set (VkvgContext ctx){ VkvgDevice dev = ctx->pSurf->dev; - VkDescriptorImageInfo descSrcTex = { .imageView = ctx->source->view, - .imageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, - .sampler = ctx->source->sampler }; - + VkDescriptorImageInfo descSrcTex = vkh_image_get_descriptor (ctx->source, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL); VkWriteDescriptorSet writeDescriptorSet = { .sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET, .dstSet = ctx->dsSrc, @@ -216,10 +213,7 @@ void _update_source_descriptor_set (VkvgContext ctx){ void _update_font_descriptor_set (VkvgContext ctx){ VkvgDevice dev = ctx->pSurf->dev; _font_cache_t* cache = dev->fontCache; - VkDescriptorImageInfo descFontTex = { .imageView = cache->cacheTex->view, - .imageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, - .sampler = cache->cacheTex->sampler }; - + VkDescriptorImageInfo descFontTex = vkh_image_get_descriptor (cache->cacheTex, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL); VkWriteDescriptorSet writeDescriptorSet = { .sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET, .dstSet = ctx->dsFont, diff --git a/src/vkvg_context_internal.h b/src/vkvg_context_internal.h index 84430b7..bd51c38 100644 --- a/src/vkvg_context_internal.h +++ b/src/vkvg_context_internal.h @@ -4,7 +4,7 @@ #include "vkvg_internal.h" #include "vkvg.h" #include "vkvg_buff.h" -#include "vkh_image.h" +#include "vkh.h" #include "vkvg_fonts.h" #define VKVG_PTS_SIZE 4096 diff --git a/src/vkvg_fonts.c b/src/vkvg_fonts.c index 5765452..c8aed0a 100644 --- a/src/vkvg_fonts.c +++ b/src/vkvg_fonts.c @@ -3,7 +3,7 @@ #include "vkvg_surface_internal.h" #include "vkvg_device_internal.h" -#include "vkh_buffer.h" +#include "vkh.h" int defaultFontCharSize = 12<<6; @@ -65,8 +65,8 @@ void _increase_font_tex_array (VkvgDevice dev){ .dstSubresource = {VK_IMAGE_ASPECT_COLOR_BIT, 0, 0, cache->cacheTexLength}, .extent = {FONT_PAGE_SIZE,FONT_PAGE_SIZE,1}}; - vkCmdCopyImage (cache->cmd, cache->cacheTex->image, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, - newImg->image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1, &cregion); + vkCmdCopyImage (cache->cmd, vkh_image_get_vkimage (cache->cacheTex), VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, + vkh_image_get_vkimage (newImg), VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1, &cregion); vkh_image_set_layout_subres(cache->cmd, newImg, subresNew, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT); @@ -170,7 +170,7 @@ void _flush_chars_to_tex (VkvgDevice dev, _vkvg_font_t* f) { vkResetCommandBuffer(cache->cmd,NULL); vkResetFences (dev->vkDev,1,&cache->uploadFence); - memcpy(cache->buff->mapped, cache->hostBuff, f->curLine.height * FONT_PAGE_SIZE); + memcpy(vkh_buffer_get_mapped_pointer (cache->buff), cache->hostBuff, f->curLine.height * FONT_PAGE_SIZE); vkh_cmd_begin (cache->cmd,VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT); @@ -184,7 +184,8 @@ void _flush_chars_to_tex (VkvgDevice dev, _vkvg_font_t* f) { .imageOffset = {f->curLine.penX,f->curLine.penY,0}, .imageExtent = {FONT_PAGE_SIZE-f->curLine.penX,f->curLine.height,1}}; - vkCmdCopyBufferToImage(cache->cmd, cache->buff->buffer, cache->cacheTex->image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1, &bufferCopyRegion); + vkCmdCopyBufferToImage(cache->cmd, vkh_buffer_get_vkbuffer (cache->buff), + vkh_image_get_vkimage (cache->cacheTex), VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1, &bufferCopyRegion); vkh_image_set_layout_subres(cache->cmd, cache->cacheTex, subres, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT); diff --git a/src/vkvg_fonts.h b/src/vkvg_fonts.h index e5ba755..d959e88 100644 --- a/src/vkvg_fonts.h +++ b/src/vkvg_fonts.h @@ -15,7 +15,8 @@ #include "vkvg_internal.h" #include "vkvg.h" -#include "vkh_image.h" +#include "vkh.h" +//#include "vkh_image.h" ///texture coords of one char diff --git a/src/vkvg_pattern.c b/src/vkvg_pattern.c index 2fb4a4f..be3282c 100644 --- a/src/vkvg_pattern.c +++ b/src/vkvg_pattern.c @@ -16,8 +16,8 @@ VkvgPattern _init_pattern (VkvgDevice dev){ void _update_descSet (VkvgPattern pat){ _font_cache_t* cache = pat->dev->fontCache; - VkDescriptorImageInfo descFontTex = {cache->cacheTex->sampler, cache->cacheTex->view,VK_IMAGE_LAYOUT_GENERAL}; - VkDescriptorImageInfo descSrcTex = {pat->img->sampler, pat->img->view, VK_IMAGE_LAYOUT_GENERAL}; + VkDescriptorImageInfo descFontTex = vkh_image_get_descriptor (cache->cacheTex,VK_IMAGE_LAYOUT_GENERAL); + VkDescriptorImageInfo descSrcTex = vkh_image_get_descriptor (pat->img, VK_IMAGE_LAYOUT_GENERAL); VkWriteDescriptorSet writeDescriptorSet[] = { { diff --git a/src/vkvg_pattern.h b/src/vkvg_pattern.h index 9b58fc1..5356d28 100644 --- a/src/vkvg_pattern.h +++ b/src/vkvg_pattern.h @@ -3,19 +3,19 @@ #include "vkvg_internal.h" #include "vkvg.h" -#include "vkhelpers.h" +#include "vkh.h" typedef enum _vkvg_extend { - VKVG_EXTEND_NONE, - VKVG_EXTEND_REPEAT, - VKVG_EXTEND_REFLECT, - VKVG_EXTEND_PAD + VKVG_EXTEND_NONE, + VKVG_EXTEND_REPEAT, + VKVG_EXTEND_REFLECT, + VKVG_EXTEND_PAD } vkvg_extend_t; typedef struct _vkvg_pattern_t { - VkvgDevice dev; - VkDescriptorSet descriptorSet; - vkvg_extend_t extend; - VkhImage img; + VkvgDevice dev; + VkDescriptorSet descriptorSet; + vkvg_extend_t extend; + VkhImage img; }vkvg_pattern; #endif diff --git a/src/vkvg_surface.c b/src/vkvg_surface.c index 46f3f3f..ef0f9a1 100644 --- a/src/vkvg_surface.c +++ b/src/vkvg_surface.c @@ -17,7 +17,7 @@ void _clear_stencil (VkvgSurface surf) vkh_image_set_layout (cmd, surf->stencilMS, VK_IMAGE_ASPECT_STENCIL_BIT, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT); - vkCmdClearDepthStencilImage (cmd, surf->stencilMS->image, + vkCmdClearDepthStencilImage (cmd, vkh_image_get_vkimage (surf->stencilMS), VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,&clr,1,&range); vkh_image_set_layout (cmd, surf->stencilMS, VK_IMAGE_ASPECT_STENCIL_BIT, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, @@ -46,8 +46,9 @@ VkvgSurface vkvg_surface_create(VkvgDevice dev, uint32_t width, uint32_t height) vkh_image_create_descriptor(surf->stencilMS, VK_IMAGE_VIEW_TYPE_2D, VK_IMAGE_ASPECT_STENCIL_BIT, VK_FILTER_NEAREST, VK_FILTER_NEAREST, VK_SAMPLER_MIPMAP_MODE_NEAREST,VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER); VkImageView attachments[] = { - surf->imgMS->view, surf->img->view, - surf->stencilMS->view, + vkh_image_get_view (surf->imgMS), + vkh_image_get_view (surf->img), + vkh_image_get_view (surf->stencilMS), }; VkFramebufferCreateInfo frameBufferCreateInfo = { .sType = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO, .renderPass = dev->renderPass, @@ -74,7 +75,7 @@ void vkvg_surface_destroy(VkvgSurface surf) VkImage vkvg_surface_get_vk_image(VkvgSurface surf) { - return surf->img->image; + return vkh_image_get_vkimage (surf->img); } VkImage vkvg_surface_get_vkh_image(VkvgSurface surf) { diff --git a/src/vkvg_surface_internal.h b/src/vkvg_surface_internal.h index 60a37fc..1139a49 100644 --- a/src/vkvg_surface_internal.h +++ b/src/vkvg_surface_internal.h @@ -3,7 +3,7 @@ #include "vkvg_internal.h" #include "vkvg.h" -#include "vkh_image.h" +#include "vkh.h" typedef struct _vkvg_surface_t { VkvgDevice dev; diff --git a/vkh b/vkh index 5a27d2a..a9a9ac9 160000 --- a/vkh +++ b/vkh @@ -1 +1 @@ -Subproject commit 5a27d2a48747db16eb098718dbe1396d0d291e19 +Subproject commit a9a9ac94d2a52465005278f4354b53559d216df4