]> O.S.I.I.S - jp/vkvg.git/commitdiff
LOG macro, some PIPELINE_STAGE changes in copy operations
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Wed, 9 May 2018 12:17:54 +0000 (14:17 +0200)
committerJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Wed, 9 May 2018 12:17:54 +0000 (14:17 +0200)
include/vkvg.h
src/vkvg_context.c
src/vkvg_context_internal.c
src/vkvg_device.c
src/vkvg_device_internal.c
vkh

index cef9ba4fbd003c606ff4a41863d9fa92b3b07d62..fdb7f385fb2c11791779bb61e5948f2b7f877bbc 100644 (file)
@@ -31,6 +31,19 @@ extern "C" {
 
 #define VKVG_SAMPLES 8
 
+#define LOG_ERR                        0x00
+#define LOG_DEBUG              0x10
+#define LOG_INFO               0x20
+#define LOG_INFO_PATH   0x40
+#define LOG_FULL               0xff
+
+#ifdef DEBUG
+static uint8_t log_level       = LOG_INFO | LOG_DEBUG;
+#define LOG(level,...) (log_level & level) ? fprintf (stdout, __VA_ARGS__):true;
+#else
+#define LOG
+#endif
+
 typedef enum _vkvg_direction {
     VKVG_HORIZONTAL    = 0,
     VKVG_VERTICAL      = 1
index d5c3eb5347c0ad551ea3b3b93a914b913b659d60..f3e17625f1bd831c36d83988725a684934de11d8 100644 (file)
@@ -33,6 +33,8 @@ static uint32_t dlpCount = 0;
 
 VkvgContext vkvg_create(VkvgSurface surf)
 {
+    LOG(LOG_INFO, "CREATE Context: surf = %lu\n", surf);
+
     VkvgDevice dev = surf->dev;
     VkvgContext ctx = (vkvg_context*)calloc(1, sizeof(vkvg_context));
 
@@ -361,6 +363,7 @@ void _poly_fill (VkvgContext ctx){
              _add_vertex(ctx, v);
         }
 
+        LOG(LOG_INFO_PATH, "\tpoly fill: point count = %d; 1st vert = %d; vert count = %d\n", pathPointCount, firstVertIdx, ctx->vertCount - firstVertIdx);
         vkCmdDraw (ctx->cmd, pathPointCount, 1, firstVertIdx ,0);
 
         ptrPath+=2;
@@ -388,6 +391,8 @@ void vkvg_fill_preserve (VkvgContext ctx){
         return;
     _finish_path(ctx);
 
+    LOG(LOG_INFO, "FILL: ctx = %lu; path cpt = %d;\n", ctx, ctx->pathPtr / 2);
+
     if (ctx->pointCount * 4 > ctx->sizeIndices - ctx->indCount)//flush if vk buff is full
         vkvg_flush(ctx);
 
@@ -404,6 +409,8 @@ void vkvg_stroke_preserve (VkvgContext ctx)
         return;
     _finish_path(ctx);
 
+    LOG(LOG_INFO, "STROKE: ctx = %lu; path cpt = %d;\n", ctx, ctx->pathPtr / 2);
+
     if (ctx->pointCount * 4 > ctx->sizeIndices - ctx->indCount)
         vkvg_flush(ctx);
 
@@ -419,8 +426,11 @@ void vkvg_stroke_preserve (VkvgContext ctx)
         uint32_t firstIdx = ctx->vertCount;
         i = ctx->pathes[ptrPath];
 
+        LOG(LOG_INFO_PATH, "\tPATH: start = %d; ", ctx->pathes[ptrPath], ctx->pathes[ptrPath+1]);
+
         if (_path_is_closed(ctx,ptrPath)){
             lastPathPointIdx = _get_last_point_of_closed_path(ctx,ptrPath);
+            LOG(LOG_INFO_PATH, "end = %d\n", lastPathPointIdx);
             //prevent closing on the same position, this could be generalize
             //to prevent processing of two consecutive point at the same position
             if (vec2_equ(ctx->points[i], ctx->points[lastPathPointIdx]))
@@ -428,6 +438,8 @@ void vkvg_stroke_preserve (VkvgContext ctx)
             iL = lastPathPointIdx;
         }else{
             lastPathPointIdx = ctx->pathes[ptrPath+1];
+            LOG(LOG_INFO_PATH, "end = %d\n", lastPathPointIdx);
+
             vec2 n = vec2_line_norm(ctx->points[i], ctx->points[i+1]);
 
             vec2 p0 = ctx->points[i];
@@ -596,21 +608,23 @@ void vkvg_font_extents (VkvgContext ctx, vkvg_font_extents_t* extents) {
 }
 
 void vkvg_save (VkvgContext ctx){
+    LOG(LOG_INFO, "SAVE CONTEXT: ctx = %lu\n", ctx);
+
     _flush_cmd_buff(ctx);
 
     VkvgDevice dev = ctx->pSurf->dev;
     vkvg_context_save_t* sav = (vkvg_context_save_t*)calloc(1,sizeof(vkvg_context_save_t));
 
     sav->stencilMS = vkh_image_ms_create(dev,VK_FORMAT_S8_UINT,VKVG_SAMPLES,ctx->pSurf->width,ctx->pSurf->height,
-                        VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,
+                        VMA_MEMORY_USAGE_GPU_ONLY,
                         VK_IMAGE_USAGE_TRANSFER_SRC_BIT|VK_IMAGE_USAGE_TRANSFER_DST_BIT);
 
     vkh_cmd_begin (ctx->cmd, VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT);
 
     vkh_image_set_layout (ctx->cmd, ctx->pSurf->stencilMS, VK_IMAGE_ASPECT_STENCIL_BIT, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
-            VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT);
+            VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT);
     vkh_image_set_layout (ctx->cmd, sav->stencilMS, VK_IMAGE_ASPECT_STENCIL_BIT, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
-            VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT);
+            VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT);
 
     VkImageCopy cregion = { .srcSubresource = {VK_IMAGE_ASPECT_STENCIL_BIT, 0, 0, 1},
                             .dstSubresource = {VK_IMAGE_ASPECT_STENCIL_BIT, 0, 0, 1},
@@ -665,6 +679,8 @@ void vkvg_restore (VkvgContext ctx){
     if (ctx->pSavedCtxs == NULL)
         return;
 
+    LOG(LOG_INFO, "RESTORE CONTEXT: ctx = %lu\n", ctx);
+
     vkvg_context_save_t* sav = ctx->pSavedCtxs;
     ctx->pSavedCtxs = sav->pNext;
 
@@ -677,9 +693,9 @@ void vkvg_restore (VkvgContext ctx){
     vkh_cmd_begin (ctx->cmd, VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT);
 
     vkh_image_set_layout (ctx->cmd, ctx->pSurf->stencilMS, VK_IMAGE_ASPECT_STENCIL_BIT, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
-            VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT);
+            VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT);
     vkh_image_set_layout (ctx->cmd, sav->stencilMS, VK_IMAGE_ASPECT_STENCIL_BIT, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
-            VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT);
+            VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT);
 
     VkImageCopy cregion = { .srcSubresource = {VK_IMAGE_ASPECT_STENCIL_BIT, 0, 0, 1},
                             .dstSubresource = {VK_IMAGE_ASPECT_STENCIL_BIT, 0, 0, 1},
index 7d0446567cd969e58fcb073f8de02681b90edf16..f4155319f09374cb1faaf10c51ce8e558c3deeaf 100644 (file)
@@ -169,6 +169,7 @@ void _create_cmd_buff (VkvgContext ctx){
     ctx->cmd = vkh_cmd_buff_create(ctx->pSurf->dev, ctx->cmdPool,VK_COMMAND_BUFFER_LEVEL_PRIMARY);
 }
 void _record_draw_cmd (VkvgContext ctx){
+    LOG(LOG_INFO, "RECORD DRAW CMD: ctx = %lu; vert cpt = %d; ind cpt = %d; ind drawn = %d\n", ctx, ctx->vertCount - 4, ctx->indCount - 6, ctx->indCount - ctx->curIndStart);
     if (ctx->indCount == ctx->curIndStart)
         return;
     vkCmdDrawIndexed(ctx->cmd, ctx->indCount - ctx->curIndStart, 1, ctx->curIndStart, 0, 1);
@@ -216,6 +217,7 @@ void _explicit_ms_resolve (VkvgContext ctx){
 }
 
 void _flush_cmd_buff (VkvgContext ctx){
+    LOG(LOG_INFO, "FLUSH Context: ctx = %lu; vert cpt = %d; ind cpt = %d\n", ctx, ctx->vertCount -4, ctx->indCount - 6);
     _record_draw_cmd        (ctx);
     vkCmdEndRenderPass      (ctx->cmd);
     //_explicit_ms_resolve    (ctx);
index a494aa7f7b1367e9089cd64986b9187daf0c843a..7cbc8d57c2e50ad542c88e4f71b296f56cd5a17b 100644 (file)
@@ -27,6 +27,8 @@
 
 VkvgDevice vkvg_device_create(VkPhysicalDevice phy, VkDevice vkdev, uint32_t qFamIdx, uint32_t qIndex)
 {
+    LOG(LOG_INFO, "CREATE Device: qFam = %d; qIdx = %d\n", qFamIdx, qIndex);
+
     VkvgDevice dev = (vkvg_device*)malloc(sizeof(vkvg_device));
 
     dev->hdpi   = 72;
@@ -70,6 +72,8 @@ void vkvg_device_destroy (VkvgDevice dev)
     if (dev->references > 0)
         return;
 
+    LOG(LOG_INFO, "DESTROY Device\n");
+
     vkDestroyDescriptorSetLayout    (dev->vkDev, dev->dslGrad,NULL);
     vkDestroyDescriptorSetLayout    (dev->vkDev, dev->dslFont,NULL);
     vkDestroyDescriptorSetLayout    (dev->vkDev, dev->dslSrc, NULL);
index 51b2d2e96b606fe08aae399d9a934d7bae9d3c78..aaa802cf391dfd9e0a2c2cd9459f6e7f74edaab1 100644 (file)
@@ -66,10 +66,10 @@ void _setupRenderPass(VkvgDevice dev)
     VkAttachmentDescription attDS = {
                     .format = VK_FORMAT_S8_UINT,
                     .samples = VKVG_SAMPLES,
-                    .loadOp = VK_ATTACHMENT_LOAD_OP_LOAD,
-                    .storeOp = VK_ATTACHMENT_STORE_OP_STORE,
-                    .stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE,
-                    .stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE,
+                    .loadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE,
+                    .storeOp = VK_ATTACHMENT_STORE_OP_DONT_CARE,
+                    .stencilLoadOp = VK_ATTACHMENT_LOAD_OP_LOAD,
+                    .stencilStoreOp = VK_ATTACHMENT_STORE_OP_STORE,
                     .initialLayout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL,
                     .finalLayout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL };
 /*    VkAttachmentDescription attDSResolve = {
diff --git a/vkh b/vkh
index 6362a530a88166df5b52376bd2107e7a531b2411..7878c4fef0d0afb1b07b37b62306f59e037cf32a 160000 (submodule)
--- a/vkh
+++ b/vkh
@@ -1 +1 @@
-Subproject commit 6362a530a88166df5b52376bd2107e7a531b2411
+Subproject commit 7878c4fef0d0afb1b07b37b62306f59e037cf32a