]> O.S.I.I.S - jp/vkvg.git/commitdiff
link vkh as static lib with opaque pointers
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Mon, 2 Apr 2018 20:19:18 +0000 (22:19 +0200)
committerJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Mon, 2 Apr 2018 20:19:18 +0000 (22:19 +0200)
CMakeLists.txt
src/vkvg_context.c
src/vkvg_context_internal.c
src/vkvg_context_internal.h
src/vkvg_fonts.c
src/vkvg_fonts.h
src/vkvg_pattern.c
src/vkvg_pattern.h
src/vkvg_surface.c
src/vkvg_surface_internal.h
vkh

index 187e420fd18eb20c311d293c62cbbb0a72ed3e42..65034540d302996838a870aaf12e47d836cd2a38 100644 (file)
@@ -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}
index 49eda5986549a56611da7aad06e085ddab6c9b04..a5a47e5fa2ebc14e0ba65d5da39379505ebe2ffa 100644 (file)
@@ -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);
index 8813c50aa589c3e4597ec604949edaa1cebe999a..779efb8f215c962443c43414e5ad1de1cf8bab3a 100644 (file)
@@ -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,
index 84430b76c121918d3511fa1481ab6f794a0479b4..bd51c3820529eed1e434196ed96847cbe1b5126a 100644 (file)
@@ -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
index 5765452f1279e8901fa0cfdc6672355ee5a89098..c8aed0a7c2af9fc56c79690930d9c8aadfcfb7b7 100644 (file)
@@ -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);
index e5ba755cfdc2201490797c12763c23668d894a74..d959e8884d354f3bbba9648c988aa8d7ad378e3d 100644 (file)
@@ -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
index 2fb4a4fc3580feaf58822c002507385d1e3addb5..be3282c7a147c6c9d76d624c2ef7c7f1e2377d4a 100644 (file)
@@ -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[] = {
         {
index 9b58fc1202075af5b9621451122c998951be1a70..5356d28127fa697cc1954e03bff4df2080d6a04a 100644 (file)
@@ -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
index 46f3f3f274d8d8e2eaff97b47d5ed759ed165c93..ef0f9a13a9a58a7ded5ecf2d9fc991f1da881612 100644 (file)
@@ -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)
 {
index 60a37fc9849f4d231e978002177bfe011e9b124e..1139a49b5f7d995e7410b300789d9766cee899b8 100644 (file)
@@ -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 5a27d2a48747db16eb098718dbe1396d0d291e19..a9a9ac94d2a52465005278f4354b53559d216df4 160000 (submodule)
--- a/vkh
+++ b/vkh
@@ -1 +1 @@
-Subproject commit 5a27d2a48747db16eb098718dbe1396d0d291e19
+Subproject commit a9a9ac94d2a52465005278f4354b53559d216df4