summaryrefslogtreecommitdiffstatsci
path: root/src/vkvg_fonts.c
diff options
context:
space:
mode:
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>2022-01-26 22:01:48 +0100
committerJean-Philippe Bruyère <jp_bruyere@hotmail.com>2022-01-26 22:01:48 +0100
commit19abdef1af4b28e40ba6b994ea22e92b7dde1d8f (patch)
treeffdc7f4d10e351ee1856158cc14ac0277542aa1b /src/vkvg_fonts.c
parent88c83b6b9b465a670f4989bbe21bd2e5f9eb2dd0 (diff)
test threadctxthreadctxtests
Diffstat (limited to 'src/vkvg_fonts.c')
-rw-r--r--src/vkvg_fonts.c21
1 files changed, 9 insertions, 12 deletions
diff --git a/src/vkvg_fonts.c b/src/vkvg_fonts.c
index d4ed5fd..8863c53 100644
--- a/src/vkvg_fonts.c
+++ b/src/vkvg_fonts.c
@@ -70,7 +70,7 @@ void _init_fonts_cache (VkvgDevice dev){
vkh_image_create_descriptor (cache->texture, VK_IMAGE_VIEW_TYPE_2D_ARRAY, VK_IMAGE_ASPECT_COLOR_BIT,
VK_FILTER_NEAREST, VK_FILTER_NEAREST, VK_SAMPLER_MIPMAP_MODE_NEAREST, VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER);
- cache->uploadFence = vkh_fence_create((VkhDevice)dev);
+ _sync_context_init ((VkhDevice)dev,&cache->uploadSync);
uint32_t buffLength = FONT_PAGE_SIZE*FONT_PAGE_SIZE*cache->texPixelSize;
@@ -88,7 +88,7 @@ void _init_fonts_cache (VkvgDevice dev){
VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT);
VK_CHECK_RESULT(vkEndCommandBuffer(cache->cmd));
- _submit_cmd (dev, &cache->cmd, cache->uploadFence);
+ _submit_cmd (dev, &cache->cmd, &cache->uploadSync);
cache->hostBuff = (uint8_t*)malloc(buffLength);
cache->pensY = (int*)calloc(cache->texLength, sizeof(int));
@@ -103,9 +103,8 @@ void _increase_font_tex_array (VkvgDevice dev){
_font_cache_t* cache = dev->fontCache;
- vkWaitForFences (dev->vkDev, 1, &cache->uploadFence, VK_TRUE, UINT64_MAX);
- vkResetCommandBuffer(cache->cmd, 0);
- vkResetFences (dev->vkDev, 1, &cache->uploadFence);
+ _sync_context_wait_and_reset (&cache->uploadSync, UINT64_MAX);
+ vkResetCommandBuffer (cache->cmd, 0);
uint8_t newSize = cache->texLength + FONT_CACHE_INIT_LAYERS;
VkhImage newImg = vkh_tex2d_array_create ((VkhDevice)dev, cache->texFormat, FONT_PAGE_SIZE, FONT_PAGE_SIZE,
@@ -139,8 +138,8 @@ void _increase_font_tex_array (VkvgDevice dev){
VK_CHECK_RESULT(vkEndCommandBuffer(cache->cmd));
- _submit_cmd (dev, &cache->cmd, cache->uploadFence);
- vkWaitForFences (dev->vkDev, 1, &cache->uploadFence, VK_TRUE, UINT64_MAX);
+ _submit_cmd (dev, &cache->cmd, &cache->uploadSync);
+ _sync_context_wait (&cache->uploadSync, UINT64_MAX);
cache->pensY = (int*)realloc(cache->pensY, newSize * sizeof(int));
void* tmp = memset (&cache->pensY[cache->texLength],0,FONT_CACHE_INIT_LAYERS*sizeof(int));
@@ -215,11 +214,10 @@ void _destroy_font_cache (VkvgDevice dev){
free(cache->fonts);
free(cache->pensY);
-
vkvg_buffer_destroy (&cache->buff);
vkh_image_destroy (cache->texture);
//vkFreeCommandBuffers(dev->vkDev,dev->cmdPool, 1, &cache->cmd);
- vkDestroyFence (dev->vkDev,cache->uploadFence,NULL);
+ _sync_context_clear (&cache->uploadSync);
#ifdef VKVG_USE_FREETYPE
FT_Done_FreeType(cache->library);
#endif
@@ -240,9 +238,8 @@ void _flush_chars_to_tex (VkvgDevice dev, _vkvg_font_t* f) {
return;
LOG(VKVG_LOG_INFO, "_flush_chars_to_tex pen(%d, %d)\n",f->curLine.penX, f->curLine.penY);
- vkWaitForFences (dev->vkDev,1,&cache->uploadFence,VK_TRUE,UINT64_MAX);
+ _sync_context_wait_and_reset(&cache->uploadSync, UINT64_MAX);
vkResetCommandBuffer(cache->cmd,0);
- vkResetFences (dev->vkDev,1,&cache->uploadFence);
memcpy(cache->buff.allocInfo.pMappedData, cache->hostBuff, (uint64_t)f->curLine.height * FONT_PAGE_SIZE * cache->texPixelSize);
@@ -268,7 +265,7 @@ void _flush_chars_to_tex (VkvgDevice dev, _vkvg_font_t* f) {
VK_CHECK_RESULT(vkEndCommandBuffer(cache->cmd));
- _submit_cmd (dev, &cache->cmd, cache->uploadFence);
+ _submit_cmd (dev, &cache->cmd, &cache->uploadSync);
f->curLine.penX += cache->stagingX;
cache->stagingX = 0;