mirror of
https://github.com/EduApps-CDG/OpenDX
synced 2024-12-30 09:45:37 +01:00
67 lines
1.4 KiB
C++
67 lines
1.4 KiB
C++
#pragma once
|
|
|
|
#include "dxvk_include.h"
|
|
#include "dxvk_extensions.h"
|
|
|
|
#include <vector>
|
|
#include <string>
|
|
|
|
namespace dxvk {
|
|
|
|
class DxvkInstance;
|
|
class DxvkExtensionProvider;
|
|
|
|
/**
|
|
* \brief Extension provider base
|
|
*
|
|
* Abstract interface for extension
|
|
* providers
|
|
*/
|
|
class DxvkExtensionProvider {
|
|
|
|
public:
|
|
|
|
/**
|
|
* \brief Extension provider name
|
|
* \returns The extension provider's name
|
|
*/
|
|
virtual std::string_view getName() = 0;
|
|
|
|
/**
|
|
* \brief Query instance extensions
|
|
* \returns Instance extensions
|
|
*/
|
|
virtual DxvkNameSet getInstanceExtensions() = 0;
|
|
|
|
/**
|
|
* \brief Query device extensions
|
|
*
|
|
* Retrieves the extensions required for a specific
|
|
* physical device. The adapter index should remain
|
|
* the same across multiple Vulkan instances.
|
|
* \param [in] adapterId Adapter index
|
|
*/
|
|
virtual DxvkNameSet getDeviceExtensions(
|
|
uint32_t adapterId) = 0;
|
|
|
|
/**
|
|
* \brief Initializes instance extension set
|
|
*
|
|
* Should be called before creating
|
|
* the first Vulkan instance.
|
|
*/
|
|
virtual void initInstanceExtensions() = 0;
|
|
|
|
/**
|
|
* \brief Initializes device extension sets
|
|
*
|
|
* Should be called after setting
|
|
* up the Vulkan physical devices.
|
|
* \param [in] instance DXVK instance
|
|
*/
|
|
virtual void initDeviceExtensions(
|
|
const DxvkInstance* instance) = 0;
|
|
|
|
};
|
|
|
|
} |