comparison test1.nim @ 1192:90bf0cab1d02 compiletime-tests

did: so many, many things
author sam <sam@basx.dev>
date Mon, 08 Jul 2024 16:05:06 +0700
parents 239adab121a3
children 5aa1184fa5eb
comparison
equal deleted inserted replaced
1191:239adab121a3 1192:90bf0cab1d02
38 uniforms: DescriptorSet[UniformsA, MaterialSet] 38 uniforms: DescriptorSet[UniformsA, MaterialSet]
39 # code 39 # code
40 vertexCode: string = "void main() {}" 40 vertexCode: string = "void main() {}"
41 fragmentCode: string = "void main() {}" 41 fragmentCode: string = "void main() {}"
42 42
43 let w = CreateWindow("test2")
44 putEnv("VK_LAYER_ENABLES", "VALIDATION_CHECK_ENABLE_VENDOR_SPECIFIC_AMD,VALIDATION_CHECK_ENABLE_VENDOR_SPECIFIC_NVIDIA,VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXTVK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT,VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT") 43 putEnv("VK_LAYER_ENABLES", "VALIDATION_CHECK_ENABLE_VENDOR_SPECIFIC_AMD,VALIDATION_CHECK_ENABLE_VENDOR_SPECIFIC_NVIDIA,VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXTVK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT,VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT")
45 44
46 # TODO: remove those ugly wrappers
47 let theInstance = w.CreateInstance(
48 vulkanVersion = VK_MAKE_API_VERSION(0, 1, 3, 0),
49 instanceExtensions = @[],
50 layers = @["VK_LAYER_KHRONOS_validation"],
51 )
52
53 let dev = theInstance.CreateDevice(
54 theInstance.GetPhysicalDevices().FilterBestGraphics(),
55 enabledExtensions = @[],
56 theInstance.GetPhysicalDevices().FilterBestGraphics().FilterForGraphicsPresentationQueues()
57 ).vk
58 let frameWidth = 100'u32 45 let frameWidth = 100'u32
59 let frameHeight = 100'u32 46 let frameHeight = 100'u32
60
61 # TODO: pack this stuff into a setup method and condense everything a bit
62 let pDevice = theInstance.vk.GetPhysicalDevice()
63 let qfi = pDevice.GetQueueFamily(VK_QUEUE_GRAPHICS_BIT)
64 vulkan = VulkanGlobals(
65 instance: theInstance.vk,
66 device: dev,
67 physicalDevice: pDevice,
68 queueFamilyIndex: qfi,
69 queue: svkGetDeviceQueue(dev, qfi, VK_QUEUE_GRAPHICS_BIT)
70 )
71 47
72 var myMesh1 = MeshA( 48 var myMesh1 = MeshA(
73 position: GPUArray[Vec3f, VertexBuffer](data: @[NewVec3f(0, 0, ), NewVec3f(0, 0, ), NewVec3f(0, 0, )]), 49 position: GPUArray[Vec3f, VertexBuffer](data: @[NewVec3f(0, 0, ), NewVec3f(0, 0, ), NewVec3f(0, 0, )]),
74 ) 50 )
75 var uniforms1 = DescriptorSet[UniformsA, MaterialSet]( 51 var uniforms1 = DescriptorSet[UniformsA, MaterialSet](
96 fontAtlas: Texture[TVec4[uint8]](width: 1, height: 1, data: @[TVec4[uint8]([0'u8, 0'u8, 0'u8, 1'u8])]), 72 fontAtlas: Texture[TVec4[uint8]](width: 1, height: 1, data: @[TVec4[uint8]([0'u8, 0'u8, 0'u8, 1'u8])]),
97 settings: GPUValue[ShaderSettings, UniformBuffer](data: ShaderSettings(gamma: 1.0)) 73 settings: GPUValue[ShaderSettings, UniformBuffer](data: ShaderSettings(gamma: 1.0))
98 ) 74 )
99 ) 75 )
100 76
101 # setup for rendering (TODO: swapchain & framebuffers) 77 let renderpass = CreatePresentationRenderPass()
102 let renderpass = CreateRenderPass(GetSurfaceFormat())
103 78
104 # shaders 79 # shaders
105 const shader = ShaderA() 80 var pipeline1 = CreatePipeline[ShaderA](renderPass = renderpass)
106 let shaderObject = CompileShader(shader)
107 var pipeline1 = CreatePipeline(renderPass = renderpass, shader = shaderObject)
108 81
109 var renderdata = InitRenderData() 82 var renderdata = InitRenderData()
110 83
111 # buffer assignment 84 # buffer assignment
112 echo "Assigning buffers to GPUData fields" 85 echo "Assigning buffers to GPUData fields"
128 renderdata.FlushAllMemory() 101 renderdata.FlushAllMemory()
129 102
130 103
131 # descriptors 104 # descriptors
132 echo "Writing descriptors" 105 echo "Writing descriptors"
133 InitDescriptorSet(renderdata, pipeline1.descriptorSetLayouts[GlobalSet], myGlobals) 106 InitDescriptorSet(renderdata, pipeline1.GetLayoutFor(GlobalSet), myGlobals)
134 InitDescriptorSet(renderdata, pipeline1.descriptorSetLayouts[MaterialSet], uniforms1) 107 InitDescriptorSet(renderdata, pipeline1.GetLayoutFor(MaterialSet), uniforms1)
135 108
136 109
137 # command buffer 110 # command buffer
138 var 111 var
139 commandBufferPool: VkCommandPool 112 commandBufferPool: VkCommandPool