public void EndCmdBuffer(string CmdBuffer) { Util.check(CmdBuffers.ContainsKey(CmdBuffer), "Couldn't find CmdBuffer " + CmdBuffer); FCmdBuffer CB = CmdBuffers[CmdBuffer]; Util.check(CB.IsInsideBegin(), "No begin for CmdBuffer " + CmdBuffer); CB.State = FCmdBuffer.EState.Ended; }
public FCmdBuffer GetCmdBufferForAdd(string CmdBuffer) { Util.check(CmdBuffers.ContainsKey(CmdBuffer), "Couldn't find CmdBuffer " + CmdBuffer); FCmdBuffer CB = CmdBuffers[CmdBuffer]; Util.check(CB.IsInsideBegin(), "Haven't started CmdBuffer " + CmdBuffer); return(CB); }
public void BeginCmdBuffer(string CmdBuffer) { if (CmdBuffers.ContainsKey(CmdBuffer)) { FCmdBuffer CB = CmdBuffers[CmdBuffer]; Util.check(CB.IsReadyToBegin(), "Already begun CmdBuffer " + CmdBuffer); CB.State = FCmdBuffer.EState.Begun; return; } else { var NewCmdBuffer = new FCmdBuffer(CmdBuffer); CmdBuffers.Add(CmdBuffer, NewCmdBuffer); } }
void ParseCommand() { try { SkipWhitespace(); if (PeekAndAdvance("vkBeginCommandBuffer(")) { ReadLine(); //var CmdBuffer = new FBeginCmdBuffer(); string CmdBuffer = ParseCommandBuffer(); ReadLine(); ReadLine(); ReadLine(); ReadLine(); ReadLine(); CurrentFTEntry.BeginCmdBuffer(CmdBuffer); } else if (PeekAndAdvance("vkEndCommandBuffer(")) { ReadLine(); //var CmdBuffer = new FEndCmdBuffer(); //CurrentFTEntry.Items.Add(CmdBuffer); string CmdBuffer = ParseCommandBuffer(); CurrentFTEntry.EndCmdBuffer(CmdBuffer); } else if (PeekAndAdvance("vkCmdWriteTimestamp(")) { ReadLine(); var WT = new FWriteTimestamp(); string CmdBuffer = ParseCommandBuffer(); WT.PipelineState = ParsePipelineStageBits(); WT.QueryPool = ParseQueryPool(); WT.Query = ParseQuery(); FCmdBuffer CB = CurrentFTEntry.GetCmdBufferForAdd(CmdBuffer); CB.Commands.Add(WT); } else if (PeekAndAdvance("vkCmdBindPipeline(")) { ReadLine(); var WT = new FBindPipeline(); string CmdBuffer = ParseCommandBuffer(); WT.BindPoint = ParsePipelineBindPoint(); WT.Pipeline = ParsePipeline(); FCmdBuffer CB = CurrentFTEntry.GetCmdBufferForAdd(CmdBuffer); CB.Commands.Add(WT); } else if (PeekAndAdvance("vkCmdBeginRenderPass(")) { ReadLine(); //var WT = new FBindPipeline(); string CmdBuffer = ParseCommandBuffer(); ReadLine(); ReadLine(); ReadLine(); string RP = ParseSimpleAssignmentHandle("renderPass", "VkRenderPass"); string FB = ParseSimpleAssignmentHandle("framebuffer", "VkFramebuffer"); ReadLine(); ReadLine(); ReadLine(); ReadLine(); ReadLine(); ReadLine(); ReadLine(); int ClearValueCount = ParseSimpleAssignmentInt("clearValueCount", "uint32_t"); ReadLine(); for (int Index = 0; Index < ClearValueCount; ++Index) { ReadLine(); ReadLine(); ReadLine(); ReadLine(); ReadLine(); ReadLine(); ReadLine(); ReadLine(); ReadLine(); ReadLine(); ReadLine(); ReadLine(); ReadLine(); ReadLine(); ReadLine(); ReadLine(); ReadLine(); ReadLine(); ReadLine(); } ReadLine(); FCmdBuffer CB = CurrentFTEntry.GetCmdBufferForAdd(CmdBuffer); Util.check(CB.IsOutsideRenderPass()); var BRP = new FBeginRP(); BRP.RenderPass = RP; CB.Commands.Add(BRP); CB.State = FCmdBuffer.EState.InsideRenderPass; } else if (PeekAndAdvance("vkCmdEndRenderPass(")) { ReadLine(); string CmdBuffer = ParseCommandBuffer(); FCmdBuffer CB = CurrentFTEntry.GetCmdBufferForAdd(CmdBuffer); CB.Commands.Add(new FEndRP()); CB.State = FCmdBuffer.EState.Begun; } ReadLine(); } catch (Exception E) { throw E; } }