Move vulkan.hpp include to DeviceManager_VK.cpp and adjust vk:: namespace references

This commit is contained in:
Stephen Saunders 2024-02-04 01:41:33 -05:00
parent 4596a34dfe
commit 02ed35be22
5 changed files with 35 additions and 34 deletions

View file

@ -73,59 +73,59 @@ pickBufferUsage - copied from nvrhi vulkan-buffer.cpp
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/
vk::BufferUsageFlags pickBufferUsage( const nvrhi::BufferDesc& desc )
VkBufferUsageFlags pickBufferUsage( const nvrhi::BufferDesc& desc )
{
vk::BufferUsageFlags usageFlags = vk::BufferUsageFlagBits::eTransferSrc |
vk::BufferUsageFlagBits::eTransferDst;
VkBufferUsageFlags usageFlags = VkBufferUsageFlagBits::VK_BUFFER_USAGE_TRANSFER_SRC_BIT |
VkBufferUsageFlagBits::VK_BUFFER_USAGE_TRANSFER_DST_BIT;
if( desc.isVertexBuffer )
{
usageFlags |= vk::BufferUsageFlagBits::eVertexBuffer;
usageFlags |= VkBufferUsageFlagBits::VK_BUFFER_USAGE_VERTEX_BUFFER_BIT;
}
if( desc.isIndexBuffer )
{
usageFlags |= vk::BufferUsageFlagBits::eIndexBuffer;
usageFlags |= VkBufferUsageFlagBits::VK_BUFFER_USAGE_INDEX_BUFFER_BIT;
}
if( desc.isDrawIndirectArgs )
{
usageFlags |= vk::BufferUsageFlagBits::eIndirectBuffer;
usageFlags |= VkBufferUsageFlagBits::VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT;
}
if( desc.isConstantBuffer )
{
usageFlags |= vk::BufferUsageFlagBits::eUniformBuffer;
usageFlags |= VkBufferUsageFlagBits::VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT;
}
if( desc.structStride != 0 || desc.canHaveUAVs || desc.canHaveRawViews )
{
usageFlags |= vk::BufferUsageFlagBits::eStorageBuffer;
usageFlags |= VkBufferUsageFlagBits::VK_BUFFER_USAGE_STORAGE_BUFFER_BIT;
}
if( desc.canHaveTypedViews )
{
usageFlags |= vk::BufferUsageFlagBits::eUniformTexelBuffer;
usageFlags |= VkBufferUsageFlagBits::VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT;
}
if( desc.canHaveTypedViews && desc.canHaveUAVs )
{
usageFlags |= vk::BufferUsageFlagBits::eStorageTexelBuffer;
usageFlags |= VkBufferUsageFlagBits::VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT;
}
if( desc.isAccelStructBuildInput )
{
usageFlags |= vk::BufferUsageFlagBits::eAccelerationStructureBuildInputReadOnlyKHR;
usageFlags |= VkBufferUsageFlagBits::VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR;
}
if( desc.isAccelStructStorage )
{
usageFlags |= vk::BufferUsageFlagBits::eAccelerationStructureStorageKHR;
usageFlags |= VkBufferUsageFlagBits::VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR;
}
if( deviceManager->IsVulkanDeviceExtensionEnabled( VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME ) )
{
usageFlags |= vk::BufferUsageFlagBits::eShaderDeviceAddress;
usageFlags |= VkBufferUsageFlagBits::VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT;
}
return usageFlags;
@ -214,7 +214,7 @@ bool idVertexBuffer::AllocBufferObject( const void* data, int allocSize, bufferU
{
VkBufferCreateInfo bufferCreateInfo = { VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO };
bufferCreateInfo.size = numBytes;
bufferCreateInfo.usage = static_cast< VkBufferUsageFlags >( pickBufferUsage( vertexBufferDesc ) );
bufferCreateInfo.usage = pickBufferUsage( vertexBufferDesc );
bufferCreateInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE;
VmaAllocationCreateInfo allocCreateInfo = {};
@ -482,7 +482,7 @@ bool idIndexBuffer::AllocBufferObject( const void* data, int allocSize, bufferUs
{
VkBufferCreateInfo bufferCreateInfo = { VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO };
bufferCreateInfo.size = numBytes;
bufferCreateInfo.usage = static_cast< VkBufferUsageFlags >( pickBufferUsage( indexBufferDesc ) );
bufferCreateInfo.usage = pickBufferUsage( indexBufferDesc );
bufferCreateInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE;
VmaAllocationCreateInfo allocCreateInfo = {};
@ -749,7 +749,7 @@ bool idUniformBuffer::AllocBufferObject( const void* data, int allocSize, buffer
{
VkBufferCreateInfo bufferCreateInfo = { VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO };
bufferCreateInfo.size = numBytes;
bufferCreateInfo.usage = static_cast< VkBufferUsageFlags >( pickBufferUsage( bufferDesc ) );
bufferCreateInfo.usage = pickBufferUsage( bufferDesc );
bufferCreateInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE;
VmaAllocationCreateInfo allocCreateInfo = {};

View file

@ -75,34 +75,34 @@ pickImageUsage - copied from nvrhi vulkan-texture.cpp
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/
vk::ImageUsageFlags pickImageUsage( const nvrhi::TextureDesc& desc )
VkImageUsageFlags pickImageUsage( const nvrhi::TextureDesc& desc )
{
const nvrhi::FormatInfo& formatInfo = nvrhi::getFormatInfo( desc.format );
vk::ImageUsageFlags usageFlags = vk::ImageUsageFlagBits::eTransferSrc |
vk::ImageUsageFlagBits::eTransferDst |
vk::ImageUsageFlagBits::eSampled;
VkImageUsageFlags usageFlags = VkImageUsageFlagBits::VK_IMAGE_USAGE_TRANSFER_SRC_BIT |
VkImageUsageFlagBits::VK_IMAGE_USAGE_TRANSFER_DST_BIT |
VkImageUsageFlagBits::VK_IMAGE_USAGE_SAMPLED_BIT;
if( desc.isRenderTarget )
{
if( formatInfo.hasDepth || formatInfo.hasStencil )
{
usageFlags |= vk::ImageUsageFlagBits::eDepthStencilAttachment;
usageFlags |= VkImageUsageFlagBits::VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT;
}
else
{
usageFlags |= vk::ImageUsageFlagBits::eColorAttachment;
usageFlags |= VkImageUsageFlagBits::VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
}
}
if( desc.isUAV )
{
usageFlags |= vk::ImageUsageFlagBits::eStorage;
usageFlags |= VkImageUsageFlagBits::VK_IMAGE_USAGE_STORAGE_BIT;
}
if( desc.isShadingRateSurface )
{
usageFlags |= vk::ImageUsageFlagBits::eFragmentShadingRateAttachmentKHR;
usageFlags |= VkImageUsageFlagBits::VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR;
}
return usageFlags;
@ -572,7 +572,7 @@ void idImage::AllocImage()
imageCreateInfo.arrayLayers = textureDesc.arraySize;
imageCreateInfo.samples = static_cast< VkSampleCountFlagBits >( opts.samples );
imageCreateInfo.tiling = VK_IMAGE_TILING_OPTIMAL;
imageCreateInfo.usage = static_cast< VkImageUsageFlags >( pickImageUsage( textureDesc ) );
imageCreateInfo.usage = pickImageUsage( textureDesc );
imageCreateInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE;
imageCreateInfo.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;

View file

@ -41,8 +41,6 @@
#if USE_VK
#include <nvrhi/vulkan.h>
#define VULKAN_HPP_DISPATCH_LOADER_DYNAMIC 1
#include <vulkan/vulkan.hpp>
#endif
struct DeviceCreationParameters
@ -131,7 +129,7 @@ public:
#if USE_VK && defined( VULKAN_USE_PLATFORM_SDL )
// SRS - Helper method for creating SDL Vulkan surface within DeviceManager_VK()
vk::Result CreateSDLWindowSurface( vk::Instance instance, vk::SurfaceKHR* surface );
VkResult CreateSDLWindowSurface( VkInstance instance, VkSurfaceKHR* surface );
#endif
bool CreateWindowDeviceAndSwapChain( const glimpParms_t& params, const char* windowTitle );

View file

@ -35,6 +35,9 @@
#include <sys/DeviceManager.h>
#include <nvrhi/vulkan.h>
#define VULKAN_HPP_DISPATCH_LOADER_DYNAMIC 1
#include <vulkan/vulkan.hpp>
// SRS - optionally needed for MoltenVK runtime config visibility
#if defined(__APPLE__) && defined( USE_MoltenVK )
#include <MoltenVK/vk_mvk_moltenvk.h>
@ -962,14 +965,14 @@ bool DeviceManager_VK::createWindowSurface()
// Create the platform-specific surface
#if defined( VULKAN_USE_PLATFORM_SDL )
// SRS - Support generic SDL platform for linux and macOS
const vk::Result res = CreateSDLWindowSurface( m_VulkanInstance, &m_WindowSurface );
auto res = vk::Result( CreateSDLWindowSurface( ( VkInstance )m_VulkanInstance, ( VkSurfaceKHR* )&m_WindowSurface ) );
#elif defined( VK_USE_PLATFORM_WIN32_KHR )
auto surfaceCreateInfo = vk::Win32SurfaceCreateInfoKHR()
.setHinstance( ( HINSTANCE )windowInstance )
.setHwnd( ( HWND )windowHandle );
const vk::Result res = m_VulkanInstance.createWin32SurfaceKHR( &surfaceCreateInfo, nullptr, &m_WindowSurface );
auto res = m_VulkanInstance.createWin32SurfaceKHR( &surfaceCreateInfo, nullptr, &m_WindowSurface );
#endif
if( res != vk::Result::eSuccess )

View file

@ -70,15 +70,15 @@ std::vector<const char*> get_required_extensions()
}
// SRS - Helper method for creating SDL Vulkan surface within DeviceManager_VK() when NVRHI enabled
vk::Result DeviceManager::CreateSDLWindowSurface( vk::Instance instance, vk::SurfaceKHR* surface )
VkResult DeviceManager::CreateSDLWindowSurface( VkInstance instance, VkSurfaceKHR* surface )
{
if( !SDL_Vulkan_CreateSurface( window, ( VkInstance )instance, ( VkSurfaceKHR* )surface ) )
if( !SDL_Vulkan_CreateSurface( window, instance, surface ) )
{
common->Warning( "Error while creating SDL Vulkan surface: %s", SDL_GetError() );
return vk::Result::eErrorSurfaceLostKHR;
return VkResult::VK_ERROR_SURFACE_LOST_KHR;
}
return vk::Result::eSuccess;
return VkResult::VK_SUCCESS;
}
bool DeviceManager::CreateWindowDeviceAndSwapChain( const glimpParms_t& parms, const char* windowTitle )