Properly expose supported device features

This commit is contained in:
msiglreith 2018-04-20 14:55:50 +02:00
parent 2fce3aa575
commit ba863e8c8e

View file

@ -1,6 +1,6 @@
use hal::{command as com, memory, pass, pso, queue};
use hal::{
DescriptorPool, Device, Instance, PhysicalDevice, QueueFamily,
DescriptorPool, Device, Features, Instance, PhysicalDevice, QueueFamily,
Surface, Swapchain as HalSwapchain, FrameSync,
};
use hal::buffer::IndexBufferView;
@ -144,61 +144,61 @@ pub extern "C" fn gfxGetPhysicalDeviceFeatures(
unsafe {
*pFeatures = VkPhysicalDeviceFeatures {
robustBufferAccess: VK_FALSE,
fullDrawIndexUint32: VK_FALSE,
imageCubeArray: VK_FALSE,
independentBlend: VK_FALSE,
geometryShader: VK_FALSE,
tessellationShader: VK_FALSE,
sampleRateShading: VK_FALSE,
dualSrcBlend: VK_FALSE,
logicOp: VK_FALSE,
multiDrawIndirect: VK_FALSE,
drawIndirectFirstInstance: VK_FALSE,
depthClamp: VK_FALSE,
depthBiasClamp: VK_FALSE,
fillModeNonSolid: VK_FALSE,
depthBounds: VK_FALSE,
wideLines: VK_FALSE,
largePoints: VK_FALSE,
alphaToOne: VK_FALSE,
multiViewport: VK_FALSE,
samplerAnisotropy: VK_FALSE,
textureCompressionETC2: VK_FALSE,
textureCompressionASTC_LDR: VK_FALSE,
textureCompressionBC: VK_FALSE,
occlusionQueryPrecise: VK_FALSE,
pipelineStatisticsQuery: VK_FALSE,
vertexPipelineStoresAndAtomics: VK_FALSE,
fragmentStoresAndAtomics: VK_FALSE,
shaderTessellationAndGeometryPointSize: VK_FALSE,
shaderImageGatherExtended: VK_FALSE,
shaderStorageImageExtendedFormats: VK_FALSE,
shaderStorageImageMultisample: VK_FALSE,
shaderStorageImageReadWithoutFormat: VK_FALSE,
shaderStorageImageWriteWithoutFormat: VK_FALSE,
shaderUniformBufferArrayDynamicIndexing: VK_FALSE,
shaderSampledImageArrayDynamicIndexing: VK_FALSE,
shaderStorageBufferArrayDynamicIndexing: VK_FALSE,
shaderStorageImageArrayDynamicIndexing: VK_FALSE,
shaderClipDistance: VK_FALSE,
shaderCullDistance: VK_FALSE,
shaderFloat64: VK_FALSE,
shaderInt64: VK_FALSE,
shaderInt16: VK_FALSE,
shaderResourceResidency: VK_FALSE,
shaderResourceMinLod: VK_FALSE,
sparseBinding: VK_FALSE,
sparseResidencyBuffer: VK_FALSE,
sparseResidencyImage2D: VK_FALSE,
sparseResidencyImage3D: VK_FALSE,
sparseResidency2Samples: VK_FALSE,
sparseResidency4Samples: VK_FALSE,
sparseResidency8Samples: VK_FALSE,
sparseResidency16Samples: VK_FALSE,
sparseResidencyAliased: VK_FALSE,
variableMultisampleRate: VK_FALSE,
inheritedQueries: VK_FALSE,
robustBufferAccess: features.contains(Features::ROBUST_BUFFER_ACCESS) as _,
fullDrawIndexUint32: features.contains(Features::FULL_DRAW_INDEX_U32) as _,
imageCubeArray: features.contains(Features::IMAGE_CUBE_ARRAY) as _,
independentBlend: features.contains(Features::INDEPENDENT_BLENDING) as _,
geometryShader: features.contains(Features::GEOMETRY_SHADER) as _,
tessellationShader: features.contains(Features::TESSELLATION_SHADER) as _,
sampleRateShading: features.contains(Features::SAMPLE_RATE_SHADING) as _,
dualSrcBlend: features.contains(Features::DUAL_SRC_BLENDING) as _,
logicOp: features.contains(Features::LOGIC_OP) as _,
multiDrawIndirect: features.contains(Features::MULTI_DRAW_INDIRECT) as _,
drawIndirectFirstInstance: features.contains(Features::DRAW_INDIRECT_FIRST_INSTANCE) as _,
depthClamp: features.contains(Features::DEPTH_CLAMP) as _,
depthBiasClamp: features.contains(Features::DEPTH_BIAS_CLAMP) as _,
fillModeNonSolid: features.contains(Features::NON_FILL_POLYGON_MODE) as _,
depthBounds: features.contains(Features::DEPTH_BOUNDS) as _,
wideLines: features.contains(Features::LINE_WIDTH) as _,
largePoints: features.contains(Features::POINT_SIZE) as _,
alphaToOne: features.contains(Features::ALPHA_TO_ONE) as _,
multiViewport: features.contains(Features::MULTI_VIEWPORTS) as _,
samplerAnisotropy: features.contains(Features::SAMPLER_ANISOTROPY) as _,
textureCompressionETC2: features.contains(Features::FORMAT_ETC2) as _,
textureCompressionASTC_LDR: features.contains(Features::FORMAT_ASTC_LDR) as _,
textureCompressionBC: features.contains(Features::FORMAT_BC) as _,
occlusionQueryPrecise: features.contains(Features::PRECISE_OCCLUSION_QUERY) as _,
pipelineStatisticsQuery: features.contains(Features::PIPELINE_STATISTICS_QUERY) as _,
vertexPipelineStoresAndAtomics: features.contains(Features::VERTEX_STORES_AND_ATOMICS) as _,
fragmentStoresAndAtomics: features.contains(Features::FRAGMENT_STORES_AND_ATOMICS) as _,
shaderTessellationAndGeometryPointSize: features.contains(Features::SHADER_TESSELLATION_AND_GEOMETRY_POINT_SIZE) as _,
shaderImageGatherExtended: features.contains(Features::SHADER_IMAGE_GATHER_EXTENDED) as _,
shaderStorageImageExtendedFormats: features.contains(Features::SHADER_STORAGE_IMAGE_EXTENDED_FORMATS) as _,
shaderStorageImageMultisample: features.contains(Features::SHADER_STORAGE_IMAGE_MULTISAMPLE) as _,
shaderStorageImageReadWithoutFormat: features.contains(Features::SHADER_STORAGE_IMAGE_READ_WITHOUT_FORMAT) as _,
shaderStorageImageWriteWithoutFormat: features.contains(Features::SHADER_STORAGE_IMAGE_WRITE_WITHOUT_FORMAT) as _,
shaderUniformBufferArrayDynamicIndexing: features.contains(Features::SHADER_UNIFORM_BUFFER_ARRAY_DYNAMIC_INDEXING) as _,
shaderSampledImageArrayDynamicIndexing: features.contains(Features::SHADER_SAMPLED_IMAGE_ARRAY_DYNAMIC_INDEXING) as _,
shaderStorageBufferArrayDynamicIndexing: features.contains(Features::SHADER_STORAGE_BUFFER_ARRAY_DYNAMIC_INDEXING) as _,
shaderStorageImageArrayDynamicIndexing: features.contains(Features::SHADER_STORAGE_IMAGE_ARRAY_DYNAMIC_INDEXING) as _,
shaderClipDistance: features.contains(Features::SHADER_CLIP_DISTANCE) as _,
shaderCullDistance: features.contains(Features::SHADER_CULL_DISTANCE) as _,
shaderFloat64: features.contains(Features::SHADER_FLOAT64) as _,
shaderInt64: features.contains(Features::SHADER_INT64) as _,
shaderInt16: features.contains(Features::SHADER_INT16) as _,
shaderResourceResidency: features.contains(Features::SHADER_RESOURCE_RESIDENCY) as _,
shaderResourceMinLod: features.contains(Features::SHADER_RESOURCE_MIN_LOD) as _,
sparseBinding: features.contains(Features::SPARSE_BINDING) as _,
sparseResidencyBuffer: features.contains(Features::SPARSE_RESIDENCY_BUFFER) as _,
sparseResidencyImage2D: features.contains(Features::SHADER_RESIDENCY_IMAGE_2D) as _,
sparseResidencyImage3D: features.contains(Features::SHADER_RESIDENSY_IMAGE_3D) as _,
sparseResidency2Samples: features.contains(Features::SPARSE_RESIDENCY_2_SAMPLES) as _,
sparseResidency4Samples: features.contains(Features::SPARSE_RESIDENCY_4_SAMPLES) as _,
sparseResidency8Samples: features.contains(Features::SPARSE_RESIDENCY_8_SAMPLES) as _,
sparseResidency16Samples: features.contains(Features::SPARSE_RESIDENCY_16_SAMPLES) as _,
sparseResidencyAliased: features.contains(Features::SPARSE_RESIDENCY_ALIASED) as _,
variableMultisampleRate: features.contains(Features::VARIABLE_MULTISAMPLE_RATE) as _,
inheritedQueries: features.contains(Features::INHERITED_QUERIES) as _,
};
}
}