update vulkan library (part 1)
This commit is contained in:
parent
cad7bc94be
commit
e7124105aa
2
dub.json
2
dub.json
@ -37,6 +37,6 @@
|
||||
"dflags": ["-P-I/usr/include/freetype2", "-Jbuild", "-Jassets", "-unittest"],
|
||||
"dflags-ldc2": ["-link-debuglib"],
|
||||
"dflags-dmd": []
|
||||
},
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@ -1 +1 @@
|
||||
Subproject commit 3390ee9742fbce758941a0dd216ebec5c75876e5
|
||||
Subproject commit 38f7bcf3d6c48aaa4fb8e663cec45bd4d2767561
|
||||
@ -21,7 +21,6 @@ f32 g_delta = 0.0;
|
||||
struct RenderCtx
|
||||
{
|
||||
PlatformWindow* window;
|
||||
Renderer rd;
|
||||
Descriptor[FS][FO] font_descs;
|
||||
Descriptor default_tex;
|
||||
Descriptor sampler;
|
||||
|
||||
@ -4,6 +4,7 @@ import editor;
|
||||
import std.stdio;
|
||||
import dlib.alloc;
|
||||
import dlib.util;
|
||||
import dlib.math;
|
||||
|
||||
void main(string[] argv)
|
||||
{
|
||||
@ -41,9 +42,12 @@ void main(string[] argv)
|
||||
break;
|
||||
}
|
||||
|
||||
if(g_ctx.rd.res != Vec2(window.w, window.h).v)
|
||||
Vec2 current_res = Vec2(window.w, window.h);
|
||||
if(g_ctx.res != current_res)
|
||||
{
|
||||
SetExtent(&g_ctx.rd, window.w, window.h);
|
||||
SetExtent(window.w, window.h);
|
||||
g_ctx.res = current_res;
|
||||
Ortho(&g_ctx.pc.projection, 0.0, 0.0, current_res.x, current_res.y, -10.0, 10.0);
|
||||
}
|
||||
|
||||
if(inputs.first == null)
|
||||
|
||||
@ -372,24 +372,24 @@ InitUI(Ctx* ctx)
|
||||
|
||||
version(ENABLE_RENDERER)
|
||||
{
|
||||
ctx.rd = InitRenderer(handles, MB(16), MB(8));
|
||||
InitRenderer(handles, MB(16), MB(8));
|
||||
|
||||
DescLayoutBinding[2] layout_bindings = [
|
||||
{ binding: 0, descriptorType: DT.Image, descriptorCount: FONT_SIZES, stageFlags: SS.All },
|
||||
{ binding: 1, descriptorType: DT.Sampler, descriptorCount: 1, stageFlags: SS.All },
|
||||
];
|
||||
|
||||
ctx.desc_set_layout = CreateDescSetLayout(&ctx.rd, layout_bindings);
|
||||
ctx.pipeline_layout = CreatePipelineLayout(&ctx.rd, ctx.desc_set_layout, PushConst.sizeof);
|
||||
ctx.desc_set_layout = CreateDescSetLayout(layout_bindings);
|
||||
ctx.pipeline_layout = CreatePipelineLayout(ctx.desc_set_layout, PushConst.sizeof);
|
||||
|
||||
for(u64 i = 0; i < FRAME_OVERLAP; i += 1)
|
||||
{
|
||||
ctx.buffers[i].m_vtx = CreateMappedBuffer!(Vertex)(&ctx.rd, BT.Vertex, VERTEX_MAX_COUNT);
|
||||
ctx.buffers[i].m_idx = CreateMappedBuffer!(u32)(&ctx.rd, BT.Index, 6);
|
||||
ctx.buffers[i].m_vtx = CreateMappedBuffer!(Vertex)(BT.Vertex, VERTEX_MAX_COUNT);
|
||||
ctx.buffers[i].m_idx = CreateMappedBuffer!(u32)(BT.Index, 6);
|
||||
ctx.buffers[i].vtx = ctx.buffers[i].m_vtx.data;
|
||||
ctx.buffers[i].idx = ctx.buffers[i].m_idx.data;
|
||||
ctx.buffers[i].idx[0 .. $] = [0, 1, 2, 2, 1, 3];
|
||||
ctx.desc_sets[i] = AllocDescSet(&ctx.rd, ctx.desc_set_layout);
|
||||
ctx.desc_sets[i] = AllocDescSet(ctx.desc_set_layout);
|
||||
ctx.str_arenas[i] = CreateArena(MB(1));
|
||||
}
|
||||
|
||||
@ -412,7 +412,7 @@ InitUI(Ctx* ctx)
|
||||
{
|
||||
for(u32 j = 0; j < ctx.font_descs[i].length; j += 1)
|
||||
{
|
||||
CreateImageViewTex(&ctx.rd, &ctx.font_descs[i][j], ATLAS_DIMENSION, ATLAS_DIMENSION, DT.Image, 0, j);
|
||||
CreateImageViewTex(&ctx.font_descs[i][j], ATLAS_DIMENSION, ATLAS_DIMENSION, DT.Image, 0, j);
|
||||
ctx.font_sets[j].index = j;
|
||||
}
|
||||
}
|
||||
@ -421,25 +421,25 @@ InitUI(Ctx* ctx)
|
||||
|
||||
LoadFontSet();
|
||||
|
||||
CreateGraphicsPipeline(&ctx.rd, &ctx.pipeline, &ui_info);
|
||||
ctx.sampler = CreateSampler(&ctx.rd, MipmapMode.Nearest, 1);
|
||||
CreateGraphicsPipeline(&ctx.pipeline, &ui_info);
|
||||
ctx.sampler = CreateSampler(MipmapMode.Nearest, 1);
|
||||
|
||||
u8[512*512*4] white_tex = 255;
|
||||
for(u64 i = 0; i < ctx.font_descs.length; i += 1)
|
||||
{
|
||||
for(u32 j = 1; j < ctx.font_descs[i].length; j += 1)
|
||||
{
|
||||
Transfer(&ctx.rd, &ctx.font_descs[i][j].view, white_tex, ATLAS_DIMENSION, ATLAS_DIMENSION);
|
||||
Transfer(&ctx.font_descs[i][j].view, white_tex, ATLAS_DIMENSION, ATLAS_DIMENSION);
|
||||
}
|
||||
}
|
||||
|
||||
for(u64 i = 0; i < FRAME_OVERLAP; i += 1)
|
||||
{
|
||||
Write(&ctx.rd, ctx.desc_sets[i], ctx.font_descs[i]);
|
||||
Write(&ctx.rd, ctx.desc_sets[i], &ctx.sampler);
|
||||
Write(ctx.desc_sets[i], ctx.font_descs[i]);
|
||||
Write(ctx.desc_sets[i], &ctx.sampler);
|
||||
}
|
||||
|
||||
SetClearColors(&ctx.rd, [0.0, 0.0, 0.0, 1.0], [0.0, 0.0, 0.0, 0.0]);
|
||||
SetClearColors([0.0, 0.0, 0.0, 1.0], [0.0, 0.0, 0.0, 0.0]);
|
||||
}
|
||||
}
|
||||
|
||||
@ -529,12 +529,12 @@ LoadFontSet()
|
||||
FontSet* fs = ctx.font_sets.ptr + i;
|
||||
if(!fs.loaded[fi])
|
||||
{
|
||||
Transfer(&ctx.rd, &ctx.font_descs[fi][i].view, fs.atlas.data, ATLAS_DIMENSION, ATLAS_DIMENSION);
|
||||
Transfer(&ctx.font_descs[fi][i].view, fs.atlas.data, ATLAS_DIMENSION, ATLAS_DIMENSION);
|
||||
fs.loaded[fi] = true;
|
||||
}
|
||||
}
|
||||
|
||||
Write(&ctx.rd, ctx.desc_sets[fi], ctx.font_descs[fi]);
|
||||
Write(ctx.desc_sets[fi], ctx.font_descs[fi]);
|
||||
|
||||
ctx.fonts_to_load[fi] = false;
|
||||
}
|
||||
@ -551,14 +551,14 @@ Scissor(Ctx* ctx, Rect rect, Style* style)
|
||||
i32 w = cast(i32)clamp(floor(rect.p1.x-b) - x, 0.0, ctx.res.x);
|
||||
i32 h = cast(i32)clamp(floor(rect.p1.y-b) - y, 0.0, ctx.res.y);
|
||||
|
||||
SetScissor(&ctx.rd, x, y, w, h);
|
||||
SetScissor(x, y, w, h);
|
||||
}
|
||||
|
||||
void
|
||||
EndScissor(Ctx* ctx)
|
||||
{
|
||||
DrawUI(ctx);
|
||||
ResetScissor(&ctx.rd);
|
||||
ResetScissor();
|
||||
}
|
||||
|
||||
void
|
||||
@ -1461,7 +1461,7 @@ DrawUI(Ctx* ctx, u32 atlas_index)
|
||||
{
|
||||
DrawUI(ctx);
|
||||
ctx.pc.atlas_index = atlas_index;
|
||||
PushConstants(&ctx.rd, ctx.pipeline, &ctx.pc);
|
||||
PushConstants(ctx.pipeline, &ctx.pc);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1474,8 +1474,8 @@ DrawUI(Ctx* ctx)
|
||||
if(b.vtx_offset != b.count)
|
||||
{
|
||||
u32 count = b.count - b.vtx_offset;
|
||||
BindBuffers(&ctx.rd, &b.m_idx, &b.m_vtx);
|
||||
DrawIndexed(&ctx.rd, 6, count, 0, 0, b.vtx_offset);
|
||||
BindBuffers(&b.m_idx, &b.m_vtx);
|
||||
DrawIndexed(6, count, 0, 0, b.vtx_offset);
|
||||
b.vtx_offset += count;
|
||||
}
|
||||
}
|
||||
@ -1611,26 +1611,19 @@ BeginUI(Inputs* inputs)
|
||||
|
||||
version(ENABLE_RENDERER)
|
||||
{
|
||||
BeginFrame(&ctx.rd);
|
||||
BeginFrame();
|
||||
|
||||
if(ctx.fonts_to_load[ctx.f_idx])
|
||||
{
|
||||
LoadFontSet();
|
||||
}
|
||||
|
||||
BeginRendering(&ctx.rd);
|
||||
BeginRendering();
|
||||
|
||||
SetStencilTest(&ctx.rd, false);
|
||||
SetStencilTest(false);
|
||||
|
||||
Vec2 ext = GetExtent();
|
||||
if(ext != ctx.res)
|
||||
{
|
||||
ctx.res = ext;
|
||||
Ortho(&ctx.pc.projection, 0.0, 0.0, ext.x, ext.y, -10.0, 10.0);
|
||||
}
|
||||
|
||||
PushConstants(&ctx.rd, ctx.pipeline, &ctx.pc);
|
||||
Bind(&ctx.rd, ctx.pipeline, ctx.desc_sets[ctx.f_idx]);
|
||||
PushConstants(ctx.pipeline, &ctx.pc);
|
||||
Bind(ctx.pipeline, ctx.desc_sets[ctx.f_idx]);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -1708,8 +1701,8 @@ EndUI()
|
||||
version(ENABLE_RENDERER)
|
||||
{
|
||||
DrawUI(ctx);
|
||||
FinishRendering(&ctx.rd);
|
||||
SubmitAndPresent(&ctx.rd);
|
||||
FinishRendering();
|
||||
SubmitAndPresent();
|
||||
}
|
||||
|
||||
if(!ZeroKey(ctx.drag_key))
|
||||
@ -1954,15 +1947,15 @@ BeginScissor(Ctx* ctx, UIItem* item, bool scissor_x = true, bool scissor_y = tru
|
||||
i32 w = cast(i32)clamp(scissor_x ? floor(item.rect.p1.x) - x : ctx.res.x, 0.0, ctx.res.x);
|
||||
i32 h = cast(i32)clamp(scissor_y ? floor(item.rect.p1.y) - y : ctx.res.y, 0.0, ctx.res.y);
|
||||
|
||||
SetScissor(&ctx.rd, x, y, w, h);
|
||||
SetScissor(x, y, w, h);
|
||||
|
||||
ResetScissor(&ctx.rd);
|
||||
ResetScissor();
|
||||
}
|
||||
|
||||
Vec2
|
||||
GetExtent()
|
||||
{
|
||||
version(ENABLE_RENDERER) return Vec2(RendererGetExtent(&g_ctx.rd)); else return Vec2(1280, 720);
|
||||
version(ENABLE_RENDERER) return Vec2(RendererGetExtent()); else return Vec2(1280, 720);
|
||||
}
|
||||
|
||||
template
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user