Skip to content

Commit

Permalink
Added command uses and MTLHeaps
Browse files Browse the repository at this point in the history
This commit does not do much, however I'm updating to the next macos update, so I'd like to push so I don't lose everything.
  • Loading branch information
AntarticCoder committed Jul 26, 2023
1 parent c6d97c2 commit 1cf021e
Show file tree
Hide file tree
Showing 4 changed files with 56 additions and 39 deletions.
6 changes: 3 additions & 3 deletions MoltenVK/MoltenVK/Commands/MVKCmdAccelerationStructure.mm
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
}

void MVKCmdBuildAccelerationStructure::encode(MVKCommandEncoder* cmdEncoder) {
id<MTLAccelerationStructureCommandEncoder> accStructEncoder = cmdEncoder->getMTLAccelerationStructureEncoder(kMVKCommandUseNone);
id<MTLAccelerationStructureCommandEncoder> accStructEncoder = cmdEncoder->getMTLAccelerationStructureEncoder(kMVKCommandUseBuildAccelerationStructure);

for(int i = 0; i < _infoCount; i++)
{
Expand Down Expand Up @@ -210,7 +210,7 @@
}

void MVKCmdCopyAccelerationStructure::encode(MVKCommandEncoder* cmdEncoder) {
id<MTLAccelerationStructureCommandEncoder> accStructEncoder = cmdEncoder->getMTLAccelerationStructureEncoder(kMVKCommandUseNone);
id<MTLAccelerationStructureCommandEncoder> accStructEncoder = cmdEncoder->getMTLAccelerationStructureEncoder(kMVKCommandUseCopyAccelerationStructure);

if(_copyMode == VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR)
{
Expand Down Expand Up @@ -271,7 +271,7 @@
}

void MVKCmdCopyMemoryToAccelerationStructure::encode(MVKCommandEncoder* cmdEncoder) {
id<MTLAccelerationStructureCommandEncoder> accStructEncoder = cmdEncoder->getMTLAccelerationStructureEncoder(kMVKCommandUseNone);
id<MTLAccelerationStructureCommandEncoder> accStructEncoder = cmdEncoder->getMTLAccelerationStructureEncoder(kMVKCommandUseCopyMemoryToAccelerationStructure);
_mvkDevice = cmdEncoder->getDevice();

if(_copyMode != VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR){
Expand Down
11 changes: 10 additions & 1 deletion MoltenVK/MoltenVK/GPUObjects/MVKAccelerationStructure.h
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ class MVKAccelerationStructure : public MVKVulkanAPIDeviceObject {

#pragma mark -
#pragma mark Getters and Setters
/** Used when building the acceleration structure, to mark whether or not an acceleration structure can be updated*/
/** Used when building the acceleration structure, to mark whether or not an acceleration structure can be updated, only to be set by MVKCmdBuildAccelerationStructure*/
void setAllowUpdate(bool value) { _allowUpdate = value; }

/** Checks if this acceleration structure is allowed to be updated*/
Expand All @@ -78,6 +78,12 @@ class MVKAccelerationStructure : public MVKVulkanAPIDeviceObject {

/** Gets the address of the acceleration structure*/
uint64_t getDeviceAddress() { return _address; }

/** Returns the Metal buffer using the same memory as the acceleration structure*/
MVKBuffer* getMVKBuffer() { return _buffer; }

/** Gets the heap allocation that the acceleration structure, and buffer share*/
id<MTLHeap> getMTLHeap() { return _heap; }
#pragma mark -
#pragma mark Construction
MVKAccelerationStructure(MVKDevice* device) : MVKVulkanAPIDeviceObject(device) {}
Expand All @@ -87,6 +93,9 @@ class MVKAccelerationStructure : public MVKVulkanAPIDeviceObject {
void propagateDebugName() override {}

id<MTLAccelerationStructure> _accelerationStructure;
MVKBuffer* _buffer;
id<MTLHeap> _heap;

bool _allowUpdate = false;
bool _built = false;
uint64_t _address = 0;
Expand Down
8 changes: 6 additions & 2 deletions MoltenVK/MoltenVK/GPUObjects/MVKAccelerationStructure.mm
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,14 @@
#pragma mark -
#pragma mark MVKAcceleration Structure

id<MTLAccelerationStructure> MVKAccelerationStructure::getMTLAccelerationStructure()
{
id<MTLAccelerationStructure> MVKAccelerationStructure::getMTLAccelerationStructure() {
return _accelerationStructure;
}

MVKBuffer* MVKAccelerationStructure::getMVKBuffer() {
return _buffer;
}

VkAccelerationStructureBuildSizesInfoKHR MVKAccelerationStructure::getBuildSizes()
{
VkAccelerationStructureBuildSizesInfoKHR vkBuildSizes{};
Expand All @@ -48,4 +51,5 @@
void MVKAccelerationStructure::destroy()
{
// TODO
_built = false;
}
70 changes: 37 additions & 33 deletions MoltenVK/MoltenVK/Utility/MVKFoundation.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,39 +62,43 @@ typedef struct {

/** Tracks the Vulkan command currently being used. */
typedef enum : uint8_t {
kMVKCommandUseNone = 0, /**< No use defined. */
kMVKCommandUseEndCommandBuffer, /**< vkEndCommandBuffer (prefilled VkCommandBuffer). */
kMVKCommandUseQueueSubmit, /**< vkQueueSubmit. */
kMVKCommandUseAcquireNextImage, /**< vkAcquireNextImageKHR. */
kMVKCommandUseQueuePresent, /**< vkQueuePresentKHR. */
kMVKCommandUseQueueWaitIdle, /**< vkQueueWaitIdle. */
kMVKCommandUseDeviceWaitIdle, /**< vkDeviceWaitIdle. */
kMVKCommandUseInvalidateMappedMemoryRanges, /**< vkInvalidateMappedMemoryRanges. */
kMVKCommandUseBeginRendering, /**< vkCmdBeginRendering. */
kMVKCommandUseBeginRenderPass, /**< vkCmdBeginRenderPass. */
kMVKCommandUseNextSubpass, /**< vkCmdNextSubpass. */
kMVKCommandUseRestartSubpass, /**< Restart a subpass because of explicit or implicit barrier. */
kMVKCommandUsePipelineBarrier, /**< vkCmdPipelineBarrier. */
kMVKCommandUseBlitImage, /**< vkCmdBlitImage. */
kMVKCommandUseCopyImage, /**< vkCmdCopyImage. */
kMVKCommandUseResolveImage, /**< vkCmdResolveImage - resolve stage. */
kMVKCommandUseResolveExpandImage, /**< vkCmdResolveImage - expand stage. */
kMVKCommandUseResolveCopyImage, /**< vkCmdResolveImage - copy stage. */
kMVKCommandUseCopyBuffer, /**< vkCmdCopyBuffer. */
kMVKCommandUseCopyBufferToImage, /**< vkCmdCopyBufferToImage. */
kMVKCommandUseCopyImageToBuffer, /**< vkCmdCopyImageToBuffer. */
kMVKCommandUseFillBuffer, /**< vkCmdFillBuffer. */
kMVKCommandUseUpdateBuffer, /**< vkCmdUpdateBuffer. */
kMVKCommandUseClearAttachments, /**< vkCmdClearAttachments. */
kMVKCommandUseClearColorImage, /**< vkCmdClearColorImage. */
kMVKCommandUseClearDepthStencilImage, /**< vkCmdClearDepthStencilImage. */
kMVKCommandUseResetQueryPool, /**< vkCmdResetQueryPool. */
kMVKCommandUseDispatch, /**< vkCmdDispatch. */
kMVKCommandUseTessellationVertexTessCtl, /**< vkCmdDraw* - vertex and tessellation control stages. */
kMVKCommandUseDrawIndirectConvertBuffers, /**< vkCmdDrawIndirect* convert indirect buffers. */
kMVKCommandUseCopyQueryPoolResults, /**< vkCmdCopyQueryPoolResults. */
kMVKCommandUseAccumOcclusionQuery, /**< Any command terminating a Metal render pass with active visibility buffer. */
kMVKCommandUseRecordGPUCounterSample /**< Any command triggering the recording of a GPU counter sample. */
kMVKCommandUseNone = 0, /**< No use defined. */
kMVKCommandUseEndCommandBuffer, /**< vkEndCommandBuffer (prefilled VkCommandBuffer). */
kMVKCommandUseQueueSubmit, /**< vkQueueSubmit. */
kMVKCommandUseAcquireNextImage, /**< vkAcquireNextImageKHR. */
kMVKCommandUseQueuePresent, /**< vkQueuePresentKHR. */
kMVKCommandUseQueueWaitIdle, /**< vkQueueWaitIdle. */
kMVKCommandUseDeviceWaitIdle, /**< vkDeviceWaitIdle. */
kMVKCommandUseInvalidateMappedMemoryRanges, /**< vkInvalidateMappedMemoryRanges. */
kMVKCommandUseBeginRendering, /**< vkCmdBeginRendering. */
kMVKCommandUseBeginRenderPass, /**< vkCmdBeginRenderPass. */
kMVKCommandUseNextSubpass, /**< vkCmdNextSubpass. */
kMVKCommandUseRestartSubpass, /**< Restart a subpass because of explicit or implicit barrier. */
kMVKCommandUsePipelineBarrier, /**< vkCmdPipelineBarrier. */
kMVKCommandUseBlitImage, /**< vkCmdBlitImage. */
kMVKCommandUseCopyImage, /**< vkCmdCopyImage. */
kMVKCommandUseResolveImage, /**< vkCmdResolveImage - resolve stage. */
kMVKCommandUseResolveExpandImage, /**< vkCmdResolveImage - expand stage. */
kMVKCommandUseResolveCopyImage, /**< vkCmdResolveImage - copy stage. */
kMVKCommandUseCopyBuffer, /**< vkCmdCopyBuffer. */
kMVKCommandUseCopyBufferToImage, /**< vkCmdCopyBufferToImage. */
kMVKCommandUseCopyImageToBuffer, /**< vkCmdCopyImageToBuffer. */
kMVKCommandUseFillBuffer, /**< vkCmdFillBuffer. */
kMVKCommandUseUpdateBuffer, /**< vkCmdUpdateBuffer. */
kMVKCommandUseClearAttachments, /**< vkCmdClearAttachments. */
kMVKCommandUseClearColorImage, /**< vkCmdClearColorImage. */
kMVKCommandUseClearDepthStencilImage, /**< vkCmdClearDepthStencilImage. */
kMVKCommandUseResetQueryPool, /**< vkCmdResetQueryPool. */
kMVKCommandUseDispatch, /**< vkCmdDispatch. */
kMVKCommandUseTessellationVertexTessCtl, /**< vkCmdDraw* - vertex and tessellation control stages. */
kMVKCommandUseDrawIndirectConvertBuffers, /**< vkCmdDrawIndirect* convert indirect buffers. */
kMVKCommandUseCopyQueryPoolResults, /**< vkCmdCopyQueryPoolResults. */
kMVKCommandUseAccumOcclusionQuery, /**< Any command terminating a Metal render pass with active visibility buffer. */
kMVKCommandUseRecordGPUCounterSample, /**< Any command triggering the recording of a GPU counter sample. */
kMVKCommandUseBuildAccelerationStructure, /**< vkCmdBuiildAccelerationStructure - Builds an acceleration structure */
kMVKCommandUseCopyAccelerationStructure, /**< vkCmdCopyAccelerationStructure- Copies an acceleration structure to another acceleration structure*/
kMVKCommandUseCopyAccelerationStructureToMemory,/**< vkCmdCopyAccelerationStructureToMemory - Copies and serializes an acceleration structure to a buffer*/
kMVKCommandUseCopyMemoryToAccelerationStructure,/**< vkCmdCopyMemoryToAccelerationStructure - Copies and deserializes an acceleration structure from a buffer*/
} MVKCommandUse;

/** Represents a given stage of a graphics pipeline. */
Expand Down

0 comments on commit 1cf021e

Please sign in to comment.