Corentin Wallez
2b391dac74
Vulkan: Implement RenderPipeline
2018-01-15 19:13:01 -05:00
Corentin Wallez
eb135f6fc0
Vulkan: Implement render pass commands
2018-01-15 19:13:01 -05:00
Corentin Wallez
35fcfc737b
Vulkan: Implement TextureView and Framebuffer
2018-01-15 19:13:01 -05:00
Corentin Wallez
49450b5644
Vulkan: Implement Draw* commands
2018-01-15 19:13:01 -05:00
Corentin Wallez
88d85fbaac
Vulkan: Implement Set[Index|Vertex]Buffers
2018-01-15 19:13:01 -05:00
Corentin Wallez
2bd6143061
Vulkan: Implement InputState
2018-01-15 19:13:01 -05:00
Corentin Wallez
3a11684e05
Vulkan: Implement 1-subpass renderpasses
...
Also adds some missing asserts for empty serial queues in the fenced
deleter service.
2018-01-15 19:13:01 -05:00
Corentin Wallez
aeaffcf8fc
Vulkan: Create dummy pipeline layouts
2018-01-15 19:13:01 -05:00
Corentin Wallez
47155a3555
Make gl_Position(-1, -1) map to texel (0, 0) of the render target
...
There was a lot of missing around with viewports and flip the Y
coordinate in vertex shaders before. Turns out things are simpler than
we thought: *all* APIs have gl_Position(-1, -1) map to texel (0, 0). It
is just the present coordinate system that changes.
Remove some of the hacks we had to work around non-existent viewport
issues and fix tests.
2018-01-15 19:13:01 -05:00
Corentin Wallez
d0d6e5cd20
Fix glTFViewer after shaderc update
...
Fragment shader outputs now require a location qualifier, that
glTFViewer was missing in its shaderc.
2018-01-15 19:13:01 -05:00
Corentin Wallez
d15177d84e
Don't leak default created objects
...
Sometimes NXT provides default objects for parts of the pipelines, for
example a default pipeline layout. This objects were create with code
like: device->CreateFooBuilder()->GetResult(); and stored in a Ref<>.
This caused the object to have on external reference and two internal
references and not get destroyed when the Ref<> goes out. Call Release
on these objects to remove the external reference and fix the leak.
Was found via the Vulkan validation layers that were complaining that a
VkPipelineLayout was leaked.
2018-01-15 19:13:01 -05:00
Corentin Wallez
348fb1b223
Enable T<->B CopyTests on Vulkan
2018-01-08 04:07:41 -08:00
Corentin Wallez
6b986732d5
Vulkan: implement T<->B copies
2018-01-08 04:07:41 -08:00
Corentin Wallez
f1d56f3094
Vulkan: Implement texture transitions
2018-01-08 04:07:41 -08:00
Corentin Wallez
aa43d162ec
Vulkan: Implement texture creation.
...
This commit only implements the creation and destruction of VkImage as
well as the allocation and freeing of its memory.
2018-01-08 04:07:41 -08:00
Corentin Wallez
f11396767f
Make nxt::TextureBase::GetDevice const
...
Because it is.
2018-01-08 04:07:41 -08:00
Corentin Wallez
160abad592
Vulkan: Implement buffer transitions
2017-12-12 12:31:20 -05:00
Corentin Wallez
77a1d908b6
Vulkan: Handle CopyBufferToBuffer commands
...
This as this is the first command handled by the Vulkan backend, this
commit also introduces the b:✌️ :CommandBUffer class and implements
b:✌️ :Queue::Submit.
Also enables the BufferSetSubData tests that are now passing on Vulkan
even though the buffer transitions are unimplemented.
2017-12-12 12:31:20 -05:00
Corentin Wallez
a9b98af710
Vulkan: Centralized deferred deletion, use it for BufferVk's handle
...
This introduce a new FencedDeleter service as part of the Device
objects that tracks when resources are no longer used and deletes them.
BufferVk takes advantage of this to defer the deletion of its handle
that was previously incorrectly delete directly in ~BufferVk.
2017-12-12 12:31:20 -05:00
Corentin Wallez
c34aa3abe7
Vulkan: Make non-dispatchable handles always opaque
...
On 32 bit Vulkan typedefs these handles to uint64_t which breaks
function overload resolution. Replace the
VK_DEFINE_NON_DISPATCHABLE_HANDLE and VK_NULL_HANDLE defines to be
opaque C++ types with the same capabilities.
2017-12-12 12:31:20 -05:00
Corentin Wallez
00935daffc
Use shaderc_shared and don't build unnecessary targets
...
This should speed up compilation on Travis a little bit.
2017-12-12 01:02:35 -05:00
Corentin Wallez
b6fb5f3149
Roll shaderc
2017-12-12 01:02:35 -05:00
Corentin Wallez
ae7f113fe8
Only compile the used SPIRV-Cross backends
2017-12-12 01:02:35 -05:00
Corentin Wallez
b36b501f5e
Build the Vulkan backend on CI
2017-12-04 21:39:16 -05:00
Corentin Wallez
3cf6c9df0c
Travis: install pip manually on OSX
2017-12-04 14:14:38 -05:00
Corentin Wallez
e3b1f51c04
Add travis hook to check formatting
2017-11-28 16:18:39 -05:00
Corentin Wallez
23b27a27e2
Format: src/backend/vulkan
2017-11-28 16:18:39 -05:00
Corentin Wallez
c7807abf04
Format: src/backend/opengl
2017-11-28 16:18:39 -05:00
Corentin Wallez
1aa4d5604f
Format: src/backend/null
2017-11-28 16:18:39 -05:00
Corentin Wallez
f58d84d488
Format: src/backend/metal
2017-11-28 16:18:39 -05:00
Corentin Wallez
2d62a371ee
Format: src/backend/d3d12
2017-11-28 16:18:39 -05:00
Corentin Wallez
c1400f0d14
Format: src/backend
2017-11-28 16:18:39 -05:00
Corentin Wallez
9d01c6c26d
Format: src/{common, utils, wire}
2017-11-28 16:18:39 -05:00
Corentin Wallez
a351ce9618
Add .clang-format
2017-11-28 16:18:39 -05:00
Corentin Wallez
b981677848
Travis: use trusty distro
2017-11-28 11:26:08 -05:00
Corentin Wallez
42dbde1b65
Member rename: generator/templates
2017-11-23 17:04:10 -05:00
Corentin Wallez
d5d77af5b6
Member rename: src/tests
2017-11-23 17:04:10 -05:00
Corentin Wallez
ad6470466c
Member rename: src/{common/utils/wire}
2017-11-23 17:04:10 -05:00
Corentin Wallez
8d75e5b4ae
Member rename: src/backend/vulkan
2017-11-23 17:04:10 -05:00
Corentin Wallez
7ee1610f38
Member rename: src/backend/opengl
2017-11-23 17:04:10 -05:00
Corentin Wallez
b0c75a5b68
Member rename: src/backend/metal
2017-11-23 17:04:10 -05:00
Corentin Wallez
e00385af73
Member rename: src/backend/d3d12
2017-11-23 17:04:10 -05:00
Corentin Wallez
903c563b43
Member rename: src/backend/null
2017-11-23 17:04:10 -05:00
Corentin Wallez
fbecc28ac4
Member rename: src/backend
2017-11-23 17:04:10 -05:00
Corentin Wallez
b325f4d0af
Fix compilation of Vulkan backend on Windows
2017-11-23 17:04:10 -05:00
Corentin Wallez
98013d7866
Enable first tests on Vulkan!
2017-11-23 09:26:26 -05:00
Corentin Wallez
bdde209ed9
VulkanBinding: make a dummy Vulkan swapchain impl
2017-11-23 09:26:26 -05:00
Corentin Wallez
eee5171c39
Vulkan: Add uploader for BufferSetSubData
2017-11-23 09:26:26 -05:00
Corentin Wallez
a8ec80ba57
Vulkan: Add some simple command pool / buffer management
2017-11-23 09:26:26 -05:00
Corentin Wallez
9018236b38
Vulkan: Keep track of finished operations with fences
2017-11-23 09:26:26 -05:00