Skip to content

Commit

Permalink
Merge pull request #282 from vsg-dev/KhronosRayTracing
Browse files Browse the repository at this point in the history
Port from NV to Khronos ray tracing
  • Loading branch information
robertosfield committed May 17, 2021
2 parents 811fd8f + 1a94263 commit 8e80a4d
Show file tree
Hide file tree
Showing 39 changed files with 390 additions and 312 deletions.
7 changes: 4 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ on:
push:
pull_request:
env:
VulkanSDKVersion: 1.2.135.0
VulkanSDKVersion: 1.2.162.1
jobs:
linux-build:
runs-on: ubuntu-latest
Expand Down Expand Up @@ -97,6 +97,7 @@ jobs:
run: MSBuild.exe ALL_BUILD.vcxproj -p:Configuration=Release

macos-build:
if: ${{ false }} # disable until the unpack/mounting of the VulkanSDK .dmg is fixed
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
Expand All @@ -116,8 +117,8 @@ jobs:
- name: Download & Extract Vulkan SDK
if: steps.cache.outputs.cache-hit != 'true'
run: |
wget --no-cookies -O ../vulkansdk-macos-${{env.VulkanSDKVersion}}.tar.gz https://sdk.lunarg.com/sdk/download/${{env.VulkanSDKVersion}}/mac/vulkansdk-macos-${{env.VulkanSDKVersion}}.tar.gz?u=
tar -zxf ../vulkansdk-macos-${{env.VulkanSDKVersion}}.tar.gz -C ../
wget --no-cookies -O ../vulkansdk-macos-${{env.VulkanSDKVersion}}.dmg https://sdk.lunarg.com/sdk/download/${{env.VulkanSDKVersion}}/mac/vulkansdk-macos-${{env.VulkanSDKVersion}}.dmg?u=
# Note from Robert - need to mount VulkanSDK, then unmount when finished, don't, trawling online, perhaps something like : hdiutil attach ../vulkansdk-macos-${{env.VulkanSDKVersion}}.dmg
- name: CMake
run: |
export DYLD_LIBRARY_PATH="$VULKAN_SDK/lib:$DYLD_LIBRARY_PATH"
Expand Down
4 changes: 3 additions & 1 deletion build/build_all_h.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ macro(BUILD_ALL_H)
file(GLOB COMMANDS_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/include include/vsg/commands/*.h )
file(GLOB STATE_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/include include/vsg/state/*.h )
file(GLOB TEXT_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/include include/vsg/text/*.h )
file(GLOB RAYTRACING_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/include include/vsg/raytracing/*.h )
file(GLOB RTX_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/include include/vsg/rtx/*.h )

file(READ ${CMAKE_CURRENT_SOURCE_DIR}/build/header_license_preamble.txt ALL_H_CONTENTS)
Expand All @@ -42,7 +43,8 @@ macro(BUILD_ALL_H)
APPEND_INCLUDES(ALL_H_CONTENTS UTILS_HEADERS "// Utility header files\n")
APPEND_INCLUDES(ALL_H_CONTENTS INTROSPECTION_HEADERS "// Introspection header files\n")
APPEND_INCLUDES(ALL_H_CONTENTS TEXT_HEADERS "// Text header files\n")
APPEND_INCLUDES(ALL_H_CONTENTS RTX_HEADERS "// RTX mesh and ray tracing header files\n")
APPEND_INCLUDES(ALL_H_CONTENTS RAYTRACING_HEADERS "// Ray tracing header files\n")
APPEND_INCLUDES(ALL_H_CONTENTS RTX_HEADERS "// RTX mesh header files\n")

file(WRITE include/vsg/all.h ${ALL_H_CONTENTS})

Expand Down
22 changes: 12 additions & 10 deletions include/vsg/all.h
Original file line number Diff line number Diff line change
Expand Up @@ -228,17 +228,19 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
#include <vsg/text/TextLayout.h>
#include <vsg/text/TextTechnique.h>

// RTX mesh and ray tracing header files
#include <vsg/rtx/AccelerationGeometry.h>
#include <vsg/rtx/AccelerationStructure.h>
#include <vsg/rtx/BottomLevelAccelerationStructure.h>
#include <vsg/rtx/BuildAccelerationStructureTraversal.h>
#include <vsg/rtx/DescriptorAccelerationStructure.h>
// Ray tracing header files
#include <vsg/raytracing/AccelerationGeometry.h>
#include <vsg/raytracing/AccelerationStructure.h>
#include <vsg/raytracing/BottomLevelAccelerationStructure.h>
#include <vsg/raytracing/BuildAccelerationStructureTraversal.h>
#include <vsg/raytracing/DescriptorAccelerationStructure.h>
#include <vsg/raytracing/RayTracingPipeline.h>
#include <vsg/raytracing/RayTracingShaderGroup.h>
#include <vsg/raytracing/TopLevelAccelerationStructure.h>
#include <vsg/raytracing/TraceRays.h>

// RTX mesh header files
#include <vsg/rtx/DrawMeshTasks.h>
#include <vsg/rtx/DrawMeshTasksIndirect.h>
#include <vsg/rtx/DrawMeshTasksIndirectCommand.h>
#include <vsg/rtx/DrawMeshTasksIndirectCount.h>
#include <vsg/rtx/RayTracingPipeline.h>
#include <vsg/rtx/RayTracingShaderGroup.h>
#include <vsg/rtx/TopLevelAccelerationStructure.h>
#include <vsg/rtx/TraceRays.h>
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ namespace vsg

void compile(Context& context);

operator VkGeometryNV() const { return _geometry; }
operator VkAccelerationStructureGeometryKHR() const { return _geometry; }

ref_ptr<Data> verts;
ref_ptr<Data> indices;
Expand All @@ -38,7 +38,7 @@ namespace vsg
// compiled data
BufferInfo _vertexBuffer;
BufferInfo _indexBuffer;
VkGeometryNV _geometry;
VkAccelerationStructureGeometryKHR _geometry;
};

using AccelerationGeometries = std::vector<ref_ptr<AccelerationGeometry>>;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,12 @@ namespace vsg
class VSG_DECLSPEC AccelerationStructure : public Inherit<Object, AccelerationStructure>
{
public:
AccelerationStructure(VkAccelerationStructureTypeNV type, Device* device, Allocator* allocator = nullptr);
AccelerationStructure(VkAccelerationStructureTypeKHR type, Device* device, Allocator* allocator = nullptr);

virtual void compile(Context& context);

operator VkAccelerationStructureNV() const { return _accelerationStructure; }
operator VkAccelerationStructureKHR() const { return _accelerationStructure; }
operator VkAccelerationStructureBuildGeometryInfoKHR() const { return _accelerationStructureBuildGeometryInfo; }

uint64_t handle() const { return _handle; }

Expand All @@ -37,8 +38,11 @@ namespace vsg
protected:
virtual ~AccelerationStructure();

VkAccelerationStructureNV _accelerationStructure;
VkAccelerationStructureInfoNV _accelerationStructureInfo;
VkAccelerationStructureKHR _accelerationStructure;
VkAccelerationStructureCreateInfoKHR _accelerationStructureInfo;
std::vector<uint32_t> _geometryPrimitiveCounts;
VkAccelerationStructureBuildGeometryInfoKHR _accelerationStructureBuildGeometryInfo;
ref_ptr<Buffer> _buffer;
ref_ptr<DeviceMemory> _memory;
uint64_t _handle;
VkDeviceSize _requiredBuildScratchSize;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
</editor-fold> */

#include <vsg/rtx/AccelerationGeometry.h>
#include <vsg/rtx/AccelerationStructure.h>
#include <vsg/raytracing/AccelerationGeometry.h>
#include <vsg/raytracing/AccelerationStructure.h>

namespace vsg
{
Expand All @@ -29,7 +29,7 @@ namespace vsg

protected:
// compiled data
std::vector<VkGeometryNV> _vkGeometries;
std::vector<VkAccelerationStructureGeometryKHR> _vkGeometries;
};

} // namespace vsg
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,9 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
#include <vsg/nodes/MatrixTransform.h>
#include <vsg/nodes/VertexIndexDraw.h>

#include <vsg/rtx/AccelerationStructure.h>
#include <vsg/rtx/BottomLevelAccelerationStructure.h>
#include <vsg/rtx/TopLevelAccelerationStructure.h>
#include <vsg/raytracing/AccelerationStructure.h>
#include <vsg/raytracing/BottomLevelAccelerationStructure.h>
#include <vsg/raytracing/TopLevelAccelerationStructure.h>

namespace vsg
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
</editor-fold> */

#include <vsg/rtx/AccelerationStructure.h>
#include <vsg/raytracing/AccelerationStructure.h>
#include <vsg/state/Descriptor.h>

namespace vsg
Expand All @@ -23,7 +23,7 @@ namespace vsg
public:
DescriptorAccelerationStructure();

DescriptorAccelerationStructure(const AccelerationStructures& accelerationStructures, uint32_t dstBinding = 0, uint32_t dstArrayElement = 0, VkDescriptorType descriptorType = VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV);
DescriptorAccelerationStructure(const AccelerationStructures& accelerationStructures, uint32_t dstBinding = 0, uint32_t dstArrayElement = 0, VkDescriptorType descriptorType = VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR);

AccelerationStructures& getAccelerationStructures() { return _accelerationStructures; }
const AccelerationStructures& getAccelerationStructures() const { return _accelerationStructures; }
Expand All @@ -41,7 +41,7 @@ namespace vsg
AccelerationStructures _accelerationStructures;

// populated by compile()
std::vector<VkAccelerationStructureNV> _vkAccelerationStructures;
std::vector<VkAccelerationStructureKHR> _vkAccelerationStructures;
};
VSG_type_name(vsg::DescriptorAccelerationStructure)

Expand Down
11 changes: 11 additions & 0 deletions include/vsg/raytracing/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
## RayTracing wrapper classes

* [AccelerationGeometry.h](AccelerationGeometry.h) -
* [AccelerationStructure.h](AccelerationStructure.h) -
* [BottomLevelAccelerationStructure.h](BottomLevelAccelerationStructure.h) -
* [BuildAccelerationStructureTraversal.h](BuildAccelerationStructureTraversal.h) -
* [DescriptorAccelerationStructure.h](DescriptorAccelerationStructure.h) -
* [RayTracingPipeline.h](RayTracingPipeline.h) -
* [RayTracingShaderGroup.h](RayTracingShaderGroup.h) -
* [TopLevelAccelerationStructure.h](TopLevelAccelerationStructure.h) -
* [TraceRays.h](TraceRays.h) - encapsulation of vkCmdTraceRaysNV
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
</editor-fold> */

#include <vsg/rtx/RayTracingShaderGroup.h>
#include <vsg/raytracing/RayTracingShaderGroup.h>
#include <vsg/state/PipelineLayout.h>
#include <vsg/state/ShaderStage.h>
#include <vsg/state/StateCommand.h>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,13 @@ namespace vsg
void read(Input& input) override;
void write(Output& output) const override;

void applyTo(VkRayTracingShaderGroupCreateInfoNV& shaderGroupInfo) const;
void applyTo(VkRayTracingShaderGroupCreateInfoKHR& shaderGroupInfo) const;

VkRayTracingShaderGroupTypeNV type = VkRayTracingShaderGroupTypeNV(0x7FFFFFFF); // TODO: adopt KHR versions i.e VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_NV -> VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR
uint32_t generalShader = VK_SHADER_UNUSED_NV;
uint32_t closestHitShader = VK_SHADER_UNUSED_NV;
uint32_t anyHitShader = VK_SHADER_UNUSED_NV;
uint32_t intersectionShader = VK_SHADER_UNUSED_NV;
VkRayTracingShaderGroupTypeKHR type = VkRayTracingShaderGroupTypeKHR(VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR);
uint32_t generalShader = VK_SHADER_UNUSED_KHR;
uint32_t closestHitShader = VK_SHADER_UNUSED_KHR;
uint32_t anyHitShader = VK_SHADER_UNUSED_KHR;
uint32_t intersectionShader = VK_SHADER_UNUSED_KHR;

BufferInfo bufferInfo;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,13 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI

#include <vsg/core/Array.h>
#include <vsg/core/Value.h>
#include <vsg/rtx/AccelerationStructure.h>
#include <vsg/rtx/BottomLevelAccelerationStructure.h>
#include <vsg/raytracing/AccelerationStructure.h>
#include <vsg/raytracing/BottomLevelAccelerationStructure.h>

namespace vsg
{

// this structure is required to populate the top level structures instance buffer
// this structure is required to populate the top level structures instance buffer and is essentially the same as VkAccelerationStructureInstanceKHR
// https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/chap33.html#acceleration-structure
struct VkGeometryInstance
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
</editor-fold> */

#include <vsg/commands/Command.h>
#include <vsg/rtx/RayTracingShaderGroup.h>
#include <vsg/raytracing/RayTracingShaderGroup.h>

namespace vsg
{
Expand Down
2 changes: 1 addition & 1 deletion include/vsg/rtx/DrawMeshTasksIndirectCommand.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI

namespace vsg
{
/// Equivalent to VkDrawMeshTasksIndirectCommandNV that adds read/write support
/// Equivalent to VkDrawMeshTasksIndirectCommandKHR that adds read/write support
struct DrawMeshTasksIndirectCommand
{
uint32_t taskCount;
Expand Down
12 changes: 1 addition & 11 deletions include/vsg/rtx/README.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,4 @@
## RayTracing wrapper classes

* [AccelerationGeometry.h](AccelerationGeometry.h) -
* [AccelerationStructure.h](AccelerationStructure.h) -
* [BottomLevelAccelerationStructure.h](BottomLevelAccelerationStructure.h) -
* [BuildAccelerationStructureTraversal.h](BuildAccelerationStructureTraversal.h) -
* [DescriptorAccelerationStructure.h](DescriptorAccelerationStructure.h) -
* [RayTracingPipeline.h](RayTracingPipeline.h) -
* [RayTracingShaderGroup.h](RayTracingShaderGroup.h) -
* [TopLevelAccelerationStructure.h](TopLevelAccelerationStructure.h) -
* [TraceRays.h](TraceRays.h) - encapsulation of vkCmdTraceRaysNV
## RTX wrapper classes

* [DrawMeshTasks.h](DrawMeshTasks.h) - encapsulation of vkCmdDrawMeshTasksNV
* [DrawMeshTasksIndirect.h](DrawMeshTasksIndirect.h) -encapsulation of vkCmdDrawMeshTasksIndirectNV
Expand Down
2 changes: 2 additions & 0 deletions include/vsg/viewer/WindowTraits.h
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,8 @@ namespace vsg
// X11 hint of whether to ignore the Window managers redirection of window size/position
bool overrideRedirect = false;

uint32_t vulkanVersion = VK_VERSION_1_0;

SwapchainPreferences swapchainPreferences;
VkFormat depthFormat = VK_FORMAT_D24_UNORM_S8_UINT; //VK_FORMAT_D32_SFLOAT; // VK_FORMAT_D32_SFLOAT_S8_UINT, VK_FORMAT_D24_SFLOAT_S8_UINT
VkImageUsageFlags depthImageUsage = VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT;
Expand Down
13 changes: 9 additions & 4 deletions include/vsg/vk/Context.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,16 +35,21 @@ namespace vsg
class VSG_DECLSPEC BuildAccelerationStructureCommand : public Inherit<Command, BuildAccelerationStructureCommand>
{
public:
BuildAccelerationStructureCommand(Device* device, VkAccelerationStructureInfoNV* info, const VkAccelerationStructureNV& structure, Buffer* instanceBuffer, Allocator* allocator = nullptr);
// the primitive Count is A) the amount of triangles to be built for type VK_GEOMETRY_TYPE_TRIANGLES_KHR (blas) B) the amoutn fo AABBs vor type VK_GEOMETRY_TYPE_AABBS_KHR
// and C) the number of acceleration structures for type VK_GEOMETRY_TYPE_INSTANCES_KHR
BuildAccelerationStructureCommand(Device* device, const VkAccelerationStructureBuildGeometryInfoKHR& info, const VkAccelerationStructureKHR& structure, const std::vector<uint32_t>& primitiveCounts, Allocator* allocator);

void compile(Context&) override {}
void record(CommandBuffer& commandBuffer) const override;
void setScratchBuffer(ref_ptr<Buffer>& scratchBuffer);

ref_ptr<Device> _device;
VkAccelerationStructureInfoNV* _accelerationStructureInfo;
VkAccelerationStructureNV _accelerationStructure;
ref_ptr<Buffer> _instanceBuffer;
VkAccelerationStructureBuildGeometryInfoKHR _accelerationStructureInfo;
std::vector<VkAccelerationStructureGeometryKHR> _accelerationStructureGeometries;
std::vector<VkAccelerationStructureBuildRangeInfoKHR> _accelerationStructureBuildRangeInfos;
VkAccelerationStructureKHR _accelerationStructure;

protected:
// scratch buffer set after compile traversal before record of build commands
ref_ptr<Buffer> _scratchBuffer;
};
Expand Down
20 changes: 10 additions & 10 deletions include/vsg/vk/Extensions.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,16 +33,16 @@ namespace vsg

Extensions(Device* device);

// VK_NV_ray_tracing
PFN_vkCreateAccelerationStructureNV vkCreateAccelerationStructureNV = nullptr;
PFN_vkDestroyAccelerationStructureNV vkDestroyAccelerationStructureNV = nullptr;
PFN_vkBindAccelerationStructureMemoryNV vkBindAccelerationStructureMemoryNV = nullptr;
PFN_vkGetAccelerationStructureHandleNV vkGetAccelerationStructureHandleNV = nullptr;
PFN_vkGetAccelerationStructureMemoryRequirementsNV vkGetAccelerationStructureMemoryRequirementsNV = nullptr;
PFN_vkCmdBuildAccelerationStructureNV vkCmdBuildAccelerationStructureNV = nullptr;
PFN_vkCreateRayTracingPipelinesNV vkCreateRayTracingPipelinesNV = nullptr;
PFN_vkGetRayTracingShaderGroupHandlesNV vkGetRayTracingShaderGroupHandlesNV = nullptr;
PFN_vkCmdTraceRaysNV vkCmdTraceRaysNV = nullptr;
// VK_KHR_ray_tracing
PFN_vkCreateAccelerationStructureKHR vkCreateAccelerationStructureKHR = nullptr;
PFN_vkDestroyAccelerationStructureKHR vkDestroyAccelerationStructureKHR = nullptr;
PFN_vkGetAccelerationStructureDeviceAddressKHR vkGetAccelerationStructureDeviceAddressKHR = nullptr;
PFN_vkGetAccelerationStructureBuildSizesKHR vkGetAccelerationStructureBuildSizesKHR = nullptr;
PFN_vkCmdBuildAccelerationStructuresKHR vkCmdBuildAccelerationStructuresKHR = nullptr;
PFN_vkCreateRayTracingPipelinesKHR vkCreateRayTracingPipelinesKHR = nullptr;
PFN_vkGetRayTracingShaderGroupHandlesKHR vkGetRayTracingShaderGroupHandlesKHR = nullptr;
PFN_vkCmdTraceRaysKHR vkCmdTraceRaysKHR = nullptr;
PFN_vkGetBufferDeviceAddressKHR vkGetBufferDeviceAddressKHR = nullptr;

// VK_NV_mesh_shader
PFN_vkCmdDrawMeshTasksNV vkCmdDrawMeshTasksNV = nullptr;
Expand Down
2 changes: 1 addition & 1 deletion include/vsg/vk/Instance.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ namespace vsg
class VSG_DECLSPEC Instance : public Inherit<Object, Instance>
{
public:
Instance(const Names& instanceExtensions, const Names& layers, AllocationCallbacks* allocator = nullptr);
Instance(const Names& instanceExtensions, const Names& layers, uint32_t vulkanVersion = VK_API_VERSION_1_0, AllocationCallbacks* allocator = nullptr);

operator VkInstance() const { return _instance; }
VkInstance getInstance() const { return _instance; }
Expand Down
19 changes: 10 additions & 9 deletions src/vsg/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -137,15 +137,16 @@ set(SOURCES
viewer/WindowResizeHandler.cpp
viewer/View.cpp

rtx/AccelerationGeometry.cpp
rtx/AccelerationStructure.cpp
rtx/BottomLevelAccelerationStructure.cpp
rtx/BuildAccelerationStructureTraversal.cpp
rtx/DescriptorAccelerationStructure.cpp
rtx/RayTracingPipeline.cpp
rtx/RayTracingShaderGroup.cpp
rtx/TopLevelAccelerationStructure.cpp
rtx/TraceRays.cpp
raytracing/AccelerationGeometry.cpp
raytracing/AccelerationStructure.cpp
raytracing/BottomLevelAccelerationStructure.cpp
raytracing/BuildAccelerationStructureTraversal.cpp
raytracing/DescriptorAccelerationStructure.cpp
raytracing/RayTracingPipeline.cpp
raytracing/RayTracingShaderGroup.cpp
raytracing/TopLevelAccelerationStructure.cpp
raytracing/TraceRays.cpp

rtx/DrawMeshTasks.cpp
rtx/DrawMeshTasksIndirect.cpp
rtx/DrawMeshTasksIndirectCount.cpp
Expand Down
6 changes: 6 additions & 0 deletions src/vsg/platform/unix/Xcb_Window.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -464,6 +464,12 @@ Xcb_Window::Xcb_Window(vsg::ref_ptr<WindowTraits> traits) :
_extent2D.width = geometry_reply->width;
_extent2D.height = geometry_reply->height;
free(geometry_reply);

// assign dimensions
traits->x = geometry_reply->x;
traits->y = geometry_reply->y;
traits->width = geometry_reply->width;
traits->height = geometry_reply->height;
}

traits->nativeWindow = _window;
Expand Down
6 changes: 6 additions & 0 deletions src/vsg/platform/win32/Win32_Window.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -431,6 +431,12 @@ Win32_Window::Win32_Window(vsg::ref_ptr<WindowTraits> traits) :
_extent2D.width = finalWidth;
_extent2D.height = finalHeight;

// assign dimensions
traits->x = windowRect.left;
traits->y = windowRect.top;
traits->width = finalWidth;
traits->height = finalHeight;

ShowWindow(_window, SW_SHOW);
SetForegroundWindow(_window);
SetFocus(_window);
Expand Down
Loading

0 comments on commit 8e80a4d

Please sign in to comment.